Commuting projections
This page describes the canonical lowest-order FEEC interpolation operators.
Mathematical objects and DOFs
Π0: scalar 0-form interpolation by vertex evaluation.Π1: 1-form interpolation by oriented edge integrals.Π2: 2-form interpolation by oriented face integrals.
Commuting identities
For suitable smooth fields, the layer enforces the canonical discrete identities:
Π1(df) ≈ d0 Π0(f)Π2(dα) ≈ d1 Π1(α)
projection_commutator_01 and projection_commutator_12 expose residual vectors for these checks.
Orientation and storage convention
- Edge DOFs follow canonical edge orientation (
i<j). - Face DOFs follow mesh face orientation.
- The returned cochains are dense Julia vectors (
Vector{T}) in the package's global simplex ordering.
API
interpolate_0form,interpolate_1form,interpolate_2form- aliases:
Π0,Π1,Π2 - helpers:
interpolate_exact_gradient,interpolate_exact_flux_density - diagnostics:
projection_commutator_01,projection_commutator_12,verify_commuting_projection
Minimal example
using FrontIntrinsicOps, LinearAlgebra
mesh = generate_icosphere(1.0, 1)
geom = compute_geometry(mesh)
dec = build_dec(mesh, geom)
f = x -> x[1]^2 - 0.3x[2] + 0.1
r = projection_commutator_01(f, mesh, geom, dec)
println(norm(r))Limitations and non-goals
- Canonical interpolators only (no smoothed bounded projections yet).
- Lowest-order simplicial setting only.
Π2currently targets surface meshes (no curve 2-cells).