* fichier :  elno.dgibi
*************************************************************
* TEST ELNO                                                 *
* On teste l'operateur 'ELNO' sur un champ lineaire         *
* Le maillage est fait de TRI3 'ET' QUA4                    *
*                                                           *   
* On teste l'operateur 'ELNO' dans le cas VF                *
*                                                           *   
* A. BECCANTINI TTMF    NOVEMBRE 1998                       *
*************************************************************
* Janvier 2004: ajoute d'un cas test VF 2D
* Janvier 2004: ajoute d'un cas test VF 3D
*

'OPTION'  'DIME' 2 ;
'OPTION'  'ELEM' 'QUA4' ;
'OPTION'  'ISOV' 'SULI' ;
'OPTION'  'ECHO' 0 ;
'OPTION'  'TRAC' 'X' ;

GRAPH = FAUX;

************ 
* MAILLAGE *
************

* r1 = rayon du demi-cercle obstacle
* r2 = rayon du demi-cercle obstacle + domaine interieur 
* r3 = rayon du demi-cercle obstacle + domaine interieur + Entree
* r4 = rayon de la ligne moyen
* coef1 = coefficient de l'ellipse

 raf = 25 ;
 coef1 = 1.8 ;
 NbCer = ( 2 '*' raf) '+' 1 ;
 NbDroi = ( 2 '*' raf) '+' 1 ;
 
 r1 = 1.0 ;
 r2 = 2.85 ;
 dx = (r2 '-' r1) '/' NbCer ;
 r3 = r2 '+' dx ;


 
* 0 < icel < 1

 icel = 0.1;
 r4 = r1 '+' ((r2 '-' r1) '*' icel) ;
 r40 = ( r2 '/' coef1) ;
 r5 =  r1 '+' ((r40 '-' r1) '*' icel) ;

 
 A0 =        0.0       0.0 ;
 A1 =        0.0        r1 ;
 A2 =        0.0        r2 ;
 A3 =        0.0        r3 ;
 A4 = (-1.0 '*' r2 '/' coef1)  0.0 ;
 A5 = (-1.0 '*' r3 '/' coef1)  0.0 ;
 A6 =        0.0   (-1.0 '*' r2) ;
 A7 =        0.0   (-1.0 '*' r3) ;  
 A8 =        0.0   (-1.0 '*' r1) ;
 A9 =    (-1.0 '*' r1)       0.0 ;
 A10 = 0.0  (-1.0 '*' r4) ;
 A11 = (-1.0 '*' r5 ) 0.0 ;
 A12 = 0.0  (1.0 '*' r4) ;
        
 
Lig1 = 'DROIT' NbDroi A1 A2 ;
Lig2 = 'CER3' NbCer A2 A4 A6 ;
Lig3 = 'DROIT' NbDroi A6 A8 ; 
Lig4 = 'CER3' NbCer A8 A9 A1 ;

Lig5 = 'DROIT' 1 A2 A3 ;
Lig6 = 'CER3' NbCer A3 A5 A7 ;
Lig7 = 'DROIT' 1 A7 A6 ;

*
**** Ligne pour evolution simmetrie
*
*
'OPTION' 'ELEM' 'TRI3' ;
Domint = 'DALLER' Lig1 Lig2 Lig3 Lig4 ;
'OPTION' 'ELEM' 'QUA4' ;
Entree = 'DALLER' Lig5 Lig6 Lig7 Lig2 'COULEUR' 'ROUGE' ;

'ELIMINATION' Entree Domint 1D-4 ;

Fr1 = Lig3 'TRANSLATION' 1 (dx 0.0) 'COULEUR' 'VERT' ;
Fr2 = Lig1 'TRANSLATION' 1 (dx 0.0) 'COULEUR' 'VERT' ;

Sortie = Fr1 'ET' Fr2 ;
'ELIMINATION' Sortie Domint 1D-4 ;

Front = Entree 'ET' Sortie ;
'ELIMINATION' Front 1D-4 ;

Domtot = Domint 'ET' Front ;
'ELIMINATION' Domtot 1D-4 ;


$DOMTOT = 'DOMA' DOMTOT ;
$DOMINT = 'DOMA' DOMINT 'INCL' $DOMTOT ;


*************************************************
***** TEST D'ELNO SUR UN CHAMP CONSTANTE  *******
*************************************************


TCHPOS = 'KCHT' $DOMTOT 'SCAL' 'SOMMET' 4.1 ;

TCHPOC = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' 4.1  ;

TCHPOS1 = 'ELNO' TCHPOC $DOMTOT ;

ERRO = TCHPOS1 '-' TCHPOS ;
ERRO = ('ABS' ERRO) '/' ('ABS' TCHPOS) ;

*
**** On test 'ELNO' sur le maillage interieur
*

TCHPOS1 = 'KCHT' $DOMTOT 'SCAL' 'SOMMET' TCHPOS1
          ('REDU' ('CONTOUR' DOMTOT) TCHPOS);
ERRO1 = TCHPOS1 '-' TCHPOS ;
ERRO1 = ('ABS' ERRO1) '/' ('ABS' TCHPOS) ;

'SI' GRAPH;
   'OPTION' 'ISOV' 'LIGN' ;
   NELE = 'NBEL' DOMTOT ;
   'TRACER' DOMTOT 'TITR' 'Maillage' ;
   'TRACER' DOMTOT TCHPOS ('CONTOUR' DOMTOT) 15
         'TITRE' ('CHAINE' 'CHAMP ORIGINAL, Nelem =' NELE) ;
   'TRACER' DOMTOT TCHPOS1 ('CONTOUR' DOMTOT) 15
   'TITRE' ('CHAINE' 'CHAMP ELNO, Nelem =' NELE) ;
   'TRACER' DOMTOT ERRO 15 ('CONTOUR' DOMTOT)
   'TITRE' ('CHAINE' 'Erreur, Nelem =' NELE) ;
   'TRACER' DOMTOT ERRO1 15 ('CONTOUR' DOMTOT) 'TITRE'
    ('CHAINE' 'Erreur sur le domaine interieur, Nelem=', NELE) ;
'FINSI' ;
 
'SI' (('MAXIMUM' ERRO ) '>' 1D-15);
    'MESSAGE' 'Erreur =' ('MAXIMUM' ERRO) ;
    'ERREUR' 5 ;
'FINSI' ;

'SI' (('MAXIMUM' ERRO1 'ABS' ) '>EG' 1D-15) ;
    'MESSAGE' 'Erreur =' ('MAXIMUM' ERRO1) ;
    'ERREUR' 5 ;
'FINSI' ;

*************************************************
***** TEST D'ELNO SUR UN CHAMP LINEAIRE   *******
*************************************************

XXS YYS = 'COORDONNEE' ( $DOMTOT . 'SOMMET' ) ;
TCHPOS =  (3 '*' XXS) '+' (4 '*' YYS) ;
tcel = 'MINIMUM' TCHPOS ;
TCHPOS = ((-1 '*' tcel) '+' 1) '+' TCHPOS ;
TCHPOS = 'KCHT' $DOMTOT 'SCAL' 'SOMMET' TCHPOS ;


XXC YYC = 'COORDONNEE' ( $DOMTOT . 'CENTRE' ) ;
TCHPOC = (3 '*' XXC) '+' (4 '*' YYC) ;
TCHPOC = ((-1 '*' tcel) '+' 1) '+' TCHPOC ;
TCHPOC = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' TCHPOC ;

TCHPOS1 = 'ELNO' TCHPOC $DOMTOT ;

ERRO = TCHPOS1 '-' TCHPOS ;
ERRO = ('ABS' ERRO) '/' ('ABS' TCHPOS) ;

*
**** On test 'ELNO' sur le maillage interieur
*

TCHPOS1 = 'KCHT' $DOMTOT 'SCAL' 'SOMMET' TCHPOS1
          ('REDU' ('CONTOUR' DOMTOT) TCHPOS);
ERRO1 = TCHPOS1 '-' TCHPOS ;
ERRO1 = ('ABS' ERRO1) '/' ('ABS' TCHPOS) ;

'SI' GRAPH;
   'OPTION' 'ISOV' 'LIGN' ;
   NELE = 'NBEL' DOMTOT ;
   'TRACER' DOMTOT 'TITR' 'Maillage' ;
   'TRACER' DOMTOT TCHPOS ('CONTOUR' DOMTOT) 15
         'TITRE' ('CHAINE' 'CHAMP ORIGINAL, Nelem =' NELE);
   'TRACER' DOMTOT TCHPOS1 ('CONTOUR' DOMTOT) 15
   'TITRE' ('CHAINE' 'CHAMP ELNO, Nelem =' NELE);
   'TRACER' DOMTOT ERRO 15 ('CONTOUR' DOMTOT)
   'TITRE' ('CHAINE' 'Erreur, Nelem =' NELE);
   'TRACER' DOMTOT ERRO1 15 ('CONTOUR' DOMTOT) 'TITRE'
    ('CHAINE' 'Erreur sur le domaine interieur, Nelem=', NELE);
'FINSI' ;
 
'SI' (('MAXIMUM' ERRO 'ABS' ) '>EG' 1D-1);
    'MESSAGE' 'Erreur =' ('MAXIMUM' ERRO);
    'ERREUR' 5;
'FINSI' ;

'SI' (('MAXIMUM' ERRO1 'ABS' ) '>EG' 5D-2);
    'MESSAGE' 'Erreur =' ('MAXIMUM' ERRO1);
    'ERREUR' 5;
'FINSI' ;

*************************************************
***** PRINCIPLE DE MAXIMUM - MINIMUM      *******
*************************************************

TCHPOC = 'BRUIT' 'BLAN' 'UNIF' 0.0D0 1.0D0 $DOMTOT . 'CENTRE' ;
TCHPOC = 'KCHT' $DOMTOT 'SCAL' 'CENTRE' TCHPOC ;
MAXC  = 'MAXIMUM' TCHPOC ;
MINC  = 'MINIMUM' TCHPOC ;

TCHPOS1 = 'ELNO' TCHPOC $DOMTOT ;
MAXS = 'MAXIMUM' TCHPOS1 ;
MINS = 'MINIMUM' TCHPOS1 ;

ERRO  = MAXC '-' MAXS ;
ERRO1 = MINS '-' MINC ;

'SI' ('OU' (ERRO < 0) (ERRO1 < 0));
   'MESSAGE' 'Violation principe MAX MIN' ;
'FINSI' ;

*
****** VF
*
*
TCHPOS = (3.0 '*' ('COORDONNEE' 1 ($DOMTOT . 'SOMMET')))
 '+' (2.0 '*' ('COORDONNEE' 2 ($DOMTOT . 'SOMMET'))) ;
* 
TCHPOC = (3.0 '*' ('COORDONNEE' 1 ($DOMTOT . 'CENTRE')))
 '+' (2.0 '*' ('COORDONNEE' 2 ($DOMTOT . 'CENTRE'))) ; 
*
GRADC = 'MANUEL' 'CHPO' ($DOMTOT . 'CENTRE') 2 'P1DX' 3.0
   'P1DY' 2.0 ;
ALLIMC = 'MANUEL' 'CHPO' ($DOMTOT . 'CENTRE') 1 'P1' 1.0 ;

TCHPOS1 = 'ELNO' 'VF' $DOMTOT TCHPOC GRADC ALLIMC ;

ERRO = 'MAXIMUM' (TCHPOS1 '-' TCHPOS) 'ABS' ;

'SI' (ERRO > 1.0D-14) ;
   'ERREUR' 'Probleme ELNO VF' ;
'FINSI' ;

* 3D VF

'OPTION' 'DIME' 3 'ELEM' 'CUB8' ;

 A1 = 0.0 0.0 0.0 ;
 A2 = 0.0 1.0 0.0 ;
 A3 = 1.0 0.0 0.0 ;
 A1A2A3 = A1 'DROIT' 3 A2 'DROIT' 4 A3 'DROIT' 2 A1 ;
 BAS1 = 'SURFACE' A1A2A3 'PLAN' ;
 BAS2 = BAS1 'PLUS' (1.0 1.0 1.0) ;
 DOMTOT = BAS1 'VOLUME' 4 BAS2 ;
 $DOMTOT = 'DOMA' DOMTOT ;

 TCHPOS = (3.0 '*' ('COORDONNEE' 1 ($DOMTOT . 'SOMMET')))
 '+' (2.0 '*' ('COORDONNEE' 2 ($DOMTOT . 'SOMMET')))
 '+' (5.0 '*' ('COORDONNEE' 3 ($DOMTOT . 'SOMMET'))) ;;
* 
 TCHPOC = (3.0 '*' ('COORDONNEE' 1 ($DOMTOT . 'CENTRE')))
 '+' (2.0 '*' ('COORDONNEE' 2 ($DOMTOT . 'CENTRE')))
 '+' (5.0 '*' ('COORDONNEE' 3 ($DOMTOT . 'CENTRE'))) ; 
*
 GRADC = 'MANUEL' 'CHPO' ($DOMTOT . 'CENTRE') 3 'P1DX' 3.0
   'P1DY' 2.0 'P1DZ' 5.0 ;
 ALLIMC = 'MANUEL' 'CHPO' ($DOMTOT . 'CENTRE') 1 'P1' 1.0 ;

 TCHPOS1 = 'ELNO' 'VF' $DOMTOT TCHPOC GRADC ALLIMC ;

 ERRO = 'MAXIMUM' (TCHPOS1 '-' TCHPOS) 'ABS' ;

 'SI' (ERRO > 1.0D-14) ;
     'ERREUR' 'Probleme ELNO VF' ;
 'FINSI' ;
  
 'FIN' ;
 

 

 

