Documentation of CSL
Data Structures | Namespaces | Functions | Variables
indicial.h File Reference

Objects handling indexed expressions in order to perform indicial tensor calculations. More...

#include "memory_pool.h"
#include "literal.h"
#include "numerical.h"
#include "operations.h"
#include "index.h"
#include "symmetry.h"
#include "parent.h"
#include "element.h"
#include "vector.h"
Include dependency graph for indicial.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

class  csl::SelfContraction
 Small class that allows to handle contractions of indices between tensors. More...
 
class  csl::ContractionChain
 
class  csl::TensorParent
 Parent of an indicial object, allows to generate them (TensorElement). More...
 
class  csl::EpsilonParent
 Specialization of TensorParent for a kronecker delta. More...
 
class  csl::DeltaParent
 Specialization of TensorParent for a kronecker delta. More...
 
class  csl::MetricParent
 Specialization of TensorParent for a matric object (two indices symmetric etc). An object of type Space initializated with a metric will automatically have signed indices. More...
 
class  csl::Tensor
 
class  csl::TensorElement
 Specialization of Abstract for Indicial tensor. Building block carrying indices, and respecting Einstein's summation convention. More...
 
class  csl::ISum
 Specialization of a Prod object to handle TensorElement objects in the product (apply contraction of indices etc). More...
 
class  csl::IProd
 Specialization of a Prod object to handle TensorElement objects in the product (apply contraction of indices etc). More...
 

Namespaces

 csl
 Namespace for csl library.
 

Functions

csl::vector_expr csl::getAllPermutations (const Expr &expr)
 
template<class ... Args>
std::shared_ptr< TensorParent > csl::tensor_s (Args &&...args)
 
template<class ... Args>
std::shared_ptr< TensorParent > csl::tensor_s (std::string const &name, std::vector< const Space *> const &indices, Args &&...args)
 
template<typename ... Args>
Expr csl::tensorelement_s (Args &&...args)
 
bool csl::IsIndicialTensor (const Expr &expr)
 
bool csl::IsIndicialTensor (Expr_info expr)
 
void csl::nameTensor (const std::string &name, Expr &tensor, bool first=true)
 Fills an tensor with variables of the same name with the numbers correponding to their place in the tensor. Allows for example to name elements of a vector $ V $: $ \left( V_0,V_1,V_2,V_3\right)$. More...
 
Expr csl::generateTensor (const std::string &name, const std::vector< const Space *> &spaces)
 Generates a tensor of name name that lives in a list of spaces, filled with variables given by nameTensor(). More...
 

Variables

csl::allocator< TensorElement > csl::alloc_itensor
 
csl::allocator< ISum > csl::alloc_isum
 
csl::allocator< IProd > csl::alloc_iprod
 

Detailed Description

Objects handling indexed expressions in order to perform indicial tensor calculations.

Author
Grégoire Uhlrich
Version
1.3
Bug:
For now setting an object fully symmetric or antisymmetric will cause bug if all the indices don't lie in the same space. When taking permutations, indices from different spaces will be exchanged and the tensor will not accept them.