| [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 |
|---|