← ALL STATEMENTS
AcceptedLemma · Statement with omitted proof

Discrete wave-energy conservation at half steps

The unforced fully discrete wave scheme preserves a discrete energy built from forward differences and half-step averages.

Larsson & Thomée ↗
Lemma 13.2 · printed p. 204

Formal statement. The assumptions and conclusion are explicit; the theorem proof is omitted (sorry).

01 / MATHEMATICAL STATEMENT

Meaning & conditions

Mathematical summary

The unforced fully discrete wave scheme preserves a discrete energy built from forward differences and half-step averages.

∥∂tUn∥2+∣Un+1/2∣12=∥∂tU0∥2+∣U1/2∣12.\|\partial_tU^n\|^2+|U^{n+1/2}|_1^2=\|\partial_tU^0\|^2+|U^{1/2}|_1^2.

Assumptions & context

  • A convex polygonal domain, a finite-element triangulation, a positive time step, and the zero-forcing scheme (13.5).

Source

Larsson & Thomée. Partial differential equations with numerical methods.

Lemma 13.2 · printed p. 204

02 / LEAN REPRESENTATION

Formal statement

Statement with omitted proof. Expand the complete file below to read imports, local definitions and surrounding context.

theorem lem_13_2 (Ω : Set (Euclidean 2)) (hΩ : IsConvexPolygonalDomain Ω)
    (𝒯 : Triangulation Ω) (k : ℝ) (hk : 0 < k) (U : ℕ → Euclidean 2 → ℝ)
    (hU : SolvesScheme135 𝒯 k (fun _ _ => 0) U) :
    ∀ n : ℕ, normΩ Ω (fwdDiff k U n) ^ 2 + seminorm1 Ω (halfStep U n) ^ 2
      = normΩ Ω (fwdDiff k U 0) ^ 2 + seminorm1 Ω (halfStep U 0) ^ 2 := by
  sorry
Complete Lean file and local definitions
import PDETextbook.Base

open MeasureTheory
open scoped BigOperators ENNReal

noncomputable section

namespace PDETextbook.LarssonThomee.Lem13_2

/-- Sect. 13.1 standing assumption: `Ω ⊂ ℝ²` is a bounded convex domain whose boundary `Γ`
is a (closed) polygon with vertices `p 0, …, p (m+2)`. -/
def IsConvexPolygonalDomain (Ω : Set (Euclidean 2)) : Prop :=
  IsOpen Ω ∧ Ω.Nonempty ∧ Bornology.IsBounded Ω ∧ Convex ℝ Ω ∧
  ∃ (m : ℕ) (p : Fin (m + 3) → Euclidean 2),
    frontier Ω = ⋃ i : Fin (m + 3), segment ℝ (p i) (p (i + 1))

/-- A (conforming) triangulation of `Ω̄`: finitely many nondegenerate triangles covering `Ω̄`,
with pairwise disjoint interiors, any two meeting in the hull of their common vertices. -/
structure Triangulation (Ω : Set (Euclidean 2)) where
  tri : Finset (Fin 3 → Euclidean 2)
  nondegenerate : ∀ K ∈ tri, AffineIndependent ℝ K
  cover : (⋃ K ∈ tri, convexHull ℝ (Set.range K)) = closure Ω
  disjoint_interiors : ∀ K ∈ tri, ∀ K' ∈ tri, K ≠ K' →
    Disjoint (interior (convexHull ℝ (Set.range K)))
      (interior (convexHull ℝ (Set.range K')))
  conforming : ∀ K ∈ tri, ∀ K' ∈ tri,
    convexHull ℝ (Set.range K) ∩ convexHull ℝ (Set.range K') =
      convexHull ℝ (Set.range K ∩ Set.range K')

/-- `S_h ⊂ H₀¹`: continuous piecewise linear functions on the triangulation, vanishing on `Γ`
(represented globally by zero extension outside `Ω`). -/
def FESpace {Ω : Set (Euclidean 2)} (𝒯 : Triangulation Ω) : Set (Euclidean 2 → ℝ) :=
  {v | Continuous v ∧ (∀ x, x ∉ Ω → v x = 0) ∧
    ∀ K ∈ 𝒯.tri, ∃ g : Euclidean 2 →ᵃ[ℝ] ℝ, Set.EqOn v g (convexHull ℝ (Set.range K))}

/-- The `L₂(Ω)` inner product `(v, w) = ∫_Ω v w dx`. -/
def innerΩ (Ω : Set (Euclidean 2)) (v w : Euclidean 2 → ℝ) : ℝ :=
  ∫ x in Ω, v x * w x

/-- `‖v‖ = (∫_Ω v² dx)^{1/2}`, the `L₂(Ω)` norm. -/
def normΩ (Ω : Set (Euclidean 2)) (v : Euclidean 2 → ℝ) : ℝ :=
  Real.sqrt (∫ x in Ω, v x ^ 2)

/-- `a(v, w) = (∇v, ∇w) = ∫_Ω ∇v · ∇w dx`; for piecewise linear functions the gradient exists
classically on triangle interiors, i.e. a.e. in `Ω`, and coincides with the weak gradient there. -/
def aForm (Ω : Set (Euclidean 2)) (v w : Euclidean 2 → ℝ) : ℝ :=
  ∫ x in Ω, ∑ i : Fin 2, partialDeriv (𝕜 := ℝ) v i x * partialDeriv (𝕜 := ℝ) w i x

/-- `|v|₁ = (∑_{|α|=1} ‖D^α v‖²)^{1/2} = ‖∇v‖`, the `H¹` seminorm. -/
def seminorm1 (Ω : Set (Euclidean 2)) (v : Euclidean 2 → ℝ) : ℝ :=
  Real.sqrt (∫ x in Ω, ∑ i : Fin 2, (partialDeriv (𝕜 := ℝ) v i x) ^ 2)

/-- Forward difference quotient `∂_t Uⁿ = (Uⁿ⁺¹ - Uⁿ)/k`. -/
def fwdDiff (k : ℝ) (U : ℕ → Euclidean 2 → ℝ) (n : ℕ) : Euclidean 2 → ℝ :=
  fun x => (U (n + 1) x - U n x) / k

/-- The half-step value `U^{n+1/2} = (Uⁿ + Uⁿ⁺¹)/2 = (1/2)(Uⁿ + Uⁿ⁺¹)`, as defined in the
source just before Lemma 13.2 (`halfStep U n` is `U^{n+1/2}`; `halfStep U 0` is `U^{1/2}`). -/
def halfStep (U : ℕ → Euclidean 2 → ℝ) (n : ℕ) : Euclidean 2 → ℝ :=
  fun x => (1 / 2 : ℝ) * (U n x + U (n + 1) x)

/-- `U = (Uⁿ)` with `Uⁿ ∈ S_h` solves scheme (13.5) with time step `k`, `t_n = n k`:
`(∂_t ∂̄_t Uⁿ, χ) + a(¼(Uⁿ⁺¹ + 2Uⁿ + Uⁿ⁻¹), χ) = (f(t_n), χ)` for all `χ ∈ S_h`, `n ≥ 1`,
where `∂_t ∂̄_t Uⁿ = (Uⁿ⁺¹ - 2Uⁿ + Uⁿ⁻¹)/k²`; `U⁰`, `U¹` are the given starting values. -/
def SolvesScheme135 {Ω : Set (Euclidean 2)} (𝒯 : Triangulation Ω) (k : ℝ)
    (f : ℝ → Euclidean 2 → ℝ) (U : ℕ → Euclidean 2 → ℝ) : Prop :=
  (∀ n, U n ∈ FESpace 𝒯) ∧
  ∀ n : ℕ, 1 ≤ n → ∀ χ ∈ FESpace 𝒯,
    innerΩ Ω (fun x => (U (n + 1) x - 2 * U n x + U (n - 1) x) / k ^ 2) χ
      + aForm Ω (fun x => (U (n + 1) x + 2 * U n x + U (n - 1) x) / 4) χ
      = innerΩ Ω (f ((n : ℝ) * k)) χ

/-- Lemma 13.2 (Larsson–Thomée): energy conservation for the solution of (13.5) with `f = 0`:
`‖∂_t Uⁿ‖² + |U^{n+1/2}|₁² = ‖∂_t U⁰‖² + |U^{1/2}|₁²` for `n ≥ 0`. -/
theorem lem_13_2 (Ω : Set (Euclidean 2)) (hΩ : IsConvexPolygonalDomain Ω)
    (𝒯 : Triangulation Ω) (k : ℝ) (hk : 0 < k) (U : ℕ → Euclidean 2 → ℝ)
    (hU : SolvesScheme135 𝒯 k (fun _ _ => 0) U) :
    ∀ n : ℕ, normΩ Ω (fwdDiff k U n) ^ 2 + seminorm1 Ω (halfStep U n) ^ 2
      = normΩ Ω (fwdDiff k U 0) ^ 2 + seminorm1 Ω (halfStep U 0) ^ 2 := by
  sorry

end PDETextbook.LarssonThomee.Lem13_2

How to read the formalization

  • The discrete velocity and displacement are evaluated through different time operators; using integer-time displacement would change the identity.
← Back to all statements