LORENE
metric.h
1 /*
2 * Definition of Lorene class Metric
3 *
4 */
5
6/*
7 * Copyright (c) 2003 Eric Gourgoulhon & Jerome Novak
8 *
9 * Copyright (c) 1999-2001 Philippe Grandclement (for previous class Metrique)
10 *
11 * This file is part of LORENE.
12 *
13 * LORENE is free software; you can redistribute it and/or modify
14 * it under the terms of the GNU General Public License version 2
15 * as published by the Free Software Foundation.
16 *
17 * LORENE is distributed in the hope that it will be useful,
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 * GNU General Public License for more details.
21 *
22 * You should have received a copy of the GNU General Public License
23 * along with LORENE; if not, write to the Free Software
24 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
25 *
26 */
27
28#ifndef __METRIC_H_
29#define __METRIC_H_
30
31/*
32 * $Id: metric.h,v 1.9 2014/10/13 08:52:35 j_novak Exp $
33 * $Log: metric.h,v $
34 * Revision 1.9 2014/10/13 08:52:35 j_novak
35 * Lorene classes and functions now belong to the namespace Lorene.
36 *
37 * Revision 1.8 2004/11/18 12:23:42 jl_jaramillo
38 * radial vector normal to a spherical slicing and pointing towards
39 * spatial infinity
40 *
41 * Revision 1.7 2004/03/22 13:12:42 j_novak
42 * Modification of comments to use doxygen instead of doc++
43 *
44 * Revision 1.6 2003/12/30 23:04:58 e_gourgoulhon
45 * Important reorganization of class Metric:
46 * -- suppression of virtual methods fait_* : the actual computations
47 * are now performed via the virtual methods con(), cov(), connect(),
48 * ricci(), ricci_scal(), determinant()
49 * -- the member p_connect is now treated as an ordinary derived data
50 * member
51 * -- the construction of the associated connection (member p_connect)
52 * is performed thanks to the new methods Map::flat_met_spher() and
53 * Map::flat_met_cart().
54 *
55 * Revision 1.5 2003/11/06 14:43:37 e_gourgoulhon
56 * Gave a name to const arguments in certain method prototypes (e.g.
57 * constructors) to correct a bug of DOC++.
58 *
59 * Revision 1.4 2003/10/06 15:30:32 j_novak
60 * Defined methods for flat metric.
61 *
62 * Revision 1.3 2003/10/06 13:58:45 j_novak
63 * The memory management has been improved.
64 * Implementation of the covariant derivative with respect to the exact Tensor
65 * type.
66 *
67 * Revision 1.2 2003/10/03 11:21:45 j_novak
68 * More methods for the class Metric
69 *
70 * Revision 1.1 2003/10/02 15:45:48 j_novak
71 * New class Metric
72 *
73 *
74 *
75 *
76 * $Header: /cvsroot/Lorene/C++/Include/metric.h,v 1.9 2014/10/13 08:52:35 j_novak Exp $
77 *
78 */
79
80// Lorene headers
81#include "connection.h"
82
83#define N_TENSOR_DEPEND 200
84
85namespace Lorene {
90class Metric {
91
92 // Data :
93 // -----
94 protected:
95 const Map* const mp ;
96
101
106
107
108 // Derived data :
109 // ------------
110 protected:
111
113
120
126
127
128
133
139 mutable const Tensor* tensor_depend[N_TENSOR_DEPEND] ;
140
141 // Constructors - Destructor
142 // -------------------------
143 public:
149 explicit Metric(const Sym_tensor& tens) ;
150
151 Metric(const Metric& met) ;
152
154 Metric(const Map&, FILE* ) ;
155
156 protected:
158 explicit Metric(const Map& mpi) ;
159
160 public:
161 virtual ~Metric() ;
162
163
164 // Memory management
165 // -----------------
166 protected:
168 void del_deriv() const ;
169
171 void set_der_0x0() const ;
172
178 void del_tensor_depend() const ;
179
181 void set_tensor_depend_0x0() const ;
182
183
184 // Mutators / assignment
185 // ---------------------
186 public:
188 void operator=(const Metric& met) ;
189
196 virtual void operator=(const Sym_tensor& tens) ;
197
198 // Accessors
199 // ---------
200 public:
202 const Map& get_mp() const {return *mp ; } ;
203
205 virtual const Sym_tensor& cov() const ;
206
208 virtual const Sym_tensor& con() const ;
209
211 virtual const Connection& connect() const ;
212
216 const Sym_tensor& ricci() const ;
217
219 virtual const Scalar& ricci_scal() const ;
220
225 virtual const Vector& radial_vect() const ;
226
227
234 virtual const Scalar& determinant() const ;
235
236
237
238
239
240 // Outputs
241 // -------
242 public:
243 virtual void sauve(FILE *) const ;
244
246 friend ostream& operator<<(ostream& , const Metric& ) ;
247
248 protected:
250 virtual ostream& operator>>(ostream& ) const ;
251
252
253 friend class Tensor ;
254
255};
256
261class Metric_flat: public Metric {
262
263 // Data :
264 // -----
265 protected:
266
270 const Base_vect* triad ;
271
272 // Constructors - Destructor
273 // -------------------------
274 public:
279 Metric_flat(const Map&, const Base_vect& ) ;
280
281 Metric_flat(const Metric_flat& ) ;
282
284 Metric_flat(const Map&, FILE* ) ;
285
286 public:
287 virtual ~Metric_flat() ;
288
289
290 // Mutators / assignment
291 // ---------------------
292 public:
294 void operator=(const Metric_flat&) ;
295
300 virtual void operator=(const Sym_tensor& tens) ;
301
302
303 // Accessors
304 // ---------
305 public:
309 const Base_vect* get_triad() const {return triad;} ;
310
312 virtual const Sym_tensor& cov() const ;
313
315 virtual const Sym_tensor& con() const ;
316
318 virtual const Connection& connect() const ;
319
321 virtual const Scalar& ricci_scal() const ;
322
329 virtual const Scalar& determinant() const ;
330
331
332 // Outputs
333 // -------
334 public:
335 virtual void sauve(FILE *) const ;
336
337 protected:
339 virtual ostream& operator>>(ostream& ) const ;
340
341
342};
343
344
345
346}
347#endif
Vectorial bases (triads) with respect to which the tensorial components are defined.
Definition base_vect.h:105
Class Connection.
Definition connection.h:113
Base class for coordinate mappings.
Definition map.h:670
Flat metric for tensor calculation.
Definition metric.h:261
virtual const Connection & connect() const
Returns the connection.
virtual ~Metric_flat()
Destructor.
virtual const Scalar & ricci_scal() const
Returns the Ricci scalar.
const Base_vect * get_triad() const
Returns the vectorial basis (triad) on which the metric is defined.
Definition metric.h:309
virtual const Sym_tensor & con() const
Read-only access to the contravariant representation.
virtual const Sym_tensor & cov() const
Read-only access to the covariant representation.
virtual void sauve(FILE *) const
Save in a file.
void operator=(const Metric_flat &)
Assignment to another Metric_flat.
const Base_vect * triad
Vectorial basis (triad) with respect to which the components of the flat metric are defined.
Definition metric.h:270
virtual ostream & operator>>(ostream &) const
Operator >> (virtual function called by the operator <<).
virtual const Scalar & determinant() const
Returns the determinant.
Metric for tensor calculation.
Definition metric.h:90
void del_tensor_depend() const
Deletes all the derivative members of the Tensor contained in tensor_depend .
Definition metric.C:197
void del_deriv() const
Deletes all the derived quantities.
Definition metric.C:176
virtual ~Metric()
Destructor.
Definition metric.C:160
virtual const Sym_tensor & con() const
Read-only access to the contravariant representation.
Definition metric.C:290
virtual const Vector & radial_vect() const
Returns the radial vector normal to a spherical slicing and pointing toward spatial infinity.
Definition metric.C:362
const Map *const mp
Reference mapping.
Definition metric.h:95
const Map & get_mp() const
Returns the mapping.
Definition metric.h:202
virtual const Sym_tensor & cov() const
Read-only access to the covariant representation.
Definition metric.C:280
void set_tensor_depend_0x0() const
Sets all elements of tensor_depend to 0x0.
Definition metric.C:208
void set_der_0x0() const
Sets to 0x0 all the pointers on derived quantities.
Definition metric.C:188
const Sym_tensor & ricci() const
Returns the Ricci tensor (given by the Connection p_connect )
Definition metric.C:338
friend ostream & operator<<(ostream &, const Metric &)
Display.
Definition metric.C:439
Sym_tensor * p_met_con
Pointer on the covariant representation.
Definition metric.h:105
Vector * p_radial_vect
Pointer to the radial vector normal to a spherical slicing and pointing toward spatial infinity.
Definition metric.h:125
virtual const Connection & connect() const
Returns the connection.
Definition metric.C:301
virtual const Scalar & determinant() const
Returns the determinant.
Definition metric.C:392
Sym_tensor * p_met_cov
Pointer on the contravariant representation.
Definition metric.h:100
virtual ostream & operator>>(ostream &) const
Operator >> (virtual function called by the operator <<).
Definition metric.C:446
Scalar * p_determinant
Pointer on the determinant.
Definition metric.h:132
virtual const Scalar & ricci_scal() const
Returns the Ricci scalar.
Definition metric.C:350
void operator=(const Metric &met)
Assignment to another Metric.
Definition metric.C:220
virtual void sauve(FILE *) const
Save in a file.
Definition metric.C:414
const Tensor * tensor_depend[N_TENSOR_DEPEND]
Pointer on the dependancies, that means the array contains pointers on all the Tensor whom derivative...
Definition metric.h:139
Scalar * p_ricci_scal
Pointer on the Ricci scalar.
Definition metric.h:119
Connection * p_connect
Connection associated with the metric.
Definition metric.h:112
Tensor field of valence 0 (or component of a tensorial field).
Definition scalar.h:387
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