Le module siunit

C’est une classe numérique qui gére les grandeur physique avec les unités SI.
Par exemple 5 kilos + 3 g = 5,003 kg, mais 5 kilos + 3 volts n’a aucun sens.
Ca tourne donc autour de l’analyse dimensionnelle.

Les sources sont aux bout de ce lien

Exemple

Ci-dessous, on crée une hauteur, une masse et une gravitée.
Puis, on multiplie les 3 (formule de l’énergie potentielle)
Le résultat est une énergie exprimée en m2.kg.s-2. Cette unité correspond aux joules.
On essaie ensuite d’additionner la masse et la hauteur. Cela, évidemment, crée une exception.

>>>import siunit
>>> hauteur = 2*m
>>> masse = 3*kg
>>> print ("hauteur = {0}, masse = {1}".format(hauteur,masse))
hauteur = 2 m, masse = 3 kg
>>> g = 9.81*m/s/s
>>> energie_potentielle = hauteur*masse*g
>>> print(energie_potentielle)
58.86 m2.kg.s-2
>>> absurde = hauteur + masse   #TypeError exception
Traceback (most recent call last):
  File "", line 1, in 
    absurde = hauteur + masse
  File "D:\Code\libsPython\dimentional analysis\siunit.py", line 67, in __add__
    " and "+unit_to_str(other.unit))
TypeError: Cannot add units m and kg
>>> 

Plus en détail

Ce module contient la classe numérique immutable Dnumber (pour « denominated number », grandeur physique en Anglais) dérivé de la classe virtuelle Real.
Les valeur utilisées dans l’exemple ci-dessus sont toutes des instances de Dnumber. Y compris m, kg ou s qui sont prédéfinis dans le module.
Scrollez tout a la fin du code pour voir toutes les unités ainsi definies.

On peut faire l’essentiel des opérations courantes pourvues qu’elle aient du sens du point de vu de la physique.
Opérations définies: +, -, *, /, abs(),==, !=, //, %, <, <=, >, >=, float, math.trunc(), round(), math.floor(), math.ceil(), divmod() and a few others.

J’ai aussi defini beaucoup de sous unités. On peut donc faire ceci:

>>> longueur = 30 * cm
>>> longueur += 2*inch
>>> print (longueur)
0.3508 m
>>> print (3*longueur)
1.0524 m
>>>

Par contre longueur + 3 ne marche pas puisque le premier nombre a une unité et pas le second

Ce module fonctionne assez bien avec le module Vector2D

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.