$$$$ @VISOR
* @VISOR    PROCEDUR  GOUNAND   26/01/09    21:16:13     12442          
*-----------------------------------------------------------
******              PROCEDURE @VISOR                  ******
*-----------------------------------------------------------
*
*    CETTE PROCEDURE A ETE MISE GRACIEUSEMENT
*   A DISPOSITION DE LA COMMUNAUTE  CASTEM2000
* PAR  DELERUYELLE Fr.  (SOCOTEC-INDUSTRIE à l'IPSN/DES)
*
*-----------------------------------------------------------
*           VISUALISER L ORIENTATION DES ELEMENTS
*----------------------------------------------------------
'DEBP' @VISOR SU*'MAILLAGE' KA/'FLOTTANT' MACOUL/'MOT' ;
'SI' ('NON' ('EXISTE' MACOUL)) ; MACOUL = 'JAUN' ; 'FINSI' ;
'SI' ('NON' ('EXISTE' KA)) ; KA = 2. / 3. ; 'FINSI' ;
TLN = 'TABL' ;
 TLN. 'TRI3' = 'LECT' 1 2 3  ;
 TLN. 'QUA4' = TLN. 'TRI3'   ;
 TLN. 'TRI6' = 'LECT' 1 3 5  ;
 TLN. 'QUA8' = TLN. 'TRI6'   ;
VDI = 'VALE' DIME ;
LM = SU 'ELEM' 'TYPE' ;
KM = 0 ;
'REPE' BOUM ('DIME' LM) ;
KM = KM + 1 ;
MM = 'EXTR' LM KM ;
LI = SU 'ELEM' MM ;
MESS '*** visor *** Traitement de' ' ' ('NBEL' LI) ' ' MM ;

'SI' (('EGA' MM 'SEG2') 'OU' ('EGA' MM 'SEG3')) ;
* TRAITEMENT DES SEG2 ET SEG3
NEL = 'NBEL' LI ; KEL = 0 ;
'REPE' BOUEL NEL ;
 KEL = KEL + 1 ;
 E = LI 'ELEM' KEL ; P1 = E 'POIN' 'INIT' ; P2 = E 'POIN' 'FINA' ;
 G = 'BARY' E ; U = P2 'MOIN' P1 ; XL = 'NORM' U ; U = U * (1. / XL) ;
 'DEPL' G 'MOIN' (U * (KA * XL / 2.)) ;
 V = U * (KA * XL) ;
 'SI' ('EGA' ('TYPE' CHF) 'MOT     ') ;
 CHF = 'MANU' 'CHPO' G 3 'FX' ('COOR' 1 V) 'FY' ('COOR' 2 V)
                         'FZ' ('COOR' 3 V) 'NATURE' 'DIFFUS' ;
 'SINON' ;
 CHF = CHF 'ET'
     ('MANU' 'CHPO' G 3 'FX' ('COOR' 1 V) 'FY' ('COOR' 2 V)
                        'FZ' ('COOR' 3 V) 'NATURE' 'DIFFUS') ;
 'FINSI' ;
'FIN' BOUEL ;

'SINON' ;

'SI' (('EGA' MM 'TRI3') 'OU' ('EGA' MM 'TRI6') 'OU' ('EGA' MM 'QUA4')
 'OU' ('EGA' MM 'QUA8')) ;
* TRAITEMENT DES TRIA ET QUAD

'SI' (VDI 'EGA' 2) ;
** SURFACE EN 2D
NEL = 'NBEL' LI ; KEL = 0 ;
'REPE' BOUEL2 NEL ;
KEL = KEL + 1 ;
E = LI 'ELEM' KEL ; G = 'BARY' E ;
EP = 'CHAN' 'POI1' E ;
P1 = (EP 'ELEM' ('EXTR' TLN.MM 1)) 'POIN' 'INIT' ;
P2 = (EP 'ELEM' ('EXTR' TLN.MM 2)) 'POIN' 'INIT' ;
P3 = (EP 'ELEM' ('EXTR' TLN.MM 3)) 'POIN' 'INIT' ;
U12 = P2 'MOIN' P1 ;
U23 = P3 'MOIN' P2 ;
ZPV = (('COOR' 1 U12) * ('COOR' 2 U23)) -
      (('COOR' 2 U12) * ('COOR' 1 U23)) ;
XLL = 'ABS' ZPV ; ZV = ZPV * ((XLL ** -0.5) * KA) ;
'DEPL' G 'MOIN' (0. (ZV / 2.)) ;
'SI' ('EGA' ('TYPE' CHF) 'MOT     ') ;
 CHF = 'MANU' 'CHPO' G 3 'FX' 0. 'FY' ZV 'FZ' 0. 'NATURE' 'DIFFUS' ;
'SINON' ;
 CHF = CHF 'ET'
      ('MANU' 'CHPO' G 3 'FX' 0. 'FY' ZV 'FZ' 0. 'NATURE' 'DIFFUS') ;
'FINSI' ;
'FIN' BOUEL2 ;

'SINON' ;
** SURFACE EN 3D
NEL = 'NBEL' LI ; KEL = 0 ;
'REPE' BOUEL3 NEL ;
KEL = KEL + 1 ;
E = LI 'ELEM' KEL ; G = 'BARY' E ;
EP = 'CHAN' 'POI1' E ;
P1 = (EP 'ELEM' ('EXTR' TLN.MM 1)) 'POIN' 'INIT' ;
P2 = (EP 'ELEM' ('EXTR' TLN.MM 2)) 'POIN' 'INIT' ;
P3 = (EP 'ELEM' ('EXTR' TLN.MM 3)) 'POIN' 'INIT' ;
U12 = P2 'MOIN' P1 ;
U23 = P3 'MOIN' P2 ;
V = U12 'PVEC' U23 ; XLL = 'NORM' V ;
V = V * ((XLL ** -0.5) * KA) ;
'SI' ('EGA' ('TYPE' CHF) 'MOT     ') ;
 CHF = 'MANU' 'CHPO' G 3 'FX' ('COOR' 1 V) 'FY' ('COOR' 2 V)
                         'FZ' ('COOR' 3 V) 'NATURE' 'DIFFUS' ;
'SINON' ;
 CHF = CHF 'ET'
     ('MANU' 'CHPO' G 3 'FX' ('COOR' 1 V) 'FY' ('COOR' 2 V)
                        'FZ' ('COOR' 3 V) 'NATURE' 'DIFFUS') ;
'FINSI' ;
'FIN' BOUEL3 ;
'FINSI' ;

'SINON' ;
* ELEMENT PAS PREVU
 'MESS' 'On ne sait pas visualiser l orientation des ' MM ;
'FINSI' ;
'FINSI' ;
'FIN' BOUM ;

* VECTEUR
'SI' ('EGA' ('TYPE' CHF) 'CHPOINT ') ;
 'SI' (VDI 'EGA' 2) ;
   VCHF = 'VECT' CHF 1. 'FX' 'FY' MACOUL ;
 'SINON' ;
   VCHF = 'VECT' CHF 1. 'FX' 'FY' 'FZ' MACOUL ;
 'FINSI' ;
'FINSI' ;
'MENA' ;
'FINP' VCHF ;
 
