NXFEM Logo
  • Blog
  • Contact
Automatisez le post-traitement des contraintes dans le sol pour un modèle éléments finis de fondation d'éolienne, et terminez-le en quelques secondes plutôt qu'en plusieurs heures. Découvrez comment exporter paramétriquement les résultats d'une simulation ANSYS dans un fichier texte.

Exporter les résultats vers un fichier texte dans ANSYS APDL

Supposons que nous ayons résolu 10 cas de charge dans un grand modèle éléments finis d'une fondation d'éolienne. Notre objectif est d'extraire les contraintes verticales (sy) le long d'une ligne horizontale dans le sol, composée de plus de 100 nœuds.

Extraire ces valeurs manuellement n'est pas seulement fastidieux, c'est aussi source d'erreurs. De plus, si cette opération doit être répétée fréquemment, l'automatisation s'impose. Voyons comment y parvenir avec ANSYS APDL.

Sélection des nœuds

La ligne qui nous intéresse est située à la surface du sol, précisément à l'interface avec la fondation au niveau de la section centrale. Elle s'étend de x = -13 à x = +13, avec des coordonnées fixes y = -3, z = 0.

Pour sélectionner les nœuds le long de cette ligne, nous utiliserons la commande NSEL, qui signifie « sélection de nœuds ». Tout d'abord nous créerons un nouvel ensemble de nœuds sélectionnés avec NSEL, S, puis nous ré-sélectionnerons des sous-ensembles de nœuds avec NSEL, R.

ALLSEL
NSEL, S, LOC, X, -13, 13
NSEL, R, LOC, Z, 0
NSEL, R, LOC, Y, -3

Parcours des résultats

Nous allons maintenant créer un tableau bidimensionnel pour stocker les résultats. Chaque ligne contiendra les informations d'un nœud, soit 100 lignes au total. Les colonnes comprendront le numéro du nœud, la coordonnée en X, et 10 colonnes supplémentaires — une pour chaque cas de charge — soit 12 colonnes au total.

Tout d'abord, nous déclarerons le tableau RESULTATS :

*DIM, RESULTATS, ARRAY, 100, 2+10

Nous pouvons remplir la première colonne de notre tableau RESULTATS avec les numéros de nœuds sélectionnés en utilisant la commande *VGET :

*VGET, RESULTATS(1, 1), NODE, , NLIST

Ensuite, nous parcourons les cas de charges et les nœuds pour récupérer les contraintes verticales.

*DO, cas_charge_i, 1, 10

    SET,cas_charge_i

    *DO, noeud_i, 1, 100

        num_noeud = RESULTATS(noeud_i, 1)
        *GET, RESULTATS(noeud_i, 2), NODE, num_noeud, LOC, X
        *GET, RESULTATS(noeud_i, 2+cas_charge_i), NODE, num_noeud, S, Y

    *ENDDO

*ENDDO

Une amélioration utile ici serait de définir le nombre de nœuds via un paramètre. En utilisant la commande *GET, nous pouvons affecter le nombre de nœuds sélectionnés à une variable, automatisant ainsi davantage notre code :

*GET, nb_noeuds, NODE, , COUNT

Maintenant, nous pouvons créer le tableau de résultats en utilisant cette variable, et l'intégrer dans la boucle :

*DIM, RESULTATS, ARRAY, nb_noeuds, 2+10
*DO, cas_charge_i, 1, 10

    SET,cas_charge_i

    *DO, noeud_i, 1, nb_noeuds

        num_noeud = RESULTATS(noeud_i, 1)
        *GET, RESULTATS(noeud_i, 2), NODE, num_noeud, LOC, X
        *GET, RESULTATS(noeud_i, 2+cas_charge_i), NODE, num_noeud, S, Y

    *ENDDO

*ENDDO

Enregistrement d'un tableau au format texte

Une fois le tableau RESULTATS rempli avec les informations nécessaires, il faut l'exporter dans un fichier texte. On utilise la commande *MWRITE. Cette commande nécessite deux lignes : une pour la commande elle-même, et une pour la spécification du format.

La syntaxe de la ligne de commande :

*MWRITE, ParR, Fname, Ext, --, Label, n1, n2, n3

La seconde ligne précise le nombre de colonnes, l'espace réservé à chaque colonne (y compris le signe et le point décimal), et le nombre de décimales. Par exemple, pour définir deux colonnes avec 10 positions réservées pour des nombres à 3 décimales, on utilise :

%10.3F %10.3

Dans notre exemple, nous utiliserons des entiers sans décimales pour les numéros de nœud et des réels avec 6 décimales pour les colonnes restantes :

*MWRITE, RESULTATS(1,1), Sol_SY, txt
%10.0F %10.6F %15.6F %15.6F %15.6F %15.6F %15.6F %15.6F %15.6F %15.6F %15.6F %15.6F

Code complet

En combinant toutes les étapes et en ajoutant des commentaires explicatifs, on obtient notre post-traitement automatisé des contraintes dans le sol pour la fondation d'éolienne. Ci-dessous le code complet :

/POST1
nb_cas_charge=10

! Selection des noeuds
ALLSEL
NSEL, S, LOC, X, -13, 13
NSEL, R, LOC, Z, 0
NSEL, R, LOC, Y, -3

! Definition du tableau pour stocker les resultats
*GET, nb_noeuds, NODE, , COUNT
*DIM, RESULTATS, ARRAY, nb_noeuds, 2+nb_cas_charge

! Recuperer les numeros de noeuds dans la premiere colonne du tableau
*VGET, RESULTATS(1, 1), NODE, , NLIST

! Boucle sur les cas de charge
*DO, cas_charge_i, 1, nb_cas_charge

    ! Charger le cas de charge courant
    SET,cas_charge_i

    ! Parcourir les noeuds
    *DO, noeud_i, 1, nb_noeuds

        ! Lire le numero du noeud
        num_noeud = RESULTATS(noeud_i, 1)
        ! Recuperer la coordonnee X du noeud
        *GET, RESULTATS(noeud_i, 2), NODE, num_noeud, LOC, X
        ! Recuperer la contrainte verticale (SY) au noeud pour le cas de charge courant
        *GET, RESULTATS(noeud_i, 2+cas_charge_i), NODE, num_noeud, S, Y

    *ENDDO

*ENDDO

! Sauvegarder le tableau RESULTATS dans un fichier texte.
! Colonnes dans le fichier RESULTATS : num_noeud, X, SY cas de charge 1 a 10
*MWRITE, RESULTATS(1,1), Sol_SY, txt
%10.0F %10.6F %15.6F %15.6F %15.6F %15.6F %15.6F %15.6F %15.6F %15.6F %15.6F %15.6F

Au passage, si vous souhaitez apprendre tous les tenants et aboutissants de l'automatisation de la modélisation et de l'analyse par éléments finis avec ANSYS APDL, nous préparons un cours qui pourrait vous intéresser. Inscrivez-vous sur la liste d'attente du cours ANSYS APDL.

Author Image

David Alegre Gimeno

WTG Foundations Specialist

Contacter sur Linkedin

LinkedIn

Contenu

  • Sélection des nœuds
  • Parcours des résultats
  • Enregistrement d'un tableau au format texte
  • Code complet

Copyright © 2025 nxfem.com

Mentions légales Open Mentions légales PageLinkedIn Open LinkedIn PageYoutube Open Youtube Page
English
Français