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.

temintegrationkernel.h 2.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. /* This file is part of Lemma, a geophysical modelling and inversion API */
  2. /* This Source Code Form is subject to the terms of the Mozilla Public
  3. * License, v. 2.0. If a copy of the MPL was not distributed with this
  4. * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
  5. /**
  6. @file
  7. @author M. Andy Kass
  8. @date 02/10/2011
  9. @version $Id: temintegrationkernel.h 190 2014-10-16 23:02:09Z tirons $
  10. **/
  11. #ifndef __TEMINTEGRATIONKERNEL_H
  12. #define __TEMINTEGRATIONKERNEL_H
  13. #include "integrationkernel.h"
  14. #include "emearth1d.h"
  15. namespace Lemma {
  16. // ===================================================================
  17. // Class: TemIntegrationKernel
  18. /// \brief Integration kernel for calculation of TEM data
  19. /// \details Calculates the integration kernel for the sine transform
  20. // ===================================================================
  21. class TemIntegrationKernel : public IntegrationKernel<Real>{
  22. //friend std::ostream &operator<<(std::ostream &stream,
  23. // const TemIntegrationKernel &ob);
  24. public:
  25. // ==================== LIFECYCLE =======================
  26. static TemIntegrationKernel* New();
  27. void Delete();
  28. // ==================== OPERATORS =======================
  29. // ==================== OPERATIONS =======================
  30. // ==================== ACCESS =======================
  31. /// Calculates the integration argument. Passed a frequency.
  32. Real Argument(const Real&x, const int& iRelated);
  33. int GetNumRel();
  34. /// Attach EMEarth1D object to TemIntegrationKernel
  35. void SetEMEarth1D(EMEarth1D* earth);
  36. /// Attach Transmitter object
  37. void SetTransmitter(WireAntenna *antennae);
  38. /// Attach Dipole object
  39. void SetDipole(DipoleSource* dipolesource);
  40. /// Attach Receiver object
  41. void SetReceiver(ReceiverPoints *receiver);
  42. /**
  43. * @param[in] comp is the component to integrate
  44. */
  45. void SetComponent(const FIELDCOMPONENT& comp);
  46. // ==================== INQUIRY =======================
  47. protected:
  48. // ==================== LIFECYCLE =======================
  49. /// Default protected constructor.
  50. TemIntegrationKernel (const std::string& name);
  51. /// Default protected constructor.
  52. ~TemIntegrationKernel ();
  53. void Release();
  54. // ==================== DATA MEMBERS =========================
  55. FIELDCOMPONENT component;
  56. EMEarth1D* EmEarthInt;
  57. WireAntenna* Trans;
  58. DipoleSource* DipoleS;
  59. ReceiverPoints* Receivers;
  60. private:
  61. }; // ----- end of class TemIntegrationKernel -----
  62. } // End of namespace Lemma
  63. #endif // __TEMINTEGRATIONKERNEL_H