Notation
Explanation of the notation used throughout the documentation.
Most of the notation follows the same principles as that of [6].
Notation regarding geometry
Please see the table below for a description of the symbols used for geometric objects:
| Notation | Description |
|---|---|
| Denotes a domain with Lipschitz boundary. | |
| Denotes the Lipschitz boundary of the domain . | |
| The Dirichlet part of the boundary where essential conditions are imposed. | |
| The Neumann part of the boundary where natural conditions are imposed. | |
| Denotes a polyhedral complex (mesh) which discretizes the domain . The subscript refers to the mesh size parameter. In Rodin, this is represented by the Mesh class. | |
| Represents the set of all faces in the mesh . | |
| Represents the boundary faces of the mesh . A face is on the boundary if it belongs to exactly one cell. | |
| Represents the interior faces (interfaces) of the mesh . An interior face belongs to exactly two cells. | |
| A single cell (element) of the mesh . Each cell is a Polytope (triangle, tetrahedron, etc.). | |
| The reference element. All local computations (basis function evaluation, quadrature) are performed on and mapped to each physical cell . | |
| The geometric transformation mapping the reference element to the physical cell. Its Jacobian is accessible via Point:: | |
| Mesh size parameter: the maximum diameter over all cells . | |
| The topological dimension of the mesh (2 for surface meshes, 3 for volumetric). Retrieved by Mesh:: | |
| The outward unit normal vector on or on a face. |
Notation regarding function spaces
| Notation | Description |
|---|---|
| The space of square-integrable functions on . | |
| The Sobolev space of functions in whose gradient is also in . | |
| The subspace of with zero trace on (homogeneous Dirichlet). | |
A finite element space built on the mesh . Subscript indicates discrete. In Rodin, created by instantiating P0, P1, or H1. | |
| The space of polynomials of total degree at most . | |
Piecewise constant functions on each cell. In Rodin: P0. One DOF per cell, discontinuous across cell boundaries. | |
Piecewise linear, globally continuous functions. In Rodin: P1. One DOF per vertex, -conforming. | |
Continuous piecewise polynomials of degree . In Rodin: H1<k>. DOFs on vertices, edges, and cell interiors. |
Notation regarding variational methods
| Notation | Description |
|---|---|
The trial function (unknown, sought solution). Corresponds to TrialFunction in Rodin. | |
The test function (weighting function). Corresponds to TestFunction in Rodin. | |
The discrete (finite element) approximation of . After solving, its coefficients are stored in the GridFunction associated with the trial function. | |
A bilinear form over the reals. Over the complex numbers it is linear in the trial function and conjugate-linear in the test function . Built from Integral expressions involving both trial and test functions. Assembled into the system matrix . | |
A linear form over the reals and a conjugate-linear test functional over the complex numbers. Built from Integral expressions involving only the test function. Assembled into the right-hand side vector . | |
A source term or right-hand-side function. In Rodin, represented as a RealFunction or a lambda. | |
| A boundary data function (Dirichlet or Neumann data). |
Real and complex form convention
Rodin writes form arguments in trial-first, test-second order. Its scalar product conjugates the right-hand operand:
This is the convention implemented by Math::dot(lhs, rhs). Consequently, over complex-valued spaces a LinearForm is a conjugate-linear test functional,
and a BilinearForm is sesquilinear: linear in its trial argument and conjugate-linear in its test argument,
For trial basis functions and test basis functions , assembly therefore stores
For example, Integral(c * u, v) represents an integrand proportional to : neither the coefficient nor the trial function is conjugated. An explicit Conjugate expression may be used when a different mathematical form is required.
Eigen expresses the assembled action as v.dot(A * u), and PETSc expresses it as VecDot(A * u, v). Eigen conjugates its first operand, whereas PETSc conjugates its second operand. The differing argument orders produce the same action.
The class names LinearForm and BilinearForm are retained for the common real and complex APIs. Over real-valued spaces conjugation is the identity, so the forms reduce to ordinary linear and bilinear forms. Sesquilinearity alone does not imply that is Hermitian; is a separate property of a particular form.
Notation regarding differential operators
| Notation | Rodin code | Description |
|---|---|---|
Grad(u) | Gradient of a scalar field. Returns a vector of dimension . | |
Div(u) | Divergence of a vector field. Returns a scalar. | |
| — | Laplacian. Not used directly; appears via integration by parts as Integral(Grad(u), Grad(v)). | |
Jacobian(u) | Jacobian (gradient) of a vector field. Returns a matrix. | |
Transpose(Jacobian(u)) | Transpose of the Jacobian. | |
| See below | Symmetric gradient (linearized strain tensor): . | |
Trace(A) | Trace of a matrix: . | |
Dot(A, B) | Frobenius (double-contraction) inner product of two matrices: . For real matrices the conjugation is the identity. | |
Frobenius(A) | Frobenius norm: . | |
Component(u, i) | The -th component of a vector function (0-indexed). Shorthand: u.x(), u.y(), u.z(). |
Notation regarding integrals
| Notation | Rodin code | Description |
|---|---|---|
Integral(f, v) | Domain integral of . When both arguments are scalar, this is ordinary multiplication. When both are vectors, it is the dot product. | |
Integral(Grad(u), Grad(v)) | Stiffness integral. The dot product of the two gradient vectors is taken automatically. | |
Integral(u, v) | Mass integral. | |
BoundaryIntegral(g, v).over(GammaN) | Boundary integral on . The .over() method restricts the integration to boundary faces with the given attribute. | |
FaceIntegral(h, v) | Integral over all faces (interior and boundary). | |
InterfaceIntegral(h, v) | Integral over interior faces only (excluding boundary). |
Notation regarding DG operators
| Notation | Rodin code | Description |
|---|---|---|
Jump(u) | Jump of across an internal face. | |
Average(u) | Average of across an internal face. |
Special Functions and Operators
| Notation | Rodin code | Description |
|---|---|---|
BoundaryNormal(mesh) | Outward unit normal on . Used in boundary integrals. | |
FaceNormal(mesh) | Unit normal on mesh faces. Used in DG formulations for numerical fluxes. | |
F::x, F::y, F::z | Coordinate projection functions. E.g., F::x returns the -coordinate at a point. | |
IdentityMatrix(n) | identity matrix function. | |
Re(u) | Real part of a complex-valued function. | |
Im(u) | Imaginary part of a complex-valued function. | |
Conjugate(u) | Complex conjugate of a complex-valued function. | |
Zero() | Zero function (scalar or vector, deduced from context). |
Notation regarding solid mechanics
| Notation | Rodin code | Description |
|---|---|---|
0.5 * (Jacobian(u) + Transpose(Jacobian(u))) | Infinitesimal (linearized) strain tensor. | |
| — | Cauchy stress tensor (Hooke's law). | |
lambda, mu | Lamé parameters: , . | |
KinematicState::getDeformationGradient() | Deformation gradient . | |
KinematicState::getJacobian() | . | |
KinematicState::getRightCauchyGreenTensor() | Right Cauchy-Green tensor . | |
| — | Green-Lagrange strain . | |
Solid::FirstPiolaKirchhoffStress | First Piola-Kirchhoff stress . | |
IsotropicInvariants | Principal invariants of . | |
| — | Strain energy density function (hyperelastic stored energy). |
Notation regarding integral equations
| Notation | Rodin code | Description |
|---|---|---|
Potential(K, f) | Integral convolution with kernel . |