d4.06.02 Structure de Données sd_ligrel et sd_modele#

Résumé:

La structure de donnée sd_modele représente le résultat de l’affectation d’éléments finis sur les mailles d’un maillage.

Une structure de donnée sd_ligrel est une liste de groupes d’éléments finis de même type.

Remarque : La sd_modele n’est pas la seule structure de données pouvant contenir une sd_ligrel.

Arborescences#

sd_ligrel(K19) .:=record
(o)'.NBNO' : OJB S V I

(o)'.LGRF' : OJB S V K8 long=4

(o)'.PRNM': OJB S V I
% si le sd_ligrel contient des éléments finis
(o) '.LIEL': OJB XC V I NU()
(f) '.TYFE' : OJB S V I

% si le sd_ligrel contient des éléments sur des mailles du maillage :

(f) '.REPE': OJB S V I

% si le sd_ligrel contient des éléments sur des mailles tardives :

(f) '.NEMA': OJB XC V I NU()

% si le sd_ligrel contient des nœuds tardifs :

'.PRNS': OJB S V I
'.LGNS': OJB S V I

% si le sd_ligrel contient des sous-structures statiques

(o)'.SSSA : OJB S V I
% si le sd_ligrel contient des éléments ayant besoin du voisinage
(o)'.NVGE : OJB S V K16 (long=1)
sd_modele(K8) .:=record
(o)'.MODELE' : sd_ligrel

% si le sd_modele provient de la commande MODI_MODELE_XFEM :

(f) '$VIDE' : sd_modele_XFEM

Contenu des objets JEVEUX du sd_ligrel#

Objet “.LGRF”#

'.LGRF' : S V K8 (long=4)

V(1) : nom du maillage associé au sd_ligrel.

V(2) : nom de la sd_partition (parallélisme des calculs élémentaires). Si cette information est manquante, on ne peut pas paralléliser les calculs élémentaires (ni les assemblages).

V(3) : vaut “ “(dans le cas général) ou “LAG1’dans le cas d’un ligrel de charge pour lequel l’utilisateur a demandé d’utiliser des simples Lagrange.

V(4) : vaut “ “ (dans le cas général) ou nom de la SD DOMJOINTS si le maillage est HPC.

L’attribut “DOCU” de cet objet contient : “MECA”/”THER”/”ACOU”. Cette information permet de déterminer les ddls portés par les nœuds (objets .PRNM et .PRNS)

Objet “.NBNO”#

'.NBNO' : S V I (long=1)

Contient le nombre de nœuds tardifs du sd_ligrel

Objet “.PRNM”#

'.PRNM' : S V I

Cet objet décrit les degrés de libertés portés par les nœuds du sd_ligrel. Il tient compte des degrés de libertés apportés par les éléments finis et de ceux apportés par les sous-structures.

Soit V = .PRNM

nbno = nombre de nœuds du maillage

nec = nombre d’entiers codés nécessaires à la grandeur fondamentale associée au sd_ligrel : nec = (nombre de CMP (grandeur fondamentale) / 30) +1

pour i = 1, nbno :

V(nec*(i-1)+1)

1er entier codé du nœud i

V(nec*(i-1)+2)

2ème entier codé du nœud i

V(nec*(i-1)+nec)

dernier entier codé du nœud i

Objet “.LIEL”#

'.LIEL' : XC V I NU()

La collection .LIEL contient les numéros des mailles supportant des éléments finis. Les éléments sont regroupés par groupes d’éléments de même type (GREL) [D0.04.02]. Un objet de la collection correspond à un GREL.

Soit i le ièmeGREL du SD_LIGREL

V =.LIEL(i)

n = LONG(V) = l+nbrede mailles du ième GREL

V(1)

numéro de la maille associée au 1er élément du GREL

V(2)

numéro de la maille associée au 2ème élément du GREL

V(n-1)

numéro de la maille associée au dernier élément du GREL

V(n)

numéro du type d’élément associé au GREL i (objet &CATA.TE.NOMTE [D4.04.01])

Conventions importantes :

  • si la maille est une maille du maillage son numéro est stocké tel quel.

  • si la maille est une maille tardive, son numéro est stocké avec le signe moins (cf. objet .NEMA),

  • le nombre de GREL d’un sd_ligrel vaut : NUITOC (“.LIEL”) (Attention : la collection peut être sur-dimensionnée : NMAXOC ≥ NUTIOC)

Objet “.REPE”#

'.REPE' : S V I

Soit

V = “.REPE”

nbma = nombre de mailles du maillage associé ausd_ligrel LONG(V) = 2*nbma

pour i = 1, nbma

V(2(i-1)+1) : numéro du GREL associé à la maille i du maillage

V(2(i-1)+2) : position dans le GREL de la maille i du maillage

Cet objet est ”l’inverse” de l’objet .LIEL pour ce qui concerne les mailles du maillage

Si i est une maille non affectée : V(2(i-1)+1)= V(2(i-1)+2)= 0

Objet “.NVGE”#

'.NVGE' : S V K16 (long=1)

V(1) : nom de la sd_voisinage affectée au ligrel

Objet “.SSSA”#

'.SSSA' : S V I

Soit :

V = “.SSSA”

nb_sm = nombre de super-mailles du maillage

LONG(V) = nb_sm + 3

V(i=1,nbsm)

/ 1 si la super-maille iest affectée (sous-structuration “active”)

/ 0 sinon

V(nbsm+l)

nombre de super-mailles du maillage

V(nbsm+2)

nombre de sous-structures actives

V(nbsm+3)

nombre de nœuds de Lagrange du maillage

Remarque :

V(nb_sm+1) et V(nb_sm+3) ne doivent plus être utilisés, l’information existant déjà dans le maillage (objet . DIME ).

Objet “.NEMA”#

'.NEMA' : XC V I NU

Cette collection décrit les mailles tardives du sd_ligrel.

II existe un objet de collection par maille tardive.

Attention :

Cette collection est peut être sur-dimensionnée. Le nombre réel de mailles tardives est obtenu par NUTIOC(.NEMA).

Soit :

nbmas = nombre de mailles tardives du sd_ligrel

nbmas = NUTIOC(.NEMA)

pour i = 1, nbmas

V = .NEMA(i)

n = LONG(V) = (nombre de nœuds de la maille) + 1

V(l)

numéro du 1er nœud de la maille i

V(2)

numéro du 2ème nœud de la maille i

V(n-1)

numéro du dernier nœud de la maille i

V(n)

numéro du type de la maille i

Si le numéro d’un nœud est négatif, c’est l’opposé du numéro d’un nœud tardif du sd_ligrel(cf. objet .NBNO).

Objet “.PRNS”#

'.PRNS' : S V I

Cet objet décrit les ddls portés par les nœuds tardifs du sd_ligrel.

Soit :

V = .PRNS

nbnos = nombre de nœuds tardifs du sd_ligrel

nec = nombre d’entiers codés nécessaires à la grandeur fondamentale associée au sd_ligrel nec = (nombre de CMP(grandeur fondamentale) / 30) +1

pour i = 1, nbnos :

V(nec*(i-1)+1)

1er entier codé du nœud i

V(nec*(i-1)+2)

2ème entier codé du nœud i

V(nec*(i-1)+nec)

dernier entier codé du nœudi

Le “petit” morceau de .PRNS concernant le nœud i est ce que l’on appelle un Descripteur-Grandeur [D4.06.05].

Objet “.LGNS”#

'.LGNS' : S V I

La longueur de ce vecteur est supérieure au nombre de nœuds tardifs du sd_ligrel (l’objet est sur-dimensionné).

V (INO) : nombre indiquant comment le nœud tardif de Lagrange INO doit être numéroté (voir sd_nume_ddl).

V(INO) : 0

le nœud INO n’est pas un nœud de Lagrange

V(INO) :+1

le nœud INO est un nœud de Lagrange de type “1”.

II doit être numéroté avant les ddls physiques qu’il contraint.

V(INO) :-2

le nœud INO est un nœud de Lagrange de type “2”.

II doit être numéroté après les ddls physiques qu’il contraint.

V(INO) :-1

le nœud INO est un nœud de Lagrange de type “1”.

II doit être numéroté après les ddls physiques qu’il contraint.

V(INO) :+2

le nœud INO est un nœud de Lagrange de type “2”.

II doit être numéroté avant les ddls physiques qu’il contraint.

Objet “.TYFE”#

'.TYFE' : S V I

Soit V = “.TYFE”

LONG(V) = nombre de mailles du maillage = nbma

pour i = 1, nbma

V(i) : numéro du type d’élément porté par la maille i

(= 0 si la maille n’est pas affectée par un élément fini)

Remarque sur les objets redondants de la sd_ligrel#

Certains objets de la sd_ligrel peuvent se déduire d’autres objets. Cette information redondante a pour but d’accélérer certains traitements (du point de vue du temps CPU).

L’objet .REPE peut se déduire de .LIEL. Les objets .PRNM et .PRNS peuvent se déduire de .LIEL, .SSSA et .LGRF.

La routine cormgi.F90 permet de calculer .REPE La routine initel.F90 permet de calculer .PRNM et .PRNS.

Contenu des objets JEVEUX du sd_modele#

Objet “.MODELE”#

'.MODELE' : K19

Nom de la sd_ligrel attachée au modèle.

Objet “.XFEM”#

'.XFEM' : S V K8 long = 1

V(1) : nom des pré-traitements X-FEM (pré-conditionneur) requis; cette est information disponible dans la sd_modele_xfem.

Exemples#

SD sd_modele#

MOTH=AFFE_MODELE( MAILLAGE=MAIL,

AFFE=_F( TOUT = 'OUI', MODELISATION = 'AXIS', PHENOMENE = 'THERMIQUE'))

produit :



IMPRESSION SEGMENT DE VALEURS >MOTH .MAILLE <

1 - 289 289 300 300 300


IMPRESSION DE LA COLLECTION : MOTH .MODELE .LIEL

IMPRESSION OBJET DE COLLECTION CONTIGUE>MOTH .MODELE .LIEL< OC : 1

1 - 1 2 289

IMPRESSION OBJET DE COLLECTION CONTIGUE>MOTH .MODELE .LIEL< OC : 2

1 - 3 4 5 300


IMPRESSION SEGMENT DE VALEURS >MOTH .MODELE .NBNO <

1 - 0


IMPRESSION SEGMENT DE VALEURS >MOTH .MODELE .LGRF <

1 - >MAIL <


IMPRESSION SEGMENT DE VALEURS >MOTH .MODELE .PRNM <

1 - 2 2 2 2 2

6 - 2 0 0 0 0

41 - 0 0 2 2 0

46 - 0 0 0 0 0

51 - 0 0 0 0 0

56 - 0 0 0 0 0

61 - 0 0 0


IMPRESSION SEGMENT DE VALEURS >MOTH .MODELE .REPE <

1 - 1 1 1 2 2

6 - 1 2 2 2 3

SD sd_ligrel (charge, double lagrange)#

CHTH=AFFE_CHAR_THER( MODELE=MOTH,

TEMP_IMPO=_F( NOEUD = 'N4', TEMP = 100.0) )

produit :



IMPRESSION SEGMENT DE VALEURS >CHTH .CHTH.LIGRE.LGNS <

1 - 1 -2 0 0 0

6 - 0 0 0


IMPRESSION DE LA COLLECTION : CHTH .CHTH.LIGRE.LIEL

IMPRESSION OBJET DE COLLECTION CONTIGUE>CHTH .CHTH.LIGRE.LIEL< OC : 1

1 - -1 92


IMPRESSION SEGMENT DE VALEURS >CHTH .CHTH.LIGRE.NBNO <

1 - 2


IMPRESSION DE LA COLLECTION : CHTH .CHTH.LIGRE.NEMA

IMPRESSION OBJET DE COLLECTION CONTIGUE>CHTH .CHTH.LIGRE.NEMA< OC : 1

1 - 4 -1 -2 4


IMPRESSION SEGMENT DE VALEURS >CHTH .CHTH.LIGRE.LGRF <

1 - >MAIL <


IMPRESSION SEGMENT DE VALEURS >CHTH .CHTH.LIGRE.PRNM <

1 - 0 0 0 2 0

6 - 0 0 0 0 0

61 - 0 0 0


IMPRESSION SEGMENT DE VALEURS >CHTH .CHTH.LIGRE.PRNS <

1 - 16 16