def set_quantity(quantity, dimension, scale_factor): """ Set value and unit to physical quantity. Example: >>> import sympy.physics.units as un >>> from sympy.functions import * >>> from sympy.physics.units import Quantity >>> from utils import * >>> from sympy.physics.units import convert_to >>> >>> E = Quantity("E") >>> c = Quantity("c") >>> set_quantity(E, un.energy, 2.15e12 * un.kilo * un.watts * un.hour) >>> set_quantity(c, un.speed, 3.00e8 * un.m / un.s) >>> E = convert_to(E, un.joule).n() >>> m = E/c**2 7.74e+18*joule/c**2 convert_to(m, un.kg).n() 86.0*kilogram :param quantity: physical quantity, for example length, mass or energy :param dimension: time, length, mass ... based on sympy.physics.units :param scale_factor: value to be set to `quantity` parameter """ SI.set_quantity_dimension(quantity, dimension) SI.set_quantity_scale_factor(quantity, scale_factor)
def test_dimensions_of_expressions(self): a = Quantity("a") SI.set_quantity_dimension(a, length) t = Quantity("t") SI.set_quantity_dimension(t, time) res = a**2 / t # we can now determine the physical dimension of res res_dim = SI.get_dimensional_expr(res) self.assertTrue(dimsys_SI.equivalent_dims(res_dim, length**2 / time)) # In parameter dicts we can describe values along with units a_val = Quantity("a_val") SI.set_quantity_dimension(a_val, length) SI.set_quantity_scale_factor(a_val, 5 * meter) parameter_dict = {a: 5 * meter, t: 4 * second} res_val = res.subs(parameter_dict) # we can now determine the physical dimension of res_val # and check it against the expected print(SI.get_dimensional_expr(res_val)) self.assertTrue( dimsys_SI.equivalent_dims(SI.get_dimensional_expr(res), SI.get_dimensional_expr(res_val)))
def test_issue_22164(): warnings.simplefilter("error") dm = Quantity("dm") SI.set_quantity_dimension(dm, length) SI.set_quantity_scale_factor(dm, 1) bad_exp = Quantity("bad_exp") SI.set_quantity_dimension(bad_exp, length) SI.set_quantity_scale_factor(bad_exp, 1) expr = dm**bad_exp # deprecation warning is not expected here SI._collect_factor_and_dimension(expr)
from sympy import symbols, solve, Eq, pretty_print from sympy.physics.units import Quantity, mass, acceleration, power, velocity from sympy.physics.units import convert_to from sympy.physics.units import kilo from sympy.physics.units import km, hour, m, s, kg, W from sympy.physics.units.systems import SI a = symbols("a") m_ = Quantity("m") v = Quantity("v") W_ = Quantity("W") SI.set_quantity_dimension(a, acceleration) SI.set_quantity_dimension(m_, mass) SI.set_quantity_scale_factor(m_, 1000*kg) SI.set_quantity_dimension(v, velocity) SI.set_quantity_scale_factor(v, 60*km/hour) SI.set_quantity_dimension(W_, power) SI.set_quantity_scale_factor(W_, 120*kilo*W) eq = Eq(W_, m_*a*v) result = solve(eq, a)[0] pretty_print(result) pretty_print(convert_to(result, m / s ** 2).n())
init_printing() Wo = symbols("Wo") v = symbols("v") rho = Quantity("rho") s = Quantity("s") g = Quantity("g") h1 = Quantity("h1") h2 = Quantity("h2") etha = Quantity("etha") theta = Quantity("theta") SI.set_quantity_dimension(rho, mass / length**3) SI.set_quantity_scale_factor(rho, 1.0 * un.grams / un.cm**3) SI.set_quantity_dimension(s, length**2) SI.set_quantity_scale_factor(s, 35.0 * un.cm**2) SI.set_quantity_dimension(h1, length) SI.set_quantity_scale_factor(h1, 2.4 * un.meters) SI.set_quantity_dimension(h2, length) SI.set_quantity_scale_factor(h2, 4.8 * un.meters) SI.set_quantity_dimension(g, acceleration) SI.set_quantity_scale_factor(g, 9.81 * un.m / un.s**2) SI.set_quantity_dimension(etha, One) SI.set_quantity_scale_factor(etha, 0.6)