Main Lemma Repository
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

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