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

Last change on this file since 3770 was 3768, checked in by cmv, 15 years ago
  • refonte du code pour creer uniquement des conditions initiales
  • introduction du tirage des vitesse LOS pour les redshift-distortion

cmv 03/05/2010

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