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

Last change on this file was 4047, checked in by cmv, 14 years ago

details..., cmv 12/01/2012

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);
[4047]55 double DloscomDz(double z);
[3115]56 double Dang(double z);
57 double Dlum(double z);
58
59 double dVol(double z);
60 double Vol4Pi(double z);
61 double Vol4Pi(double z1,double z2);
62
[3749]63 double ZFrLos(double loscom /* Mpc com */, int niter=6);
64
[3115]65 void Print(double z=0.);
66
67 double E2(double z) const;
68 inline double E(double z) const {return sqrt(E2(z));}
69
70 double NInteg(double z);
71 inline double Integrand(double z) const {return 1./E(z);}
72
[3312]73 virtual double operator() (double z) {return Integrand(z);}
[3115]74protected:
75 int_4 Init_Spline(void);
76 void Clone(CosmoCalc& univ);
77
78 // La cosmology
79 unsigned short _flat;
80 double _h100, _H0; /* km/s/Mpc */
[3952]81 double _Olambda0,_W0,_Wa;
[3115]82 double _Omatter0,_Obaryon0;
83 double _Orelat0;
84 double _Otot0,_Ocurv0;
85 double _Dhubble; /* Mpc */
86
87 // Parametres d'integration
88 double _dperc,_dzinc,_dzmax;
89 unsigned short _glorder;
90 vector<double> _xgausl, _wgausl;
91
92 // Pour le calcul direct
93 double _zold,_integval;
94
95 // Pour les splines
96 bool _usespline,_computespl;
97 double _zmax;
98 CSpline * _spline;
99 int_4 _nspl;
100 double *_xspl, *_yspl;
101
102};
103
[3749]104//-----------------------------------------------------------------------------------
105double LargeurDoppler(double v /* km/s */, double nu);
106double DzFrV(double v /* km/s */, double zred);
107double DNuFrDz(double dzred,double nu_at_0,double zred);
108double DzFrDNu(double dnu_at_0,double nu_at_0,double zred);
109double DzFrDNuApprox(double dnu_at_0,double nu_at_0,double zred);
110
111//-----------------------------------------------------------------------------------
112
[3325]113} // Fin du namespace SOPHYA
[3115]114
115#endif
Note: See TracBrowser for help on using the repository browser.