Physique, éditable par tous
test chuba md (changes)

Showing changes from revision #0 to #1: Added | Removed | Changed

Analyse des forces dans une suspension de type double whishbone

Plan provenant du prototype (jamais construit) de la Chubasco 1990 de Maserati

import numpy as np
from math import *

def chuba(n, m):
    "retourne le vecteur position reliant le point n vers le point m"
    points = [[6.13,-14.10], [8.57,13.10], [39.68,8.52], [47.51,-13.10],
        [10.02,-14.03], [42.55,20.36], [45.40,12.73], [55.44,16.06],
        [48.46,-13.28], [0.00,-26.17]]
    return Vecteur(points[m-1]) - Vecteur(points[n-1])

def unit(theta):
    "retourne le vecteur unitaire définit par l'angle theta en deg"
    theta_rad = pi*theta/180.
    return Vecteur([cos(theta_rad), sin(theta_rad)])

def v(x, y):
    "retourne un vecteur dont les composantes sont x et y"
    return Vecteur([x,y])

def module(vect):
    "retourne la norme du vecteur vect"
    return np.linalg.norm(vect)

class Vecteur(np.ndarray):

    def __new__(cls, input_array):
        # Input array is an already formed ndarray instance
        # We first cast to be our class type
        obj = np.asarray(input_array).view(cls)
        # add the new attribute to the created instance
        # Finally, we must return the newly created object:
        return obj
    def __invert__(self):
        "~ vect normalise le vecteur"
        norm = np.linalg.norm(self)
        return self/norm

    def __mul__(self, arg):
        "A*B correspond au produit vecoriel"
        return np.cross(self, arg)

ChubascoFrontSusp.jpg

DCLroueV2.jpeg

L’équilibre en rotation de la pièce isolée (avec pivot au point 1) permet d’écrire l’équation:

M SA=M BA M_{SA} = - M_{BA}
overrightarrowR 12×overrightarrowBA=overrightarrowR 110×overrightarrowSA\overrightarrow{R_{12}} \times \overrightarrow{BA} = - \overrightarrow{R_{110}} \times \overrightarrow{SA}

overrightarrowBA\overrightarrow{BA} est le seul vecteur inconnu, donc calculable! Les conventions d’écriture suivantes sont utilisées: * BA est la force par la pièce B sur la pièce A et SA, la force par S sur A; * overrightarrowR 12\overrightarrow{R_{12}} est le vecteur position qui va du point 1 vers le point 2.

Les outils informatiques de calcul suivants sont disponibles: * chuba(1,2) génère le vecteur position qui va de la jonction 1 vers la jonction 2 * ~AB est le vecteur unitaire AB^\widehat{AB} * AB*CD évalue le produit vectoriel overrightarrowAB×overrightarrowCD\overrightarrow{AB} \times \overrightarrow{CD} * v(x,y) donne le vecteur de composantes x et y

SA=v(0,1000)
SA
Vecteur([   0, 1000])

Comment isoler le module de la force overrightarrowBA\overrightarrow{BA} dans l’équation précédente? $overrightarrowR 12×overrightarrowBA=overrightarrowR 110×overrightarrowSA\overrightarrow{R_{12}} \times \overrightarrow{BA} = - \overrightarrow{R_{110}} \times \overrightarrow{SA}$

il suffit de dévelloper le vecteur overrightarrowBA\overrightarrow{BA} comme étant le produit de son module et sa direction:

overrightarrowBA=BABA^ \overrightarrow{BA} = BA \cdot \widehat{BA}
overrightarrowR 12×(BABA^)=overrightarrowR 110×overrightarrowSA\overrightarrow{R_{12}} \times (BA \cdot \widehat{BA}) = - \overrightarrow{R_{110}} \times \overrightarrow{SA}
BA(overrightarrowR 12×BA^)=overrightarrowR 110×overrightarrowSA BA \cdot (\overrightarrow{R_{12}} \times \widehat{BA}) = - \overrightarrow{R_{110}} \times \overrightarrow{SA}

et alors

BA=overrightarrowR 110×overrightarrowSAoverrightarrowR 12×BA^ BA = - \frac{\overrightarrow{R_{110}} \times \overrightarrow{SA}} {\overrightarrow{R_{12}} \times \widehat{BA}}

en module, et pour le vecteur:

overrightarrowBA=overrightarrowR 110×overrightarrowSAoverrightarrowR 12×BA^BA^ \overrightarrow{BA} = - \frac{\overrightarrow{R_{110}} \times \overrightarrow{SA}} {\overrightarrow{R_{12}} \times \widehat{BA}} \widehat{BA}

BA^\widehat{BA} apparaît deux fois: il est donc utile de le calculer au préalable. BA^\widehat{BA} est la direction de la force BA et donc parallèle à la pièce B (effort axial pur). Cette direction est définie par les points 3 vers 2. On a alors BA^\widehat{BA} = r32d = ~chuba(3,2) :

r32d=~chuba(3,2) # vecteur unitaire en direction de (3,2)
r32d
Vecteur([-0.98933623,  0.14564963])

Le vecteur force BA $overrightarrowBA=overrightarrowR 110×overrightarrowSAoverrightarrowR 12×BA^BA^ \overrightarrow{BA} = - \frac{\overrightarrow{R_{110}} \times \overrightarrow{SA}} {\overrightarrow{R_{12}} \times \widehat{BA}} \widehat{BA} $

finalement s’évalue ainsi:

BA = chuba(1,10)*SA/(-chuba(1,2)*r32d)*r32d
print(BA)
[-222.43013262   32.7460626 ]

La force manquante sur la pièce A s’obtient par équilibre de translation:

overrightarrowSA+overrightarrowBA+overrightarrowCA=0 \overrightarrow{SA} + \overrightarrow{BA} + \overrightarrow{CA} = 0
overrightarrowCA=(overrightarrowSA+overrightarrowBA) \overrightarrow{CA} = -(\overrightarrow{SA} + \overrightarrow{BA} )
CA = -(BA+SA)
print(CA)
[  222.43013262 -1032.7460626 ]

On parcourt l’assemblage en résolvant les équations de pièce en pièce…

CA
Vecteur([  222.43013262, -1032.7460626 ])
print(CA)
[  222.43013262 -1032.7460626 ]