#ifndef FESA_SRC_FESA_ELEMENTS_HEX8_LINEAR_TANGENT_CACHE_H_ #define FESA_SRC_FESA_ELEMENTS_HEX8_LINEAR_TANGENT_CACHE_H_ #include #include "fesa/math/matrix.h" namespace fesa::hex8_internal { /// @brief Shares one immutable paired Hessian among identical element copies. /// @note Only call_once preparation writes. Linear readers synchronize through /// the flag; nonlinear trials do not access this optional state. At most two /// 24-by-24 matrices (9216 value bytes) are retained after successful preparation. struct LinearTangentCache { std::once_flag preparation; bool ready{false}; Matrix high{0U, 0U}; Matrix low{0U, 0U}; }; } // namespace fesa::hex8_internal #endif // FESA_SRC_FESA_ELEMENTS_HEX8_LINEAR_TANGENT_CACHE_H_