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

Last change on this file since 3756 was 3749, checked in by cmv, 16 years ago

deplacement de fct utilitaires depuis cmvdefsurv.cc vers cosmocalc.cc, cmv 02/03/2010

File size: 3.0 KB
Line 
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;}
23 void SetInteg(double dperc=-1.,double dzinc=-1.,double dzmax=-1.,unsigned short order=4);
24 void PrtInteg(void);
25
26 void SetDynParam(double h100,double om0,double or0,double ol0,double w0=-1.);
27 void SetObaryon0(double v);
28 void DefaultParam(void);
29
30 inline double h100(void) {return _h100;}
31 inline double H0(void) {return _H0;}
32 inline double Dhubble(void) {return _Dhubble;}
33 inline double Olambda0(void) {return _Olambda0;}
34 inline double W0(void) {return _W0;}
35 inline double Omatter0(void) {return _Omatter0;}
36 inline double Obaryon0(void) {return _Obaryon0;}
37 inline double Orelat0(void) {return _Orelat0;}
38 inline double Ocurv0(void) {return _Ocurv0;}
39 inline double Otot0(void) {return _Otot0;}
40 double Rhoc(double z);
41
42 inline double H(double z) {return _H0 * E(z);}
43 double Olambda(double z);
44 double Omatter(double z);
45 double Obaryon(double z);
46 double Orelat(double z);
47 double Ocurv(double z);
48 double Otot(double z);
49
50 double Dtrcom(double z);
51 double Dloscom(double z);
52 double Dang(double z);
53 double Dlum(double z);
54
55 double dVol(double z);
56 double Vol4Pi(double z);
57 double Vol4Pi(double z1,double z2);
58
59 double ZFrLos(double loscom /* Mpc com */, int niter=6);
60
61 void Print(double z=0.);
62
63 double E2(double z) const;
64 inline double E(double z) const {return sqrt(E2(z));}
65
66 double NInteg(double z);
67 inline double Integrand(double z) const {return 1./E(z);}
68
69 virtual double operator() (double z) {return Integrand(z);}
70protected:
71 int_4 Init_Spline(void);
72 void Clone(CosmoCalc& univ);
73
74 // La cosmology
75 unsigned short _flat;
76 double _h100, _H0; /* km/s/Mpc */
77 double _Olambda0,_W0;
78 double _Omatter0,_Obaryon0;
79 double _Orelat0;
80 double _Otot0,_Ocurv0;
81 double _Dhubble; /* Mpc */
82
83 // Parametres d'integration
84 double _dperc,_dzinc,_dzmax;
85 unsigned short _glorder;
86 vector<double> _xgausl, _wgausl;
87
88 // Pour le calcul direct
89 double _zold,_integval;
90
91 // Pour les splines
92 bool _usespline,_computespl;
93 double _zmax;
94 CSpline * _spline;
95 int_4 _nspl;
96 double *_xspl, *_yspl;
97
98};
99
100//-----------------------------------------------------------------------------------
101double LargeurDoppler(double v /* km/s */, double nu);
102double DzFrV(double v /* km/s */, double zred);
103double DNuFrDz(double dzred,double nu_at_0,double zred);
104double DzFrDNu(double dnu_at_0,double nu_at_0,double zred);
105double DzFrDNuApprox(double dnu_at_0,double nu_at_0,double zred);
106
107//-----------------------------------------------------------------------------------
108
109} // Fin du namespace SOPHYA
110
111#endif
Note: See TracBrowser for help on using the repository browser.