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