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. 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). 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). 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). 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 : .. csv-table:: "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 : .. csv-table:: "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.