+ Répondre à la discussion Actualité déjà publiée
  1. #1
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Auditeur
    Inscrit en
    juillet 2012
    Messages
    5 299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Auditeur
    Secteur : Conseil

    Informations forums :
    Inscription : juillet 2012
    Messages : 5 299
    Points : 56 568
    Points
    56 568
    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 éprouvé
    Homme Profil pro
    Enseignant
    Inscrit en
    juin 2013
    Messages
    742
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : juin 2013
    Messages : 742
    Points : 977
    Points
    977

    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 régulier
    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    mars 2013
    Messages
    87
    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 : 87
    Points : 97
    Points
    97

    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 régulier
    Femme Profil pro
    Inscrit en
    juillet 2012
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Italie

    Informations forums :
    Inscription : juillet 2012
    Messages : 20
    Points : 72
    Points
    72

    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?

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