\documentclass[12pt]{report}
\usepackage[french]{babel} 
\usepackage[latin1]{inputenc}
\usepackage[]{fontenc}
\usepackage{psfig,epsf}
\usepackage{a4,fancyheadings}  


\title{Développer dans CASTEM2000 : LES OBJETS} 
\author{ T.CHARRAS}
\date{\ }
\addtolength{\headheight}{2.5pt}
%\setlength{\oddsidemargin}{0.cm}
%\setlength{\evensidemargin}{0.cm}
%\setlength{\topmargin}{0.cm}
%\setlength{\marginparwidth}{0.cm}
%\setlength{\marginparsep}{0.cm}
%\setlength{\textwidth}{17.cm}
%\setlength{\textheight}{24.cm}



\begin{document} 

\maketitle


\section{Introduction}

Les TYPES abstraits sont des regroupements d'informations, certains ne
représentent que des données mathématiques ou informatiques (entier,
réel, liste de mots...), d'autres ont un caractère plus physique et
s'adaptent à une modélisation par éléments finis (champs par
élément, champs par point, matrices de conductivité...). En addition
de la description formelle des informations contenues dans le type,
il est fourni la
description informatique, ceci représente en fait les
méthodes d'accés, de création et de suppression de ces types et une
fois instancié nous sommes en présencer d'un objet qui a un type et
des méthodes.

Le support informatique des types abstraits est le segment ésope(sauf pour
entier, reel,logique et mot). Nous donnerons en annexe la liste
informatique de tous les  objets de Castem2000, et nous détaillerons
seulement des types qui ont une réalité physique, c'est à dire les
types MAILLAGE, MODELE, CHPOINT, MCHAML et un autre qui
appartient à l'analyseur de syntaxe, c'est à dire la TABLE.

L'idée qui soutend la définition d'un type abstrait est de 
répondre à la
question : "qu'est-il nécessaire et suffisant de garder comme
informations sur un objet, vu l'utilisation qui est envisageable?".
Par exemple si on voulait définir un objet "couteau", il ne
faudrait pas garder l'information qu'il passe ou non en machine
à laver,si on est sur et certain de ne jamais en posséder une. 
La définition d'un
type abstrait est stratégique, en modifier un conduit toujours 
à un travail
lourd et fastidieux. L'introduction d'un nouveau type abstrait 
est aussi un
travail important, il faut programmer toute l'intendance autour du
type : l'écriture, la sauvegarde-restitution, les opérations
élémentaires ... La pratique montre qu'il est très rare que les types
existants ne soient pas suffisants pour satisfaire les besoins.
Dans la suite nous ne parlerons plus de TYPE abstrait, nous utiliserons
directement le mot objet car nous préciserons directement la structure
informatique.

\section{L'objet MAILLAGE}

cet objet est supporté par le segment MELEME dont voici la liste :

\subsection{Segment associé au maillage}

\begin{verbatim}
*       -INC SMELEME                                                            
*                                                                               
*     L'OBJET  MAILLAGE  REPRESENTE UNE TOPOLOGIE                               
*                                                                               
      SEGMENT      MELEME                                                       
      INTEGER      ITYPEL                                                       
      INTEGER      NUM(NBNN,NBELEM)                                             
      INTEGER      LISOUS(NBSOUS),LISREF(NBREF)                                 
      INTEGER      ICOLOR(NBELEM)                                                                             
      ENDSEGMENT                                                                
      POINTEUR     IPT1.MELEME,IPT2.MELEME,IPT3.MELEME,IPT4.MELEME              
      POINTEUR     IPT5.MELEME,IPT6.MELEME,IPT7.MELEME,IPT8.MELEME              
      POINTEUR     IPT9.MELEME                                                  
*                                                                               
*     OBJET GEOMETRIQUE SIMPLE (UN SEUL TYPE D'ELEMENT)                         
*                                                                               
*     ITYPEL   : NUMERO DU TYPE D'ELEMENT          
*     NBSOUS   : 0 PAS DE SOUS-OBJETS                                           
*     NBREF    : NOMBRE DE REFERENCES ( COTES FACES ....                        
*     LISREF   : LISTE DES REFERENCES (POINTEURS SUR MELEME                     
*     NBNN     : NOMBRE DE POINTS DANS L'ELEMENT                                
*     NBELEM   : NOMBRE D ELEMENTS DANS LE MELEME                               
*     NUM(I,J) : NUMERO DU IEME NOEUD DU JIEME ELEMENT                          
*     ICOLOR   : COULEUR DE CHAQUE ELEMENT                                                  
*                                                                               
*     OBJET GEOMETRIQUE COMPLEXE (PLUSIEURS TYPES D'ELEMENTS)                   
*                                                                               
*     ITYPEL   : PAS UTILISE                                                    
*     NBSOUS :NOMBRE DE SOUS-OBJETS(OBJETS GEOMETRIQUES SIMPLES)            
*     LISOUS   : LISTE DES SOUS-OBJETS (POINTEURS SUR MELEME)                   
*     NBREF    : NOMBRE DE REFERENCES ( COTES FACES ....                        
*     LISREF   : LISTE DES REFERENCES (POINTEURS SUR MELEME                     
*     NBNN     : 0                                                              
*     NBELEM   : 0                                                              
*                                                                               
\end{verbatim}

Pour un objet maillage composé d'un seul type d'élément, les
informations conservées sont : 

\begin{description} 

    \item[ITYPEL] : numéro du type de l'élément (un triangle à 3
noeuds porte le numéro 4) d'après NOMS du common CGEOMC initialisé 
par block data. 

    \item[NUM] : tableau donnant les nbnn noeuds des nbelem éléments. 

    \item[ICOLOR]  : tableau d'entiers précisant la couleur de chaque
élément.l'ordre des couleurs est le suivant : 

      'BLEU','ROUGE','ROSE','VERT','TURQUOISE','JAUNE','BLANC'   

    \item[LISREF] : tableau pouvant référencer d'autres objets
maillages se rapportant au premier, par exemple le contour ou les
cotés...
\end{description}

Un objet maillage complexe, c'est à dire contenant plusieurs types
d'éléments, sera différent. Il contient surtout la liste des objets
maillages élémentaires qui le composent.

\begin{description} 

    \item[LISOUS] : liste des pointeurs référençant les maillages
élémentaires.
\end{description}

\subsection{Exemple d'utilisation}

Illustrons ceci par un exemple de programmation montrant comment
dérouler un objet MAILLAGE. Le but, sans aucun intéret, du 
sous-programme est de faire la somme de tous les numéros de noeuds qui 
apparaissent dans la description des éléments de l'objet maillage
référencé par ipoin. 



\begin{tabbing}
referen \=  sssssssssssssssssssssssssssssssssssssssss\kill
\>   \large       subroutine sp1 (ipoin) \\
C  insertion des lignes déclarations du segment relatif à l'objet \\
C  maillage \\
\> \large    \\
\>       SEGMENT      MELEME       \\                                                
\>      INTEGER      ITYPEL       \\                                                
\>         INTEGER      NUM(NBNN,NBELEM)     \\                                        
\>        INTEGER      LISOUS(NBSOUS),LISREF(NBREF) \\                                
\>        INTEGER      ICOLOR(NBELEM) \\                                                                            
\>       ENDSEGMENT      \\                                                          
\>  POINTEUR    IPT1.MELEME,IPT2.MELEME,IPT3.MELEME,IPT4.MELEME  \\                
\>  POINTEUR    IPT5.MELEME,IPT6.MELEME,IPT7.MELEME,IPT8.MELEME  \\                
\>  POINTEUR    IPT9.MELEME    \\ 
\> \large    \\                    
C  supposons que la variable ipoin, passée en argument soit la  \\ 
C  valeur du pointeur de l'objet maillage. on utilise l'alias IPT1 \\ 
\> \large       ipt1=ipoin   \\
\> \large         segact ipt1   \\
\> \large         nsom=0  \\
C récupérons par la dimension de lisous, si l'objet est \\
C élémentaire ou complexe. nbso sera le nombre d'objets  \\
C élémentaires composant l'objet maillage ipoin.  \\
\> \large         nbso =max(1, ipt1.lisous(/1))   \\    
C  faisons une boucle sur les sous objets  \\
\> \large        do 1 i = 1,nbso  \\
\> \large        if(nbso.eq.1) then  \\
\> \large         \ \ \ meleme=ipt1  \\
\> \large        else   \\
\> \large         \ \ \  meleme = ipt1.lisous(i)  \\
\> \large         \ \ \  segact meleme  \\
\> \large        endif  \\
\> \large    \\
C boucle sur les éléments   \\
\> \large        do 2 k=1,num(/2)  \\
C boucle sur les noeuds de l'élément  \\ 
\> \large         do 3 m = 1, num(/1)  \\
\> \large         ia = num(m,k)  \\
\> \large        nsom=nsom+ia  \\
3 \>  \large continue  \\
2 \>  \large continue  \\
\> \large        if(nbso.ne.1) segdes meleme  \\
1 \>   \large  continue  \\
\> \large        segdes ipt1  \\
\> \large        return  \\
\> \large       end  
\end{tabbing}
\subsection{remarques}
\begin{itemize}
   \item Beaucoup d'objets contiennent une référence à un objet
maillage.
      
   \item Par construction, deux sous-objets ne peuvent pas etre
composés d'éléments de meme type. Une partition du maillage par type 
d'éléments est une propriété qu'il faut respecter, beaucoup
d'opérateurs l'utilisent.

   \item L'objet maillage support de champ par point est composé
d'éléments de type POI1, c'est à dire que ITYPEL=1 et qu'il n'y a
qu'un point par élément.     
\end{itemize} 


\section{L'objet CHPOINT}

Un champ défini aux noeuds du maillage (les points) s'appelle un
CHPOINT (prononcez champoint) et se trouve dans le segment MCHPOI.
Un champ par point existe à priori sur tous les noeuds mais il est
inutile de le définir partout où il vaut zéro. Ainsi le choix 
informatique fait consiste à ne spécifier dans un champoint que les
noeuds directement concernés, de plus on réalise une partition des
noeuds par les inconnues qu'il supporte. Pour un type de noeuds les
informations conservées sont le noms des composantes et leur numéro
d'harmonique(pour un calcul 2D-axis). On regroupe donc dans un segment
ces deux informations avec un pointeur sur l'objet maillage contenant
la liste des noeuds concernés(éléments POI1 à 1 noeud par élément) 
ainsi qu'un pointeur sur un segment
contenant le tableau des valeurs. Comme une partition est réalisée il
faut, au dessus du segment, un chapeau contenant la liste des
partitions et quelques informations générales : la nature du champ, le
titre du champ, le mode de calcul dans lequel le champ a été crée, et
un type (qui n'est pas vraiment utilisé).

Le champoint est un peu lourd à utiliser du fait de la partition
réalisée, il peut etre intéressant de le mettre sous la forme
informatique contenue dans le segment MTRAV et ensuite d'appeler le
sous-programme CRECHP pour réaliser la partition.

\subsection{liste des segments du CHPOINT}  
\begin{verbatim}
*            -INC SMCHPOI                                                       
*                                                                               
*     OBJET CHPOINT  : REPRESENTE UN CHAMP DISCRETISE PAR POINT                 
*                                                                               
      SEGMENT MCHPOI                                                            
       CHARACTER*8  MTYPOI                                                      
       CHARACTER*72 MOCHDE                                                      
       INTEGER      JATTRI(NAT)
       INTEGER      IPCHP(NSOUPO),IFOPOI                                        
      ENDSEGMENT                                                                
      POINTEUR MCHPO1.MCHPOI,MCHPO2.MCHPOI,MCHPO3.MCHPOI,MCHPO4.MCHPOI          
*                                                                               
      SEGMENT MSOUPO                                                            
       CHARACTER*4 NOCOMP(NC)                                                   
       INTEGER     IGEOC,IPOVAL                                                 
       INTEGER     NOHARM(NC)                                                   
      ENDSEGMENT                                                                
      POINTEUR MSOUP1.MSOUPO,MSOUP2.MSOUPO,MSOUP3.MSOUPO,                       
     #         MSOUP4.MSOUPO,MSOUP5.MSOUPO                                      
*                                                                               
      SEGMENT MPOVAL                                                            
       REAL*8 VPOCHA(N,NC)                                                      
      ENDSEGMENT                                                                
      POINTEUR MPOVA1.MPOVAL,MPOVA2.MPOVAL,MPOVA3.MPOVAL,                       
     #         MPOVA4.MPOVAL,MPOVA5.MPOVAL,MPOVA6.MPOVAL                        
*                                                                               
*     MSOUPO DECRIT UNE PARTITION DE LA GEOMETRIE                               
*                                                                               
*     MTYPOI : TYPE DU CHPOINT                                                  
*     MOCHDE : TITRE    
*     JATTRI : ATTRIBUT DE NATURE
*              JATTRI(1) NATURE DIFFUSE OU DISCRETE DU CHAMP
*                0: INDETERMINE  1: DIFFUS  2:DISCRET
*              JATTRI(2) LIBRE POUR L'INSTANT
*                0:               1:         2:                                                        
*     IPCHP  : POINTEURS SUR LES SEGMENTS MSOUPO                                
*     IFOPOI : CORRESPOND A L'OPTION IFOUR(VOIR CCOPTIO)                        
*     IGEOC  : POINTEUR SUR UN OBJET MELEME                                     
*     NOCOMP : NOMS DES COMPOSANTES DU CHAMP                                    
*     NOHARM : NUMERO DE L'HARMONIQUE CORRESPONDANT A LA COMPOSANTE             
*              NOCOMP ,SI IFOPOI=1                                              
*     IPOVAL : POINTEUR SUR LE SEGMENT MPOVAL                                   
*     VPOCHA(I,J) : VALEUR DU CHAMP IEME POINT,JIEME COMPOSANTE                 
*                                                                               
*   -END INCLUDE 
\end{verbatim}

\subsection{exemple d'utilisation du CHPOINT}

L'exemple traité n'a pas d'intéret si ce n'est de dérouler tous les
segments de l'objet. Soit un opérateur qui calcule la somme des 
composantes de nom UX des noeuds dont le numéro est  supérieur à 100. 

\begin{verbatim}

      SUBROUTINE SOMEXE
      IMPLICIT REAL*8 (A-H,O-Z)
-INC SMCHPOI
-INC CCOPTIO
-INC SMELEME
C les trois lignes précédentes veulent dire qu'il faut les remplacer
C par les segments représentant le CHPOINT  et le MAILLAGE(MELEME) et 
C par le common COPTIC

C lecture d'un objet champoint
      CALL LIROBJ('CHPOINT ',MCHPOI,1,IRETOU)
C la lecture est obligatoire, IERR du common COPTIC nous renseigne
C pour savoir si elle s'est bien passée.
      IF(IERR.NE.0) RETURN
      SEGACT MCHPOI
      XX = 0.D0
C boucle sur les sous zones
      DO 1 I=1,IPCHP(/1)
      MSOUPO=IPCHP(I)

C dans une zone, boucle sur le nom des composants
      DO 2 J=1,NOCOMP(/2)
      IF(NOCOMP(J).NE.'UX  ') GO TO 2
      MELEME = IGEOC
      SEGACT MELEME
      MPOVAL=IPOVAL
      SEGACT MPOVAL

C boucle sur le numéro des points
      DO 3 K=1,NUM(/2)
      IF(NUM(1,K).GT.100) XX = XX + VPOCHA(K,J)
  3   CONTINUE

C desactivation des segments
      SEGDES MELEME,MPOVAL
  2   CONTINUE
      SEGDES MSOUPO
  1   CONTINUE
      SEGDES MCHPOI

C ecriture du résultat dans la pile
      CALL ECRREE(XX)
      RETURN
      END                                                    
\end{verbatim}

\section{L'objet MMODEL ou modèle}

Cet objet supporte les informations qui permettent d'associer une
formulation à un maillage.

Par formulation, on sous-entend le type de calcul (thermique,
mécanique,..), le type de matériau (élastique,plastique,..), 
le type d'élément fini (coq4,cub8,..). Le modèle est en quelque sorte
la clef qui permet d'exploiter les champs par éléments, et il est
donc, la plupart du temps, associé au(x) champ(s) par élément dans les
données des opérateurs.

\subsection{Liste de l'objet MMODEL}
\begin{verbatim}
*    -INC SMMODEL                                                               
*                                                                               
*     OBJET DE TYPE "MODELE"                                                    
*                                                                               
      SEGMENT,MMODEL                                                            
         INTEGER KMODEL(N1)                                                     
      ENDSEGMENT                                                                
       POINTEUR MMODE1.MMODEL,MMODE2.MMODEL                                     
*                                                                               
      SEGMENT,IMODEL                                                            
         INTEGER IMAMOD,NEFMOD                                                  
         INTEGER INFMOD(MN3)                                                    
         CHARACTER*16 CONMOD                                                    
         CHARACTER*16 FORMOD(NFOR),MATMOD(NMAT)                                 
      ENDSEGMENT                                                                
       POINTEUR IMODE1.IMODEL,IMODE2.IMODEL                                     
*                                                                               
*     KMODEL : POINTEUR SUR DES OBJETS MODELES ELEMENTAIRES                     
*     IMAMOD : POINTEUR SUR UN OBJET MAILLAGE ELEMENTAIRE                       
*     NEFMOD : NUMERO DE L'ELEMENT FINI DANS NOMTP                              
*     INFMOD : INFORMATIONS VARIEES RELATIVES AU MODELE                         
*              ( VIDE PAR DEFAUT )                                              
*     INFMOD(1) : NOMBRE DE PTS D'INTEGRATION DANS L'EPAISSEUR
*
*     CONMOD : NOM DU CONSTITUANT (BLANC PAR DEFAUT )                           
*     FORMOD : SUITE DE MOTS DEFINISSANT LA FORMULATION                         
*              (EX: THERMIQUE , LIQUIDE + MECANIQUE, ...)                       
*     MATMOD : SUITE DE MOTS CARACTERISANT LE TYPE DE MATERIAU                  
*              (EX: ORTHOTROPE, PLASTIQUE PARFAIT, ...)
\end{verbatim}                         

\subsection{Remarques}

Dans de nombreux opérateurs, la donnée de base est le modèle. Par
exemple, dans la fabrication des matrices de rigidités élémentaires
obtenue par l'instruction :

\begin{verbatim}
        RIG1  = RIGI  MOD1  MAT1 ;
\end{verbatim}           

On cherche à fabriquer les matrices élémentaires associées à l'objet
modèle MOD1. MAT1 est alors un champ par élément de propriétés, qui
doit contenir les propriétés nécessaires pour l'opérateur RIGI, mais
qui peut en contenir beaucoup d'autres, y compris relatives à des
zones de maillage qui n'ont rien à voir avec celles sous-tendues par
MOD1.

De manière plus précise, l'objet MMODEL peut etre un ensemble de zones
élémentaires, caractérisées par un type d'élément fini unique. Dans ce
cas l'opérateur traite ces zones les unes après les autres et va
chercher pour chacune, dans MAT1, les informations dont il a besoin.

Chaque modèle élémentaire pointe sur un maillage (variable INAMOD).
Pour pouvoir utiliser simultanéement des modèles élémentaires
différents pointant sur le meme maillage, comme par exemple dans le
cas des coques multicouches, il est nécessaire de les différencier en
leur attribuant des noms de constituants (variable CONMOD).

Le tableau INFMOD permet, en cas de besoin, de rajouter des
informations nécessaires. Actuellement seul INFMOD(1) est utilisé et
contient le nombre de points d'intégration dans l'épaisseur, pour les
éléments de coques intégrés dans l'épaisseur.



\section{L'objet MCHAML ou champ par élément}

Cet objet supporte tous les champs qui sont définis sur les éléments.
Pour pouvoir etre correctement exploité, il faut souvent connaitre la
formulation de l'élément. Celle-ci est dans l'objet MODELE qui est à
fournir avec l'objet MCHAML dans la plupart des opérateurs.

Les champs supportés par le MCHAML ( prononcez chamélem) sont de 
types réels ou sont des pointeurs vers d'autres objets.

\subsection{Liste de l'objet MCHAML}

\begin{verbatim}
*     -INC SMCHAML                     
*                                                
*     OBJET DE TYPE "MCHAML" : CHAMP PAR ELEMENT             
*                                               
      SEGMENT,MCHELM                           
         CHARACTER*(L1) TITCHE            
         CHARACTER*16   CONCHE(N1)             
         INTEGER IMACHE(N1),ICHAML(N1)                  
         INTEGER INFCHE(N1,N3),IFOCHE            
      ENDSEGMENT                       
      POINTEUR MCHEL1.MCHELM,MCHEL2.MCHELM,MCHEL3.MCHELM           
      POINTEUR MCHEL4.MCHELM,MCHEL5.MCHELM,MCHEL6.MCHELM            
*                                                 
      SEGMENT,MCHAML              
         CHARACTER*8 NOMCHE(N2)           
         CHARACTER*16 TYPCHE(N2)          
         INTEGER IELVAL(N2)               
      ENDSEGMENT                                   
      POINTEUR MCHAM1.MCHAML,MCHAM2.MCHAML,MCHAM3.MCHAML      
      POINTEUR MCHAM4.MCHAML,MCHAM5.MCHAML,MCHAM6.MCHAML        
*                                   
      SEGMENT,MELVAL                              
         REAL*8 VELCHE(N1PTEL,N1EL)               
         INTEGER IELCHE(N2PTEL,N2EL)                 
      ENDSEGMENT                                      
      POINTEUR MELVA1.MELVAL,MELVA2.MELVAL,MELVA3.MELVAL   
      POINTEUR MELVA4.MELVAL,MELVA5.MELVAL,MELVA6.MELVAL    
*                                       
*     TITCHE   : TITRE DU CHAMELEM                         
*     CONCHE   : NOM DU CONSTITUANT ( BLANC PAR DEFAUT )  
*     IFOCHE   : CORRESPOND A L'OPTION IFOUR ( CF CCOPTIO )  
*     IMACHE   : POINTEURS SUR DES MAILLAGES ELEMENTAIRES  
*     ICHAML   : POINTEURS SUR DES SEGMENTS "MCHAML"             
*     INFCHE   : ENSEMBLE D'INFORMATIONS OU LES VALEURS PAR DEFAUT SONT 0
*     INFCHE(.,1)=0 POUR DES VALEURS INDEPENDANTES DU REPERE  
*                =1 POUR DES VALEURS DEFINIES DANS LES REPERES LOCAUX 
*                =2 POUR DES VALEURS DEFINIES DANS LE REPERE GLOBAL 
*     INFCHE(.,2)= LIBRE                              
*                  (  ANCIENNEMENT LE NUMERO DE LA COUCHE )  
*     INFCHE(.,3)= NUMERO DE L'HARMONIQUE DE FOURIER     
*     INFCHE(.,4)=0 POUR DES VALEURS DEFINIES AUX NOEUDS           
*                =POINTEUR SUR UN SMINTE POUR DES VALEURS DEFINIES AILLEU
*     INFCHE(.,5)=0 POUR DES CHAMPS DE DEFORMATIONS ET CONTRAINTES USUELS
*                =1 POUR DES CHAMPS DE DEFORMATIONS ET CONTRAINTES
*                   EN FORMULATION "MASSIF" POUR DES ELEMENTS DE COQUE OU
*                   DE POUTRE OU DE TUYAU                 
*     INFCHE(.,6):  LE SMINTE POINTE SUR UN SEGMENT D'INTEGRATION :
*                =1 AUX NOEUDS   
*                =2 AU CENTRE DE GRAVITE  
*                =3 AUX POINTS DE GAUSS POUR LA RIGIDITE 
*                =4 AUX POINTS DE GAUSS POUR LA MASSE
*                =5 AUX POINTS DE GAUSS POUR LES CONTRAINTES 
*                            
*     NOMCHE   : NOMS DES COMPOSANTES DU CHAMELEM   
*     TYPCHE   : TYPES DES COMPOSANTES DU CHAMELEM:  
*                - TYPCHE(..)='REAL*8' POUR DES COMPOSANTES REELLES,
*                - TYPCHE(..)='POINTEUR M...' POUR DES COMPOSANTES 
*                  NON SCALAIRES, DECRITES PAR UN SEGMENT DE NOM "M.."
*     IELVAL   : POINTEURS SUR DES SEGMENTS "MELVAL"
*                                             
*     VELCHE(N1PTEL,N1EL) : VALEUR D'UNE COMPOSANTE REELLE POUR LE 
*                           "N1PTEL"-EME NOEUD DU "N1EL"-EME ELEMENT.
*     IELCHE(N2PTEL,N2EL) : POINTEUR SUR UN SEGMENT REPRESENTANT UNE
*                           COMPOSANTE NON SCALAIRE POUR LE 
*                           "N2PTEL"-EME NOEUD DU "N2EL"-EME ELEMENT.
*                             
*     REMARQUES:                            
*                                              
*     - SEUL L'UN DES TABLEAUX "VELCHE" ET "IELCHE" EST UN TABLEAU NON
*       VIDE.                    
*                                          
*     - N.PTEL=N.EL=1  ("."= 1 OU 2)  IMPLIQUE CHAMP UNIFORME DANS LE
*       MAILLAGE.                           
*                                                        
*     - N.PTEL=1  ("."= 1 OU 2)  IMPLIQUE CHAMP CONSTANT PAR ELEMENT.
*                                   
*   ATTENTION :  PAR ZONE ELEMENTAIRE , ON ENTEND UNE ZONE POUR 
*                LAQUELLE ON A LES MEMES IMACHE, CONCHE, ET CERTAINS
*                INFCHE  
\end{verbatim}

\subsection{Remarques}

Pour mettre en relation une zone d'un objet MODELE avec une zone d'un
objet MCHAML on s'appuie sur la valeur des pointeurs du maillage
(IMACHE). Celui-ci est forcément un objet MAILLAGE élémentaire, c'est
à dire n'ayant qu'un type d'élément géométrique. Ce besoin de
concordance au niveau des pointeurs du maillage nous crée
régulièrement des soucis mais ...

Il existe des sous-programmes dont le but est de "mettre en face" les
zones élémentaires d'un objet MODELE et les zones élémentaires des
MCHAML. Le mieux est de s'inspirer d'un opérateur existant. Par
exemple le sous programme VMISES qui appele VMISPO calcule un chamelem
de Von Mises à partir d'un chamelem de contraintes, d'un MODELE et
d'un chamelem de caractéristiques géométriques si nécessaire.

                                                       

\section{L'objet TABLE}

Cet objet appartient au langage dans la mesure où
l'analyseur de syntaxe le traite de façon particulière. D'un autre
coté, il peut etre utilisé par le programmeur pour regrouper des
informations et joue ainsi le role de supplétif par rapport aux 
objets. 

\subsection{Segment associé à la table}

\begin{verbatim}

*        -INC SMTABLE          
*                                    
*     OBJET DE TYPE TABLE           
*                         
      SEGMENT MTABLE      
            INTEGER       MLOTAB       
            CHARACTER*(8) MTABTI(M),MTABTV(M)     
            REAL*8        RMTABI(M)      
            INTEGER       MTABII(M),MTABIV(M)
            REAL*8        RMTABV(M) 
      ENDSEGMENT     
      POINTEUR MTAB1.MTABLE,MTAB2.MTABLE,MTAB3.MTABLE
*             
*     MLOTAB     : LONGUEUR DE LA TABLE ( <> ALLOCATION ) 
*     MTABTI(I)  : TYPE DE L INDICE POINTANT SUR LE IEME ELEMENT
*                :  DE LA TABLE           
*     MTABTV(I)  : TYPE DE L'OBJET POINTE PAR LE IEME INDICE   
*     MTABII(I)  : VALEUR DE L'INDICE  (SI PAS REEL)      
*     RMTABI(I)  : VALEUR DE L'INDICE  (SI REEL)        
*     MTABIV(I)  : VALEUR DE L'OBJET   (SI PAS REEL)       
*     RMTABV(I)  : VALEUR DE L'OBJET   (SI REEL)            
*            
\end{verbatim}

Créer un segment ésope qui contient plusieurs type de variables
prend du temps, on dimensionne donc le segment table par M qui peut
etre supérieur au nombre réel d'objets contenus, pour l'instant,
dans la table. Bien que tous les types d'objets de Castem2000 aient une valeur
associée de type informatique "integer", l'efficacité du
traitement nous a conduit à mettre directement dans le segment la
valeur des objets "flottant". L'integer associé aux objets ayant un 
segment pour
support est la valeur du pointeur, pour les entiers
c'est directement leurs valeurs et pour les mots c'est la position de
la chaine dans un tableau de chaines géré par l'analyseur de syntaxe,
etc...

La mise d'un objet dans la table ou l'acquisition d'un objet d'une
table pose de légers problèmes qui résultent de la traduction en
valeur entière de certains objets.

Deux sous-programmes permettent le dialogue, le premier pour accéder à
un objet dans une table connaissant la valeur de l'indice et le second
pour positionner dans une table un objet et son indice.


\begin{verbatim}
      SUBROUTINE ACCTAB(MTABLE,TAPIND,IVALIN,XVALIN,CHARIN,LOGIN,IOBIN,
     $                         TYPOBJ,IVALRE,XVALRE,CHARRE,LOGRE,IOBRE)
C                                                                 
C  ****  DONNE ACCES A UN OBJET DANS UNE TABLE de POINTEUR MTABLE
C  ****  ET CONNAISSANT LE TYPE DE L'INDICE ( TAPIND )         
C  ****  ET LA VALEUR DE L'INDICE  QUI SERA DANS DIFFERENTS
C  ****  VARIABLES SUIVANT SON TYPE .        
C  ****  ENTIER dans IVALIN;FLOTTANT dans XVALIN;
C  ****  MOT dans CHARIN;LOGIQUE dans LOGIN;             
C  ****  AUTRE dans IOBIN                                       
C  ****  ON PEUT PRECISER LE TYPE D'OBJET ATTENDU DANS TYPOBJ CE  
C  ****  QUI PROVOQUE UN MESSAGE D'ERREUR S'IL N'EXISTE PAS
C  **** EN SORTIE : TYPOBJ TYPE DE L'OBJET AU CAS OU TYPOBJ ETAIT = ' '
C  ****             VALEUR DE L'OBJET DANS IVALRE SI ENTIER; XVALRE SI
C  ****             FLOTTANT; CHARRE SI MOT ( DE LA LONGUEUR DE LA 
C  ****             CHAINE ENVOYEE EN ARGUMENT);LOGRE SI LOGIQUE;  
C  ****             IOBRE POUR TOUT AUTRE TYPE   
C                                                 
\end{verbatim}

pour réaliser l'opération de mise dans la table il faut appeler le
sous programme ECCTAB.

\begin{verbatim}
      SUBROUTINE ECCTAB(MTABLE,TAPIND,IVALIN,XVALIN,CHARIN,LOGIN,IOBIN,
     $                         TAPOBJ,IVALRE,XVALRE,CHARRE,LOGRE,IOBRE)
C                                                                   
C  **** MET UN OBJET DANS UNE TABLE                                
C  **** TAPIND TYPE DE L'INDICE  CHARACTER*(*)                      
C  ****        PUIS LA VALEUR DE L'INDICE  IVALIN SI ENTIER       
C  ****                                    XVALIN SI FLOTTANT   
C  ****                                    CHARIN SI MOT  
C  ****                                    LOGIN SI LOGIQUE    
C  ****                                    IOBIN POUR TOUT AUTRE TYPE
C  **** TAPOBJ TYPE DE L'OBJET CHARACTER*(*)         
C  ****        PUIS LA VALEUR DE L'INDICE  IVALRE SI ENTIER 
C  ****                                    XVALRE SI FLOTTANT
C  ****                                    CHARRE SI MOT   
C  ****                                    LOGRE SI LOGIQUE  
C  ****                                    IOBRE POUR TOUT AUTRE TYPE
C  ****                                          
\end{verbatim}

\subsection{Remarques}

Si un message d'erreur est émis, la variable IERR du COMMON COPTIC
a une valeur différente de zéro.

L'objet TABLE est le seul objet qu'il est autorisé de modifier sans que
l'utilisateur ne l'ait demandé.
\newpage
\begin{center}
\vspace{7cm}
\LARGE                          ANNEXE \\
\vspace{1cm}
\Large                      LISTE DES OBJETS
\end{center}
\normalsize
\newpage
\begin{verbatim}                                            
*  -INC SMATTAC                                                                 
*                                                                               
*     OBJET DE TYPE 'ATTACHE '                                                  
      SEGMENT MATTAC                                                            
       INTEGER LISATT(N)                                                        
      ENDSEGMENT                                                                
       POINTEUR MATTA1.MATTAC,MATTA2.MATTAC                                     
*                                                                               
      SEGMENT MSOUMA                                                            
       CHARACTER*4 ITYATT                                                       
       INTEGER IPMATK(M),IATREL(N),IGEOCH,IPHYCH                                
      ENDSEGMENT                                                                
       POINTEUR MSOUM1.MSOUMA,MSOUM2.MSOUMA                                     
*                                                                               
      SEGMENT MJONCT                                                            
       CHARACTER*4 MJODDL,MJOTYP                                                
       INTEGER MJOPOI,ISTRJO(N),IPCHJO(N),IPOSJO(N)                             
      ENDSEGMENT                                                                
       POINTEUR MJONC1.MJONCT,MJONC2.MJONCT                                     
*                                                                               
      SEGMENT MGEOCH                                                            
       CHARACTER*4 MPOPRO(NP)                                                   
       INTEGER     INORCH(NI),IMAPRO(N1)                                        
       REAL*8      RJEUCH(NJ),TAIPRO(NT)                                        
      ENDSEGMENT                                                                
       POINTEUR MGEOC1.MGEOCH,MGEOC2.MGEOCH                                     
*                                                                               
      SEGMENT MPHYCH                                                            
       REAL*8 RAIPRO,AMOPRO(NA),FROPRO(NF)                                      
      ENDSEGMENT                                                                
       POINTEUR MPHYC1.MPHYCH,MPHYC2.MPHYCH                                     
*                                                                               
*     LISATT : POINTEURS SUR LES SEGMENTS MSOUMA                                
*     ITYATT : TYPE DE LA LIAISON:MECA,FLUI,CHOC                                
*     IGEOCH : POINTEUR SUR LE SEGMENT MGEOCH:CARACTERISTIQUES GEOMETRI         
*              QUES DU CHOC                                                     
*     IPHYCH : POINTEUR SUR LE SEGMENT MPHYCH:CARACTERISTIQUES PHYSIQUES        
*              DU CHOC                                                          
*     IPMATK : POINTEURS SUR DES OBJETS DE TYPE RIGIDITE                        
*     IATREL : POINTEURS SUR LES SEGMENTS MJONCT                                
*     MJOPOI : POINT ASSOCIE AU MJONCT                                          
*     MJODDL : =LX (RESP.FLX) SI MJONCT LIBRE (RESP.BLOQUE)                     
*     MJOTYP : RAPPEL DE ITYATT=TYPE DE LA LIAISON.                             
*     ISTRJO : POINTEURS SUR LES MSOSTU D UN OBJET STRUCTURE                    
*     IPCHJO : POINTEURS SUR OBJETS DE TYPE CHPOINT                             
*     IPOSJO : POINTEURS SUR OBJETS DE TYPE MELEME (CENTRE DU PROFIL)           
*     INORCH : POINTEURS SUR OBJETS DE TYPE POINT DEFINISSANT LE REPERE         
*              DU PLAN DE CHOC                                                  
*     RJEUCH : FLOTTANT                                                         
*     IMAPRO : POINTEURS SUR OBJETS DE TYPE MELEME : PROFILS DE CHOC            
*     MPOPRO : MOTS:POSITION RELATIVE DES DEUX PROFILS                          
*     TAIPRO : FLOTTANTS:TAILLES DES PROFILS                                    
*     RAIPRO : FLOTTANT:RAIDEUR                                                 
*     AMOPRO : FLOTTANT:AMORTISSEMENT                                           
*     FROPRO : FLOTTANT:COEF DE FROTTEMENT                                      
*                                                                               
*  -ENDINCLUDE
\end{verbatim}
\newpage
\begin{verbatim}                                                                
C=======================================================================        
C     OBJET DE TYPE 'BASEMODA'                                                  
      SEGMENT MBASEM                                                            
        INTEGER LISBAS(N)                                                       
      ENDSEGMENT                                                                
      POINTEUR MBASE1.MBASEM,MBASE2.MBASEM                                      
C                                                                               
      SEGMENT MSOBAS                                                            
        INTEGER IBSTRM(NIBST)                                                   
      ENDSEGMENT                                                                
      POINTEUR MSOBA1.MSOBAS,MSOBA2.MSOBAS                                      
C                                                                               
C     LISBAS(I) : POINTEUR SUR MSOBAS                                           
C     IBSTRM(1) : POINTEUR SUR OBJET STRUCTURE (SEGMENT MSOSTU)                 
C     IBSTRM(2) : POINTEUR SUR OBJET MSOLUT (LES MODES)                         
C     IBSTRM(3) : POINTEUR SUR OBJET MSOLUT (LES SOLUTIONS STATIQUES)           
C     IBSTRM(4) : POINTEUR SUR OBJET ATTACHE (LES LIAISONS)                     
C     IBSTRM(5) : POINTEUR SUR OBJET MSOLUT (LES PSEUDO MODES)                  
C                                                                               
C=======================================================================        
\end{verbatim}
\newpage
\begin{verbatim}                                                             
*
*     -INC SMCHAML                                                              
*                                                                               
*     OBJET DE TYPE "CHAMELEM" : CHAMP PAR ELEMENT                              
*                                                                               
      SEGMENT,MCHELM                                                            
         CHARACTER*(L1) TITCHE                                                  
         CHARACTER*16   CONCHE(N1)                                              
         INTEGER IMACHE(N1),ICHAML(N1)                                          
         INTEGER INFCHE(N1,N3),IFOCHE                                           
      ENDSEGMENT                                                                
      POINTEUR MCHEL1.MCHELM,MCHEL2.MCHELM,MCHEL3.MCHELM                        
      POINTEUR MCHEL4.MCHELM,MCHEL5.MCHELM,MCHEL6.MCHELM                        
*                                                                               
      SEGMENT,MCHAML                                                            
         CHARACTER*8 NOMCHE(N2)                                                 
         CHARACTER*16 TYPCHE(N2)                                                
         INTEGER IELVAL(N2)                                                     
      ENDSEGMENT                                                                
      POINTEUR MCHAM1.MCHAML,MCHAM2.MCHAML,MCHAM3.MCHAML                        
      POINTEUR MCHAM4.MCHAML,MCHAM5.MCHAML,MCHAM6.MCHAML                        
*                                                                               
      SEGMENT,MELVAL                                                            
         REAL*8 VELCHE(N1PTEL,N1EL)                                             
         INTEGER IELCHE(N2PTEL,N2EL)                                            
      ENDSEGMENT                                                                
      POINTEUR MELVA1.MELVAL,MELVA2.MELVAL,MELVA3.MELVAL                        
      POINTEUR MELVA4.MELVAL,MELVA5.MELVAL,MELVA6.MELVAL                        
*                                                                               
*     TITCHE   : TITRE DU CHAMELEM                                              
*     CONCHE   : NOM DU CONSTITUANT ( BLANC PAR DEFAUT )                        
*     IFOCHE   : CORRESPOND A L'OPTION IFOUR ( CF CCOPTIO )                     
*     IMACHE   : POINTEURS SUR DES MAILLAGES ELEMENTAIRES                       
*     ICHAML   : POINTEURS SUR DES SEGMENTS "MCHAML"                            
*     INFCHE   : ENSEMBLE D'INFORMATIONS OU LES VALEURS PAR DEFAUT SONT 0       
*     INFCHE(.,1)=0 POUR DES VALEURS INDEPENDANTES DU REPERE                    
*                =1 POUR DES VALEURS DEFINIES DANS LES REPERES LOCAUX           
*                =2 POUR DES VALEURS DEFINIES DANS LE REPERE GLOBAL             
*     INFCHE(.,2)= LIBRE                                                        
*                  (  ANCIENNEMENT LE NUMERO DE LA COUCHE )                     
*     INFCHE(.,3)= NUMERO DE L'HARMONIQUE DE FOURIER                            
*     INFCHE(.,4)=0 POUR DES VALEURS DEFINIES AUX NOEUDS                        
*                =POINTEUR SUR UN SMINTE POUR DES VALEURS DEFINIES AILLEU       
*     INFCHE(.,5)=0 POUR DES CHAMPS DE DEFORMATIONS ET CONTRAINTES USUELS       
*                =1 POUR DES CHAMPS DE DEFORMATIONS ET CONTRAINTES              
*                   EN FORMULATION "MASSIF" POUR DES ELEMENTS DE COQUE OU       
*                   DE POUTRE OU DE TUYAU                                       
*     INFCHE(.,6):  LE SMINTE POINTE SUR UN SEGMENT D'INTEGRATION :             
*                =1 AUX NOEUDS                                                  
*                =2 AU CENTRE DE GRAVITE                                        
*                =3 AUX POINTS DE GAUSS POUR LA RIGIDITE                        
*                =4 AUX POINTS DE GAUSS POUR LA MASSE                           
*                =5 AUX POINTS DE GAUSS POUR LES CONTRAINTES                    
*                                                                               
*     NOMCHE   : NOMS DES COMPOSANTES DU CHAMELEM                               
*     TYPCHE   : TYPES DES COMPOSANTES DU CHAMELEM:                             
*                - TYPCHE(..)='REAL*8' POUR DES COMPOSANTES REELLES,            
*                - TYPCHE(..)='POINTEUR M...' POUR DES COMPOSANTES              
*                  NON SCALAIRES, DECRITES PAR UN SEGMENT DE NOM "M..."         
*     IELVAL   : POINTEURS SUR DES SEGMENTS "MELVAL"                            
*                                                                               
*     VELCHE(N1PTEL,N1EL) : VALEUR D'UNE COMPOSANTE REELLE POUR LE              
*                           "N1PTEL"-EME NOEUD DU "N1EL"-EME ELEMENT.           
*     IELCHE(N2PTEL,N2EL) : POINTEUR SUR UN SEGMENT REPRESENTANT UNE            
*                           COMPOSANTE NON SCALAIRE POUR LE                     
*                           "N2PTEL"-EME NOEUD DU "N2EL"-EME ELEMENT.           
*                                                                               
*     REMARQUES:                                                                
*                                                                               
*     - SEUL L'UN DES TABLEAUX "VELCHE" ET "IELCHE" EST UN TABLEAU NON          
*       VIDE.                                                                   
*                                                                               
*     - N.PTEL=N.EL=1  ("."= 1 OU 2)  IMPLIQUE CHAMP UNIFORME DANS LE           
*       MAILLAGE.                                                               
*                                                                               
*     - N.PTEL=1  ("."= 1 OU 2)  IMPLIQUE CHAMP CONSTANT PAR ELEMENT.           
*                                                                               
*   ATTENTION :  PAR ZONE ELEMENTAIRE , ON ENTEND UNE ZONE POUR                 
*                LAQUELLE ON A LES MEMES IMACHE, CONCHE, ET CERTAINS            
*                INFCHE
\end{verbatim}
\newpage
\begin{verbatim}                                                           
* -INC SMCHARG                                                                  
*                                                                               
*                                                                               
*     OBJET DE TYPE 'CHARGEME'                                                  
      SEGMENT MCHARG                                                            
       INTEGER KCHARG(N)  
       CHARACTER*8 CHANAT(N)
       CHARACTER*4 CHANOM(N)                                                      
      ENDSEGMENT                                                                
       POINTEUR MCHAR1.MCHARG,MCHAR2.MCHARG                                     
*                                                                               
      SEGMENT ICHARG                                                            
       CHARACTER*8 CHATYP                                                   
       INTEGER ICHPO1,ICHPO2,ICHPO3                                             
      ENDSEGMENT                                                                
       POINTEUR ICHAR1.ICHARG,ICHAR2.ICHARG                                     
*                                                                               
*     KCHARG(I) : POINTEUR SUR LE SEGMENT ICHARG                                
*     CHANAT    : MOT INDIQUANT LA NATURE DU CHARGEMENT: FORCE OU DEPLA     
*     CHANOM    : MOT INDIQUANT LE NOM DU CHARGEMENT    
*     CHATYP    : TYPE DE L OBJET : CHPOINT MCHAML ou TABLE                                               
*     ICHPO1    : POINTEUR SUR L OBJET PRECEDEMMENT DEFINI                                                    
*     ICHPO2    : POINTEUR SUR UN OBJET LISTREEL: INSTANTS T ou TABLE                    
*     ICHPO3    : POINTEUR SUR UN OBJET LISTREEL: AMPLITUDES AU TEMPS T         
*
\end{verbatim}
\newpage
\begin{verbatim}                                                                                                                                             
*            -INC SMCHPOI                                                       
*                                                                               
*     OBJET CHPOINT  : REPRESENTE UN CHAMP DISCRETISE PAR POINT                 
*                                                                               
      SEGMENT MCHPOI                                                            
       CHARACTER*8  MTYPOI                                                      
       CHARACTER*72 MOCHDE                                                      
       INTEGER      JATTRI(NAT)
       INTEGER      IPCHP(NSOUPO),IFOPOI                                        
      ENDSEGMENT                                                                
      POINTEUR MCHPO1.MCHPOI,MCHPO2.MCHPOI,MCHPO3.MCHPOI,MCHPO4.MCHPOI          
*                                                                               
      SEGMENT MSOUPO                                                            
       CHARACTER*4 NOCOMP(NC)                                                   
       INTEGER     IGEOC,IPOVAL                                                 
       INTEGER     NOHARM(NC)                                                   
      ENDSEGMENT                                                                
      POINTEUR MSOUP1.MSOUPO,MSOUP2.MSOUPO,MSOUP3.MSOUPO,                       
     #         MSOUP4.MSOUPO,MSOUP5.MSOUPO                                                                                                                     
      SEGMENT MPOVAL                                                            
       REAL*8 VPOCHA(N,NC)                                                      
      ENDSEGMENT                                                                
      POINTEUR MPOVA1.MPOVAL,MPOVA2.MPOVAL,MPOVA3.MPOVAL,                       
     #         MPOVA4.MPOVAL,MPOVA5.MPOVAL,MPOVA6.MPOVAL                                                                                                       
*     MSOUPO DECRIT UNE PARTITION DE LA GEOMETRIE                                                                                                              
*     MTYPOI : TYPE DU CHPOINT                                                  
*     MOCHDE : TITRE    
*     JATTRI : ATTRIBUT DE NATURE
*              JATTRI(1) NATURE DIFFUSE OU DISCRETE DU CHAMP
*                0: INDETERMINE  1: DIFFUS  2:DISCRET
*              JATTRI(2) LIBRE POUR L'INSTANT
*                0:               1:         2:                                                        
*     IPCHP  : POINTEURS SUR LES SEGMENTS MSOUPO                                
*     IFOPOI : CORRESPOND A L'OPTION IFOUR(VOIR CCOPTIO)                        
*     IGEOC  : POINTEUR SUR UN OBJET MELEME                                     
*     NOCOMP : NOMS DES COMPOSANTES DU CHAMP                                    
*     NOHARM : NUMERO DE L'HARMONIQUE CORRESPONDANT A LA COMPOSANTE             
*              NOCOMP ,SI IFOPOI=1                                              
*     IPOVAL : POINTEUR SUR LE SEGMENT MPOVAL                                   
*     VPOCHA(I,J) : VALEUR DU CHAMP IEME POINT,JIEME COMPOSANTE                                                                                                
*   -END INCLUDE 
\end{verbatim}
\newpage
\begin{verbatim}                                                                 
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC        
C                                                                               
C     OBJET DE TYPE 'BLOQ''STRU'                                                
C                                                                               
      SEGMENT/MCLSTR/(ISOSTR(N),IRIGCL(N)),MCLST1.MCLSTR,MCLST2.MCLSTR          
C                                                                               
C     ISOSTR(N)   : POINTEUR SUR UN SEGMENT MSOSTU (SOUS-STRUCTURE)             
C     IRIGCL(N)   : POINTEUR SUR UN OBJET RIGIDITE (BLOCAGE)                    
C                                                                               
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC        
\end{verbatim}
\newpage
\begin{verbatim}  
*        -INC SMCOORD                                                           
*                                                                               
*      COORDONNEES DES POINTS ( POINTEUR DANS CCOPTIO )                         
*                                                                               
      SEGMENT              MCOORD                                               
      REAL*8               XCOOR((IDIM+1)*NBPTS)                                
      ENDSEGMENT                                                                
*                                                                               
*    LES COORDONNEES SE SUIVENT ET NE SE RESSEMBLENT PAS                        
*    LA DENSITE EST LA (IDIM+1) COORDONNEE                                      
*    D'OU                                                                       
*    X =XCOOR((IP-1)*(IDIM+1)    +1)                                            
*    Y =XCOOR((IP-1)*(IDIM+1)    +2)                                            
*    Z =XCOOR((IP-1)*(IDIM+1)    +3)     SI IL Y A LIEU                         
*                                                                               
*    D =XCOOR(IP*(IDIM+1))                IDIM EST DANS CCOPTIO                 
*                                                                               
*    POUR DES RAISONS D'USAGE IL EST DEMANDE A NOS UTILISATEURS DE              
*    NE JAMAIS DESACTIVE CE SEGMENT                                             
*
\end{verbatim}
\newpage
\begin{verbatim}                                                                                 
*    -INC SMDEFOR                                                               
*                                                                               
*     OBJET DEFORME  : DEFORMEE D'UNE STRUCTURE                                 
*                                                                               
      SEGMENT/MDEFOR/(AMPL(NDEF)*D,IELDEF(NDEF),ICHDEF(NDEF)                    
     # ,JCOUL(NDEF),MTVECT(NDEF)),MDEFO1.MDEFOR,MDEFO2.MDEFOR                   
*                                                                               
*     AMPL   : TABLEAU DES COEFF DES DEFORMES                                   
*     IELDEF : TABLEAU DES ELEMENTS DEFORMES                                    
*     ICHDEF : TABLEAU DES CHAMPS DE DEFORMATION                                
*     JCOUL  : TABLEAU DES COULEURS DES DEFORMES                                
*     MTVECT : POINTEUR SUR UN OBJET DE TYPE VECTEUR                            
* 
\end{verbatim}
\newpage
\begin{verbatim}                                                                                
*       -INC SMELEME                                                            
*                                                                               
*     L'OBJET  MAILLAGE  REPRESENTE UNE TOPOLOGIE                               
*                                                                               
      SEGMENT      MELEME                                                       
      INTEGER      ITYPEL                                                       
      INTEGER      NUM(NBNN,NBELEM)                                             
      INTEGER      LISOUS(NBSOUS),LISREF(NBREF)                                 
      INTEGER      ICOLOR(NBELEM)                                               
*     INTEGER      IGEOME(NBELEM)                                               
      ENDSEGMENT                                                                
      POINTEUR     IPT1.MELEME,IPT2.MELEME,IPT3.MELEME,IPT4.MELEME              
      POINTEUR     IPT5.MELEME,IPT6.MELEME,IPT7.MELEME,IPT8.MELEME              
      POINTEUR     IPT9.MELEME                                                  
*                                                                               
*     OBJET GEOMETRIQUE SIMPLE (UN SEUL TYPE D'ELEMENT)                         
*                                                                               
*     ITYPEL   : NUMERO DU TYPE D'ELEMENT (D'APRES ILCOUR DANS CCGEOME)         
*     NBSOUS   : 0 PAS DE SOUS-OBJETS                                           
*     NBREF    : NOMBRE DE REFERENCES ( COTES FACES ....                        
*     LISREF   : LISTE DES REFERENCES (POINTEURS SUR MELEME                     
*     NBNN     : NOMBRE DE POINTS DANS L'ELEMENT                                
*     NBELEM   : NOMBRE D ELEMENTS DANS LE MELEME                               
*     NUM(I,J) : NUMERO DU IEME NOEUD DU JIEME ELEMENT                          
*     ICOLOR   : COULEUR DE CHAQUE ELEMENT                                      
**    IGEOME   : POINTEUR SUR UNE GEOMETRIE SOUS-JACENTE A L'ELEMENT            
*                                                                               
*     OBJET GEOMETRIQUE COMPLEXE (PLUSIEURS TYPES D'ELEMENTS)                   
*                                                                               
*     ITYPEL   : PAS UTILISE                                                    
*     NBSOUS   : NOMBRE DE SOUS-OBJETS (OBJETS GEOMETRIQUES SIMPLES)            
*     LISOUS   : LISTE DES SOUS-OBJETS (POINTEURS SUR MELEME)                   
*     NBREF    : NOMBRE DE REFERENCES ( COTES FACES ....                        
*     LISREF   : LISTE DES REFERENCES (POINTEURS SUR MELEME                     
*     NBNN     : 0                                                              
*     NBELEM   : 0                                                              
*
\end{verbatim}
\newpage
\begin{verbatim}                                                                                 
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC        
C                                                                               
C     OBJET DE TYPE 'ELEM''STRU'                                                
C                                                                               
      SEGMENT/MELSTR/(ISOSTU(N),IMELEM(N)),MELST1.MELSTR,MELST2.MELSTR          
C                                                                               
C     IMELEM(N)   : POINTEUR SUR UN OBJET MELEME (GEOMETRIE)                    
C     ISOSTU(N)   : POINTEUR SUR UN SEGMENT MSOSTU (SOUS-STRUCTURE)             
C                                                                               
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC        
*
\end{verbatim}
\newpage
\begin{verbatim}                                                                                 
*  -INC SMEVOLL                                                                 
*                                                                               
      SEGMENT MEVOLL                                                            
       CHARACTER*8 ITYEVO                                                       
       CHARACTER*72 IEVTEX                                                      
       INTEGER IEVOLL(N)                                                        
      ENDSEGMENT                                                                
       POINTEUR MEVOL1.MEVOLL,MEVOL2.MEVOLL                                     
*                                                                               
      SEGMENT KEVOLL                                                            
       INTEGER IPROGX,IPROGY,NUMEVX                                             
       CHARACTER*4  NUMEVY                                                      
       CHARACTER*8  TYPX,TYPY                                                   
       CHARACTER*12 NOMEVX,NOMEVY                                               
       CHARACTER*72 KEVTEX                                                      
      ENDSEGMENT                                                                
       POINTEUR KEVOL1.KEVOLL,KEVOL2.KEVOLL                                     
*                                                                               
*  OBJET DE TYPE 'EVOLUTIO'                                                     
*  IEVOLL : POINTEUR SUR LE SEGMENT KEVOLL                                      
*  ITYEVO : SOUS-TYPE  REEL     , COMPLEXE  ( 2 COURBES ) ...                   
*  IEVTEX : TITRE DE L'ENSEMBLE DES COURBES                                     
*  IPROGX : POINTEUR SUR UN SEGMENT DE TYPE TIPX (ABSCISSES)                    
*                                                                         
*  IPROGY : POINTEUR SUR UN SEGMENT DE TYPE TYPY (ORDONNEES)                    
*                                                                         
*  NOMEVX : NOM AFFECTE AUX ABSCISSES                                           
*  NOMEVY : NOM AFFECTE AUX ORDONNEES                                           
*  NUMEVX : COULEUR DE LA COURBE                                                
*  NUMEVY : TYPE DE LA COURBE REEL MODU PHAS PREE PIMA ...                      
*  KEVTEX : TITRE DE LA COURBE                                                  
*
\end{verbatim}
\newpage
\begin{verbatim}                                                                                 
*                                                                               
*     DEFINITION DU TYPE 'LISTCHPO': SUITE D'OBJETS 'CHPOINT'.                  
*                                                                               
      SEGMENT,MLCHPO                                                            
         INTEGER ICHPOI(N1)                                                     
      ENDSEGMENT                                                                
      POINTEUR MLCHP1.MLCHPO, MLCHP2.MLCHPO, MLCHP3.MLCHPO                      
*                                                                               
*     "ICHPOI" CONTIENT DES POINTEURS SUR DES OBJETS 'CHPOINT'.                 
*                                                                               
*     ATTENTION:  CE TYPE NE DEFINIT PAS UN TYPE D'OBJET MAIS UN TYPE           
*                 DE "REGROUPEMENT HOMOGENE D'OBJETS".                          
*     CE QUI IMPLIQUE, EN PARTICULIER, QU'UNE INSTRUCTION DE LA FORME:          
*        AA*LISTCHPO = OPERATEUR BB*CHPOINT ... ;                               
*     DANS LAQUELLE "AA" VA ETRE COMPLETE AVEC "BB" N'AUTORISE PAS LA           
*     DESTRUCTION ULTERIEURE DE "BB", MEME SI "AA" EST SEUL MENTIONNE           
*     DANS LES INSTRUCTIONS SUIVANTES.                                          
*                                                                               
*=======================================================================        
\end{verbatim}
\newpage
\begin{verbatim}  
C=======================================================================        
C     OBJET DE TYPE 'LIST''ENTI'. DEFINIT UNE LISTE D'ENTIERS.                  
      SEGMENT/MLENTI/(LECT(JG)),MLENT1.MLENTI,MLENT2.MLENTI,                    
     1 MLENT3.MLENTI                                                            
C=======================================================================        
\end{verbatim}
\newpage
\begin{verbatim}  
*=======================================================================        
*                                                                               
*     OBJET DE TYPE 'LISTMOTS'. DEFINIT UNE LISTE DE MOTS.                      
*                                                                               
      SEGMENT MLMOTS                                                            
       CHARACTER*(JGN) MOTS(JGM)                                                
      ENDSEGMENT                                                                
      POINTEUR MLMOT1.MLMOTS,MLMOT2.MLMOTS,MLMOT3.MLMOTS                        
      POINTEUR MLMOT4.MLMOTS,MLMOT5.MLMOTS,MLMOT6.MLMOTS                        
*                                                                               
*=======================================================================        
\end{verbatim}
\newpage
\begin{verbatim}  
C=======================================================================        
C     OBJET DE TYPE 'LIST''REEL'. DEFINIT UNE LISTE DE REELS.                   
      SEGMENT/MLREEL/(PROG(JG)*D),MLREE1.MLREEL,MLREE2.MLREEL,                  
     1 MLREE3.MLREEL                                                            
C=======================================================================        
\end{verbatim}
\newpage
\begin{verbatim}  
C*******************************************************************            
*    -INC SMMODEL                                                               
*                                                                               
*     OBJET DE TYPE "MODELE"                                                    
*                                                                               
      SEGMENT,MMODEL                                                            
         INTEGER KMODEL(N1)                                                     
      ENDSEGMENT                                                                
       POINTEUR MMODE1.MMODEL,MMODE2.MMODEL                                     
*                                                                               
      SEGMENT,IMODEL                                                            
         INTEGER IMAMOD,NEFMOD                                                  
         INTEGER INFMOD(MN3)                                                    
         CHARACTER*16 CONMOD                                                    
         CHARACTER*16 FORMOD(NFOR),MATMOD(NMAT)                                 
      ENDSEGMENT                                                                
       POINTEUR IMODE1.IMODEL,IMODE2.IMODEL                                     
*                                                                               
*     KMODEL : POINTEUR SUR DES OBJETS MODELES ELEMENTAIRES                     
*     IMAMOD : POINTEUR SUR UN OBJET MAILLAGE ELEMENTAIRE                       
*     NEFMOD : NUMERO DE L'ELEMENT FINI DANS NOMTP                              
*     INFMOD : INFORMATIONS VARIEES RELATIVES AU MODELE                         
*              ( VIDE PAR DEFAUT )                                              
*     INFMOD(1) : NOMBRE DE PTS D'INTEGRATION DANS L'EPAISSEUR
*
*     CONMOD : NOM DU CONSTITUANT (BLANC PAR DEFAUT )                           
*     FORMOD : SUITE DE MOTS DEFINISSANT LA FORMULATION                         
*              (EX: THERMIQUE , LIQUIDE + MECANIQUE, ...)                       
*     MATMOD : SUITE DE MOTS CARACTERISANT LE TYPE DE MATERIAU                  
*              (EX: ORTHOTROPE, PLASTIQUE PARFAIT, ...)
\end{verbatim}
\newpage
\begin{verbatim}                           
* -INC SMNUAGE                                                                  
*                                                                               
*     OBJET DE TYPE 'NUAGE'                                                     
*                                                                               
      SEGMENT MNUAGE                                                                                                            
       CHARACTER*8 NUANOM(NVAR)
       CHARACTER*8 NUATYP(NVAR)
       INTEGER  NUAPOI(NVAR)
      ENDSEGMENT
      SEGMENT NUAVIN
       INTEGER NUAINT(NBCOUP)
      ENDSEGMENT
      SEGMENT NUAVFL
       REAL*8 NUAFLO(NBCOUP)
      ENDSEGMENT
      SEGMENT NUAVMO
       CHARACTER*8 NUAMOT(NBCOUP)                                                     
      ENDSEGMENT                   
      SEGMENT NUAVLO
        LOGICAL NUALOG(NBCOUP)                                                     
      ENDSEGMENT                                                                
       POINTEUR MNUAG1.MNUAGE,MNUAG2.MNUAGE,MNUAG3.MNUAGE
       POINTEUR NUAVI1.NUAVIN,NUAVI2.NUAVIN,NUAVI3.NUAVIN 
       POINTEUR NUAVF1.NUAVFL,NUAVF2.NUAVFL,NUAVF3.NUAVFL
       POINTEUR NUAVL1.NUAVLO,NUAVL2.NUAVLO,NUAVL3.NUAVLO
       POINTEUR NUAVM1.NUAVMO,NUAVM2.NUAVMO,NUAVM3.NUAVMO    
*                                                                                                                             
*     NVAR      : NOMBRE DE VARIABLES
*     NBCOUP    : NOMBRE DE POINTS
*     NUANOM    : TABLEAU DES NOMS DES VARIABLES
*     NUATYP    : TABLEAU DES TYPES DES VARIABLES
*     NUAPOI    : TABLEAU DE POINTEUR VERS NUAVIN OU NUAVFL OU NUAVMO 
*     NUAVAR    : TABLEAU DE POINTEURS SUR LES VARIABLES 
*     NUAFLO    : TABLEAU DES VALEURS SI FLOTTANT
*     NUAMOT    : TABLEAU DES VALEURS SI MOT
\end{verbatim}
\newpage
\begin{verbatim}                                       
*                                                                               
*         -INC SMRIGID
*
*      OBJET RIGIDITE
*
      SEGMENT   MRIGID
        CHARACTER*8       MTYMAT
        REAL*8            COERIG(NRIGEL)
        INTEGER           IRIGEL(NRIGE,NRIGEL)
        INTEGER           ICHOLE,IMGEO1,IMGEO2,IFORIG
        INTEGER           ISUPEQ
      ENDSEGMENT
      POINTEUR  RI1.MRIGID,RI2.MRIGID,RI3.MRIGID
      POINTEUR  RI4.MRIGID,RI5.MRIGID,RI6.MRIGID
*
      SEGMENT   XMATRI
        REAL*8            RE(NLIGRD,NLIGRP)
      ENDSEGMENT
      POINTEUR  XMATR1.XMATRI,XMATR2.XMATRI,XMATR3.XMATRI
      POINTEUR  XMATR4.XMATRI,XMATR5.XMATRI,XMATR6.XMATRI
*
      SEGMENT   IMATRI
        INTEGER             IMATTT(NELRIG)
      ENDSEGMENT
      POINTEUR  IMATR1.IMATRI,IMATR2.IMATRI,IMATR3.IMATRI
      POINTEUR  IMATR4.IMATRI,IMATR5.IMATRI,IMATR6.IMATRI
*
      SEGMENT   DESCR
        CHARACTER*4         LISINC(NLIGRP),LISDUA(NLIGRD)
        INTEGER             NOELEP(NLIGRP),NOELED(NLIGRD)
      ENDSEGMENT
      POINTEUR  DES1.DESCR
*
      SEGMENT   IMGEOD
        INTEGER             IMGEOR(NBGEOR)
      ENDSEGMENT
*   NRIGEL        : NOMBRE D'OBJET ELEMENTAIRE DE MRIGIDITE
*   NLIGRP        : NOMBRE D'INCONNUES PRIMALES D'UNE MATRICE
*                   ELEMENTAIRE.
*   NLIGRD        : NOMBRE D'INCONNUES DUALES D'UNE MATRICE
*                   ELEMENTAIRE.
*   COERIG(I)     : COEFFICIENT MULTIPLICATEUR
*   IRIGEL(1,I)   : POINTEUR SUR L'OBJET GEOMETRIE
*   IRIGEL(2,I)   : POINTEUR SUR UN OBJET GEOMETRIQUE (CAS FROTTEMENT)
*   IRIGEL(3,I)   : POINTEUR SUR LE SEGMENT DESCRIPTIF D'UNE
*                        MATRICE ELEMENTAIRE.(SEGMENT DESCR)
*   IRIGEL(4,I)   : POINTEUR SUR LE SEGMENT CONTENANT LES POINTEURS
*                        DES MATRICES DE MRIGIDITE DE CHAQUE ELEMENTS.
*                        (SEGMENT IMATRI)
*   IRIGEL(5,I)   : NUMERO DE L'HARMONIQUE DE FOURIER
*   IRIGEL(6,I)   : NATURE DE LA RELATION DEFINISSANT LA RIGIDITE
*                   0  EGALITE
*                  -1  INEGALITE INFERIEURE
*                  +1  INEGALITE SUPERIEURE
*   IRIGEL(7,1)   : 0   LA MATRICE EST SYMETRIQUE
*                 : 1   LA MATRICE EST ANTISYMETRIQUE
*                 : 2   LA MATRICE NE POSSEDE PAS DE SYMETRIES
*   RE(I,J )      : LISTE DE VALEURS DE LA MATRICE ELEMNTAIRE
*   IMATTT(I)=IPO : IPO EST LE POINTEUR SUR LE SEGMENT DE TYPE
*                        XMATRI CONTENANT LA MATRICE DE MRIGIDITE DU
*                        I EME ELEMENT DE L'OBJET MRIGIDITE CONSIDERE.
*   NOELEP(I)=J   : LA I EME INCONNUE PRIMAL DE LA MATRICE PORTE SUR
*                   LE J EME NOEUD DE L'ELEMENT.
*   LISINC(I)=INO : LA I EME INCONNUE PRIMAL DE LA MATRICE EST DE
*                   TYPE INO
*   NOELED(I)=J   : LA I EME INCONNUE DUALE  DE LA MATRICE PORTE SUR
*                   LE J EME NOEUD DE L'ELEMENT .
*   LISDUA(I)=INO : LA I EME INCONNUE DUALE DE LA MATRICE EST DE
*                   TYPE INO
*
*   MTYMAT         : TYPE DE LA MATRICE RIGIDITE OU MASSE
*
*   ICHOLE        : SI DIFFERENT DE ZERO EST EGAL AU POINTEUR
*                        SUR SEGMENT DE TYPE MMATRI(VOIR SMMATRI)
*                        CONTENANT LA MATRICE DEJA TRIANGULARISEE.
*   ISUPEQ        : POINTEUR EVENTUEL SUR UNE TABLE (UNILATERAL)
*   IMGEO1        : UNE RESOLUTION A DEJA EU LIEU.POINTEUR SUR
*                        SUR UN TABLEAU CONTENANT LES POINTEURS DES
*                        OBJETS GEOMETRIQUES CREES.(TABLEAU DANS IMGEOD)
*   IMGEO2        : POINTEUR SUR UN PROTOTYPE DU CHAMPOINT DUAL
*   IFORIG        : CORRESPOND A L'OPTION IFOUR (VOIR CCOPTIO)
*     LA MATRICE ELEMENTAIRE  EST ORGANISEE COMME BON VOUS SEMBLE ELLE
*     EST SEULEMENT TRIANGULAIRE INFERIEURE STOCKEE LIGNE PARLIGNE
*
\end{verbatim}
\newpage
\begin{verbatim}  
*  -INC SMSOLUT                                                                 
*                                                                               
*     OBJET DE TYPE'SOLUTION'                                                   
*                                                                               
      SEGMENT MSOLUT                                                            
       CHARACTER*8 ITYSOL                                                       
       INTEGER     MSOLIS(NIPO),MSOLIT(NIPO)                                    
      ENDSEGMENT                                                                
       POINTEUR MSO1.MSOLUT,MSO2.MSOLUT                                         
*                                                                               
      SEGMENT MMODE                                                             
       REAL*8      FMMODD(LVALM)                                                
       INTEGER     IMMODD(NIMOD)                                                
      ENDSEGMENT                                                                
       POINTEUR MMOD1.MMODE                                                     
*                                                                               
      SEGMENT MSOLRE                                                            
       REAL*8      SOLRE(N)                                                     
      ENDSEGMENT                                                                
       POINTEUR MSOLR1.MSOLRE,MSOLR2.MSOLRE                                     
*                                                                               
      SEGMENT MSOLEN                                                            
       INTEGER     ISOLEN(N)                                                    
      ENDSEGMENT                                                                
       POINTEUR MSOLE1.MSOLEN,MSOLE2.MSOLEN                                     
*                                                                               
*                                                                               
*   ITYSOL  :  SOUS TYPE DE L'OBJET SOLUTION                                    
*   MSOLIS(I) : POINTEUR SUR DIFFERENTS SEGMENTS (SUIVANT LA VALEUR             
*               DE ITYSOL ET CELLE DE I)                                        
*   MSOLIT(I) : DESIGNE LE TYPE DES OBJETS CONTENUS DANS LE MSOLEN              
*               DE POINTEUR MSOLIS(I).                                          
*               2 POUR LES CHPOINT , 5 POUR LES CHAMELEM ,                      
*              14 POUR LES MJONCT...                                            
*               LA CORRESPONDANCE TYPE DES OBJETS--NUMERO EST CONTENUE          
*               DANS LE SOUS PROGRAMME TYPFIL                                   
*                                                                               
*                                                                               
*   * I=1,4 :  ZONE COMMUNE A TOUS LES ITYSOL :                                 
*     ------------------------                                                  
*     3.  POINTEUR SUR UN MELEME                                 0              
*     4.  POINTEUR SUR MSOLEN (LISTE DE MMODE )                  0              
*                                                                               
*   * ITYSOL = MODE                                                             
*     -------------                                                             
*     5.  POINTEUR SUR MSOLEN (DEPLACEMENTS   )         MSOLIT = 2              
*     6.         ID.          (CONTRAINTES    )                  5              
*     7.         ID.          (VON MISES      )                  5              
*     8.         ID.          (VITESSES       )                  2              
*     9.         ID           (ACCELERATIONS  )                  2              
*                                                                               
*   * ITYSOL = SOLUSTAT OU PSEUMODE                                             
*     -----------------------------                                             
*     5.  POINTEUR SUR MSOLEN (DEPLACEMENTS   )          MSOLIT = 2             
*     6.         ID.          (CONTRAINTES    )                   5             
*     7.         ID.          (VON MISES      )                   5             
*     8.         ID.          (VITESSES       )                   2             
*     9.         ID.          (ACCELERATIONS  )                   2             
*     10.        ID.          (MJONCT         )                   14            
*                                                                               
*   * ITYSOL = DYNAMIQU                                                         
*     -----------------                                                         
*     1.  POINTEUR SUR MSOLRE (LISTE DES TEMPS)          MSOLIT = 0             
*     2.  POINTEUR SUR MSOLEN (LISTE DES PAS  )                   0             
*     5.         ID.          (DEPLACEMENT    )                   2             
*     6.         ID.          (CONTRAINTES    )                   5             
*     7.         ID.          (VONMISES       )                   5             
*     8.         ID.          (VITESSES       )                   2             
*     9.         ID.          (ACCELERATIONS  )                   2             
*     10.        ID.          (VARIABLES DE LIAISON)              2             
*     13.        ID.          (VARIABLES D'USURE)                 2             
*-----------------------------------------------------------------------        
\end{verbatim}
\newpage
\begin{verbatim}  
C=======================================================================        
C     OBJET DE TYPE 'STRU''CTUR'                                                
C                                                                               
      SEGMENT/MSTRUC/(LISTRU(N)),MSTRU1.MSTRUC,MSTRU2.MSTRUC                    
      SEGMENT/MSOSTU/(ITYSOU,ISRAID,ISMASS,ISCHAM(NS)),MSOST1.MSOSTU,MSOS       
     &T2.MSOSTU                                                                 
C                                                                               
C     LISTRU : POINTEURS SUR SEGMENT MSOSTU                                     
C     ITYSOU : TYPE DE LA STRUCTURE                                             
C     ISRAID : POINTEUR SUR UN OBJET DE TYPE RIGIDITE                           
C     ISMASS : POINTEUR SUR UN OBJET DE TYPE RIGIDITE ( MASSE )                 
C     ISCHAM(NS) : POINTEURS SUR LES NS CHAMELEM ASSOCIES A LA STRUCTURE        
C=======================================================================        
\end{verbatim}
\newpage
\begin{verbatim}  
C======================================================================         
C  OBJET DE TYPE      'SUPERELE'                                                
      SEGMENT ,MSUPER                                                           
           INTEGER MRIGTO,MSUPEL,MSURAI,MBLOQU,MSUMAS,MCROUT
      ENDSEGMENT                                                                
      POINTEUR MSUPE1.MSUPER                                                    
C                                                                               
C    MRIGTO : POINTEUR SUR UN OBJET RIGIDITE CONTENANT L'OBJET RIGIDITE         
C             LU ET LES BLOQUAGES SUPPLEMENTAIRES SUR LES NOEUDS MAITRES.        
C
C    MSUPEL : POINTEUR D'UN OBJET GEOM DONT LES ELEMENTS, DE TYPE POINT,        
C             REPRESENTENT LES NOEUDS MAITRES.                                   
C
C    MSURAI : POINTEUR SUR L'OBJET RIGIDITE EQUIVALLENTE.                       
C                                                                               
C    MBLOQU : PRECISE QUE LES N PREMIERS RIGIDITE DE MRIGTO SONT LES            
C             BLOQUAGES CREES POUR LE SUPER ELEMENT                             
C
C    MSUMAS : POINTEUR SUR LA MASSE EQUIVALLENTE                                
C                                                                               
C    MCROUT : POINTEUR SUR UN OBJET MATRICE CONTENANT LA DECOMPOSITION
C             DE CROUT MODIFIEE
\end{verbatim}
\newpage
\begin{verbatim}  
*        -INC SMTABLE                                                           
*                                                                               
*     OBJET DE TYPE TABLE                                                       
*                                                                               
      SEGMENT MTABLE                                                            
            INTEGER       MLOTAB                                                
            CHARACTER*(8) MTABTI(M),MTABTV(M)                                   
            REAL*8        RMTABI(M)                                             
            INTEGER       MTABII(M),MTABIV(M)                                   
            REAL*8        RMTABV(M)                                             
      ENDSEGMENT                                                                
      POINTEUR MTAB1.MTABLE,MTAB2.MTABLE,MTAB3.MTABLE                           
*                                                                               
*     MLOTAB     : LONGUEUR DE LA TABLE ( <> ALLOCATION )                       
*     MTABTI(I)  : TYPE DE L INDICE POINTANT SUR LE IEME ELEMENT DE LA          
*                :    TABLE                                                     
*     MTABTV(I)  : TYPE DE L'OBJET POINTE PAR LE IEME INDICE                    
*     MTABII(I)  : VALEUR DE L'INDICE  (SI PAS REEL)                            
*     RMTABI(I)  : VALEUR DE L'INDICE  (SI REEL)                                
*     MTABIV(I)  : VALEUR DE L'OBJET   (SI PAS REEL)                            
*     RMTABV(I)  : VALEUR DE L'OBJET   (SI REEL)                                
*
\end{verbatim}
\newpage
\begin{verbatim}                                                                                 
C=======================================================================        
C                                                                               
C    OBJET DE TYPE 'TEXT','E   '                                                
      SEGMENT , MTEXTE                                                          
        CHARACTER MTEXT*72                                                      
        INTEGER   NCART                                                         
        INTEGER   MTRADC                                                        
      ENDSEGMENT                                                                
        POINTEUR MTEXT1.MTEXTE , MTEXT2.MTEXTE                                  
      SEGMENT , MTRADU                                                          
        INTEGER  MTRAD(0)                                                       
      ENDSEGMENT                                                                
C                                                                               
C=======================================================================        
\end{verbatim}
\newpage
\begin{verbatim}  
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC        
C                                                                               
      SEGMENT/MVECTD/(VECTBB(INC)*D),MVECT1.MVECTD,MVECT2.MVECTD,               
     1 MVECT3.MVECTD                                                            
C                                                                               
C     OBJET DE TYPE 'VECT''DOUB'                                                
C     LISTE DE REELS DOUBLE PRECISION                                           
C                                                                               
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC        
\end{verbatim}
\newpage
\begin{verbatim}  
*          -INC SMVECTE                                                         
*                                                                               
*     OBJET DE TYPE VECTEUR                                                     
*                                                                               
      SEGMENT MVECTE                                                            
       CHARACTER*4 NOCOVE(NVEC,ID)                                              
       INTEGER IGEOV(NVEC),NOCOUL(NVEC),ICHPO(NVEC)                             
       REAL*8  AMPF(NVEC)                                                       
      ENDSEGMENT                                                                
       POINTEUR MVECT1.MVECTE,MVECT2.MVECTE,MVECT3.MVECT                        
*                                                                               
*     IGEOV :  POINTEUR SUR OBJET MELEME ( NON UTILISE)                         
*     AMPF  :  AMPLIFICATION                                                    
*     NOCOUL:  COULEUR                                                          
*     ICHPO :  TABLEAU DES CHAMPOINTS                                           
*     NOCOVE:  NOM DES COMPOSANTES                                              
*                                                                               
\end{verbatim}      
\end{document}
