Browse Source

More work towards using c++-11, and better documentation.

enhancement_3
Trevor Irons 5 years ago
parent
commit
1348f85ce0

+ 373
- 0
LICENCE View File

@@ -0,0 +1,373 @@
1
+Mozilla Public License Version 2.0
2
+==================================
3
+
4
+1. Definitions
5
+--------------
6
+
7
+1.1. "Contributor"
8
+    means each individual or legal entity that creates, contributes to
9
+    the creation of, or owns Covered Software.
10
+
11
+1.2. "Contributor Version"
12
+    means the combination of the Contributions of others (if any) used
13
+    by a Contributor and that particular Contributor's Contribution.
14
+
15
+1.3. "Contribution"
16
+    means Covered Software of a particular Contributor.
17
+
18
+1.4. "Covered Software"
19
+    means Source Code Form to which the initial Contributor has attached
20
+    the notice in Exhibit A, the Executable Form of such Source Code
21
+    Form, and Modifications of such Source Code Form, in each case
22
+    including portions thereof.
23
+
24
+1.5. "Incompatible With Secondary Licenses"
25
+    means
26
+
27
+    (a) that the initial Contributor has attached the notice described
28
+        in Exhibit B to the Covered Software; or
29
+
30
+    (b) that the Covered Software was made available under the terms of
31
+        version 1.1 or earlier of the License, but not also under the
32
+        terms of a Secondary License.
33
+
34
+1.6. "Executable Form"
35
+    means any form of the work other than Source Code Form.
36
+
37
+1.7. "Larger Work"
38
+    means a work that combines Covered Software with other material, in 
39
+    a separate file or files, that is not Covered Software.
40
+
41
+1.8. "License"
42
+    means this document.
43
+
44
+1.9. "Licensable"
45
+    means having the right to grant, to the maximum extent possible,
46
+    whether at the time of the initial grant or subsequently, any and
47
+    all of the rights conveyed by this License.
48
+
49
+1.10. "Modifications"
50
+    means any of the following:
51
+
52
+    (a) any file in Source Code Form that results from an addition to,
53
+        deletion from, or modification of the contents of Covered
54
+        Software; or
55
+
56
+    (b) any new file in Source Code Form that contains any Covered
57
+        Software.
58
+
59
+1.11. "Patent Claims" of a Contributor
60
+    means any patent claim(s), including without limitation, method,
61
+    process, and apparatus claims, in any patent Licensable by such
62
+    Contributor that would be infringed, but for the grant of the
63
+    License, by the making, using, selling, offering for sale, having
64
+    made, import, or transfer of either its Contributions or its
65
+    Contributor Version.
66
+
67
+1.12. "Secondary License"
68
+    means either the GNU General Public License, Version 2.0, the GNU
69
+    Lesser General Public License, Version 2.1, the GNU Affero General
70
+    Public License, Version 3.0, or any later versions of those
71
+    licenses.
72
+
73
+1.13. "Source Code Form"
74
+    means the form of the work preferred for making modifications.
75
+
76
+1.14. "You" (or "Your")
77
+    means an individual or a legal entity exercising rights under this
78
+    License. For legal entities, "You" includes any entity that
79
+    controls, is controlled by, or is under common control with You. For
80
+    purposes of this definition, "control" means (a) the power, direct
81
+    or indirect, to cause the direction or management of such entity,
82
+    whether by contract or otherwise, or (b) ownership of more than
83
+    fifty percent (50%) of the outstanding shares or beneficial
84
+    ownership of such entity.
85
+
86
+2. License Grants and Conditions
87
+--------------------------------
88
+
89
+2.1. Grants
90
+
91
+Each Contributor hereby grants You a world-wide, royalty-free,
92
+non-exclusive license:
93
+
94
+(a) under intellectual property rights (other than patent or trademark)
95
+    Licensable by such Contributor to use, reproduce, make available,
96
+    modify, display, perform, distribute, and otherwise exploit its
97
+    Contributions, either on an unmodified basis, with Modifications, or
98
+    as part of a Larger Work; and
99
+
100
+(b) under Patent Claims of such Contributor to make, use, sell, offer
101
+    for sale, have made, import, and otherwise transfer either its
102
+    Contributions or its Contributor Version.
103
+
104
+2.2. Effective Date
105
+
106
+The licenses granted in Section 2.1 with respect to any Contribution
107
+become effective for each Contribution on the date the Contributor first
108
+distributes such Contribution.
109
+
110
+2.3. Limitations on Grant Scope
111
+
112
+The licenses granted in this Section 2 are the only rights granted under
113
+this License. No additional rights or licenses will be implied from the
114
+distribution or licensing of Covered Software under this License.
115
+Notwithstanding Section 2.1(b) above, no patent license is granted by a
116
+Contributor:
117
+
118
+(a) for any code that a Contributor has removed from Covered Software;
119
+    or
120
+
121
+(b) for infringements caused by: (i) Your and any other third party's
122
+    modifications of Covered Software, or (ii) the combination of its
123
+    Contributions with other software (except as part of its Contributor
124
+    Version); or
125
+
126
+(c) under Patent Claims infringed by Covered Software in the absence of
127
+    its Contributions.
128
+
129
+This License does not grant any rights in the trademarks, service marks,
130
+or logos of any Contributor (except as may be necessary to comply with
131
+the notice requirements in Section 3.4).
132
+
133
+2.4. Subsequent Licenses
134
+
135
+No Contributor makes additional grants as a result of Your choice to
136
+distribute the Covered Software under a subsequent version of this
137
+License (see Section 10.2) or under the terms of a Secondary License (if
138
+permitted under the terms of Section 3.3).
139
+
140
+2.5. Representation
141
+
142
+Each Contributor represents that the Contributor believes its
143
+Contributions are its original creation(s) or it has sufficient rights
144
+to grant the rights to its Contributions conveyed by this License.
145
+
146
+2.6. Fair Use
147
+
148
+This License is not intended to limit any rights You have under
149
+applicable copyright doctrines of fair use, fair dealing, or other
150
+equivalents.
151
+
152
+2.7. Conditions
153
+
154
+Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
155
+in Section 2.1.
156
+
157
+3. Responsibilities
158
+-------------------
159
+
160
+3.1. Distribution of Source Form
161
+
162
+All distribution of Covered Software in Source Code Form, including any
163
+Modifications that You create or to which You contribute, must be under
164
+the terms of this License. You must inform recipients that the Source
165
+Code Form of the Covered Software is governed by the terms of this
166
+License, and how they can obtain a copy of this License. You may not
167
+attempt to alter or restrict the recipients' rights in the Source Code
168
+Form.
169
+
170
+3.2. Distribution of Executable Form
171
+
172
+If You distribute Covered Software in Executable Form then:
173
+
174
+(a) such Covered Software must also be made available in Source Code
175
+    Form, as described in Section 3.1, and You must inform recipients of
176
+    the Executable Form how they can obtain a copy of such Source Code
177
+    Form by reasonable means in a timely manner, at a charge no more
178
+    than the cost of distribution to the recipient; and
179
+
180
+(b) You may distribute such Executable Form under the terms of this
181
+    License, or sublicense it under different terms, provided that the
182
+    license for the Executable Form does not attempt to limit or alter
183
+    the recipients' rights in the Source Code Form under this License.
184
+
185
+3.3. Distribution of a Larger Work
186
+
187
+You may create and distribute a Larger Work under terms of Your choice,
188
+provided that You also comply with the requirements of this License for
189
+the Covered Software. If the Larger Work is a combination of Covered
190
+Software with a work governed by one or more Secondary Licenses, and the
191
+Covered Software is not Incompatible With Secondary Licenses, this
192
+License permits You to additionally distribute such Covered Software
193
+under the terms of such Secondary License(s), so that the recipient of
194
+the Larger Work may, at their option, further distribute the Covered
195
+Software under the terms of either this License or such Secondary
196
+License(s).
197
+
198
+3.4. Notices
199
+
200
+You may not remove or alter the substance of any license notices
201
+(including copyright notices, patent notices, disclaimers of warranty,
202
+or limitations of liability) contained within the Source Code Form of
203
+the Covered Software, except that You may alter any license notices to
204
+the extent required to remedy known factual inaccuracies.
205
+
206
+3.5. Application of Additional Terms
207
+
208
+You may choose to offer, and to charge a fee for, warranty, support,
209
+indemnity or liability obligations to one or more recipients of Covered
210
+Software. However, You may do so only on Your own behalf, and not on
211
+behalf of any Contributor. You must make it absolutely clear that any
212
+such warranty, support, indemnity, or liability obligation is offered by
213
+You alone, and You hereby agree to indemnify every Contributor for any
214
+liability incurred by such Contributor as a result of warranty, support,
215
+indemnity or liability terms You offer. You may include additional
216
+disclaimers of warranty and limitations of liability specific to any
217
+jurisdiction.
218
+
219
+4. Inability to Comply Due to Statute or Regulation
220
+---------------------------------------------------
221
+
222
+If it is impossible for You to comply with any of the terms of this
223
+License with respect to some or all of the Covered Software due to
224
+statute, judicial order, or regulation then You must: (a) comply with
225
+the terms of this License to the maximum extent possible; and (b)
226
+describe the limitations and the code they affect. Such description must
227
+be placed in a text file included with all distributions of the Covered
228
+Software under this License. Except to the extent prohibited by statute
229
+or regulation, such description must be sufficiently detailed for a
230
+recipient of ordinary skill to be able to understand it.
231
+
232
+5. Termination
233
+--------------
234
+
235
+5.1. The rights granted under this License will terminate automatically
236
+if You fail to comply with any of its terms. However, if You become
237
+compliant, then the rights granted under this License from a particular
238
+Contributor are reinstated (a) provisionally, unless and until such
239
+Contributor explicitly and finally terminates Your grants, and (b) on an
240
+ongoing basis, if such Contributor fails to notify You of the
241
+non-compliance by some reasonable means prior to 60 days after You have
242
+come back into compliance. Moreover, Your grants from a particular
243
+Contributor are reinstated on an ongoing basis if such Contributor
244
+notifies You of the non-compliance by some reasonable means, this is the
245
+first time You have received notice of non-compliance with this License
246
+from such Contributor, and You become compliant prior to 30 days after
247
+Your receipt of the notice.
248
+
249
+5.2. If You initiate litigation against any entity by asserting a patent
250
+infringement claim (excluding declaratory judgment actions,
251
+counter-claims, and cross-claims) alleging that a Contributor Version
252
+directly or indirectly infringes any patent, then the rights granted to
253
+You by any and all Contributors for the Covered Software under Section
254
+2.1 of this License shall terminate.
255
+
256
+5.3. In the event of termination under Sections 5.1 or 5.2 above, all
257
+end user license agreements (excluding distributors and resellers) which
258
+have been validly granted by You or Your distributors under this License
259
+prior to termination shall survive termination.
260
+
261
+************************************************************************
262
+*                                                                      *
263
+*  6. Disclaimer of Warranty                                           *
264
+*  -------------------------                                           *
265
+*                                                                      *
266
+*  Covered Software is provided under this License on an "as is"       *
267
+*  basis, without warranty of any kind, either expressed, implied, or  *
268
+*  statutory, including, without limitation, warranties that the       *
269
+*  Covered Software is free of defects, merchantable, fit for a        *
270
+*  particular purpose or non-infringing. The entire risk as to the     *
271
+*  quality and performance of the Covered Software is with You.        *
272
+*  Should any Covered Software prove defective in any respect, You     *
273
+*  (not any Contributor) assume the cost of any necessary servicing,   *
274
+*  repair, or correction. This disclaimer of warranty constitutes an   *
275
+*  essential part of this License. No use of any Covered Software is   *
276
+*  authorized under this License except under this disclaimer.         *
277
+*                                                                      *
278
+************************************************************************
279
+
280
+************************************************************************
281
+*                                                                      *
282
+*  7. Limitation of Liability                                          *
283
+*  --------------------------                                          *
284
+*                                                                      *
285
+*  Under no circumstances and under no legal theory, whether tort      *
286
+*  (including negligence), contract, or otherwise, shall any           *
287
+*  Contributor, or anyone who distributes Covered Software as          *
288
+*  permitted above, be liable to You for any direct, indirect,         *
289
+*  special, incidental, or consequential damages of any character      *
290
+*  including, without limitation, damages for lost profits, loss of    *
291
+*  goodwill, work stoppage, computer failure or malfunction, or any    *
292
+*  and all other commercial damages or losses, even if such party      *
293
+*  shall have been informed of the possibility of such damages. This   *
294
+*  limitation of liability shall not apply to liability for death or   *
295
+*  personal injury resulting from such party's negligence to the       *
296
+*  extent applicable law prohibits such limitation. Some               *
297
+*  jurisdictions do not allow the exclusion or limitation of           *
298
+*  incidental or consequential damages, so this exclusion and          *
299
+*  limitation may not apply to You.                                    *
300
+*                                                                      *
301
+************************************************************************
302
+
303
+8. Litigation
304
+-------------
305
+
306
+Any litigation relating to this License may be brought only in the
307
+courts of a jurisdiction where the defendant maintains its principal
308
+place of business and such litigation shall be governed by laws of that
309
+jurisdiction, without reference to its conflict-of-law provisions.
310
+Nothing in this Section shall prevent a party's ability to bring
311
+cross-claims or counter-claims.
312
+
313
+9. Miscellaneous
314
+----------------
315
+
316
+This License represents the complete agreement concerning the subject
317
+matter hereof. If any provision of this License is held to be
318
+unenforceable, such provision shall be reformed only to the extent
319
+necessary to make it enforceable. Any law or regulation which provides
320
+that the language of a contract shall be construed against the drafter
321
+shall not be used to construe this License against a Contributor.
322
+
323
+10. Versions of the License
324
+---------------------------
325
+
326
+10.1. New Versions
327
+
328
+Mozilla Foundation is the license steward. Except as provided in Section
329
+10.3, no one other than the license steward has the right to modify or
330
+publish new versions of this License. Each version will be given a
331
+distinguishing version number.
332
+
333
+10.2. Effect of New Versions
334
+
335
+You may distribute the Covered Software under the terms of the version
336
+of the License under which You originally received the Covered Software,
337
+or under the terms of any subsequent version published by the license
338
+steward.
339
+
340
+10.3. Modified Versions
341
+
342
+If you create software not governed by this License, and you want to
343
+create a new license for such software, you may create and use a
344
+modified version of this License if you rename the license and remove
345
+any references to the name of the license steward (except to note that
346
+such modified license differs from this License).
347
+
348
+10.4. Distributing Source Code Form that is Incompatible With Secondary
349
+Licenses
350
+
351
+If You choose to distribute Source Code Form that is Incompatible With
352
+Secondary Licenses under the terms of this version of the License, the
353
+notice described in Exhibit B of this License must be attached.
354
+
355
+Exhibit A - Source Code Form License Notice
356
+-------------------------------------------
357
+
358
+  This Source Code Form is subject to the terms of the Mozilla Public
359
+  License, v. 2.0. If a copy of the MPL was not distributed with this
360
+  file, You can obtain one at http://mozilla.org/MPL/2.0/.
361
+
362
+If it is not possible or desirable to put the notice in a particular
363
+file, then You may include the notice in a location (such as a LICENSE
364
+file in a relevant directory) where a recipient would be likely to look
365
+for such a notice.
366
+
367
+You may add additional accurate notices of copyright ownership.
368
+
369
+Exhibit B - "Incompatible With Secondary Licenses" Notice
370
+---------------------------------------------------------
371
+
372
+  This Source Code Form is "Incompatible With Secondary Licenses", as
373
+  defined by the Mozilla Public License, v. 2.0.

+ 3
- 2
LemmaCore/include/ASCIIParser.h View File

@@ -25,8 +25,9 @@
25 25
 namespace Lemma {
26 26
 
27 27
 /**
28
-  \brief   Provides ASCII input file parsing
29
-  \details Able to accomodate various inputs and comment styles
28
+ * \ingroup LemmaCore
29
+ * \brief   Provides ASCII input file parsing
30
+ * \details Able to accomodate various inputs and comment styles
30 31
  */
31 32
 class ASCIIParser : public LemmaObject {
32 33
 

+ 11
- 10
LemmaCore/include/CubicSplineInterpolator.h View File

@@ -45,16 +45,17 @@ struct SplineSet{
45 45
 };
46 46
 
47 47
 /**
48
-  \brief   Real 1D Natural cubic spline interpolator.
49
-  \details Splines are fit between knots \f$j\f$ according to the forulae
50
-           \f[ S_j(x) =  a_j + b_j(x - x_j) + c_j(x-x_j)^2 + d_j(x-x_y)^3  \f]
51
-           The spline must satisfy the following conditions
52
-            \f{eqnarray} {
53
-                S_i(x_i) & = & y_i = S_{i-1}(x_i), i = 1,..., n-1 \\
54
-                S'_i(x_i) & = &  S'_{i-1}(x_i), i = 1,..., n-1 \\
55
-                S''_i(x_i) & = & S''_{i-1}(x_i), i = 1,..., n-1 \\
56
-                S''_0(x_0) & = & S''_{n-1}(x_n) = 0
57
-            \f}
48
+ * \ingroup LemmaCore
49
+ * \brief   Real 1D Natural cubic spline interpolator.
50
+ * \details Splines are fit between knots \f$j\f$ according to the forulae
51
+ *          \f[ S_j(x) =  a_j + b_j(x - x_j) + c_j(x-x_j)^2 + d_j(x-x_y)^3  \f]
52
+ *          The spline must satisfy the following conditions
53
+ *           \f{eqnarray} {
54
+ *               S_i(x_i) & = & y_i = S_{i-1}(x_i), i = 1,..., n-1 \\
55
+ *               S'_i(x_i) & = &  S'_{i-1}(x_i), i = 1,..., n-1 \\
56
+ *               S''_i(x_i) & = & S''_{i-1}(x_i), i = 1,..., n-1 \\
57
+ *               S''_0(x_0) & = & S''_{n-1}(x_n) = 0
58
+ *           \f}
58 59
  */
59 60
 class CubicSplineInterpolator : public LemmaObject {
60 61
 

+ 3
- 1
LemmaCore/include/Data.h View File

@@ -20,7 +20,9 @@ namespace Lemma {
20 20
 
21 21
     // ===================================================================
22 22
     //        Class:  Data
23
-    /** \brief Abstract class for data from an instrument
23
+    /**
24
+     *  \ingroup LemmaCore
25
+     *  \brief Abstract class for data from an instrument
24 26
      *  \details Currently provides no functionality, but this will likely
25 27
      *          change in the near future.
26 28
      */

+ 1
- 0
LemmaCore/include/DataReader.h View File

@@ -21,6 +21,7 @@ namespace Lemma {
21 21
 
22 22
 // ===================================================================
23 23
 //        Class:  DataReader
24
+/// \ingroup LemmaCore
24 25
 /// \brief  Abstract class whose derived members read data files and
25 26
 /// converts them to Data Classes
26 27
 /// \details

+ 1
- 0
LemmaCore/include/EarthModel.h View File

@@ -20,6 +20,7 @@ namespace Lemma {
20 20
 
21 21
     // ===================================================================
22 22
     //        Class:  EarthModel
23
+    /// \ingroup LemmaGroup
23 24
     /// \brief abstract class for Earth models
24 25
     /// \details
25 26
     // ===================================================================

+ 1
- 0
LemmaCore/include/Filter.h View File

@@ -20,6 +20,7 @@ namespace Lemma {
20 20
     //  Class:  Filter
21 21
     /**
22 22
       @class  Filter
23
+      \ingroup LemmaCore
23 24
       \brief  Abstract class for filtering.
24 25
       \details Derived classes include fourier domain and time domain filters.
25 26
      */

+ 1
- 0
LemmaCore/include/Grid.h View File

@@ -20,6 +20,7 @@ namespace Lemma {
20 20
 
21 21
 // ===============================================================================
22 22
 //        Class:  Grid
23
+/// \ingroup LemmaCore
23 24
 /// \brief Abstract base class for grids.
24 25
 /// \details Grids define values in space, they may either be an integral part
25 26
 /// of models, or simply the output of a forward modelling procedure.

+ 1
- 0
LemmaCore/include/GridReader.h View File

@@ -25,6 +25,7 @@ namespace Lemma {
25 25
 
26 26
     /**
27 27
       @class
28
+      \ingroup LemmaCore
28 29
       \brief   Abstract class for grid readers.
29 30
       \details Provides a consistent interface for reading grid files in Lemma.
30 31
      */

+ 1
- 0
LemmaCore/include/Instrument.h View File

@@ -20,6 +20,7 @@ namespace Lemma {
20 20
 
21 21
 	// =======================================================================
22 22
 	//        Class:  Instrument
23
+    /// \ingroup LemmaCore
23 24
 	/// \brief    Abstract class for instruments
24 25
 	/// \details
25 26
 	// =======================================================================

+ 2
- 1
LemmaCore/include/LayeredEarth.h View File

@@ -22,7 +22,8 @@ namespace Lemma {
22 22
 
23 23
 	// =======================================================================
24 24
 	//        Class:  LayeredEarth
25
-	/// Abstract 1D layered earth.
25
+    /// \ingroup LemmaCore
26
+	/// \brief Abstract 1D layered earth.
26 27
 	// =======================================================================
27 28
 	class LayeredEarth : public EarthModel {
28 29
 

+ 25
- 0
LemmaCore/include/LemmaCore.h View File

@@ -0,0 +1,25 @@
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      09/15/2016 04:28:16 PM
13
+ * @version   $Id$
14
+ * @author    Trevor Irons (ti)
15
+ * @email     tirons@egi.utah.edu
16
+ * @copyright Copyright (c) 2016, University of Utah
17
+ * @copyright Copyright (c) 2016, Lemma Software, LLC
18
+ */
19
+
20
+/**
21
+    \defgroup LemmaCore LemmaCore
22
+    @brief    LemmaCore provides the general framework and skeleton for applications.
23
+    @details  This module is the glue holding Lemma together.
24
+*/
25
+

+ 3
- 1
LemmaCore/include/LemmaObject.h View File

@@ -22,7 +22,9 @@
22 22
 
23 23
 namespace Lemma {
24 24
 
25
-/** \brief    Abstract class providing common interface for Lemma Objects.
25
+/**
26
+  * \ingroup  LemmaCore
27
+  * \brief    Abstract class providing common interface for Lemma Objects.
26 28
   * \details  Lemma objects can be members of other Lemma, and may be members
27 29
   *           of multiple objects. Since updates should be atomic, and objects
28 30
   *           can be large, it becomes useful to count the number of

+ 1
- 0
LemmaCore/include/RectilinearGrid.h View File

@@ -22,6 +22,7 @@ namespace Lemma {
22 22
     //  Class:  RectilinearGrid
23 23
     /**
24 24
       @class
25
+      \ingroup LemmaCore
25 26
       \brief   Impliments a rectilinear grid.
26 27
       \details A rectilinear grid can vary regularily in space but must be
27 28
                constant variation across each dimension. In this way three

+ 3
- 1
LemmaCore/include/RectilinearGridReader.h View File

@@ -26,8 +26,10 @@ namespace Lemma {
26 26
 
27 27
     /**
28 28
       @class
29
-      \brief
29
+      \ingroup LemmaCore
30
+      \brief   Base Class for rectilinear grid reader data files
30 31
       \details
32
+     \todo this set of classes is deprecated, use serialize methods!
31 33
      */
32 34
     class RectilinearGridReader : public GridReader {
33 35
 

+ 1
- 0
LemmaCore/include/RectilinearGridVTKExporter.h View File

@@ -36,6 +36,7 @@
36 36
 namespace Lemma {
37 37
 
38 38
 /**
39
+  \ingroup LemmaCore
39 40
   \brief   Exports a LemmaRectilinearGrid into a VTKRectilinearGrid.
40 41
   \details Results can then be dumped to a VTK file or used directly.
41 42
  */

+ 1
- 0
LemmaCore/include/WindowFilter.h View File

@@ -27,6 +27,7 @@ namespace Lemma {
27 27
     //  Class:  WindowFilter
28 28
     /**
29 29
       @class   WindowFilter
30
+      \ingroup LemmaCore
30 31
       \brief   Fourier domain window filter.
31 32
       \details Current types are Hamming and Hanning. Others to be added.
32 33
      */

+ 19
- 2
LemmaCore/include/helper.h View File

@@ -27,6 +27,15 @@
27 27
 
28 28
 namespace Lemma {
29 29
 
30
+/** \addtogroup LemmaCore
31
+ * @{
32
+ */
33
+
34
+    /**
35
+     *  Convenience function for string conversion
36
+     *  @param[in] t input value to be converted to string
37
+     *  @return string representation of input value
38
+     */
30 39
     template <class T>
31 40
     inline std::string to_string (const T& t) {
32 41
         std::stringstream ss;
@@ -34,16 +43,23 @@ namespace Lemma {
34 43
         return ss.str();
35 44
     }
36 45
 
37
-
38
-    // handy little way to convert enums, saves repeated code useful for YAML serializing
46
+    /// convert enums to string saves repeated code useful for YAML serializing
39 47
     std::string enum2String(const FREQUENCYUNITS& Units);
48
+    /// convert enums to string saves repeated code useful for YAML serializing
40 49
     std::string enum2String(const TIMEUNITS& Units);
50
+    /// convert enums to string saves repeated code useful for YAML serializing
41 51
     std::string enum2String(const MAGUNITS& Units);
52
+    /// convert enums to string saves repeated code useful for YAML serializing
42 53
     std::string enum2String(const TEMPUNITS& Units);
54
+    /// convert enums to string saves repeated code useful for YAML serializing
43 55
     std::string enum2String(const FEMCOILORIENTATION& Units);
56
+    /// convert enums to string saves repeated code useful for YAML serializing
44 57
     std::string enum2String(const ORIENTATION& Units);
58
+    /// convert enums to string saves repeated code useful for YAML serializing
45 59
     std::string enum2String(const FIELDCOMPONENT& Comp);
60
+    /// convert enums to string saves repeated code useful for YAML serializing
46 61
     std::string enum2String(const HANKELTRANSFORMTYPE& Htype);
62
+    /// convert enums to string saves repeated code useful for YAML serializing
47 63
     std::string enum2String(const FIELDCALCULATIONS& Htype);
48 64
 
49 65
     // other way around is a template, where template argument lets us know
@@ -96,6 +112,7 @@ namespace Lemma {
96 112
         }
97 113
     };
98 114
 
115
+/** @}*/
99 116
 
100 117
 } // end namespace Lemma
101 118
 

Modules/FDEM1D/include/dipolesource.h → Modules/FDEM1D/include/DipoleSource.h View File

@@ -15,9 +15,10 @@
15 15
 #define __DIPOLESOURCE_H
16 16
 
17 17
 #include "LemmaObject.h"
18
-#include "layeredearthem.h"
19
-//#include "kernelem1dmanager.h"
18
+#include "LayeredEarthEM.h"
20 19
 
20
+#include "receiverpoints.h"
21
+#include "emearth1d.h"
21 22
 
22 23
 #ifdef LEMMAUSEVTK
23 24
 #include "vtkActor.h"

Modules/FDEM1D/include/receiverpoints.h → Modules/FDEM1D/include/FieldPoints.h View File

@@ -11,8 +11,8 @@
11 11
   @version  $Id: receiverpoints.h 199 2014-12-29 19:25:20Z tirons $
12 12
  **/
13 13
 
14
-#ifndef __RECEIVERPOINTS_H
15
-#define __RECEIVERPOINTS_H
14
+#ifndef __FIELDPOINTS_H
15
+#define __FIELDPOINTS_H
16 16
 
17 17
 #ifdef LEMMAUSEVTK
18 18
 #include "vtkPointData.h"
@@ -37,20 +37,22 @@
37 37
 namespace Lemma {
38 38
 
39 39
     // =======================================================================
40
-    //        Class:  ReceiverPoints
41
-    /// \brief  Points in the subsurface to make EM calculations,
42
-    ///  more general than the grids.
40
+    //        Class:  FieldPoints
41
+    /**
42
+     *  \brief  Points in the subsurface where 1D EM calculations are made
43
+     */ \details
43 44
     // =======================================================================
44
-    class ReceiverPoints : public LemmaObject {
45
+    class FieldPoints : public LemmaObject {
45 46
 
46 47
         public:
47 48
 
48 49
             // ====================    FRIENDS     ===========================
49 50
 
50
-            /** Stream operator printing out information about this class.
51
+            /**
52
+             *  Stream operator printing out information about this class.
51 53
              */
52 54
             friend std::ostream &operator<<(std::ostream &stream,
53
-                        const ReceiverPoints &ob);
55
+                        const FieldPoints &ob);
54 56
 
55 57
             friend class EMEarth1D;
56 58
             friend class DipoleSource;
@@ -58,19 +60,23 @@ namespace Lemma {
58 60
             // ====================  LIFECYCLE     ===========================
59 61
 
60 62
             /**
61
-             *  Returns pointer to new DipoleSource. Location is
62
-             *  initialized to (0,0,0) type and polarization are
63
-             *  initialized  to nonworking values that will throw
64
-             *  exceptions if used.
63
+             *  Factory method for generating concrete class.
64
+             *  @return a std::shared_ptr of type FieldPoints
65 65
              */
66
-            static ReceiverPoints* New();
66
+            static std::shared_ptr<FieldPoints*> NewSP();
67 67
 
68
+        	/**
69
+             *  Uses YAML to serialize this object.
70
+             *  @return a YAML::Node
71
+             */
72
+            YAML::Node Serialize() const;
68 73
 
69 74
             /**
70
-             * @copybrief LemmaObject::Delete()
71
-             * @copydetails LemmaObject::Delete()
75
+             *   Constructs an object from a YAML::Node.
76
+             *   @param[in] node is a YAML node containing the serialized class information
77
+             *   @return a std::shared_ptr object of FieldPoints
72 78
              */
73
-            void Delete();
79
+            static std::shared_ptr< FieldPoints* > DeSerialize(const YAML::Node& node);
74 80
 
75 81
             // ====================  OPERATORS     ===========================
76 82
 
@@ -78,10 +84,10 @@ namespace Lemma {
78 84
 
79 85
             // ====================  ACCESS        ===========================
80 86
 
81
-            /// Sets the number of receivers
87
+            /** Sets the number of receivers */
82 88
             virtual void SetNumberOfReceivers(const int &nrec);
83 89
 
84
-            /// Returns the location of a single receiver as an Eigen Vector
90
+            /** Returns the location of a single receiver as an Eigen Vector */
85 91
             void SetLocation(const int& nrec, const Vector3r& loc);
86 92
 
87 93
             /// Returns the location of a single receiver as an Eigen Vector
@@ -181,33 +187,21 @@ namespace Lemma {
181 187
             /// Returns the mask for this point
182 188
             int GetMask(const int& i);
183 189
 
184
-            #ifdef HAVE_YAMLCPP
185
-        	/**
186
-             *  Uses YAML to serialize this object.
187
-             *  @return a YAML::Node
188
-             */
189
-            YAML::Node Serialize() const;
190
-
191
-            /**
192
-             *   Constructs an object from a YAML::Node.
193
-             */
194
-            static ReceiverPoints* DeSerialize(const YAML::Node& node);
195
-            #endif
196 190
 
197 191
         protected:
198 192
 
199 193
             // ====================  LIFECYCLE     ===========================
200 194
 
201
-            /// Default protected constructor.
202
-            ReceiverPoints (const std::string& name);
195
+            /** Default protected constructor. */
196
+            FieldPoints ( );
203 197
 
204 198
             #ifdef HAVE_YAMLCPP
205
-            /// Default protected constructor.
206
-            ReceiverPoints (const YAML::Node& node);
199
+            /** Default protected constructor. */
200
+            FieldPoints (const YAML::Node& node);
207 201
             #endif
208 202
 
209
-            /// Default protected constructor.
210
-            ~ReceiverPoints ();
203
+            /** Default protected constructor. */
204
+            ~FieldPoints ();
211 205
 
212 206
             /**
213 207
              * @copybrief LemmaObject::Release()
@@ -275,7 +269,11 @@ namespace Lemma {
275 269
             /// H field at receiver locations
276 270
             std::vector<Vector3Xcr>     Hfield;
277 271
 
278
-    }; // -----  end of class  ReceiverPoints  -----
272
+
273
+            /** ASCII string representation of the class name */
274
+            static constexpr auto CName = "FieldPoints";
275
+
276
+    }; // -----  end of class  FieldPoints  -----
279 277
 }
280 278
 
281
-#endif // __RECEIVERPOINTS
279
+#endif // __FIELDPOINTS

+ 3
- 0
Modules/FDEM1D/src/CMakeLists.txt View File

@@ -1,6 +1,9 @@
1 1
 set (FEM1DSOURCE
2 2
 	${FEM1DSOURCE}
3
+	#${CMAKE_CURRENT_SOURCE_DIR}/AEMSurvey.cpp
3 4
 	${CMAKE_CURRENT_SOURCE_DIR}/LayeredEarthEM.cpp
5
+	#${CMAKE_CURRENT_SOURCE_DIR}/FieldPoints.cpp
6
+	#${CMAKE_CURRENT_SOURCE_DIR}/DipoleSource.cpp
4 7
 	#${CMAKE_CURRENT_SOURCE_DIR}/UngroundedElectricDipole.cpp
5 8
 	PARENT_SCOPE
6 9
 )

Modules/FDEM1D/src/dipolesource.cpp → Modules/FDEM1D/src/DipoleSource.cpp View File

@@ -33,14 +33,8 @@
33 33
 
34 34
 #include <iostream>
35 35
 #include <fstream>
36
-#include "dipolesource.h"
37
-#include "layeredearthem.h"
38
-#include "receiverpoints.h"
39
-#include "emearth1d.h"
36
+#include "DipoleSource.h"
40 37
 
41
-#ifdef LEMMAUSEOMP
42
-#include "omp.h"
43
-#endif
44 38
 
45 39
 // For testing purposes disable VTK and run scale.sh
46 40
 #undef LEMMAUSEVTK

Modules/FDEM1D/src/receiverpoints.cpp → Modules/FDEM1D/src/FieldPoints.cpp View File


LemmaCore/include/modules.h → include/modules.h View File


Loading…
Cancel
Save