From 893daf0b4ed778dea8171702b1164d0d5f07eab9 Mon Sep 17 00:00:00 2001 From: nikhitha79 <115790230+nikhitha79@users.noreply.github.com> Date: Fri, 4 Oct 2024 12:35:49 +0530 Subject: [PATCH 1/2] Create Bragg_angle.py --- physics/Bragg_angle.py | 64 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 physics/Bragg_angle.py diff --git a/physics/Bragg_angle.py b/physics/Bragg_angle.py new file mode 100644 index 000000000000..9cf2947514e0 --- /dev/null +++ b/physics/Bragg_angle.py @@ -0,0 +1,64 @@ +""" +Find the Bragg angle of a crystal given the wavelength of radiation, distane between the planes of crystal and the order of diffraction. + +In many areas of science, Bragg's law, Wulff–Bragg's condition, or Laue–Bragg interference are a special case of Laue diffraction, +giving the angles for coherent scattering of waves from a large crystal lattice. +It describes how the superposition of wave fronts scattered by lattice planes leads to a strict relation between the wavelength and scattering angle. +This law was initially formulated for X-rays, but it also applies to all types of matter waves including neutron and electron waves if there are a large number of atoms, +as well as visible light with artificial periodic microscale lattices. + +Reference: https://en.wikipedia.org/wiki/Bragg%27s_law + +""" + + + +import math + +def bragg_angle(distance: float, n: int, wavelength: float) -> float: + """ + Calculate the Bragg diffraction angle in degrees. + + The Bragg diffraction angle is given by + sin(θ) = (n * λ) / (2 * d) + + Parameters: + distance (float): Distance between crystal planes (in meters). + n (int): Order of reflection. + wavelength (float): Wavelength of the radiation (in meters). + + Returns: + float: The Bragg diffraction angle θ in degrees. + + Example: + >>> bragg_angle(2.2e-10, 1, 2.2e-10) + 30.0 + + >>> bragg_angle(5.0e-10, 2, 1.0e-10) + 11.5 + + >>> bragg_angle(4.0e-10, 1, 8.0e-10) + 90.0 + + # Test case for an invalid sine value that is 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 = (n * 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) From 913f683712ddeaf944fea7e051d40ea67a38a95d Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 4 Oct 2024 07:06:51 +0000 Subject: [PATCH 2/2] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- physics/Bragg_angle.py | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/physics/Bragg_angle.py b/physics/Bragg_angle.py index 9cf2947514e0..7d4e3d8155b7 100644 --- a/physics/Bragg_angle.py +++ b/physics/Bragg_angle.py @@ -1,35 +1,34 @@ """ Find the Bragg angle of a crystal given the wavelength of radiation, distane between the planes of crystal and the order of diffraction. -In many areas of science, Bragg's law, Wulff–Bragg's condition, or Laue–Bragg interference are a special case of Laue diffraction, -giving the angles for coherent scattering of waves from a large crystal lattice. -It describes how the superposition of wave fronts scattered by lattice planes leads to a strict relation between the wavelength and scattering angle. -This law was initially formulated for X-rays, but it also applies to all types of matter waves including neutron and electron waves if there are a large number of atoms, -as well as visible light with artificial periodic microscale lattices. - +In many areas of science, Bragg's law, Wulff–Bragg's condition, or Laue–Bragg interference are a special case of Laue diffraction, +giving the angles for coherent scattering of waves from a large crystal lattice. +It describes how the superposition of wave fronts scattered by lattice planes leads to a strict relation between the wavelength and scattering angle. +This law was initially formulated for X-rays, but it also applies to all types of matter waves including neutron and electron waves if there are a large number of atoms, +as well as visible light with artificial periodic microscale lattices. + Reference: https://en.wikipedia.org/wiki/Bragg%27s_law """ - - import math + def bragg_angle(distance: float, n: int, wavelength: float) -> float: """ Calculate the Bragg diffraction angle in degrees. The Bragg diffraction angle is given by sin(θ) = (n * λ) / (2 * d) - + Parameters: distance (float): Distance between crystal planes (in meters). n (int): Order of reflection. wavelength (float): Wavelength of the radiation (in meters). - + Returns: float: The Bragg diffraction angle θ in degrees. - + Example: >>> bragg_angle(2.2e-10, 1, 2.2e-10) 30.0 @@ -46,19 +45,20 @@ def bragg_angle(distance: float, n: int, wavelength: float) -> float: ... ValueError: The calculated sine value is out of the valid range. """ - + sine_theta = (n * 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)