Lemma is an Electromagnetics API
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

sintransintegrationkernel.h 3.0KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  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 Trevor Irons
  8. @date 02/08/2011
  9. @version $Id: sintransintegrationkernel.h 87 2013-09-05 22:44:05Z tirons $
  10. **/
  11. #ifndef SINTRANSINTEGRATIONKERNEL_INC
  12. #define SINTRANSINTEGRATIONKERNEL_INC
  13. #include "integrationkernel.h"
  14. namespace Lemma {
  15. // ===================================================================
  16. // Class: SinTransIntegrationKernel
  17. /**
  18. @class
  19. \brief Integration kernel for testing sinine transform.
  20. \details Evaluates sinine at the argument, using lagged convolution.
  21. all of these kernels have exact solutions.
  22. */
  23. // ===================================================================
  24. class SinTransIntegrationKernel : public IntegrationKernel<Real> {
  25. public:
  26. // ==================== LIFECYCLE =======================
  27. /** Returns a pointer to a new object of type SinTransIntegrationKernel.
  28. * It allocates all necessary memory.
  29. */
  30. static SinTransIntegrationKernel* New();
  31. /** Deletes this object. Delete also disconnects any
  32. * attachments to this object.
  33. */
  34. void Delete();
  35. // ==================== OPERATORS =======================
  36. Real Argument(const Real&x, const int& iRelated);
  37. int GetNumRel();
  38. /// Sets the value 'A' used in test cases
  39. void SetA(const Real& A);
  40. /** Sets the integral to evaluate (1, 2, 3)
  41. */
  42. void SetIntegral(const int& i);
  43. /** Returns the analytical answer at A and B */
  44. Real GetAnalytical(const Real& B);
  45. // ==================== OPERATIONS =======================
  46. // ==================== ACCESS =======================
  47. // ==================== INQUIRY =======================
  48. protected:
  49. // ==================== LIFECYCLE =======================
  50. /** Deletes this object. Delete also disconnects any
  51. * attachments to this object.
  52. */
  53. void Release();
  54. /// Default protected constructor.
  55. SinTransIntegrationKernel (const std::string& name);
  56. /// Default protected constructor.
  57. ~SinTransIntegrationKernel ();
  58. // ==================== DATA MEMBERS =========================
  59. /** Value used in test cases */
  60. Real A;
  61. /** Test integral to evaluate */
  62. int Integral;
  63. private:
  64. }; // ----- end of class SinTransIntegrationKernel -----
  65. } // ----- end of Lemma name -----
  66. #endif // ----- #ifndef SINTRANSINTEGRATIONKERNEL_INC -----