| 
    libMesh
    
   | 
 
This class defines a tensor in LIBMESH_DIM dimensional Real or Complex space. More...
#include <exact_solution.h>
Public Types | |
| typedef T | value_type | 
| Helper typedef for C++98 generic programming.  More... | |
| typedef std::tuple< unsigned int, unsigned int > | index_type | 
| Helper typedef for generic index programming.  More... | |
Public Member Functions | |
| TensorValue () | |
| Empty constructor.  More... | |
| TensorValue (const T &xx, const T &xy=0, const T &xz=0, const T &yx=0, const T &yy=0, const T &yz=0, const T &zx=0, const T &zy=0, const T &zz=0) | |
| Constructor-from-T.  More... | |
| template<typename Scalar > | |
| TensorValue (const Scalar &xx, const Scalar &xy=0, const Scalar &xz=0, const Scalar &yx=0, const Scalar &yy=0, const Scalar &yz=0, const Scalar &zx=0, const Scalar &zy=0, typename boostcopy::enable_if_c< ScalarTraits< Scalar >::value, const Scalar >::type &zz=0) | |
| Constructor-from-scalars.  More... | |
| template<typename T2 > | |
| TensorValue (const TypeVector< T2 > &vx) | |
| Constructor.  More... | |
| template<typename T2 > | |
| TensorValue (const TypeVector< T2 > &vx, const TypeVector< T2 > &vy) | |
| Constructor.  More... | |
| template<typename T2 > | |
| TensorValue (const TypeVector< T2 > &vx, const TypeVector< T2 > &vy, const TypeVector< T2 > &vz) | |
| Constructor.  More... | |
| template<typename T2 > | |
| TensorValue (const TensorValue< T2 > &p) | |
| Copy-constructor.  More... | |
| template<typename T2 > | |
| TensorValue (const TypeTensor< T2 > &p) | |
| Copy-constructor.  More... | |
| TensorValue (const TypeTensor< Real > &p_re, const TypeTensor< Real > &p_im) | |
Constructor that takes two TypeTensor<Real> representing the real and imaginary part as arguments.  More... | |
| template<typename Scalar > | |
| boostcopy::enable_if_c< ScalarTraits< Scalar >::value, TensorValue & >::type | operator= (const Scalar &libmesh_dbg_var(p)) | 
| Assignment-from-scalar operator.  More... | |
| template<typename T2 > | |
| void | assign (const TypeTensor< T2 > &) | 
| Assign to this tensor without creating a temporary.  More... | |
| const T & | operator() (const unsigned int i, const unsigned int j) const | 
| T & | operator() (const unsigned int i, const unsigned int j) | 
| ConstTypeTensorColumn< T > | slice (const unsigned int i) const | 
| TypeTensorColumn< T > | slice (const unsigned int i) | 
| TypeVector< T > | row (const unsigned int r) const | 
| template<typename T2 > | |
| TypeTensor< typename CompareTypes< T, T2 >::supertype > | operator+ (const TypeTensor< T2 > &) const | 
| Add another tensor to this tensor.  More... | |
| template<typename T2 > | |
| const TypeTensor< T > & | operator+= (const TypeTensor< T2 > &) | 
| Add to this tensor.  More... | |
| template<typename T2 > | |
| void | add (const TypeTensor< T2 > &) | 
| Add to this tensor without creating a temporary.  More... | |
| template<typename T2 > | |
| void | add_scaled (const TypeTensor< T2 > &, const T &) | 
| Add a scaled tensor to this tensor without creating a temporary.  More... | |
| template<typename T2 > | |
| TypeTensor< typename CompareTypes< T, T2 >::supertype > | operator- (const TypeTensor< T2 > &) const | 
| Subtract a tensor from this tensor.  More... | |
| TypeTensor< T > | operator- () const | 
| template<typename T2 > | |
| const TypeTensor< T > & | operator-= (const TypeTensor< T2 > &) | 
| Subtract from this tensor.  More... | |
| template<typename T2 > | |
| void | subtract (const TypeTensor< T2 > &) | 
| Subtract from this tensor without creating a temporary.  More... | |
| template<typename T2 > | |
| void | subtract_scaled (const TypeTensor< T2 > &, const T &) | 
| Subtract a scaled value from this tensor without creating a temporary.  More... | |
| template<typename Scalar > | |
| auto | operator* (const Scalar &scalar) const -> typename boostcopy::enable_if_c< ScalarTraits< Scalar >::value, TypeTensor< decltype(T() *scalar)>>::type | 
| Multiply this tensor by a scalar value.  More... | |
| template<typename T2 > | |
| TypeTensor< typename CompareTypes< T, T2 >::supertype > | operator* (const TypeTensor< T2 > &) const | 
| Multiply 2 tensors together, i.e.  More... | |
| template<typename T2 > | |
| TypeVector< typename CompareTypes< T, T2 >::supertype > | operator* (const TypeVector< T2 > &) const | 
| Right-multiply this tensor by a vector, i.e.  More... | |
| template<typename Scalar , typename boostcopy::enable_if_c< ScalarTraits< Scalar >::value, int >::type = 0> | |
| const TypeTensor< T > & | operator*= (const Scalar &factor) | 
| Multiply this tensor by a scalar value in place.  More... | |
| template<typename T2 > | |
| const TypeTensor< T > & | operator*= (const TypeTensor< T2 > &) | 
| Multiply this tensor by a tensor value in place.  More... | |
| template<typename Scalar > | |
| boostcopy::enable_if_c< ScalarTraits< Scalar >::value, TypeTensor< typename CompareTypes< T, Scalar >::supertype > >::type | operator/ (const Scalar &) const | 
| Divide each entry of this tensor by a scalar value.  More... | |
| const TypeTensor< T > & | operator/= (const T &) | 
| Divide each entry of this tensor by a scalar value.  More... | |
| template<typename T2 > | |
| CompareTypes< T, T2 >::supertype | contract (const TypeTensor< T2 > &) const | 
| Multiply 2 tensors together to return a scalar, i.e.  More... | |
| template<typename T2 > | |
| TypeVector< typename CompareTypes< T, T2 >::supertype > | left_multiply (const TypeVector< T2 > &p) const | 
| Left-multiply this tensor by a vector, i.e.  More... | |
| TypeTensor< T > | transpose () const | 
| TypeTensor< T > | inverse () const | 
| void | solve (const TypeVector< T > &b, TypeVector< T > &x) const | 
| Solve the 2x2 or 3x3 system of equations A*x = b for x by directly inverting A and multiplying it by b.  More... | |
| auto | size () const -> decltype(std::norm(T())) | 
| auto | norm () const -> decltype(std::norm(T())) | 
| auto | size_sq () const -> decltype(std::norm(T())) | 
| auto | norm_sq () const -> decltype(std::norm(T())) | 
| bool | is_zero () const | 
| T | det () const | 
| T | tr () const | 
| void | zero () | 
| Set all entries of the tensor to 0.  More... | |
| bool | operator== (const TypeTensor< T > &rhs) const | 
| bool | operator< (const TypeTensor< T > &rhs) const | 
| template<> | |
| bool | operator< (const TypeTensor< Real > &rhs) const | 
| template<> | |
| bool | operator< (const TypeTensor< Complex > &rhs) const | 
| bool | operator> (const TypeTensor< T > &rhs) const | 
| template<> | |
| bool | operator> (const TypeTensor< Real > &rhs) const | 
| template<> | |
| bool | operator> (const TypeTensor< Complex > &rhs) const | 
| void | print (std::ostream &os=libMesh::out) const | 
Formatted print to a stream which defaults to libMesh::out.  More... | |
| void | write_unformatted (std::ostream &out, const bool newline=true) const | 
Unformatted print to the stream out.  More... | |
Protected Attributes | |
| T | _coords [LIBMESH_DIM *LIBMESH_DIM] | 
The coordinates of the TypeTensor.  More... | |
This class defines a tensor in LIBMESH_DIM dimensional Real or Complex space.
The typedef RealTensorValue always defines a real-valued tensor, and NumberTensorValue defines a real or complex-valued tensor depending on how the library was configured.
Definition at line 53 of file exact_solution.h.
      
  | 
  inherited | 
Helper typedef for generic index programming.
Definition at line 144 of file type_tensor.h.
      
  | 
  inherited | 
Helper typedef for C++98 generic programming.
Definition at line 139 of file type_tensor.h.
      
  | 
  inline | 
Empty constructor.
Gives the tensor 0 in LIBMESH_DIM dimensional T space. 
Definition at line 156 of file tensor_value.h.
      
  | 
  inlineexplicit | 
Constructor-from-T.
By default sets higher dimensional entries to 0.
Definition at line 165 of file tensor_value.h.
      
  | 
  inlineexplicit | 
Constructor-from-scalars.
By default sets higher dimensional entries to 0.
Definition at line 182 of file tensor_value.h.
      
  | 
  inline | 
      
  | 
  inline | 
      
  | 
  inline | 
      
  | 
  inline | 
Copy-constructor.
Definition at line 202 of file tensor_value.h.
      
  | 
  inline | 
Copy-constructor.
Definition at line 245 of file tensor_value.h.
      
  | 
  inline | 
Constructor that takes two TypeTensor<Real> representing the real and imaginary part as arguments. 
Definition at line 254 of file tensor_value.h.
      
  | 
  inlineinherited | 
Add to this tensor without creating a temporary.
Definition at line 858 of file type_tensor.h.
References libMesh::TypeTensor< T >::_coords.
      
  | 
  inlineinherited | 
Add a scaled tensor to this tensor without creating a temporary.
Definition at line 869 of file type_tensor.h.
References libMesh::TypeTensor< T >::_coords.
Referenced by libMesh::HPCoarsenTest::add_projection(), libMesh::System::calculate_norm(), libMesh::MeshFunction::hessian(), libMesh::WeightedPatchRecoveryErrorEstimator::EstimateError::operator()(), libMesh::PatchRecoveryErrorEstimator::EstimateError::operator()(), libMesh::System::point_hessian(), and libMesh::HPCoarsenTest::select_refinement().
      
  | 
  inlineinherited | 
Assign to this tensor without creating a temporary.
Definition at line 729 of file type_tensor.h.
References libMesh::TypeTensor< T >::_coords.
      
  | 
  inlineinherited | 
Multiply 2 tensors together to return a scalar, i.e.
Multiply 2 tensors together, i.e.
\( \sum_{ij} A_{ij} B_{ij} \) The tensors may contain different numeric types. Also known as the "double inner product" or "double dot product" of tensors.
sum Aij*Bij. The tensors may be of different types.
Definition at line 1286 of file type_tensor.h.
References libMesh::TypeTensor< T >::_coords.
Referenced by libMesh::HPCoarsenTest::add_projection(), libMesh::TensorTools::inner_product(), and libMesh::HPCoarsenTest::select_refinement().
      
  | 
  inlineinherited | 
Because these are 3x3 tensors at most, we don't do an LU decomposition like DenseMatrix does.
Definition at line 1328 of file type_tensor.h.
Referenced by libMesh::Sphere::Sphere().
      
  | 
  inlineinherited | 
Definition at line 1098 of file type_tensor.h.
References A.
Referenced by NonlinearNeoHookeCurrentConfig::calculate_stress(), and TypeTensorTest::testInverse().
      
  | 
  inlineinherited | 
Definition at line 1318 of file type_tensor.h.
Referenced by TypeTensorTest::testIsZero().
      
  | 
  inlineinherited | 
Left-multiply this tensor by a vector, i.e.
matrix-vector product. The tensor and vector may contain different numeric types.
Definition at line 1229 of file type_tensor.h.
Referenced by libMesh::operator*().
      
  | 
  inlineinherited | 
Definition at line 1310 of file type_tensor.h.
References libMesh::TensorTools::norm_sq(), and std::sqrt().
Referenced by libMesh::System::calculate_norm().
      
  | 
  inlineinherited | 
Definition at line 1390 of file type_tensor.h.
References libMesh::TensorTools::norm_sq(), and libMesh::Real.
Referenced by libMesh::UniformRefinementEstimator::_estimate_error(), libMesh::System::calculate_norm(), libMesh::ExactErrorEstimator::find_squared_element_error(), and libMesh::HPCoarsenTest::select_refinement().
      
  | 
  inlineinherited | 
Definition at line 758 of file type_tensor.h.
      
  | 
  inlineinherited | 
Definition at line 739 of file type_tensor.h.
      
  | 
  inlineinherited | 
Multiply this tensor by a scalar value.
Definition at line 983 of file type_tensor.h.
      
  | 
  inlineinherited | 
Multiply 2 tensors together, i.e.
matrix-matrix product. The tensors may contain different numeric types.
Definition at line 1251 of file type_tensor.h.
      
  | 
  inlineinherited | 
Right-multiply this tensor by a vector, i.e.
matrix-vector product. The tensor and vector may contain different numeric types.
Definition at line 1215 of file type_tensor.h.
      
  | 
  inlineinherited | 
Multiply this tensor by a scalar value in place.
Definition at line 282 of file type_tensor.h.
References libMesh::TypeTensor< T >::_coords.
      
  | 
  inlineinherited | 
Multiply this tensor by a tensor value in place.
Definition at line 1265 of file type_tensor.h.
      
  | 
  inlineinherited | 
Add another tensor to this tensor.
Definition at line 812 of file type_tensor.h.
References libMesh::TypeTensor< T >::_coords.
      
  | 
  inlineinherited | 
      
  | 
  inlineinherited | 
Definition at line 949 of file type_tensor.h.
      
  | 
  inlineinherited | 
Subtract a tensor from this tensor.
Definition at line 882 of file type_tensor.h.
References libMesh::TypeTensor< T >::_coords.
      
  | 
  inlineinherited | 
Subtract from this tensor.
Definition at line 916 of file type_tensor.h.
      
  | 
  inlineinherited | 
Divide each entry of this tensor by a scalar value.
Definition at line 1033 of file type_tensor.h.
      
  | 
  inlineinherited | 
Divide each entry of this tensor by a scalar value.
Definition at line 1198 of file type_tensor.h.
      
  | 
  inherited | 
      
  | 
  inherited | 
Definition at line 113 of file type_tensor.C.
      
  | 
  inherited | 
true if this tensor is "less" than another. Useful for sorting. 
      
  | 
  inline | 
Assignment-from-scalar operator.
Used only to zero out tensors.
Definition at line 135 of file tensor_value.h.
References libMesh::TypeTensor< T >::zero().
      
  | 
  inlineinherited | 
true if two tensors are equal, false otherwise. Definition at line 1402 of file type_tensor.h.
References libMesh::TypeTensor< T >::_coords, std::abs(), and libMesh::TOLERANCE.
      
  | 
  inherited | 
      
  | 
  inherited | 
Definition at line 129 of file type_tensor.C.
      
  | 
  inherited | 
true if this tensor is "greater" than another. 
      
  | 
  inherited | 
Formatted print to a stream which defaults to libMesh::out. 
Definition at line 39 of file type_tensor.C.
      
  | 
  inlineinherited | 
Definition at line 798 of file type_tensor.h.
References libMesh::TypeVector< T >::_coords.
      
  | 
  inlineinherited | 
Definition at line 1299 of file type_tensor.h.
References std::norm().
      
  | 
  inlineinherited | 
Definition at line 1379 of file type_tensor.h.
References libMesh::TensorTools::norm_sq().
      
  | 
  inlineinherited | 
Definition at line 788 of file type_tensor.h.
      
  | 
  inlineinherited | 
Definition at line 778 of file type_tensor.h.
      
  | 
  inlineinherited | 
Solve the 2x2 or 3x3 system of equations A*x = b for x by directly inverting A and multiplying it by b.
x vector. Definition at line 1147 of file type_tensor.h.
      
  | 
  inlineinherited | 
Subtract from this tensor without creating a temporary.
Definition at line 928 of file type_tensor.h.
References libMesh::TypeTensor< T >::_coords.
      
  | 
  inlineinherited | 
Subtract a scaled value from this tensor without creating a temporary.
Definition at line 939 of file type_tensor.h.
References libMesh::TypeTensor< T >::_coords.
Referenced by libMesh::HPCoarsenTest::select_refinement().
      
  | 
  inlineinherited | 
Definition at line 1351 of file type_tensor.h.
      
  | 
  inlineinherited | 
Definition at line 1068 of file type_tensor.h.
Referenced by assemble_shell().
      
  | 
  inherited | 
Unformatted print to the stream out. 
Simply prints the elements of the tensor separated by spaces and newlines.
Definition at line 83 of file type_tensor.C.
References libMesh::libmesh_assert().
      
  | 
  inlineinherited | 
Set all entries of the tensor to 0.
Definition at line 1368 of file type_tensor.h.
Referenced by NonlinearNeoHookeCurrentConfig::init_for_qp(), libMesh::TensorValue< T >::operator=(), and libMesh::TypeTensor< T >::operator=().
      
  | 
  protectedinherited | 
The coordinates of the TypeTensor. 
Definition at line 477 of file type_tensor.h.
Referenced by libMesh::TypeTensor< T >::add(), libMesh::TypeTensor< T >::add_scaled(), libMesh::TypeTensor< T >::assign(), libMesh::TypeTensor< T >::contract(), libMesh::TypeTensor< T >::operator*=(), libMesh::TypeTensor< T >::operator+(), libMesh::TypeTensor< T >::operator-(), libMesh::TypeTensor< T >::operator==(), libMesh::TypeTensor< T >::subtract(), libMesh::TypeTensor< T >::subtract_scaled(), and libMesh::TypeTensor< T >::TypeTensor().
 1.8.16