pfs_ddl_cond.py

Created by teivaetienne

Created on March 20, 2025

3.18 KB


def calcul_conditions_initiales():
    print("Lancement du calcul des conditions initiales...")
    print("On determine ici les conditions de depart necessaires pour l'analyse d'un systeme mecanique.")
    
    position_initiale = float(input("Position initiale (m) : "))
    vitesse_initiale = float(input("Vitesse initiale (m/s) : "))
    acceleration_initiale = float(input("Acceleration initiale (m/s2) : "))
    
    print("\nResume des conditions initiales :")
    print("Position initiale :", position_initiale, "m")
    print("Vitesse initiale :", vitesse_initiale, "m/s")
    print("Acceleration initiale :", acceleration_initiale, "m/s2")
    input("Appuyez sur une touche pour continuer...")
    
    return position_initiale, vitesse_initiale, acceleration_initiale


def calcul_PFS():
    print("Lancement du calcul du PFS...")
    print("On applique : SommeF = 0 (equilibre des forces) et SommeM = 0 (equilibre des moments)")
    
    force_appliquee = float(input("Force appliquee (N) : "))
    reaction_soutien = float(input("Reaction du soutien (N) : "))
    q = float(input("Charge lineique q (N/m) : "))
    L = float(input("Longueur de la poutre L (m) : "))
    
    moment_applique = (q * L**2) / 8
    moment_reaction = moment_applique  # Pour une poutre symetrique en appui simple
    
    somme_forces = force_appliquee + reaction_soutien - (q * L)
    somme_moments = moment_applique + moment_reaction
    
    print("\nResultats :")
    print("Moment applique (M = qL^2 / 8) :", moment_applique, "Nm")
    print("Moment de reaction :", moment_reaction, "Nm")
    print("Somme des forces :", somme_forces, "N (doit etre nul pour equilibre)")
    print("Somme des moments :", somme_moments, "Nm (doit etre nul pour equilibre)")
    input("Appuyez sur une touche pour continuer...")
    
    return somme_forces, somme_moments


def calcul_DDL():
    print("Lancement du calcul des DDL...")
    print("Un systeme mecanique possede des DDL correspondant aux mouvements independants possibles.")
    
    nb_corps = int(input("Nombre de corps dans le systeme : "))
    nb_liaisons = int(input("Nombre de liaisons : "))
    ddl_totaux = nb_corps * 3  # En 2D, chaque corps a 3 DDL (2 translations, 1 rotation)
    ddl_contraints = nb_liaisons * 2  # Hypothese : chaque liaison supprime 2 DDL
    
    ddl_restants = ddl_totaux - ddl_contraints
    print("\nResultat :")
    print("Degres de liberte restants :", ddl_restants)
    input("Appuyez sur une touche pour continuer...")
    
    return ddl_restants


def main():
    print("Lancement de la calculatrice...")
    while True:
        print("\n=== Menu ===")
        print("1. Calcul des conditions initiales")
        print("2. Calcul du PFS")
        print("3. Calcul des DDL")
        print("0. Quitter")
        choix = input("Choisissez une option : ")
        
        if choix == "1":
            calcul_conditions_initiales()
        elif choix == "2":
            calcul_PFS()
        elif choix == "3":
            calcul_DDL()
        elif choix == "0":
            print("Fin du programme.")
            input("Appuyez sur une touche pour quitter...")
            break
        else:
            print("Option invalide, veuillez reessayer.")

main()

During your visit to our site, NumWorks needs to install "cookies" or use other technologies to collect data about you in order to:

With the exception of Cookies essential to the operation of the site, NumWorks leaves you the choice: you can accept Cookies for audience measurement by clicking on the "Accept and continue" button, or refuse these Cookies by clicking on the "Continue without accepting" button or by continuing your browsing. You can update your choice at any time by clicking on the link "Manage my cookies" at the bottom of the page. For more information, please consult our cookies policy.