NEML2 2.0.0
Loading...
Searching...
No Matches
R2Base< Derived > Class Template Reference

Base class for second order tensor. More...

Detailed Description

template<class Derived>
class neml2::R2Base< Derived >

Base class for second order tensor.

The storage space is (3, 3).

#include <R2Base.h>

Inheritance diagram for R2Base< Derived >:

Public Member Functions

 operator SR2 () const
 Conversion operator to symmetric second order tensor.
 
Derived rotate (const Rot &r) const
 Rotate using a Rodrigues vector.
 
Derived rotate (const R2 &R) const
 Rotate using a rotation matrix.
 
R3 drotate (const Rot &r) const
 Derivative of the rotated tensor w.r.t. the Rodrigues vector.
 
R4 drotate (const R2 &R) const
 Derivative of the rotated tensor w.r.t. the rotation matrix.
 
Scalar operator() (Size i, Size j) const
 Accessor.
 
Vec row (Size i) const
 Row.
 
Vec col (Size i) const
 Coluomn.
 
Scalar det () const
 Determinant.
 
Scalar inner (const R2 &other) const
 Double contraction ij,ij.
 
R4 outer (const R2 &other) const
 Outer product ij,kl.
 
Derived inverse () const
 Inversion.
 
Derived transpose () const
 transpose
 
- Public Member Functions inherited from PrimitiveTensor< Derived, 3, 3 >
 PrimitiveTensor ()=default
 Special member functions.
 
 PrimitiveTensor (const ATensor &tensor, Size batch_dim)
 Construct from another ATensor given batch dimension.
 
 PrimitiveTensor (const ATensor &tensor, const TraceableTensorShape &batch_shape)
 Construct from another ATensor given batch shape.
 
 PrimitiveTensor (const Tensor &tensor)
 Copy constructor.
 
 PrimitiveTensor (const ATensor &tensor)
 Construct from another ATensor and infer batch dimension.
 
 operator Tensor () const
 Implicit conversion to a Tensor and loses information on the fixed base shape.
 
- Public Member Functions inherited from TensorBase< Derived >
 TensorBase ()=default
 Special member functions.
 
 TensorBase (const ATensor &tensor, Size batch_dim)
 Construct from another ATensor with given batch dimension.
 
 TensorBase (const ATensor &tensor, const TraceableTensorShape &batch_shape)
 Construct from another ATensor with given batch shape.
 
 TensorBase (const neml2::Tensor &tensor)
 Copy constructor.
 
 TensorBase (double)=delete
 
 TensorBase (float)=delete
 
 TensorBase (int)=delete
 
Derived variable_data () const
 
Derived clone () const
 
Derived detach () const
 Discard function graph.
 
Derived to (const TensorOptions &options) const
 Change tensor options.
 
Derived operator- () const
 Negation.
 
bool batched () const
 Whether the tensor is batched.
 
Size batch_dim () const
 Return the number of batch dimensions.
 
Size base_dim () const
 Return the number of base dimensions.
 
const TraceableTensorShapebatch_sizes () const
 Return the batch size.
 
TraceableSize batch_size (Size index) const
 Return the size of a batch axis.
 
TensorShapeRef base_sizes () const
 Return the base size.
 
Size base_size (Size index) const
 Return the size of a base axis.
 
Size base_storage () const
 Return the flattened storage needed just for the base indices.
 
Derived batch_index (indexing::TensorIndicesRef indices) const
 Get a tensor by slicing on the batch dimensions.
 
neml2::Tensor base_index (indexing::TensorIndicesRef indices) const
 Get a tensor by slicing on the base dimensions.
 
Derived batch_slice (Size dim, const indexing::Slice &index) const
 Get a tensor by slicing along a batch dimension.
 
neml2::Tensor base_slice (Size dim, const indexing::Slice &index) const
 Get a tensor by slicing along a base dimension.
 
void batch_index_put_ (indexing::TensorIndicesRef indices, const ATensor &other)
 
void batch_index_put_ (indexing::TensorIndicesRef indices, const CScalar &v)
 
void base_index_put_ (indexing::TensorIndicesRef indices, const ATensor &other)
 
void base_index_put_ (indexing::TensorIndicesRef indices, const CScalar &v)
 
Derived batch_expand (const TraceableTensorShape &batch_shape) const
 
Derived batch_expand (const TraceableSize &batch_size, Size dim) const
 Return a new view of the tensor with values broadcast along a given batch dimension.
 
neml2::Tensor base_expand (TensorShapeRef base_shape) const
 Return a new view of the tensor with values broadcast along the base dimensions.
 
neml2::Tensor base_expand (Size base_size, Size dim) const
 Return a new view of the tensor with values broadcast along a given base dimension.
 
Derived batch_expand_as (const neml2::Tensor &other) const
 Expand the batch to have the same shape as another tensor.
 
neml2::Tensor base_expand_as (const neml2::Tensor &other) const
 Expand the base to have the same shape as another tensor.
 
Derived batch_expand_copy (const TraceableTensorShape &batch_shape) const
 Return a new tensor with values broadcast along the batch dimensions.
 
neml2::Tensor base_expand_copy (TensorShapeRef base_shape) const
 Return a new tensor with values broadcast along the base dimensions.
 
Derived batch_reshape (const TraceableTensorShape &batch_shape) const
 Reshape batch dimensions.
 
neml2::Tensor base_reshape (TensorShapeRef base_shape) const
 Reshape base dimensions.
 
Derived batch_unsqueeze (Size d) const
 Unsqueeze a batch dimension.
 
neml2::Tensor base_unsqueeze (Size d) const
 Unsqueeze a base dimension.
 
Derived batch_transpose (Size d1, Size d2) const
 Transpose two batch dimensions.
 
neml2::Tensor base_transpose (Size d1, Size d2) const
 Transpose two base dimensions.
 
neml2::Tensor base_flatten () const
 Flatten base dimensions.
 

Static Public Member Functions

static Derived fill (const CScalar &a, const TensorOptions &options=default_tensor_options())
 Fill the diagonals with a11 = a22 = a33 = a.
 
static Derived fill (const Scalar &a)
 
static Derived fill (const CScalar &a11, const CScalar &a22, const CScalar &a33, const TensorOptions &options=default_tensor_options())
 Fill the diagonals with a11, a22, a33.
 
static Derived fill (const Scalar &a11, const Scalar &a22, const Scalar &a33)
 
static Derived fill (const CScalar &a11, const CScalar &a22, const CScalar &a33, const CScalar &a23, const CScalar &a13, const CScalar &a12, const TensorOptions &options=default_tensor_options())
 Fill symmetric entries.
 
static Derived fill (const Scalar &a11, const Scalar &a22, const Scalar &a33, const Scalar &a23, const Scalar &a13, const Scalar &a12)
 
static Derived fill (const CScalar &a11, const CScalar &a12, const CScalar &a13, const CScalar &a21, const CScalar &a22, const CScalar &a23, const CScalar &a31, const CScalar &a32, const CScalar &a33, const TensorOptions &options=default_tensor_options())
 Fill all entries.
 
static Derived fill (const Scalar &a11, const Scalar &a12, const Scalar &a13, const Scalar &a21, const Scalar &a22, const Scalar &a23, const Scalar &a31, const Scalar &a32, const Scalar &a33)
 
static Derived skew (const Vec &v)
 Skew matrix from Vec.
 
static Derived identity (const TensorOptions &options=default_tensor_options())
 Identity.
 
- Static Public Member Functions inherited from PrimitiveTensor< Derived, 3, 3 >
static Derived create (const TensorDataContainer &data, const TensorOptions &options=default_tensor_options())
 Arbitrary tensor from a nested container with inferred batch dimension.
 
static Derived empty (const TensorOptions &options=default_tensor_options())
 Unbatched empty tensor.
 
static Derived empty (const TraceableTensorShape &batch_shape, const TensorOptions &options=default_tensor_options())
 Empty tensor given batch shape.
 
static Derived zeros (const TensorOptions &options=default_tensor_options())
 Unbatched zero tensor.
 
static Derived zeros (const TraceableTensorShape &batch_shape, const TensorOptions &options=default_tensor_options())
 Zero tensor given batch shape.
 
static Derived ones (const TensorOptions &options=default_tensor_options())
 Unbatched unit tensor.
 
static Derived ones (const TraceableTensorShape &batch_shape, const TensorOptions &options=default_tensor_options())
 Unit tensor given batch shape.
 
static Derived full (const CScalar &init, const TensorOptions &options=default_tensor_options())
 Unbatched tensor filled with a given value given base shape.
 
static Derived full (const TraceableTensorShape &batch_shape, const CScalar &init, const TensorOptions &options=default_tensor_options())
 Full tensor given batch shape.
 
static Tensor identity_map (const TensorOptions &)
 Derived tensor classes should define identity_map where appropriate.
 
- Static Public Member Functions inherited from TensorBase< Derived >
static Derived empty_like (const Derived &other)
 
static Derived zeros_like (const Derived &other)
 Zero tensor like another, i.e. same batch and base shapes, same tensor options, etc.
 
static Derived ones_like (const Derived &other)
 Unit tensor like another, i.e. same batch and base shapes, same tensor options, etc.
 
static Derived full_like (const Derived &other, const CScalar &init)
 
static Derived linspace (const Derived &start, const Derived &end, Size nstep, Size dim=0)
 Create a new tensor by adding a new batch dimension with linear spacing between start and end.
 
static Derived logspace (const Derived &start, const Derived &end, Size nstep, Size dim=0, const CScalar &base=10)
 log-space equivalent of the linspace named constructor
 

Additional Inherited Members

- Static Public Attributes inherited from PrimitiveTensor< Derived, 3, 3 >
static const TensorShape const_base_sizes
 The base shape.
 
static constexpr Size const_base_dim
 The base dim.
 
static const Size const_base_storage
 The base storage.
 
- Protected Attributes inherited from TensorBase< Derived >
TraceableTensorShape _batch_sizes
 Traceable batch sizes.
 

Member Function Documentation

◆ col()

template<class Derived >
Vec col ( Size i) const

Coluomn.

◆ det()

template<class Derived >
Scalar det ( ) const

◆ drotate() [1/2]

template<class Derived >
R4 drotate ( const R2 & R) const

Derivative of the rotated tensor w.r.t. the rotation matrix.

◆ drotate() [2/2]

template<class Derived >
R3 drotate ( const Rot & r) const

Derivative of the rotated tensor w.r.t. the Rodrigues vector.

◆ fill() [1/8]

template<class Derived >
Derived fill ( const CScalar & a,
const TensorOptions & options = default_tensor_options() )
staticnodiscard

Fill the diagonals with a11 = a22 = a33 = a.

◆ fill() [2/8]

template<class Derived >
Derived fill ( const CScalar & a11,
const CScalar & a12,
const CScalar & a13,
const CScalar & a21,
const CScalar & a22,
const CScalar & a23,
const CScalar & a31,
const CScalar & a32,
const CScalar & a33,
const TensorOptions & options = default_tensor_options() )
staticnodiscard

Fill all entries.

◆ fill() [3/8]

template<class Derived >
Derived fill ( const CScalar & a11,
const CScalar & a22,
const CScalar & a33,
const CScalar & a23,
const CScalar & a13,
const CScalar & a12,
const TensorOptions & options = default_tensor_options() )
staticnodiscard

Fill symmetric entries.

◆ fill() [4/8]

template<class Derived >
Derived fill ( const CScalar & a11,
const CScalar & a22,
const CScalar & a33,
const TensorOptions & options = default_tensor_options() )
staticnodiscard

Fill the diagonals with a11, a22, a33.

◆ fill() [5/8]

template<class Derived >
Derived fill ( const Scalar & a)
staticnodiscard

◆ fill() [6/8]

template<class Derived >
Derived fill ( const Scalar & a11,
const Scalar & a12,
const Scalar & a13,
const Scalar & a21,
const Scalar & a22,
const Scalar & a23,
const Scalar & a31,
const Scalar & a32,
const Scalar & a33 )
staticnodiscard

◆ fill() [7/8]

template<class Derived >
Derived fill ( const Scalar & a11,
const Scalar & a22,
const Scalar & a33 )
staticnodiscard

◆ fill() [8/8]

template<class Derived >
Derived fill ( const Scalar & a11,
const Scalar & a22,
const Scalar & a33,
const Scalar & a23,
const Scalar & a13,
const Scalar & a12 )
staticnodiscard

◆ identity()

template<class Derived >
Derived identity ( const TensorOptions & options = default_tensor_options())
staticnodiscard

Identity.

◆ inner()

template<class Derived >
Scalar inner ( const R2 & other) const

Double contraction ij,ij.

◆ inverse()

template<class Derived >
Derived inverse ( ) const

Inversion.

◆ operator SR2()

template<class Derived >
operator SR2 ( ) const
explicit

Conversion operator to symmetric second order tensor.

◆ operator()()

template<class Derived >
Scalar operator() ( Size i,
Size j ) const

Accessor.

◆ outer()

template<class Derived >
R4 outer ( const R2 & other) const

Outer product ij,kl.

◆ rotate() [1/2]

template<class Derived >
Derived rotate ( const R2 & R) const

Rotate using a rotation matrix.

◆ rotate() [2/2]

template<class Derived >
Derived rotate ( const Rot & r) const

Rotate using a Rodrigues vector.

◆ row()

template<class Derived >
Vec row ( Size i) const

Row.

◆ skew()

template<class Derived >
Derived skew ( const Vec & v)
staticnodiscard

Skew matrix from Vec.

◆ transpose()

template<class Derived >
Derived transpose ( ) const

transpose