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.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  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/07/2011, revisions 13 Dec. 2018
  9. **/
  10. #pragma once
  11. #ifndef INTEGRATIONKERNEL_INC
  12. #define INTEGRATIONKERNEL_INC
  13. #include "LemmaObject.h"
  14. namespace Lemma {
  15. // ===================================================================
  16. // Class: IntegrationKernel
  17. /**
  18. \brief Abstract class that computes arguments for numerical
  19. integrators.
  20. \details Needs to provide Argument function, as well as be able to
  21. set necessary integration parameters.
  22. */
  23. // ===================================================================
  24. template <typename T>
  25. class IntegrationKernel : public LemmaObject {
  26. public:
  27. // ==================== LIFECYCLE =======================
  28. /// Default protected constructor.
  29. explicit IntegrationKernel (const ctor_key& key);
  30. /// Default protected constructor.
  31. virtual ~IntegrationKernel ();
  32. // ==================== OPERATORS =======================
  33. // ==================== OPERATIONS =======================
  34. /** Returns the argument of a function at a given argument. Also
  35. * capable or returning related function values.
  36. */
  37. //template <typename T>
  38. virtual T Argument(const Real& x, const int& iRelated)=0;
  39. // ==================== ACCESS =======================
  40. // ==================== INQUIRY =======================
  41. virtual int GetNumRel()=0;
  42. protected:
  43. // ==================== LIFECYCLE =======================
  44. // ==================== DATA MEMBERS =========================
  45. private:
  46. }; // ----- end of class IntegrationKernel -----
  47. /*
  48. template <typename T>
  49. IntegrationKernel<T>::IntegrationKernel(const std::string& name) :
  50. LemmaObject(name) {
  51. }
  52. template<typename T>
  53. IntegrationKernel<T>::~IntegrationKernel( ) {
  54. }
  55. */
  56. // template <typename T>
  57. // T IntegrationKernel<T>::Argument(const Real& x, const int& iRelated) {
  58. // return 11.;
  59. // }
  60. //
  61. // template <typename T>
  62. // int IntegrationKernel<T>::GetNumRel( ) {
  63. // return 0;
  64. // }
  65. } // ----- end of Lemma name -----
  66. #endif // ----- #ifndef INTEGRATIONKERNEL_INC -----