5. Cartes « étendues »#
Une CARTE est un champ affecté par mailles ou groupes de mailles. La structure de données CARTE est « condensée » : on stocke en vis-à-vis de chaque grandeur instanciée la liste des mailles affectées par cette grandeur. Dans CALCUL, le problème de base pour l’utilisation des CARTES est le suivant : « comment retrouver la grandeur instanciée associée à la maille ima pour pouvoir la recopier dans le champ local fourni aux routines TE00IJ ? «
Ce problème ne peut pas être résolu efficacement avec la structure CARTE (surtout si l’on pense qu’une maille peut être affectée plusieurs fois : principe de « surcharge »), c’est pourquoi au début de CALCUL (routine DEBCAL), on « étend » les CARTES « IN » (routine ETENCA). Cette extension consiste à créer pour chaque CARTE, 2 objets supplémentaires temporaires qui permettent de faire l’association (maille, grandeur) une fois pour toutes.
Ces 2 objets correspondent à la SD CARTE_ETENDUE suivante:
CARTE_ETENDUE (K19) ::= record “$VIDE” : CARTE “.PTMA” : OJB S V I LONG = nb_ma “.PTMS” : OJB S V I LONG = nb_ms
Objet “.PTMA” :
soit nb_ma le nombre de mailles du maillage associé à la carte,
pour ima=1,nb_ma :
.PTMA(ima) : numéro de la grandeur associée à la maille ima
Objet “.PTMS” :
soit nb_ms le nombre de mailles supplémentaires du ligrel associé à la carte,
pour ims=1,nb_ms :
.PTMA(ims) : numéro de la grandeur associée à la maille supplémentaire ims