NEML2 2.0.0
All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
SR2 Class Reference

The symmetric second order tensor. More...

Detailed Description

The symmetric second order tensor.

Mandel notation is used, and so the storage space is (6).

#include <SR2.h>

Inheritance diagram for SR2:

Public Member Functions

 SR2 (const R2 &T)
 Symmetrize an R2 then fill.
 
SR2 rotate (const Rot &r) const
 Rotate.
 
SR2 rotate (const R2 &R) const
 
SFR3 drotate (const Rot &r) const
 Derivative of the rotated tensor w.r.t. the Rodrigues vector.
 
SFFR4 drotate (const R2 &R) const
 
Scalar operator() (Size i, Size j) const
 Accessor.
 
Scalar tr () const
 Trace.
 
SR2 vol () const
 Volumetric part of the tensor.
 
SR2 dev () const
 Deviatoric part of the tensor.
 
Scalar det () const
 Determinant.
 
Scalar inner (const SR2 &other) const
 Double contraction ij,ij.
 
Scalar norm_sq () const
 Norm squared.
 
Scalar norm (Real eps=0) const
 Norm.
 
SSR4 outer (const SR2 &other) const
 Outer product ij,kl -> ijkl.
 
SR2 inverse () const
 Inversion.
 
SR2 transpose () const
 Transpose, no-op.
 
- Public Member Functions inherited from PrimitiveTensor< SR2, 6 >
 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< SR2 >
 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 (Real)=delete
 
SR2 variable_data () const
 
SR2 clone () const
 
SR2 detach () const
 Discard function graph.
 
SR2 to (const TensorOptions &options) const
 Change tensor options.
 
SR2 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.
 
SR2 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.
 
SR2 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, Real v)
 
void base_index_put_ (indexing::TensorIndicesRef indices, const ATensor &other)
 
void base_index_put_ (indexing::TensorIndicesRef indices, Real v)
 
SR2 batch_expand (const TraceableTensorShape &batch_shape) const
 
SR2 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.
 
SR2 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.
 
SR2 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.
 
SR2 batch_reshape (const TraceableTensorShape &batch_shape) const
 Reshape batch dimensions.
 
neml2::Tensor base_reshape (TensorShapeRef base_shape) const
 Reshape base dimensions.
 
SR2 batch_unsqueeze (Size d) const
 Unsqueeze a batch dimension.
 
neml2::Tensor base_unsqueeze (Size d) const
 Unsqueeze a base dimension.
 
SR2 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 SR2 fill (const Real &a, const TensorOptions &options=default_tensor_options())
 Fill the diagonals with a11 = a22 = a33 = a.
 
static SR2 fill (const Scalar &a)
 
static SR2 fill (const Real &a11, const Real &a22, const Real &a33, const TensorOptions &options=default_tensor_options())
 Fill the diagonals with a11, a22, a33.
 
static SR2 fill (const Scalar &a11, const Scalar &a22, const Scalar &a33)
 
static SR2 fill (const Real &a11, const Real &a22, const Real &a33, const Real &a23, const Real &a13, const Real &a12, const TensorOptions &options=default_tensor_options())
 Fill all entries.
 
static SR2 fill (const Scalar &a11, const Scalar &a22, const Scalar &a33, const Scalar &a23, const Scalar &a13, const Scalar &a12)
 
static SR2 identity (const TensorOptions &options=default_tensor_options())
 Identity.
 
static SSR4 identity_map (const TensorOptions &options=default_tensor_options())
 The derivative of a SR2 with respect to itself.
 
- Static Public Member Functions inherited from PrimitiveTensor< SR2, 6 >
static SR2 create (const TensorDataContainer &data, const TensorOptions &options=default_tensor_options())
 Arbitrary tensor from a nested container with inferred batch dimension.
 
static SR2 empty (const TensorOptions &options=default_tensor_options())
 Unbatched empty tensor.
 
static SR2 empty (const TraceableTensorShape &batch_shape, const TensorOptions &options=default_tensor_options())
 Empty tensor given batch shape.
 
static SR2 zeros (const TensorOptions &options=default_tensor_options())
 Unbatched zero tensor.
 
static SR2 zeros (const TraceableTensorShape &batch_shape, const TensorOptions &options=default_tensor_options())
 Zero tensor given batch shape.
 
static SR2 ones (const TensorOptions &options=default_tensor_options())
 Unbatched unit tensor.
 
static SR2 ones (const TraceableTensorShape &batch_shape, const TensorOptions &options=default_tensor_options())
 Unit tensor given batch shape.
 
static SR2 full (Real init, const TensorOptions &options=default_tensor_options())
 Unbatched tensor filled with a given value given base shape.
 
static SR2 full (const TraceableTensorShape &batch_shape, Real 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< SR2 >
static SR2 empty_like (const SR2 &other)
 
static SR2 zeros_like (const SR2 &other)
 Zero tensor like another, i.e. same batch and base shapes, same tensor options, etc.
 
static SR2 ones_like (const SR2 &other)
 Unit tensor like another, i.e. same batch and base shapes, same tensor options, etc.
 
static SR2 full_like (const SR2 &other, Real init)
 
static SR2 linspace (const SR2 &start, const SR2 &end, Size nstep, Size dim=0)
 Create a new tensor by adding a new batch dimension with linear spacing between start and end.
 
static SR2 logspace (const SR2 &start, const SR2 &end, Size nstep, Size dim=0, Real base=10)
 log-space equivalent of the linspace named constructor
 

Additional Inherited Members

- Static Public Attributes inherited from PrimitiveTensor< SR2, 6 >
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.
 

Constructor & Destructor Documentation

◆ SR2()

SR2 ( const R2 & T)

Symmetrize an R2 then fill.

Member Function Documentation

◆ det()

Scalar det ( ) const

Determinant.

◆ dev()

SR2 dev ( ) const

Deviatoric part of the tensor.

◆ drotate() [1/2]

SFFR4 drotate ( const R2 & R) const

◆ drotate() [2/2]

SFR3 drotate ( const Rot & r) const

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

◆ fill() [1/6]

SR2 fill ( const Real & a,
const TensorOptions & options = default_tensor_options() )
staticnodiscard

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

◆ fill() [2/6]

SR2 fill ( const Real & a11,
const Real & a22,
const Real & a33,
const Real & a23,
const Real & a13,
const Real & a12,
const TensorOptions & options = default_tensor_options() )
staticnodiscard

Fill all entries.

◆ fill() [3/6]

SR2 fill ( const Real & a11,
const Real & a22,
const Real & a33,
const TensorOptions & options = default_tensor_options() )
staticnodiscard

Fill the diagonals with a11, a22, a33.

◆ fill() [4/6]

SR2 fill ( const Scalar & a)
staticnodiscard

◆ fill() [5/6]

SR2 fill ( const Scalar & a11,
const Scalar & a22,
const Scalar & a33 )
staticnodiscard

◆ fill() [6/6]

SR2 fill ( const Scalar & a11,
const Scalar & a22,
const Scalar & a33,
const Scalar & a23,
const Scalar & a13,
const Scalar & a12 )
staticnodiscard

◆ identity()

SR2 identity ( const TensorOptions & options = default_tensor_options())
staticnodiscard

Identity.

◆ identity_map()

SSR4 identity_map ( const TensorOptions & options = default_tensor_options())
staticnodiscard

The derivative of a SR2 with respect to itself.

◆ inner()

Scalar inner ( const SR2 & other) const

Double contraction ij,ij.

◆ inverse()

SR2 inverse ( ) const

Inversion.

◆ norm()

Scalar norm ( Real eps = 0) const

Norm.

◆ norm_sq()

Scalar norm_sq ( ) const

Norm squared.

◆ operator()()

Scalar operator() ( Size i,
Size j ) const

Accessor.

◆ outer()

SSR4 outer ( const SR2 & other) const

Outer product ij,kl -> ijkl.

◆ rotate() [1/2]

SR2 rotate ( const R2 & R) const

◆ rotate() [2/2]

SR2 rotate ( const Rot & r) const

Rotate.

◆ tr()

Scalar tr ( ) const

Trace.

◆ transpose()

SR2 transpose ( ) const

Transpose, no-op.

◆ vol()

SR2 vol ( ) const

Volumetric part of the tensor.