| [801] | 1 | // Dominique YVON, CEA/DAPNIA/SPP 02/2000 | 
|---|
|  | 2 |  | 
|---|
|  | 3 | #ifndef LightSrcSep_H | 
|---|
|  | 4 | #define LightSrcSep_H | 
|---|
|  | 5 |  | 
|---|
|  | 6 | #include "abslightsource.h" | 
|---|
|  | 7 |  | 
|---|
|  | 8 | class LightSrcSep:public AbsLightSource { | 
|---|
|  | 9 | friend class LSrcRadSpecSep; | 
|---|
|  | 10 | public: | 
|---|
|  | 11 | LightSrcSep(){LScrFSep=true; QPtSource=false;} | 
|---|
|  | 12 | ~LightSrcSep() {      } | 
|---|
|  | 13 | virtual double powSpecDens(double theta,double phi,double freq){ | 
|---|
|  | 14 | // Return power density at coordinates (W/m2/Hz/St) | 
|---|
|  | 15 | return spectre(freq)*powerDensAmpli(theta,phi); | 
|---|
|  | 16 | } | 
|---|
|  | 17 |  | 
|---|
|  | 18 | virtual double spectre(double frequence)=0; | 
|---|
|  | 19 | // Return the frequency spectrum independent of coordinates | 
|---|
|  | 20 | // should have no dimension | 
|---|
|  | 21 | virtual double powerDensAmpli(double theta,double phi)=0; | 
|---|
|  | 22 | // Return power density Amplidude at coordinates | 
|---|
|  | 23 | // (W/m2/Hz/St) | 
|---|
|  | 24 | protected: | 
|---|
|  | 25 | }; | 
|---|
|  | 26 |  | 
|---|
|  | 27 | class LightSrcDiffBlackBody:public LightSrcSep { | 
|---|
|  | 28 | // Classe mettant en oeuvre les sources parametrees | 
|---|
|  | 29 | // Comme des ecarts de temperature a la tempe du CMB | 
|---|
|  | 30 | // valable dans la limite des petits ecarts de tempe de TCMB | 
|---|
|  | 31 | // DeltaT retourne la DTCMB apparente au point theta, phi. | 
|---|
|  | 32 | public: | 
|---|
|  | 33 | LightSrcDiffBlackBody() { | 
|---|
|  | 34 | h_kT=6.626e-34/T_CMBR/1.38e-23;  // Hz-1 | 
|---|
|  | 35 | Prefac=2*6.626e-34*6.626e-34/(9.e16*1.38e-23*T_CMBR*T_CMBR); | 
|---|
|  | 36 | // 2*h2/(c2*k*TCMB2) ( W/m2/st/Hz^3/K) ou (J/m2/st/Hz^4/K) | 
|---|
|  | 37 | } | 
|---|
|  | 38 | virtual ~LightSrcDiffBlackBody() { }; | 
|---|
|  | 39 | protected: | 
|---|
|  | 40 | double h_kT;            // nanosecondes | 
|---|
|  | 41 | double Prefac; | 
|---|
|  | 42 | virtual double DeltaT(double theta,double phi)=0;       // en Kelvin | 
|---|
|  | 43 | virtual double spectre(double freq){                                //      Frequence en Hz | 
|---|
|  | 44 | return pow(freq,4)*exp(h_kT*freq)/pow((exp(h_kT*freq)-1),2); | 
|---|
|  | 45 | // Hz^4 | 
|---|
|  | 46 | } | 
|---|
|  | 47 | virtual double powerDensAmpli(double theta,double phi){ | 
|---|
|  | 48 | // Return power density Amplidude at coordinates | 
|---|
|  | 49 | // J/m2/st/Hz^4 ou W/m2/St/Hz^5 | 
|---|
|  | 50 | double PDens= Prefac*DeltaT(theta,phi); | 
|---|
|  | 51 | return PDens; | 
|---|
|  | 52 | } | 
|---|
|  | 53 |  | 
|---|
|  | 54 | }; | 
|---|
|  | 55 |  | 
|---|
|  | 56 |  | 
|---|
| [798] | 57 | #endif | 
|---|