Lemma is an Electromagnetics API
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

AEMSurvey.h 3.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. /* This file is part of Lemma, a geophysical modelling and inversion API.
  2. * More information is available at http://lemmasoftware.org
  3. */
  4. /* This Source Code Form is subject to the terms of the Mozilla Public
  5. * License, v. 2.0. If a copy of the MPL was not distributed with this
  6. * file, You can obtain one at http://mozilla.org/MPL/2.0/.
  7. */
  8. /**
  9. * @file
  10. * @date 09/24/2013 04:06:42 PM
  11. * @version $Id$
  12. * @author Trevor Irons (ti)
  13. * @email Trevor.Irons@xri-geo.com
  14. * @copyright Copyright (c) 2013, XRI Geophysics, LLC
  15. * @copyright Copyright (c) 2013, Trevor Irons
  16. */
  17. #ifndef AEMSURVEY_INC
  18. #define AEMSURVEY_INC
  19. #include "LemmaObject.h"
  20. #include "dipolesource.h"
  21. namespace Lemma {
  22. /**
  23. \brief Contains pertinant information about an AEM survey
  24. \details All important details about an AEM survey are stored here, but
  25. nothing about the underlying earth model.
  26. */
  27. class AEMSurvey : public LemmaObject {
  28. friend std::ostream &operator<<(std::ostream &stream,
  29. const AEMSurvey &ob);
  30. /// AEMSurveyReader currently provides the only concrete way to use this class.
  31. /// @todo consider making this an abstract class, that can only then exist through
  32. /// the reader. That is if you will not allow users to build their own.
  33. friend class AEMSurveyReader;
  34. public:
  35. // ==================== LIFECYCLE =======================
  36. /**
  37. * @copybrief LemmaObject::New()
  38. * @copydetails LemmaObject::New()
  39. */
  40. static AEMSurvey* New();
  41. /**
  42. * @copybrief LemmaObject::Delete()
  43. * @copydetails LemmaObject::Delete()
  44. */
  45. void Delete();
  46. // ==================== OPERATORS =======================
  47. // ==================== OPERATIONS =======================
  48. // ==================== ACCESS =======================
  49. /** Returns a particular EM source. For now only dipole sources are supported,
  50. * general loops int the new future.
  51. * @param[in] isource is the source fiducial to return
  52. */
  53. DipoleSource* GetSource(const int& isource);
  54. /** @return the total number of sources
  55. */
  56. int GetNumberOfSources();
  57. /** Returns vector of all frequencies used in the survey
  58. * @return a vector of the unique frequencies
  59. */
  60. VectorXr GetFrequencies();
  61. // ==================== INQUIRY =======================
  62. protected:
  63. // ==================== LIFECYCLE =======================
  64. /** Default protected constructor, use New */
  65. AEMSurvey (const std::string& name);
  66. /** Default protected destructor, use Delete */
  67. ~AEMSurvey ();
  68. /**
  69. * @copybrief LemmaObject::Release()
  70. * @copydetails LemmaObject::Release()
  71. */
  72. void Release();
  73. private:
  74. // ==================== DATA MEMBERS =========================
  75. std::vector<DipoleSource*> Sources;
  76. VectorXr Freqs;
  77. }; // ----- end of class AEMSurvey -----
  78. } // ----- end of Lemma name -----
  79. #endif // ----- #ifndef AEMSURVEY_INC -----