v0.8.13
Public Member Functions | Private Attributes | List of all members
FTensor::Tensor1< T, Tensor_Dim > Class Template Reference

#include <src/ftensor/src/FTensor/Tensor1/Tensor1_value.hpp>

Public Member Functions

template<class... U>
constexpr Tensor1 (U... d)
 
constexpr Tensor1 ()
 
Toperator() (const int N)
 
T operator() (const int N) const
 
template<char i, int Dim>
std::enable_if<(Tensor_Dim >=Dim), Tensor1_Expr< Tensor1< T, Tensor_Dim >, T, Dim, i > >::type operator() (const Index< i, Dim > &)
 
template<char i, int Dim>
std::enable_if<(Tensor_Dim >=Dim), Tensor1_Expr< const Tensor1< T, Tensor_Dim >, T, Dim, i > >::type operator() (const Index< i, Dim > &) const
 
Tensor1< T, Tensor_Dim > normalize ()
 
T l2 () const
 
template<int Current_Dim>
T l2_squared (const Number< Current_Dim > &) const
 
T l2_squared (const Number< 1 > &) const
 

Private Attributes

T data [Tensor_Dim]
 

Detailed Description

template<class T, int Tensor_Dim>
class FTensor::Tensor1< T, Tensor_Dim >

Examples:
analytical_nonlinear_poisson.cpp, analytical_poisson.cpp, analytical_poisson_field_split.cpp, MagneticElement.hpp, PoissonOperators.hpp, and simple_elasticity.cpp.

Definition at line 8 of file Tensor1_value.hpp.

Constructor & Destructor Documentation

◆ Tensor1() [1/2]

template<class T, int Tensor_Dim>
template<class... U>
constexpr FTensor::Tensor1< T, Tensor_Dim >::Tensor1 ( U...  d)

Definition at line 14 of file Tensor1_value.hpp.

14  : data{d...}
15  {
16  static_assert(sizeof...(d) == sizeof(data) / sizeof(T),
17  "Incorrect number of Arguments. Constructor should "
18  "initialize the entire Tensor");
19  };
const Tensor1_Expr< const dTensor0< T, Dim, i >, typename promote< T, double >::V, Dim, i > d(const Tensor0< T *> &a, const Index< i, Dim > index, const Tensor1< int, Dim > &d_ijk, const Tensor1< double, Dim > &d_xyz)
Definition: dTensor0.hpp:27
T data[Tensor_Dim]

◆ Tensor1() [2/2]

template<class T, int Tensor_Dim>
constexpr FTensor::Tensor1< T, Tensor_Dim >::Tensor1 ( )

Definition at line 21 of file Tensor1_value.hpp.

21 {}

Member Function Documentation

◆ l2()

template<class T, int Tensor_Dim>
T FTensor::Tensor1< T, Tensor_Dim >::l2 ( ) const

Definition at line 84 of file Tensor1_value.hpp.

84 { return sqrt(l2_squared(Number<Tensor_Dim>())); }
T l2_squared(const Number< Current_Dim > &) const

◆ l2_squared() [1/2]

template<class T, int Tensor_Dim>
template<int Current_Dim>
T FTensor::Tensor1< T, Tensor_Dim >::l2_squared ( const Number< Current_Dim > &  ) const

Definition at line 86 of file Tensor1_value.hpp.

87  {
88  return data[Current_Dim - 1] * data[Current_Dim - 1]
89  + l2_squared(Number<Current_Dim - 1>());
90  }
T data[Tensor_Dim]
T l2_squared(const Number< Current_Dim > &) const

◆ l2_squared() [2/2]

template<class T, int Tensor_Dim>
T FTensor::Tensor1< T, Tensor_Dim >::l2_squared ( const Number< 1 > &  ) const

Definition at line 91 of file Tensor1_value.hpp.

91 { return data[0] * data[0]; }
T data[Tensor_Dim]

◆ normalize()

template<class T, int Tensor_Dim>
Tensor1<T, Tensor_Dim> FTensor::Tensor1< T, Tensor_Dim >::normalize ( )

Definition at line 77 of file Tensor1_value.hpp.

78  {
79  const Index<'a', Tensor_Dim> a;
80  (*this)(a) /= l2();
81  return *this;
82  }
Definition: single.cpp:3

◆ operator()() [1/4]

template<class T, int Tensor_Dim>
T& FTensor::Tensor1< T, Tensor_Dim >::operator() ( const int  N)

Definition at line 26 of file Tensor1_value.hpp.

27  {
28 #ifdef FTENSOR_DEBUG
29  if(N >= Tensor_Dim || N < 0)
30  {
31  std::stringstream s;
32  s << "Bad index in Tensor1<T," << Tensor_Dim << ">.operator(" << N
33  << ")" << std::endl;
34  throw std::out_of_range(s.str());
35  }
36 #endif
37  return data[N];
38  }
T data[Tensor_Dim]
const int N
Definition: speed_test.cpp:3

◆ operator()() [2/4]

template<class T, int Tensor_Dim>
T FTensor::Tensor1< T, Tensor_Dim >::operator() ( const int  N) const

Definition at line 39 of file Tensor1_value.hpp.

40  {
41 #ifdef FTENSOR_DEBUG
42  if(N >= Tensor_Dim || N < 0)
43  {
44  std::stringstream s;
45  s << "Bad index in Tensor1<T," << Tensor_Dim << ">.operator(" << N
46  << ") const" << std::endl;
47  throw std::out_of_range(s.str());
48  }
49 #endif
50  return data[N];
51  }
T data[Tensor_Dim]
const int N
Definition: speed_test.cpp:3

◆ operator()() [3/4]

template<class T, int Tensor_Dim>
template<char i, int Dim>
std::enable_if< (Tensor_Dim >= Dim), Tensor1_Expr<Tensor1<T, Tensor_Dim>, T, Dim, i> >::type FTensor::Tensor1< T, Tensor_Dim >::operator() ( const Index< i, Dim > &  )

Definition at line 61 of file Tensor1_value.hpp.

62  {
63  return Tensor1_Expr<Tensor1<T, Tensor_Dim>, T, Dim, i>(*this);
64  }

◆ operator()() [4/4]

template<class T, int Tensor_Dim>
template<char i, int Dim>
std::enable_if< (Tensor_Dim >= Dim), Tensor1_Expr<const Tensor1<T, Tensor_Dim>, T, Dim, i> >::type FTensor::Tensor1< T, Tensor_Dim >::operator() ( const Index< i, Dim > &  ) const

Definition at line 70 of file Tensor1_value.hpp.

71  {
72  return Tensor1_Expr<const Tensor1<T, Tensor_Dim>, T, Dim, i>(*this);
73  }

Member Data Documentation

◆ data

template<class T, int Tensor_Dim>
T FTensor::Tensor1< T, Tensor_Dim >::data[Tensor_Dim]
private

Definition at line 10 of file Tensor1_value.hpp.


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