Documentation

LeanPool.CIVAxisymmetric.Zoom.FiniteZoomCutoffData

The cutoff-multiplied zoom fields: smoothness, axis, divergence, and the drift limit #

For a shrinking zoom scale lam n → 0⁺ and a moving axial offset zc n uniformly bounded by ζ < 1, this file builds, for every n, the globally smooth fields

Vseq n := cutoffBump h zc hzc hζ (lam n) (hlam0 n) n * (zoomV (lam n) h (zc n) u ·, -1)) Wseq n := cutoffBump h zc hzc hζ (lam n) (hlam0 n) n * (zoomW (lam n) h (zc n) u ·, -1))

and proves each of the hypotheses of CIV.step_finite_contradiction other than the selection bound hlower, which belongs to the (separately tracked) dichotomy argument that selects Rsel and c₀:

The zoom centre zc : ℕ → ℝ is one axial offset per stage, uniformly bounded by a single ζ < 1 (hzc, hζ) rather than fixed for every n: the finite-axis selection this adapter is eventually fed (CIV.exists_seq_three_terms_dichotomy) returns a moving height sequence, not a single real number.

The cutoff-multiplied fields #

noncomputable def CIV.cutoffZoomV (h : ℝ) (zc : ℕ → ℝ) {ζ : ℝ} (hzc : ∀ (n : ℕ), |zc n| ≤ ζ) (hζ : ζ < 1) (u : CKN.Foundation.Parabolic.ParabolicPoint → CKN.Foundation.Parabolic.Vec3) (lam : ℕ → ℝ) (hlam0 : ∀ (n : ℕ), 0 < lam n) (n : ℕ) :

The cutoff-multiplied radial field at stage n.

Equations
Instances For
    noncomputable def CIV.cutoffZoomW (h : ℝ) (zc : ℕ → ℝ) {ζ : ℝ} (hzc : ∀ (n : ℕ), |zc n| ≤ ζ) (hζ : ζ < 1) (u : CKN.Foundation.Parabolic.ParabolicPoint → CKN.Foundation.Parabolic.Vec3) (lam : ℕ → ℝ) (hlam0 : ∀ (n : ℕ), 0 < lam n) (n : ℕ) :

    The cutoff-multiplied vertical field at stage n.

    Equations
    Instances For

      The cutoff equals 1 throughout any bounded square, eventually #

      theorem CIV.eventually_cutoffBump_eq_one_of_norm_le {h : ℝ} (hh1 : h < 1 / 2) {zc : ℕ → ℝ} {ζ : ℝ} (hzc : ∀ (n : ℕ), |zc n| ≤ ζ) (hζ : ζ < 1) {lam : ℕ → ℝ} (hlam0 : ∀ (n : ℕ), 0 < lam n) (hlamTendsto : Filter.Tendsto lam Filter.atTop (nhds 0)) (r : ℝ) :
      ∀ᶠ (n : ℕ) in Filter.atTop, ∀ (q : ℝ × ℝ), ‖q‖ ≤ r → ↑(cutoffBump h zc hzc hζ (lam n) ⋯ n) q = 1

      For every compact bound r, once n is large enough that the cutoff's inner radius exceeds r, the cutoff equals 1 throughout the sup-ball of radius r, so Vseq n (resp. Wseq n) equals the raw zoom slice there and the raw slice's own dr/dz bounds transfer directly.

      theorem CIV.cutoffZoomV_eqOn_ball {h : ℝ} {zc : ℕ → ℝ} {ζ : ℝ} (hzc : ∀ (n : ℕ), |zc n| ≤ ζ) (hζ : ζ < 1) {u : CKN.Foundation.Parabolic.ParabolicPoint → CKN.Foundation.Parabolic.Vec3} {lam : ℕ → ℝ} (hlam0 : ∀ (n : ℕ), 0 < lam n) (n : ℕ) {r : ℝ} (hr : ∀ (q : ℝ × ℝ), ‖q‖ ≤ r → ↑(cutoffBump h zc hzc hζ (lam n) ⋯ n) q = 1) :
      Set.EqOn (cutoffZoomV h zc hzc hζ u lam hlam0 n) (fun (q : ℝ × ℝ) => zoomV (lam n) h (zc n) u (q, -1)) {q : ℝ × ℝ | ‖q‖ ≤ r}

      The cutoff's own smoothness, restricted to the sup-ball where it equals 1, is enough to transport a HasFDerivAt fact of the raw slice to the cutoff-multiplied field: on that open ball the two functions agree pointwise, so their derivatives agree too.

      theorem CIV.cutoffZoomW_eqOn_ball {h : ℝ} {zc : ℕ → ℝ} {ζ : ℝ} (hzc : ∀ (n : ℕ), |zc n| ≤ ζ) (hζ : ζ < 1) {u : CKN.Foundation.Parabolic.ParabolicPoint → CKN.Foundation.Parabolic.Vec3} {lam : ℕ → ℝ} (hlam0 : ∀ (n : ℕ), 0 < lam n) (n : ℕ) {r : ℝ} (hr : ∀ (q : ℝ × ℝ), ‖q‖ ≤ r → ↑(cutoffBump h zc hzc hζ (lam n) ⋯ n) q = 1) :
      Set.EqOn (cutoffZoomW h zc hzc hζ u lam hlam0 n) (fun (q : ℝ × ℝ) => zoomW (lam n) h (zc n) u (q, -1)) {q : ℝ × ℝ | ‖q‖ ≤ r}

      Global smoothness #

      The raw radial zoom slice at scale lam and centre zc is ContDiffOn ℝ (⊤ : ℕ∞) on the preimage of unitCylinder under the zoom map, because it is lam times the zeroth component of u composed with the globally smooth zoomPoint map, and u itself is smooth wherever the zoom point lands.

      theorem CIV.contDiff_cutoffZoomV {h : ℝ} (hh0 : 0 ≤ h) {zc : ℕ → ℝ} {ζ : ℝ} (hzc : ∀ (n : ℕ), |zc n| ≤ ζ) (hζ : ζ < 1) {u : CKN.Foundation.Parabolic.ParabolicPoint → CKN.Foundation.Parabolic.Vec3} {pres : CKN.Foundation.Parabolic.ParabolicPoint → ℝ} {f : CKN.Foundation.Parabolic.ParabolicPoint → CKN.Foundation.Parabolic.Vec3} (hsol : IsClassicalSolutionOn u pres f unitCylinder) {lam : ℕ → ℝ} (hlam0 : ∀ (n : ℕ), 0 < lam n) (hlam1 : ∀ (n : ℕ), lam n < 1) (n : ℕ) :
      ContDiff ℝ (↑⊤) (cutoffZoomV h zc hzc hζ u lam hlam0 n)

      hVsmooth: for every n, Vseq n is globally ContDiff ℝ (⊤ : ℕ∞).

      theorem CIV.contDiff_cutoffZoomW {h : ℝ} (hh0 : 0 ≤ h) {zc : ℕ → ℝ} {ζ : ℝ} (hzc : ∀ (n : ℕ), |zc n| ≤ ζ) (hζ : ζ < 1) {u : CKN.Foundation.Parabolic.ParabolicPoint → CKN.Foundation.Parabolic.Vec3} {pres : CKN.Foundation.Parabolic.ParabolicPoint → ℝ} {f : CKN.Foundation.Parabolic.ParabolicPoint → CKN.Foundation.Parabolic.Vec3} (hsol : IsClassicalSolutionOn u pres f unitCylinder) {lam : ℕ → ℝ} (hlam0 : ∀ (n : ℕ), 0 < lam n) (hlam1 : ∀ (n : ℕ), lam n < 1) (n : ℕ) :
      ContDiff ℝ (↑⊤) (cutoffZoomW h zc hzc hζ u lam hlam0 n)

      hWsmooth: for every n, Wseq n is globally ContDiff ℝ (⊤ : ℕ∞).

      The axis value #

      theorem CIV.cutoffZoomV_axis_eq_zero {h : ℝ} (hh0 : 0 ≤ h) {zc : ℕ → ℝ} {ζ : ℝ} (hzc : ∀ (n : ℕ), |zc n| ≤ ζ) (hζ : ζ < 1) {u : CKN.Foundation.Parabolic.ParabolicPoint → CKN.Foundation.Parabolic.Vec3} (haxi : IsAxisymmetricOn u unitCylinder) {lam : ℕ → ℝ} (hlam0 : ∀ (n : ℕ), 0 < lam n) (hlam1 : ∀ (n : ℕ), lam n < 1) (n : ℕ) :
      cutoffZoomV h zc hzc hζ u lam hlam0 n (0, 0) = 0

      haxis: Vseq n (0, 0) = 0 for every n, since the cutoff is 1 at the origin (its inner radius is always positive) and zoomV vanishes on the axis of an axisymmetric field.

      Eventually the cutoff-multiplied field's derivative reads off the raw slice #

      theorem CIV.eventually_hasFDerivAt_zoomV_slice {h : ℝ} (hh0 : 0 ≤ h) (hh1 : h < 1 / 2) {zc : ℕ → ℝ} {ζ : ℝ} (hzc : ∀ (n : ℕ), |zc n| ≤ ζ) (hζ : ζ < 1) {u : CKN.Foundation.Parabolic.ParabolicPoint → CKN.Foundation.Parabolic.Vec3} {pres : CKN.Foundation.Parabolic.ParabolicPoint → ℝ} {f : CKN.Foundation.Parabolic.ParabolicPoint → CKN.Foundation.Parabolic.Vec3} (hsol : IsClassicalSolutionOn u pres f unitCylinder) {lam : ℕ → ℝ} (hlam0 : ∀ (n : ℕ), 0 < lam n) (hlam1 : ∀ (n : ℕ), lam n < 1) (hlamTendsto : Filter.Tendsto lam Filter.atTop (nhds 0)) (p : ℝ × ℝ) :
      ∀ᶠ (n : ℕ) in Filter.atTop, HasFDerivAt (fun (q : ℝ × ℝ) => zoomV (lam n) h (zc n) u (q, -1)) (fderiv ℝ (cutoffZoomV h zc hzc hζ u lam hlam0 n) p) p

      Once n is large enough that the cutoff equals 1 on a neighbourhood of p, the raw radial zoom slice has a Fréchet derivative at p equal to that of the cutoff-multiplied field: the two functions agree on that whole open neighbourhood, so their derivatives agree, by HasFDerivAt.congr_of_eventuallyEq applied to the globally smooth Vseq n's own derivative (CIV.contDiff_cutoffZoomV, unpacked through contDiff_infty_iff_fderiv).

      theorem CIV.eventually_hasFDerivAt_zoomW_slice {h : ℝ} (hh0 : 0 ≤ h) (hh1 : h < 1 / 2) {zc : ℕ → ℝ} {ζ : ℝ} (hzc : ∀ (n : ℕ), |zc n| ≤ ζ) (hζ : ζ < 1) {u : CKN.Foundation.Parabolic.ParabolicPoint → CKN.Foundation.Parabolic.Vec3} {pres : CKN.Foundation.Parabolic.ParabolicPoint → ℝ} {f : CKN.Foundation.Parabolic.ParabolicPoint → CKN.Foundation.Parabolic.Vec3} (hsol : IsClassicalSolutionOn u pres f unitCylinder) {lam : ℕ → ℝ} (hlam0 : ∀ (n : ℕ), 0 < lam n) (hlam1 : ∀ (n : ℕ), lam n < 1) (hlamTendsto : Filter.Tendsto lam Filter.atTop (nhds 0)) (p : ℝ × ℝ) :
      ∀ᶠ (n : ℕ) in Filter.atTop, HasFDerivAt (fun (q : ℝ × ℝ) => zoomW (lam n) h (zc n) u (q, -1)) (fderiv ℝ (cutoffZoomW h zc hzc hζ u lam hlam0 n) p) p

      The vertical counterpart of eventually_hasFDerivAt_zoomV_slice.

      theorem CIV.eventually_fderiv_cutoffZoomV_apply_eq_dr {h : ℝ} (hh0 : 0 ≤ h) (hh1 : h < 1 / 2) {zc : ℕ → ℝ} {ζ : ℝ} (hzc : ∀ (n : ℕ), |zc n| ≤ ζ) (hζ : ζ < 1) {u : CKN.Foundation.Parabolic.ParabolicPoint → CKN.Foundation.Parabolic.Vec3} {pres : CKN.Foundation.Parabolic.ParabolicPoint → ℝ} {f : CKN.Foundation.Parabolic.ParabolicPoint → CKN.Foundation.Parabolic.Vec3} (hsol : IsClassicalSolutionOn u pres f unitCylinder) {lam : ℕ → ℝ} (hlam0 : ∀ (n : ℕ), 0 < lam n) (hlam1 : ∀ (n : ℕ), lam n < 1) (hlamTendsto : Filter.Tendsto lam Filter.atTop (nhds 0)) (p : ℝ × ℝ) :
      ∀ᶠ (n : ℕ) in Filter.atTop, (fderiv ℝ (cutoffZoomV h zc hzc hζ u lam hlam0 n) p) (1, 0) = dr (zoomV (lam n) h (zc n) u) (p, -1)

      The cutoff-multiplied field's radial derivative reads off dr of the raw slice, once n is large enough.

      theorem CIV.eventually_fderiv_cutoffZoomW_apply_eq_dz {h : ℝ} (hh0 : 0 ≤ h) (hh1 : h < 1 / 2) {zc : ℕ → ℝ} {ζ : ℝ} (hzc : ∀ (n : ℕ), |zc n| ≤ ζ) (hζ : ζ < 1) {u : CKN.Foundation.Parabolic.ParabolicPoint → CKN.Foundation.Parabolic.Vec3} {pres : CKN.Foundation.Parabolic.ParabolicPoint → ℝ} {f : CKN.Foundation.Parabolic.ParabolicPoint → CKN.Foundation.Parabolic.Vec3} (hsol : IsClassicalSolutionOn u pres f unitCylinder) {lam : ℕ → ℝ} (hlam0 : ∀ (n : ℕ), 0 < lam n) (hlam1 : ∀ (n : ℕ), lam n < 1) (hlamTendsto : Filter.Tendsto lam Filter.atTop (nhds 0)) (p : ℝ × ℝ) :
      ∀ᶠ (n : ℕ) in Filter.atTop, (fderiv ℝ (cutoffZoomW h zc hzc hζ u lam hlam0 n) p) (0, 1) = dz (zoomW (lam n) h (zc n) u) (p, -1)

      The cutoff-multiplied field's axial derivative reads off dz of the raw slice, once n is large enough.

      theorem CIV.eventually_fderiv_cutoffZoomW_apply_eq_dr {h : ℝ} (hh0 : 0 ≤ h) (hh1 : h < 1 / 2) {zc : ℕ → ℝ} {ζ : ℝ} (hzc : ∀ (n : ℕ), |zc n| ≤ ζ) (hζ : ζ < 1) {u : CKN.Foundation.Parabolic.ParabolicPoint → CKN.Foundation.Parabolic.Vec3} {pres : CKN.Foundation.Parabolic.ParabolicPoint → ℝ} {f : CKN.Foundation.Parabolic.ParabolicPoint → CKN.Foundation.Parabolic.Vec3} (hsol : IsClassicalSolutionOn u pres f unitCylinder) {lam : ℕ → ℝ} (hlam0 : ∀ (n : ℕ), 0 < lam n) (hlam1 : ∀ (n : ℕ), lam n < 1) (hlamTendsto : Filter.Tendsto lam Filter.atTop (nhds 0)) (p : ℝ × ℝ) :
      ∀ᶠ (n : ℕ) in Filter.atTop, (fderiv ℝ (cutoffZoomW h zc hzc hζ u lam hlam0 n) p) (1, 0) = dr (zoomW (lam n) h (zc n) u) (p, -1)

      The cutoff-multiplied vertical field's radial derivative reads off dr of the raw slice, once n is large enough.

      theorem CIV.eventually_cutoffZoom_divergence_eq_zero {h : ℝ} (hh0 : 0 ≤ h) (hh1 : h < 1 / 2) {zc : ℕ → ℝ} {ζ : ℝ} (hzc : ∀ (n : ℕ), |zc n| ≤ ζ) (hζ : ζ < 1) {u : CKN.Foundation.Parabolic.ParabolicPoint → CKN.Foundation.Parabolic.Vec3} {pres : CKN.Foundation.Parabolic.ParabolicPoint → ℝ} {f : CKN.Foundation.Parabolic.ParabolicPoint → CKN.Foundation.Parabolic.Vec3} (hsol : IsClassicalSolutionOn u pres f unitCylinder) (haxi : IsAxisymmetricOn u unitCylinder) {lam : ℕ → ℝ} (hlam0 : ∀ (n : ℕ), 0 < lam n) (hlam1 : ∀ (n : ℕ), lam n < 1) (hlamTendsto : Filter.Tendsto lam Filter.atTop (nhds 0)) {p : ℝ × ℝ} (hp : 0 < p.1) :
      ∀ᶠ (n : ℕ) in Filter.atTop, (fderiv ℝ (cutoffZoomV h zc hzc hζ u lam hlam0 n) p) (1, 0) + cutoffZoomV h zc hzc hζ u lam hlam0 n p / p.1 + (fderiv ℝ (cutoffZoomW h zc hzc hζ u lam hlam0 n) p) (0, 1) = 0

      The cutoff-multiplied field's radial derivative also reads off dr of the raw slice for Wseq, and the value at p reads off the raw slice, once n is large enough: the three facts a single application of zoom_divergence_identity needs.

      The drift limit ∂_R W_n → 0, from Ω_n → 0 #

      theorem CIV.eventually_zoomPoint_slice_mem_unitCylinder {h : ℝ} (hh0 : 0 ≤ h) (hh1 : h < 1 / 2) {zc : ℕ → ℝ} {ζ : ℝ} (hzc : ∀ (n : ℕ), |zc n| ≤ ζ) (hζ : ζ < 1) {lam : ℕ → ℝ} (hlam0 : ∀ (n : ℕ), 0 < lam n) (hlam1 : ∀ (n : ℕ), lam n < 1) (hlamTendsto : Filter.Tendsto lam Filter.atTop (nhds 0)) (p : ℝ × ℝ) :
      ∀ᶠ (n : ℕ) in Filter.atTop, zoomPoint (lam n) h (zc n) (p, -1) ∈ unitCylinder

      Once n is large enough that the zoom point at p lands in unitCylinder, it stays there: this is the same threshold eventually_cutoffBump_rIn_gt supplies for the cutoff's inner radius, chained through cutoffBump_safe.

      theorem CIV.tendsto_zero_of_mul_eventually_bounded {a D : ℕ → ℝ} {M : ℝ} (ha : Filter.Tendsto a Filter.atTop (nhds 0)) (hD : ∀ᶠ (n : ℕ) in Filter.atTop, |D n| ≤ M) :
      Filter.Tendsto (fun (n : ℕ) => a n * D n) Filter.atTop (nhds 0)

      The sandwich estimate for a sequence that is only eventually bounded: if a n → 0 and |D n| ≤ M for all large n, then a n * D n → 0. The eventual form is needed here because the pointwise bound on dz (zoomV …) is only available once the zoom point at the fixed test point p has entered unitCylinder.

      theorem CIV.tendsto_fderiv_cutoffZoomW_apply_zero {h : ℝ} (hh0 : 0 < h) (hh1 : h < 1 / 2) {zc : ℕ → ℝ} {ζ : ℝ} (hzc : ∀ (n : ℕ), |zc n| ≤ ζ) (hζ : ζ < 1) {u : CKN.Foundation.Parabolic.ParabolicPoint → CKN.Foundation.Parabolic.Vec3} {pres : CKN.Foundation.Parabolic.ParabolicPoint → ℝ} {f : CKN.Foundation.Parabolic.ParabolicPoint → CKN.Foundation.Parabolic.Vec3} (hsol : IsClassicalSolutionOn u pres f unitCylinder) {C : ℝ} (hC : 0 ≤ C) (hb : AnisotropicBounds C h u) {lam : ℕ → ℝ} (hlam0 : ∀ (n : ℕ), 0 < lam n) (hlam1 : ∀ (n : ℕ), lam n < 1) (hlamTendsto : Filter.Tendsto lam Filter.atTop (nhds 0)) (hΩ0 : ∀ (q : ℝ × ℝ), 0 < q.1 → Filter.Tendsto (fun (n : ℕ) => zoomOmega (lam n) h (zc n) u (q, -1)) Filter.atTop (nhds 0)) {p : ℝ × ℝ} (hp : 0 < p.1) :
      Filter.Tendsto (fun (n : ℕ) => (fderiv ℝ (cutoffZoomW h zc hzc hζ u lam hlam0 n) p) (1, 0)) Filter.atTop (nhds 0)

      hdWn: the radial derivative of the cutoff-multiplied vertical field tends to 0, once Ω_n → 0 at p, along the same moving centre zc n, is supplied. The pointwise potential-vorticity identity CIV.zoomOmega_eq gives, at every large n, dr (zoomW …) = lam ^ (4h) dz (zoomV …) − R Ω_n: the first summand tends to 0 because lam ^ (4h) → 0 while dz (zoomV …) stays uniformly bounded (CIV.abs_dz_zoomV_le), and the second because Ω_n → 0 by hypothesis.