File indexing completed on 2025-04-19 09:10:16
0001 #ifndef SHRIMPS_Tools_Kernels_H
0002 #define SHRIMPS_Tools_Kernels_H
0003
0004 #include "SHRiMPS/Eikonals/Eikonal_Contributor.H"
0005 #include "SHRiMPS/Tools/DEQ_Solver.H"
0006 #include "ATOOLS/Math/Gauss_Integrator.H"
0007
0008 namespace SHRIMPS {
0009
0010
0011
0012
0013
0014
0015
0016
0017 class DEQ_Kernel_NoKT : public DEQ_Kernel_Base {
0018 private:
0019 double m_lambda, m_Delta, m_expfactor;
0020 absorption::code m_absorp;
0021 std::vector<double> m_output;
0022 public:
0023 DEQ_Kernel_NoKT(const double & lambda,const double & Delta,
0024 const absorption::code & absorp) :
0025 m_lambda(lambda), m_Delta(Delta), m_expfactor(1./2.),
0026 m_absorp(absorp)
0027 {
0028 m_output = std::vector<double>(2,0.);
0029 }
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046
0047
0048
0049
0050
0051
0052
0053
0054
0055
0056
0057
0058
0059
0060
0061 std::vector<double> & operator()(const std::vector<double> & input,
0062 const double param=0.);
0063 };
0064
0065
0066 class Integration_Kernel_Theta : public ATOOLS::Function_Base {
0067 private:
0068 Eikonal_Contributor * p_Omega1, * p_Omega2;
0069 int m_test;
0070 double m_errmax12, m_errmax21, m_maxvalue;
0071 double m_b,m_b1,m_y;
0072 public:
0073 Integration_Kernel_Theta(Eikonal_Contributor * Omega1,
0074 Eikonal_Contributor * Omega2,
0075 const int & test=0);
0076 inline void SetYref(const double & y) { m_y = y; }
0077 inline void SetB(const double & b) { m_b = b; }
0078 inline void Setb1(const double & b1) { m_b1 = b1; }
0079 double operator()(double theta1);
0080
0081 inline void ResetMax() { m_maxvalue = 0.; }
0082 const double & Max() const { return m_maxvalue; }
0083 void PrintErrors();
0084 };
0085
0086 class Integration_Kernel_B2 : public ATOOLS::Function_Base {
0087 private:
0088 Integration_Kernel_Theta m_kernel;
0089 ATOOLS::Gauss_Integrator m_integrator;
0090 double m_accu;
0091 int m_test;
0092 double m_b,m_y;
0093 public:
0094 Integration_Kernel_B2(Eikonal_Contributor * Omega1,
0095 Eikonal_Contributor * Omega2,
0096 const int & test=0);
0097
0098 ~Integration_Kernel_B2() {}
0099
0100 void SetYref(const double & y) {
0101 m_y = y;
0102 m_kernel.SetYref(m_y);
0103 }
0104 void SetB(const double & b) {
0105 m_b = b;
0106 m_kernel.SetB(m_b);
0107 }
0108 double operator()(double b1);
0109
0110 inline void ResetMax() { m_kernel.ResetMax(); }
0111 const double & Max() const { return m_kernel.Max(); }
0112
0113 void PrintErrors() { m_kernel.PrintErrors(); }
0114 };
0115 }
0116
0117 #endif
0118