Documentation

LeanPool.NavierStokesAndEuler.Euler.OrdinaryEulerConcatenation

Two actual ordinary Euler solutions with matching endpoint data concatenate to an actual solution. The projected equation identifies their time derivatives at the seam; the scalar pressure is canonical.

Concatenation of two paths on closed time intervals. Matching endpoint values and derivatives give a genuine derivative at the seam.

noncomputable def EulerIntervalConcatenation.join {E : Type u_1} (T S : ) (hT : 0 T) (hS : 0 S) (f : (Set.Icc 0 T)E) (g : (Set.Icc 0 S)E) (t : ) :
E

Join, with branches according to t ≤ T.

Equations
Instances For
    theorem EulerIntervalConcatenation.join_left {E : Type u_1} {T S : } {hT : 0 T} {hS : 0 S} (f : (Set.Icc 0 T)E) (g : (Set.Icc 0 S)E) {t : } (ht : t T) :
    join T S hT hS f g t = f (Set.projIcc 0 T hT t)
    theorem EulerIntervalConcatenation.join_right {E : Type u_1} {T S : } {hT : 0 T} {hS : 0 S} (f : (Set.Icc 0 T)E) (g : (Set.Icc 0 S)E) (hfg : f T, = g 0, ) {t : } (ht : T t) :
    join T S hT hS f g t = g (Set.projIcc 0 S hS (t - T))
    theorem EulerIntervalConcatenation.map_join {E : Type u_1} {T S : } {hT : 0 T} {hS : 0 S} (f : (Set.Icc 0 T)E) (g : (Set.Icc 0 S)E) {F : Type u_2} (A : EF) (t : ) :
    A (join T S hT hS f g t) = join T S hT hS (fun (s : (Set.Icc 0 T)) => A (f s)) (fun (s : (Set.Icc 0 S)) => A (g s)) t
    theorem EulerIntervalConcatenation.join_continuous {E : Type u_1} {T S : } {hT : 0 T} {hS : 0 S} (f : (Set.Icc 0 T)E) (g : (Set.Icc 0 S)E) [TopologicalSpace E] (hf : Continuous f) (hg : Continuous g) (hfg : f T, = g 0, ) :
    Continuous (join T S hT hS f g)
    theorem EulerIntervalConcatenation.join_hasDerivAt_seam {E : Type u_1} {T S : } {hT : 0 T} {hS : 0 S} (f : (Set.Icc 0 T)E) (g : (Set.Icc 0 S)E) [NormedAddCommGroup E] [NormedSpace E] (df : (Set.Icc 0 T)E) (dg : (Set.Icc 0 S)E) (hTpos : 0 < T) (hSpos : 0 < S) (hfg : f T, = g 0, ) (hdf : ∀ (t : (Set.Icc 0 T)), HasDerivWithinAt (fun (r : ) => f (Set.projIcc 0 T hT r)) (df t) (Set.Icc 0 T) t) (hdg : ∀ (t : (Set.Icc 0 S)), HasDerivWithinAt (fun (r : ) => g (Set.projIcc 0 S hS r)) (dg t) (Set.Icc 0 S) t) (hderiv : df T, = dg 0, ) :
    HasDerivAt (join T S hT hS f g) (df T, ) T
    theorem EulerIntervalConcatenation.join_hasDerivAt {E : Type u_1} {T S : } {hT : 0 T} {hS : 0 S} (f : (Set.Icc 0 T)E) (g : (Set.Icc 0 S)E) [NormedAddCommGroup E] [NormedSpace E] (df : (Set.Icc 0 T)E) (dg : (Set.Icc 0 S)E) (hTpos : 0 < T) (hSpos : 0 < S) (hfg : f T, = g 0, ) (hdf : ∀ (t : (Set.Icc 0 T)), HasDerivWithinAt (fun (r : ) => f (Set.projIcc 0 T hT r)) (df t) (Set.Icc 0 T) t) (hdg : ∀ (t : (Set.Icc 0 S)), HasDerivWithinAt (fun (r : ) => g (Set.projIcc 0 S hS r)) (dg t) (Set.Icc 0 S) t) (hderiv : df T, = dg 0, ) (t : ) (ht : t Set.Ioo 0 (T + S)) :
    HasDerivAt (join T S hT hS f g) (join T S hT hS df dg t) t
    noncomputable def EulerOrdinarySobolev.Evolution.joinedVelocity {T S : } {hT : 0 T} {hS : 0 S} (U : Evolution T hT) (V : Evolution S hS) (t : (Set.Icc 0 (T + S))) :

    Joined velocity, given by join T S hT hS U.velocity V.velocity t.

    Equations
    Instances For
      theorem EulerOrdinarySobolev.Evolution.joinedVelocity_continuous {T S : } {hT : 0 T} {hS : 0 S} (U : Evolution T hT) (V : Evolution S hS) (hmatch : U.velocity T, = V.velocity 0, ) (n : ) :
      Continuous fun (t : (Set.Icc 0 (T + S))) => (U.joinedVelocity V t).jetLp n
      theorem EulerOrdinarySobolev.Evolution.velocity_toLp_hasDerivWithinAt_projected {T : } {hT : 0 T} (U : Evolution T hT) (hpos : 0 < T) (t : (Set.Icc 0 T)) :
      HasDerivWithinAt (fun (r : ) => (U.velocity (Set.projIcc 0 T hT r)).toLp) (projectedRhs (U.velocity t)).toLp (Set.Icc 0 T) t
      theorem EulerOrdinarySobolev.Evolution.joinedVelocity_derivative {T S : } {hT : 0 T} {hS : 0 S} (U : Evolution T hT) (V : Evolution S hS) (hTpos : 0 < T) (hSpos : 0 < S) (hmatch : U.velocity T, = V.velocity 0, ) (t : ) (ht : t Set.Ioo 0 (T + S)) :
      HasDerivAt (fun (r : ) => (U.joinedVelocity V (Set.projIcc 0 (T + S) r)).toLp) (projectedRhs (U.joinedVelocity V t, )).toLp t
      noncomputable def EulerOrdinarySobolev.Evolution.concatenate {T S : } {hT : 0 T} {hS : 0 S} (U : Evolution T hT) (V : Evolution S hS) (hTpos : 0 < T) (hSpos : 0 < S) (hmatch : U.velocity T, = V.velocity 0, ) :
      Evolution (T + S)

      Concatenate, bundling velocity, pressureForce, velocity_continuous, pressure_continuous and the required compatibility proofs.

      Equations
      • One or more equations did not get rendered due to their size.
      Instances For
        theorem EulerOrdinarySobolev.Evolution.concatenate_initial {T S : } {hT : 0 T} {hS : 0 S} (U : Evolution T hT) (V : Evolution S hS) (hTpos : 0 < T) (hSpos : 0 < S) (hmatch : U.velocity T, = V.velocity 0, ) :
        (U.concatenate V hTpos hSpos hmatch).velocity 0, = U.velocity 0,
        theorem EulerOrdinarySobolev.Evolution.concatenate_left {T S : } {hT : 0 T} {hS : 0 S} (U : Evolution T hT) (V : Evolution S hS) (hTpos : 0 < T) (hSpos : 0 < S) (hmatch : U.velocity T, = V.velocity 0, ) (t : (Set.Icc 0 T)) :
        (U.concatenate V hTpos hSpos hmatch).velocity t, = U.velocity t
        theorem EulerOrdinarySobolev.Evolution.concatenate_right {T S : } {hT : 0 T} {hS : 0 S} (U : Evolution T hT) (V : Evolution S hS) (hTpos : 0 < T) (hSpos : 0 < S) (hmatch : U.velocity T, = V.velocity 0, ) (t : (Set.Icc 0 S)) :
        (U.concatenate V hTpos hSpos hmatch).velocity T + t, = V.velocity t