source: Sophya/trunk/Cosmo/SimLSS/cosmocalc.h@ 3988

Last change on this file since 3988 was 3952, checked in by cmv, 15 years ago

ajout evolution de w, cmv 22/02/2011

File size: 3.2 KB
RevLine 
[3115]1#ifndef COSMOCALC_SEEN
2#define COSMOCALC_SEEN
3
4#include "machdefs.h"
5#include <vector>
6
7#include "genericfunc.h"
8
9namespace SOPHYA {
10
11 class CSpline;
12
13//-----------------------------------------------------------------------------------
14class CosmoCalc : public GenericFunc {
15public:
16 CosmoCalc(unsigned short flat=0,bool usespline=false,double zmax=0.);
17 CosmoCalc(CosmoCalc& univ);
18 virtual ~CosmoCalc(void);
19
20 unsigned short Flat(void) { return _flat;}
21
22 double ZMax(void) { return _zmax;}
[3768]23 void ChangeZmax(double zmax,double dzinc=-1.,double dzmax=-1.);
[3285]24 void SetInteg(double dperc=-1.,double dzinc=-1.,double dzmax=-1.,unsigned short order=4);
25 void PrtInteg(void);
[3115]26
[3952]27 void SetDynParam(double h100,double om0,double or0,double ol0,double w0=-1.,double wa=0.);
[3115]28 void SetObaryon0(double v);
29 void DefaultParam(void);
30
31 inline double h100(void) {return _h100;}
32 inline double H0(void) {return _H0;}
33 inline double Dhubble(void) {return _Dhubble;}
34 inline double Olambda0(void) {return _Olambda0;}
35 inline double W0(void) {return _W0;}
[3952]36 inline double Wa(void) {return _Wa;}
[3115]37 inline double Omatter0(void) {return _Omatter0;}
38 inline double Obaryon0(void) {return _Obaryon0;}
39 inline double Orelat0(void) {return _Orelat0;}
40 inline double Ocurv0(void) {return _Ocurv0;}
41 inline double Otot0(void) {return _Otot0;}
42 double Rhoc(double z);
43
44 inline double H(double z) {return _H0 * E(z);}
45 double Olambda(double z);
[3952]46 inline double W(double z) {return _W0 + _Wa * z/(1.+z);} // W(z) = W0 + Wa*(1-a)
[3115]47 double Omatter(double z);
48 double Obaryon(double z);
49 double Orelat(double z);
50 double Ocurv(double z);
51 double Otot(double z);
52
53 double Dtrcom(double z);
54 double Dloscom(double z);
55 double Dang(double z);
56 double Dlum(double z);
57
58 double dVol(double z);
59 double Vol4Pi(double z);
60 double Vol4Pi(double z1,double z2);
61
[3749]62 double ZFrLos(double loscom /* Mpc com */, int niter=6);
63
[3115]64 void Print(double z=0.);
65
66 double E2(double z) const;
67 inline double E(double z) const {return sqrt(E2(z));}
68
69 double NInteg(double z);
70 inline double Integrand(double z) const {return 1./E(z);}
71
[3312]72 virtual double operator() (double z) {return Integrand(z);}
[3115]73protected:
74 int_4 Init_Spline(void);
75 void Clone(CosmoCalc& univ);
76
77 // La cosmology
78 unsigned short _flat;
79 double _h100, _H0; /* km/s/Mpc */
[3952]80 double _Olambda0,_W0,_Wa;
[3115]81 double _Omatter0,_Obaryon0;
82 double _Orelat0;
83 double _Otot0,_Ocurv0;
84 double _Dhubble; /* Mpc */
85
86 // Parametres d'integration
87 double _dperc,_dzinc,_dzmax;
88 unsigned short _glorder;
89 vector<double> _xgausl, _wgausl;
90
91 // Pour le calcul direct
92 double _zold,_integval;
93
94 // Pour les splines
95 bool _usespline,_computespl;
96 double _zmax;
97 CSpline * _spline;
98 int_4 _nspl;
99 double *_xspl, *_yspl;
100
101};
102
[3749]103//-----------------------------------------------------------------------------------
104double LargeurDoppler(double v /* km/s */, double nu);
105double DzFrV(double v /* km/s */, double zred);
106double DNuFrDz(double dzred,double nu_at_0,double zred);
107double DzFrDNu(double dnu_at_0,double nu_at_0,double zred);
108double DzFrDNuApprox(double dnu_at_0,double nu_at_0,double zred);
109
110//-----------------------------------------------------------------------------------
111
[3325]112} // Fin du namespace SOPHYA
[3115]113
114#endif
Note: See TracBrowser for help on using the repository browser.