4. Grandeurs « élémentaires »#
Jusqu’à présent, nous n’avons parlé que des grandeurs «simples». Une grandeur «simple» est une liste de composantes nommées.
Les champs aux nœuds (cham_no_xxx), les cartes (carte_xxx) et les champs par éléments (cham_elem_xxx) sont tous associés à une grandeur «simple». Par exemple, un champ aux nœuds de déplacement est associé à la grandeur DEPL_R. Sur chacun des nœuds du maillage, ce champ peut «porter» une (ou plusieurs) composantes de la grandeur DEPL_R.
Les grandeurs «élémentaires» sont celles qui sont associées aux structures de données resuelem (vecteurs élémentaires ou matrices élémentaires).
Un resuelem est un «champ» contenant 1 vecteur élémentaire (ou 1 matrice élémentaire) par maille. La grandeur associée à ce champ est une grandeur élémentaire.
4.1. Syntaxe#
La description des grandeurs élémentaires dans le fichier physical_quantities.py est faite à la fin du catalogue (car on y utilise les grandeurs simples définies au début du fichier).
Exemples :
MDEP_C = ArrayOfQuantities(elem=”MS”, phys= DEPL_C)
MDNS_R = ArrayOfQuantities(elem=”MR”, phys= DEPL_R)
MPRE_C = ArrayOfQuantities(elem=”MS”, phys= PRES_C)
VDEP_C = ArrayOfQuantities(elem=”V”, phys= DEPL_C)
VDEP_R = ArrayOfQuantities(elem=”V”, phys= DEPL_R)
Une grandeur élémentaire de type «vecteur» utilise elem=”V”.
Une grandeur élémentaire de type «matrice» utilise elem=”MS” (si elle est symétrique) ou “MR” (si elle est non symétrique).
4.1.1. Grandeur « vecteur élémentaire »#
Une grandeur de type «vecteur élémentaire» (par exemple VDEP_R ci-dessus) est simplement décrite par elem=”V” et la grandeur simple associée à la grandeur élémentaire (ici DEPL_R).
4.1.2. Grandeur « matrice élémentaire »#
Une grandeur de type «matrice élémentaire» (par exemple MDNS_R ci-dessus) est décrite par elem=”MR” (matrice non symétrique) et la grandeur simple associée à la grandeur élémentaire (ici DEPL_R).
4.2. Conventions de stockage#
Les scalaires (en général des réels) qui permettent de représenter une grandeur élémentaire sont nombreux : par exemple, la matrice de rigidité (symétrique) d’un élément mécanique MECA_HEXA20 contient (60*61/2) réels.
Il n’est pas question de nommer tous ces réels (comme les composantes d’une grandeur simple).
Des conventions sont nécessaires concernant le stockage de ces scalaires.
Pour un vecteur élémentaire (destiné à être assemblé pour donner un second membre), on cherche à stocker quelque chose qui ressemble à un champ «aux nœuds» pour chaque élément. La convention de stockage est naturelle. Par exemple :
N1 |
N2 |
N3 |
… |
||||||
DX |
DY |
DZ |
DX |
DY |
DZ |
DX |
DY |
DZ |
… |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
… |
Pour une matrice élémentaire, deux conventions sont nécessaires :
Pour une matrice symétrique, on stocke dans l’ordre suivant :
1 |
||||
2 |
3 |
|||
4 |
5 |
6 |
||
7 |
8 |
9 |
10 |
|
11 |
12 |
13 |
14 |
15 |
Pour une matrice non-symétrique, on stocke dans l’ordre suivant :
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
Sachant que l’ordre des lignes et des colonnes est le même que celui d’un vecteur élémentaire.