IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

[Physique] Courber une tige sous la gravité


Sujet :

Algorithmes et structures de données

  1. #1
    Nouveau membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    56
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 56
    Points : 38
    Points
    38
    Par défaut [Physique] Courber une tige sous la gravité
    Bonjour,
    Je cherche à faire une simulation physique une tige souple, c'est à dire, se courbant plus ou moins sous son poid.
    Pour cela, je me suis d'abord basé sur la physique d'une corde. Mon programme génère une liste de point sur lesquel je peux appliquer une force et une velocité.
    Ainsi, j'ai simulé sans problème les contraintes de distance entre points ainsi que la gravité et la friction de l'air.
    Jusque là, mon système est une vrai corde qui pend depuis un point initial.

    Maintenant, j'ai voulu m'attaquer à la rigidité du truc. Le problème c'est que je m'y connais pas du tout en mécanique des matériaux, donc j'ai essayé de bidouillé un truc...
    Donc, je calcule l'angle que fait chaque segment entre eux, et si il est different de 0, j'applique alors une force dans le sens inverse de la courbure.
    A première vu, ça fonctionne bien, mais dès que la taille de la tige (donc le nombre de point est trop important) ce truc entraine une phénomène d'oscillation qui s'emplifie de plus en plus...
    Hors, je ne veux pas de ça... Je veux plus un truc qui a une position d'équilibre en fonction du poid des points et en fonction d'autre variables d'élasticité.

    Si quelqu'un connait la physique des matériaux dans ce domaine et qu'il pouvais m'expliquer les forces en jeu, je lui en serais reconnaissant parce que je m'en sort plus pour avoir un système "stable", et j'ai rien trouvé d'assez clair sur le net... :-)

    Snark

  2. #2
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Cela doit faire 20 ans que je n'ai plus fait de résistance des matériaux. J'aurais dit que la force de rappel était proportionnelle au déplacement et pas à l'angle. De toute manière, pour des angles petits il n'y a pas de grosse différence, et pour des angles gros on doit sortir de la zone de comportement élastique. Et hors de cette zone, ça devient beaucoup plus compliqué.

    Je me demande si ton problème d'oscillation n'est pas simplement un problème d'intégration numérique avec un pas temporel trop important.
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  3. #3
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 813
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 813
    Points : 7 638
    Points
    7 638
    Par défaut
    Citation Envoyé par Jean-Marc.Bourguet
    J'aurais dit que la force de rappel était proportionnelle au déplacement et pas à l'angle. De toute manière, pour des angles petits il n'y a pas de grosse différence, et pour des angles gros on doit sortir de la zone de comportement élastique. Et hors de cette zone, ça devient beaucoup plus compliqué.
    Tout à fait, pour des petits déplacements, donc des petits angles, tu peux approximer la tangente de l'angle par l'angle, et la tangente peut se calculer en divisant le déplacement par la longeur de la tige.

    Pour les angles gros, ce n'est pas tant le domaine plastique qui intervient, mais plus le calcul du moment de flexion qui, simplifié dans le cas des petits déplacements (bras de levier * composante perpendiculaire à la poutre), devient plus compliqué (on fait alors intervenir la composante axiale dans le calcul du moment).

    Citation Envoyé par Jean-Marc.Bourguet
    Je me demande si ton problème d'oscillation n'est pas simplement un problème d'intégration numérique avec un pas temporel trop important.
    +1
    Ou une valeur de rigidité trop ou pas assez...
    Tu utilises quelle type de formule pour calculer ta force? Normalement, tu devrais avoir quelque chose du genre F=angle*K/L^2, avec L distance entre deux points consécutifs, et K "pseudo-rigidité" (si on peut dire...)

    Tu as bien mis l'angle en radians.....?
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  4. #4
    Nouveau membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    56
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 56
    Points : 38
    Points
    38
    Par défaut
    Citation Envoyé par plegat
    Tout à fait, pour des petits déplacements, donc des petits angles, tu peux approximer la tangente de l'angle par l'angle, et la tangente peut se calculer en divisant le déplacement par la longeur de la tige.
    aïe... Pas tout compris là ^^

    +1
    Ou une valeur de rigidité trop ou pas assez...
    Ce n'est pas un problème de temp, car dans mon système, je n'utilise pas de constante de temp (exprès pour eviter ses erreurs). En gros, chaque cycle d'application des forces est pour 2ms d'horloge. Si le temp écoulé est >2ms, alors je fait plusieur cycle :-). Bête mais ça marche très bien.
    Donc je penche plutôt pour la valeur de rigidité trop grande. Mais surtout pour des forces oublié où inadapté.

    Tu utilises quelle type de formule pour calculer ta force? Normalement, tu devrais avoir quelque chose du genre F=angle*K/L^2, avec L distance entre deux points consécutifs, et K "pseudo-rigidité" (si on peut dire...)
    Tu as bien mis l'angle en radians.....?
    J'avais mis F=angle*K*L mais ça fait la même chose avec ta formule

    Si ça interesse, voici le code :
    mass1, mass2 et mass3 sont les points de la chaine en cours de calcul, sachant qu'on ne veut appliquer la force que sur le point du bout, c'est à dire mass3.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    float M_PI2 = M_PI/2.0 ; // Calcul de PI/2
     
    float ta = (mass2[1]-mass1[1]) / (mass2[0]-mass1[0]) ; // Tangente angle Ax
    float tc = (mass3[1]-mass2[1]) / (mass3[0]-mass2[0]) ; // Tangente angle Cx
    float b = atan( (ta-tc)/(1+ta*tc) ) ; // Angle ABC
    float c = atan( tc ) ; // Angle C
     
    float ab = length(mass1, mass2) ; // Distance entre m1 et m2
    float bc = length(mass2, mass3) ; // Distance entre m2 et m3
    float accorner = sqrt(ab*ab+bc*bc) ; // Distance angle AC pour ABC valant PI/2
    float acreal = length(mass1, mass3) ; // Distance reel de AC
    if (acreal<accorner) { // Inversion pour avoir b entre -PI et +PI
       if (b>0.0f) {
          b -= M_PI ;
       } else {
         b += M_PI ;
       }
    }
     
    float f = (abs(b)*1000000.0f) / (bc*bc) ; // Force de repulsion
    mass3[5] += f * cos(c+M_PI2) ; // Application de la force en x
    mass3[6] += f * sin(c+M_PI2) ; // Application de la force en y

  5. #5
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 813
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 813
    Points : 7 638
    Points
    7 638
    Par défaut
    Citation Envoyé par Snark
    Donc je penche plutôt pour la valeur de rigidité trop grande.
    Je vais poser une question bête, mais tu as testé avec une valeur plus faible?

    De toute façon, par exemple, pour un angle de 0.02 radian, soit à peu près 1°, avec un bras de levier de 100 mm, ça te fait une force de 2N, soit l'équivalent de 200g (environ). C'est pas énorme. Faudrait comparer par rapport aux autres forces que tu appliques (vu que je ne sais pas si ta tige est en corde à piano de 0.1mm ou en stub de 10mm!)
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  6. #6
    Nouveau membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    56
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 56
    Points : 38
    Points
    38
    Par défaut
    Citation Envoyé par plegat
    Je vais poser une question bête, mais tu as testé avec une valeur plus faible?
    Oui, mais voilà le problème, si je réduis trop la valeur pour avoir une contre-force normal, la force de gravité prend le dessus et ça redevient une corde comme au départ...
    C'est pour cela qu'il doit y avoir des équations/forces que je ne connais pas qui entrent en jeu

  7. #7
    Membre éprouvé
    Avatar de Sivrît
    Profil pro
    Inscrit en
    Février 2006
    Messages
    953
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 953
    Points : 1 249
    Points
    1 249
    Par défaut
    Pour stabiliser le système il faudrait peut-être ajouter un amortissement. Quelque chose comme une force proportionnelle à la vitesse ou à son carré (ou les deux).

    Il faudrait que je retrouve mes cours sur le sujet (hum, ce n'est pas dessus que j'ai brillé ) pour dénicher une explication, mais il doit bien y avoir divers frottements, internes au matériau ou alors l'air si la tige est assez souple...

  8. #8
    Membre habitué Avatar de larnicebafteur
    Inscrit en
    Mai 2006
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 133
    Points : 131
    Points
    131
    Par défaut
    Dans un forum de physique, tu auras des réponses plus claires à mon avis.
    S'il n'y a pas de solution, c'est qu'il n'y a pas de problème

  9. #9
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 813
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 813
    Points : 7 638
    Points
    7 638
    Par défaut
    Citation Envoyé par Snark
    Ce n'est pas un problème de temp, car dans mon système, je n'utilise pas de constante de temp (exprès pour eviter ses erreurs). En gros, chaque cycle d'application des forces est pour 2ms d'horloge. Si le temp écoulé est >2ms, alors je fait plusieur cycle :-). Bête mais ça marche très bien.
    Sauf que là, ça ne marche pas...
    Tu peux nous donner un peu plus de détails sur ceci? Tu dis que tu n'utilises pas de pas de temps, mais que tu fais des cycles... c'est pas trop compatible d'après moi (enfin, d'après ce que je comprends...)
    Si tu fais des cycles, les oscillations peuvent venir de là. Il suffit que la force soit trop important pour qu'au cycle suivant la tige soit pliée à l'opposé, et donc ça inverse la force pour le cycle suivant, etc etc...

    Explique un peu plus ce que sont tes cycles exactement, et à quoi il correspondent exactement. Parce que pour les forces, normalement elles sont toutes là (sinon, branches-toi sur un cours d'éléments finis. Avec une modélisation en poutre, ça marchera très bien)
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  10. #10
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 936
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 936
    Points : 4 356
    Points
    4 356
    Par défaut
    Citation Envoyé par Snark
    Bonjour,
    Si quelqu'un connait la physique des matériaux dans ce domaine et qu'il pouvais m'expliquer les forces en jeu, je lui en serais reconnaissant parce que je m'en sort plus pour avoir un système "stable", et j'ai rien trouvé d'assez clair sur le net... :-)

    Snark
    Pour une tige horizontale, déformée par une charge uniforme (son propre poids)

    w(x) = -[px^2 . (6L^2 - 4xL + x^2)] / 24EI

    où p est la charge par unité de longueur en Kg-cm
    L la longueur de la tige en cm
    x la position dans [0;L] en cm
    E le module de Young du matériau en Kg
    I le moment d'inertie (dépend de la forme de la tige) (en cm^4)

    et

    wmax = w(L) = -(pL^4)/8EI

    dans votre cas la tige étant virtuelle, partez de la déformation maximale que vous souhaitez pour en déduire un EI qui convient à votre situation.

    pour une tige déformée par une force perpendiculaire à son extrémité

    w(x) = -pL/EI [x^2/2 - x^3/6L]

    wmax = -pL^3/3EI

  11. #11
    Membre éclairé
    Inscrit en
    Juin 2005
    Messages
    644
    Détails du profil
    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 644
    Points : 754
    Points
    754
    Par défaut
    Voir le livre "Roark's formulas for stress & starin" de warren c.young
    ISBN 0-07-072541-1 p98 à 104 pour la 6eme édition.
    Tout le livre est dédicacé à l'analyse de la déformation des poutres, disques, ...dans le très nombreux cas de contraintres aux limites et de charges locales ou distribuées.

    w(x) = -[px^2 . (6L^2 - 4xL + x^2)] / 24EI
    est la solution pour une tige encastrée horizontalement à l'une de ses extremitées ( x=0, x'(0) = 0) la tige étant parfaitement libre pour tous ses autres points (gravitation seule) . La solution devient autre si la tige est encastrée à ses 2 extremitées ou si elle est contrainte d'une façon quelconque comme 2eme extremité devant passer par une ouverture ( => W(L) fixé mais W'(L) libre)...

    Un autre livre tres utile dans le domaine est
    "formulas for natural frequency and mode shape" de robert d. blevins ISBN 0-442-20710-7
    Il traite, comme son titre l'indique, de tous les modes de vibrations de plaques, tiges, ... toujours dans de tres nombreux cas de conditions aux limites et de charge

    Note : Faire attention!!! dans le document attaché, x=0 correspond à l'extremité libre de la poutre & x=L à sa partie encastrée.
    Le cas proposé correspond à a = 0, Wl = Wa
    Images attachées Images attachées  

Discussions similaires

  1. Taille d'une console sous linux
    Par Shinjuku dans le forum C
    Réponses: 7
    Dernier message: 13/06/2003, 12h44
  2. MAJ d'une table sous SQL Server par insertion
    Par keish dans le forum Langage SQL
    Réponses: 6
    Dernier message: 11/06/2003, 16h23
  3. Affichage d'une image sous linux
    Par Braim dans le forum x86 32-bits / 64-bits
    Réponses: 5
    Dernier message: 25/03/2003, 10h41
  4. Comment créér une collection sous Delphi
    Par PsyKroPack dans le forum Langage
    Réponses: 6
    Dernier message: 11/02/2003, 13h20
  5. Changement de l'icone d'une appli sous kdevelop
    Par vedder dans le forum Linux
    Réponses: 3
    Dernier message: 06/02/2003, 14h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo