feat(QuantumMechanics/Blackbody): extend Planck's law with wavelength form and radiation constants - #1720
feat(QuantumMechanics/Blackbody): extend Planck's law with wavelength form and radiation constants#1720dwan-ith wants to merge 2 commits into
Conversation
…isplacement law Formalizes the project idea 'Planck's Theory of Blackbody Radiation' from https://physlib.io/project-ideas. Key additions: - Frequency and wavelength forms of Planck's spectral radiance - Positivity, absolute-zero limits, correspondence between forms - First and second radiation constants - Wien auxiliary function h(x) = x - n(1 - e^{-x}) - Existence and uniqueness of the positive Wien root (IVT + monotonicity) - Named Wien constants x5 ≈ 4.9651 (wavelength) and x3 ≈ 2.8214 (frequency) - Rigorous enclosures 4 < x5 < 5 and 2 < x3 < 3 (no sorry) - Global maxima of spectral radiance curves (isMaxOn) - Wien's displacement laws: λ₁T₁ = λ₂T₂ and ν₁/T₁ = ν₂/T₂ - Proof that wavelength and frequency peaks differ (wien_roots_differ)
|
Thank you for this pull-request (PR). If this is your first PR, welcome to the community! Below is what will happen next. Please read carefully if you are not familiar with the process. You may open other PRs while this one is being reviewed, and can stack PRs on top of each other, so don't let these steps slow you down.
Tip: The easiest way to get have a fast review is to submit a PR that is small and self-contained, and has clear documentation explaining why things are the way they are in your chages. If you have any problems or questions, please reach out to the community on the Zulip. |
|
Hi @dwan-ith Many thanks for this Pull-request (PR). I think this is a bit long. Maybe we could restrict this PR to just be the Planck's law file? This way we can iterate a lot quicker :). |
|
awaiting-author |
|
Hi Joseph. Sure thing, I will do only Planck's law. The rest in another PR or how would you like it to be done? |
|
Yes please, if the rest could go in another PR that would be great. |
jstoobysmith
left a comment
There was a problem hiding this comment.
Couple of comments to start of with
| @@ -1,13 +1,14 @@ | |||
| /- | |||
| Copyright (c) 2026 Samyak Rai. All rights reserved. | |||
| Copyright (c) 2026 Samyak Rai, Dwanith C. Jayanth. All rights reserved. | |||
There was a problem hiding this comment.
Normally we restrict the copyright to only one name.
| `B(ν, T) = 2 h ν³ / c² · 1 / (e ^ (h ν / (kB T)) - 1)`, | ||
|
|
||
| extended by zero outside the physical domain. -/ | ||
| noncomputable def spectralRadianceFreq (h c kB ν T : ℝ) : ℝ := |
There was a problem hiding this comment.
I wouldn't remake this definition since it is essentially equivalent to spectralRadiance.
|
|
||
| @[expose] public section | ||
|
|
||
|
|
There was a problem hiding this comment.
Here I think it might be worth making a structure
structure BlackBody with
T : Temperature
and then using this as an input to all of the things bellow.
| -/ | ||
|
|
||
| /-- The first radiation constant `c₁L = 2 h c²`. -/ | ||
| noncomputable def firstRadiationConstant (h c : ℝ) : ℝ := 2 * h * c ^ 2 |
There was a problem hiding this comment.
c : SpeedOfLight. We also use the value of kB and h given via the imports. In theory we could define a set value of c aswell.
| le_of_lt (spectralRadianceFreq_pos h c kB ν T hh hc hk hν hT) | ||
|
|
||
| /-- The spectral radiance per unit wavelength is non-negative on the physical domain. -/ | ||
| lemma spectralRadianceWave_nonneg (h c kB lam T : ℝ) (hh : 0 < h) (hc : 0 < c) |
There was a problem hiding this comment.
Results like this should appear next to the corresponding definition.
|
|
||
| /-- The first radiation constant equals `2 * h * c ^ 2`. -/ | ||
| @[simp] | ||
| lemma firstRadiationConstant_eq (h c : ℝ) : |
There was a problem hiding this comment.
I probably would not attribute this and the lemma below with @[simp].
|
awaiting-author |
|
sorry, this is my first PR. but sure, i'll make all the changes |
|
@dwan-ith responding to your email - no need to apologise! Totally normal for lots of comments on PRs (even experienced contributors get them :)). |
|
There are some design decisions which likely need to be addressed at some point, if this is of interest to you (not necessary for this PR). For example, do we need a type for frequency, and wavelength (we currently don't). Do we need a type for things like the planck's constant as we do with SpeedOfLight (currently we just have a given element). These two approaches don't appear to agree.... |
|
Thanks for pointing that out! I noticed them too. some were a bit confusing and probably need to be sorted out as you said. let me know if there's anything else that needs adjusting! :) |
Formalizes the project idea "Planck's Theory of Blackbody Radiation" from physlib.io/project-ideas.
Extends the existing
Physlib.QuantumMechanics.Blackbody.PlancksLawPlanck's Law:
spectralRadianceFreq) and wavelength (spectralRadianceWave)spectralRadianceWave_eq_freq:spectralRadianceWave_eq_constants(Note: Wien's displacement law has been done as a seperate PR).