v0.15.0
Loading...
Searching...
No Matches
adJoint.hpp
Go to the documentation of this file.
1/** \file adJoint.hpp
2 * \brief Operators managing HO geometry derivatives
3
4*/
5
6#ifndef __ADJOINT_HPP__
7#define __ADJOINT_HPP__
8
9namespace MoFEM {
10
11template <typename EleOp> struct AdJoint {
12
14 using OpType = typename EleOp::OpType;
15
16 template <IntegrationType I> struct Integration {
17
18 /**
19 * @brief Operator to compute cofactor matrix derivatives for higher-order geometry
20 *
21 * The cofactor matrix \f$\text{cof}(\mathbf{J})\f$ of the Jacobian matrix \f$\mathbf{J}\f$
22 * is defined as:
23 * \f[
24 * \text{cof}(\mathbf{J}) = \det(\mathbf{J}) \cdot \mathbf{J}^{-T}
25 * \f]
26 * where \f$\mathbf{J}^{-T} = (\mathbf{J}^{-1})^T\f$ is the transpose of the inverse Jacobian.
27 *
28 * For a 2D case with Jacobian matrix:
29 * \f[
30 * \mathbf{J} = \begin{pmatrix}
31 * J_{11} & J_{12} \\
32 * J_{21} & J_{22}
33 * \end{pmatrix}
34 * \f]
35 *
36 * The cofactor matrix is:
37 * \f[
38 * \text{cof}(\mathbf{J}) = \begin{pmatrix}
39 * J_{22} & -J_{12} \\
40 * -J_{21} & J_{11}
41 * \end{pmatrix}
42 * \f]
43 *
44 * This operator computes the derivative of the cofactor with respect to
45 * geometry parameters, which is essential for higher-order geometry sensitivity analysis.
46 * The computed quantity is:
47 * \f[
48 * \frac{d}{d\alpha}\text{cof}(\mathbf{J}) = \frac{d}{d\alpha}(\det(\mathbf{J}) \cdot \mathbf{J}^{-T})
49 * \f]
50 *
51 * @tparam SPACE_DIM Spatial dimension (2D or 3D)
52 */
53 template <int SPACE_DIM>
55
56 };
57};
58
59}; // namespace MoFEM
60
61#endif
implementation of Data Operators for Forces and Sources
Definition Common.hpp:10
typename EleOp::OpType OpType
Definition adJoint.hpp:14
Data on single entity (This is passed as argument to DataOperator::doWork)
[declarations of templates]