Create bragg_angle.py (#11744)

* Create bragg_angle.py

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* updating DIRECTORY.md

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Christian Clauss <cclauss@me.com>
Co-authored-by: cclauss <cclauss@users.noreply.github.com>
This commit is contained in:
nikhitha79
2026-09-13 22:44:45 +02:00
committed by GitHub
co-authored by pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Christian Clauss cclauss
parent e8f2965749
commit 8b644608af
2 changed files with 42 additions and 0 deletions
+1
View File
@@ -1008,6 +1008,7 @@
* [Altitude Pressure](physics/altitude_pressure.py)
* [Archimedes Principle Of Buoyant Force](physics/archimedes_principle_of_buoyant_force.py)
* [Basic Orbital Capture](physics/basic_orbital_capture.py)
* [Bragg Angle](physics/bragg_angle.py)
* [Casimir Effect](physics/casimir_effect.py)
* [Center Of Mass](physics/center_of_mass.py)
* [Centripetal Force](physics/centripetal_force.py)
+41
View File
@@ -0,0 +1,41 @@
import math
def bragg_angle(distance: float, order: int, wavelength: float) -> float:
"""
Calculate the Bragg diffraction angle using the formula:
sin(θ) = (n * λ) / (2 * d)
Parameters:
distance d (float): Distance between crystal planes (in meters).
order n (int): Order of reflection.
wavelength λ (float): Wavelength of the radiation (in meters).
Examples:
>>> bragg_angle(2.2e-10, 1, 2.2e-10)
30.0
>>> bragg_angle(5e-10, 2, 1e-10)
11.5
>>> bragg_angle(4e-10, 1, 4e-10)
30.0
# Test case for an invalid sine value (out of range)
>>> bragg_angle(1e-10, 2, 3e-10)
Traceback (most recent call last):
...
ValueError: The calculated sine value is out of the valid range.
"""
sine_theta = (order * wavelength) / (2 * distance)
if sine_theta > 1 or sine_theta < -1:
raise ValueError("The calculated sine value is out of the valid range.")
theta_radians = math.asin(sine_theta)
theta_degrees = math.degrees(theta_radians)
return round(theta_degrees, 1)
if __name__ == "__main__":
import doctest
doctest.testmod(verbose=True)