Feel++ 0.111.0-preview.14
Finite Element Embedded Library in C++
tensorformat.hpp File Reference

Symmetric tensor storage, output-order, and scaling utilities. More...

Classes

struct  Feel::SymmetricTensorFormat
 Field-level symmetric tensor format. More...
 

Namespaces

namespace  Feel
 -*- mode: c++; coding: utf-8; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; show-trailing-whitespace: t -*-
 

Enumerations

enum class  Feel::SymmetricTensorOrder {
  Feel::Storage , Feel::DiagonalFirst , Feel::VtkTensor6 , Feel::EnsightTensor6 ,
  Feel::XdmfTensor6
}
 Output order for packed symmetric tensor components. More...
 
enum class  Feel::SymmetricTensorScaling { Feel::Tensor , Feel::EngineeringShear , Feel::Mandel }
 Scaling convention applied to off-diagonal symmetric tensor entries. More...
 

Functions

template<SymmetricTensorFormatLike FormatT>
constexpr uint16_type Feel::symmetricTensorComponentCount (uint16_type n, FormatT const &format)
 Number of output components for a dimension/format pair. More...
 
constexpr uint16_type Feel::symmetricTensorComponentCount (uint16_type n, SymmetricTensorOrder order)
 Number of output components for a dimension/order pair. More...
 
template<SymmetricTensorFormatLike FormatT>
constexpr char const * Feel::symmetricTensorComponentLabel (uint16_type outputSlot, uint16_type n, FormatT const &format)
 Component label for an output slot in a format object. More...
 
constexpr char const * Feel::symmetricTensorComponentLabel (uint16_type outputSlot, uint16_type n, SymmetricTensorOrder order)
 Component label for an output slot. More...
 
template<typename T = double>
constexpr T Feel::symmetricTensorComponentScale (uint16_type i, uint16_type j, uint16_type n, SymmetricTensorScaling scaling)
 Scaling factor for a tensor component. More...
 
constexpr uint16_type Feel::symmetricTensorInvalidSlot ()
 Sentinel value for unused entries in fixed-size mapping arrays. More...
 
constexpr bool Feel::symmetricTensorIsShearComponent (uint16_type i, uint16_type j, uint16_type n)
 Check whether a tensor component is off-diagonal. More...
 
constexpr bool Feel::symmetricTensorIsShearStorageSlot (uint16_type storageSlot, uint16_type n)
 Check whether a compact storage slot represents an off-diagonal component. More...
 
constexpr bool Feel::symmetricTensorIsTensor6Order (SymmetricTensorOrder order)
 Check whether an order describes a six-component exporter tuple. More...
 
constexpr char const * Feel::symmetricTensorOrderName (SymmetricTensorOrder order)
 Stable metadata name for a symmetric tensor output order. More...
 
template<SymmetricTensorFormatLike FormatT>
constexpr uint16_type Feel::symmetricTensorOutputSlot (uint16_type i, uint16_type j, uint16_type n, FormatT const &format)
 Map a symmetric tensor component to an output slot for a format object. More...
 
constexpr uint16_type Feel::symmetricTensorOutputSlot (uint16_type i, uint16_type j, uint16_type n, SymmetricTensorOrder order)
 Map a symmetric tensor component to an output slot. More...
 
template<SymmetricTensorFormatLike FormatT>
constexpr uint16_type Feel::symmetricTensorOutputSlotFromStorage (uint16_type storageSlot, uint16_type n, FormatT const &format)
 Map a compact storage slot to an output slot for a format object. More...
 
constexpr uint16_type Feel::symmetricTensorOutputSlotFromStorage (uint16_type storageSlot, uint16_type n, SymmetricTensorOrder order)
 Map a compact storage slot to an output slot. More...
 
template<typename T = double>
constexpr T Feel::symmetricTensorScale (bool isShear, SymmetricTensorScaling scaling)
 Scaling factor for a diagonal or off-diagonal component. More...
 
constexpr char const * Feel::symmetricTensorScalingName (SymmetricTensorScaling scaling)
 Stable metadata name for a symmetric tensor scaling convention. More...
 
constexpr std::array< uint16_type, 2 > Feel::symmetricTensorStorageComponent (uint16_type storageSlot, uint16_type n)
 Component indices represented by a compact packed-storage slot. More...
 
constexpr uint16_type Feel::symmetricTensorStorageComponentCount (uint16_type n)
 Number of compact packed-storage components for a symmetric tensor. More...
 
constexpr uint16_type Feel::symmetricTensorStorageIndex (uint16_type i, uint16_type j, uint16_type n)
 Legacy compact packed-storage slot for a symmetric tensor component. More...
 
template<typename T = double>
constexpr T Feel::symmetricTensorStorageScale (uint16_type storageSlot, uint16_type n, SymmetricTensorScaling scaling)
 Scaling factor for a compact storage slot. More...
 
constexpr std::array< uint16_type, 6 > Feel::symmetricTensorStorageToOutputMap (uint16_type n, SymmetricTensorOrder order)
 Fixed-size compact-storage-to-output-slot map. More...
 
constexpr bool Feel::symmetricTensorSupportedDimension (uint16_type n)
 Check whether a tensor dimension is supported by these helpers. More...
 

Detailed Description

Symmetric tensor storage, output-order, and scaling utilities.

This header centralizes field-level symmetric tensor conventions used by matrix fields and exporters. It deliberately depends only on low-level Feel++ traits for the legacy packed storage index and does not pull in VF expression machinery.