d4.06.08 Structure de données sd_resultat#
Table des matières
Typage d’une sd_resultat#
Les résultats (champs et paramètres) susceptibles d’être stockés dans une sd_resultat sont assez variables. Par exemple, les résultats d’un calcul dynamique transitoire peuvent être des champs de vitesse ou d’accélération, ce qui n’est pas le cas pour un calcul quasi-statique, les résultats d’un calcul thermique peuvent être des champs de températures ou de flux de chaleur.
Pour distinguer toutes les situations possibles les sd_resultat sont typées. On parlera par exemple de sd_resultat du type dyna_tran pour les résultats d’un calcul dynamique transitoire, evol_noli pour un calcul quasi-statique non linéaire, evol_ther pour un calcul thermique. Les sd_resultat sont crées par une routine unique rscrsd [D6.05.01] dont le source est relativement explicite.
Toutes les sd_resultat quelques soient leurs types sont accessibles à la programmation à partir des mêmes routines [D6.05.01].
Structure de la sd_resultat#
Paramètres et variables d’accès#
Les informations (champs et paramètres) d’une sd_resultat sont indexées par un entier. Cet index est appelé numéro d’ordre ou NUME_ORDRE. Cet index ne varie pas forcément de \(1\) à \(n\) . Les numéros d’ordre peuvent être négatifs ou nuls ; ils peuvent ne pas être consécutifs. Pour un RESULTAT de type transitoire par exemple le numéro d’ordre 0 correspond à l’état initial, le numéro d’ordre 1 correspond au premier instant de calcul. À ce NUME_ORDRE correspond un ou plusieurs paramètres qui permettent également d’accéder aux informations. Par exemple, l’instant d’un calcul évolutif ou la fréquence ou le numéro d’ordre d’un mode propre. Ces paramètres d’un genre un peu particulier sont appelés variable d’accès. Les autres paramètres (masse généralisée d’un mode, par exemple) sont simplement appelés paramètres sans autre distinction.
Un paramètre (variable d’accès ou autre) peut être du type entier, réel, complexe ou caractère.
Nom symbolique des champs#
À un NUME_ORDRE donné peuvent correspondre plusieurs champs que l’on distingue par ce que l’on appelle un nom symbolique, par exemple, DEPL pour les champs de déplacements, SIGM_ELNO pour les contraintes par éléments aux nœuds calculés à partir du champ de déplacement. Ces champs sont de type cham_no, cham_elem ou carte.
Pour simplifier les noms symboliques retenus pour les différents types de sd_resultat sont des noms de grandeurs ou des noms d’options de calcul.
Représentation schématique#
Schématiquement une sd_resultat se présente donc sous la forme suivante (exemple de la sd_resultat du type mode_meca).
Dans le premier tableau à double entrée (nom symbolique et numéro d’ordre), on trouve des noms de champs (\(\mathit{K19}\) stockés dans un vecteur de \(\mathit{K24}\) ).
Dans les 2ème et 3ème tableaux, on trouve la valeur (scalaire) des variables d’accès (ou des paramètres).
(sous) typage des sd_resultat#
Les concepts sd_resultat sont typés.
Les différents concepts sd_resultat sont les suivants (cette liste non limitative, pourra être complétée au fur et à mesure des développements d’Aster ; il n’est, toutefois pas souhaitable qu’elle s’allonge trop) :
EVOL_ELAS |
Résultat issu d’un calcul quasi-statique avec évolution avec le temps |
EVOL_NOLI |
Résultat issu d’un calcul quasi-statique ou dynamique non-linéaire |
EVOL_THER |
Résultat issu d’un calcul thermique transitoire |
DYNA_TRANS |
Résultat issu d’un calcul dynamique linéaire transitoire dans l’espace physique |
DYNA_HARMO |
Résultat issu d’un calcul dynamique harmonique dans l’espace physique |
ACOU_HARMO |
Résultat issu d’un calcul acoustique harmonique dans l’espace physique |
MODE_MECA |
Résultat issu d’un calcul de modes dynamiques ou statiques, ou d’un regroupement des deux |
MODE_ACOU |
Résultat issu d’un calcul de recherches de valeurs propres et vecteurs propres mécaniques à partir de grandeurs acoustiques |
MODE_FLAMB |
Résultat issu d’un calcul de recherches des modes de flambement |
MODE_GENE |
Résultat issu d’un calcul de recherches de valeurs propres et vecteurs propres mécaniques à partir de grandeurs généralisées |
Les concepts DYNA_TRANS, DYNA_HARMO, ACOU_HARMO, MODE_MECA, MODE_GENE, MODE_ACOU, MODE_FLAMB issus d’un calcul dynamique, sont également typés comme des sd_resu_dyna[D4.07.02].
Arborescence#
''sd_resultat'' (K19) ::== record
(o) '.DESC' OJB S N K16
'.TACH' OJB XC V K24
'.NOVA' OJB S N K16
'.TAVA' OJB XC V K8
'.ORDR' OJB S V I
Contenu des objets JEVEUX de base#
“.DESC”#
Cet objet est un pointeur de nom contenant les noms symboliques de ces champs.
“.TACH”#
Contient les noms des champs contenus dans le RESULTAT. Cet objet est une collection de vecteurs de longueur constante pointée par le .DESC.
“.NOVA”#
Cet objet est un pointeur de nom contenant les noms des variables d’accès et des paramètres de calcul.
“.TAVA”#
Décrit les variables d’accès et les paramètres de calcul. Cet objet est une collection de vecteurs de longueur égale à 4 pointée par le .NOVA. Pour un nom donné, on trouve :
le nom du suffixe de l’OJB où est stockée la valeur (K5),
les caractères associés au rang du paramètre permettant de retrouver sa valeur quand on lui associe un numéro d’ordre,
le nombre total de paramètres différents contenus dans l’OJB,
on indique si c’est une variable d’accès ou un paramètre.
Voir exemple ci-dessous
“.ORDR”#
Cet objet est un vecteur d’entiers.
Il contient les numéros d’ordre stockés dans la SD.
Soit par exemple : .ORDR = (0,10,20,30)
Cette SD a 4 numéros d’ordre : 0,10,20,30 associés aux 4 numéros de rangement 1,2,3,4.
Règle de construction des noms des champs#
Le nom des structures de données des champs contenus dans le .TACH est composé à partir :
des 8 premiers caractères du nom du concept RESULTAT “composé” : resu
des caractères associés au numéro dans le pointeur du nom symbolique du résultat (K3) : nusymb
des caractères (K6) associés au numéro d’ordre : nuordr (limitation à 106 pas de temps) ce qui donne :
K8 K1 K3 K1 K6 = K19
resu//'.'//nusymb//'.'//nuordr
Exemple :
Soit ‘moderesu’ un nom de concept RESULTAT “composé” :
le vecteur propre du mode de numéro d’ordre 1 est un cham_no de nom ‘moderesu.001.00001’
la déformation aux nœuds par élément du mode de numéro d’ordre 9 est un cham_elem de nom ‘moderesu.003.00009’
Règle d’accès aux valeurs des variables d’accès et aux paramètres#
La valeur d’une variable d’accès ou d’un paramètre de nom nosymb et de numéro d’ordre nuordr d’un concept RESULTAT “composé” de nom resu se trouve dans l’OJB de nom :
K19 K5 = K24 resu//nosuff
à l’indice nmax*(irang-1)+ivar
où :
irang est le numéro de rangement du numéro d’ordre nuordr.
le nom du suffixe nosuff, le nombre nmax de variables, et l’indice ivar se trouvent respectivement dans le premier, deuxième et troisième éléments du vecteur de l’objet nosymb de la collection de nom :
K19 K5 = K24
resu//'.TAVA'
Exemple :
Soit ‘moderesu’ est un nom de concept RESULTAT “composé”, la raideur généralisée RIGI_GENE du mode de numéro d’ordre 11 (rangé à l’indice 7 de l’objet .ORDR) se trouvera dans l’OJB vecteur :
‘moderesu .PARA’
avec l’indice \(27\times (7-1)+5\)
“.PARA”, “27” et “5” ont été trouvés dans l’OJB de nom ‘moderesu .TAVA’ en face du nom RIGI_GENE.
Noms symboliques, variables d’accès et paramètres des sd_resultat#
On donne ici à titre indicatif quelques noms de champs et de paramètres stockés dans un EVOL_ELAS.
* Noms symboliques des champs :
'DEPL' 'SIEF_ELGA' 'SIEF_ELGA_DPGE'
'EPSI_ELNO' 'EPSI_ELNO_DPGE' 'DEGE_ELNO'
...
* Variables d'accès :
'INST'
* Paramètres :
'EFFORT_N' 'MOMENT_MFY' 'MOMENT_MFZ'
…
Exemple d’une sd_resultat de type MODE_MECA#