* Medium """ from sympy.physics.units import second, meter, kilogram, ampere __all__ = ['Medium'] from sympy.core.basic import Basic from sympy.core.symbol import Str from sympy.core.sympify import _sympify from sympy.functions.elementary.miscellaneous import sqrt from sympy.physics.units import speed_of_light, u0, e0 c = speed_of_light.convert_to(meter / second) _e0mksa = e0.convert_to(ampere**2 * second**4 / (kilogram * meter**3)) _u0mksa = u0.convert_to(meter * kilogram / (ampere**2 * second**2)) class Medium(Basic): """ This class represents an optical medium. The prime reason to implement this is to facilitate refraction, Fermat's principle, etc. Explanation =========== An optical medium is a material through which electromagnetic waves propagate. The permittivity and permeability of the medium define how electromagnetic waves propagate in it.
from sympy import sqrt, simplify from sympy.physics.optics import Medium from sympy.abc import epsilon, mu from sympy.physics.units import speed_of_light, u0, e0, m, kg, s, A c = speed_of_light.convert_to(m/s) e0 = e0.convert_to(A**2*s**4/(kg*m**3)) u0 = u0.convert_to(m*kg/(A**2*s**2)) def test_medium(): m1 = Medium('m1') assert m1.intrinsic_impedance == sqrt(u0/e0) assert m1.speed == 1/sqrt(e0*u0) assert m1.refractive_index == c*sqrt(e0*u0) assert m1.permittivity == e0 assert m1.permeability == u0 m2 = Medium('m2', epsilon, mu) assert m2.intrinsic_impedance == sqrt(mu/epsilon) assert m2.speed == 1/sqrt(epsilon*mu) assert m2.refractive_index == c*sqrt(epsilon*mu) assert m2.permittivity == epsilon assert m2.permeability == mu # Increasing electric permittivity and magnetic permeability # by small amount from its value in vacuum. m3 = Medium('m3', 9.0*10**(-12)*s**4*A**2/(m**3*kg), 1.45*10**(-6)*kg*m/(A**2*s**2)) assert m3.refractive_index > m1.refractive_index assert m3 > m1 # Decreasing electric permittivity and magnetic permeability # by small amount from its value in vacuum.
* Medium """ from __future__ import division from sympy.physics.units import second, meter, kilogram, ampere __all__ = ['Medium'] from sympy import Symbol, sympify, sqrt from sympy.physics.units import speed_of_light, u0, e0 c = speed_of_light.convert_to(meter/second) _e0mksa = e0.convert_to(ampere**2*second**4/(kilogram*meter**3)) _u0mksa = u0.convert_to(meter*kilogram/(ampere**2*second**2)) class Medium(Symbol): """ This class represents an optical medium. The prime reason to implement this is to facilitate refraction, Fermat's priciple, etc. An optical medium is a material through which electromagnetic waves propagate. The permittivity and permeability of the medium define how electromagnetic waves propagate in it. Parameters ==========