Documentation

LeanPool.NavierStokesAndEuler.Euler.DuhamelPasting

Exact pasting of genuine heat-Duhamel solutions on adjacent time intervals.

Exact restart identities for the genuine cylinder heat and Bochner Duhamel integrals.

theorem EulerHeatRestart.heatFlow_semigroup (period : ) [Fact (0 < period)] {q : } (ν : ) ( : 0 ν) (s t : ) (hs : 0 s) (ht : 0 t) (u : (EulerCylinderSobolevSpace.SobolevSpace period q)) :

Actual viscous heat obeys the semigroup law at nonnegative physical times.

theorem EulerHeatRestart.heatFlow_duhamel_history (period : ) [Fact (0 < period)] {q : } (ν : ) ( : 0 ν) (T : ) (hT : 0 T) (f : C((Set.Icc 0 T), (EulerCylinderSobolevSpace.SobolevSpace period q))) (a t : ) (ha : 0 a) (hat : a t) :

Heat propagates the earlier Duhamel history exactly to a later time.

theorem EulerHeatRestart.duhamel_restart (period : ) [Fact (0 < period)] {q : } (ν : ) ( : 0 ν) (T : ) (hT : 0 T) (f : C((Set.Icc 0 T), (EulerCylinderSobolevSpace.SobolevSpace period q))) (a t : ) (ha : 0 a) (hat : a t) :

The actual Bochner Duhamel integral splits into propagated history and forcing after the restart time.

theorem EulerHeatRestart.inhomogeneous_heat_restart (period : ) [Fact (0 < period)] {q : } (ν : ) ( : 0 ν) (T : ) (hT : 0 T) (f : C((Set.Icc 0 T), (EulerCylinderSobolevSpace.SobolevSpace period q))) (u₀ : (EulerCylinderSobolevSpace.SobolevSpace period q)) (a t : ) (ha : 0 a) (hat : a t) :

The full genuine inhomogeneous heat solution restarts from its attained state.

theorem EulerHeatRestart.duhamel_restart_shifted (period : ) [Fact (0 < period)] {q : } (ν : ) ( : 0 ν) (T : ) (hT : 0 T) (f : C((Set.Icc 0 T), (EulerCylinderSobolevSpace.SobolevSpace period q))) (a t : ) (ha : 0 a) (ht : 0 t) :

The old-history and new-source identity written in elapsed time after the restart.

theorem EulerDuhamelPasting.duhamel_congr_initial (period : ) [Fact (0 < period)] {q : } (ν T1 T2 : ) (hT1 : 0 T1) (hT2 : 0 T2) (f1 : C((Set.Icc 0 T1), (EulerCylinderSobolevSpace.SobolevSpace period q))) (f2 : C((Set.Icc 0 T2), (EulerCylinderSobolevSpace.SobolevSpace period q))) (t : ) (ht : 0 t) (hf : rSet.Icc 0 t, EulerVolterraConvolution.extendPath T1 hT1 f1 r = EulerVolterraConvolution.extendPath T2 hT2 f2 r) :

Actual Duhamel integrals agree whenever their source fields agree on the integration interval.

theorem EulerDuhamelPasting.inhomogeneous_restart_shifted (period : ) [Fact (0 < period)] {q : } (ν : ) ( : 0 ν) (T : ) (hT : 0 T) (f : C((Set.Icc 0 T), (EulerCylinderSobolevSpace.SobolevSpace period q))) (u₀ : (EulerCylinderSobolevSpace.SobolevSpace period q)) (a t : ) (ha : 0 a) (ht : 0 t) :

The exact inhomogeneous heat restart identity in elapsed time.

theorem EulerDuhamelPasting.shifted_source_integral (period : ) [Fact (0 < period)] {q : } (ν a b T : ) (hb : 0 b) (hT : 0 T) (f : C((Set.Icc 0 T), (EulerCylinderSobolevSpace.SobolevSpace period q))) (g : C((Set.Icc 0 b), (EulerCylinderSobolevSpace.SobolevSpace period q))) (t : ) (ht : t Set.Icc 0 b) (hfg : rSet.Icc 0 b, EulerVolterraConvolution.extendPath T hT f (a + r) = EulerVolterraConvolution.extendPath b hb g r) :

The elapsed-time part of a genuine Duhamel integral is the restarted source integral.

theorem EulerDuhamelPasting.glue_ordinary_mild (period : ) [Fact (0 < period)] {q : } (ν : ) ( : 0 ν) (a b : ) (ha : 0 a) (hb : 0 b) (u : C((Set.Icc 0 a), (EulerCylinderSobolevSpace.SobolevSpace period q))) (v : C((Set.Icc 0 b), (EulerCylinderSobolevSpace.SobolevSpace period q))) (hmatch : u a, = v 0, ) (f : C((Set.Icc 0 (a + b)), (EulerCylinderSobolevSpace.SobolevSpace period q))) (f1 : C((Set.Icc 0 a), (EulerCylinderSobolevSpace.SobolevSpace period q))) (f2 : C((Set.Icc 0 b), (EulerCylinderSobolevSpace.SobolevSpace period q))) (u₀ : (EulerCylinderSobolevSpace.SobolevSpace period q)) (hF1 : rSet.Icc 0 a, EulerVolterraConvolution.extendPath (a + b) f r = EulerVolterraConvolution.extendPath a ha f1 r) (hF2 : rSet.Icc 0 b, EulerVolterraConvolution.extendPath (a + b) f (a + r) = EulerVolterraConvolution.extendPath b hb f2 r) (hsolu : ∀ (t : (Set.Icc 0 a)), u t = (EulerSobolevHeatGenerator.heatFlow period q ν t) u₀ + EulerDuhamelDifferentiation.duhamel period ν a ha f1 t) (hsolv : ∀ (t : (Set.Icc 0 b)), v t = (EulerSobolevHeatGenerator.heatFlow period q ν t) (u a, ) + EulerDuhamelDifferentiation.duhamel period ν b hb f2 t) (t : (Set.Icc 0 (a + b))) :
(EulerTimePathGluing.gluePath a b ha hb u v hmatch) t = (EulerSobolevHeatGenerator.heatFlow period q ν t) u₀ + EulerDuhamelDifferentiation.duhamel period ν (a + b) f t

The literal pasting of two actual mild solutions solves the complete Duhamel equation on their union.