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

Calcul scientifique Python Discussion :

Apprendre Python scientifique pour les éléments finis [Tutoriel]


Sujet :

Calcul scientifique Python

  1. #1
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Community Manager
    Inscrit en
    Juillet 2012
    Messages
    9 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Community Manager
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9 133
    Points : 83 970
    Points
    83 970
    Billets dans le blog
    15
    Par défaut Apprendre Python scientifique pour les éléments finis
    Chers membres du club,

    J'ai le plaisir de vous présenter ce tutoriel de Steven Masfaraud :


    Ce cours présente les outils de Python utilisables pour les éléments finis (matrices, vecteurs) pour aboutir à un code élément fini pour une poutre en traction. Sont présentées également des méthodes pour visualiser et vérifier les résultats produits.
    Bonne lecture

    Retrouvez les meilleurs cours et tutoriels pour apprendre Python.
    Vous avez envie de contribuer au sein du Club Developpez.com ? Contactez-nous maintenant !
    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, etc.
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

  2. #2
    Membre chevronné
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 608
    Points : 2 072
    Points
    2 072
    Par défaut
    Merci.
    Je trouve cela bien compliqué.
    Pour ma part, je traite cela plus légèrement, peut-être moins rigoureusement aussi...
    Pas d'aide par mp.

  3. #3
    Membre émérite

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Points : 2 328
    Points
    2 328
    Par défaut
    Merci pour cet update, qui du coup m'a fait découvrir qu'il existait un tuto pour les éléments finis.
    J'aimerais commenter plusieurs points.

    1)
    Le problème est que pour Python, la division d'un entier donne un entier (division euclidienne). Pour le forcer à considérer i comme un réel, on lui convertit explicitement i en réel en appelant float(i).
    Ceci dit, depuis l'arrivée de Python 3, il y a quand même eu quelques évolutions...

    2) A ce même endroit, pourquoi faire remplir le tableau valeur par valeur comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    # Maillage
    # Generation de la table coor
    coor = np.zeros((ne+1,1)) # Initialisation
    for i in range(ne+1):
        coor[i,0]=(float(i)/(ne))*L
    alors qu'on a np.linspace ou bien np.arange, qui sont beaucoup plus performant ?

    3)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    # Prise en compte des CL
    Kii = np.delete(K,0,0)
    Kii = np.delete(Kii,0,1)
    Fi = np.delete(F,0,0)
    Pourquoi faire des delete ? Pourquoi ce double stockage ? Dans un cas général, cela va être une très grosse matrice. Il semble donc raisonnable d'en éviter la copie.
    Peut-être est-ce pour réduire la taille du système vu que l'on connait la donnée au bord (ce que je présume), on l'enlève du système et on la rajoute après résolution du système. Mais ca reste moins rentable avec ces copies et ces réallocations que cela engendre. Et de plus si on a un autre type de condition limite, avec cette technique, on est coincé.
    Pourquoi ne pas directement construire une matrice qui ait, d'emblée, la même taille que le maillage, quitte à en updater la première et la dernière ligne si la condition limite l'exige et à ne travailler qu'avec cette matrice ?

  4. #4
    Membre éprouvé
    Femme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Italie

    Informations forums :
    Inscription : Juillet 2012
    Messages : 263
    Points : 998
    Points
    998
    Par défaut super
    Merci beaucoup,
    j'ai trouvé très utile ce tutoriel. Est-ce qu'il serait possibile de l'etendre pour le calcul d'une structure 2d?

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 1
    Points : 2
    Points
    2
    Par défaut Matrice de rigidité non inversible
    Citation Envoyé par Malick Voir le message
    Chers membres du club,

    J'ai le plaisir de vous présenter ce tutoriel de Steven Masfaraud :




    Bonne lecture

    Retrouvez les meilleurs cours et tutoriels pour apprendre Python.
    Bonjour , je viens d'executer le programme et il ne marche que pour un ne=1 et lorsque je l'augmente , ma matrice devient singulière .Je suis débutant en éléments finis , quelqu'un pourrait m'apporter une explication svp?

Discussions similaires

  1. [Python 2.X] Utilisation de Python pour programmer les éléments finis
    Par amine.btp dans le forum Calcul scientifique
    Réponses: 13
    Dernier message: 17/01/2015, 13h53
  2. Styles différents pour les éléments d'une liste
    Par C_C dans le forum Mise en page CSS
    Réponses: 9
    Dernier message: 19/05/2009, 17h15
  3. Format scientifique pour les float
    Par Mohammmed dans le forum Langage SQL
    Réponses: 5
    Dernier message: 29/01/2008, 12h28
  4. Apprendre le réseau (pour les nuls)
    Par __fabrice dans le forum Développement
    Réponses: 5
    Dernier message: 08/03/2005, 13h49

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