Tenseur Class Reference
[Old tensorial fields ( Deprecated)]

Tensor handling *** DEPRECATED : use class Tensor instead ***. More...

#include <tenseur.h>

Inheritance diagram for Tenseur:
Tenseur_sym

List of all members.

Public Member Functions

 Tenseur (const Map &map, const Metrique *met=0x0, double weight=0)
 Constructor for a scalar field.
 Tenseur (const Cmp &cmp, const Metrique *met=0x0, double weight=0)
 Constructor for a scalar field and from a Cmp .
 Tenseur (const Map &map, int val, const Itbl &tipe, const Base_vect &triad_i, const Metrique *met=0x0, double weight=0)
 Standard constructor.
 Tenseur (const Map &map, int val, const Itbl &tipe, const Base_vect *triad_i, const Metrique *met=0x0, double weight=0)
 Standard constructor with the triad passed as a pointer.
 Tenseur (const Map &map, int val, int tipe, const Base_vect &triad_i, const Metrique *met=0x0, double weight=0)
 Standard constructor when all the indices are of the same type.
 Tenseur (const Tenseur &)
 Copy constructor.
 Tenseur (const Tenseur_sym &)
 Constructor from a symmetric tensor.
 Tenseur (const Map &map, const Base_vect &triad_i, FILE *fich, const Metrique *met=0x0)
 Constructor from a file (see sauve(FILE*) ).
 Tenseur (const Map &map, FILE *fich, const Metrique *met=0x0)
 Constructor from a file for a scalar field (see sauve(FILE*) ).
virtual ~Tenseur ()
 Destructor.
void set_etat_nondef ()
 Sets the logical state to ETATNONDEF (undefined state).
void set_etat_zero ()
 Sets the logical state to ETATZERO (zero state).
void set_etat_qcq ()
 Sets the logical state to ETATQCQ (ordinary state).
void allocate_all ()
 Sets the logical state to ETATQCQ (ordinary state) and performs the memory allocation of all the elements, down to the double arrays of the Tbl s.
void change_triad (const Base_vect &new_triad)
 Sets a new vectorial basis (triad) of decomposition and modifies the components accordingly.
void set_triad (const Base_vect &new_triad)
 Assigns a new vectorial basis (triad) of decomposition.
void set_poids (double weight)
 Sets the weight for a tensor density.
void set_metric (const Metrique &met)
 Sets the pointer on the metric for a tensor density.
virtual void operator= (const Tenseur &tens)
 Assignment to another Tenseur.
void operator= (const Cmp &field)
 Assignment to a Cmp (scalar field only).
void operator= (double)
 Assignment to a double (scalar field only, except for zero).
void operator= (int)
 Assignment to a int (scalar field only, except for zero).
Cmpset ()
 Read/write for a scalar (see also operator=(const Cmp&) ).
Cmpset (int)
 Read/write for a vector.
Cmpset (int, int)
 Read/write for a tensor of valence 2.
Cmpset (int, int, int)
 Read/write for a tensor of valence 3.
Cmpset (const Itbl &)
 Read/write in the general case.
void annule (int l)
 Sets the Tenseur to zero in a given domain.
void annule (int l_min, int l_max)
 Sets the Tenseur to zero in several domains.
void set_std_base ()
 Set the standard spectal basis of decomposition for each component.
void dec_dzpuis ()
 dzpuis -= 1 ;
void inc_dzpuis ()
 dzpuis += 1 ;
void dec2_dzpuis ()
 dzpuis -= 2 ;
void inc2_dzpuis ()
 dzpuis += 2 ;
void mult_r_zec ()
 Multiplication by r in the external zone.
Tenseur inverse_poisson_vect (double lambda) const
 Compute $\Delta + \lambda \nabla\nabla$ of *this , *this being of valence 1.
virtual int donne_place (const Itbl &idx) const
 Returns the position in the Cmp 1-D array c of a component given by its indices.
virtual Itbl donne_indices (int place) const
 Returns the indices of a component given by its position in the Cmp 1-D array c .
const Mapget_mp () const
 Returns pointer on the mapping.
const Base_vectget_triad () const
 Returns the vectorial basis (triad) on which the components are defined.
int get_etat () const
 Returns the logical state.
int get_valence () const
 Returns the valence.
int get_n_comp () const
 Returns the number of components.
int get_type_indice (int i) const
 Returns the type of the index number i .
Itbl get_type_indice () const
 Returns the types of all the indices.
double get_poids () const
 Returns the weight.
const Metrique * get_metric () const
 Returns a pointer on the metric defining the conformal factor for tensor densities.
const Cmpoperator() () const
 Read only for a scalar.
const Cmpoperator() (int) const
 Read only for a vector.
const Cmpoperator() (int, int) const
 Read only for a tensor of valence 2.
const Cmpoperator() (int, int, int) const
 Read only for a tensor of valence 3.
const Cmpoperator() (const Itbl &) const
 Read only in the general case.
void sauve (FILE *) const
 Save in a file.
const Tenseurgradient () const
 Returns the gradient of *this (Cartesian coordinates).
const Tenseurgradient_spher () const
 Returns the gradient of *this (Spherical coordinates) (scalar field only).
const Tenseurderive_cov (const Metrique &met) const
 Returns the covariant derivative of *this , with respect to met .
const Tenseurderive_con (const Metrique &) const
 Returns the contravariant derivative of *this , with respect to met .
const Tenseurcarre_scal (const Metrique &) const
 Returns the scalar square of *this , with respect to met .
void poisson_vect (double lambda, Param &par, Tenseur &shift, Tenseur &vect, Tenseur &scal) const
 Solves the vectorial Poisson equation : $\Delta N^i +\lambda \nabla^i \nabla_k N^k = S^i$.
void poisson_vect_tau (double lambda, Param &par, Tenseur &shift, Tenseur &vect, Tenseur &scal) const
void poisson_vect_falloff (double lambda, Param &par, Tenseur &shift, Tenseur &vect, Tenseur &scal, int *k_falloff) const
void poisson_vect_ylm (double lambda, Param &para, Tenseur &shift, Tenseur &vecteur, Tenseur &scalaire, int nylm, double *intvec) const
Tenseur poisson_vect (double lambda, Tenseur &vect, Tenseur &scal) const
 Solves the vectorial Poisson equation $\Delta N^i +\lambda \nabla^i \nabla_k N^k = S^i$.
Tenseur poisson_vect_tau (double lambda, Tenseur &vect, Tenseur &scal) const
Tenseur poisson_vect_falloff (double lambda, Tenseur &vect, Tenseur &scal, int *k_falloff) const
Tenseur poisson_vect_ylm (double lambda, Tenseur &vecteur, Tenseur &scalaire, int nylm, double *intvec) const
void poisson_vect_oohara (double lambda, Param &par, Tenseur &shift, Tenseur &scal) const
 Solves the vectorial Poisson equation $\Delta N^i +\lambda \nabla^i \nabla_k N^k = S^i$.
void poisson_vect_oohara_tau (double lambda, Param &par, Tenseur &shift, Tenseur &scal) const
Tenseur poisson_vect_oohara (double lambda, Tenseur &scal) const
 Solves the vectorial Poisson equation $\Delta N^i +\lambda \nabla^i \nabla_k N^k = S^i$.
Tenseur poisson_vect_oohara_tau (double lambda, Tenseur &scal) const
void poisson_vect_regu (int k_div, int nzet, double unsgam1, double lambda, Param &par, Tenseur &shift, Tenseur &vect, Tenseur &scal) const
 Solves the vectorial Poisson equation : $\Delta N^i +\lambda \nabla^i \nabla_k N^k = S^i$.
void compare (const Tenseur &tens, const char *name)
 Functions to compare the values of tensors.
void compare (FILE *fich, const char *name_i)

Protected Member Functions

bool verif () const
 Returns false for a tensor density without a defined metric.
void new_der_met ()
 Builds the arrays met_depend , p_derive_cov , p_derive_con and p_carre_scal and fills them with null pointers.
 Tenseur (const Map &map, int val, const Itbl &tipe, int n_comp, const Base_vect &triad_i, const Metrique *met=0x0, double weight=0)
 Constructor used by the derived classes.
 Tenseur (const Map &, int val, int tipe, int n_comp, const Base_vect &triad_i, const Metrique *met=0x0, double weight=0)
 Constructor used by the derived classes when all the indices are of the same type.
void del_t ()
 Logical destructor.
void del_derive_met (int i) const
 Logical destructor of the derivatives depending on the i-th element of *met_depend .
void del_derive () const
 Logical destructor of all the derivatives.
void set_der_met_0x0 (int i) const
 Sets the pointers of the derivatives depending on the i-th element of *met_depend to zero (as well as that i-th element).
void set_der_0x0 () const
 Sets the pointers of all the derivatives to zero.
virtual void fait_gradient () const
 Calculates, if needed, the gradient of *this .
void fait_gradient_spher () const
 Calculates, if needed, the gradient of *this in a spherical orthonormal basis (scalar field only).
virtual void fait_derive_cov (const Metrique &met, int i) const
 Calculates, if needed, the covariant derivative of *this , with respect to met .
virtual void fait_derive_con (const Metrique &, int i) const
 Calculates, if needed, the contravariant derivative of *this , with respect to met .
void fait_carre_scal (const Metrique &, int i) const
 Calculates, if needed, the scalar square of *this , with respect to met .
void set_dependance (const Metrique &met) const
 To be used to describe the fact that the derivatives members have been calculated with met .
int get_place_met (const Metrique &metre) const
 Returns the position of the pointer on metre in the array met_depend .

Protected Attributes

const Map *const mp
 Reference mapping.
int valence
 Valence.
const Base_vecttriad
 Vectorial basis (triad) with respect to which the tensor components are defined.
Itbl type_indice
 Array of size valence contening the type of each index, COV for a covariant one and CON for a contravariant one.
int n_comp
 Number of components, depending on the symmetry.
int etat
 Logical state ETATZERO , ETATQCQ or ETATNONDEF.
Cmp ** c
 The components.
double poids
 For tensor densities: the weight.
const Metrique * metric
 For tensor densities: the metric defining the conformal factor.
const Metrique ** met_depend
 Array of pointers on the Metrique 's used to calculate derivatives members.
Tenseurp_gradient
 Pointer on the gradient of *this .
Tenseurp_gradient_spher
 Pointer on the gradient of *this in a spherical orthonormal basis (scalar field only).
Tenseur ** p_derive_cov
 Array of pointers on the covariant derivatives of *this with respect to the corresponding metric in *met_depend .
Tenseur ** p_derive_con
 Array of pointers on the contravariant derivatives of *this with respect to the corresponding metric in *met_depend .
Tenseur ** p_carre_scal
 Array of pointers on the scalar squares of *this with respect to the corresponding metric in *met_depend .

Friends

class Tenseur_sym
class Metrique
ostream & operator<< (ostream &, const Tenseur &)
Tenseur operator* (const Tenseur &, const Tenseur &)
Tenseur operator% (const Tenseur &, const Tenseur &)
Tenseur contract (const Tenseur &, int id1, int id2)
Tenseur contract (const Tenseur &, int id1, const Tenseur &, int id2)
Tenseur contract_desal (const Tenseur &, int id1, const Tenseur &, int id2)
Tenseur flat_scalar_prod (const Tenseur &t1, const Tenseur &t2)
Tenseur flat_scalar_prod_desal (const Tenseur &t1, const Tenseur &t2)
Tenseur manipule (const Tenseur &, const Metrique &, int idx)
Tenseur manipule (const Tenseur &, const Metrique &)
Tenseur skxk (const Tenseur &)
Tenseur lie_derive (const Tenseur &, const Tenseur &, const Metrique *)

Detailed Description

Tensor handling *** DEPRECATED : use class Tensor instead ***.

()

This class is intended to store the components of a tensorial field in a specific basis. Tensor densities can also be stored. A tensor density $\tau^{i_1\ldots i_p}_{j_1\ldots j_q}$ is defined by: $ \tau^{i_1\ldots i_p}_{j_1\ldots j_q} = \gamma^{\frac{n}{2}} T^{i_1\ldots i_p}_{j_1\ldots j_q}$ where T is a q -covariant p -contravariant tensor and $\gamma$ is the determinant of the used 3-metric. n is called the weight of the tensor density.

All this is 3D meaning that the indices go from 0 to 2. Moreover, the components are described in orthonormal bases.

When first constructed, the memory for each component is not allocated.

Definition at line 294 of file tenseur.h.


Constructor & Destructor Documentation

Tenseur::Tenseur ( const Map map,
const Metrique *  met = 0x0,
double  weight = 0 
) [explicit]

Constructor for a scalar field.

Definition at line 204 of file tenseur.C.

References c, n_comp, and new_der_met().

Tenseur::Tenseur ( const Cmp cmp,
const Metrique *  met = 0x0,
double  weight = 0 
) [explicit]

Constructor for a scalar field and from a Cmp .

Definition at line 219 of file tenseur.C.

References c, Cmp::get_etat(), n_comp, new_der_met(), and verif().

Tenseur::Tenseur ( const Map map,
int  val,
const Itbl tipe,
const Base_vect triad_i,
const Metrique *  met = 0x0,
double  weight = 0 
)

Standard constructor.

Parameters:
map the mapping
val valence of the tensor
tipe 1-D Itbl of size valence containing the type of each index, COV for a covariant one and CON for a contravariant one, with the following storage convention:

  • tipe(0) : type of the first index
  • tipe(1) : type of the second index
  • and so on...
triad_i vectorial basis (triad) with respect to which the tensor components are defined
met for tensor densities only: a pointer on the metric defining the conformal factor
weight for tensor densities: the weight

Definition at line 241 of file tenseur.C.

References c, Itbl::get_dim(), Itbl::get_ndim(), n_comp, new_der_met(), valence, and verif().

Tenseur::Tenseur ( const Map map,
int  val,
const Itbl tipe,
const Base_vect triad_i,
const Metrique *  met = 0x0,
double  weight = 0 
)

Standard constructor with the triad passed as a pointer.

Parameters:
map the mapping
val valence of the tensor
tipe 1-D Itbl of size valence containing the type of each index, COV for a covariant one and CON for a contravariant one, with the following storage convention:

  • tipe(0) : type of the first index
  • tipe(1) : type of the second index
  • and so on...
triad_i pointer on the vectorial basis (triad) with respect to which the tensor components are defined (can be set to 0x0 for a scalar field)
met for tensor densities only: a pointer on the metric defining the conformal factor
weight for tensor densities: the weight

Definition at line 263 of file tenseur.C.

References c, Itbl::get_dim(), Itbl::get_ndim(), n_comp, new_der_met(), triad, and valence.

Tenseur::Tenseur ( const Map map,
int  val,
int  tipe,
const Base_vect triad_i,
const Metrique *  met = 0x0,
double  weight = 0 
)

Standard constructor when all the indices are of the same type.

Parameters:
map the mapping
val valence of the tensor
tipe the type of the indices.
triad_i vectorial basis (triad) with respect to which the tensor components are defined.
met for tensor densities only: a pointer on the metric defining the conformal factor
weight for tensor densities: the weight

Definition at line 292 of file tenseur.C.

References c, n_comp, new_der_met(), Itbl::set_etat_qcq(), type_indice, valence, and verif().

Tenseur::Tenseur ( const Tenseur source  ) 
Tenseur::Tenseur ( const Tenseur_sym source  )  [explicit]
Tenseur::Tenseur ( const Map map,
const Base_vect triad_i,
FILE *  fich,
const Metrique *  met = 0x0 
)

Constructor from a file (see sauve(FILE*) ).

Parameters:
map the mapping
triad_i vectorial basis (triad) with respect to which the tensor components are defined. It will be checked that it coincides with the basis saved in the file.
fich file which has been created by the function sauve(FILE*) .
met for tensor densities only: a pointer on the metric defining the conformal factor

Definition at line 406 of file tenseur.C.

References Base_vect::bvect_from_file(), c, etat, fread_be(), Map::get_mg(), mp, n_comp, new_der_met(), poids, triad, and valence.

Tenseur::Tenseur ( const Map map,
FILE *  fich,
const Metrique *  met = 0x0 
)

Constructor from a file for a scalar field (see sauve(FILE*) ).

Parameters:
map the mapping
fich file which has been created by the function sauve(FILE*) .
met for tensor densities only: a pointer on the metric defining the conformal factor

Definition at line 443 of file tenseur.C.

References c, etat, fread_be(), Map::get_mg(), mp, n_comp, new_der_met(), poids, triad, and valence.

Tenseur::Tenseur ( const Map map,
int  val,
const Itbl tipe,
int  n_comp,
const Base_vect triad_i,
const Metrique *  met = 0x0,
double  weight = 0 
) [protected]

Constructor used by the derived classes.

Parameters:
map the mapping
val valence of the tensor
tipe 1-D Itbl of size valence containing the type of each index, COV for a covariant one and CON for a contravariant one, with the following storage convention:

  • tipe(0) : type of the first index
  • tipe(1) : type of the second index
  • and so on...
n_comp the number of components.
triad_i vectorial basis (triad) with respect to which the tensor components are defined
met for tensor densities only: a pointer on the metric defining the conformal factor
weight for tensor densities: the weight

Definition at line 480 of file tenseur.C.

References c, Itbl::get_dim(), Itbl::get_ndim(), n_comp, new_der_met(), and valence.

Tenseur::Tenseur ( const Map map,
int  val,
int  tipe,
int  n_comp,
const Base_vect triad_i,
const Metrique *  met = 0x0,
double  weight = 0 
) [protected]

Constructor used by the derived classes when all the indices are of the same type.

Parameters:
map the mapping
val valence of the tensor
tipe the type of the indices.
n_comp the number of components.
triad_i vectorial basis (triad) with respect to which the tensor components are defined
met for tensor densities only: a pointer on the metric defining the conformal factor
weight for tensor densities: the weight

Definition at line 504 of file tenseur.C.

References c, n_comp, new_der_met(), Itbl::set_etat_qcq(), type_indice, and valence.

Tenseur::~Tenseur (  )  [virtual]

Destructor.

Definition at line 528 of file tenseur.C.

References c, del_t(), met_depend, p_carre_scal, p_derive_con, and p_derive_cov.


Member Function Documentation

void Tenseur::allocate_all (  ) 

Sets the logical state to ETATQCQ (ordinary state) and performs the memory allocation of all the elements, down to the double arrays of the Tbl s.

This function performs in fact recursive calls to set_etat_qcq() on each element of the chain Tenseur -> Cmp -> Valeur -> Mtbl -> Tbl .

Definition at line 652 of file tenseur.C.

References Cmp::allocate_all(), c, n_comp, and set_etat_qcq().

void Tenseur::annule ( int  l_min,
int  l_max 
)

Sets the Tenseur to zero in several domains.

Parameters:
l_min [input] The Tenseur will be set (logically) to zero in the domains whose indices are in the range [l_min,l_max] .
l_max [input] see the comments for l_min .

Note that annule(0,nz-1), where nz is the total number of domains, is equivalent to set_etat_zero() .

Definition at line 900 of file tenseur.C.

References annule(), Cmp::annule(), c, etat, Map::get_mg(), Mg3d::get_nzone(), mp, n_comp, p_carre_scal, p_derive_con, p_derive_cov, p_gradient, p_gradient_spher, and set_etat_zero().

void Tenseur::annule ( int  l  ) 

Sets the Tenseur to zero in a given domain.

Parameters:
l [input] Index of the domain in which the Tenseur will be set (logically) to zero.

Definition at line 895 of file tenseur.C.

const Tenseur & Tenseur::carre_scal ( const Metrique &  metre  )  const

Returns the scalar square of *this , with respect to met .

Definition at line 1572 of file tenseur.C.

References fait_carre_scal(), get_place_met(), p_carre_scal, and set_dependance().

void Tenseur::change_triad ( const Base_vect new_triad  ) 

Sets a new vectorial basis (triad) of decomposition and modifies the components accordingly.

Definition at line 663 of file tenseur.C.

References Base_vect::change_basis().

void Tenseur::compare ( const Tenseur tens,
const char *  name 
)

Functions to compare the values of tensors.

Definition at line 53 of file tenseur_compare.C.

References Cmp::compare(), get_valence(), and valence.

void Tenseur::dec2_dzpuis (  ) 

dzpuis -= 2 ;

Definition at line 1125 of file tenseur.C.

References c, Cmp::dec2_dzpuis(), etat, and n_comp.

void Tenseur::dec_dzpuis (  ) 

dzpuis -= 1 ;

Definition at line 1099 of file tenseur.C.

References c, Cmp::dec_dzpuis(), etat, and n_comp.

void Tenseur::del_derive (  )  const [protected]

Logical destructor of all the derivatives.

Definition at line 568 of file tenseur.C.

References del_derive_met(), p_gradient, p_gradient_spher, and set_der_0x0().

void Tenseur::del_derive_met ( int  i  )  const [protected]

Logical destructor of the derivatives depending on the i-th element of *met_depend .

Definition at line 549 of file tenseur.C.

References met_depend, p_carre_scal, p_derive_con, p_derive_cov, and set_der_met_0x0().

void Tenseur::del_t (  )  [protected]

Logical destructor.

Definition at line 540 of file tenseur.C.

References c, del_derive(), and n_comp.

const Tenseur & Tenseur::derive_con ( const Metrique &  metre  )  const

Returns the contravariant derivative of *this , with respect to met .

Definition at line 1563 of file tenseur.C.

References fait_derive_con(), get_place_met(), p_derive_con, and set_dependance().

const Tenseur & Tenseur::derive_cov ( const Metrique &  met  )  const

Returns the covariant derivative of *this , with respect to met .

Definition at line 1549 of file tenseur.C.

References fait_derive_cov(), get_place_met(), gradient(), p_derive_cov, set_dependance(), and valence.

Itbl Tenseur::donne_indices ( int  place  )  const [virtual]

Returns the indices of a component given by its position in the Cmp 1-D array c .

Returns:
1-D array of integers (Itbl ) of size valence giving the value of each index for the component located at the position place in the Cmp 1-D array c . Each element of this Itbl is 0, 1 or 2, which corresponds to spatial indices 1, 2 or 3 respectively. If (*this) is a scalar the function returns an undefined Itbl .

Reimplemented in Tenseur_sym.

Definition at line 699 of file tenseur.C.

References n_comp, Itbl::set(), Itbl::set_etat_qcq(), and valence.

int Tenseur::donne_place ( const Itbl idx  )  const [virtual]

Returns the position in the Cmp 1-D array c of a component given by its indices.

Returns:
position in the Cmp 1-D array c corresponding to the indices given in idx . idx must be a 1-D Itbl of size valence , each element of which must be 0, 1 or 2, corresponding to spatial indices 1, 2 or 3 respectively.

Reimplemented in Tenseur_sym.

Definition at line 685 of file tenseur.C.

References Itbl::get_dim(), Itbl::get_ndim(), and valence.

void Tenseur::fait_carre_scal ( const Metrique &  met,
int  i 
) const [protected]

Calculates, if needed, the scalar square of *this , with respect to met .

The result is in *p_carre_scal[i]

Definition at line 1512 of file tenseur.C.

References p_carre_scal, Tenseur(), and valence.

void Tenseur::fait_derive_con ( const Metrique &  metre,
int  i 
) const [protected, virtual]

Calculates, if needed, the contravariant derivative of *this , with respect to met .

The result is in *p_derive_con[i]

Reimplemented in Tenseur_sym.

Definition at line 1494 of file tenseur.C.

References change_triad(), derive_cov(), gradient(), p_derive_con, Tenseur(), and valence.

void Tenseur::fait_derive_cov ( const Metrique &  met,
int  i 
) const [protected, virtual]

Calculates, if needed, the covariant derivative of *this , with respect to met .

The result is in *p_derive_cov[i]

Reimplemented in Tenseur_sym.

Definition at line 1424 of file tenseur.C.

References donne_indices(), etat, gradient(), n_comp, p_derive_cov, poids, set(), Itbl::set(), Itbl::set_etat_qcq(), Tenseur(), type_indice, and valence.

void Tenseur::fait_gradient (  )  const [protected, virtual]

Calculates, if needed, the gradient of *this .

The result is in *p_gradient

Reimplemented in Tenseur_sym.

Definition at line 1340 of file tenseur.C.

References donne_indices(), etat, Map::get_bvect_cart(), metric, mp, n_comp, p_gradient, poids, set(), Itbl::set(), set_etat_qcq(), Itbl::set_etat_qcq(), set_etat_zero(), Tenseur(), type_indice, and valence.

void Tenseur::fait_gradient_spher (  )  const [protected]

Calculates, if needed, the gradient of *this in a spherical orthonormal basis (scalar field only).

The result is in *p_gradient_spher

Definition at line 1387 of file tenseur.C.

References c, Cmp::dsdr(), etat, Map::get_bvect_spher(), metric, mp, p_gradient_spher, poids, set(), set_etat_qcq(), set_etat_zero(), Cmp::srdsdt(), Cmp::srstdsdp(), Tenseur(), and valence.

int Tenseur::get_etat (  )  const [inline]

Returns the logical state.

Definition at line 700 of file tenseur.h.

References etat.

const Metrique* Tenseur::get_metric (  )  const [inline]

Returns a pointer on the metric defining the conformal factor for tensor densities.

Otherwise (case of a pure tensor), it returns 0x0.

Definition at line 738 of file tenseur.h.

References metric.

const Map* Tenseur::get_mp (  )  const [inline]

Returns pointer on the mapping.

Definition at line 692 of file tenseur.h.

References mp.

int Tenseur::get_n_comp (  )  const [inline]

Returns the number of components.

Definition at line 706 of file tenseur.h.

References n_comp.

int Tenseur::get_place_met ( const Metrique &  metre  )  const [protected]

Returns the position of the pointer on metre in the array met_depend .

Definition at line 593 of file tenseur.C.

References met_depend.

double Tenseur::get_poids (  )  const [inline]

Returns the weight.

Definition at line 731 of file tenseur.h.

References poids.

const Base_vect* Tenseur::get_triad (  )  const [inline]

Returns the vectorial basis (triad) on which the components are defined.

Definition at line 697 of file tenseur.h.

References triad.

Itbl Tenseur::get_type_indice (  )  const [inline]

Returns the types of all the indices.

Returns:
1-D Itbl of size valence containing the type of each index, COV for a covariant one and CON for a contravariant one.

Definition at line 728 of file tenseur.h.

References type_indice.

int Tenseur::get_type_indice ( int  i  )  const [inline]

Returns the type of the index number i .

i must be strictly lower than valence and obey the following convention:

  • i = 0 : first index
  • i = 1 : second index
  • and so on...
Returns:
COV for a covariant index, CON for a contravariant one.

Definition at line 719 of file tenseur.h.

References type_indice.

int Tenseur::get_valence (  )  const [inline]

Returns the valence.

Definition at line 703 of file tenseur.h.

References valence.

const Tenseur & Tenseur::gradient (  )  const

Returns the gradient of *this (Cartesian coordinates).

Definition at line 1537 of file tenseur.C.

References fait_gradient(), and p_gradient.

const Tenseur & Tenseur::gradient_spher (  )  const

Returns the gradient of *this (Spherical coordinates) (scalar field only).

Definition at line 1543 of file tenseur.C.

References fait_gradient_spher(), and p_gradient_spher.

void Tenseur::inc2_dzpuis (  ) 

dzpuis += 2 ;

Definition at line 1138 of file tenseur.C.

References c, etat, Cmp::inc2_dzpuis(), and n_comp.

void Tenseur::inc_dzpuis (  ) 

dzpuis += 1 ;

Definition at line 1112 of file tenseur.C.

References c, etat, Cmp::inc_dzpuis(), and n_comp.

Tenseur Tenseur::inverse_poisson_vect ( double  lambda  )  const

Compute $\Delta + \lambda \nabla\nabla$ of *this , *this being of valence 1.

Definition at line 55 of file tenseur_inv_pois_vect.C.

References dec2_dzpuis(), etat, get_triad(), gradient(), metric, mp, poids, set(), set_etat_qcq(), and valence.

void Tenseur::mult_r_zec (  ) 

Multiplication by r in the external zone.

Definition at line 1151 of file tenseur.C.

References c, etat, Cmp::mult_r_zec(), and n_comp.

void Tenseur::new_der_met (  )  [protected]

Builds the arrays met_depend , p_derive_cov , p_derive_con and p_carre_scal and fills them with null pointers.

Definition at line 191 of file tenseur.C.

References met_depend, p_carre_scal, p_derive_con, p_derive_cov, and set_der_0x0().

const Cmp & Tenseur::operator() ( const Itbl indices  )  const

Read only in the general case.

Definition at line 1066 of file tenseur.C.

References c, Map::cmp_zero(), donne_place(), etat, Itbl::get_dim(), Itbl::get_ndim(), mp, and valence.

const Cmp & Tenseur::operator() ( int  indice1,
int  indice2,
int  indice3 
) const

Read only for a tensor of valence 3.

Definition at line 1029 of file tenseur.C.

References c, Map::cmp_zero(), donne_place(), etat, mp, Itbl::set(), Itbl::set_etat_qcq(), and valence.

const Cmp & Tenseur::operator() ( int  indice1,
int  indice2 
) const

Read only for a tensor of valence 2.

Definition at line 995 of file tenseur.C.

References c, Map::cmp_zero(), donne_place(), etat, mp, Itbl::set(), Itbl::set_etat_qcq(), and valence.

const Cmp & Tenseur::operator() ( int  indice  )  const

Read only for a vector.

Definition at line 967 of file tenseur.C.

References c, Map::cmp_zero(), etat, mp, and valence.

const Cmp & Tenseur::operator() (  )  const

Read only for a scalar.

Definition at line 938 of file tenseur.C.

References c, Map::cmp_zero(), etat, mp, and valence.

void Tenseur::operator= ( int  x  ) 

Assignment to a int (scalar field only, except for zero).

Definition at line 802 of file tenseur.C.

References c, metric, poids, set_etat_qcq(), set_etat_zero(), and valence.

void Tenseur::operator= ( double  x  ) 

Assignment to a double (scalar field only, except for zero).

Definition at line 787 of file tenseur.C.

References c, metric, poids, set_etat_qcq(), set_etat_zero(), and valence.

void Tenseur::operator= ( const Cmp field  ) 

Assignment to a Cmp (scalar field only).

Definition at line 756 of file tenseur.C.

References c, Cmp::get_etat(), metric, poids, set_etat_nondef(), set_etat_qcq(), set_etat_zero(), and valence.

void Tenseur::operator= ( const Tenseur tens  )  [virtual]

Assignment to another Tenseur.

Definition at line 713 of file tenseur.C.

References c, donne_indices(), donne_place(), etat, metric, n_comp, poids, set_etat_nondef(), set_etat_qcq(), set_etat_zero(), triad, type_indice, and valence.

Tenseur Tenseur::poisson_vect ( double  lambda,
Tenseur vect,
Tenseur scal 
) const

Solves the vectorial Poisson equation $\Delta N^i +\lambda \nabla^i \nabla_k N^k = S^i$.

with $\lambda \not= 1$.

*this must be given with dzpuis = 4.

It uses the Shibata scheme, where $N^i$ is given by :

\[ N^i = \frac{1}{2}\frac{\lambda+2}{\lambda+1}W^i-\frac{1}{2} \frac{\lambda}{\lambda+1}\left(\nabla^i\chi+\nabla^iW^kx_k\right) \]

with $\Delta W^i = S^i$ and $\Delta \chi = -x_kS^k$.

This version is to be used only with an affine mapping.

Parameters:
lambda [input] $\lambda$.
vect [input] $W^i$ at the previous step. Zero if nothing is known.
vect [output] $W^i$ at this step.
scal [input/output] the same thing than for shift but for $\chi$.
Returns:
the solution $N^i$.

Definition at line 196 of file tenseur_pde.C.

References metric, mp, poids, poisson_vect(), set_etat_qcq(), triad, type_indice, and valence.

void Tenseur::poisson_vect ( double  lambda,
Param par,
Tenseur shift,
Tenseur vect,
Tenseur scal 
) const

Solves the vectorial Poisson equation : $\Delta N^i +\lambda \nabla^i \nabla_k N^k = S^i$.

with $\lambda \not= 1$.

*this must be given with dzpuis = 4.

It uses the Shibata scheme, where $N^i$ is given by :

\[ N^i = \frac{1}{2}\frac{\lambda+2}{\lambda+1}W^i-\frac{1}{2} \frac{\lambda}{\lambda+1}\left(\nabla^i\chi+\nabla^iW^kx_k\right) \]

with $\Delta W^i = S^i$ and $\Delta \chi = -x_kS^k$.

Parameters:
lambda [input] $\lambda$.
par [input/output] see Map::donne_para_poisson_vect.
shift [input] solution $N^i$ at the previous step. Zero if nothing is known.
shift [output] solution at this step.
vect [input/output] the same thing than for shift but for $W^i$.
scal [input/output] the same thing than for shift but for $\chi$.

Definition at line 114 of file tenseur_pde.C.

References dec_dzpuis(), Map::donne_para_poisson_vect(), etat, get_type_indice(), get_valence(), gradient(), mp, set(), set_etat_qcq(), set_etat_zero(), set_triad(), triad, type_indice, and valence.

Tenseur Tenseur::poisson_vect_oohara ( double  lambda,
Tenseur scal 
) const

Solves the vectorial Poisson equation $\Delta N^i +\lambda \nabla^i \nabla_k N^k = S^i$.

with $\lambda \not= 1$.

*this must be given with dzpuis = 3 or 4 and be continuous.

This version is to be used only with an affine mapping.

It uses the Oohara scheme, where $N^i$ is given by :

\[ \Delta N^i = S^i-\lambda \nabla^i \chi \]

with $\chi$ solution of :

\[ \Delta \chi = \frac{1}{\lambda+1}\nabla_k S^k \]

This version is to be used only with an affine mapping.

Parameters:
lambda [input] $\lambda$.
scal [input]$\chi$ at the previous step. Zero if nothing is known.
scal [output] $\chi$ at this step.
Returns:
the solution $N^i$.

Definition at line 286 of file tenseur_pde.C.

References metric, mp, poids, poisson_vect_oohara(), set_etat_qcq(), triad, type_indice, and valence.

void Tenseur::poisson_vect_oohara ( double  lambda,
Param par,
Tenseur shift,
Tenseur scal 
) const

Solves the vectorial Poisson equation $\Delta N^i +\lambda \nabla^i \nabla_k N^k = S^i$.

with $\lambda \not= 1$.

*this must be given with dzpuis = 3 or 4 and be continuous.

It uses the Oohara scheme, where $N^i$ is given by

\[ \Delta N^i = S^i-\lambda \nabla^i \chi \]

with $\chi$ solution of :

\[ \Delta \chi = \frac{1}{\lambda+1}\nabla_k S^k \]

Parameters:
lambda [input] $\lambda$.
par [input/output] see Map::donne_para_poisson_vect.
shift [input] solution $N^i$ at the previous step. Zero if nothing is known.
shift [output] solution at this step.
scal [input/output] the same thing than for shift but for $\chi$.

Definition at line 214 of file tenseur_pde.C.

References dec2_dzpuis(), dec_dzpuis(), Map::donne_para_poisson_vect(), etat, get_etat(), get_triad(), get_type_indice(), get_valence(), gradient(), mp, set(), set_etat_qcq(), set_etat_zero(), set_triad(), triad, type_indice, and valence.

void Tenseur::poisson_vect_regu ( int  k_div,
int  nzet,
double  unsgam1,
double  lambda,
Param par,
Tenseur shift,
Tenseur vect,
Tenseur scal 
) const

Solves the vectorial Poisson equation : $\Delta N^i +\lambda \nabla^i \nabla_k N^k = S^i$.

with $\lambda \not= 1$ by regularizing the source term.

*this must be given with dzpuis = 4.

It uses the Shibata scheme, where $N^i$ is given by :

\[ N^i = \frac{1}{2}\frac{\lambda+2}{\lambda+1}W^i-\frac{1}{2} \frac{\lambda}{\lambda+1}\left(\nabla^i\chi+\nabla^iW^kx_k\right) \]

with $\Delta W^i = S^i$ and $\Delta \chi = -x_kS^k$.

Parameters:
k_div [input] regularization degree.
nzet [input] number of domains covering a star.
unsgam1 [input] $1/(\gamma - 1)$.
lambda [input] $\lambda$.
par [input/output] see Map::donne_para_poisson_vect.
shift [input] solution $N^i$ at the previous step. Zero if nothing is known.
shift [output] solution at this step.
vect [input/output] the same thing than for shift but for $W^i$.
scal [input/output] the same thing than for shift but for $\chi$.

Definition at line 67 of file tenseur_pde_regu.C.

References dec_dzpuis(), Map::donne_para_poisson_vect(), etat, Map::get_bvect_cart(), get_type_indice(), get_valence(), gradient(), metric, mp, poids, Tbl::set(), Cmp::set(), set(), Cmp::set_etat_qcq(), set_etat_qcq(), set_etat_zero(), set_triad(), Cmp::std_base_scal(), triad, type_indice, and valence.

void Tenseur::sauve ( FILE *  fd  )  const

Save in a file.

Definition at line 1320 of file tenseur.C.

References c, etat, fwrite_be(), n_comp, poids, Base_vect::sauve(), Itbl::sauve(), triad, type_indice, and valence.

Cmp & Tenseur::set ( const Itbl indices  ) 

Read/write in the general case.

Definition at line 879 of file tenseur.C.

References c, del_derive(), donne_place(), etat, Itbl::get_dim(), Itbl::get_ndim(), and valence.

Cmp & Tenseur::set ( int  ind1,
int  ind2,
int  ind3 
)

Read/write for a tensor of valence 3.

Definition at line 859 of file tenseur.C.

References c, del_derive(), donne_place(), etat, Itbl::set(), Itbl::set_etat_qcq(), and valence.

Cmp & Tenseur::set ( int  ind1,
int  ind2 
)

Read/write for a tensor of valence 2.

Definition at line 840 of file tenseur.C.

References c, del_derive(), donne_place(), etat, Itbl::set(), Itbl::set_etat_qcq(), and valence.

Cmp & Tenseur::set ( int  ind  ) 

Read/write for a vector.

Definition at line 829 of file tenseur.C.

References c, del_derive(), etat, and valence.

Cmp & Tenseur::set (  ) 

Read/write for a scalar (see also operator=(const Cmp&) ).

Definition at line 819 of file tenseur.C.

References c, del_derive(), etat, and valence.

void Tenseur::set_dependance ( const Metrique &  met  )  const [protected]

To be used to describe the fact that the derivatives members have been calculated with met .

First it sets a null element of met_depend to &met and puts this in the list of the dependancies of met .

Definition at line 603 of file tenseur.C.

References met_depend.

void Tenseur::set_der_0x0 (  )  const [protected]

Sets the pointers of all the derivatives to zero.

Definition at line 586 of file tenseur.C.

References p_gradient, p_gradient_spher, and set_der_met_0x0().

void Tenseur::set_der_met_0x0 ( int  i  )  const [protected]

Sets the pointers of the derivatives depending on the i-th element of *met_depend to zero (as well as that i-th element).

Definition at line 578 of file tenseur.C.

References met_depend, p_carre_scal, p_derive_con, and p_derive_cov.

void Tenseur::set_etat_nondef (  ) 

Sets the logical state to ETATNONDEF (undefined state).

The components are not allocated.

Definition at line 645 of file tenseur.C.

References del_t(), and etat.

void Tenseur::set_etat_qcq (  ) 

Sets the logical state to ETATQCQ (ordinary state).

The components are now allocated and set to ETATNONDEF .

Definition at line 631 of file tenseur.C.

References c, del_derive(), etat, mp, and n_comp.

void Tenseur::set_etat_zero (  ) 

Sets the logical state to ETATZERO (zero state).

The components are not allocated.

Definition at line 640 of file tenseur.C.

References del_t(), and etat.

void Tenseur::set_metric ( const Metrique &  met  ) 

Sets the pointer on the metric for a tensor density.

Definition at line 680 of file tenseur.C.

References metric.

void Tenseur::set_poids ( double  weight  ) 

Sets the weight for a tensor density.

Definition at line 675 of file tenseur.C.

References poids.

void Tenseur::set_std_base (  ) 

Set the standard spectal basis of decomposition for each component.

To be used only with valence strictly lower than 3.

Definition at line 1165 of file tenseur.C.

References c, donne_indices(), etat, Map::get_bvect_cart(), Map::get_bvect_spher(), Map::get_mg(), Base_vect::identify(), mp, n_comp, Itbl::set_etat_qcq(), Cmp::std_base_scal(), Mg3d::std_base_vect_cart(), Mg3d::std_base_vect_spher(), triad, Cmp::va, and valence.

void Tenseur::set_triad ( const Base_vect new_triad  ) 

Assigns a new vectorial basis (triad) of decomposition.

NB: this function modifies only the member triad and leave unchanged the components (member c ). In order to change them coherently with the new basis, the function change_triad(const Base_vect&) must be called instead.

Definition at line 669 of file tenseur.C.

References triad.

bool Tenseur::verif (  )  const [protected]

Returns false for a tensor density without a defined metric.

Definition at line 187 of file tenseur.C.

References metric, and poids.


Member Data Documentation

Cmp** Tenseur::c [protected]

The components.

Definition at line 315 of file tenseur.h.

int Tenseur::etat [protected]

Logical state ETATZERO , ETATQCQ or ETATNONDEF.

Definition at line 314 of file tenseur.h.

const Metrique** Tenseur::met_depend [protected]

Array of pointers on the Metrique 's used to calculate derivatives members.

If no such member has been calculated the pointer is set to zero. The array has the size N_MET_MAX abd the i-th corresponds to the i-th ones in p_derive_cov and p_derive_con.

Definition at line 330 of file tenseur.h.

const Metrique* Tenseur::metric [protected]

For tensor densities: the metric defining the conformal factor.

Definition at line 318 of file tenseur.h.

const Map* const Tenseur::mp [protected]

Reference mapping.

Definition at line 299 of file tenseur.h.

int Tenseur::n_comp [protected]

Number of components, depending on the symmetry.

Definition at line 313 of file tenseur.h.

Array of pointers on the scalar squares of *this with respect to the corresponding metric in *met_depend .

It is set to zero if it has not been calculated yet.

Definition at line 365 of file tenseur.h.

Array of pointers on the contravariant derivatives of *this with respect to the corresponding metric in *met_depend .

It is set to zero if it has not been calculated yet.

Definition at line 358 of file tenseur.h.

Array of pointers on the covariant derivatives of *this with respect to the corresponding metric in *met_depend .

It is set to zero if it has not been calculated yet, or for a scalar field.

Definition at line 351 of file tenseur.h.

Tenseur* Tenseur::p_gradient [mutable, protected]

Pointer on the gradient of *this .

It is set to zero if it has not been calculated yet.

Definition at line 336 of file tenseur.h.

Tenseur* Tenseur::p_gradient_spher [mutable, protected]

Pointer on the gradient of *this in a spherical orthonormal basis (scalar field only).

It is set to zero if it has not been calculated yet.

Definition at line 343 of file tenseur.h.

double Tenseur::poids [protected]

For tensor densities: the weight.

Definition at line 316 of file tenseur.h.

const Base_vect* Tenseur::triad [protected]

Vectorial basis (triad) with respect to which the tensor components are defined.

Definition at line 305 of file tenseur.h.

Array of size valence contening the type of each index, COV for a covariant one and CON for a contravariant one.

Definition at line 311 of file tenseur.h.

int Tenseur::valence [protected]

Valence.

Definition at line 300 of file tenseur.h.


The documentation for this class was generated from the following files:

Generated on 7 Oct 2014 for LORENE by  doxygen 1.6.1