Rodin/Variational/Jacobian.h file

Jacobian matrix operator for vector-valued functions.

This file defines the Jacobian class, which computes the Jacobian matrix (matrix of all first-order partial derivatives) of vector-valued functions in variational formulations.

Mathematical Foundation

For a vector-valued function $ \mathbf{u} : \Omega \subset \mathbb{R}^d \to \mathbb{R}^n $ , the Jacobian matrix is defined as:

\[ J_{ij} = \frac{\partial u_i}{\partial x_j} \]

resulting in an $ n \times d $ matrix.

Special Cases

  • When $ n = d $ , the determinant $ \det(J) $ appears in change of variables
  • For $ d = n = 2,3 $ , related to deformation gradient in mechanics
  • Transpose $ J^T $ gives the gradient of components

Applications

  • Nonlinear elasticity: deformation gradient tensor
  • Fluid dynamics: velocity gradient tensor
  • Differential geometry: metric tensor computations
  • Coordinate transformations

Usage Example

// Displacement gradient for elasticity
P1 Vh(mesh, mesh.getSpaceDimension());
GridFunction<P1> u(Vh);
auto F = Jacobian(u);  // Deformation gradient F = ∇u

Namespaces

namespace Rodin
The Rodin library for Shape and Topology Optimization.
namespace Rodin::Variational
Module which provides the necessary tools for constructing variational problems.

Classes

template<class FES, class Data, class Derived>
class Rodin::Variational::JacobianBase<GridFunction<FES, Data>, Derived>
Jacobian of a P1 GridFunction.