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.

FHT.h 2.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. /* This file is part of Lemma, a geophysical modelling and inversion API.
  2. * More information is available at http://lemmasoftware.org
  3. */
  4. /* This Source Code Form is subject to the terms of the Mozilla Public
  5. * License, v. 2.0. If a copy of the MPL was not distributed with this
  6. * file, You can obtain one at http://mozilla.org/MPL/2.0/.
  7. */
  8. /**
  9. * @file
  10. * @date 05/02/2018 09:46:38 PM
  11. * @version $Id$
  12. * @author Trevor Irons (ti)
  13. * @email tirons@egi.utah.edu
  14. * @copyright Copyright (c) 2018, University of Utah
  15. * @copyright Copyright (c) 2018, Trevor Irons & Lemma Software, LLC
  16. */
  17. #pragma once
  18. #include "HankekTransform.h"
  19. namespace Lemma {
  20. /**
  21. \brief Impliments a fast Hankel transform through digital filtering.
  22. \details A genearl Fast Hankel Transform routine which uses the digital
  23. filter apporach. This approach performs a complete sweep of the
  24. coeficients, for a variant that uses a longer filter which may
  25. be truncated, see FHTAnderson801.
  26. @see FHTAndersion801
  27. @see GQChave
  28. @see @QKEKey
  29. */
  30. class FHT : public HankekTransform {
  31. friend std::ostream &operator<<(std::ostream &stream, const FHT &ob);
  32. public:
  33. // ==================== LIFECYCLE =======================
  34. /*
  35. * Factory method for generating concrete class.
  36. * @return a std::shared_ptr of type FHT
  37. */
  38. static std::shared_ptr< FHT > NewSP();
  39. /**
  40. * Uses YAML to serialize this object.
  41. * @return a YAML::Node
  42. * @see FHT::DeSerialize
  43. */
  44. YAML::Node Serialize() const;
  45. /**
  46. * Constructs an FHT object from a YAML::Node.
  47. * @see FHT::Serialize
  48. */
  49. static std::shared_ptr<FHT> DeSerialize(const YAML::Node& node);
  50. // ==================== OPERATORS =======================
  51. // ==================== OPERATIONS =======================
  52. // ==================== ACCESS =======================
  53. // ==================== INQUIRY =======================
  54. protected:
  55. // ==================== LIFECYCLE =======================
  56. /**
  57. * Default protected constructor, use NewSP methods to construct
  58. * @see FHT::NewSP
  59. */
  60. FHT (const std::string& name);
  61. /**
  62. * Protected DeDerializing constructor, use factory DeSerialize method.
  63. * @see FHT::DeSerialize
  64. */
  65. FHT (const YAML::Node& node);
  66. /** Default protected destructor, use smart pointers (std::shared_ptr) */
  67. ~FHT ();
  68. // ==================== DATA MEMBERS =========================
  69. private:
  70. }; // ----- end of class FHT -----
  71. } // ----- end of namespace Lemma ----
  72. /* vim: set tabstop=4 expandtab: */
  73. /* vim: set filetype=cpp: */