Reprises, archivage et gestion de l'état initial ================================================ Dans le cas où l'on souhaite poursuivre un calcul déjà exécuté, le mot-clef RESULTAT indique quel objet est enrichi. Définition d'un état initial ------------------------------ Le mot-clef ETAT_INIT permet de définir un état initial de référence. Dans le cas où l'utilisateur a spécifié que le concept résultat est réentrant (par le mot RESULTAT), le mot-clé ETAT_INIT est obligatoire. Par convention, l'état initial d'un calcul vierge (sans reprise) est stocké au numéro d'ordre 0. Par défaut (si on ne précise rien) tous les champs sont identiquement nuls. L'état initial peut être défini soit en précisant chaque champ de l'état initial, soit en extraction depuis un concept de type evol_noli préexistant. Si on donne une structure de données de type EVOL_NOLI=evol provenant d'un autre calcul par le mot-clef EVOL_NOLI, on extrait automatiquement les champs de cette structure de données pour l'état initial. L'extraction de l'état mécanique initial dans la structure de données evol_noli se fait à partir du numéro d'archivage NUME_ORDRE ou de l'instant d'archivage INST. Si NUME_ORDRE ou INST ne sont pas remplis, on prend le dernier numéro archivé existant. Ces champs extraits seront archivés au premier instant de la liste d’instants défini sous le mot-clé INCREMENT. Dans le cas où l'on renseigne INST, les mots-clefs PRECISION et CRITERE (voir [:ref:`U4.71.00 `] pour la syntaxe détaillée) servent à repérer le bon numéro d'ordre. En effet, les instants sont repérés par un numéro d'ordre (un entier). Si l'utilisateur veut utiliser un instant (un réel) et non un numéro d'ordre pour INST, l'opérande PRECISION permet de sélectionner ce numéro d'ordre. **A - Exemple simple (comportement par défaut)** .. code-block:: python listInst = DEFI_LIST_REEL(DEBUT=0., INTERVALLE=_F(JUSQU_A= 10.,NOMBRE=10)), evolNoli = MECA_NON_LINE(INCREMENT=_F(LIST_INST=listInst, INST_FIN=4.)), evolNoli = MECA_NON_LINE(reuse=evolNoli, INCREMENT=_F(LIST_INST=listInst), ETAT_INIT=_F(EVOL_NOLI=evolNoli)) Le premier MECA_NON_LINE effectue le calcul pour les instants 1, 2, 3 et 4. Le second MECA_NON_LINE: effectue le calcul pour les instants de 5 à 10, l'état initial correspondant au temps 4. **B - Exemple pour montrer l'intérêt de deux listes d'instants différentes** .. code-block:: python listInst1 = DEFI_LIST_REEL(DEBUT=0., INTERVALLE=_F(JUSQU_A= 10., NOMBRE=10)), evolNoli = MECA_NON_LINE (INCREMENT=_F(LIST_INST=listInst1)) listInst2 = DEFI_LIST_REEL(DEBUT=20., INTERVALLE=_F(JUSQU_A= 30., NOMBRE=10)) evolNoli = MECA_NON_LINE(reuse=evolNoli, RESULTAT=evolNoli, INCREMENT=_F(LIST_INST=listInst2, INST_INIT=20.), ETAT_INIT=_F(EVOL_NOLI=evolNoli,)) Le premier MECA_NON_LINE effectue le calcul pour les instants de 1 à 10. L'état initial, de numéro d'ordre 0, est vierge (tous les champs sont nuls). Le second MECA_NON_LINE effectue le calcul des instants 21 à 30. L'état initial correspond à l'instant 10 du premier MECA_NON_LINE (dernier instant calculé dans le premier MECA_NON_LINE). Cet état initial correspond pour ce second MECA_NON_LINE à l'instant 20 (INST_INIT=20.). L'utilisation d'un état initial non nul va changer le calcul de la déformation thermique. S'il y a un état initial non nul, alors le calcul de la déformation thermique est incrémental pur. Si on utilise un état initial dont le modèle est différent du modèle de calcul renseigné dans l'opérateur, on procède automatiquement au passage entre les deux modèles: * Si le modèle de calcul est inclus dans le modèle donné dans l'état initial, les données de l'état initial sont simplement recopiées maille à maille pour tous les champs * Si le modèle donné dans l'état initial est inclus dans le modèle de calcul, on commence par copier les valeurs de l'état initial pour les mailles communes puis complète avec la valeur nulle. Il faut prendre garde au sens que peut avoir une variable interne nulle initiale dans le calcul Les mots-clefs DEPL, SIGM et VARI permettent (respectivement) de donner un champ de déplacement, de contraintes et de variables internes initiaux. Si l'un de ces champs n'est pas précisé, il est pris nul par défaut. Ils peuvent par exemple être issus de la commande CREA_CHAMP [:ref:`U4.72.04 `], ou bien avoir été lus dans un fichier par la commande LIRE_RESU [:ref:`U7.02.01 `]. Le champ de contraintes et de variables internes aux points de Gauss et le champ des déplacements est un champ aux nœuds. Si les champs ne sont pas définis sur les bons supports les conversions peuvent être faites de manière automatique. Il n'y a aucune condition imposée sur les champs données par l'utilisateur. Ils peuvent très bien représenter un état mécanique non-équilibré et/ou ne respectant pas la loi de comportement. Si le calcul a du mal à converger dans ce cas, le plus simple est de créer artificiellement un état de contraintes initiales nul pour forcer la sélection du mode incrémental, ou d'utiliser une matrice purement élastique, qui permet une convergence certaine au prix d'un grand nombre d'itérations. En grandes déformations, l'utilisateur souhaitant utiliser le formalisme GDEF_LOG avec un champ de contrainte initial (ETAT_INIT) se reportera au cas test SSNP159b. En effet, pour imposer un champ de contrainte initial, l'utilisateur doit donner en entrée le tenseur de contrainte défini dans l'espace logarithmique :math:`T` (et non celui de Cauchy :math:`\sigma` ). Les composantes de ce dernier étant stockées en tant que variables internes, il faut utiliser le mot-clef VARI. Si les caractéristiques matériaux dépendent fortement des variables de commande, il convient d'être prudent sur la sélection de l'état initial, au risque de ne pas converger. En effet, les comportements élastiques existent en deux versions (voir [:ref:`U4.51.11 `]). La version élastique "pure" est choisie automatiquement par le code lorsqu'il n'y a pas d'état initial, sinon, on sélectionne la version incrémentale. Or, seule cette dernière est efficace si l'on a de fortes variations des caractéristiques matériaux (élastiques dans ce cas) par rapport aux variables de commande. Si on utilise simultanément un état provenant d'un résultat complet (mot-clef EVOL_NOLI) et la définition *individuelle* d'un champ (par exemple les contraintes), la règle de surcharge s'applique et les champs données à titre individuel remplacent ceux présents dans la structure de données donnée comme état initial. Archivage des résultats ----------------------- Le mot-clef facteur ARCHIVAGE (une seule occurrence) permet d'archiver des ou certains résultats à tous ou certains instants du calcul. En l'absence de ce mot clé tous les pas de temps sont archivés, y compris les instants de calculs nouvellement créés par redécoupage automatique du pas de temps. L'archivage permet de réduire sensiblement la taille des bases en sélectionnant les instants sauvegardés. La désignation des instants à stocker est effectuée soit par une liste d'instants (mots-clefs LIST_INST ou INST) ou alors par une fréquence d'archivage PAS_ARCH=npas (tous les npas de temps). Remarques * le dernier pas de calcul est toujours stocké pour pouvoir effectuer une reprise * si on emploie un accès par liste d'instants, alors les instants de calculs nouvellement créés par redécoupage automatique du pas de temps ne seront pas archivés * l'état initial est systématiquement archivé sous le numéro d'ordre 0 dès lors que l'on n'est pas en reprise de calcul Le mot-clef CHAM_EXCLU permet de préciser les champs qui ne seront pas archivés, excepté au dernier pas de temps.