$$$$ CONTSEG3
* CONTSEG3  PROCEDUR  CHAT      98/11/20    21:16:50     3371           
'DEBPROC' CONTSEG3 L1*'MAILLAGE' L2*'MAILLAGE';
aa = 'VALEUR' 'MODE';
typ_elem = 'VALE' 'ELEM';
'SI' ( 'EGA' aa 'TRID');
 'MESS' ' This procedur does not work in 3.D analysis';
 'QUITTER' CONTSEG3;
'FINSI';
MX = 'MOT' 'UX';
MY = 'MOT' 'UY';
'SI' ( 'EGA'  aa 'AXIS');
       MX= 'MOT' 'UR' ;
       MY= 'MOT' 'UZ';
 'FINSI';
'SI' ( 'EGA'  aa 'FOUR');
       MX= 'MOT' 'UR' ;
       MY= 'MOT' 'UZ';
 'FINSI';
* Cette procédure permet d'adapter un maillage dont les lignes L1 et L2 à
* mettre en contact sont formées d'éléments SEG3, à l'utilisation de
* l'opérateur IMPO.
* En entrée : deux lignes de contact SEG3 issues du maillage
* En sortie : une rigidité à ajouter aux conditions aux limites (on impose
*  un déplacement du noeud milieu de chaque élément de la ligne de contact
*  égal à la moyenne des déplacements des deux noeuds coins de cet élément)
*  et deux lignes de contact SEG2 à utiliser dans IMPO.
* Les deux lignes SEG3, comme dans le cas où IMPO est utilisé sans la présente
* procédure, doivent être orientées en sens opposés.

* Première ligne de contact

EL1= L1 'ELEM' 1;
LP1= 'CHAN' EL1 'POI1';
N1= LP1 'POIN' 1; N2= LP1 'POIN' 2; N3= LP1 'POIN' 3;
RIGX1= 'RELA' 1 MX N1 - 2 MX N2 + 1 MX N3;
RIGY1= 'RELA' 1 MY N1 - 2 MY N2 + 1 MY N3;
'OPTI' 'ELEM' 'SEG2';
LIG1= N1 'DROI' 1 N3;

NBEL1= 'NBEL' L1;
'SI' ( NBEL1 > 1) ; 
'REPETER' BOU3 (NBEL1 - 1);
  EL1= L1 'ELEM' (&BOU3 + 1);
  LP1= 'CHAN' EL1 'POI1';
  N1= LP1 'POIN' 1; N2= LP1 'POIN' 2; N3= LP1 'POIN' 3;
  RIGX1= RIGX1 'ET' ('RELA' 1 MX N1 - 2 MX N2 + 1 MX N3);
  RIGY1= RIGY1 'ET' ('RELA' 1 MY N1 - 2 MY N2 + 1 MY N3);
  LIG1= LIG1 'ET' (N1 'DROI' 1 N3);
'FIN' BOU3;
'FINSI';

RIG1= RIGX1 'ET' RIGY1;

* Seconde ligne de contact

EL2= L2 'ELEM' 1;
LP2= 'CHAN' EL2 'POI1';
N1= LP2 'POIN' 1; N2= LP2 'POIN' 2; N3= LP2 'POIN' 3;
RIGX2= 'RELA' 1 MX N1 - 2 MX N2 + 1 MX N3;
RIGY2= 'RELA' 1 MY N1 - 2 MY N2 + 1 MY N3;
LIG2= N1 'DROI' 1 N3;

NBEL2= 'NBEL' L2;
'SI' (NBEL2  > 1);
'REPETER' BOU4 (NBEL2 - 1);
  EL2= L2 'ELEM' (&BOU4 + 1);
  LP2= 'CHAN' EL2 'POI1';
  N1= LP2 'POIN' 1; N2= LP2 'POIN' 2; N3= LP2 'POIN' 3;
  RIGX2= RIGX2 'ET' ('RELA' 1 MX N1 - 2 MX N2 + 1 MX N3);
  RIGY2= RIGY2 'ET' ('RELA' 1 MY N1 - 2 MY N2 + 1 MY N3);
  LIG2= LIG2 'ET' (N1 'DROI' 1 N3);
'FIN' BOU4;
'FINSI';
RIG2= RIGX2 'ET' RIGY2;
RIG12= RIG1 'ET' RIG2;
'OPTI' 'ELEM'  TYP_ELEM;

'FINPROC' RIG12 LIG1 LIG2;
 
 
