25#include "neml2/misc/math.h"
26#include "neml2/tensors/SSR4.h"
27#include "neml2/tensors/Scalar.h"
28#include "neml2/tensors/SR2.h"
29#include "neml2/tensors/R4.h"
30#include "neml2/tensors/R5.h"
31#include "neml2/tensors/SSFR5.h"
32#include "neml2/tensors/Rot.h"
37 :
SSR4(math::full_to_mandel(
39 (T + T.transpose_minor() +
R4(T.transpose(0, 1)) +
R4(T.transpose(2, 3))) / 4.0),
47 return SSR4(torch::tensor({{1, 1, 1, 0, 0, 0},
60 return SSR4(torch::eye(6, options), 0);
81 const auto pf =
E / ((1.0 +
nu) * (1.0 - 2.0 *
nu));
82 const auto C1 = (1.0 -
nu) *
pf;
84 const auto C4 = (1.0 - 2.0 *
nu) *
pf;
BatchTensor base_transpose(TorchSize d1, TorchSize d2) const
Transpose two base dimensions.
Definition BatchTensorBase.cxx:299
BatchTensor base_index(const TorchSlice &indices) const
Return an index sliced on the base dimensions.
Definition BatchTensorBase.cxx:193
static Derived zeros_like(const Derived &other)
Zero tensor like another, i.e. same batch and base shapes, same tensor options, etc.
Definition BatchTensorBase.cxx:59
The wrapper (decorator) for cross-referencing unresolved values at parse time.
Definition CrossRef.h:52
The (logical) full fourth order tensor.
Definition R4.h:43
R4 rotate(const Rot &r) const
Rotate.
Definition R4.cxx:48
R5 drotate(const Rot &r) const
Derivative of the rotated tensor w.r.t. the Rodrigues vector.
Definition R4.cxx:58
Rotation stored as modified Rodrigues parameters.
Definition Rot.h:49
The (logical) symmetric second order tensor.
Definition SR2.h:46
The logical fifth order tensor with minor symmetry in the 1st and 2nd dimensions as well as in the 3r...
Definition SSFR5.h:38
The (logical) symmetric fourth order tensor, with symmetry in the first two dimensionss as well as in...
Definition SSR4.h:44
SSFR5 drotate(const Rot &r) const
Derivative of the rotated tensor w.r.t. the Rodrigues vector.
Definition SSR4.cxx:109
SSR4 transpose_minor() const
Transpose minor axes, no-op.
Definition SSR4.cxx:130
static SSR4 identity_dev(const torch::TensorOptions &options=default_tensor_options())
Create the deviatoric identity tensor .
Definition SSR4.cxx:70
static SSR4 identity(const torch::TensorOptions &options=default_tensor_options())
Create the identity tensor .
Definition SSR4.cxx:45
static SSR4 identity_sym(const torch::TensorOptions &options=default_tensor_options())
Create the symmetric identity tensor .
Definition SSR4.cxx:58
SSR4(const R4 &T)
Initialize with the symmetrized fourth order tensor.
Definition SSR4.cxx:36
Scalar operator()(TorchSize i, TorchSize j, TorchSize k, TorchSize l) const
Accessor.
Definition SSR4.cxx:116
static SSR4 identity_vol(const torch::TensorOptions &options=default_tensor_options())
Create the volumetric identity tensor .
Definition SSR4.cxx:64
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.
Definition SSR4.cxx:76
SSR4 rotate(const Rot &r) const
Rotate.
Definition SSR4.cxx:103
SSR4 transpose_major() const
Transpose major axes.
Definition SSR4.cxx:136
SSR4 inverse() const
Definition SSR4.cxx:124
The (logical) scalar.
Definition Scalar.h:38
BatchTensor inv(const BatchTensor &m)
Inverse of a square matrix.
Definition math.cxx:334
constexpr Real mandel_factor(TorchSize i)
Definition math.h:50
constexpr TorchSize mandel_reverse_index[3][3]
Definition math.h:43
BatchTensor full_to_mandel(const BatchTensor &full, TorchSize dim)
Convert a BatchTensor from full notation to Mandel notation.
Definition math.cxx:169
Definition CrossRef.cxx:32
BatchTensor operator*(const BatchTensor &a, const BatchTensor &b)
Definition BatchTensor.cxx:153
int64_t TorchSize
Definition types.h:35
void neml_assert_batch_broadcastable_dbg(T &&...)
A helper function to assert that (in Debug mode) all tensors are batch-broadcastable.
TorchSize broadcast_batch_dim(T &&...)
The batch dimension after broadcasting.
double Real
Definition types.h:33
void neml_assert_broadcastable_dbg(T &&...)
A helper function to assert (in Debug mode) that all tensors are broadcastable.