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

Last change on this file since 3115 was 3115, checked in by ansari, 19 years ago

Creation initiale du groupe Cosmo avec le repertoire SimLSS de
simulation de distribution de masse 3D des galaxies par CMV+Rz
18/12/2006

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