NEML2 2.0.0
Loading...
Searching...
No Matches
SSR4 Class Reference

The symmetric fourth order tensor, with symmetry in the first two dimensionss as well as in the last two dimensions. More...

Detailed Description

The symmetric fourth order tensor, with symmetry in the first two dimensionss as well as in the last two dimensions.

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

#include <SSR4.h>

Inheritance diagram for SSR4:

Public Member Functions

 SSR4 (const R4 &T)
 Initialize with the symmetrized fourth order tensor.
 
SSR4 rotate (const Rot &r) const
 Rotate.
 
SSFR5 drotate (const Rot &r) const
 Derivative of the rotated tensor w.r.t. the Rodrigues vector.
 
SSSSR8 drotate_self (const Rot &r) const
 Derivative of the rotated tensor w.r.t. itself.
 
Scalar operator() (Size i, Size j, Size k, Size l) const
 Accessor.
 
SSR4 inverse () const
 Inversion.
 
SSSSR8 dinverse () const
 Derivative of inverse with respect to self.
 
SSR4 transpose_minor () const
 Transpose minor axes, no-op.
 
SSR4 transpose_major () const
 Transpose major axes.
 
- Public Member Functions inherited from PrimitiveTensor< SSR4, 6, 6 >
 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 SSR4 identity (const torch::TensorOptions &options=default_tensor_options())
 Create the identity tensor \(\delta_{ij}\delta_{kl}\).
 
static SSR4 identity_sym (const torch::TensorOptions &options=default_tensor_options())
 Create the symmetric identity tensor \(\delta_{ik}\delta_{jl}/2 + \delta_{il}\delta_{jk}/2\).
 
static SSR4 identity_vol (const torch::TensorOptions &options=default_tensor_options())
 Create the volumetric identity tensor \(\delta_{ij}\delta_{kl}/3\).
 
static SSR4 identity_dev (const torch::TensorOptions &options=default_tensor_options())
 Create the deviatoric identity tensor \(\delta_{ik}\delta_{jl}/2 + \delta_{il}\delta_{jk}/2 - \delta_{ij}\delta_{kl}/3\).
 
static SSR4 identity_C1 (const torch::TensorOptions &options=default_tensor_options())
 Building block for C1 constant.
 
static SSR4 identity_C2 (const torch::TensorOptions &options=default_tensor_options())
 Building block for C2 constant.
 
static SSR4 identity_C3 (const torch::TensorOptions &options=default_tensor_options())
 Building block for C3 constant.
 
static SSR4 isotropic_E_nu (const Scalar &E, const Scalar &nu)
 Create the fourth order elasticity tensor given the Young's modulus and the Poisson's ratio.
 
static SSR4 isotropic_E_nu (const Real &E, const Real &nu, const torch::TensorOptions &options=default_tensor_options())
 Create the fourth order elasticity tensor given the Young's modulus and the Poisson's ratio.
 
static SSR4 fill_C1_C2_C3 (const Scalar &C1, const Scalar &C2, const Scalar &C3)
 Create the fourth order elasticity tensor given the three non-zero coefficients.
 
static SSR4 fill_C1_C2_C3 (const Real &C1, const Real &C2, const Real &C3, const torch::TensorOptions &options=default_tensor_options())
 Create the fourth order elasticity tensor given the three non-zero coefficients.
 
static SSSSR8 identity_map (const torch::TensorOptions &options=default_tensor_options())
 The derivative of a SSR4 with respect to itself.
 
- Static Public Member Functions inherited from PrimitiveTensor< SSR4, 6, 6 >
static SSR4 empty (const torch::TensorOptions &options=default_tensor_options())
 Unbatched empty tensor.
 
static SSR4 empty (const TraceableTensorShape &batch_shape, const torch::TensorOptions &options=default_tensor_options())
 Empty tensor given batch shape.
 
static SSR4 zeros (const torch::TensorOptions &options=default_tensor_options())
 Unbatched zero tensor.
 
static SSR4 zeros (const TraceableTensorShape &batch_shape, const torch::TensorOptions &options=default_tensor_options())
 Zero tensor given batch shape.
 
static SSR4 ones (const torch::TensorOptions &options=default_tensor_options())
 Unbatched unit tensor.
 
static SSR4 ones (const TraceableTensorShape &batch_shape, const torch::TensorOptions &options=default_tensor_options())
 Unit tensor given batch shape.
 
static SSR4 full (Real init, const torch::TensorOptions &options=default_tensor_options())
 Unbatched tensor filled with a given value given base shape.
 
static SSR4 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< SSR4, 6, 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

◆ SSR4()

SSR4 ( const R4 & T)

Initialize with the symmetrized fourth order tensor.

Member Function Documentation

◆ dinverse()

SSSSR8 dinverse ( ) const

Derivative of inverse with respect to self.

◆ drotate()

SSFR5 drotate ( const Rot & r) const

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

◆ drotate_self()

SSSSR8 drotate_self ( const Rot & r) const

Derivative of the rotated tensor w.r.t. itself.

◆ fill_C1_C2_C3() [1/2]

SSR4 fill_C1_C2_C3 ( const Real & C1,
const Real & C2,
const Real & C3,
const torch::TensorOptions & options = default_tensor_options() )
static

Create the fourth order elasticity tensor given the three non-zero coefficients.

◆ fill_C1_C2_C3() [2/2]

SSR4 fill_C1_C2_C3 ( const Scalar & C1,
const Scalar & C2,
const Scalar & C3 )
static

Create the fourth order elasticity tensor given the three non-zero coefficients.

◆ identity()

SSR4 identity ( const torch::TensorOptions & options = default_tensor_options())
static

Create the identity tensor \(\delta_{ij}\delta_{kl}\).

◆ identity_C1()

SSR4 identity_C1 ( const torch::TensorOptions & options = default_tensor_options())
static

Building block for C1 constant.

◆ identity_C2()

SSR4 identity_C2 ( const torch::TensorOptions & options = default_tensor_options())
static

Building block for C2 constant.

◆ identity_C3()

SSR4 identity_C3 ( const torch::TensorOptions & options = default_tensor_options())
static

Building block for C3 constant.

◆ identity_dev()

SSR4 identity_dev ( const torch::TensorOptions & options = default_tensor_options())
static

Create the deviatoric identity tensor \(\delta_{ik}\delta_{jl}/2 + \delta_{il}\delta_{jk}/2 - \delta_{ij}\delta_{kl}/3\).

◆ identity_map()

SSSSR8 identity_map ( const torch::TensorOptions & options = default_tensor_options())
static

The derivative of a SSR4 with respect to itself.

◆ identity_sym()

SSR4 identity_sym ( const torch::TensorOptions & options = default_tensor_options())
static

Create the symmetric identity tensor \(\delta_{ik}\delta_{jl}/2 + \delta_{il}\delta_{jk}/2\).

◆ identity_vol()

SSR4 identity_vol ( const torch::TensorOptions & options = default_tensor_options())
static

Create the volumetric identity tensor \(\delta_{ij}\delta_{kl}/3\).

◆ inverse()

SSR4 inverse ( ) const

Inversion.

◆ isotropic_E_nu() [1/2]

SSR4 isotropic_E_nu ( const Real & E,
const Real & nu,
const torch::TensorOptions & options = default_tensor_options() )
static

Create the fourth order elasticity tensor given the Young's modulus and the Poisson's ratio.

◆ isotropic_E_nu() [2/2]

SSR4 isotropic_E_nu ( const Scalar & E,
const Scalar & nu )
static

Create the fourth order elasticity tensor given the Young's modulus and the Poisson's ratio.

◆ operator()()

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

Accessor.

◆ rotate()

SSR4 rotate ( const Rot & r) const

Rotate.

◆ transpose_major()

SSR4 transpose_major ( ) const

Transpose major axes.

◆ transpose_minor()

SSR4 transpose_minor ( ) const

Transpose minor axes, no-op.