Browse Source

Start of templated FHT

add-code-of-conduct-1
Trevor Irons 6 years ago
parent
commit
2a390fcb69
3 changed files with 126 additions and 3 deletions
  1. 102
    0
      Modules/FDEM1D/include/FHT.h
  2. 21
    0
      Modules/FDEM1D/src/FHT.cpp
  3. 3
    3
      README.md

+ 102
- 0
Modules/FDEM1D/include/FHT.h View File

@@ -0,0 +1,102 @@
1
+/* This file is part of Lemma, a geophysical modelling and inversion API.
2
+ * More information is available at http://lemmasoftware.org
3
+ */
4
+
5
+/* This Source Code Form is subject to the terms of the Mozilla Public
6
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
7
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8
+ */
9
+
10
+/**
11
+ * @file
12
+ * @date      05/02/2018 09:46:38 PM
13
+ * @version   $Id$
14
+ * @author    Trevor Irons (ti)
15
+ * @email     tirons@egi.utah.edu
16
+ * @copyright Copyright (c) 2018, University of Utah
17
+ * @copyright Copyright (c) 2018, Trevor Irons & Lemma Software, LLC
18
+ */
19
+
20
+
21
+#pragma once
22
+#include "HankekTransform.h"
23
+
24
+namespace Lemma {
25
+
26
+    /**
27
+      \brief   Impliments a fast Hankel transform through digital filtering.
28
+      \details A genearl Fast Hankel Transform routine which uses the digital
29
+               filter apporach. This approach performs a complete sweep of the
30
+               coeficients, for a variant that uses a longer filter which may
31
+               be truncated, see FHTAnderson801.
32
+               @see FHTAndersion801
33
+               @see GQChave
34
+               @see @QKEKey
35
+     */
36
+    class FHT : public HankekTransform {
37
+
38
+        friend std::ostream &operator<<(std::ostream &stream, const FHT &ob);
39
+
40
+        public:
41
+
42
+        // ====================  LIFECYCLE     =======================
43
+
44
+        /*
45
+         *  Factory method for generating concrete class.
46
+         *  @return a std::shared_ptr of type FHT
47
+         */
48
+        static std::shared_ptr< FHT > NewSP();
49
+
50
+        /**
51
+         *  Uses YAML to serialize this object.
52
+         *  @return a YAML::Node
53
+         *   @see FHT::DeSerialize
54
+         */
55
+        YAML::Node Serialize() const;
56
+
57
+        /**
58
+         *   Constructs an FHT object from a YAML::Node.
59
+         *   @see FHT::Serialize
60
+         */
61
+        static std::shared_ptr<FHT> DeSerialize(const YAML::Node& node);
62
+
63
+        // ====================  OPERATORS     =======================
64
+
65
+        // ====================  OPERATIONS    =======================
66
+
67
+        // ====================  ACCESS        =======================
68
+
69
+        // ====================  INQUIRY       =======================
70
+
71
+
72
+
73
+        protected:
74
+
75
+        // ====================  LIFECYCLE     =======================
76
+
77
+        /**
78
+         * Default protected constructor, use NewSP methods to construct
79
+         * @see FHT::NewSP
80
+         */
81
+        FHT (const std::string& name);
82
+
83
+        /**
84
+         * Protected DeDerializing constructor, use factory DeSerialize  method.
85
+         * @see FHT::DeSerialize
86
+         */
87
+        FHT (const YAML::Node& node);
88
+
89
+        /** Default protected destructor, use smart pointers (std::shared_ptr) */
90
+        ~FHT ();
91
+
92
+        // ====================  DATA MEMBERS  =========================
93
+
94
+        private:
95
+
96
+    }; // -----  end of class  FHT  -----
97
+}  // -----  end of namespace Lemma ----
98
+
99
+/* vim: set tabstop=4 expandtab: */
100
+/* vim: set filetype=cpp: */
101
+
102
+

+ 21
- 0
Modules/FDEM1D/src/FHT.cpp View File

@@ -0,0 +1,21 @@
1
+/* This file is part of Lemma, a geophysical modelling and inversion API.
2
+ * More information is available at http://lemmasoftware.org
3
+ */
4
+
5
+/* This Source Code Form is subject to the terms of the Mozilla Public
6
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
7
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8
+ */
9
+
10
+/**
11
+ * @file
12
+ * @date      05/02/2018 10:04:58 PM
13
+ * @version   $Id$
14
+ * @author    Trevor Irons (ti)
15
+ * @email     tirons@egi.utah.edu
16
+ * @copyright Copyright (c) 2018, University of Utah
17
+ * @copyright Copyright (c) 2018, Trevor Irons & Lemma Software, LLC
18
+ */
19
+
20
+
21
+

+ 3
- 3
README.md View File

@@ -1,4 +1,4 @@
1
-== About
1
+# About
2 2
 
3 3
 Lemma is an ElectroMagnetics Modelling API. Lemma is developed in the hopes that it will be helpful for academics, industry, and anyone else interested in modelling. 
4 4
 
@@ -8,7 +8,7 @@ Lemma is an ElectroMagnetics Modelling API. Lemma is developed in the hopes that
8 8
 * Fast 
9 9
 * Object oriented 
10 10
 
11
-== Team 
11
+## Team 
12 12
 
13
-== Getting involved
13
+## Getting involved
14 14
 * Testing code

Loading…
Cancel
Save