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.
 
Derived inverse () const
 Inversion.
 
Derived transpose () const
 transpose
 
- Public Member Functions inherited from PrimitiveTensor< Derived, 3, 3 >
 PrimitiveTensor ()=default
 Default constructor.
 
 PrimitiveTensor (const torch::Tensor &tensor, Size batch_dim)
 Construct from another torch::Tensor given batch dimension.
 
 PrimitiveTensor (const torch::Tensor &tensor, const TraceableTensorShape &batch_shape)
 Construct from another torch::Tensor given batch shape.
 
 PrimitiveTensor (const TensorBase< Derived2 > &tensor)
 Copy constructor.
 
 PrimitiveTensor (const torch::Tensor &tensor)
 Construct from another torch::Tensor 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
 Default constructor.
 
 TensorBase (const torch::Tensor &tensor, Size batch_dim)
 Construct from another torch::Tensor with given batch dimension.
 
 TensorBase (const torch::Tensor &tensor, const TraceableTensorShape &batch_shape)
 Construct from another torch::Tensor with given batch shape.
 
template<class Derived2 >
 TensorBase (const TensorBase< Derived2 > &tensor)
 Copy constructor.
 
 TensorBase (Real)=delete
 
Derived variable_data () const
 
Derived clone (torch::MemoryFormat memory_format=torch::MemoryFormat::Contiguous) const
 
Derived detach () const
 Discard function graph.
 
Derived to (const torch::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.
 
void batch_index_put_ (indexing::TensorIndicesRef indices, const torch::Tensor &other)
 
void batch_index_put_ (indexing::TensorIndicesRef indices, Real v)
 
void base_index_put_ (indexing::TensorIndicesRef indices, const torch::Tensor &other)
 
void base_index_put_ (indexing::TensorIndicesRef indices, Real 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.
 
template<class Derived2 >
Derived batch_expand_as (const Derived2 &other) const
 Expand the batch to have the same shape as another tensor.
 
template<class Derived2 >
Derived2 base_expand_as (const Derived2 &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 Real &a, const torch::TensorOptions &options=default_tensor_options())
 Fill the diagonals with a11 = a22 = a33 = a.
 
static Derived fill (const Scalar &a)
 
static Derived fill (const Real &a11, const Real &a22, const Real &a33, const torch::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 Real &a11, const Real &a22, const Real &a33, const Real &a23, const Real &a13, const Real &a12, const torch::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 Real &a11, const Real &a12, const Real &a13, const Real &a21, const Real &a22, const Real &a23, const Real &a31, const Real &a32, const Real &a33, const torch::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 torch::TensorOptions &options=default_tensor_options())
 Identity.
 
- Static Public Member Functions inherited from PrimitiveTensor< Derived, 3, 3 >
static Derived empty (const torch::TensorOptions &options=default_tensor_options())
 Unbatched empty tensor.
 
static Derived empty (const TraceableTensorShape &batch_shape, const torch::TensorOptions &options=default_tensor_options())
 Empty tensor given batch shape.
 
static Derived zeros (const torch::TensorOptions &options=default_tensor_options())
 Unbatched zero tensor.
 
static Derived zeros (const TraceableTensorShape &batch_shape, const torch::TensorOptions &options=default_tensor_options())
 Zero tensor given batch shape.
 
static Derived ones (const torch::TensorOptions &options=default_tensor_options())
 Unbatched unit tensor.
 
static Derived ones (const TraceableTensorShape &batch_shape, const torch::TensorOptions &options=default_tensor_options())
 Unit tensor given batch shape.
 
static Derived full (Real init, const torch::TensorOptions &options=default_tensor_options())
 Unbatched tensor filled with a given value given base shape.
 
static Derived full (const TraceableTensorShape &batch_shape, Real init, const torch::TensorOptions &options=default_tensor_options())
 Full tensor given batch shape.
 
static Tensor identity_map (const torch::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)
 Empty tensor like another, i.e. same batch and base shapes, same tensor options, etc.
 
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, Real 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, Real 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.
 

Member Function Documentation

◆ 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 Real & a,
const torch::TensorOptions & options = default_tensor_options() )
static

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

◆ fill() [2/8]

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

Fill all entries.

◆ fill() [3/8]

template<class Derived >
Derived fill ( const Real & a11,
const Real & a22,
const Real & a33,
const Real & a23,
const Real & a13,
const Real & a12,
const torch::TensorOptions & options = default_tensor_options() )
static

Fill symmetric entries.

◆ fill() [4/8]

template<class Derived >
Derived fill ( const Real & a11,
const Real & a22,
const Real & a33,
const torch::TensorOptions & options = default_tensor_options() )
static

Fill the diagonals with a11, a22, a33.

◆ fill() [5/8]

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

◆ 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 )
static

◆ fill() [7/8]

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

◆ 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 )
static

◆ identity()

template<class Derived >
Derived identity ( const torch::TensorOptions & options = default_tensor_options())
static

Identity.

◆ 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.

◆ 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.

◆ skew()

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

Skew matrix from Vec.

◆ transpose()

template<class Derived >
Derived transpose ( ) const

transpose