Download domaxi.dgibi

Back to the list

* fichier :  domaxi.dgibi
************************************************************************
************************************************************************
**** Finite Volume, "Cell-Centred Formulation".                     ****
**** 'MODE' 'AXIS'                                                  ****
**** We check that 3D axis-symmetrical = 2D 'MODE' 'AXIS'           ****
**** Operateur  'DOMA'                                              ****
****                                                                ****
**** A. BECCANTINI, LTMF   FEBRUARY 2004                            ****
************************************************************************
************************************************************************
*
**** Compatibility check
*
 GRAPH = FAUX ;
*
**** Nothing from here
*
 'SI' FAUX ;
* 
**** Till here
*
 'FINSI' ;

*
* 1) Mesh with one element
* 
*****************************
**** SEG2 *******************
*****************************
*
 'OPTION' 'DIME' 2 'ELEM' 'TRI3' 'MODE' 'AXIS' ;
*
 P1 = 1.0 2.0 ;
 P2 = 3.11 4.15 ;
*
 MAIL = P1 'DROIT' 1 P2 ;
*
 MODM  = 'MODELISER' MAIL 'EULER' ;
 TABM  = 'DOMA' MODM 'VF' ;
 QMAIL = TABM . 'QUAF' ;
*
 CEN1 = 'POIN' 1 (TABM . 'CENTRE') ;
* XCEN = 'COORDONNEE' 1 CEN1 ;
* YCEN = 'COORDONNEE' 2 CEN1 ;
 XVOL = 'EXTRAIRE' (TABM . 'XXVOLUM') CEN1 'SCAL' ; 

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

* ANGLE in degrees 
 LISTTH = 'PROG' 20 10 5 2.5 1.25 ;
 LISTER = 'PROG' ;
 'REPETER' BLTH ('DIME' LISTTH) ;
    TH = ('EXTRAIRE' LISTTH &BLTH) ;
    LIG1 = MAIL 'TOURNER' (-0.5 * TH)
       (0.0 0.0 0.0) (0.0 1.0 0.0) ;
    LIG2 = MAIL 'TOURNER' (0.5 * TH)
       (0.0 0.0 0.0) (0.0 1.0 0.0) ;
    MAIL2 = 'REGLER' LIG1 1 LIG2 ;
    MODM2  = 'MODELISER' MAIL2 'EULER' ;
    TABM2  = 'DOMA' MODM2 'VF' ;
    QMAIL2 = TABM2 . 'QUAF' ;
    'SI' GRAPH ;
       'TRACER' (0.0 0.0 1.0)
           (MAIL2 'ET' MAIL 'ET' ((TABM . 'CENTRE') 'COUL' 'ROUG')
          'ET' ((TABM2 . 'CENTRE') 'COUL' 'VERT'))
          'TITR' '3D vs 2Daxi' ;
    'FINSI' ;
    CEN2 = 'POIN' 1 (TABM2 . 'CENTRE') ;
    VOL2 = 'EXTRAIRE' (TABM2 . 'XXVOLUM') CEN2 'SCAL' ;
    XVOL2 = VOL2 '/' ((TH '*' PI) '/' 180) ;
    ERRO = 'ABS' (XVOL2 '-' XVOL) ;
    ERRO = ERRO '/' XVOL ;
    LISTER = LISTER 'ET' ('PROG' ERRO) ;
 'FIN' BLTH ;
*
 'SI' (ERRO > 1.0D-4) ;
    'ERREUR' 'Probleme axi' ;
 'FINSI' ;

 'SI' GRAPH ;
    EVERR = 'EVOL' 'MANU' 'theta °' LISTTH 'Log10(err)'
      (('LOG' LISTER) '/' ('LOG' 10.)) ;
      'DESSIN' EVERR 'Error on volume' ;
 'FINSI' ;

*****************************
**** TRI3 *******************
*****************************

 'OPTION' 'DIME' 2 'ELEM' 'TRI3' 'MODE' 'AXIS' ;
*
 P1 = 1.0 2.0 ;
 P2 = 3.11 4.15 ;
 P3 = 2.0 6.0 ;
*
 MAIL = 'MANUEL' 'TRI3' P1 P2 P3 ;
*
 MODM  = 'MODELISER' MAIL 'EULER' ;
 TABM  = 'DOMA' MODM 'VF' ;
 QMAIL = TABM . 'QUAF' ;
*
 CEN1 = 'POIN' 1 (TABM . 'CENTRE') ;
* XCEN = 'COORDONNEE' 1 CEN1 ;
* YCEN = 'COORDONNEE' 2 CEN1 ;
 XVOL = 'EXTRAIRE' (TABM . 'XXVOLUM') CEN1 'SCAL' ; 

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

* ANGLE in degrees 
 LISTTH = 'PROG' 20 10 5 2.5 1.25 ;
 LISTER = 'PROG' ;
 LISTERS = 'PROG' ;
 LISTERM = 'PROG' ;
 'REPETER' BLTH ('DIME' LISTTH) ;
    TH = ('EXTRAIRE' LISTTH &BLTH) ;
    SUR1 = MAIL 'TOURNER' (-0.5 * TH)
       (0.0 0.0 0.0) (0.0 1.0 0.0) ;
    SUR2 = MAIL 'TOURNER' (0.5 * TH)
       (0.0 0.0 0.0) (0.0 1.0 0.0) ;
    MAIL2 = 'VOLU' SUR1 1 SUR2 ;
    MODM2  = 'MODELISER' MAIL2 'EULER' ;
    TABM2  = 'DOMA' MODM2 'VF' ;
    QMAIL2 = TABM2 . 'QUAF' ;
    'SI' GRAPH ;
       'TRACER' (0.0 0.0 1.0)
           (MAIL2 'ET' MAIL 'ET' ((TABM . 'CENTRE') 'COUL' 'ROUG')
          'ET' ((TABM2 . 'CENTRE') 'COUL' 'VERT'))
          'TITR' '3D vs 2Daxi: centers' ;
       'TRACER' (0.0 0.0 1.0)
           (MAIL2 'ET' MAIL 'ET' ((TABM . 'FACE') 'COUL' 'ROUG')
          'ET' ((TABM2 . 'FACE') 'COUL' 'VERT'))
          'TITR' '3D vs 2Daxi: faces' ;
    'FINSI' ;
*   Test on the center position
    CEN2 = 'POIN' 1 (TABM2 . 'CENTRE') ;
    VOL2 = 'EXTRAIRE' (TABM2 . 'XXVOLUM') CEN2 'SCAL' ;
    XVOL2 = VOL2 '/' ((TH '*' PI) '/' 180) ;
    ERRO = 'ABS' (XVOL2 '-' XVOL) ;
    ERRO = ERRO '/' XVOL ;
    LISTER = LISTER 'ET' ('PROG' ERRO) ;
*   Test on the face position
    'ELIMINATION' (TABM . 'FACE') 1.0D-1 (TABM2 . 'FACE') ;
    AA = 'REDU' (TABM2 . 'XXSURFAC') (TABM . 'FACE') ;
    AA = AA '/' ((TH '*' PI) '/' 180) ;
    ERROS = 'MAXIMUM' ((AA '-' (TABM . 'XXSURFAC')) '/'
       AA) 'ABS' ;
    LISTERS = LISTERS 'ET' ('PROG' ERROS) ;
*   Test on NORMAF
    AA = 'REDU' (TABM2 . 'XXNORMAF') (TABM . 'FACE') ;
    ERROMA = 'MAXIMUM' (AA '-' (TABM . 'XXNORMAF')) ;
    LISTERM = LISTERM 'ET' ('PROG' ERROMA) ;
 'FIN' BLTH ;
*
 'SI' (ERRO > 1.0D-4) ;
    'ERREUR' 'Probleme axi' ;
 'FINSI' ;
* 
 'SI' (ERROS > 1.0D-4) ;
    'ERREUR' 'Probleme axi' ;
 'FINSI' ;

 'SI' (ERROMA > 1.0D-4) ;
    'ERREUR' 'Probleme axi' ;
 'FINSI' ;

 'SI' GRAPH ;
    EVERR = 'EVOL' 'MANU' 'theta °' LISTTH 'Log10(err)'
      (('LOG' LISTER) '/' ('LOG' 10.)) ;
      'DESSIN' EVERR 'TITR' 'Error on volume' ;
    EVERR = 'EVOL' 'MANU' 'theta °' LISTTH 'Log10(err)'
      (('LOG' LISTERS) '/' ('LOG' 10.)) ;
      'DESSIN' EVERR 'TITR' 'Error on surfaces' ;
    EVERR = 'EVOL' 'MANU' 'theta °' LISTTH 'Log10(err)'
      (('LOG' LISTERM) '/' ('LOG' 10.)) ;
      'DESSIN' EVERR 'TITR' 'Error on normals' ;
 'FINSI' ;

*****************************
**** QUA4 *******************
*****************************

 'OPTION' 'DIME' 2 'ELEM' 'QUA4' ;
*
 P1 = 1.01 0.0 ;
 P2 = 2.01 0.0 ;
 P3 = 2.0 1.01 ;
 P4 = 1.0 1.0 ;
*
 MAIL = 'MANUEL' 'QUA4' P1 P2 P3 P4 ;
*
 'OPTION' 'MODE' 'PLAN' ;
 MODM  = 'MODELISER' MAIL 'EULER' ;
 TABM  = 'DOMA' MODM 'VF' ;
 XCEN0 = 'MAXIMUM' ('COORDONNEE' 1 (TABM . 'CENTRE')) ;
 YCEN0 = 'MAXIMUM' ('COORDONNEE' 2 (TABM . 'CENTRE')) ;
 SUR2D0 = 'MAXIMUM' (TABM . 'XXVOLUM') ;
*
 'OPTION' 'MODE' 'AXIS' ;
 MODM  = 'MODELISER' MAIL 'EULER' ;
 TABM  = 'DOMA' MODM 'VF' ;
 QMAIL = TABM . 'QUAF' ;
*
 XCEN2D = 'MAXIMUM' (TABM . 'XCEN2D') ;
 YCEN2D = 'MAXIMUM' (TABM . 'YCEN2D') ;
 ERRO = 'MAXIMUM' ('PROG' (XCEN2D '-' XCEN0) (YCEN2D '-' YCEN0))
    'ABS' ;
 'SI' (ERRO > 1.0D-8) ;
    'ERREUR' 'Probleme axi' ;
 'FINSI' ;
 SUR2D = 'MAXIMUM' (TABM . 'XXSUR2D') ;
 ERRO = 'ABS' (SUR2D '-' SUR2D0) ;
 'SI' (ERRO > 1.0D-8) ;
    'ERREUR' 'Probleme axi' ;
 'FINSI' ;
*
 CEN1 = 'POIN' 1 (TABM . 'CENTRE') ;
* XCEN = 'COORDONNEE' 1 CEN1 ;
* YCEN = 'COORDONNEE' 2 CEN1 ;
 XVOL = 'EXTRAIRE' (TABM . 'XXVOLUM') CEN1 'SCAL' ;

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

* ANGLE in degrees 
 LISTTH = 'PROG' 20 10 5 2.5 1.25 ;
 LISTER = 'PROG' ;
 LISTERS = 'PROG' ;
 LISTERM = 'PROG' ;
 'REPETER' BLTH ('DIME' LISTTH) ;
    TH = ('EXTRAIRE' LISTTH &BLTH) ;
    SUR1 = MAIL 'TOURNER' (-0.5 * TH)
       (0.0 0.0 0.0) (0.0 1.0 0.0) ;
    SUR2 = MAIL 'TOURNER' (0.5 * TH)
       (0.0 0.0 0.0) (0.0 1.0 0.0) ;
    MAIL2 = 'VOLU' SUR1 1 SUR2 ;
    MODM2  = 'MODELISER' MAIL2 'EULER' ;
    TABM2  = 'DOMA' MODM2 'VF' ;
    QMAIL2 = TABM2 . 'QUAF' ;
    'SI' GRAPH ;
       'TRACER' (0.0 0.0 1.0)
           (MAIL2 'ET' MAIL 'ET' ((TABM . 'CENTRE') 'COUL' 'ROUG')
          'ET' ((TABM2 . 'CENTRE') 'COUL' 'VERT'))
          'TITR' '3D vs 2Daxi' ;
    'FINSI' ;
*   Test on center position
    CEN2 = 'POIN' 1 (TABM2 . 'CENTRE') ;
    VOL2 = 'EXTRAIRE' (TABM2 . 'XXVOLUM') CEN2 'SCAL' ;
    XVOL2 = VOL2 '/' ((TH '*' PI) '/' 180) ;
    ERRO = 'ABS' (XVOL2 '-' XVOL) ;
    ERRO = ERRO '/' XVOL ;
    LISTER = LISTER 'ET' ('PROG' ERRO) ;
*   Test on the face position
    'ELIMINATION' (TABM . 'FACE') 1.0D-1 (TABM2 . 'FACE') ;
    AA = 'REDU' (TABM2 . 'XXSURFAC') (TABM . 'FACE') ;
    AA = AA '/' ((TH '*' PI) '/' 180) ;
    ERROS = 'MAXIMUM' ((AA '-' (TABM . 'XXSURFAC')) '/'
       AA) 'ABS' ;
    LISTERS = LISTERS 'ET' ('PROG' ERROS) ;
*   Test on NORMAF
    AA = 'REDU' (TABM2 . 'XXNORMAF') (TABM . 'FACE') ;
    ERROMA = 'MAXIMUM' (AA '-' (TABM . 'XXNORMAF')) ;
    LISTERM = LISTERM 'ET' ('PROG' ERROMA) ;
 'FIN' BLTH ;
*
 'SI' (ERRO > 1.0D-4) ;
    'ERREUR' 'Probleme axi' ;
 'FINSI' ;
* 
 'SI' (ERROS > 1.0D-4) ;
    'ERREUR' 'Probleme axi' ;
 'FINSI' ;

 'SI' (ERROMA > 1.0D-4) ;
    'ERREUR' 'Probleme axi' ;
 'FINSI' ;

 'SI' GRAPH ;
    EVERR = 'EVOL' 'MANU' 'theta °' LISTTH 'Log10(err)'
      (('LOG' LISTER) '/' ('LOG' 10.)) ;
      'DESSIN' EVERR 'TITR' 'Error on volume' ;
    EVERR = 'EVOL' 'MANU' 'theta °' LISTTH 'Log10(err)'
      (('LOG' LISTERS) '/' ('LOG' 10.)) ;
      'DESSIN' EVERR 'TITR' 'Error on surfaces' ;
    EVERR = 'EVOL' 'MANU' 'theta °' LISTTH 'Err'
      (LISTERM) ;
      'DESSIN' EVERR 'TITR' 'Error on normals' ;
 'FINSI' ; 
*
* 2) Mesh with more than one element
* 
*****************************
**** SEG2 *******************
*****************************
*
 'OPTION' 'DIME' 2 'ELEM' 'TRI3' 'MODE' 'AXIS' ;
*
 P1 = 1.0 2.0 ;
 P2 = 3.11 4.15 ;
 DX = 0.1 ;
*
 MAIL = P1 'DROIT' P2 'DINI' DX 'DFIN' DX ;
*
 MODM  = 'MODELISER' MAIL 'EULER' ;
 TABM  = 'DOMA' MODM 'VF' ;
 QMAIL = TABM . 'QUAF' ;
*
 'OPTION' 'DIME' 3 'ELEM' CUB8 ;

* ANGLE in degrees 
 TH = 1.25 ;
 LIG1 = MAIL 'TOURNER' (-0.5 * TH)
       (0.0 0.0 0.0) (0.0 1.0 0.0) ;
 LIG2 = MAIL 'TOURNER' (0.5 * TH)
       (0.0 0.0 0.0) (0.0 1.0 0.0) ;
 MAIL2 = 'REGLER' LIG1 1 LIG2 ;
 MODM2  = 'MODELISER' MAIL2 'EULER' ;
 TABM2  = 'DOMA' MODM2 'VF' ;
 'SI' GRAPH ;
    'TRACER' (0.0 0.0 1.0)
      (MAIL2 'ET' MAIL 'ET' ((TABM . 'CENTRE') 'COUL' 'ROUG')
      'ET' ((TABM2 . 'CENTRE') 'COUL' 'VERT'))
      'TITR' '3D vs 2Daxi' ;
 'FINSI' ;
 AA = (TABM . 'CENTRE') 'ET' (TABM2 . 'CENTRE') ;
 NBN1 = 'NBNO' AA ;
 'ELIMINATION' (TABM . 'CENTRE') (DX '/' 10) (TABM2 . 'CENTRE') ;
 NBN2 = 'NBNO' AA ;
 'SI' ((NBN1 '-' NBN2) 'NEG' ('NBNO' (TABM . 'CENTRE'))) ;
    'ERREUR' 'Probleme axi' ;
 'FINSI' ;
 XVOL = TABM . 'XXVOLUM' ;
 XVOL2 = TABM2 . 'XXVOLUM' '/' ((TH '*' PI) '/' 180) ;
 ERRO = 'MAXIMUM' ((XVOL '-' XVOL2) '/' XVOL) 'ABS' ;
 'SI' (ERRO > 1.0D-4) ;
    'ERREUR' 'Probleme axi' ;
 'FINSI' ;
 
*****************************
**** TRI3 *******************
*****************************
*
* Axi
*
 'OPTION' 'DIME' 2 'ELEM' 'TRI3' 'MODE' 'AXIS' ;
*
 P1 = 1.0 2.0 ;
 P2 = 3.11 4.15 ;
 P3 = 2.0 6.0 ;
*
 DX = 0.1 ;
*
 MAIL = 'SURFACE' ((P1 'DROIT' P2 'DINI' DX 'DFIN' DX)
   'ET' (P2 'DROIT' P3 'DINI' DX 'DFIN' DX)  'ET'
   (P3 'DROIT' P1 'DINI' DX 'DFIN' DX)) 'PLAN' ;
*
 MODM  = 'MODELISER' MAIL 'EULER' ;
 TABM  = 'DOMA' MODM 'VF' ;
 QMAIL = TABM . 'QUAF' ;
 MOD2 = 'MODELISER'  (TABM . 'MAILLAGE') 'THERMIQUE' ;
*
*
 'OPTION' 'DIME' 3 'ELEM' CUB8 ;

* ANGLE in degrees 
 TH = 1.25 ;
 MAI1 = MAIL 'TOURNER' (-0.5 * TH)
       (0.0 0.0 0.0) (0.0 1.0 0.0) ;
 MAI2 = MAIL 'TOURNER' (0.5 * TH)
       (0.0 0.0 0.0) (0.0 1.0 0.0) ;
 MAIL2 = 'VOLU' MAI1 1 MAI2 ;
 MODM2  = 'MODELISER' MAIL2 'EULER' ;
 TABM2  = 'DOMA' MODM2 'VF' ;
 'SI' GRAPH ;
    'TRACER' (0.0 0.0 1.0)
      (MAIL2 'ET' MAIL 'ET' ((TABM . 'CENTRE') 'COUL' 'ROUG')
      'ET' ((TABM2 . 'CENTRE') 'COUL' 'VERT'))
      'TITR' '3D vs 2Daxi' ;
 'FINSI' ;
 AA = (TABM . 'CENTRE') 'ET' (TABM2 . 'CENTRE') ;
 NBN1 = 'NBNO' AA ;
 'ELIMINATION' (TABM . 'CENTRE') (DX '/' 10) (TABM2 . 'CENTRE') ;
 NBN2 = 'NBNO' AA ;
 'SI' ((NBN1 '-' NBN2) 'NEG' ('NBNO' (TABM . 'CENTRE'))) ;
    'ERREUR' 'Probleme axi' ;
 'FINSI' ;
 XVOL = TABM . 'XXVOLUM' ;
 XVOL2 = TABM2 . 'XXVOLUM' '/' ((TH '*' PI) '/' 180) ;
 ERRO = 'MAXIMUM' ((XVOL '-' XVOL2) '/' XVOL) 'ABS' ;
 'SI' (ERRO > 1.0D-4) ;
    'ERREUR' 'Probleme axi' ;
 'FINSI' ;
*
**** Test of XXSUR2D
*    Last test to do
*    After that, the support of centres is deplaced
*
 'DEPLACER' 'TOUR' (TABM . 'CENTRE') (0.5 * TH)
       (0.0 0.0 0.0) (0.0 1.0 0.0) ;
 'ELIMINATION' (TABM2 . 'FACE') (DX '/' 10) (TABM . 'CENTRE')  ;
 aa = 'REDU' (TABM2 . 'XXSURFAC') (TABM . 'CENTRE')  ;
 ERRO = 'MAXIMUM' (aa '-' (TABM  . 'XXSUR2D')) ;
 'SI' (ERRO > 1.0D-8) ;
    'ERREUR' 'Probleme axi' ;
 'FINSI' ;

*****************************
**** QUA4 *******************
*****************************
*
* Axi
*
 'OPTION' 'DIME' 2 'ELEM' 'QUA4' 'MODE' 'AXIS' ;
*
 P1 = 1.0 0.0 ;
 P2 = 2.0 0.0 ;
 P3 = 2.0 1.0 ;
 P4 = 1.0 1.0 ;
*
 DX = 0.1 ;
*
 MAIL = 'SURFACE' ((P1 'DROIT' P2 'DINI' DX 'DFIN' DX)
   'ET' (P2 'DROIT' P3 'DINI' DX 'DFIN' DX)  'ET'
   (P3 'DROIT' P4 'DINI' DX 'DFIN' DX) 'ET'
   (P4 'DROIT' P1 'DINI' DX 'DFIN' DX)) 'PLAN' ;
*
 MODM  = 'MODELISER' MAIL 'EULER' ;
 TABM  = 'DOMA' MODM 'VF' ;
 QMAIL = TABM . 'QUAF' ;
 MOD2 = 'MODELISER'  (TABM . 'MAILLAGE') 'THERMIQUE' ;
*
*
 'OPTION' 'DIME' 3 'ELEM' CUB8 ;

* ANGLE in degrees 
 TH = 1.25 ;
 MAI1 = MAIL 'TOURNER' (-0.5 * TH)
       (0.0 0.0 0.0) (0.0 1.0 0.0) ;
 MAI2 = MAIL 'TOURNER' (0.5 * TH)
       (0.0 0.0 0.0) (0.0 1.0 0.0) ;
 MAIL2 = 'VOLU' MAI1 1 MAI2 ;
 MODM2  = 'MODELISER' MAIL2 'EULER' ;
 TABM2  = 'DOMA' MODM2 'VF' ;
 'SI' GRAPH ;
    'TRACER' (0.0 0.0 1.0)
      (MAIL2 'ET' MAIL 'ET' ((TABM . 'CENTRE') 'COUL' 'ROUG')
      'ET' ((TABM2 . 'CENTRE') 'COUL' 'VERT'))
      'TITR' '3D vs 2Daxi' ;
 'FINSI' ;
 AA = (TABM . 'CENTRE') 'ET' (TABM2 . 'CENTRE') ;
 NBN1 = 'NBNO' AA ;
 'ELIMINATION' (TABM . 'CENTRE') (DX '/' 10) (TABM2 . 'CENTRE') ;
 NBN2 = 'NBNO' AA ;
 'SI' ((NBN1 '-' NBN2) 'NEG' ('NBNO' (TABM . 'CENTRE'))) ;
    'ERREUR' 'Probleme axi' ;
 'FINSI' ;
 XVOL = TABM . 'XXVOLUM' ;
 XVOL2 = TABM2 . 'XXVOLUM' '/' ((TH '*' PI) '/' 180) ;
 ERRO = 'MAXIMUM' ((XVOL '-' XVOL2) '/' XVOL) 'ABS' ;
 'SI' (ERRO > 1.0D-4) ;
    'ERREUR' 'Probleme axi' ;
 'FINSI' ;
*
**** Test of XXSUR2D
*    Last test to do
*    After that, the support of centres is deplaced
*
 'DEPLACER' 'TOUR' (TABM . 'CENTRE') (0.5 * TH)
       (0.0 0.0 0.0) (0.0 1.0 0.0) ;
 'ELIMINATION' (TABM2 . 'FACE') (DX '/' 10) (TABM . 'CENTRE')  ;
 aa = 'REDU' (TABM2 . 'XXSURFAC') (TABM . 'CENTRE')  ;
 ERRO = 'MAXIMUM' (aa '-' (TABM  . 'XXSUR2D')) ;
 'SI' (ERRO > 1.0D-8) ;
    'ERREUR' 'Probleme axi' ;
 'FINSI' ;
 
*****************************
**** QUA4 and TRI3 **********
*****************************
*
* Axi
*
 'OPTION' 'DIME' 2 'ELEM' 'QUA4' 'MODE' 'AXIS' ;
*
 P1 = 1.0 1.0 ;
 P2 = 2.5 0.0 ;
 P3 = 2.0 1.0 ;
 P4 = 1.0 2.0 ;
*
 DX = 0.1 ;
*
 MAIL = 'SURFACE' ((P1 'DROIT' P2 'DINI' DX 'DFIN' DX)
   'ET' (P2 'DROIT' P3 'DINI' DX 'DFIN' DX)  'ET'
   (P3 'DROIT' P4 'DINI' DX 'DFIN' DX) 'ET'
   (P4 'DROIT' P1 'DINI' DX 'DFIN' DX)) 'PLAN' ;
 AA = MAIL 'ELEM' 'TYPE' ;
 'SI' (('DIME' AA) 'NEG' 2) ;
    'ERREUR' 21 ;
 'FINSI' ;
*
 MODM  = 'MODELISER' MAIL 'EULER' ;
 TABM  = 'DOMA' MODM 'VF' ;
 QMAIL = TABM . 'QUAF' ;
 MOD2 = 'MODELISER'  (TABM . 'MAILLAGE') 'THERMIQUE' ;
*
* FACE, FACEL and FACEP has the same order
*
 NN = 'NBEL' (TABM . 'FACEL') ;
 'REPETER' BL1 NN ;
    AA = (TABM . 'FACEL') 'ELEM' &BL1 ;
    BB = 'CHANGER' AA 'POI1' ;
    PF1 = 'POIN' 2 BB ;
    PF2 = 'POIN' 1 ((TABM . 'FACE') 'ELEM' &BL1) ;
    AA = (TABM . 'FACEP') 'ELEM' &BL1 ;
    BB = 'CHANGER' AA 'POI1' ;
    PF3 = 'POIN' 3 BB ;
    'SI' (PF1 'NEG' PF2)  ;
       'ERREUR' 'Probleme axi' ;
    'FINSI' ;
    'SI' (PF3 'NEG' PF2)  ;
       'ERREUR' 'Probleme axi' ;
    'FINSI' ;
 'FIN' BL1 ;
*
* SOMMET = 'CHANGER' (TABM . 'MAILLAGE') 'POI1' ; 
*
 SOMMET = 'CHANGER' (TABM . 'MAILLAGE') 'POI1' ;
 AA = 'DIFF' SOMMET (TABM . 'SOMMET') ;
 NN = 'NBEL' AA ;
 'SI' (NN 'NEG' 0) ;
   'ERREUR' 'Probleme axi' ;
 'FINSI' ;
*
**** Test of XXDIEMIN
*
 AA = 'ELEM' (TABM . 'ELTFA') 'TYPE' ;
 AAT = ((TABM . 'ELTFA') 'ELEM' ('EXTRAIRE' AA 1)) ;
 'REPETER' BLNEL ('NBEL' AAT) ;
    NEL = &BLNEL ;
    AA = 'ELEM' AAT NEL ;
    CC = 'POIN' NEL (TABM . 'CENTRE') ;
    'SI' GRAPH ;
       'TRACER' (AA 'ET' CC) 'TITR' 'Test on XXDIEMIN' ;
    'FINSI' ;
    AA = 'CHANGER' AA 'POI1' ;
    XC = 'COORDONNEE' 1 CC ;
    YC = 'COORDONNEE' 2 CC ;
    USDIE = 0.0 ;
    'REPETER' BL1 ('NBNO' AA) ;
      PP = 'POIN' &BL1 AA ;
      XP = 'COORDONNEE' 1 PP ;
      YP = 'COORDONNEE' 2 PP ;
      NORX = 'EXTRAIRE' (TABM . 'XXNORMAF') PP 'UX' ;
      NORY = 'EXTRAIRE' (TABM . 'XXNORMAF') PP 'UY' ;
      DIE = ((XP '-' XC) '*' NORX) '+' ((YP '-' YC) '*' NORY) ;
      DIE = 'ABS' DIE ;
      USDIE = 'MAXIMUM' ('PROG' USDIE (1. '/' DIE)) ;
    'FIN' BL1 ;
    DIEM = 2.0 '/' USDIE ;
    ERRO = 'ABS' (DIEM '-' ('EXTRAIRE' (TABM . 'XXDIEMIN') CC 'SCAL')) ;
    ERRO = ERRO '/' DIEM ;
*    
    'SI' (ERRO > 1.0D-6) ;
       'ERREUR' 'Probleme axi' ;
    'FINSI' ;
 'FIN' BLNEL ;
*    
 'OPTION' 'DIME' 3 'ELEM' CUB8 ;

* ANGLE in degrees 
 TH = 1.25 ;
 MAI1 = MAIL 'TOURNER' (-0.5 * TH)
       (0.0 0.0 0.0) (0.0 1.0 0.0) ;
 MAI2 = MAIL 'TOURNER' (0.5 * TH)
       (0.0 0.0 0.0) (0.0 1.0 0.0) ;
 MAIL2 = 'VOLU' MAI1 1 MAI2 ;
 MODM2  = 'MODELISER' MAIL2 'EULER' ;
 TABM2  = 'DOMA' MODM2 'VF' ;
 'SI' GRAPH ;
    'TRACER' (0.0 0.0 1.0)
      (MAIL2 'ET' MAIL 'ET' ((TABM . 'CENTRE') 'COUL' 'ROUG')
      'ET' ((TABM2 . 'CENTRE') 'COUL' 'VERT'))
      'TITR' '3D vs 2Daxi' ;
 'FINSI' ;
* Center of gravity has the same positions 
 AA = (TABM . 'CENTRE') 'ET' (TABM2 . 'CENTRE') ;
 NBN1 = 'NBNO' AA ;
 'ELIMINATION' (TABM . 'CENTRE') (DX '/' 10) (TABM2 . 'CENTRE') ;
 NBN2 = 'NBNO' AA ;
 'SI' ((NBN1 '-' NBN2) 'NEG' ('NBNO' (TABM . 'CENTRE'))) ;
    'ERREUR' 'Probleme axi' ;
 'FINSI' ;
 XVOL = TABM . 'XXVOLUM' ;
 XVOL2 = TABM2 . 'XXVOLUM' '/' ((TH '*' PI) '/' 180) ;
 ERRO = 'MAXIMUM' ((XVOL '-' XVOL2) '/' XVOL) 'ABS' ;
 'SI' (ERRO > 1.0D-4) ;
    'ERREUR' 'Probleme axi' ;
 'FINSI' ; 
* 
*   Test on XXSURFAC
*
 'ELIMINATION' (TABM . 'FACE') (DX '/' 10.) (TABM2 . 'FACE') ;
 AA = 'REDU' (TABM2 . 'XXSURFAC') (TABM . 'FACE') ;
 AA = AA '/' ((TH '*' PI) '/' 180) ;
 ERROS = 'MAXIMUM' ((AA '-' (TABM . 'XXSURFAC')) '/'
       AA) 'ABS' ;
 'SI' (ERROS > 1.0D-4) ;
    'ERREUR' 'Probleme axi' ;
 'FINSI' ;
* 
*   Test on XXNORMAF and MATROT
*
 AA = 'EXCO' (TABM . 'MATROT') ('MOTS' 'MX' 'MY') ('MOTS' 'UX' 'UY') ;
 ERRO = 'MAXIMUM' (AA '-' (TABM . 'XXNORMAF')) 'ABS' ;
 'SI' (ERRO > 1.0D-4) ;
    'ERREUR' 'Probleme axi' ;
 'FINSI' ;
 AA = 'PSCAL' (TABM . 'MATROT') (TABM . 'MATROT')
    ('MOTS' 'MX' 'MY') ('MOTS' 'RX' 'RY') ;
 ERRO = 'MAXIMUM' AA 'ABS' ;
 'SI' (ERRO > 1.0D-6) ;
    'ERREUR' 'Probleme axi' ;
 'FINSI' ;
 AA = 'PSCAL' (TABM . 'MATROT') (TABM . 'MATROT')
    ('MOTS' 'MX' 'MY') ('MOTS' 'MX' 'MY') ;
 ERRO = 'MAXIMUM' (AA '-' 1.0) 'ABS' ;
 'SI' (ERRO > 1.0D-6) ;
    'ERREUR' 'Probleme axi' ;
 'FINSI' ;
 AA = 'PSCAL' (TABM . 'MATROT') (TABM . 'MATROT')
    ('MOTS' 'RX' 'RY') ('MOTS' 'RX' 'RY') ;
 ERRO = 'MAXIMUM' (AA '-' 1.0) 'ABS' ;
 'SI' (ERRO > 1.0D-6) ;
    'ERREUR' 'Probleme axi' ;
 'FINSI' ;
*
**** Test graphique
*
 'SI' FAUX ;
    DIM = 'VALEUR' 'DIME' ;
    'OPTION' 'DIME' 2 ;
    'REPETER' BL1 ('NBEL' TABM . 'FACEL') ;
        AA = ((TABM . 'FACEL') 'ELEM' &BL1) 'COULEUR' 'ROUG' ;
        BB = ((TABM . 'FACEP') 'ELEM' &BL1) 'COULEUR' 'VERT' ;
        'TRACER' ((TABM . 'MAILLAGE') 'ET' AA) ;
        'LISTE' AA ;
        'TRACER' ((TABM . 'MAILLAGE') 'ET' BB) ;
        'LISTE' BB ;
     'FIN' BL1 ;
     'OPTION' 'DIME' DIM ;
 'FINSI' ;
*
**** Test of XXSUR2D
*    Last test to do
*    After that, the support of centres is deplaced
*
 'DEPLACER' 'TOUR' (TABM . 'CENTRE') (0.5 * TH)
       (0.0 0.0 0.0) (0.0 1.0 0.0) ;
 'ELIMINATION' (TABM2 . 'FACE') (DX '/' 10) (TABM . 'CENTRE')  ;
 aa = 'REDU' (TABM2 . 'XXSURFAC') (TABM . 'CENTRE')  ;
 ERRO = 'MAXIMUM' (aa '-' (TABM  . 'XXSUR2D')) ;
 'SI' (ERRO > 1.0D-8) ;
    'ERREUR' 'Probleme axi' ;
 'FINSI' ;

 'FIN' ;
  
 

© Cast3M 2003 - All rights reserved.
Disclaimer