Si vous ne pouvez pas lire cette lettre correctement, cliquez ici.
If you can't read this letter properly, clic here.
English news are at the bottom of the page.

Lettre d'information de Code_Aster

Un calcul triplement non-linéaire : contact, comportement et grandes déformations

par N. Tardieu, EDF R&D / AMA

On présente un calcul modélisant l’écrasement d’un profilé à base carré en 0,1 seconde. Le profilé est composé d’un acier élastoplastique à écrouissage isotrope linéaire.

Le calcul, réalisé en dynamique non-linéaire implicite avec l’opérateur DYNA_NON_LINE, inclut la prise en compte :

  • des effets d’inertie ;
  • de la plasticité ;
  • des grandes déformations ;
  • du contact (entre le profilé et le socle rigide sur lequel il repose) et de l’auto-contact.
GIF - 3.7 Mo
Ecrasement du profilé

GIF - 3.6 Mo
Coupe de l’écrasement du profilé

Code_Aster et le parallélisme

par O. Boiteau, T. de Soza, N. Sellenet et N. Tardieu, EDF R&D / AMA

Dans Code_Aster, le parallélisme continue à progresser. Aujourd’hui, pour l’utilisateur il est possible de le mettre en oeuvre simplement via Astk. Pour cela, il est nécessaire de choisir la version MPI de Code_Aster, d’utiliser le solveur MUMPS (SOLVEUR=’MUMPS’ dans le fichier de commande) et d’indiquer à Astk le nombre de processus MPI désirés (mpi_nbcpu). A partir de là, Code_Aster génère automatiquement une distribution cyclique des mailles.

Ces options basiques rendent parallèles les deux étapes les plus gourmandes en temps de calcul et en mémoire que sont d’une part les calculs élémentaires et l’assemblage et d’autre part les résolutions de système linéaire.

Un usage plus avancé est possible, néanmoins il nécessite davantage de paramétrisation.

En effet il est possible de modifier le partitionnement par défaut pour obtenir de meilleurs performances. Pour ce faire, on utilise la commande MODI_MODELE qui permet de choisir entre diverses répartitions mailles/processeurs : MAIL_CONTIGU (distribution par paquet de mailles contigües), MAIL_DISPERSE (distribution cyclique par mailles), ou SOUS_DOMAINE (distribution des mailles via un partitionnement préalablement calculé par l’opérateur DEFI_PART_FETI).

D’autres options permettent de faire diminuer la consommation mémoire globale du calcul. Par exemple, on peut diminuer celle intrinsèque de Code_Aster via le mot-clé SOLVEUR, il est possible d’utiliser MATR_DISTRIBUEE=’OUI’. Ainsi chaque processus MPI ne va construire que les morceaux de matrice correspondant aux paquets de mailles dont il est responsable. D’autre part, on peut diminuer significativement le pic mémoire de la résolution du système linéaire (gain allant jusqu’à un facteur 6) en activant la gestion de mémoire out-of-core du solveur MUMPS (mot-clé SOLVEUR, OUT_OF_CORE=’OUI’)

Gains en mémoire apportés par MATR_DISTRIBUEE sur les études de la Pompe RIS (800 000 ddl) et Epicure (860 000 ddl) suivant le nombre de processus.
Sur le graphique, on retrouve la consommation du gestionnaire de mémoire : JEVEUX_std (MATR_DISTRIBUEE=’NON’), JEVEUX_dist (MATR_DISTRIBUEE=’OUI’) et la consommation de mémoire du solveur MUMPS en out-of-core.

De même, le parallélisme et ses performances sont suivis semaine après semaine grâce à l’ajout de nouveaux cas tests dans la base de cas test (exemple : perf009, perf010 et perf011).

Cas test perf010 (499 203 ddl)
Etude Epicure : perf011 (860 000 ddl)

Sur ces graphiques, on peut constater l’apport du parallélisme utilisé avec ses options de base. Dans le cas de l’étude Epicure, on constate qu’on peut gagner jusqu’à un facteur 10 sur 32 processeurs.

Pour plus d’informations, on pourra consulter les documentations U2.08.06 ’Notice d’utilisation du parallélisme’, U1.03.03 ’Indicateur de performance d’un calcul (temps/mémoire)’ et U4.50.01 ’Mot-clé SOLVEUR’.

Liaison entre modélisations 3D et coque

par J. Pellet, EDF R&D / AMA

Il est maintenant possible de relier cinématiquement deux portions de modèles portant des modélisations différentes (commande AFFE_CHAR_MECA / LIAISON_MAIL / TYPE_RACCORD=’MASSIF_COQUE’).

Dans l’exemple ci-dessous, un cylindre fissuré est soumis à une traction axiale. La zone fissurée est modélisée par des éléments volumiques et le reste du cylindre est modélisé par des éléments de coque DKT.

Déformée Contrainte de Von Mises
Déformée
Contrainte de Von Mises

Amélioration des performances de la sous-structuration dynamique

par M. Corus, EDF R&D / AMA

Code_Aster permet de construire des modèles réduits sur la base des techniques de sous-structurations classiques, par le biais d’un enchainement de commandes. La démarche classique consiste à :
 1. calculer, pour chaque sous-structure du modèle complet, une base de modes avec des conditions aux limites particulières pour les interfaces devant se raccorder aux autres sous-structures ;
 2. définir les interfaces de couplage, cohérente avec les modes précédemment calculés ;
 3. calculer, pour ces interfaces, les relèvements statiques ou les déformées à déplacement imposé associés à chaque DDL d’interface ;
 4. construire une base de projection constituée de ces deux sous ensembles de vecteurs ;
 5. construire, pour chaque sous-structure, un macro élément englobant ces différentes informations ;
 6. construire un modèle généralisé, en définissant les liaisons entre chaques macro éléments ;
 7. assembler le modèle généralisé ;

Les performances globales de la sous-structuration ont été améliorées en travaillant sur chacun des différents points clés de cette méthodologie.

Dans un premier temps, on a introduit dans l’opérateur MODE_STATIQUE une méthode de calcul de modes de couplage. Les approches classiques (point 2) nécessitent le calcul d’autant de vecteurs que de degrés de libertés (DDL) portés par les interfaces. Il s’agit ici de construire un sous espace pertinent, de taille très inférieure, permettant le passage correct des informations (déplacements et efforts) d’une sous-structure à l’autre. La technique introduite dans le code s’appuie sur l’utilisation d’un pré-conditionneur astucieux permettant le calcul efficace des modes des opérateurs d’interface.

Les gains réalisés impactent directement les temps de calculs, plus courts, mais aussi l’occupation mémoire en réduisant le nombre de vecteur à stocker.

Dans un deuxième temps, on a enrichi les possibilités offertes par l’opérateur DEFI_MODELE_GENE en autorisant le couplage et le raccordement d’interfaces fortement incompatibles. Les incompatibilités de maillages, qu’il s’agisse de la non coïncidence des nœuds (cas 2D/2D ou 3D/3D), et de la différence de modélisation (2D/3D) sont gérées en reconstruisant, pour l’interface définie comme esclave, l’ensemble des DDL à partir de la cinématique de l’interface définie comme maître. De plus, l’introduction du concept de modes d’interface impose de gérer l’incompatibilité des champs de déplacement à l’interface. Cette difficulté est levée en considérant des conditions de couplages faibles, où les conditions de raccordements sont projetées dans le sous espace engendré par les modes d’interface de la sous-structure maître.

PNG - 321.3 ko
Croix 2D/3D

Enfin, pour alléger la construction du modèle réduit assemblé, on a mis en place une nouvelle numérotation généralisée permettant l’élimination des contraintes de liaisons, plutôt que l’utilisation de multiplicateurs de Lagrange. Cette dernière évolution permet à la fois de limiter la taille des modèles réduits, mais aussi d’améliorer le conditionnement des matrices, et donc d’accélérer la résolution du problème généralisé.

Parallèlement, l’opérateur REST_SOUS_STRUCT a été revu dans un objectif d’amélioration des performances.

Ces évolutions ont été testées sur un modèle d’aubage, constitué d’un disque ( 31 000 DDL) et de 46 ailettes ( 9800 DDL / ailette), soit un modèle complet d’environ 480 000 DDL. La mise en œuvre des méthodes classiques de sous-structuration sur ce modèle conduisent à des temps de calcul de l’ordre de 32 000 secondes (soit presque 9 heures) pour les 300 premiers modes de la structure. Le calcul de référence, mené sur le modèle complet, dure environ 18 000 secondes (soit 5 heures) pour les 300 premiers modes. Les évolutions apportés aux différents opérateurs conduisent à des temps de l’ordre de 500 secondes pour les 300 premiers modes, avec la même qualité de résultat. On a donc réalisé un gain de temps de l’ordre de 60 par rapport au premier cas, et de 33 par rapport au deuxième.

Il faut aussi noter qu’avant ces développements, en version 10.2, la restitution des modes calculés sur base physique s’arrêtait au bout de 48 heures, par manque de temps CPU. Avec les améliorations apportées à REST_SOUS_STRUCT, la restitution prend 300 secondes sur une machine de bureau.

GIF - 1.2 Mo
Mode d’aubage

Les SUSHIS, c’est aussi pour les volumes finis

par S. Granet et O. Angélini, EDF R&D / AMA

La modélisation des écoulements diphasiques en milieu poreux dispose désormais de nouveaux schémas numériques.

Les volumes finis font en effet leur entrée dans Code_Aster via le schéma SUSHI (Scheme Using Stabilisation and Hybrid Interfaces). Cette famille de schémas est performante pour représenter les problèmes de front raide (milieu saturé au contact d’un milieu non saturé), de forts contrastes, ainsi que pour gérer l’apparition ou la disparition d’une phase. SUSHI est compatible avec des maillages très déformés.

Ce développement a été effectué dans le cadre de la thèse d’Ophélie Angélini encadrée par Robert Eymard de l’Université de Marne-La-Vallée.

Le schéma SUSHI a éte développé pour les modélisations planes et 3D des écoulements diphasiques miscibles. Il est décliné en plusieurs versions (decentré arête, décentré maille, centré). Ce sont donc 6 nouvelles modélisations qui entrent dans Aster :

  • D_PLAN_HH2SUC (schéma sushi centré) ;
  • D_PLAN_HH2SUDM (schéma sushi décentré maille) ;
  • D_PLAN_HH2SUDA (schéma sushi décentré arrête) ;
  • 3D_HH2SUC (schéma sushi centré) ;
  • 3D_HH2SUDM (schéma sushi décentré maille) ;
  • 3D_HH2SUDA (schéma sushi décentré arête).

Cette figure représente la pression de gaz obtenue à 500 ans lors de la modélisation d’une alvéole de stockage. Du gaz est injecté dans le coin en bas à gauche durant les 500 ans première années puis la resaturation du jeu (initialement désaturé en eau) et la désaturation du milieu géologique (initialement saturé en eau) sont observées. Le gaz quant à lui s’étend dans ces deux matériaux au cours du temps.

JPG - 85.7 ko
Modélisation d’une alvéole de stockage : pression de gaz à 500 ans

Amélioration des performances du recalage

par A. Assire et J.-M. Proix, EDF R&D / AMA

Le recalage des paramètres d’un modèle s’effectue dans Code_Aster grâce à la commande MACR_RECAL, qui propose plusieurs méthodes d’optimisation, et en particulier le classique algorithme de Levenberg-Marquardt. Les paramètres à identifier peuvent être des coefficients de lois de comportement, des chargements, des épaisseurs de coques,… ou tout autre paramètre de la modélisation. L’optimisation consiste à trouver les valeurs des paramètres permettant de minimiser l’écart entre la réponse numérique, (sous forme de n courbes), et les n courbes expérimentales.

Cette commande a été améliorée principalement en vue d’optimiser les performances.

Le calcul peut maintenant s’effectuer suivant deux modes :

  • DISTRIBUTION : lancer les calculs en mode distribué, c’est-à-dire simultanément, peut accélérer sensiblement la procédure en cas de ressources CPU disponibles : en effet, pour un problème de recalage à N paramètres, les N+1 calculs nécessaires pour la construction du gradient à chaque itération, sont complètement indépendants. Ce mode permet le lancement en interactif en utilisant les différents cœurs d’une machine locale, ou en batch sur un cluster de calcul par exemple, voire un mélange des deux. Ce mode est à privilégier dans le cas de nombreux paramètres, et/ou de calculs esclaves lents (par exemple du recalage sur des structures complexes).
  • INCLUSION : les calculs de gradient passent par un INCLUDE du fichier esclave. Ce mode est préférable dans le cas d’un calcul esclave rapide, par exemple pour identifier quelques paramètres d’une loi de comportement sur point matériel.

Deux critères d’arrêts classiques dans les algorithmes d’optimisation ont été ajoutés :

  • TOLE_FONC : si la variation en valeur absolue de la norme de la fonctionnelle entre deux itérations est inférieure à la valeur TOLE_FONC, la procédure s’interrompt ;
  • TOLE_PARA : si la variation de la norme de la différence des paramètres entre deux itérations est inférieure à la valeur TOLE_PARA, la procédure s’interrompt.

Pour améliorer encore les performances de l’identification des paramètres de lois de comportement, la commande de simulation sur point matériel, SIMU_POINT_MAT a été enrichie du mot-clé SUPPORT=’POINT’, consistant à appeler directement la routine d’intégration des comportements. Elle est utilisable en petites déformations, sans recherche linéaire (dans le cas contraire, il faut utiliser l’ancien mode de calcul : SUPPORT=’ELEMENT’). (cf. U4.51.12).

Les temps calculs sont nettement diminués : par exemple, les tests "compxxx" passent en moyenne de 70s à 9s.

Ces deux évolutions conduisent globalement à un facteur 10 à 20 sur les tests de recalage de coefficients de lois de comportement. A titre d’exemple, le test SSNA118A (recalage de 4 paramètres du comportement VISC_CIN2_CHAB sur 4 courbes) prenait sur une machine locale Linux :

  • 315s avec la version STA10.1
  • 24s avec les nouveaux développements (courbes ci-jointes).
PNG - 103.5 ko

PNG - 59.8 ko


English news from Code_Aster

A trebly nonlinear computation : contact, behaviour and large deformations

by N. Tardieu, EDF R&D / AMA

This is a computation which models the crushing of a square-based shape in 0.1 second. The shape is composed of an elastoplastic steel with linear isotropic hardening.

The computation was realized in implicit nonlinear dynamics with the operator DYNA_NON_LINE and takes into account :

  • Inertia effect ;
  • Plasticity ;
  • Large deformations ;
  • Contact (between the shape and its rigid base) and auto-contact.
GIF - 3.7 Mo
Ecrasement du profilé

GIF - 3.6 Mo
Coupe de l’écrasement du profilé

Code_Aster and parallelism

by O. Boiteau, T. de Soza, N. Sellenet and N. Tardieu, EDF R & D/AMA

In Code_Aster parallelism keeps improving. Today users can simply implement it via Astk. To do so it is necessary to choose the MPI version of Code_Aster, use the MUMPS solver (SOLVEUR=’ MUMPS’ in the command file) and show Astk the number of desired MPI processes (mpi_nbcpu). From there Code_Aster automatically generates a cyclic distribution of the mesh.

These basic options make two steps operate at the same time : elementary computations and assembly – which take the longest computation time, and resolutions of linear systems – which take the most important memory.

A more advanced use is possible, nevertheless it requires more parameterization.

Indeed it is possible to modify the default partitioning to obtain better performances. In order to do so we use the command MODI_MODELE which enables to choose between various distributions of mesh/processors : MAIL_CONTIGU (distribution per package of contiguous mesh), MAIL_DISPERSE (cyclic distribution by mesh), or SOUS_DOMAINE (distribution of the mesh via a partitioning computed beforehand by operator DEFI_PART_FETI).

Other options enable to reduce the computation’s memory consumption. For instance we can decrease that intrinsic of Code_Aster via the key word SOLVER : it is possible to use MATR_DISTRIBUEE=’ OUI’. Thus each MPI process will only build the matrix pieces corresponding to the packages of mesh for which it is responsible. In addition we can significantly decrease the memory peak of the linear system resolution (profit up to factor 6) by activating the out-of-core memory management of MUMPS solver (key word SOLVER, OUT_OF_CORE=’ OUI’).

Gains in memory thanks to MATR_DISTRIBUEE on the RIS Pump (800 000 d. o. f.) and Epicure (860 000 d. o. f.) studies according to the number of processes.
On the graph we can see the consumption of the memory manager : JEVEUX_std (MATR_DISTRIBUEE=’ NON’), JEVEUX_dist (MATR_DISTRIBUEE=’ OUI’) and the memory consumption of MUMPS solver in out-of-core.

In the same way, parallelism and its performances are followed week after week thanks to the addition of new use tests in the use test base (example : perf009, perf010 et perf011).

Usetest perf010 (499 203 ddl)
Epicure study : perf011 (860 000 ddl)

On these graphs, we can notice the contribution of parallelism used with its basic options. In the case of the Epicure study we note that we can gain up to a factor 10 on 32 processors.

For more information, please refer to documentations U2.08.06 ’Notice d’utilisation du parallélisme’, U1.03.03 ’Indicateur de performance d’un calcul (temps/mémoire)’ and U4.50.01 ’Mot-clé SOLVEUR’.

Connection between 3D and shell modelings

by J. Pellet, EDF R&D / AMA

It is now possible to connect kinematically two portions of models having different modelizations (command AFFE_CHAR_MECA/LIAISON_MAIL/TYPE_RACCORD=’ MASSIF_COQUE’).

In the example below, a cracked cylinder is subjected to an axial traction. The cracked zone is modelized by volumetric elements and the remainder of the cylinder is modelized by DKT shell elements.

Déformée Contrainte de Von Mises
Déformée
Contrainte de Von Mises

Improving the performances of dynamic substructuring

by M. Corus, EDF R&D / AMA

Code_Aster helps to build scale models on the basis of traditional under-structuring technique, by the means of a combination of commands. The traditional step consists in :
 1. computing - for each substructure of the complete model - a base of modes with particular boundary conditions for the interfaces which have to be connected to the other substructures ;
 2. defining coupling interfaces to be coherent with the previously computed modes ;
 3. computing the static raisings for these interfaces, or the deformations with imposed displacement associated with each D.O.F. interface ;
 4. building of a projection basis made up of these two vectors subsets ;
 5. building a macro element including this various information for each substructure ;
 6. building a generalized model, by defining the connections between each macro element ;
 7. assembling the generalized model ;

The total performances of the substructuring were improved while working on each key point of this methodology.

A computing method for coupling modes was initially introduced into the operator MODE_STATIQUE. The traditional approaches (point 2) require the computation of as many vectors as of degrees of freedom (D.O.F.) carried by the interfaces. It is a question of building a relevant subspace, of much lower size, allowing the correct transition of information (displacements and forces) from one substructure to the other. The technique introduced into the code is based on the use of an astute pre-conditioner allowing the effective calculation of the modes of the interface operators.

The profits carried out impact directly the computing times which are shorter, but also the memory occupation, by reducing the number of vectors to be stored.

In the second time, we enriched the possibilities offered by operator DEFI_MODELE_GENE by authorizing the coupling and connection of strongly incompatible interfaces. The incompatibilities of grids, being the non-coincidence of nodes (2D/2D or 3D/3D case) or the difference in modelization (2D/3D), are managed by rebuilding all the D.O.F. - for the interface defined as slave - starting from the kinematics of the interface defined as master. Moreover, the introduction of the concept of interface modes forces to manage the incompatibility of the displacement fields to the interface. This difficulty is overcome by considering weak coupling conditions, where connection conditions are projected in the subspace generated by the interface modes of the master substructure.

PNG - 321.3 ko
Croix 2D/3D

Lastly to reduce the construction of the assembled scale model, we set up a new generalized classification allowing to eliminate the stresses of connections, rather than using Lagrange multipliers. This last evolution not only limits the size of the scale models but also improves the conditioning of the matrices, and thus accelerates the resolution of the generalized problem. In parallel the operator REST_SOUS_STRUCT was re-examined with an aim of performance enhancement. These evolutions were tested on a blading model composed of a disc (31,000 D.O.F.) and of 46 wings (9800 D.O.F./wing), that is to say a complete model of approximately 480,000 D.O.F. The implementation of common substructuring methods on this model lead to computing times of about 32,000 seconds (that is to say almost 9 hours) for the first 300 modes of the structure. The reference computation carried out on the complete model lasts approximately 18,000 seconds (that is to say 5 hours) for the first 300 modes. The evolutions brought to the various operators lead to times of about 500 seconds for the first 300 modes, with the same quality results. We thus carried out a time-saver of about 60 compared to the first case, and of 33 compared to the second. It should also be noted that before these developments, in version 10.2 the restitution of the modes computed on physical basis stopped after 48 hours, by lack of CPU time. With the improvements made to REST_SOUS_STRUCT, the restitution takes 300 seconds with an office equipment.

GIF - 1.2 Mo
Mode d’aubage

SUSHIs can also be used for finite volumes

by S. Granet and O. Angélini, EDF R&D / AMA

The modelization of two-phase flows in porous media now has two new numerical schemes.

Finite volumes entered Code_Aster via the SUSHI scheme (Scheme Using Stabilisation and Hybrid Interfaces). This scheme family is efficient to represent problems of hydraulic bores (saturated environments in contact with unsaturated environments), strong contrasts, as well as to manage a phase emergence or disappearance. SUSHI is compatible with very distorted meshes.

This development was carried out within the framework of Ophélie Angélini’s thesis which was supervised by Robert Eymard, Université de Marne-La-Vallée.

The SUSHI scheme was developed for planar and 3D modelings of miscible two-phase flows. It comes in several versions : decentered line, decentered mesh, centered. Therefore 6 new modelings entered Aster :

  • D_PLAN_HH2SUC (centered sushi scheme) ;
  • D_PLAN_HH2SUDM (decentered mesh sushi scheme) ;
  • D_PLAN_HH2SUDA (decentered line sushi scheme) ;
  • 3D_HH2SUC (centered sushi scheme) ;
  • 3D_HH2SUDM (decentered mesh sushi scheme) ;
  • 3D_HH2SUDA (decentered line sushi scheme).

This figure represents the gas pressure obtained at 500 years for the modeling of a storage cell. Gas is injected in the bottom left corner during the first 500 years. Then the resaturation of the gap initially desaturated in water, and the desaturation of the geological environment initially saturated in water are observed. The gas spreads in both these two materials over time.

JPG - 85.7 ko
Modélisation d’une alvéole de stockage : pression de gaz à 500 ans

Improvement of the performances of parameters optimization

by A. Assire et J.-M. Proix, EDF R&D / AMA

The parameters optimization of a model is carried out in Code_Aster thanks to the command MACR_RECAL, which offers several methods of optimization, in particular the traditional algorithm of Levenberg-Marquardt. The parameters to be identified can be coefficients of constitutive laws, loadings, thickness of shells, etc. or any other parameter of the modelization. Optimization consists in finding the values of the parameters which enable to minimize the difference between the numerical response, (in the form of n curves), and n experimental curved.

This command was improved mainly in order to optimize the performances.

Computation can now be carried out according to two modes :

  • DISTRIBUTION : launching computations in distributed mode - i.e. simultaneously - can appreciably accelerate the procedure in the event of available CPU resources : indeed, for an optimization problem with n parameters, the n+1 computations necessary for the construction of the gradient at each iteration are completely independent. This mode allows the interactive launching by using the various hearts of a local machine, or in batch on a computation cluster for example, or even a combination of both. This mode is to be privileged in the case of numerous parameters, and/or slow slaves computations (for example optimization on complex structures).
  • INCLUSION : gradient computations pass by an INCLUDE of the slave file. This mode is preferable in the case of a fast slave computation , for example in order to identify some parameters of a constitutive law on material point.

Two traditional stopping criteria were added in the optimization algorithms :

  • TOLE_FONC : if the variation in absolute value of the norm of the functional calculus between two iterations is lower than the TOLE_FONC value, the procedure stops ;
  • TOLE_PARA : if the variation of the norm of the difference of the parameters between two iterations is lower than the TOLE_PARA value, the procedure stops.

To improve even more the identification performances of the constitutive laws parameters, the simulation command on material point - SIMU_POINT_MAT - was enriched with the key word SUPPORT=’ NOT’ ; it consists in directly calling the integration routine of the behaviors. It is usable in small strains, without linear research (otherwise it is necessary to use the old computation mode : SUPPORT=’ ELEMENT’). (cf U4.51.12).

The computations times are clearly decreased : for example the tests “compxxx” pass on average from 70s to 9s.

Overall these two evolutions lead to a factor 10 to 20 on the optimization tests of coefficients of constitutive laws. As an example, the test SSNA118A (optimization of 4 parameters of the behavior VISC_CIN2_CHAB on 4 curves) took :

  • 315s with version STA10.1
  • 24s with the new developments (curved attached)

on a local Linux machine.

PNG - 103.5 ko

PNG - 59.8 ko