Kariba
Loading...
Searching...
No Matches
Compton.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <gsl/gsl_spline2d.h>
4
5#include "Radiation.hpp"
6
7namespace kariba {
8
10class Compton : public Radiation {
11 protected:
12 const double log_floor = -230; // about 1e-100
13 size_t Niter;
14 double tau, ypar;
15 double rphot;
16 double escape_corr;
17
18 std::vector<double> target_energy;
19 std::vector<double> log_target_diff_spec;
20 std::vector<double>
22
23
24 gsl_spline* seed_ph;
25 gsl_interp_accel* acc_seed;
26
27 gsl_spline* iter_ph;
28 gsl_interp_accel* acc_iter;
29
30 gsl_spline2d* esc_p_sph;
32 gsl_spline2d* esc_p_cyl;
34 gsl_interp_accel* acc_tau;
35 gsl_interp_accel* acc_Te;
36
37 gsl_integration_workspace* w1;
38 gsl_integration_workspace* w2;
39
40 public:
41 ~Compton();
42 Compton(size_t size, size_t target_size);
43
44 friend double comfnc(double logein, void* pars);
45 friend double comint(double gam, void* pars);
46 friend double disk_integral(double alfa, void* p);
47
48 virtual double comintegral(size_t it, double blim, double ulim, double nu, double numin,
49 double numax, gsl_spline* eldis, gsl_interp_accel* acc_eldis);
50 virtual void compton_spectrum(double gmin, double gmax, gsl_spline* eldis,
51 gsl_interp_accel* acc_eldis);
52
53 virtual void set_target_energy_array(const std::vector<double>& new_target_energy);
54 virtual void set_target_frequency_array(const std::vector<double>& new_target_frequency);
55
56 virtual void add_target_diff_spec(const std::vector<double>& new_target_diff_spec);
57 virtual void add_target_energy_density(
58 const std::vector<double>& new_target_energy,
59 const std::vector<double>& new_target_energy_density);
60 virtual void add_target_number_density(
61 const std::vector<double>& new_target_energy,
62 const std::vector<double>& new_target_number_density);
64 const std::vector<double>& new_target_frequency,
65 const std::vector<double>& new_target_number_density);
66
67 virtual void cyclosyn_seed(const std::vector<double>& syn_energies,
68 const std::vector<double>& syn_number_rates);
69 virtual void bb_seed_k(double Urad, double Tbb);
70 virtual void bb_seed_kev(double Urad, double Tbb);
71 virtual void shsdisk_seed(double tin, double rin, double rout, double h, double z);
72
73 virtual void set_niter(double nu0, double Te);
74 virtual void set_niter(size_t n);
75 virtual void set_tau(double n, double gam);
76 virtual void set_tau(double _tau);
77 virtual void set_frequency(double numin, double numax);
78 virtual void set_escape(double escape);
79
80 virtual std::vector<double> get_target_energy() const;
81 virtual std::vector<double> get_target_diff_spec() const;
82
83 virtual double get_tau() const { return tau; };
84 virtual double get_ypar() const { return ypar; };
85
86 virtual void reset();
87 virtual void urad_test();
88 virtual void test();
89
90 // -------------------------------------------------------------------------
91 // Legacy API — backwards compatibility wrappers
92 // The seed_arr parameter sets the energy grid, but it is cleaner to set it
93 // explicitly with set_target_energy_array() / set_target_frequency_array().
94 // -------------------------------------------------------------------------
95
96
98 virtual void bb_seed_k(const std::vector<double>& seed_arr, double Urad, double Tbb) {
100 bb_seed_k(Urad, Tbb);
101 }
102
104 virtual void bb_seed_kev(const std::vector<double>& seed_arr, double Urad, double Tbb) {
105 set_target_energy_array(seed_arr);
106 bb_seed_kev(Urad, Tbb);
107 }
108
110 virtual void shsdisk_seed(const std::vector<double>& seed_arr, double tin, double rin,
111 double rout, double h, double z) {
112 set_target_energy_array(seed_arr);
113 shsdisk_seed(tin, rin, rout, h, z);
114 }
115};
116
117} // namespace kariba
Class inverse Compton, inherited from Radiation.hpp.
Definition Compton.hpp:10
~Compton()
Definition Compton.cpp:57
virtual void add_target_energy_density(const std::vector< double > &new_target_energy, const std::vector< double > &new_target_energy_density)
Definition Compton.cpp:288
virtual void set_escape(double escape)
Definition Compton.cpp:556
gsl_integration_workspace * w2
Definition Compton.hpp:38
double tau
Definition Compton.hpp:14
virtual void add_target_number_density(const std::vector< double > &new_target_energy, const std::vector< double > &new_target_number_density)
Definition Compton.cpp:341
virtual void bb_seed_kev(double Urad, double Tbb)
Definition Compton.cpp:408
virtual void compton_spectrum(double gmin, double gmax, gsl_spline *eldis, gsl_interp_accel *acc_eldis)
Definition Compton.cpp:202
virtual void set_frequency(double numin, double numax)
Method to set up the frequency array over desired range.
Definition Compton.cpp:544
gsl_interp_accel * acc_seed
accelerator for above spline
Definition Compton.hpp:25
virtual void reset()
Definition Compton.cpp:576
const double log_floor
Definition Compton.hpp:12
gsl_interp_accel * acc_Te
accelerator of above spline over Te
Definition Compton.hpp:35
virtual double comintegral(size_t it, double blim, double ulim, double nu, double numin, double numax, gsl_spline *eldis, gsl_interp_accel *acc_eldis)
Definition Compton.cpp:176
virtual void shsdisk_seed(const std::vector< double > &seed_arr, double tin, double rin, double rout, double h, double z)
Definition Compton.hpp:110
virtual void add_target_diff_spec(const std::vector< double > &new_target_diff_spec)
Definition Compton.cpp:271
virtual void cyclosyn_seed(const std::vector< double > &syn_energies, const std::vector< double > &syn_number_rates)
Definition Compton.cpp:373
virtual double get_tau() const
Definition Compton.hpp:83
gsl_interp_accel * acc_tau
accelerator of above spline over tau
Definition Compton.hpp:34
virtual void set_tau(double n, double gam)
Definition Compton.cpp:499
double rphot
photospheric radius when tau > 1, used to renormalize volume
Definition Compton.hpp:15
virtual void shsdisk_seed(double tin, double rin, double rout, double h, double z)
Definition Compton.cpp:446
virtual void set_target_energy_array(const std::vector< double > &new_target_energy)
Method to set new target energy array, resets also log_target_diff_spec.
Definition Compton.cpp:253
virtual void add_target_number_density_on_freq_grid(const std::vector< double > &new_target_frequency, const std::vector< double > &new_target_number_density)
Definition Compton.cpp:353
std::vector< double > target_energy
array of seed energies in erg
Definition Compton.hpp:18
friend double comfnc(double logein, void *pars)
Definition Compton.cpp:108
gsl_interp_accel * acc_iter
accelerator of above spline
Definition Compton.hpp:28
virtual void set_niter(double nu0, double Te)
Definition Compton.cpp:484
friend double disk_integral(double alfa, void *p)
Definition Compton.cpp:415
size_t Niter
number of IC iterations
Definition Compton.hpp:13
double escape_corr
escape term, used to renormalize our spectra to CompPS
Definition Compton.hpp:16
virtual void bb_seed_k(double Urad, double Tbb)
Definition Compton.cpp:389
virtual std::vector< double > get_target_diff_spec() const
Definition Compton.cpp:563
virtual double get_ypar() const
Definition Compton.hpp:84
virtual void bb_seed_kev(const std::vector< double > &seed_arr, double Urad, double Tbb)
Definition Compton.hpp:104
double ypar
optical depth/comtpon Y of emitting region
Definition Compton.hpp:14
virtual void set_target_frequency_array(const std::vector< double > &new_target_frequency)
Method to set target energy array from frequency array, resets also log_target_diff_spec.
Definition Compton.cpp:260
friend double comint(double gam, void *pars)
Definition Compton.cpp:140
gsl_spline * seed_ph
interpolation of photon field array target_diff_spec
Definition Compton.hpp:24
gsl_spline * iter_ph
interpolation of photon field for multiple scatters
Definition Compton.hpp:27
virtual std::vector< double > get_target_energy() const
Definition Compton.cpp:559
std::vector< double > log_target_diff_spec_iter
array of iterated photon number density in log(#/erg/cm^3)
Definition Compton.hpp:21
virtual void urad_test()
Definition Compton.cpp:583
virtual void test()
Definition Compton.cpp:592
gsl_integration_workspace * w1
Definition Compton.hpp:37
virtual void bb_seed_k(const std::vector< double > &seed_arr, double Urad, double Tbb)
Definition Compton.hpp:98
std::vector< double > log_target_diff_spec
array of seed photon number density in log(#/erg/cm^3)
Definition Compton.hpp:19
gsl_spline2d * esc_p_cyl
radiative transfer
Definition Compton.hpp:32
gsl_spline2d * esc_p_sph
radiative transfer
Definition Compton.hpp:30
Base class for photon/neutrino distributions.
Definition Radiation.hpp:71
double z
Dimensions of emitting region.
Definition Radiation.hpp:78
Definition BBody.hpp:5