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.

TEMTransmitter.h 3.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  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/29/2014 11:43:17 AM
  11. * @version $Id$
  12. * @author Trevor Irons (ti)
  13. * @email Trevor.Irons@xri-geo.com
  14. * @copyright Copyright (c) 2014, XRI Geophysics, LLC
  15. * @copyright Copyright (c) 2014, Trevor Irons
  16. */
  17. #ifndef TEMTRANSMITTER_INC
  18. #define TEMTRANSMITTER_INC
  19. #include "PolygonalWireAntenna.h"
  20. #ifdef HAVE_YAMLCPP
  21. #include "yaml-cpp/yaml.h"
  22. #endif
  23. namespace Lemma {
  24. /**
  25. \brief Describes a TEM pulse sequence
  26. \details Flexible class desribing a pulse sequence used by
  27. a TEM instruement. Can be used by Airborne or Ground
  28. instruments.
  29. */
  30. class TEMTransmitter : public PolygonalWireAntenna {
  31. friend std::ostream &operator<<(std::ostream &stream, const TEMTransmitter &ob);
  32. public:
  33. // ==================== LIFECYCLE =======================
  34. /**
  35. * @copybrief LemmaObject::New()
  36. * @copydetails LemmaObject::New()
  37. */
  38. static TEMTransmitter* New();
  39. /**
  40. * Performs a deep copy of this and returns pointer
  41. */
  42. TEMTransmitter* Clone();
  43. /**
  44. * @copybrief LemmaObject::Delete()
  45. * @copydetails LemmaObject::Delete()
  46. */
  47. void Delete();
  48. // ==================== OPERATORS =======================
  49. // ==================== OPERATIONS =======================
  50. // ==================== ACCESS =======================
  51. /** Sets the repetition frequency
  52. */
  53. void SetRepFrequency(const Real& fr, const FREQUENCYUNITS& units);
  54. void SetWaveform( const VectorXr& times, const VectorXr& amps, const TIMEUNITS& units );
  55. /**
  56. * @return the waveform times in seconds
  57. */
  58. VectorXr GetWfmTimes();
  59. /** @return the waveform current in amps
  60. */
  61. VectorXr GetWfmAmps();
  62. // ==================== INQUIRY =======================
  63. #ifdef HAVE_YAMLCPP
  64. YAML::Node Serialize() const;
  65. static TEMTransmitter* DeSerialize(const YAML::Node& node);
  66. #endif
  67. protected:
  68. // ==================== LIFECYCLE =======================
  69. /** Default protected constructor, use New */
  70. TEMTransmitter (const std::string& name);
  71. #ifdef HAVE_YAMLCPP
  72. /** Default protected constructor, use New */
  73. TEMTransmitter (const YAML::Node& node);
  74. #endif
  75. /** Default protected destructor, use Delete */
  76. ~TEMTransmitter ();
  77. /**
  78. * @copybrief LemmaObject::Release()
  79. * @copydetails LemmaObject::Release()
  80. */
  81. void Release();
  82. private:
  83. // ==================== DATA MEMBERS =========================
  84. Real repFreq;
  85. FREQUENCYUNITS repFreqUnits;
  86. VectorXr wfmTimes;
  87. VectorXr wfmAmps;
  88. }; // ----- end of class TEMTransmitter -----
  89. } // namespace Lemma
  90. #endif // ----- #ifndef TEMTRANSMITTER_INC -----