Documentation

LeanPool.NavierStokesAndEuler.Euler.PacketProfileRecursion

The well-founded profile recursion in (14), on literal time/space/angle fields. Every new mean is computed before the new high coefficient. The supplied linear inverse maps are the interface to the analytic source constructions; this file proves the recursion and its dependence only on earlier grades.

The actual nonlinear packet operators have the triangular dependence claimed in (14).

Which unknown coefficients can enter the slow and fast quadratic terms.

theorem EulerFiniteGrades.convolution_strict_congr {V : Type u_1} {W : Type u_2} [AddCommGroup V] [Module V] [AddCommGroup W] [Module W] (M p : ) (hp : 0 < p) (hMp : p M) (B : V →ₗ[] V →ₗ[] W) (u u' : V) (hu0 : u 0 = 0) (hu : i < p, u' i = u i) :
convolution M B u' u' p = convolution M B u u p

With zero constant coefficient, the slow grade p depends only on grades below p.

theorem EulerFiniteGrades.convolution_next_delta {V : Type u_1} {W : Type u_2} [AddCommGroup V] [Module V] [AddCommGroup W] [Module W] (M p : ) (hp : 2 p) (hMp : p + 1 M) (B : V →ₗ[] V →ₗ[] W) (u u' : V) (δ : V) (hu0 : u 0 = 0) (hu : i < p, u' i = u i) ( : u' p = u p + δ) :
convolution M B u' u' (p + 1) = convolution M B u u (p + 1) + (B δ) (u 1) + (B (u 1)) δ

The fast grade p has exactly two possible dependencies on the new grade p.

Nonlinear grade, given by convolution M (slowAdvection FInv) u u p + convolution M (fastAdvection m) u u (p+1).

Equations
  • One or more equations did not get rendered due to their size.
Instances For
    theorem EulerPacketPointJets.nonlinearGrade_update (M p : ) (hp : 2 p) (hMp : p + 1 M) (FInv : EulerSmoothLimit.Space →L[] EulerSmoothLimit.Space) (m : EulerSmoothLimit.Space) (u u' : VectorJet) (A B : VectorJet) (hu0 : u 0 = 0) (hu : i < p, u' i = u i) (hnew : u' p = u p + (A + B)) (hprimary : inner m (u 1).1 = 0) (hA : inner m A.1 = 0) :
    nonlinearGrade M p FInv m u' = nonlinearGrade M p FInv m u + ((fastAdvection m) B) (u 1)

    Changing the new high coefficient and mean coefficient leaves just the mean-primary interaction.

    theorem EulerPacketPointJets.nonlinearGrade_update_formula (M p : ) (hp : 2 p) (hMp : p + 1 M) (FInv : EulerSmoothLimit.Space →L[] EulerSmoothLimit.Space) (m : EulerSmoothLimit.Space) (u u' : VectorJet) (A B : VectorJet) (hu0 : u 0 = 0) (hu : i < p, u' i = u i) (hnew : u' p = u p + (A + B)) (hprimary : inner m (u 1).1 = 0) (hA : inner m A.1 = 0) :
    nonlinearGrade M p FInv m u' = nonlinearGrade M p FInv m u + inner m B.1 (u 1).2 angleDirection

    The surviving unknown term is literally (m dot B) times the primary angular derivative.

    The known forcing at a recursive grade uses only previously constructed coefficients.

    noncomputable def EulerPacketPointJets.history (p : ) (u : VectorJet) (previousCorrector : VectorJet) (i : ) :

    History, with branches according to i<p.

    Equations
    Instances For
      theorem EulerPacketPointJets.history_congr (p : ) (u v : VectorJet) (c : VectorJet) (huv : i < p, u i = v i) :
      history p u c = history p v c

      No unspecified coefficient at or above p enters the known part.

      theorem EulerPacketPointJets.nonlinearGrade_eq_history (M p : ) (hp : 2 p) (hMp : p + 1 M) (FInv : EulerSmoothLimit.Space →L[] EulerSmoothLimit.Space) (m : EulerSmoothLimit.Space) (u : VectorJet) (A B c : VectorJet) (hu0 : u 0 = 0) (hnew : u p = c + (A + B)) (hprimary : inner m (u 1).1 = 0) (hA : inner m A.1 = 0) :
      nonlinearGrade M p FInv m u = nonlinearGrade M p FInv m (history p u c) + ((fastAdvection m) B) (u 1)

      The only new nonlinear term is the mean coefficient against the primary angular derivative.

      theorem EulerPacketPointJets.mean_primary_interaction_zero (P : ) (m B : EulerSmoothLimit.Space) (A : EulerSmoothLimit.Space) (hA : ∀ (θ : ), HasDerivAt A ( θ) θ) (hAθ : Continuous ) (hper : Function.Periodic A P) :
      (θ : ) in 0..P, inner m B θ = 0

      The unknown mean-primary interaction has exactly zero angular mean.

      @[reducible, inline]

      Vector field: an abbreviation for Domain → Space.

      Equations
      Instances For
        @[reducible, inline]

        Scalar field: an abbreviation for Domain → ℝ.

        Equations
        Instances For

          Profile data, collecting high, mean, corrector, highPressure, meanPressure, instance.

          Instances For
            @[instance_reducible]
            Equations

            Operators data, collecting interval, period, inverseFrame, strain, normal, meanSolve and their compatibility conditions.

            Instances For

              Literal angular averaging at each time and spatial label.

              Equations
              Instances For

                The stored coefficients determine the jets of V_i=A_i+B_i+C_{i-1}.

                Equations
                • One or more equations did not get rendered due to their size.
                Instances For

                  Known jets, given by history p (velocityJet O.interval a z) (slicedJet O.interval (a (p-1)).corrector z).

                  Equations
                  • One or more equations did not get rendered due to their size.
                  Instances For

                    All terms of the grade-p forcing that are already determined.

                    Equations
                    • One or more equations did not get rendered due to their size.
                    Instances For

                      Mean result, given by O.meanSolve (meanForce O p a).

                      Equations
                      Instances For

                        The sole new mean-primary interaction is added after solving the mean.

                        Equations
                        • One or more equations did not get rendered due to their size.
                        Instances For
                          noncomputable def EulerPacketProfileRecursion.step (O : Operators) (p : ) (a : Profile) :

                          Step, given by let b := meanResult O p a let h := O.highSolve (highForce O p a) ⟨h.1,b.1,O.curlCorrector h.1,h.2,b.2⟩.

                          Equations
                          • One or more equations did not get rendered due to their size.
                          Instances For
                            theorem EulerPacketProfileRecursion.velocityJet_congr (s : Set ) (p : ) (a b : Profile) (h : i < p, a i = b i) (z : EulerPacketPointJets.Domain) (i : ) (hi : i < p) :
                            velocityJet s a z i = velocityJet s b z i
                            theorem EulerPacketProfileRecursion.knownJets_congr (O : Operators) (p : ) (hp : 1 p) (a b : Profile) (h : i < p, a i = b i) (z : EulerPacketPointJets.Domain) :
                            knownJets O p a z = knownJets O p b z
                            theorem EulerPacketProfileRecursion.knownForce_congr (O : Operators) (p : ) (hp : 1 p) (a b : Profile) (h : i < p, a i = b i) :
                            knownForce O p a = knownForce O p b
                            theorem EulerPacketProfileRecursion.step_congr (O : Operators) (p : ) (hp : 2 p) (a b : Profile) (h : i < p, a i = b i) :
                            step O p a = step O p b

                            At p≥2 the complete new profile depends only on the strict prefix.

                            noncomputable def EulerPacketProfileRecursion.recursionStep (O : Operators) (primary : Profile) (p : ) (a : (i : ) → i < pProfile) :

                            Recursion step, with branches according to p=0.

                            Equations
                            Instances For
                              noncomputable def EulerPacketProfileRecursion.profiles (O : Operators) (primary : Profile) :

                              All finite profile families are restrictions of this one well-founded sequence.

                              Equations
                              Instances For
                                theorem EulerPacketProfileRecursion.profiles_unfold (O : Operators) (primary : Profile) (p : ) :
                                profiles O primary p = recursionStep O primary p fun (i : ) (x : i < p) => profiles O primary i
                                @[simp]
                                theorem EulerPacketProfileRecursion.profiles_zero (O : Operators) (primary : Profile) :
                                profiles O primary 0 = 0
                                @[simp]
                                theorem EulerPacketProfileRecursion.profiles_one (O : Operators) (primary : Profile) :
                                profiles O primary 1 = primary
                                theorem EulerPacketProfileRecursion.profiles_step (O : Operators) (primary : Profile) (p : ) (hp : 2 p) :
                                profiles O primary p = step O p (profiles O primary)

                                This is an actual recursive construction, not an existence assumption on profiles.

                                theorem EulerPacketProfileRecursion.profiles_mean (O : Operators) (primary : Profile) (p : ) (hp : 2 p) :
                                (profiles O primary p).mean = (meanResult O p (profiles O primary)).1
                                theorem EulerPacketProfileRecursion.profiles_high (O : Operators) (primary : Profile) (p : ) (hp : 2 p) :
                                (profiles O primary p).high = (O.highSolve (highForce O p (profiles O primary))).1
                                theorem EulerPacketProfileRecursion.profiles_corrector (O : Operators) (primary : Profile) (p : ) (hp : 2 p) :
                                (profiles O primary p).corrector = O.curlCorrector (profiles O primary p).high