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.

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 -----