Imports
/- Copyright (c) 2026 Florian Wiesner. All rights reserved. Released under Apache 2.0 license as described in the file LICENSE. Authors: Florian Wiesner -/ module public import Physlib.FluidDynamics.CauchyFlow.Basic public import Physlib.FluidDynamics.FluidFlow.Momentum

Cauchy momentum equations

i. Overview

This module defines the conservative and convective Cauchy momentum equations for a fluid flow with stress and specific body-force fields. The stress tensor is left as an input field, so this is the balance-law layer before specializing to a constitutive law, such as Euler or Navier-Stokes.

ii. Key results

    CauchyFlow.CauchyMomentumEquation : Conservation of momentum using Space.matrixDiv.

    CauchyFlow.ConvectiveCauchyMomentumEquation : The Cauchy momentum equation in convective form.

    CauchyFlow.cauchyMomentumEquation_iff_convectiveCauchyMomentumEquation : Equivalence of the two Cauchy momentum equations when continuity holds and the fields are differentiable.

iii. Table of contents

    A. Cauchy momentum equations

    B. Equivalence of conservative and convective Cauchy momentum

iv. References

@[expose] public section

A. Cauchy momentum equations

Conservation of momentum in conservative matrix-divergence form.

The equation is

partial_t (rho u) + matrixDiv (rho u ⊗ u) = matrixDiv sigma + rho f.

Here stress is intentionally not yet specialized to a constitutive law.

def CauchyMomentumEquation (d : ) (flow : CauchyFlow d) : Prop := t x, ∂ₜ (FluidFlow.momentumDensity d flow.toFluidFlow · x) t + matrixDiv d (FluidFlow.momentumFlux d flow.toFluidFlow t) x = matrixDiv d (flow.stress t) x + flow.rho t x flow.specificBodyForce t x

Conservation of momentum in convective form.

The equation is

rho (partial_t u + (u · ∇)u) = matrixDiv sigma + rho f.

Here stress is intentionally not yet specialized to a constitutive law.

def ConvectiveCauchyMomentumEquation (d : ) (flow : CauchyFlow d) : Prop := t x, flow.rho t x FluidFlow.materialAcceleration d flow.toFluidFlow t x = matrixDiv d (flow.stress t) x + flow.rho t x flow.specificBodyForce t x

B. Equivalence of conservative and convective Cauchy momentum

The conservative and convective Cauchy momentum equations are equivalent when the classical continuity equation holds.

The differentiability assumptions are exactly the product-rule assumptions used to rewrite partial_t (rho u) and matrixDiv (rho u ⊗ u).

d:flow:CauchyFlow dhContinuity:FluidFlow.ClassicalContinuityEquation d flow.toFluidFlowhRhoTime: (t : Time) (x : Space d), DifferentiableAt (fun x_1 => flow.rho x_1 x) thVelocityTime: (t : Time) (x : Space d), DifferentiableAt (fun x_1 => flow.velocity x_1 x) thMomentumDensity: (t : Time), Differentiable (FluidFlow.momentumDensity d flow.toFluidFlow t)hVelocitySpace: (t : Time), Differentiable (flow.velocity t)conservative_eq_convective_lhs: (t : Time) (x : Space d), ∂ₜ (fun x_1 => FluidFlow.momentumDensity d flow.toFluidFlow x_1 x) t + matrixDiv d (FluidFlow.momentumFlux d flow.toFluidFlow t) x = flow.rho t x FluidFlow.materialAcceleration d flow.toFluidFlow t xCauchyMomentumEquation d flow ConvectiveCauchyMomentumEquation d flow All goals completed! 🐙