Imports
/-
Copyright (c) 2025 Joseph Tooby-Smith. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Joseph Tooby-Smith
-/
module
public import Physlib.ClassicalMechanics.RigidBody.Basic
public import Physlib.SpaceAndTime.Space.Integrals.Basic
public import Physlib.Meta.Linters.SorryThe solid sphere as a rigid body
In this module we consider the solid sphere as a rigid body, and compute its mass, center of mass and inertia tensor.
@[expose] public sectiond:ℕm:ℝ≥0R:ℝ≥0hr:R ≠ 0h1:volume.real (Metric.closedBall 0 ↑R) ≠ 0⊢ ↑m / volume.real (Metric.closedBall 0 ↑R) * volume.real (Metric.closedBall 0 ↑R) = ↑m
field_simp All goals completed! 🐙
The center of mass of a solid sphere located at the origin is 0.
lemma solidSphere_centerOfMass {d : ℕ} (m R : ℝ≥0) : (solidSphere d m R).centerOfMass = 0 := by d:ℕm:ℝ≥0R:ℝ≥0⊢ (solidSphere d m R).centerOfMass = 0
ext i d:ℕm:ℝ≥0R:ℝ≥0i:Fin d⊢ (solidSphere d m R).centerOfMass.val i = Space.val 0 i
simp only [centerOfMass, solidSphere, one_div, LinearMap.coe_mk, AddHom.coe_mk,
ContMDiffMap.coeFn_mk, smul_eq_mul, Space.zero_apply, mul_eq_zero, inv_eq_zero, div_eq_zero_iff,
coe_eq_zero] d:ℕm:ℝ≥0R:ℝ≥0i:Fin d⊢ {
ρ :=
{
toFun := fun f =>
↑m / volume.real (Metric.closedBall 0 ↑R) * ∫ (x : Space d) in Metric.closedBall 0 ↑R, f x,
map_add' := ⋯, map_smul' := ⋯ } }.mass =
0 ∨
(m = 0 ∨ volume.real (Metric.closedBall 0 ↑R) = 0) ∨ ∫ (x : Space d) in Metric.closedBall 0 ↑R, x.val i = 0
right d:ℕm:ℝ≥0R:ℝ≥0i:Fin d⊢ (m = 0 ∨ volume.real (Metric.closedBall 0 ↑R) = 0) ∨ ∫ (x : Space d) in Metric.closedBall 0 ↑R, x.val i = 0
right d:ℕm:ℝ≥0R:ℝ≥0i:Fin d⊢ ∫ (x : Space d) in Metric.closedBall 0 ↑R, x.val i = 0
suffices ∫ x in Metric.closedBall (0 : Space d) R, x i ∂MeasureSpace.volume
= -∫ x in Metric.closedBall (0 : Space d) R, x i ∂MeasureSpace.volume by d:ℕm:ℝ≥0R:ℝ≥0i:Fin dthis:∫ (x : Space d) in Metric.closedBall 0 ↑R, x.val i = -∫ (x : Space d) in Metric.closedBall 0 ↑R, x.val i⊢ ∫ (x : Space d) in Metric.closedBall 0 ↑R, x.val i = 0 d:ℕm:ℝ≥0R:ℝ≥0i:Fin d⊢ ∫ (x : Space d) in Metric.closedBall 0 ↑R, x.val i = -∫ (x : Space d) in Metric.closedBall 0 ↑R, x.val i linarith d:ℕm:ℝ≥0R:ℝ≥0i:Fin d⊢ ∫ (x : Space d) in Metric.closedBall 0 ↑R, x.val i = -∫ (x : Space d) in Metric.closedBall 0 ↑R, x.val i d:ℕm:ℝ≥0R:ℝ≥0i:Fin d⊢ ∫ (x : Space d) in Metric.closedBall 0 ↑R, x.val i = -∫ (x : Space d) in Metric.closedBall 0 ↑R, x.val i
rw [← integral_neg d:ℕm:ℝ≥0R:ℝ≥0i:Fin d⊢ ∫ (x : Space d) in Metric.closedBall 0 ↑R, x.val i = ∫ (a : Space d) in Metric.closedBall 0 ↑R, -a.val i d:ℕm:ℝ≥0R:ℝ≥0i:Fin d⊢ ∫ (x : Space d) in Metric.closedBall 0 ↑R, x.val i = ∫ (a : Space d) in Metric.closedBall 0 ↑R, -a.val i] d:ℕm:ℝ≥0R:ℝ≥0i:Fin d⊢ ∫ (x : Space d) in Metric.closedBall 0 ↑R, x.val i = ∫ (a : Space d) in Metric.closedBall 0 ↑R, -a.val i
simp only [← integral_indicator measurableSet_closedBall, Set.indicator, Metric.mem_closedBall] d:ℕm:ℝ≥0R:ℝ≥0i:Fin d⊢ (∫ (x : Space d), if dist x 0 ≤ ↑R then x.val i else 0) = ∫ (x : Space d), if dist x 0 ≤ ↑R then -x.val i else 0
rw [← integral_neg_eq_self d:ℕm:ℝ≥0R:ℝ≥0i:Fin d⊢ (∫ (x : Space d), if dist (-x) 0 ≤ ↑R then (-x).val i else 0) = ∫ (x : Space d), if dist x 0 ≤ ↑R then -x.val i else 0 d:ℕm:ℝ≥0R:ℝ≥0i:Fin d⊢ (∫ (x : Space d), if dist (-x) 0 ≤ ↑R then (-x).val i else 0) = ∫ (x : Space d), if dist x 0 ≤ ↑R then -x.val i else 0] d:ℕm:ℝ≥0R:ℝ≥0i:Fin d⊢ (∫ (x : Space d), if dist (-x) 0 ≤ ↑R then (-x).val i else 0) = ∫ (x : Space d), if dist x 0 ≤ ↑R then -x.val i else 0
norm_num All goals completed! 🐙
The moment of inertia tensor of a solid sphere through its center of mass is
2/5 m R^2 * I.
@[sorryful]
lemma solidSphere_inertiaTensor (m R : ℝ≥0) (hr : R ≠ 0) :
(solidSphere 3 m R).inertiaTensor = (2/5 * m.1 * R.1^2) • (1 : Matrix _ _ _) := by m:ℝ≥0R:ℝ≥0hr:R ≠ 0⊢ (solidSphere 3 m R).inertiaTensor = (2 / 5 * ↑m * ↑R ^ 2) • 1
sorry All goals completed! 🐙