LORENE
Lorene::Connection Class Reference

Class Connection. More...

#include <connection.h>

Inheritance diagram for Lorene::Connection:
Lorene::Connection_flat Lorene::Connection_fcart Lorene::Connection_fspher

Public Member Functions

 Connection (const Tensor_sym &delta_i, const Metric_flat &flat_met_i)
 Standard constructor ab initio.
 
 Connection (const Metric &met, const Metric_flat &flat_met_i)
 Standard constructor for a connection associated with a metric.
 
 Connection (const Connection &)
 Copy constructor.
 
virtual ~Connection ()
 Destructor.
 
void operator= (const Connection &)
 Assignment to another Connection.
 
void update (const Tensor_sym &delta_i)
 Update the connection when it is defined ab initio.
 
void update (const Metric &met)
 Update the connection when it is associated with a metric.
 
const Map & get_mp () const
 Returns the mapping.
 
const Tensor_sym & get_delta () const
 Returns the tensor $\Delta^i_{\ jk}$ which defines the connection with respect to the flat one: $\Delta^i_{\ jk}$ is the difference between the connection coefficients $\Gamma^i_{\ jk}$ and the connection coefficients ${\bar \Gamma}^i_{\ jk}$ of the flat connection.
 
virtual Tensor * p_derive_cov (const Tensor &tens) const
 Computes the covariant derivative $\nabla T$ of a tensor $T$ (with respect to the current connection).
 
virtual Tensor * p_divergence (const Tensor &tens) const
 Computes the divergence of a tensor $T$ (with respect to the current connection).
 
virtual const Tensor & ricci () const
 Computes (if not up to date) and returns the Ricci tensor associated with the current connection.
 

Protected Member Functions

 Connection (const Map &, const Base_vect &)
 Constructor for derived classes.
 
void del_deriv () const
 Deletes all the derived quantities.
 
void set_der_0x0 () const
 Sets to 0x0 all the pointers on derived quantities.
 

Protected Attributes

const Map *const mp
 Reference mapping.
 
const Base_vect *const triad
 Triad $(e_i)$ with respect to which the connection coefficients are defined.
 
Tensor_sym delta
 Tensor $\Delta^i_{\ jk}$ which defines the connection with respect to the flat one: $\Delta^i_{\ jk}$ is the difference between the connection coefficients $\Gamma^i_{\ jk}$ and the connection coefficients ${\bar \Gamma}^i_{\ jk}$ of the flat connection.
 
bool assoc_metric
 Indicates whether the connection is associated with a metric (in which case the Ricci tensor is symmetric, i.e.
 
Tensor * p_ricci
 Pointer of the Ricci tensor associated with the connection.
 

Private Member Functions

void fait_delta (const Metric &)
 Computes the difference $\Delta^i_{\ jk}$ between the connection coefficients and that a the flat connection in the case where the current connection is associated with a metric.
 

Private Attributes

const Metric_flat * flat_met
 Flat metric with respect to which $\Delta^i_{\ jk}$ (member delta ) is defined.
 

Detailed Description

Class Connection.

()

This class deals only with torsion-free connections.

Note that we use the MTW convention for the indices of the connection coefficients with respect to a given triad $(e_i)$:

\[
 \Gamma^i_{\ jk} := \langle e^i, \nabla_{e_k} \, e_j \rangle 
\]

Definition at line 113 of file connection.h.

Constructor & Destructor Documentation

◆ Connection() [1/4]

Lorene::Connection::Connection ( const Tensor_sym &  delta_i,
const Metric_flat &  flat_met_i 
)

Standard constructor ab initio.

Parameters
delta_itensor $\Delta^i_{\ jk}$ which defines the connection with respect to the flat one: $\Delta^i_{\ jk}$ is the difference between the connection coefficients $\Gamma^i_{\ jk}$ and the connection coefficients ${\bar \Gamma}^i_{\ jk}$ of the flat connection. The connection coefficients with respect to the triad $(e_i)$ are defined according to the MTW convention:

\[
 \Gamma^i_{\ jk} := \langle e^i, \nabla_{e_k} \, e_j \rangle
\]

$\Delta^i_{\ jk}$ must be symmetric with respect to the indices j and k.
flat_met_iflat metric with respect to which $\Delta^i_{\ jk}$ is defined

Definition at line 129 of file connection.C.

References Lorene::Tensor::get_index_type(), Lorene::Tensor::get_valence(), set_der_0x0(), Lorene::Tensor_sym::sym_index1(), and Lorene::Tensor_sym::sym_index2().

◆ Connection() [2/4]

Lorene::Connection::Connection ( const Metric &  met,
const Metric_flat &  flat_met_i 
)

Standard constructor for a connection associated with a metric.

Parameters
metMetric to which the connection will be associated
flat_met_iflat metric to define the $\Delta^i_{\ jk}$ representation of the connection

Definition at line 150 of file connection.C.

References fait_delta(), and set_der_0x0().

◆ Connection() [3/4]

Lorene::Connection::Connection ( const Connection &  conn_i)

Copy constructor.

Definition at line 166 of file connection.C.

References set_der_0x0().

◆ Connection() [4/4]

Lorene::Connection::Connection ( const Map &  mpi,
const Base_vect &  bi 
)
protected

Constructor for derived classes.

Definition at line 179 of file connection.C.

References set_der_0x0().

◆ ~Connection()

Lorene::Connection::~Connection ( )
virtual

Destructor.

Definition at line 195 of file connection.C.

References del_deriv().

Member Function Documentation

◆ del_deriv()

void Lorene::Connection::del_deriv ( ) const
protected

Deletes all the derived quantities.

Definition at line 205 of file connection.C.

References p_ricci, and set_der_0x0().

◆ fait_delta()

void Lorene::Connection::fait_delta ( const Metric &  gam)
private

Computes the difference $\Delta^i_{\ jk}$ between the connection coefficients and that a the flat connection in the case where the current connection is associated with a metric.

Definition at line 278 of file connection.C.

References Lorene::Metric::con(), Lorene::Metric::cov(), delta, Lorene::Tensor_sym::derive_cov(), flat_met, and Lorene::Tensor::set().

◆ get_delta()

const Tensor_sym & Lorene::Connection::get_delta ( ) const
inline

Returns the tensor $\Delta^i_{\ jk}$ which defines the connection with respect to the flat one: $\Delta^i_{\ jk}$ is the difference between the connection coefficients $\Gamma^i_{\ jk}$ and the connection coefficients ${\bar \Gamma}^i_{\ jk}$ of the flat connection.

The connection coefficients with respect to the triad $(e_i)$ are defined according to the MTW convention:

\[
 \Gamma^i_{\ jk} := \langle e^i, \nabla_{e_k} \, e_j \rangle
\]

Note that $\Delta^i_{\ jk}$ is symmetric with respect to the indices j and k.

Returns
delta}(i,j,k) = $\Delta^i_{\ jk}$

Definition at line 271 of file connection.h.

References delta.

◆ get_mp()

const Map & Lorene::Connection::get_mp ( ) const
inline

Returns the mapping.

Definition at line 253 of file connection.h.

References mp.

◆ operator=()

void Lorene::Connection::operator= ( const Connection &  ci)

Assignment to another Connection.

Definition at line 225 of file connection.C.

References del_deriv(), delta, flat_met, and triad.

◆ p_derive_cov()

Tensor * Lorene::Connection::p_derive_cov ( const Tensor &  tens) const
virtual

Computes the covariant derivative $\nabla T$ of a tensor $T$ (with respect to the current connection).

The extra index (with respect to the indices of \f$T\f$)
of \f$\nabla T\f$ is chosen to be the \b last  one.
This convention agrees with that of MTW (see Eq. (10.17) of MTW).
For instance, if \f$T\f$ is a 1-form, whose components
w.r.t. the triad \f$e^i\f$ are \f$T_i\f$: \f$T=T_i \; e^i\f$,
then the covariant derivative of \f$T\f$ is the bilinear form
\f$\nabla T\f$ whose components \f$\nabla_j T_i\f$ are
such that 
\f[
 \nabla T = \nabla_j T_i \; e^i \otimes e^j
\f]

@param tens tensor \f$T\f$
@return pointer on the covariant derivative \f$\nabla T\f$ ; 
this pointer is
polymorphe, i.e. it is a pointer on a \c Vector 
if the argument is a \c Scalar , and on a \c Tensor  otherwise.
NB: The corresponding memory is allocated by the method 
\c p_derive_cov()  and 
must be deallocated by the user afterwards. 

Reimplemented in Lorene::Connection_fspher, Lorene::Connection_fcart, and Lorene::Connection_flat.

Definition at line 307 of file connection.C.

References Lorene::Scalar::dec_dzpuis(), delta, Lorene::Tensor::derive_cov(), flat_met, Lorene::Tensor::get_index_type(), Lorene::Tensor::get_n_comp(), Lorene::Tensor::get_triad(), Lorene::Tensor::get_valence(), Lorene::Tensor::indices(), mp, Lorene::Tensor::set(), Lorene::Itbl::set(), Lorene::Tensor_sym::sym_index1(), Lorene::Tensor_sym::sym_index2(), and triad.

◆ p_divergence()

Tensor * Lorene::Connection::p_divergence ( const Tensor &  tens) const
virtual

Computes the divergence of a tensor $T$ (with respect to the current connection).

The divergence is taken with respect of the last index of $T$ which thus must be contravariant. For instance if $T$ is a twice contravariant tensor, whose components w.r.t. the triad $e_i$ are $T^{ij}$: $T = T^{ij} \; e_i \otimes e_j$, the divergence of $T$ is the vector

\[
      {\rm div}\, T = \nabla_k T^{ik} \; e_i
    \]

where $\nabla$ denotes the current connection.

Parameters
tenstensor $T$
Returns
pointer on the divergence of $T$ ; this pointer is polymorphe, i.e. its is a pointer on a Scalar if $T$ is a Vector , on a Vector if $T$ is a tensor of valence 2, and on a Tensor otherwise. NB: The corresponding memory is allocated by the method p_divergence() and must be deallocated by the user afterwards.

Reimplemented in Lorene::Connection_fspher, Lorene::Connection_fcart, and Lorene::Connection_flat.

Definition at line 463 of file connection.C.

References Lorene::Scalar::dec_dzpuis(), delta, Lorene::Tensor::divergence(), flat_met, Lorene::Tensor::get_index_type(), Lorene::Tensor::get_n_comp(), Lorene::Tensor::get_triad(), Lorene::Tensor::get_valence(), Lorene::Tensor::indices(), mp, Lorene::Tensor::set(), Lorene::Itbl::set(), Lorene::Tensor_sym::sym_index1(), Lorene::Tensor_sym::sym_index2(), Lorene::Tensor::trace(), and triad.

◆ ricci()

const Tensor & Lorene::Connection::ricci ( ) const
virtual

Computes (if not up to date) and returns the Ricci tensor associated with the current connection.

Reimplemented in Lorene::Connection_flat.

Definition at line 662 of file connection.C.

References assoc_metric, Lorene::Scalar::dec_dzpuis(), delta, Lorene::Tensor_sym::derive_cov(), flat_met, mp, p_ricci, Lorene::Tensor::set(), Lorene::Scalar::set_etat_zero(), and triad.

◆ set_der_0x0()

void Lorene::Connection::set_der_0x0 ( ) const
protected

Sets to 0x0 all the pointers on derived quantities.

Definition at line 213 of file connection.C.

References p_ricci.

◆ update() [1/2]

void Lorene::Connection::update ( const Metric &  met)

Update the connection when it is associated with a metric.

Parameters
metMetric to which the connection is associated

Definition at line 255 of file connection.C.

References assoc_metric, del_deriv(), fait_delta(), and flat_met.

◆ update() [2/2]

void Lorene::Connection::update ( const Tensor_sym &  delta_i)

Update the connection when it is defined ab initio.

Parameters
delta_itensor $\Delta^i_{\ jk}$ which defines the connection with respect to the flat one: $\Delta^i_{\ jk}$ is the difference between the connection coefficients $\Gamma^i_{\ jk}$ and the connection coefficients ${\bar \Gamma}^i_{\ jk}$ of the flat connection. $\Delta^i_{\ jk}$ must be symmetric with respect to the indices j and k.

Definition at line 235 of file connection.C.

References assoc_metric, del_deriv(), delta, flat_met, Lorene::Tensor::get_index_type(), Lorene::Tensor::get_valence(), Lorene::Tensor_sym::sym_index1(), and Lorene::Tensor_sym::sym_index2().

Member Data Documentation

◆ assoc_metric

bool Lorene::Connection::assoc_metric
protected

Indicates whether the connection is associated with a metric (in which case the Ricci tensor is symmetric, i.e.

the actual type of p_ricci is a Sym_tensor )

Definition at line 147 of file connection.h.

◆ delta

Tensor_sym Lorene::Connection::delta
protected

Tensor $\Delta^i_{\ jk}$ which defines the connection with respect to the flat one: $\Delta^i_{\ jk}$ is the difference between the connection coefficients $\Gamma^i_{\ jk}$ and the connection coefficients ${\bar \Gamma}^i_{\ jk}$ of the flat connection.

The connection coefficients with respect to the triad $(e_i)$ are defined according to the MTW convention:

\[
 \Gamma^i_{\ jk} := \langle e^i, \nabla_{e_k} \, e_j \rangle
\]

Note that $\Delta^i_{\ jk}$ is symmetric with respect to the indices j and k.

Definition at line 141 of file connection.h.

◆ flat_met

const Metric_flat* Lorene::Connection::flat_met
private

Flat metric with respect to which $\Delta^i_{\ jk}$ (member delta ) is defined.

Definition at line 156 of file connection.h.

◆ mp

const Map* const Lorene::Connection::mp
protected

Reference mapping.

Definition at line 119 of file connection.h.

◆ p_ricci

Tensor* Lorene::Connection::p_ricci
mutableprotected

Pointer of the Ricci tensor associated with the connection.

Definition at line 164 of file connection.h.

◆ triad

const Base_vect* const Lorene::Connection::triad
protected

Triad $(e_i)$ with respect to which the connection coefficients are defined.

Definition at line 124 of file connection.h.


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