[3115] | 1 | #ifndef PLANCKSPECTRA_SEEN
|
---|
| 2 | #define PLANCKSPECTRA_SEEN
|
---|
| 3 |
|
---|
| 4 | #include "machdefs.h"
|
---|
| 5 | #include "genericfunc.h"
|
---|
| 6 |
|
---|
| 7 | namespace SOPHYA {
|
---|
| 8 |
|
---|
| 9 | //-----------------------------------------------------------------------------------
|
---|
| 10 | class PlanckSpectra : public GenericFunc {
|
---|
| 11 | public:
|
---|
[3347] | 12 |
|
---|
| 13 | typedef enum {PLANCK=0, RAYLEIGH=1, WIEN=2} SpectraApprox;
|
---|
| 14 | typedef enum {POWER=0, PHOTON=1} SpectraPower;
|
---|
| 15 | typedef enum {VALUE=0, DERIV=1} SpectraFunc;
|
---|
| 16 | typedef enum {NU=0, LAMBDA=1} SpectraVar;
|
---|
| 17 | typedef enum {ANGSFLUX=0, SFLUX=1, DENSENERG=2, EXPON=3} SpectraUnit;
|
---|
| 18 |
|
---|
[3115] | 19 | PlanckSpectra(double T);
|
---|
| 20 | PlanckSpectra(PlanckSpectra& s);
|
---|
| 21 | virtual ~PlanckSpectra(void);
|
---|
| 22 |
|
---|
| 23 | inline void SetTemperature(double T) {T_ = T;}
|
---|
| 24 | inline double GetTemperature(void) {return T_;}
|
---|
| 25 |
|
---|
[3347] | 26 | void SetSpectraApprox(SpectraApprox spectraapprox=PLANCK);
|
---|
| 27 | void SetSpectraFunc(SpectraFunc spectrafunc=VALUE);
|
---|
| 28 | void SetSpectraVar(SpectraVar spectravar=NU);
|
---|
| 29 | void SetSpectraUnit(SpectraUnit spectraunit=ANGSFLUX);
|
---|
| 30 | void SetSpectraPower(SpectraPower spectrapower=POWER);
|
---|
[3115] | 31 |
|
---|
| 32 |
|
---|
| 33 | virtual double operator() (double x);
|
---|
| 34 |
|
---|
| 35 | double F2L(double nu_or_lambda);
|
---|
| 36 | double PlanckEnergie(void);
|
---|
| 37 | double PlanckPhoton(void);
|
---|
| 38 | double WienLaw(void);
|
---|
| 39 | double FindMaximum(double eps=0.001);
|
---|
| 40 |
|
---|
| 41 | protected:
|
---|
| 42 | double T_;
|
---|
[3347] | 43 | SpectraApprox spectraapprox_;
|
---|
| 44 | SpectraFunc spectrafunc_;
|
---|
| 45 | SpectraVar spectravar_;
|
---|
| 46 | SpectraUnit spectraunit_;
|
---|
| 47 | SpectraPower spectrapower_;
|
---|
[3115] | 48 |
|
---|
| 49 | double PlanckExp(double fl);
|
---|
| 50 | double DPlanckExp_DT(double fl);
|
---|
| 51 |
|
---|
| 52 | };
|
---|
| 53 |
|
---|
[3325] | 54 | } // Fin du namespace SOPHYA
|
---|
[3115] | 55 |
|
---|
| 56 | #endif
|
---|