LORENE
spheroid.h
1/*
2 * Definition of Lorene class Spheroid
3 *
4 */
5
6/*
7 * Copyright (c) 2006 Nicolas Vasset, Jerome Novak & Jose-Luis Jaramillo
8 *
9 * This file is part of LORENE.
10 *
11 * LORENE is free software; you can redistribute it and/or modify
12 * it under the terms of the GNU General Public License version 2
13 * as published by the Free Software Foundation.
14 *
15 * LORENE is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU General Public License for more details.
19 *
20 * You should have received a copy of the GNU General Public License
21 * along with LORENE; if not, write to the Free Software
22 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
23 *
24 */
25
26#ifndef __SPHEROID_H_
27#define __SPHEROID_H_
28
29/*
30 * $Id: spheroid.h,v 1.13 2014/10/13 08:52:36 j_novak Exp $
31 * $Log: spheroid.h,v $
32 * Revision 1.13 2014/10/13 08:52:36 j_novak
33 * Lorene classes and functions now belong to the namespace Lorene.
34 *
35 * Revision 1.12 2008/12/10 13:53:56 jl_jaramillo
36 * versions developed at Meudon in Novemver 2008
37 *
38 * Revision 1.11 2008/11/12 15:18:32 n_vasset
39 * New definition for the computation of Ricci scalar (instead of Ricci
40 * tensor previously)
41 *
42 * Revision 1.10 2008/07/09 08:48:23 n_vasset
43 * protected member zeta added.
44 *
45 * Revision 1.9 2008/06/04 12:31:56 n_vasset
46 * new functions multipole_mass and multipole_angu.
47 *
48 * Revision 1.8 2008/06/03 14:32:23 n_vasset
49 * dzpuis corrections (provisory). New function mass implemented.
50 *
51 * Revision 1.7 2006/09/07 08:39:43 j_novak
52 * Minor changes.
53 *
54 * Revision 1.6 2006/07/03 10:12:51 n_vasset
55 * adding of flag isphere
56 *
57 * Revision 1.5 2006/06/13 08:07:55 n_vasset
58 * Addition of 2 members
59 *
60 * Revision 1.4 2006/06/08 09:50:49 n_vasset
61 * corrected version for coordinates transformation
62 *
63 * Revision 1.3 2006/06/07 14:32:24 n_vasset
64 * modified constructor for 3d projector (Sym_tensor to Tensor)
65 *
66 * Revision 1.2 2006/05/26 13:25:42 j_novak
67 * Removed a 'const'
68 *
69 * Revision 1.1 2006/05/26 13:20:42 j_novak
70 * New class spheroid.
71 *
72 *
73 *
74 * $Header: /cvsroot/Lorene/C++/Include/spheroid.h,v 1.13 2014/10/13 08:52:36 j_novak Exp $
75 *
76 */
77#include "metric.h"
78
79namespace Lorene {
84class Spheroid {
85
86
87 // Data :
88 // -----
89 protected:
92
97
101
105
109
114
115 Metric qab ;
116
118
123
125
130
135
139
144
145 /*** */
146
147 Scalar zeta;
148
151 bool issphere ;
152
153
154 // Derived data :
155 // ------------
156 protected:
157 mutable Scalar* p_sqrt_q ;
158 mutable double* p_area ;
159 mutable double* p_angu_mom ;
160 mutable double* p_mass ;
161 mutable double* p_multipole_mass ;
162 mutable double* p_multipole_angu ;
163 mutable double* p_epsilon_A_minus_one ;
164 mutable double* p_epsilon_P_minus_one ;
167 mutable Sym_tensor* p_shear ;
168 mutable Tensor* p_delta ;
169
170
171
172 // Constructors - Destructor
173 // -------------------------
174 public:
179 Spheroid(const Map_af& map, double radius) ;
189 Spheroid(const Scalar& h_in, const Metric& gamij, const Sym_tensor& Kij) ;
190 Spheroid(const Spheroid& ) ;
191
193 Spheroid(FILE* ) ;
194
195 virtual ~Spheroid() ;
196
197
198 // Memory management
199 // -----------------
200 protected:
202 virtual void del_deriv() const ;
203
205 void set_der_0x0() const ;
206
207
208 // Mutators / assignment
209 // ---------------------
210 public:
212 void operator=(const Spheroid&) ;
213
214
216 void set_ephi(const Scalar&) ;
217
218
219 // Accessors
220 // ---------
221 public:
223 const Scalar& get_hsurf() const {return h_surf ; } ;
224
226 const Metric& get_qab() const {return qab ; } ;
227
229 const Scalar& get_ricci() const {return ricci ; } ;
230
232 const Sym_tensor& get_hh() const {return hh ; } ;
233
235 const Sym_tensor& get_qq() const {return qq ; } ;
236
238 const Tensor& get_proj() const {return proj ; } ;
239
241 const Tensor& get_jac2d() const {return jac2d ; } ;
242
244 const Scalar& get_trk() const {return trk; } ;
245
247 const Vector& get_ll() const {return ll;} ;
248
250 const Vector& get_ss() const {return ss;} ;
251
253 const Vector& get_ephi() const {return ephi;};
254
256 const Sym_tensor& get_jj() const {return jj;} ;
257
259 const Scalar& get_fff() const {return fff;} ;
260
262 const Scalar& get_ggg() const {return ggg;} ;
263
265 bool get_issphere() const{return issphere;};
266
268 Scalar& set_hsurf() {del_deriv() ; return h_surf ; } ;
269
271 Metric& set_qab() {del_deriv() ; return qab ; } ;
272
274 Scalar& set_ricci() {del_deriv() ; return ricci ; } ;
275
277 Sym_tensor& set_qq() {del_deriv() ; return qq ; } ;
278
280 Tensor& set_proj() {del_deriv() ; return proj ; } ;
281
283 Sym_tensor& set_hh() {del_deriv() ; return hh ; } ;
284
286 Scalar& set_trk() {del_deriv() ; return trk; } ;
287
289 Vector& set_ll() {del_deriv() ; return ll;} ;
290
292 Vector& set_ss() {del_deriv() ; return ss;} ;
293
295 Sym_tensor& set_jj() {del_deriv() ; return jj;} ;
296
298 Scalar& set_fff() {del_deriv() ; return fff;} ;
299
301 Scalar& set_ggg() {del_deriv() ; return ggg;} ;
302
304 bool set_issphere() {del_deriv() ; return issphere; };
305
307 void update_from_tslice(const Metric& gamij, const Sym_tensor& Kij) ;
308
309 // Computational functions
310 // -----------------------
311 public:
312
314// Vector compute_normal(const Metric& gamij) ;
315
317 const Scalar& sqrt_q() const ;
318
323 double area() const ;
324
332 double angu_mom() const ;
333
340 double mass() const;
341
347 double multipole_mass(const int order) const;
348
349
355 double multipole_angu(const int order) const;
356
357
358
360 double epsilon_A_minus_one() const;
361
365 double epsilon_P_minus_one() const;
366
368 const Scalar& theta_plus() const ;
369
371 const Scalar& theta_minus() const ;
372
374 const Sym_tensor& shear () const ;
375
377
378 Tensor derive_cov2dflat(const Tensor& uu) const ;
379
381
382 const Tensor& delta() const;
383
385
386 Tensor derive_cov2d(const Tensor& uu) const ;
387
388 // Outputs
389 // -------
390 public:
391 virtual void sauve(FILE *) const ;
392
394 friend ostream& operator<<(ostream& , const Spheroid& ) ;
395
396};
397
398ostream& operator<<(ostream& , const Spheroid& ) ;
399
400 //------------------
401 // Class App_hor
402 //------------------
403
408class App_hor : public Spheroid {
409
410 // Constructors - Destructor
411 // -------------------------
412 public:
413 App_hor(const Mg3d& grid_angu, double radius) ;
422 App_hor(const Scalar& h_in, const Metric& gamij, const Sym_tensor& Kij) ;
423 App_hor(const App_hor& ) ;
424
426 App_hor(FILE* ) ;
427
428 virtual ~App_hor() ;
429
430 // Mutators / assignment
431 // ---------------------
432 public:
434 void operator=(const App_hor&) ;
435
436 bool check_expansion(double thres = 1.e-7) const ;
437
439 const Sym_tensor& lie_derive_shear(const Scalar& bb, const Scalar& lapse) ;
440
444 const Sym_tensor& lie_derive_theta_plus(const Scalar& bb, const Scalar& lapse);
445
449 const Sym_tensor& lie_derive_theta_minus(const Scalar& bb, const Scalar& lapse);
450
452 const Sym_tensor& lie_derive_q_ab(const Scalar& bb, const Scalar& lapse) ;
453
457 const Scalar& l_non_affinity(const Scalar& bb, const Scalar& lapse) ;
458
459} ;
460
461
462}
463#endif
Class describing an apparent horizon.
Definition spheroid.h:408
App_hor(const Scalar &h_in, const Metric &gamij, const Sym_tensor &Kij)
Constructor of an apparent horizon embedded in a 3-slice (Time_slice ) of 3+1 formalism.
const Scalar & l_non_affinity(const Scalar &bb, const Scalar &lapse)
non-affinity (or surface gravity) with respect to the outgoing null vector field
App_hor(const Mg3d &grid_angu, double radius)
Standard constructor.
const Sym_tensor & lie_derive_theta_plus(const Scalar &bb, const Scalar &lapse)
Lie derivative of the null outgoing expansion rate with respect to the evolution vector field.
void operator=(const App_hor &)
Assignment to another App_hor.
const Sym_tensor & lie_derive_q_ab(const Scalar &bb, const Scalar &lapse)
Lie derivative of 2-metric with respect to the evolution vector field.
const Sym_tensor & lie_derive_theta_minus(const Scalar &bb, const Scalar &lapse)
Lie derivative of the null ingoing expansion rate with respect to the evolution vector field.
App_hor(const App_hor &)
Copy constructor.
const Sym_tensor & lie_derive_shear(const Scalar &bb, const Scalar &lapse)
Lie derivative of shear tensor with respect to the evolution vector field.
virtual ~App_hor()
Destructor.
App_hor(FILE *)
Constructor from a file (see sauve(FILE*) )
Affine radial mapping.
Definition map.h:2027
Metric for tensor calculation.
Definition metric.h:90
Multi-domain grid.
Definition grilles.h:273
Tensor field of valence 0 (or component of a tensorial field).
Definition scalar.h:387
Spheroidal 2-surfaces embedded in a time-slice of the 3+1 formalism.
Definition spheroid.h:84
Sym_tensor & set_hh()
Sets the symmetric tensor .
Definition spheroid.h:283
Tensor derive_cov2dflat(const Tensor &uu) const
Computes the round covariant derivative on the spheroid.
Definition spheroid.C:954
virtual ~Spheroid()
Destructor.
Definition spheroid.C:642
const Scalar & sqrt_q() const
Computes the normal vector field to the 2-surface.
Definition spheroid.C:693
Tensor proj
The 3-d projector on the 2-surface (contravariant-covariant form).
Definition spheroid.h:100
Metric & set_qab()
Sets the modified metric (non degenerated) .
Definition spheroid.h:271
Sym_tensor qq
The 3-d covariant degenerated 2-metric on the surface.
Definition spheroid.h:104
const Scalar & theta_minus() const
Computes the ingoing null expansion .
Definition spheroid.C:909
const Tensor & get_proj() const
returns the 3-d projector on 2-surface
Definition spheroid.h:238
const Scalar & get_ggg() const
Returns the normalization scalar G.
Definition spheroid.h:262
virtual void sauve(FILE *) const
Save in a file.
Definition spheroid.C:1186
const Metric & get_qab() const
Returns the metric .
Definition spheroid.h:226
Vector & set_ll()
Sets the vector .
Definition spheroid.h:289
Vector ll
Normal-tangent component of the extrinsic curvature of the 3-slice.
Definition spheroid.h:129
Scalar & set_ggg()
Sets the normalization factor G.
Definition spheroid.h:301
double * p_multipole_angu
Angular momentum multipole for the spheroid.
Definition spheroid.h:162
const Tensor & get_jac2d() const
returns the 2-d jacobian of coordinate transformation
Definition spheroid.h:241
double * p_mass
Mass defined from angular momentum.
Definition spheroid.h:160
Scalar trk
Trace K of the extrinsic curvature of the 3-slice.
Definition spheroid.h:124
Scalar * p_theta_plus
Classical Penrose parameter, difference wrt one.
Definition spheroid.h:165
Scalar ggg
Normalization function for the ingoing null vector k.
Definition spheroid.h:143
void operator=(const Spheroid &)
Assignment to another Spheroid.
Definition spheroid.C:614
Scalar & set_hsurf()
Sets the field h_surf.
Definition spheroid.h:268
double epsilon_A_minus_one() const
Computation of the refined Penrose parameter for axisymmetric spacetimes, and its difference wrt one.
Definition spheroid.C:864
void set_der_0x0() const
Sets to 0x0 all the pointers on derived quantities.
Definition spheroid.C:666
Scalar & set_fff()
Sets the normalization factor F.
Definition spheroid.h:298
const Tensor & delta() const
Computes the delta coefficients for covariant derivative.
Definition spheroid.C:1203
double multipole_angu(const int order) const
Computes the angular multipole of a given order for the spheroid, assumed to be spherical.
Definition spheroid.C:801
bool issphere
Flag to know whether the horizon is geometrically round or distorted.
Definition spheroid.h:151
Tensor jac2d
The jacobian of the adaptation of coordinates (contravariant/covariant representation)
Definition spheroid.h:96
const Vector & get_ll() const
Returns the vector .
Definition spheroid.h:247
Scalar & set_trk()
Sets the trace K on the 2-surface.
Definition spheroid.h:286
friend ostream & operator<<(ostream &, const Spheroid &)
Display.
double mass() const
Computes the mass as defined from the calculus of angular momentum, done with respect to a divergence...
Definition spheroid.C:736
Sym_tensor jj
Tangent components of the extrinsic curvature of the 3-slice.
Definition spheroid.h:134
double * p_area
The area of the 2-surface.
Definition spheroid.h:158
const Scalar & get_fff() const
Returns the normalization scalar F.
Definition spheroid.h:259
Scalar fff
Normalization function for the outgoing null vector l.
Definition spheroid.h:138
double area() const
Computes the area of the 2-surface.
Definition spheroid.C:708
Sym_tensor & set_qq()
Sets the degenerated metric .
Definition spheroid.h:277
double multipole_mass(const int order) const
Computes the mass multipole of a given order for the spheroid, assumed to be spherical.
Definition spheroid.C:748
const Sym_tensor & get_jj() const
Returns the symmetric tensor .
Definition spheroid.h:256
Scalar h_surf
The location of the 2-surface as r = h_surf .
Definition spheroid.h:91
Vector & set_ss()
Sets the vector .
Definition spheroid.h:292
Sym_tensor hh
The ricci scalar on the 2-surface.
Definition spheroid.h:122
const Scalar & get_trk() const
Returns the trace K on the 2-surface.
Definition spheroid.h:244
double * p_epsilon_P_minus_one
Refined Penrose parameter, difference wrt one.
Definition spheroid.h:164
const Vector & get_ss() const
Returns the vector .
Definition spheroid.h:250
Spheroid(FILE *)
Constructor from a file (see sauve(FILE*) )
Scalar * p_sqrt_q
Surface element .
Definition spheroid.h:157
Vector ss
The adapted normal vector field to spheroid in the 3-slice.
Definition spheroid.h:108
const Scalar & get_hsurf() const
Returns the field h_surf.
Definition spheroid.h:223
Scalar & set_ricci()
Sets the 2-Ricci scalar .
Definition spheroid.h:274
const Sym_tensor & get_hh() const
Returns the symmetric tensor .
Definition spheroid.h:232
void update_from_tslice(const Metric &gamij, const Sym_tensor &Kij)
Updates from the 3-slice data.
virtual void del_deriv() const
Deletes all the derived quantities.
Definition spheroid.C:650
const Scalar & get_ricci() const
Returns the 2-ricci scalar .
Definition spheroid.h:229
Tensor & set_proj()
Sets the projector .
Definition spheroid.h:280
const Sym_tensor & shear() const
Computes the shear of the 2-surface .
Definition spheroid.C:925
Scalar * p_theta_minus
Null ingoing expansion.
Definition spheroid.h:166
double angu_mom() const
Computes the angular momentum with respect to a divergence-free vector field tangent to the 2-surface...
Definition spheroid.C:721
Sym_tensor & set_jj()
Sets the symmetric tensor .
Definition spheroid.h:295
const Sym_tensor & get_qq() const
returns the 3-d degenerate 2-metric
Definition spheroid.h:235
Vector ephi
The conformal Killing vector field on the 2-surface (set to by default to the axial vector associated...
Definition spheroid.h:113
const Vector & get_ephi() const
Returns the conformal Killing symmetry vector on the 2-surface.
Definition spheroid.h:253
double * p_multipole_mass
Mass multipole for the spheroid.
Definition spheroid.h:161
void set_ephi(const Scalar &)
Assigns the conformal Killing vector field to phi.
double * p_angu_mom
The angular momentum.
Definition spheroid.h:159
Tensor derive_cov2d(const Tensor &uu) const
Computes the total covariant derivative on the spheroid.
Definition spheroid.C:1240
Scalar ricci
Induced metric on the 2-surface .
Definition spheroid.h:117
bool get_issphere() const
Returns the flag saying whether or not the horizon is geometrically round.
Definition spheroid.h:265
Sym_tensor * p_shear
The shear tensor.
Definition spheroid.h:167
double epsilon_P_minus_one() const
Computation of the classical Penrose parameter, and its difference wrt one.
Definition spheroid.C:876
const Scalar & theta_plus() const
Computes the outgoing null expansion .
Definition spheroid.C:889
bool set_issphere()
Sets the boolean linked to geometrical shape of the horizon.
Definition spheroid.h:304
Class intended to describe valence-2 symmetric tensors.
Definition sym_tensor.h:223
Tensor handling.
Definition tensor.h:288
Tensor field of valence 1.
Definition vector.h:188
Lorene prototypes.
Definition app_hor.h:64