- Timestamp:
- Oct 11, 2007, 4:34:42 PM (18 years ago)
- Location:
- trunk/Cosmo/SimLSS
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Cosmo/SimLSS/cmvdefsurv.cc
r3344 r3347 367 367 368 368 PlanckSpectra planck(T_CMB_Par); 369 planck.Set Approx(1); // Rayleigh spectra370 planck.Set Var(0); // frequency371 planck.Set UnitOut(0); // output en W/....372 planck.Set TypSpectra(0); // radiance W/m^2/Sr/Hz369 planck.SetSpectraApprox(PlanckSpectra::RAYLEIGH); // Rayleigh spectra 370 planck.SetSpectraVar(PlanckSpectra::NU); // frequency 371 planck.SetSpectraPower(PlanckSpectra::POWER); // output en W/.... 372 planck.SetSpectraUnit(PlanckSpectra::ANGSFLUX); // radiance W/m^2/Sr/Hz 373 373 374 374 // Signal -
trunk/Cosmo/SimLSS/cmvtstblack.cc
r3248 r3347 22 22 //{compute_xroot(); return -41;} 23 23 double T = 2.718, nutest=-1.; 24 unsigned short deriv = 0;24 unsigned short funcderiv = 0; 25 25 double x0; 26 26 27 27 if(narg>1) sscanf(arg[1],"%lf,%lf",&T,&nutest); 28 28 if(T<=0.) T = 2.718; 29 if(narg>2) sscanf(arg[2],"%hu",& deriv);30 if(deriv!=0) deriv = 1;31 32 cout<<"Temperature "<<T<<" K , deriv="<< deriv<<endl;29 if(narg>2) sscanf(arg[2],"%hu",&funcderiv); 30 PlanckSpectra::SpectraFunc deriv = (funcderiv==0) ? PlanckSpectra::VALUE : PlanckSpectra::DERIV; 31 32 cout<<"Temperature "<<T<<" K , deriv="<<(int)deriv<<endl; 33 33 34 34 //--------------------------------- Radiance Frequence 35 35 // frequence planck radiance W/.. 36 36 PlanckSpectra pradf(T); 37 pradf.SetDeriv(deriv); pradf.SetVar(0); 38 pradf.SetApprox(0); pradf.SetTypSpectra(0); pradf.SetUnitOut(0); 39 PlanckSpectra phpradf(pradf); phpradf.SetUnitOut(1); 37 pradf.SetSpectraFunc(deriv); 38 pradf.SetSpectraVar(PlanckSpectra::NU); 39 pradf.SetSpectraApprox(PlanckSpectra::PLANCK); 40 pradf.SetSpectraUnit(PlanckSpectra::ANGSFLUX); 41 pradf.SetSpectraPower(PlanckSpectra::POWER); 42 PlanckSpectra phpradf(pradf); 43 phpradf.SetSpectraPower(PlanckSpectra::PHOTON); 40 44 41 45 // frequence rayleigh radiance W/.. 42 46 PlanckSpectra rradf(T); 43 rradf.SetDeriv(deriv); rradf.SetVar(0); 44 rradf.SetApprox(1); rradf.SetTypSpectra(0); rradf.SetUnitOut(0); 45 PlanckSpectra phrradf(rradf); phrradf.SetUnitOut(1); 47 rradf.SetSpectraFunc(deriv); 48 rradf.SetSpectraVar(PlanckSpectra::NU); 49 rradf.SetSpectraApprox(PlanckSpectra::RAYLEIGH); 50 rradf.SetSpectraUnit(PlanckSpectra::ANGSFLUX); 51 rradf.SetSpectraPower(PlanckSpectra::POWER); 52 PlanckSpectra phrradf(rradf); 53 phrradf.SetSpectraPower(PlanckSpectra::PHOTON); 46 54 47 55 // frequence wien radiance W/.. 48 56 PlanckSpectra wradf(T); 49 wradf.SetDeriv(deriv); wradf.SetVar(0); 50 wradf.SetApprox(2); wradf.SetTypSpectra(0); wradf.SetUnitOut(0); 51 PlanckSpectra phwradf(wradf); phwradf.SetUnitOut(1); 57 wradf.SetSpectraFunc(deriv); 58 wradf.SetSpectraVar(PlanckSpectra::NU); 59 wradf.SetSpectraApprox(PlanckSpectra::WIEN); 60 wradf.SetSpectraUnit(PlanckSpectra::ANGSFLUX); 61 wradf.SetSpectraPower(PlanckSpectra::POWER); 62 PlanckSpectra phwradf(wradf); 63 phwradf.SetSpectraPower(PlanckSpectra::PHOTON); 52 64 53 65 // Check … … 61 73 // frequence planck density W/.. 62 74 PlanckSpectra pdensf(T); 63 pdensf.SetDeriv(deriv); pdensf.SetVar(0); 64 pdensf.SetApprox(0); pdensf.SetTypSpectra(2); pdensf.SetUnitOut(0); 65 PlanckSpectra phpdensf(pdensf); phpdensf.SetUnitOut(1); 75 pdensf.SetSpectraFunc(deriv); 76 pdensf.SetSpectraVar(PlanckSpectra::NU); 77 pdensf.SetSpectraApprox(PlanckSpectra::PLANCK); 78 pdensf.SetSpectraUnit(PlanckSpectra::DENSENERG); 79 pdensf.SetSpectraPower(PlanckSpectra::POWER); 80 PlanckSpectra phpdensf(pdensf); 81 phpdensf.SetSpectraPower(PlanckSpectra::PHOTON); 66 82 67 83 // frequence rayleigh density W/.. 68 84 PlanckSpectra rdensf(T); 69 rdensf.SetDeriv(deriv); rdensf.SetVar(0); 70 rdensf.SetApprox(1); rdensf.SetTypSpectra(2); rdensf.SetUnitOut(0); 71 PlanckSpectra phrdensf(rdensf); phrdensf.SetUnitOut(1); 85 rdensf.SetSpectraFunc(deriv); 86 rdensf.SetSpectraVar(PlanckSpectra::NU); 87 rdensf.SetSpectraApprox(PlanckSpectra::RAYLEIGH); 88 rdensf.SetSpectraUnit(PlanckSpectra::DENSENERG); 89 rdensf.SetSpectraPower(PlanckSpectra::POWER); 90 PlanckSpectra phrdensf(rdensf); 91 phrdensf.SetSpectraPower(PlanckSpectra::PHOTON); 72 92 73 93 // frequence wien density W/.. 74 94 PlanckSpectra wdensf(T); 75 wdensf.SetDeriv(deriv); wdensf.SetVar(0); 76 wdensf.SetApprox(2); wdensf.SetTypSpectra(2); wdensf.SetUnitOut(0); 77 PlanckSpectra phwdensf(wdensf); phwdensf.SetUnitOut(1); 95 wdensf.SetSpectraFunc(deriv); 96 wdensf.SetSpectraVar(PlanckSpectra::NU); 97 wdensf.SetSpectraApprox(PlanckSpectra::WIEN); 98 wdensf.SetSpectraUnit(PlanckSpectra::DENSENERG); 99 wdensf.SetSpectraPower(PlanckSpectra::POWER); 100 PlanckSpectra phwdensf(wdensf); 101 phwdensf.SetSpectraPower(PlanckSpectra::PHOTON); 78 102 79 103 //--------------------------------- Radiance Longeur d'onde 80 104 // longueur d'onde planck radiance W/.. 81 105 PlanckSpectra pradl(T); 82 pradl.SetDeriv(deriv); pradl.SetVar(1); 83 pradl.SetApprox(0); pradl.SetTypSpectra(0); pradl.SetUnitOut(0); 84 PlanckSpectra phpradl(pradl); phpradl.SetUnitOut(1); 106 pradl.SetSpectraFunc(deriv); 107 pradl.SetSpectraVar(PlanckSpectra::LAMBDA); 108 pradl.SetSpectraApprox(PlanckSpectra::PLANCK); 109 pradl.SetSpectraUnit(PlanckSpectra::ANGSFLUX); 110 pradl.SetSpectraPower(PlanckSpectra::POWER); 111 PlanckSpectra phpradl(pradl); 112 phpradl.SetSpectraPower(PlanckSpectra::PHOTON); 85 113 86 114 // longueur d'onde rayleigh radiance W/.. 87 115 PlanckSpectra rradl(T); 88 rradl.SetDeriv(deriv); rradl.SetVar(1); 89 rradl.SetApprox(1); rradl.SetTypSpectra(0); rradl.SetUnitOut(0); 90 PlanckSpectra phrradl(rradl); phrradl.SetUnitOut(1); 116 rradl.SetSpectraFunc(deriv); 117 rradl.SetSpectraVar(PlanckSpectra::LAMBDA); 118 rradl.SetSpectraApprox(PlanckSpectra::RAYLEIGH); 119 rradl.SetSpectraUnit(PlanckSpectra::ANGSFLUX); 120 rradl.SetSpectraPower(PlanckSpectra::POWER); 121 PlanckSpectra phrradl(rradl); 122 phrradl.SetSpectraPower(PlanckSpectra::PHOTON); 91 123 92 124 // longueur d'onde wien radiance W/.. 93 125 PlanckSpectra wradl(T); 94 wradl.SetDeriv(deriv); wradl.SetVar(1); 95 wradl.SetApprox(2); wradl.SetTypSpectra(0); wradl.SetUnitOut(0); 96 PlanckSpectra phwradl(wradl); phwradl.SetUnitOut(1); 126 wradl.SetSpectraFunc(deriv); 127 wradl.SetSpectraVar(PlanckSpectra::LAMBDA); 128 wradl.SetSpectraApprox(PlanckSpectra::WIEN); 129 wradl.SetSpectraUnit(PlanckSpectra::ANGSFLUX); 130 wradl.SetSpectraPower(PlanckSpectra::POWER); 131 PlanckSpectra phwradl(wradl); 132 phwradl.SetSpectraPower(PlanckSpectra::PHOTON); 97 133 98 134 //--------------------------------- Densite Longeur d'onde 99 135 // longueur d'onde planck density W/.. 100 136 PlanckSpectra pdensl(T); 101 pdensl.SetDeriv(deriv); pdensl.SetVar(1); 102 pdensl.SetApprox(0); pdensl.SetTypSpectra(2); pdensl.SetUnitOut(0); 103 PlanckSpectra phpdensl(pdensl); phpdensl.SetUnitOut(1); 137 pdensl.SetSpectraFunc(deriv); 138 pdensl.SetSpectraVar(PlanckSpectra::LAMBDA); 139 pdensl.SetSpectraApprox(PlanckSpectra::PLANCK); 140 pdensl.SetSpectraUnit(PlanckSpectra::DENSENERG); 141 pdensl.SetSpectraPower(PlanckSpectra::POWER); 142 PlanckSpectra phpdensl(pdensl); 143 phpdensl.SetSpectraPower(PlanckSpectra::PHOTON); 104 144 105 145 // longueur d'onde rayleigh density W/.. 106 146 PlanckSpectra rdensl(T); 107 rdensl.SetDeriv(deriv); rdensl.SetVar(1); 108 rdensl.SetApprox(1); rdensl.SetTypSpectra(2); rdensl.SetUnitOut(0); 109 PlanckSpectra phrdensl(rdensl); phrdensl.SetUnitOut(1); 147 rdensl.SetSpectraFunc(deriv); 148 rdensl.SetSpectraVar(PlanckSpectra::LAMBDA); 149 rdensl.SetSpectraApprox(PlanckSpectra::RAYLEIGH); 150 rdensl.SetSpectraUnit(PlanckSpectra::DENSENERG); 151 rdensl.SetSpectraPower(PlanckSpectra::POWER); 152 PlanckSpectra phrdensl(rdensl); 153 phrdensl.SetSpectraPower(PlanckSpectra::PHOTON); 110 154 111 155 // longueur d'onde wien density W/.. 112 156 PlanckSpectra wdensl(T); 113 wdensl.SetDeriv(deriv); wdensl.SetVar(1); 114 wdensl.SetApprox(2); wdensl.SetTypSpectra(2); wdensl.SetUnitOut(0); 115 PlanckSpectra phwdensl(wdensl); phwdensl.SetUnitOut(1); 157 wdensl.SetSpectraFunc(deriv); 158 wdensl.SetSpectraVar(PlanckSpectra::LAMBDA); 159 wdensl.SetSpectraApprox(PlanckSpectra::WIEN); 160 wdensl.SetSpectraUnit(PlanckSpectra::DENSENERG); 161 wdensl.SetSpectraPower(PlanckSpectra::POWER); 162 PlanckSpectra phwdensl(wdensl); 163 phwdensl.SetSpectraPower(PlanckSpectra::PHOTON); 116 164 117 165 //--------------------------------- Le maximum des spectres de planck -
trunk/Cosmo/SimLSS/planckspectra.cc
r3325 r3347 105 105 //************************************************************************ 106 106 PlanckSpectra::PlanckSpectra(double T) 107 : T_(T) , approx_(0) , deriv_(0) , typvar_(0) , typspec_(0) , unitout_(0) 107 : T_(T) , spectraapprox_(PLANCK) , spectrafunc_(VALUE) , spectravar_(NU) 108 , spectraunit_(ANGSFLUX) , spectrapower_(POWER) 108 109 { 109 110 } 110 111 111 112 PlanckSpectra::PlanckSpectra(PlanckSpectra& s) 112 : T_(s.T_) , approx_(s.approx_) , deriv_(s.deriv_) , typvar_(s.typvar_) , typspec_(s.typspec_)113 , unitout_(s.unitout_)113 : T_(s.T_) , spectraapprox_(s.spectraapprox_) , spectrafunc_(s.spectrafunc_) , spectravar_(s.spectravar_) 114 , spectraunit_(s.spectraunit_), spectrapower_(s.spectrapower_) 114 115 { 115 116 } … … 120 121 121 122 //************************************************************************ 122 void PlanckSpectra::SetApprox(unsigned short approx) 123 // approx = 0 : Planck spectra 124 // = 1 : Rayleigh spectra 125 // = 2 : Wien spectra 126 { 127 if(approx>2) { 128 cout<<"PlanckSpectra::SetApprox : unknown approximation"<<endl; 129 throw ParmError("PlanckSpectra::SetApprox : unknown approximation"); 130 } 131 approx_ = approx; 132 } 133 134 void PlanckSpectra::SetDeriv(unsigned short deriv) 135 // deriv = 0 : spectra 136 // = 1 : derivative of spectra relative to temperature 137 { 138 if(deriv>1) { 139 cout<<"PlanckSpectra::SetDeriv : parameter out of range"<<endl; 140 throw ParmError("PlanckSpectra::SetDeriv : parameter out of range"); 141 } 142 deriv_ = deriv; 143 } 144 145 void PlanckSpectra::SetVar(unsigned short typvar) 146 // typvar = 0 : variable is frequency (Hz) 147 // = 1 : variable is wavelength (m) 148 { 149 if(typvar>1) { 150 cout<<"PlanckSpectra::SetVar : parameter out of range"<<endl; 151 throw ParmError("PlanckSpectra::SetVar : parameter out of range"); 152 } 153 typvar_ = typvar; 154 } 155 156 void PlanckSpectra::SetUnitOut(unsigned short unitout) 157 // unitout = 0 : in W/... 158 // = 1 : in photon/s/... 159 { 160 if(unitout>1) { 161 cout<<"PlanckSpectra::SetUnitOut : parameter out of range"<<endl; 162 throw ParmError("PlanckSpectra::SetUnitOut : parameter out of range"); 163 } 164 unitout_ = unitout; 165 } 166 167 void PlanckSpectra::SetTypSpectra(unsigned short typspec) 168 // typspec = 0 : radiance W/m^2/Sr/Hz or ... 169 // = 1 : emittance W/m^2/Hz or ... 170 // = 2 : density J/m^3/Hz or ... 171 // = 3 : just the function exp() or equivalent for Rayleigh 172 { 173 if(typspec>3) { 174 cout<<"PlanckSpectra::SetTypSpectra : parameter out of range"<<endl; 175 throw ParmError("PlanckSpectra::SetTypSpectra : parameter out of range"); 176 } 177 typspec_ = typspec; 123 void PlanckSpectra::SetSpectraApprox(SpectraApprox spectraapprox) 124 // spectraapprox = PLANCK : Planck spectra 125 // = RAYLEIGH : Rayleigh spectra 126 // = WIEN : Wien spectra 127 { 128 spectraapprox_ = spectraapprox; 129 } 130 131 void PlanckSpectra::SetSpectraFunc(SpectraFunc spectrafunc) 132 // spectrafunc = VALUE : spectra 133 // = DERIV : derivative of spectra relative to temperature 134 { 135 spectrafunc_ = spectrafunc; 136 } 137 138 void PlanckSpectra::SetSpectraVar(SpectraVar spectravar) 139 // spectravar = NU : variable is frequency (Hz) 140 // = LAMBDA : variable is wavelength (m) 141 { 142 spectravar_ = spectravar; 143 } 144 145 void PlanckSpectra::SetSpectraPower(SpectraPower spectrapower) 146 // spectrapower = POWER : in W/... 147 // = PHOTON : in photon/s/... 148 { 149 spectrapower_ = spectrapower; 150 } 151 152 void PlanckSpectra::SetSpectraUnit(SpectraUnit spectraunit) 153 // spectraunit = ANGSFLUX : radiance W/m^2/Sr/Hz or ... 154 // = SFLUX : emittance W/m^2/Hz or ... 155 // = DENSENERG : density J/m^3/Hz or ... 156 // = EXPON : just the function exp() or equivalent for Rayleigh 157 { 158 spectraunit_ = spectraunit; 178 159 } 179 160 … … 190 171 double PlanckSpectra::PlanckExp(double fl) 191 172 { 192 double x = ( typvar_) ? HCsK_/(fl*T_) : HsK_*fl/T_;193 194 if( approx_ == 1) return 1./x; // Rayleigh173 double x = (spectravar_==LAMBDA) ? HCsK_/(fl*T_) : HsK_*fl/T_; 174 175 if(spectraapprox_ == RAYLEIGH) return 1./x; // Rayleigh 195 176 196 177 if(x>MAXARGEXP) return 0.; 197 178 198 if( approx_ == 2) return exp(-x); // Wien179 if(spectraapprox_ == WIEN) return exp(-x); // Wien 199 180 200 181 if(x<MINARGEXP) return 1./(x*(1.+x/2.)); … … 204 185 double PlanckSpectra::DPlanckExp_DT(double fl) 205 186 { 206 if(approx_ == 1) return (typvar_) ? fl/HCsK_: 1. / (HsK_*fl); // Rayleigh 207 208 double x = (typvar_) ? HCsK_/(fl*T_) : HsK_*fl/T_; 187 if(spectraapprox_ == RAYLEIGH) 188 return (spectravar_==LAMBDA) ? fl/HCsK_: 1. / (HsK_*fl); // Rayleigh 189 190 double x = (spectravar_==LAMBDA) ? HCsK_/(fl*T_) : HsK_*fl/T_; 209 191 210 192 if(x>MAXARGEXP) return 0.; 211 193 212 if( approx_ == 2) return x/T_ * exp(-x); // Wien194 if(spectraapprox_ == WIEN) return x/T_ * exp(-x); // Wien 213 195 214 196 double v; … … 225 207 { 226 208 // --- type de spectre et d'approximation selon choix variable 227 double fex = ( deriv_) ? DPlanckExp_DT(x): PlanckExp(x);209 double fex = (spectrafunc_==DERIV) ? DPlanckExp_DT(x): PlanckExp(x); 228 210 229 211 // --- le coefficient multiplicateur devant l'expo 230 if(typspec_ == 3) return fex; // expo seule 231 232 // radiance en ph/... longeur d'onde frequency 233 double coeff = (typvar_) ? 2.*CinM_/(x*x*x*x): 2.*x*x/(CinM_*CinM_); 234 235 if(typspec_ == 1) coeff *= M_PI; // emittance en ph/... 236 else if(typspec_ == 2) coeff *= 4.*M_PI/CinM_; // densite en ph/... 237 238 // unite en W/... longeur d'onde frequency 239 if(unitout_ == 0) coeff *= (typvar_) ? h_Planck_Cst*CinM_/x: h_Planck_Cst*x; 212 if(spectraunit_ == EXPON) return fex; // expo seule 213 214 // radiance en ph/... longeur d'onde frequency 215 double coeff = (spectravar_==LAMBDA) ? 2.*CinM_/(x*x*x*x): 2.*x*x/(CinM_*CinM_); 216 217 if(spectraunit_ == SFLUX) coeff *= M_PI; // emittance en ph/... 218 else if(spectraunit_ == DENSENERG) coeff *= 4.*M_PI/CinM_; // densite en ph/... 219 220 // unite en W/... longeur d'onde frequency 221 if(spectrapower_ == POWER) 222 coeff *= (spectravar_==LAMBDA) ? h_Planck_Cst*CinM_/x: h_Planck_Cst*x; 240 223 241 224 return coeff * fex; … … 274 257 { 275 258 double x=-1.; 276 if( typvar_ == 0) { // Frequence277 if( deriv_ == 0) { // Le spectre278 if( unitout_ == 0) // W/...279 {if( approx_==0) x=2.82143938074; else if(approx_==2) x=3.;}280 else if( unitout_ == 1) // Ph/s/...281 {if( approx_==0) x=1.59362426; else if(approx_==2) x=2.;}282 } else if( deriv_ == 1) { // La derivee du spectre283 if( unitout_ == 0) // W/...284 {if( approx_==0) x=3.830016095; else if(approx_==2) x=4.;}285 else if( unitout_ == 1) // Ph/s/...286 {if( approx_==0) x=2.575678888; else if(approx_==2) x=3.;}259 if(spectravar_ == NU) { // Frequence 260 if(spectrafunc_ == VALUE) { // Le spectre 261 if(spectrapower_ == POWER) // W/... 262 {if(spectraapprox_==PLANCK) x=2.82143938074; else if(spectraapprox_==WIEN) x=3.;} 263 else if(spectrapower_ == PHOTON) // Ph/s/... 264 {if(spectraapprox_==PLANCK) x=1.59362426; else if(spectraapprox_==WIEN) x=2.;} 265 } else if(spectrafunc_ == DERIV) { // La derivee du spectre 266 if(spectrapower_ == POWER) // W/... 267 {if(spectraapprox_==PLANCK) x=3.830016095; else if(spectraapprox_==WIEN) x=4.;} 268 else if(spectrapower_ == PHOTON) // Ph/s/... 269 {if(spectraapprox_==PLANCK) x=2.575678888; else if(spectraapprox_==WIEN) x=3.;} 287 270 } 288 271 } else { // Longeur d'onde 289 if( deriv_ == 0) { // Le spectre290 if( unitout_ == 0) // W/...291 {if( approx_==0) x=4.96511420; else if(approx_==2) x=5.;}292 else if( unitout_ == 1) // Ph/s/...293 {if( approx_==0) x=3.9206904099; else if(approx_==2) x=4.;}294 } else if( deriv_ == 1) { // La derivee du spectre295 if( unitout_ == 0) // W/...296 {if( approx_==0) x=5.969409190; else if(approx_==2) x=6.;}297 else if( unitout_ == 1) // Ph/s/...298 {if( approx_==0) x=4.928119345; else if(approx_==2) x=5.;}272 if(spectrafunc_ == VALUE) { // Le spectre 273 if(spectrapower_ == POWER) // W/... 274 {if(spectraapprox_==PLANCK) x=4.96511420; else if(spectraapprox_==WIEN) x=5.;} 275 else if(spectrapower_ == PHOTON) // Ph/s/... 276 {if(spectraapprox_==PLANCK) x=3.9206904099; else if(spectraapprox_==WIEN) x=4.;} 277 } else if(spectrafunc_ == DERIV) { // La derivee du spectre 278 if(spectrapower_ == POWER) // W/... 279 {if(spectraapprox_==PLANCK) x=5.969409190; else if(spectraapprox_==WIEN) x=6.;} 280 else if(spectrapower_ == PHOTON) // Ph/s/... 281 {if(spectraapprox_==PLANCK) x=4.928119345; else if(spectraapprox_==WIEN) x=5.;} 299 282 } 300 283 } 301 284 302 285 if(x<0.) return x; // Rayleigh n'a pas de maximum 303 if( typvar_ == 0) return x / HsK_ *T_; // Frequence286 if(spectravar_ == NU) return x / HsK_ *T_; // Frequence 304 287 return HCsK_ / x /T_; // Longeur d'onde 305 288 } … … 308 291 // Retourne le maximum des spectres (a la precicion eps) 309 292 { 310 if( approx_ == 1) { // Pas de maximum pour les spectres de Raleigh293 if(spectraapprox_ == RAYLEIGH) { // Pas de maximum pour les spectres de Raleigh 311 294 cout<<"PlanckSpectra::FindMaximum : no maximum for Raleigh spectra"<<endl; 312 295 throw ParmError("PlanckSpectra::FindMaximum : no maximum for Raleigh spectra"); -
trunk/Cosmo/SimLSS/planckspectra.h
r3325 r3347 10 10 class PlanckSpectra : public GenericFunc { 11 11 public: 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 12 19 PlanckSpectra(double T); 13 20 PlanckSpectra(PlanckSpectra& s); … … 17 24 inline double GetTemperature(void) {return T_;} 18 25 19 void Set Approx(unsigned short approx=0);20 void Set Deriv(unsigned short deriv=0);21 void Set Var(unsigned short typvar=0);22 void Set TypSpectra(unsigned short typspec=0);23 void Set UnitOut(unsigned short unitout=0);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); 24 31 25 32 … … 34 41 protected: 35 42 double T_; 36 unsigned short approx_,deriv_,typvar_,typspec_,unitout_; 43 SpectraApprox spectraapprox_; 44 SpectraFunc spectrafunc_; 45 SpectraVar spectravar_; 46 SpectraUnit spectraunit_; 47 SpectraPower spectrapower_; 37 48 38 49 double PlanckExp(double fl);
Note:
See TracChangeset
for help on using the changeset viewer.