Documentation

LeanPool.NavierStokesAndEuler.Euler.PacketExactPhysicalMomentum

The constructed exact lifted packet gives the actual momentum equation after the genuine parent-flow change of coordinates. The scalar pressure is the normalized radial potential of the constructed pressure tower.

The frame evolution is derived by differentiating the actual parent flow. Symmetry of the genuine second derivative supplies the mixed-derivative identity; no independent strain evolution is assumed.

theorem EulerPacketPhysicalTransform.flow_time_derivative_eq {E : Type u_1} [NormedAddCommGroup E] [InnerProductSpace E] (X u : × EE) (q : × E) (hX : DifferentiableAt X q) (hflow : HasDerivAt (fun (s : ) => X (s, q.2)) (u (q.1, X q)) q.1) :
(fderiv X q) (1, 0) = u (q.1, X q)
theorem EulerPacketPhysicalTransform.parent_frame_time {E : Type u_1} [NormedAddCommGroup E] [InnerProductSpace E] (X u : × EE) (F : × EE →L[] E) (q : × E) (DF : × E →L[] E →L[] E) (Du : × E →L[] E) (hX : ContDiffAt 2 X q) (hF : HasFDerivAt F DF q) (hu : HasFDerivAt u Du (q.1, X q)) (hframe : F =ᶠ[nhds q] fun (r : × E) => fderiv X r ∘SL ContinuousLinearMap.inr E) (hflow : (fun (r : × E) => (fderiv X r) (1, 0)) =ᶠ[nhds q] fun (r : × E) => u (r.1, X r)) (v : E) :
(DF (1, 0)) v = Du (0, (F q) v)
theorem EulerPacketPhysicalTransform.physical_euler_momentum_of_flow {E : Type u_1} [NormedAddCommGroup E] [InnerProductSpace E] [CompleteSpace E] (κ k : ) ( : k * κ = 1) (m : E) (F : × EE →L[] E) (z : × E × E) (u : × EE) (p Q : × E) (X Y : × EE) (t : ) (x : E) (A : E ≃L[] E) (DF : × E →L[] E →L[] E) (Dz : × E × →L[] E) (Du : × E →L[] E) (P : E) (hleft : ∀ (s : ) (y : E), Y (s, X (s, y)) = y) (hY : DifferentiableAt (inverseCoordinates Y) (t, X (t, x))) (hX : ContDiffAt 2 X (t, x)) (hframe : F =ᶠ[nhds (t, x)] fun (r : × E) => fderiv X r ∘SL ContinuousLinearMap.inr E) (hflow : (fun (r : × E) => (fderiv X r) (1, 0)) =ᶠ[nhds (t, x)] fun (r : × E) => u (r.1, X r)) (hF : HasFDerivAt F DF (t, x)) (hz : HasFDerivAt z Dz ((spaceTimeGraph k m) (t, x))) (hA : F (t, x) = A) (hu : HasFDerivAt u Du (t, X (t, x))) (hp : DifferentiableAt (fun (y : E) => p (t, y)) (X (t, x))) (hQ : DifferentiableAt (fun (y : E) => Q (t, y)) x) (hQgradient : gradient (fun (y : E) => Q (t, y)) x = κ P) (hparent : EulerLagrangian.momentumResidual u p (t, X (t, x)) = 0) (hlift : Dz (1, 0, 0) + 2 A.symm ((DF (1, 0)) (z ((spaceTimeGraph k m) (t, x)))) + Dz (0, κ z ((spaceTimeGraph k m) (t, x)), inner m (z ((spaceTimeGraph k m) (t, x)))) + κ A.symm ((DF (0, z ((spaceTimeGraph k m) (t, x)))) (z ((spaceTimeGraph k m) (t, x)))) + A.symm ((ContinuousLinearMap.adjoint A.symm) P) = 0) :
EulerLagrangian.momentumResidual (fun (q : × E) => u q + physicalVelocity κ k m F z Y q) (fun (q : × E) => p q + physicalPressure Q Y q) (t, X (t, x)) = 0

The usual flow ODE and Jacobian identity suffice to supply the frame evolution used by the physical Euler transformation. The identities need only hold in a neighborhood of the current interior spacetime point.

theorem EulerPacketPhysicalTransform.exact_source_momentum {U : Type u_1} [NormedAddCommGroup U] [InnerProductSpace U] (D : EulerTransversePacketProvider.Data U) {P : } [Fact (0 < P)] {κ : } { : |κ| 1} {Z R : EulerAllOrderCorrectionData.FieldTower P D.T} {B : EulerAllOrderDriftCorrection.Budget P (EulerPacketCorrectionCoefficients.correctionData D P κ Z R)} (S : EulerAllOrderDriftCorrection.ExactLiftedPacket P (EulerPacketCorrectionCoefficients.correctionData D P κ Z R) B) (k : ) (hk : k * κ = 1) (F : × EulerSmoothLimit.SpaceEulerSmoothLimit.Space →L[] EulerSmoothLimit.Space) (u : × EulerSmoothLimit.SpaceEulerSmoothLimit.Space) (p : × EulerSmoothLimit.Space) (X Y : × EulerSmoothLimit.SpaceEulerSmoothLimit.Space) (hmatch : ∀ (s : (Set.Icc 0 D.T)) (y : EulerSmoothLimit.Space), F (s, y) = (D.F.field s) y) (t : ) (ht : t Set.Ioo 0 D.T) (x : EulerSmoothLimit.Space) (hleft : ∀ (s : ) (y : EulerSmoothLimit.Space), Y (s, X (s, y)) = y) (hY : DifferentiableAt (inverseCoordinates Y) (t, X (t, x))) (hX : ContDiffAt 2 X (t, x)) (hframe : F =ᶠ[nhds (t, x)] fun (r : × EulerSmoothLimit.Space) => fderiv X r ∘SL ContinuousLinearMap.inr EulerSmoothLimit.Space) (hflow : (fun (r : × EulerSmoothLimit.Space) => (fderiv X r) (1, 0)) =ᶠ[nhds (t, x)] fun (r : × EulerSmoothLimit.Space) => u (r.1, X r)) (hu : DifferentiableAt u (t, X (t, x))) (hp : DifferentiableAt (fun (y : EulerSmoothLimit.Space) => p (t, y)) (X (t, x))) (hparent : EulerLagrangian.momentumResidual u p (t, X (t, x)) = 0) :

All derivatives and the pressure of the perturbation are constructed from the exact lifted solution. Only the actual parent flow and its inverse enter as geometric data.