* fichier : domall.dgibi
*
**** Compatibility check
*
GRAPH = FAUX ;
* CHECKERR to see the error messages.
CHECKERR = FAUX ;
*
**** Nothing from here
*
'SI' FAUX ;
*
**** Till here
*
'FINSI' ;
*****************************
**** SEG3 in 2D *************
*****************************
'OPTION' 'DIME' 2 'ELEM' 'TRI3' ;
P1 = 1.11 0.0 ;
P2 = 1.0 1.13 ;
MAIL = P1 'DROIT' 5 P2 ;
*
*
MODM = 'MODELISER' MAIL 'EULER' ;
TABM = 'DOMA' MODM 'VF' ;
QMAIL = TABM . 'QUAF' ;
'SI' GRAPH ;
'TRACER' (MAIL 'ET' QMAIL) 'TITRE' 'QUAF' ;
'TRACER' ((tabm . 'MAILLAGE') et ((tabm . 'CENTRE') 'COUL' 'ROUGE'))
'TITRE' 'CENTRE et MAILLAGE';
'FINSI' ;
AA = 'DIFF' MAIL (TABM . 'MAILLAGE') ;
'SI' ('NEG' ('NBEL' AA) 0) ;
'MESSAGE' 'SEG3' ;
'ERREUR' 5 ;
'FINSI' ;
* Volume
VOL0 = 'PSCAL' (P2 'MOIN' P1) (P2 'MOIN' P1) ;
VOL0 = VOL0 '**' 0.5 ;
AA = 'MANUEL' 'CHPO' (TABM .'CENTRE') 1 'SCAL' 1.0 'NATU'
'DISCRETE' ;
VOL1 = 'XTY' (TABM . 'XXVOLUM') AA ('MOTS' 'SCAL')
('MOTS' 'SCAL') ;
ERRO = (VOL0 '-' VOL1) 'ABS' ;
'SI' (ERRO > 1.0D-6) ;
'MESSAGE' 'SEG3' ;
'ERREUR' 5 ;
'FINSI' ;
*****************************
**** SEG3 in 3D *************
*****************************
'SI' CHECKERR ;
'OPTION' 'DIME' 3 'ELEM' 'TRI3' ;
P1 = 0.0 0.0 0.0 ;
P2 = 1.0 0.0 0.0 ;
MAIL = P1 'DROIT' 1 P2 ;
*
*
* QMAIL1 = QMAIL 'PLUS' (0.0 0.0) ;
MODM = 'MODELISER' MAIL 'EULER' ;
TABM = 'DOMA' MODM 'VF' ;
'FINSI' ;
*****************************
**** TRI3 in 3D *************
*****************************
'OPTION' 'DIME' 3 'ELEM' 'TET4' ;
P1 = 0.0 0.0 0.0 ;
P2 = 1.0 0.0 0.0 ;
P3 = 1.11 1.13 0.0 ;
P4 = 0.0 1.0 0.0 ;
P1 P2 P3 P4 = P1 P2 P3 P4 'TOURNER' 15.0
(0.0 0.0 2.0) (1.1 1.1 2.0) ;
MAIL = 'DALL' (P1 'DROIT' 1 P2) (P2 'DROIT' 1 P3) (P3 'DROIT' 1 P4)
(P4 'DROIT' 1 P1) 'PLAN' ;
*
MODM = 'MODELISER' MAIL 'EULER' ;
TABM = 'DOMA' MODM 'VF' ;
QMAIL = TABM . 'QUAF' ;
*
'SI' GRAPH ;
'TRACER' (MAIL 'ET' QMAIL) 'TITRE' 'QUAF' ;
'TRACER' ((tabm . 'MAILLAGE') et ((tabm . 'CENTRE') 'COUL' 'ROUGE'))
'TITRE' 'CENTRE et MAILLAGE';
'FINSI' ;
*
AA = 'DIFF' MAIL (TABM . 'MAILLAGE') ;
'SI' ('NEG' ('NBEL' AA) 0) ;
'MESSAGE' 'TRI3' ;
'ERREUR' 5 ;
'FINSI' ;
* Volume
NN = 'NBEL' MAIL ;
'REPETER' BL1 NN ;
AA = 'MESURE' ('ELEM' &BL1 MAIL) ;
BB = 'EXTRAIRE' (TABM . 'XXVOLUM') 'SCAL'
('POIN' &BL1 (TABM . 'CENTRE')) ;
'LISTE' BB ;
ERRO = (AA '-' BB) 'ABS' ;
'SI' (ERRO > 1.0D-6) ;
'MESSAGE' 'TRI3' ;
'ERREUR' 5 ;
'FINSI' ;
'FIN' BL1 ;
*****************************
**** QUA4 in 3D *************
*****************************
'OPTION' 'DIME' 3 'ELEM' 'CUB8' ;
P1 = 0.0 0.0 0.0 ;
P2 = 1.0 0.0 0.0 ;
P3 = 1.11 1.13 0.0 ;
P4 = 0.0 1.0 0.0 ;
P1 P2 P3 P4 = P1 P2 P3 P4 'TOURNER' 15.0
(0.0 0.0 2.0) (1.1 1.1 2.0) ;
MAIL = 'DALL' (P1 'DROIT' 2 P2) (P2 'DROIT' 2 P3) (P3 'DROIT' 2 P4)
(P4 'DROIT' 2 P1) 'PLAN' ;
*
MODM = 'MODELISER' MAIL 'EULER' ;
TABM = 'DOMA' MODM 'VF' ;
QMAIL = TABM . 'QUAF' ;
'SI' GRAPH ;
'TRACER' (MAIL 'ET' QMAIL) 'TITRE' 'QUAF' ;
'TRACER' ((tabm . 'MAILLAGE') et ((tabm . 'CENTRE') 'COUL' 'ROUGE'))
'TITRE' 'CENTRE et MAILLAGE';
'FINSI' ;
*
AA = 'DIFF' MAIL (TABM . 'MAILLAGE') ;
'SI' ('NEG' ('NBEL' AA) 0) ;
'MESSAGE' 'QUA4' ;
'ERREUR' 5 ;
'FINSI' ;
* Volume
NN = 'NBEL' MAIL ;
'REPETER' BL1 NN ;
*
* NB If the elts are not in the same plane
* 'MESURE' gives not the same results
*
AA = 'MESURE' ('ELEM' &BL1 MAIL) ;
BB = 'EXTRAIRE' (TABM . 'XXVOLUM') 'SCAL'
('POIN' &BL1 (TABM . 'CENTRE')) ;
ERRO = (AA '-' BB) 'ABS' ;
'SI' (ERRO > 1.0D-6) ;
'MESSAGE' 'QUA4' ;
'ERREUR' 21 ;
'FINSI' ;
'FIN' BL1 ;
*****************************
**** TRI3 and QUA4 in 3D ***
*****************************
'OPTION' 'DIME' 3 'ELEM' 'TET4' ;
P1 = 0.0 0.0 0.0 ;
P2 = 1.0 0.0 0.0 ;
P3 = 1.11 1.13 0.0 ;
P4 = 0.0 1.0 0.0 ;
P5 = 0.0 2.0 0.0 ;
P6 = 1.0 2.0 0.0 ;
MAIL1 = 'DALL' (P1 'DROIT' 2 P2) (P2 'DROIT' 2 P3) (P3 'DROIT' 2 P4)
(P4 'DROIT' 2 P1) 'PLAN' ;
'OPTION' 'ELEM' 'CUB8' ;
MAIL2 = 'SURF' ((P4 'DROIT' 3 P5) 'ET' (P5 'DROIT' 2 P6) 'ET'
(P6 'DROIT' 2 P3) 'ET' (P3 'DROIT' 2 P4)) 'PLAN' ;
MAIL = MAIL1 'ET' MAIL2 ;
'ELIMINATION' MAIL 0.0001 ;
*
MODM = 'MODELISER' MAIL 'EULER' ;
TABM = 'DOMA' MODM 'VF' ;
QMAIL = TABM . 'QUAF' ;
*
'SI' GRAPH ;
'TRACER' (MAIL 'ET' QMAIL) 'TITRE' 'QUAF' ;
'TRACER' ((tabm . 'MAILLAGE') et ((tabm . 'CENTRE') 'COUL' 'ROUGE'))
'TITRE' 'CENTRE et MAILLAGE';
'FINSI' ;
*
AA = 'DIFF' MAIL (TABM . 'MAILLAGE') ;
'SI' ('NEG' ('NBEL' AA) 0) ;
'MESSAGE' 'TRI3 et QUA4' ;
'ERREUR' 5 ;
'FINSI' ;
* Volume
MAIL = (TABM . 'MAILLAGE') ;
TYPEL = MAIL 'ELEM' 'TYPE' ;
NN0 = 'DIME' TYPEL ;
NNE=0 ;
'REPETER' BL0 NN0 ;
MAILA = MAIL 'ELEM' ('EXTRAIRE' TYPEL &BL0) ;
NN = 'NBEL' MAILA ;
'REPETER' BL1 NN ;
NNE = NNE '+' 1 ;
*
* NB If the elts are not on the same plane
* 'MESURE' gives not the same results
*
AA = 'MESURE' ('ELEM' &BL1 MAILA) ;
BB = 'EXTRAIRE' (TABM . 'XXVOLUM') 'SCAL'
('POIN' NNE (TABM . 'CENTRE')) ;
ERRO = (AA '-' BB) 'ABS' ;
'SI' (ERRO > 1.0D-6) ;
'MESSAGE' 'TRI3 et QUA4' ;
'ERREUR' 21 ;
'FINSI' ;
'FIN' BL1 ;
'FIN' BL0 ;
*****************************
**** TRI3 in 2D *************
*****************************
'OPTION' 'DIME' 2 'ELEM' 'TRI3' ;
P1 = 0.0 0.0 ;
P2 = 1.0 0.0 ;
P3 = 1.11 1.13 ;
P4 = 0.0 1.0 ;
MAIL = 'DALL' (P1 'DROIT' 1 P2) (P2 'DROIT' 1 P3) (P3 'DROIT' 1 P4)
(P4 'DROIT' 1 P1) 'PLAN' ;
*
MODM = 'MODELISER' MAIL 'EULER' ;
TABM = 'DOMA' MODM 'VF' ;
QMAIL = TABM . 'QUAF' ;
*
'SI' GRAPH ;
'TRACER' (MAIL 'ET' QMAIL) 'TITRE' 'QUAF' ;
'TRACER' ((tabm . 'MAILLAGE') et ((tabm . 'CENTRE') 'COUL' 'ROUGE'))
'TITRE' 'CENTRE et MAILLAGE';
VEC1 = 'VECTEUR' (TABM . 'XXNORMAF') 0.1 'UX' 'UY' 'ROUG' ;
'TRACER' MAIL VEC1 'TITRE' 'Normals' ;
'FINSI' ;
*
AA = 'DIFF' MAIL (TABM . 'MAILLAGE') ;
'SI' ('NEG' ('NBEL' AA) 0) ;
'MESSAGE' 'TRI3' ;
'ERREUR' 5 ;
'FINSI' ;
*****************************
**** QUA4 bizarre in 2D *****
*****************************
'SI' CHECKERR ;
* Center of gravity outside the domain
'OPTION' 'DIME' 2 'ELEM' 'QUA4' ;
P1 = 0.0 0.0 ;
P2 = 1.0 0.0 ;
P3 = 1.0 1.0 ;
P4 = 0.75 0.1 ;
MAIL = 'DALL' (P1 'DROIT' 1 P2) (P2 'DROIT' 1 P3) (P3 'DROIT' 1 P4)
(P4 'DROIT' 1 P1) 'PLAN' ;
*
MODM = 'MODELISER' MAIL 'EULER' ;
TABM = 'DOMA' MODM 'VF' ;
'FINSI' ;
*
* Element with singular Jacobian allowed since
* the center of gravity is inside of the elements
* Clockwise orientation of the noeuds.
*
'OPTION' 'DIME' 2 'ELEM' 'QUA4' ;
P1 = 1.0 1.0 ;
P2 = 1.0 0.0 ;
P3 = 0.0 0.0 ;
P4 = 0.5 0.35 ;
MAIL = 'MANUEL' 'QUA4' P1 P2 P3 P4 ;
*
MODM = 'MODELISER' MAIL 'EULER' ;
TABM = 'DOMA' MODM 'VF' ;
QMAIL = TABM . 'QUAF' ;
'SI' GRAPH ;
'TRACER' (MAIL 'ET' QMAIL) 'TITRE' 'QUAF' ;
'TRACER' ((tabm . 'MAILLAGE') et
((tabm . 'CENTRE') 'COUL' 'ROUGE'))
'TITRE' 'CENTRE et MAILLAGE';
VEC1 = 'VECTEUR' (TABM . 'XXNORMAF') 0.1 'UX' 'UY' 'ROUG' ;
'TRACER' MAIL VEC1 'TITRE' 'Normals' ;
'FINSI' ;
*
AA = 'DIFF' MAIL (TABM . 'MAILLAGE') ;
'SI' ('NEG' ('NBEL' AA) 0) ;
'MESSAGE' 'QUA4' ;
'ERREUR' 5 ;
'FINSI' ;
* Position of the center of gravity
VOL1 = 'MESURE' ('MANUEL' 'TRI3' P1 P2 P4) ;
VOL2 = 'MESURE' ('MANUEL' 'TRI3' P2 P3 P4) ;
PCEN1 = (P1 'PLUS' P2 'PLUS' P4) '/' 3. ;
PCEN2 = (P2 'PLUS' P3 'PLUS' P4) '/' 3. ;
PCEN = (VOL1 * PCEN1) 'PLUS' (VOL2 * PCEN2) ;
PCEN = PCEN '/' (VOL1 '+' VOL2) ;
'ELIMINATION' ((TABM . CENTRE) 'ET' PCEN) 0.001 ;
AA = 'DIFF' (TABM . CENTRE) ('MANUEL' 'POI1' PCEN) ;
'SI' ('NEG' ('NBEL' AA) 0) ;
'MESSAGE' 'QUA4' ;
'ERREUR' 5 ;
'FINSI' ;
* Volume
VOL = 'EXTRAIRE' (TABM . 'XXVOLUM') PCEN 'SCAL' ;
ERRO = (VOL '-' (VOL1 '+' VOL2)) 'ABS' ;
'SI' (ERRO > 1.0D-6) ;
'MESSAGE' 'TRI3 et QUA4' ;
'ERREUR' 21 ;
'FINSI' ;
* Normals
XP1 = 'COORDONNEE' 1 P1 ;
YP1 = 'COORDONNEE' 2 P1 ;
XP2 = 'COORDONNEE' 1 P2 ;
YP2 = 'COORDONNEE' 2 P2 ;
PCEN3 = (P1 'PLUS' P2) '/' 2 ;
'ELIMINATION' ((TABM . 'FACE') 'ET' PCEN3) 0.001 ;
VAL = (((XP1 '-' XP2) '**' 2) '+' ((YP2 '-' YP1) '**' 2)) '**' 0.5 ;
VALNOR1 = 'MANUEL' 'CHPO' ('MANUEL' 'POI1' PCEN3) 2 'UX'
((YP1 '-' YP2) '/' VAL) 'UY' ((XP2 '-' XP1) '/' VAL) ;
VALNOR2 = 'REDU' (TABM . 'XXNORMAF') ('MANUEL' 'POI1' PCEN3) ;
ERRO = 'MAXIMUM' (VALNOR1 '-' VALNOR2) 'ABS' ;
'SI' (ERRO > 1.0D-12) ;
'ERREUR' ('CHAIN' 'Problem ' ('VALEUR' 'ELEM')) ;
'FINSI' ;
*
* We check that the sum of (normals times surfaces) is zero
*
VALNOR = TABM . 'XXNORMAF' ;
VALSUR = TABM . 'XXSURFAC' ;
AA = VALNOR '*' VALSUR ;
BB = 'MANUEL' 'CHPO' (TABM . 'FACE') 1 'SCAL' 1.0 ;
ERRO = 'XTY' AA BB ('MOTS' 'UX' 'UY') ('MOTS' 'SCAL' 'SCAL') ;
'SI' (ERRO > 1.0D-12) ;
'ERREUR' ('CHAIN' 'Problem ' ('VALEUR' 'ELEM')) ;
'FINSI' ;
*
* We check that the normals modulus are 1
*
AA = 'PSCAL' VALNOR VALNOR ('MOTS' 'UX' 'UY') ('MOTS' 'UX' 'UY') ;
'SI' ((('MAXIMUM' AA) 'NEG' 1.0 1.0D-12) 'OU'
(('MINIMUM' AA) 'NEG' 1.0 1.0D-12)) ;
'ERREUR' ('CHAIN' 'Problem QUA4') ;
'FINSI' ;
*
* Matrot
*
AA = 'EXCO' (TABM . 'MATROT') ('MOTS' 'MX' 'MY')
('MOTS' 'UX' 'UY') ;
ERRO ='MAXIMUM' (AA '-' (TABM . 'XXNORMAF')) 'ABS' ;
'SI' (ERRO > 1.0D-12) ;
'ERREUR' ('CHAIN' 'Problem ' ('VALEUR' 'ELEM')) ;
'FINSI' ;
*
BB = 'EXCO' (TABM . 'MATROT') ('MOTS' 'RX' 'RY')
('MOTS' 'UX' 'UY') ;
ERRO = 'MAXIMUM' ('PSCAL' AA BB ('MOTS' 'UX' 'UY') ('MOTS' 'UX' 'UY'))
'ABS' ;
'SI' (ERRO > 1.0D-12) ;
'ERREUR' ('CHAIN' 'Problem ' ('VALEUR' 'ELEM')) ;
'FINSI' ;
* Vector product
COMPZ = 'PSCAL' AA BB ('MOTS' 'UX') ('MOTS' 'UY') ;
COMPZ = COMPZ '-' ('PSCAL' AA BB ('MOTS' 'UY') ('MOTS' 'UX')) ;
ERRO = 'MAXIMUM' (COMPZ '-' 1.) 'ABS' ;
'SI' (ERRO > 1.0D-12) ;
'ERREUR' ('CHAIN' 'Problem ' ('VALEUR' 'ELEM')) ;
'FINSI' ;
*****************************
**** QUA4 in 2D *************
*****************************
'OPTION' 'DIME' 2 'ELEM' 'QUA4' ;
P1 = 0.0 0.0 ;
P2 = 1.0 0.0 ;
P3 = 1.11 1.13 ;
P4 = 0.0 1.0 ;
MAIL = 'DALL' (P1 'DROIT' 2 P2) (P2 'DROIT' 2 P3) (P3 'DROIT' 2 P4)
(P4 'DROIT' 2 P1) 'PLAN' ;
*
MODM = 'MODELISER' MAIL 'EULER' ;
TABM = 'DOMA' MODM 'VF' ; QMAIL = TABM . 'QUAF' ;
'SI' GRAPH ;
'TRACER' (MAIL 'ET' QMAIL) 'TITRE' 'QUAF' ;
'TRACER' ((tabm . 'MAILLAGE') et ((tabm . 'CENTRE') 'COUL' 'ROUGE'))
'TITRE' 'CENTRE et MAILLAGE';
VEC1 = 'VECTEUR' (TABM . 'XXNORMAF') 0.1 'UX' 'UY' 'ROUG' ;
'TRACER' MAIL VEC1 'TITRE' 'Normals' ;
'FINSI' ;
*
AA = 'DIFF' MAIL (TABM . 'MAILLAGE') ;
'SI' ('NEG' ('NBEL' AA) 0) ;
'MESSAGE' 'QUA4' ;
'ERREUR' 5 ;
'FINSI' ;
*****************************
**** TRI3 and QUA4 in 2D ***
*****************************
'OPTION' 'DIME' 2 'ELEM' 'TRI3' ;
P1 = 0.0 0.0 ;
P2 = 1.0 0.0 ;
P3 = 1.11 1.13 ;
P4 = 0.0 1.0 ;
P5 = 0.0 2.0 ;
P6 = 1.0 2.0 ;
MAIL1 = 'DALL' (P1 'DROIT' 2 P2) (P2 'DROIT' 2 P3) (P3 'DROIT' 2 P4)
(P4 'DROIT' 2 P1) 'PLAN' ;
'OPTION' 'ELEM' 'QUA4' ;
MAIL2 = 'SURF' ((P4 'DROIT' 3 P5) 'ET' (P5 'DROIT' 2 P6) 'ET'
(P6 'DROIT' 2 P3) 'ET' (P3 'DROIT' 2 P4)) 'PLAN' ;
MAIL = MAIL1 'ET' MAIL2 ;
'ELIMINATION' MAIL 0.0001 ;
MODM = 'MODELISER' MAIL 'EULER' ;
TABM = 'DOMA' MODM 'VF ' ;
QMAIL = TABM . 'QUAF' ;
*
'SI' GRAPH ;
'TRACER' (MAIL 'ET' QMAIL) 'TITRE' 'QUAF' ;
'TRACER' ((tabm . 'MAILLAGE') et ((tabm . 'CENTRE') 'COUL' 'ROUGE'))
'TITRE' 'CENTRE et MAILLAGE';
VEC1 = 'VECTEUR' (TABM . 'XXNORMAF') 0.1 'UX' 'UY' 'ROUG' ;
'TRACER' MAIL VEC1 'TITRE' 'Normals' ;
'FINSI' ;
*
AA = 'DIFF' MAIL (TABM . 'MAILLAGE') ;
'SI' ('NEG' ('NBEL' AA) 0) ;
'MESSAGE' 'TRI3 et QUA4' ;
'ERREUR' 5 ;
'FINSI' ;
* Volume
MAIL = (TABM . 'MAILLAGE') ;
TYPEL = MAIL 'ELEM' 'TYPE' ;
NN0 = 'DIME' TYPEL ;
NNE=0 ;
'REPETER' BL0 NN0 ;
MAILA = MAIL 'ELEM' ('EXTRAIRE' TYPEL &BL0) ;
NN = 'NBEL' MAILA ;
'REPETER' BL1 NN ;
NNE = NNE '+' 1 ;
AA = 'MESURE' ('ELEM' &BL1 MAILA) ;
BB = 'EXTRAIRE' (TABM . 'XXVOLUM') 'SCAL'
('POIN' NNE (TABM . 'CENTRE')) ;
ERRO = (AA '-' BB) 'ABS' ;
'SI' (ERRO > 1.0D-6) ;
'MESSAGE' 'TRI3 et QUA4' ;
'ERREUR' 21 ;
'FINSI' ;
'FIN' BL1 ;
'FIN' BL0 ;
* Sommet
MAILS = 'CHANGER' MAIL 'POI1' ;
AA = 'DIFF' MAILS (TABM . 'SOMMET') ;
'SI' (('NBNO' AA) > 0 ) ;
'MESSAGE' 'TRI3 et QUA4' ;
'ERREUR' 21 ;
'FINSI' ;
* Comparaison complete 'NAVIER_STOKES' - 'EULER'
MOD2 = 'MODELISER' QMAIL 'NAVIER_STOKES' 'LINE' ;
TAB2 = 'DOMA' MOD2 'TABLE' ;
TAB2 . 'PRECONDI' = 1 ;
AA = 'DIFF' (TAB2 . 'QUAF') (TABM . 'QUAF') ;
'SI' (('NBNO' AA) > 0 ) ;
'MESSAGE' 'TRI3 et QUA4' ;
'ERREUR' 21 ;
'FINSI' ;
AA = 'DIFF' (TAB2 . 'MAILLAGE') (TABM . 'MAILLAGE') ;
'SI' (('NBNO' AA) > 0 ) ;
'MESSAGE' 'TRI3 et QUA4' ;
'ERREUR' 21 ;
'FINSI' ;
AA = 'DIFF' (TAB2 . 'CENTRE') (TABM . 'CENTRE') ;
'SI' (('NBNO' AA) > 0 ) ;
'MESSAGE' 'TRI3 et QUA4' ;
'ERREUR' 21 ;
'FINSI' ;
AA = 'DIFF' (TAB2 . 'SOMMET') (TABM . 'SOMMET') ;
'SI' (('NBNO' AA) > 0 ) ;
'MESSAGE' 'TRI3 et QUA4' ;
'ERREUR' 21 ;
'FINSI' ;
AA = 'DIFF' (TAB2 . 'FACEL') (TABM . 'FACEL') ;
'SI' (('NBNO' AA) > 0 ) ;
'MESSAGE' 'TRI3 et QUA4' ;
'ERREUR' 21 ;
'FINSI' ;
AA = 'DIFF' (TAB2 . 'FACEP') (TABM . 'FACEP') ;
'SI' (('NBNO' AA) > 0 ) ;
'MESSAGE' 'TRI3 et QUA4' ;
'ERREUR' 21 ;
'FINSI' ;
AA = 'DIFF' (TAB2 . 'ELTFA') (TABM . 'ELTFA') ;
'SI' (('NBNO' AA) > 0 ) ;
'MESSAGE' 'TRI3 et QUA4' ;
'ERREUR' 21 ;
'FINSI' ;
* XXSURFAC, XXNORMAF, XXDIEMIN (comparaison 'NAVIER_STOKES' - 'EULER')
CHPO1 = 'DOMA' TAB2 'XXSURFAC' ;
CHPO2 = TABM . 'XXSURFAC' ;
ERRO = 'MAXIMUM' (CHPO1 '-' CHPO2) 'ABS' ;
'SI' (ERRO > 1.0D-6) ;
'MESSAGE' 'TRI3 et QUA4' ;
'ERREUR' 21 ;
'FINSI' ;
CHPO1 = 'DOMA' TAB2 'XXVOLUM' ;
CHPO2 = TABM . 'XXVOLUM' ;
ERRO = 'MAXIMUM' (CHPO1 '-' CHPO2) 'ABS' ;
'SI' (ERRO > 1.0D-6) ;
'MESSAGE' 'TRI3 et QUA4' ;
'ERREUR' 21 ;
'FINSI' ;
CHPO1 = 'ABS' (TABM . 'XXNORMAF') ;
CHPO2 = 'ABS' ('DOMA' TAB2 'XXNORMAF') ;
ERRO = 'MAXIMUM' (CHPO1 '-' CHPO2) 'ABS' ;
'SI' (ERRO > 1.0D-6) ;
'MESSAGE' 'TRI3 et QUA4' ;
'ERREUR' 21 ;
'FINSI' ;
CHPO1 = (TABM . 'XXDIEMIN') ;
CHPO2 = ('DOMA' TAB2 'XXDIEMIN') ;
ERRO = 'MAXIMUM' (CHPO1 '-' CHPO2) 'ABS' ;
'SI' (ERRO > 1.0D-6) ;
'MESSAGE' 'TRI3 et QUA4' ;
'ERREUR' 21 ;
'FINSI' ;
*
* We check that the sum of (normals times surfaces) is zero
* on the border
*
AA = 'CONTOUR' MAIL ;
CC = 'MODELISER' AA 'EULER' ;
TT = 'DOMA' CC 'VF' ;
BB = TT. 'QUAF' ;
'ELIMINATION' BB (TABM . 'QUAF') 0.0001 ;
DD = TT . 'CENTRE' ;
VALNOR = 'REDU' (TABM . 'XXNORMAF') DD ;
VALSUR = 'REDU' (TABM . 'XXSURFAC') DD ;
AA = VALNOR '*' VALSUR ;
BB = 'MANUEL' 'CHPO' DD 1 'SCAL' 1.0 ;
ERRO = 'XTY' AA BB ('MOTS' 'UX' 'UY') ('MOTS' 'SCAL' 'SCAL') ;
'SI' (ERRO > 1.0D-12) ;
'ERREUR' 'TRI3 et QUA4' ;
'FINSI' ;
*
* We check that each element satisfies the property
* (normals times surfaces) = zero
*
* ELTFA and MAIL have the same structure
*
LISTYP = (TABM . 'ELTFA') 'ELEM' 'TYPE' ;
LISTYP1 = (TABM . 'QUAF') 'ELEM' 'TYPE' ;
*
NELEM = 0 ;
'REPETER' BL1 ('DIME' LISTYP) ;
MAIL1 = 'ELEM' (TABM . 'ELTFA') ('EXTRAIRE' LISTYP &BL1) ;
MAIL2 = 'ELEM' (TABM . 'QUAF') ('EXTRAIRE' LISTYP1 &BL1) ;
NM1 = 'NBEL' MAIL1 ;
NM2 = 'NBEL' MAIL2 ;
'SI' ('NEG' NM1 NM2) ;
'ERREUR' 'QUAF and ELTFA non compatible' ;
'ERREUR' 21 ;
'FINSI' ;
'REPETER' BL2 ('NBEL' MAIL1) ;
NELEM = NELEM '+' 1 ;
ELE1 = 'ELEM' MAIL1 &BL2 ;
ELE2 = 'CHANGER' ELE1 'POI1' ;
NM2 = 'NBNO' ELE2 ;
ELE3 = 'ELEM' MAIL2 &BL2 ;
ELE4 = 'CHANGER' ELE3 'POI1' ;
NM4 = 'NBNO' ELE4 ;
ELE5 = 'DIFF' ELE4 ELE2 ;
NM5 = 'NBNO' ELE5 ;
'SI' ('NEG' (NM2 '+' NM5) NM4) ;
'ERREUR' 'QUAF and ELTFA non compatible' ;
'ERREUR' 21 ;
'FINSI' ;
PCEN = 'POIN' (TABM . 'CENTRE') NELEM ;
DSURF = 0.0 0.0 ;
'REPETER' BL3 ('NBEL' ELE2) ;
PFAC = 'POIN' &BL3 ELE2 ;
SURFF = 'EXTRAIRE' (TABM . 'XXSURFAC') 'SCAL' PFAC ;
PNORM = ('EXTRAIRE' (TABM . 'XXNORMAF') 'UX' PFAC)
('EXTRAIRE' (TABM . 'XXNORMAF') 'UY' PFAC);
PCF = PFAC 'MOIN' PCEN ;
DORIE = 'SIGNE' ('PSCAL' PNORM PCF) ;
DSURF = DSURF 'PLUS' (DORIE * PNORM * SURFF) ;
'FIN' BL3 ;
AA = 'MAXIMUM' ('ABS' ('PROG' ('COORDONNEE' 1 DSURF)
('COORDONNEE' 2 DSURF) ('COORDONNEE' 3 DSURF))) ;
'SI' (AA > 1.0D-12) ;
'MESSAGE' 'GENE' ;
'ERREUR' 21 ;
'FINSI' ;
'FIN' BL2 ;
'FIN' BL1 ;
*
******************************
**** TET4 ********************
******************************
*
'OPTION' 'DIME' 3 'ELEM' 'TET4' ;
* P1, P2, P3 clockwise
P1 = 1.0 0.0 0.0 ;
P2 = 0.0 0.0 0.0 ;
P3 = 1.11 1.13 0.0 ;
P4 = -0.11 1.73 1.11 ;
P1 P2 P3 P4 = P1 P2 P3 P4 'TOURNER' 15.0
(0.0 0.0 2.0) (1.1 1.1 2.0) ;
PCEN = P1 'PLUS' P2 'PLUS' P3 'PLUS' P4 ;
PCEN = PCEN '/' 4. ;
MAIL = 'MANUEL' 'TET4' P1 P2 P3 P4 ;
*
MODM = 'MODELISER' MAIL 'EULER' ;
TABM = 'DOMA' MODM 'VF' ; QMAIL = TABM . 'QUAF' ;
VALNOR = TABM . 'XXNORMAF' ;
VALSUR = TABM . 'XXSURFAC' ;
*
'SI' GRAPH ;
'TRACER' (MAIL 'ET' QMAIL) 'TITRE' 'QUAF' ;
'TRACER' ((tabm . 'MAILLAGE') et ((tabm . 'CENTRE') 'COUL' 'ROUGE'))
'TITRE' 'CENTRE et MAILLAGE';
VEC1 = 'VECTEUR' (TABM . 'XXNORMAF') 0.1 'UX' 'UY' 'UZ' 'ROUG' ;
'TRACER' MAIL VEC1 'TITRE' 'Normals' ;
'FINSI' ;
*
AA = 'DIFF' MAIL (TABM . 'MAILLAGE') ;
'SI' ('NEG' ('NBEL' AA) 0) ;
'MESSAGE' 'TET4' ;
'ERREUR' 5 ;
'FINSI' ;
'ELIMINATION' ((TABM. 'CENTRE') 'ET' PCEN) 0.0001 ;
AA = 'DIFF' ('MANUEL' 'POI1' PCEN) (TABM. 'CENTRE') ;
'SI' ('NEG' ('NBEL' AA) 0) ;
'MESSAGE' 'TET4' ;
'ERREUR' 5 ;
'FINSI' ;
* Volume
NN = 'NBEL' MAIL ;
'REPETER' BL1 NN ;
AA = 'MESURE' ('ELEM' &BL1 MAIL) ;
BB = 'EXTRAIRE' (TABM . 'XXVOLUM') 'SCAL'
('POIN' &BL1 (TABM . 'CENTRE')) ;
ERRO = (AA '-' BB) 'ABS' ;
'SI' (ERRO > 1.0D-6) ;
'MESSAGE' 'TET4' ;
'ERREUR' 21 ;
'FINSI' ;
'FIN' BL1 ;
* Sommet
MAILS = 'CHANGER' MAIL 'POI1' ;
AA = 'DIFF' MAILS (TABM . 'SOMMET') ;
'SI' (('NBNO' AA) > 0 ) ;
'MESSAGE' 'TET4' ;
'ERREUR' 21 ;
'FINSI' ;
* Comparaison complete 'NAVIER_STOKES' - 'EULER'
MOD2 = 'MODELISER' QMAIL 'NAVIER_STOKES' 'LINE' ;
TAB2 = 'DOMA' MOD2 'TABLE' ;
TAB2 . 'PRECONDI' = 1 ;
AA = 'DIFF' (TAB2 . 'QUAF') (TABM . 'QUAF') ;
'SI' (('NBNO' AA) > 0 ) ;
'MESSAGE' 'TRI3 et QUA4' ;
'ERREUR' 21 ;
'FINSI' ;
AA = 'DIFF' (TAB2 . 'MAILLAGE') (TABM . 'MAILLAGE') ;
'SI' (('NBNO' AA) > 0 ) ;
'MESSAGE' 'TRI3 et QUA4' ;
'ERREUR' 21 ;
'FINSI' ;
AA = 'DIFF' (TAB2 . 'CENTRE') (TABM . 'CENTRE') ;
'SI' (('NBNO' AA) > 0 ) ;
'MESSAGE' 'TRI3 et QUA4' ;
'ERREUR' 21 ;
'FINSI' ;
AA = 'DIFF' (TAB2 . 'SOMMET') (TABM . 'SOMMET') ;
'SI' (('NBNO' AA) > 0 ) ;
'MESSAGE' 'TRI3 et QUA4' ;
'ERREUR' 21 ;
'FINSI' ;
AA = 'DIFF' (TAB2 . 'FACEL') (TABM . 'FACEL') ;
'SI' (('NBNO' AA) > 0 ) ;
'MESSAGE' 'TRI3 et QUA4' ;
'ERREUR' 21 ;
'FINSI' ;
AA = 'DIFF' (TAB2 . 'FACEP') (TABM . 'FACEP') ;
'SI' (('NBNO' AA) > 0 ) ;
'MESSAGE' 'TRI3 et QUA4' ;
'ERREUR' 21 ;
'FINSI' ;
AA = 'DIFF' (TAB2 . 'ELTFA') (TABM . 'ELTFA') ;
'SI' (('NBNO' AA) > 0 ) ;
'MESSAGE' 'TRI3 et QUA4' ;
'ERREUR' 21 ;
'FINSI' ;
* XXSURFAC, XXNORMAF, XXDIEMIN (comparaison 'NAVIER_STOKES' - 'EULER')
CHPO1 = 'DOMA' TAB2 'XXSURFAC' ;
CHPO2 = TABM . 'XXSURFAC' ;
ERRO = 'MAXIMUM' (CHPO1 '-' CHPO2) 'ABS' ;
'SI' (ERRO > 1.0D-6) ;
'MESSAGE' 'TRI3 et QUA4' ;
'ERREUR' 21 ;
'FINSI' ;
CHPO1 = 'DOMA' TAB2 'XXVOLUM' ;
CHPO2 = TABM . 'XXVOLUM' ;
ERRO = 'MAXIMUM' (CHPO1 '-' CHPO2) 'ABS' ;
'SI' (ERRO > 1.0D-6) ;
'MESSAGE' 'TRI3 et QUA4' ;
'ERREUR' 21 ;
'FINSI' ;
CHPO1 = 'ABS' (TABM . 'XXNORMAF') ;
CHPO2 = 'ABS' ('DOMA' TAB2 'XXNORMAF') ;
ERRO = 'MAXIMUM' (CHPO1 '-' CHPO2) 'ABS' ;
'SI' (ERRO > 1.0D-6) ;
'MESSAGE' 'TRI3 et QUA4' ;
'ERREUR' 21 ;
'FINSI' ;
CHPO1 = (TABM . 'XXDIEMIN') ;
CHPO2 = ('DOMA' TAB2 'XXDIEMIN') ;
ERRO = 'MAXIMUM' (CHPO1 '-' CHPO2) 'ABS' ;
'SI' (ERRO > 1.0D-6) ;
'MESSAGE' 'TRI3 et QUA4' ;
'ERREUR' 21 ;
'FINSI' ;
*
* We check the interfaces
*
PCEN1 = (P1 'PLUS' P2 'PLUS' P3) '/' 3. ;
PCEN2 = (P2 'PLUS' P3 'PLUS' P4) '/' 3. ;
PCEN3 = (P3 'PLUS' P4 'PLUS' P1) '/' 3. ;
PCEN4 = (P4 'PLUS' P1 'PLUS' P2) '/' 3. ;
*
A1 = 'PVECT' (P2 'MOIN' P1) (P3 'MOIN' P1) ;
A2 = 'PVECT' (P3 'MOIN' P2) (P4 'MOIN' P2) ;
A3 = 'PVECT' (P4 'MOIN' P3) (P1 'MOIN' P3) ;
A4 = 'PVECT' (P1 'MOIN' P4) (P2 'MOIN' P4) ;
VALSUR1 = 'PROG' ('PSCAL' A1 A1) ('PSCAL' A2 A2)
('PSCAL' A3 A3) ('PSCAL' A4 A4) ;
VALSUR1 = VALSUR1 '**' 0.5 ;
VALSUR1 = VALSUR1 '*' 0.5 ;
VALSURM = 'MANUEL' 'QUA4' PCEN1 PCEN2 PCEN3 PCEN4 ;
'ELIMINATION' VALSURM 0.001 (TABM . 'FACE') ;
VALSUR2 = 'MANUEL' 'CHPO' VALSURM 1 'SCAL' VALSUR1 ;
ERRO = 'MAXI' (VALSUR '-' VALSUR2) 'ABS' ;
'SI' (ERRO > 1.0D-6) ;
'ERREUR' ('CHAIN' 'Problem ' ('VALEUR' 'ELEM')) ;
'FINSI' ;
*
* We check that the normals modulus are 1
*
AA = 'PSCAL' VALNOR VALNOR ('MOTS' 'UX' 'UY' 'UZ')
('MOTS' 'UX' 'UY' 'UZ') ;
'SI' ((('MAXIMUM' AA) 'NEG' 1.0 1.0D-12) 'OU'
(('MINIMUM' AA) 'NEG' 1.0 1.0D-12)) ;
'ERREUR' ('CHAIN' 'Problem ' ('VALEUR' 'ELEM')) ;
'FINSI' ;
*
* We check the normal in one face (P1, P2, P4)
*
VECNOR1 = 'PVEC' (P4 'MOIN' P1) (P2 'MOIN' P1) ;
VECNOR1 = VECNOR1 '/' (('PSCAL' VECNOR1 VECNOR1) '**' 0.5) ;
VALNOR1 = 'MANUEL' 'CHPO' ('MANUEL' 'POI1' PCEN4) 3
'UX' ('COORDONNEE' 1 VECNOR1)
'UY' ('COORDONNEE' 2 VECNOR1)
'UZ' ('COORDONNEE' 3 VECNOR1)
;
ERRO = 'MAXI' (VALNOR1 '-' ('REDU' VALNOR ('MANUEL' 'POI1' PCEN4)))
'ABS' ;
'SI' (ERRO > 1.0D-6) ;
'ERREUR' ('CHAIN' 'Problem ' ('VALEUR' 'ELEM')) ;
'FINSI' ;
*
* We check that the sum of (normals times surfaces) is zero
*
AA = VALNOR '*' VALSUR ;
BB = 'MANUEL' 'CHPO' (TABM . 'FACE') 1 'SCAL' 1.0 ;
ERRO = 'XTY' AA BB ('MOTS' 'UX' 'UY' 'UZ')
('MOTS' 'SCAL' 'SCAL' 'SCAL') ;
'SI' (ERRO > 1.0D-12) ;
'ERREUR' ('CHAIN' 'Problem ' ('VALEUR' 'ELEM')) ;
'FINSI' ;
*
* Matrot
*
AA = 'EXCO' (TABM . 'MATROT') ('MOTS' 'MX' 'MY' 'MZ')
('MOTS' 'UX' 'UY' 'UZ') ;
ERRO ='MAXIMUM' (AA '-' (TABM . 'XXNORMAF')) 'ABS' ;
'SI' (ERRO > 1.0D-12) ;
'ERREUR' ('CHAIN' 'Problem ' ('VALEUR' 'ELEM')) ;
'FINSI' ;
*
BB = 'EXCO' (TABM . 'MATROT') ('MOTS' 'RX' 'RY' 'RZ')
('MOTS' 'UX' 'UY' 'UZ') ;
ERRO = 'MAXIMUM' ('PSCAL' AA BB ('MOTS' 'UX' 'UY' 'UZ')
('MOTS' 'UX' 'UY' 'UZ'))
'ABS' ;
'SI' (ERRO > 1.0D-12) ;
'ERREUR' ('CHAIN' 'Problem ' ('VALEUR' 'ELEM')) ;
'FINSI' ;
*
COMPZ = 'PSCAL' AA BB ('MOTS' 'UX') ('MOTS' 'UY') ;
COMPZ = COMPZ '-' ('PSCAL' AA BB ('MOTS' 'UY') ('MOTS' 'UX')) ;
COMPZ1 = 'EXCO' (TABM . 'MATROT') ('MOTS' 'UZ')
('MOTS' 'SCAL') ;
ERRO = 'MAXIMUM' (COMPZ '-' COMPZ1) 'ABS' ;
'SI' (ERRO > 1.0D-12) ;
'ERREUR' ('CHAIN' 'Problem ' ('VALEUR' 'ELEM')) ;
'FINSI' ;
*
COMPX = 'PSCAL' AA BB ('MOTS' 'UY') ('MOTS' 'UZ') ;
COMPX = COMPX '-' ('PSCAL' AA BB ('MOTS' 'UZ') ('MOTS' 'UY')) ;
COMPX1 = 'EXCO' (TABM . 'MATROT') ('MOTS' 'UX')
('MOTS' 'SCAL') ;
ERRO = 'MAXIMUM' (COMPX '-' COMPX1) 'ABS' ;
'SI' (ERRO > 1.0D-12) ;
'ERREUR' ('CHAIN' 'Problem ' ('VALEUR' 'ELEM')) ;
'FINSI' ;
*
COMPY = 'PSCAL' AA BB ('MOTS' 'UZ') ('MOTS' 'UX') ;
COMPY = COMPY '-' ('PSCAL' AA BB ('MOTS' 'UX') ('MOTS' 'UZ')) ;
COMPY1 = 'EXCO' (TABM . 'MATROT') ('MOTS' 'UY')
('MOTS' 'SCAL') ;
ERRO = 'MAXIMUM' (COMPY '-' COMPY1) 'ABS' ;
'SI' (ERRO > 1.0D-12) ;
'ERREUR' ('CHAIN' 'Problem ' ('VALEUR' 'ELEM')) ;
'FINSI' ;
******************************
**** PYR5 ********************
******************************
*
* General case
*
'OPTION' 'DIME' 3 'ELEM' 'PYR5' ;
P1 = 0.0 0.0 0.11 ;
P2 = 1.1 0.0 0.13 ;
P3 = 1.0 1.3 0.15 ;
P4 = 0.0 1.0 0.0;
P5 = 0.5 0.5 1.0 ;
P1 P2 P3 P4 P5 = P1 P2 P3 P4 P5 'TOURNER' 15.0
(0.0 0.0 4.0) (1.1 1.1 4.0) ;
MAIL = 'MANUEL' 'PYR5' P1 P2 P3 P4 P5 ;
MODM = 'MODELISER' MAIL 'EULER' ;
TABM = 'DOMA' MODM 'VF' ; QMAIL = TABM . 'QUAF' ;
MAIL1 = 'MANUEL' 'QUA4' P1 P2 P3 P4 ;
MODM1 = 'MODELISER' MAIL1 'EULER' ;
TABM1 = 'DOMA' MODM1 'VF' ; QMAIL1 = TABM1 . 'QUAF' ;
'ELIMINATION' QMAIL QMAIL1 0.001 ;
PCENF = 'POIN' 1 (TABM1 . 'CENTRE') ;
*
'SI' GRAPH ;
'TRACER' (MAIL 'ET' QMAIL) 'TITRE' 'QUAF' ;
'TRACER' ((tabm . 'MAILLAGE') et ((tabm . 'CENTRE') 'COUL' 'ROUGE'))
'TITRE' 'CENTRE et MAILLAGE';
VEC1 = 'VECTEUR' (TABM . 'XXNORMAF') 0.1 'UX' 'UY' 'UZ' 'ROUG' ;
'TRACER' MAIL VEC1 'TITRE' 'Normals' ;
'FINSI' ;
*
AA = 'DIFF' MAIL (TABM . 'MAILLAGE') ;
'SI' ('NEG' ('NBEL' AA) 0) ;
'MESSAGE' 'PYR5' ;
'ERREUR' 5 ;
'FINSI' ;
* Volume as the volume of 4 tetrahedra
VOL1 = 'MESURE' ('MANUEL' 'TET4' P1 P2 PCENF P5) ;
VOL2 = 'MESURE' ('MANUEL' 'TET4' P2 P3 PCENF P5) ;
VOL3 = 'MESURE' ('MANUEL' 'TET4' P3 P4 PCENF P5) ;
VOL4 = 'MESURE' ('MANUEL' 'TET4' P4 P1 PCENF P5) ;
VOL = VOL1 '+' VOL2 '+' VOL3 '+' VOL4 ;
VOL0 = 'MAXIMUM' (TABM . 'XXVOLUM') ;
ERRO = (VOL0 '-' VOL) 'ABS' ;
'SI' (ERRO > 1.0D-6) ;
'MESSAGE' 'PYR5' ;
'ERREUR' 21 ;
'FINSI' ;
* Centre
PCEN1 = P1 'PLUS' P2 'PLUS' PCENF 'PLUS' P5 ;
PCEN1 = PCEN1 '/' 4. ;
PCEN2 = P2 'PLUS' P3 'PLUS' PCENF 'PLUS' P5 ;
PCEN2 = PCEN2 '/' 4. ;
PCEN3 = P3 'PLUS' P4 'PLUS' PCENF 'PLUS' P5 ;
PCEN3 = PCEN3 '/' 4. ;
PCEN4 = P4 'PLUS' P1 'PLUS' PCENF 'PLUS' P5 ;
PCEN4 = PCEN4 '/' 4. ;
PCEN = (VOL1 * PCEN1) 'PLUS' (VOL2 * PCEN2) 'PLUS'
(VOL3 * PCEN3) 'PLUS' (VOL4 * PCEN4) ;
PCEN = PCEN '/' VOL ;
'ELIMINATION' (PCEN 'ET' (TABM . 'CENTRE')) 0.0001 ;
AA = 'DIFF' ('MANUEL' 'POI1' PCEN) (TABM . 'CENTRE') ;
'SI' ('NEG' ('NBEL' AA) 0) ;
'MESSAGE' 'PYR5' ;
'ERREUR' 5 ;
'FINSI' ;
* Normals and surface
PNOR1 = 0.5 '*' ('PVEC' (P1 'MOIN' PCENF) (P4 'MOIN' PCENF)) ;
PNOR2 = 0.5 '*' ('PVEC' (P2 'MOIN' PCENF) (P1 'MOIN' PCENF)) ;
PNOR3 = 0.5 '*' ('PVEC' (P3 'MOIN' PCENF) (P2 'MOIN' PCENF)) ;
PNOR4 = 0.5 '*' ('PVEC' (P4 'MOIN' PCENF) (P3 'MOIN' PCENF)) ;
PNOR = PNOR1 'PLUS' PNOR2 'PLUS' PNOR3 'PLUS' PNOR4 ;
XSURF = (('PSCAL' PNOR PNOR) '**' 0.5) ;
PNOR = PNOR '/' XSURF ;
AA = ('REDU' (tabm . 'XXNORMAF') ('MANUEL' 'POI1' PCENF)) ;
BB = 'MANUEL' 'CHPO' ('MANU' 'POI1' PCENF) 3
'UX' ('COORDONNEE' 1 PNOR)
'UY' ('COORDONNEE' 2 PNOR)
'UZ' ('COORDONNEE' 3 PNOR);
ERRO = 'MAXIMUM' (AA '-' BB) 'ABS' ;
'SI' (ERRO > 1.0D-6) ;
'MESSAGE' 'PYR5' ;
'ERREUR' 21 ;
'FINSI' ;
AA = ('REDU' (tabm . 'XXSURFAC') ('MANUEL' 'POI1' PCENF)) ;
BB = 'MANUEL' 'CHPO' ('MANU' 'POI1' PCENF) 1 'SCAL' XSURF ;
ERRO = 'MAXIMUM' (AA '-' BB) 'ABS' ;
'SI' (ERRO > 1.0D-6) ;
'MESSAGE' 'PYR5' ;
'ERREUR' 21 ;
'FINSI' ;
*
* Particular case (base bizarre)
* Clockwise orientation.
'OPTION' 'DIME' 3 'ELEM' 'PYR5' ;
P1 = 0.0 0.0 0.12 ;
P2 = 1.0 0.0 -0.1 ;
P3 = 1.0 1.0 0.31 ;
P4 = 0.5 0.4 -0.21 ;
P5 = 0.5 0.5 2.0 ;
P1 P2 P3 P4 P5 = P1 P2 P3 P4 P5 'TOURNER' 15.0
(0.0 0.0 4.0) (1.1 1.1 4.0) ;
MAIL = 'MANUEL' 'PYR5' P1 P2 P3 P4 P5 ;
MODM = 'MODELISER' MAIL 'EULER' ;
TABM = 'DOMA' MODM 'VF' ; QMAIL = TABM . 'QUAF' ;
MAIL1 = 'MANUEL' 'QUA4' P1 P2 P3 P4 ;
MODM1 = 'MODELISER' MAIL1 'EULER' ;
TABM1 = 'DOMA' MODM1 'VF' ; QMAIL1 = TABM1 . 'QUAF' ;
'ELIMINATION' QMAIL QMAIL1 0.001 ;
PCENF = 'POIN' 1 (TABM1 . 'CENTRE') ;
*
'SI' GRAPH ;
'TRACER' (MAIL 'ET' QMAIL) 'TITRE' 'QUAF' ;
'TRACER' ((tabm . 'MAILLAGE') et ((tabm . 'CENTRE') 'COUL' 'ROUGE'))
'TITRE' 'CENTRE et MAILLAGE';
VEC1 = 'VECTEUR' (TABM . 'XXNORMAF') 0.1 'UX' 'UY' 'UZ' 'ROUG' ;
'TRACER' MAIL VEC1 'TITRE' 'Normals' ;
'FINSI' ;
*
AA = 'DIFF' MAIL (TABM . 'MAILLAGE') ;
'SI' ('NEG' ('NBEL' AA) 0) ;
'MESSAGE' 'PYR5' ;
'ERREUR' 5 ;
'FINSI' ;
* Volume as the volume of 4 tetrahedra
VOL1 = 'MESURE' ('MANUEL' 'TET4' P1 P2 PCENF P5) ;
VOL2 = 'MESURE' ('MANUEL' 'TET4' P2 P3 PCENF P5) ;
VOL3 = 'MESURE' ('MANUEL' 'TET4' P3 P4 PCENF P5) ;
VOL4 = 'MESURE' ('MANUEL' 'TET4' P4 P1 PCENF P5) ;
VOL = VOL1 '+' VOL2 '+' VOL3 '+' VOL4 ;
VOL0 = 'MAXIMUM' (TABM . 'XXVOLUM') ;
ERRO = (VOL0 '-' VOL) 'ABS' ;
'SI' (ERRO > 1.0D-6) ;
'MESSAGE' 'PYR5' ;
'ERREUR' 21 ;
'FINSI' ;
* Centre
PCEN1 = P1 'PLUS' P2 'PLUS' PCENF 'PLUS' P5 ;
PCEN1 = PCEN1 '/' 4. ;
PCEN2 = P2 'PLUS' P3 'PLUS' PCENF 'PLUS' P5 ;
PCEN2 = PCEN2 '/' 4. ;
PCEN3 = P3 'PLUS' P4 'PLUS' PCENF 'PLUS' P5 ;
PCEN3 = PCEN3 '/' 4. ;
PCEN4 = P4 'PLUS' P1 'PLUS' PCENF 'PLUS' P5 ;
PCEN4 = PCEN4 '/' 4. ;
PCEN = (VOL1 * PCEN1) 'PLUS' (VOL2 * PCEN2) 'PLUS'
(VOL3 * PCEN3) 'PLUS' (VOL4 * PCEN4) ;
PCEN = PCEN '/' VOL ;
'ELIMINATION' (PCEN 'ET' (TABM . 'CENTRE')) 0.0001 ;
AA = 'DIFF' ('MANUEL' 'POI1' PCEN) (TABM . 'CENTRE') ;
'SI' ('NEG' ('NBEL' AA) 0) ;
'MESSAGE' 'PYR5' ;
'ERREUR' 5 ;
'FINSI' ;
* Normals and surface
PNOR1 = 0.5 '*' ('PVEC' (P1 'MOIN' PCENF) (P4 'MOIN' PCENF)) ;
PNOR2 = 0.5 '*' ('PVEC' (P2 'MOIN' PCENF) (P1 'MOIN' PCENF)) ;
PNOR3 = 0.5 '*' ('PVEC' (P3 'MOIN' PCENF) (P2 'MOIN' PCENF)) ;
PNOR4 = 0.5 '*' ('PVEC' (P4 'MOIN' PCENF) (P3 'MOIN' PCENF)) ;
PNOR = PNOR1 'PLUS' PNOR2 'PLUS' PNOR3 'PLUS' PNOR4 ;
XSURF = (('PSCAL' PNOR PNOR) '**' 0.5) ;
PNOR = PNOR '/' XSURF ;
AA = ('REDU' (tabm . 'XXNORMAF') ('MANUEL' 'POI1' PCENF)) ;
BB = 'MANUEL' 'CHPO' ('MANU' 'POI1' PCENF) 3
'UX' ('COORDONNEE' 1 PNOR)
'UY' ('COORDONNEE' 2 PNOR)
'UZ' ('COORDONNEE' 3 PNOR);
ERRO = 'MAXIMUM' (AA '-' BB) 'ABS' ;
'SI' (ERRO > 1.0D-6) ;
'MESSAGE' 'PYR5' ;
'ERREUR' 21 ;
'FINSI' ;
AA = ('REDU' (tabm . 'XXSURFAC') ('MANUEL' 'POI1' PCENF)) ;
BB = 'MANUEL' 'CHPO' ('MANU' 'POI1' PCENF) 1 'SCAL' XSURF ;
ERRO = 'MAXIMUM' (AA '-' BB) 'ABS' ;
'SI' (ERRO > 1.0D-6) ;
'MESSAGE' 'PYR5' ;
'ERREUR' 21 ;
'FINSI' ;
*
* We check that the normals modulus are 1
*
VALNOR = TABM . 'XXNORMAF' ;
VALSUR = TABM . 'XXSURFAC' ;
AA = 'PSCAL' VALNOR VALNOR ('MOTS' 'UX' 'UY' 'UZ')
('MOTS' 'UX' 'UY' 'UZ') ;
'SI' ((('MAXIMUM' AA) 'NEG' 1.0 1.0D-12) 'OU'
(('MINIMUM' AA) 'NEG' 1.0 1.0D-12)) ;
'ERREUR' 'PYR5' ;
'FINSI' ;
*
* We check that the sum of (normals times surfaces) is zero
*
AA = VALNOR '*' VALSUR ;
BB = 'MANUEL' 'CHPO' (TABM . 'FACE') 1 'SCAL' 1.0 ;
ERRO = 'XTY' AA BB ('MOTS' 'UX' 'UY' 'UZ')
('MOTS' 'SCAL' 'SCAL' 'SCAL') ;
'SI' (ERRO > 1.0D-12) ;
'ERREUR' 'PYR5' ;
'FINSI' ;
*
* We check the triangular faces.
*
PCEN1 = (P1 'PLUS' P2 'PLUS' P5) '/' 3. ;
PCEN2 = (P2 'PLUS' P3 'PLUS' P5) '/' 3. ;
PCEN3 = (P3 'PLUS' P4 'PLUS' P5) '/' 3. ;
PCEN4 = (P4 'PLUS' P1 'PLUS' P5) '/' 3. ;
*
A1 = 'PVECT' (P1 'MOIN' P5) (P2 'MOIN' P5) ;
A2 = 'PVECT' (P2 'MOIN' P5) (P3 'MOIN' P5) ;
A3 = 'PVECT' (P3 'MOIN' P5) (P4 'MOIN' P5) ;
A4 = 'PVECT' (P4 'MOIN' P5) (P1 'MOIN' P5) ;
VALSUR1 = 'PROG' ('PSCAL' A1 A1) ('PSCAL' A2 A2)
('PSCAL' A3 A3) ('PSCAL' A4 A4) ;
VALSUR1 = VALSUR1 '**' 0.5 ;
VALSUR1 = VALSUR1 '*' 0.5 ;
VALSURM = 'MANUEL' 'QUA4' PCEN1 PCEN2 PCEN3 PCEN4 ;
'ELIMINATION' VALSURM 0.001 (TABM . 'FACE') ;
VALSUR2 = 'MANUEL' 'CHPO' VALSURM 1 'SCAL' VALSUR1 ;
ERRO = 'MAXI' (('REDU' VALSUR VALSURM) '-' VALSUR2) 'ABS' ;
'SI' (ERRO > 1.0D-7) ;
'ERREUR' ('CHAIN' 'Problem ' ('VALEUR' 'ELEM')) ;
'FINSI' ;
*
* Matrot
*
AA = 'EXCO' (TABM . 'MATROT') ('MOTS' 'MX' 'MY' 'MZ')
('MOTS' 'UX' 'UY' 'UZ') ;
ERRO ='MAXIMUM' (AA '-' (TABM . 'XXNORMAF')) 'ABS' ;
'SI' (ERRO > 1.0D-12) ;
'ERREUR' ('CHAIN' 'Problem ' ('VALEUR' 'ELEM')) ;
'FINSI' ;
*
BB = 'EXCO' (TABM . 'MATROT') ('MOTS' 'RX' 'RY' 'RZ')
('MOTS' 'UX' 'UY' 'UZ') ;
ERRO = 'MAXIMUM' ('PSCAL' AA BB ('MOTS' 'UX' 'UY' 'UZ')
('MOTS' 'UX' 'UY' 'UZ'))
'ABS' ;
'SI' (ERRO > 1.0D-12) ;
'ERREUR' ('CHAIN' 'Problem ' ('VALEUR' 'ELEM')) ;
'FINSI' ;
*
COMPZ = 'PSCAL' AA BB ('MOTS' 'UX') ('MOTS' 'UY') ;
COMPZ = COMPZ '-' ('PSCAL' AA BB ('MOTS' 'UY') ('MOTS' 'UX')) ;
COMPZ1 = 'EXCO' (TABM . 'MATROT') ('MOTS' 'UZ')
('MOTS' 'SCAL') ;
ERRO = 'MAXIMUM' (COMPZ '-' COMPZ1) 'ABS' ;
'SI' (ERRO > 1.0D-12) ;
'ERREUR' ('CHAIN' 'Problem ' ('VALEUR' 'ELEM')) ;
'FINSI' ;
*
COMPX = 'PSCAL' AA BB ('MOTS' 'UY') ('MOTS' 'UZ') ;
COMPX = COMPX '-' ('PSCAL' AA BB ('MOTS' 'UZ') ('MOTS' 'UY')) ;
COMPX1 = 'EXCO' (TABM . 'MATROT') ('MOTS' 'UX')
('MOTS' 'SCAL') ;
ERRO = 'MAXIMUM' (COMPX '-' COMPX1) 'ABS' ;
'SI' (ERRO > 1.0D-12) ;
'ERREUR' ('CHAIN' 'Problem ' ('VALEUR' 'ELEM')) ;
'FINSI' ;
*
COMPY = 'PSCAL' AA BB ('MOTS' 'UZ') ('MOTS' 'UX') ;
COMPY = COMPY '-' ('PSCAL' AA BB ('MOTS' 'UX') ('MOTS' 'UZ')) ;
COMPY1 = 'EXCO' (TABM . 'MATROT') ('MOTS' 'UY')
('MOTS' 'SCAL') ;
ERRO = 'MAXIMUM' (COMPY '-' COMPY1) 'ABS' ;
'SI' (ERRO > 1.0D-12) ;
'ERREUR' ('CHAIN' 'Problem ' ('VALEUR' 'ELEM')) ;
'FINSI' ;
*
**** Plusieur pyr5 et CUB8 ;
*
P1 = 1.0 0.0 0.0 ;
P2 = 0.0 0.0 0.0 ;
P3 = 0.0 1.0 0.0 ;
P4 = 1.0 1.0 0.0 ;
P5 = 1.0 0.0 1.0 ;
P6 = 0.0 0.0 1.0 ;
P7 = 0.0 1.0 1.0 ;
P8 = 1.0 1.0 1.0 ;
P9 = 0.5 0.5 0.5 ;
P10= 1.0 0.0 2.0 ;
P11= 0.0 0.0 2.0 ;
P12= 0.0 1.0 2.0 ;
P13= 1.0 1.0 2.0 ;
*
MAIL1 = 'MANUEL' 'PYR5' P1 P2 P6 P5 P9 ;
MAIL2 = 'MANUEL' 'PYR5' P1 P4 P8 P5 P9 ;
MAIL3 = 'MANUEL' 'PYR5' P8 P7 P3 P4 P9 ;
MAIL4 = 'MANUEL' 'PYR5' P7 P6 P2 P3 P9 ;
MAIL5 = 'MANUEL' 'PYR5' P1 P2 P3 P4 P9 ;
MAIL6 = 'MANUEL' 'PYR5' P5 P6 P7 P8 P9 ;
MAIL7 = 'MANUEL' 'CUB8' P5 P6 P7 P8 P10 P11 P12 P13 ;
MAILT1 = MAIL1 'ET' MAIL2 'ET' MAIL3 'ET' MAIL4 'ET' MAIL5
'ET' MAIL6 'ET' MAIL7 ;
MAILT2 = MAILT1 'PLUS' (1.0 0.0 0.0) ;
MAILT3 = MAILT2 'PLUS' (1.0 0.0 0.0) ;
MAILT1 = MAILT1 'ET' MAILT2 'ET' MAILT3 ;
'ELIMINATION' MAILT1 0.001 ;
MAILT2 = MAILT1 'PLUS' (0.0 1.0 0.0) ;
MAILT3 = MAILT2 'PLUS' (0.0 1.0 0.0) ;
MAILT1 = MAILT1 'ET' MAILT2 'ET' MAILT3 ;
'ELIMINATION' MAILT1 0.001 ;
MAILT2 = MAILT1 'PLUS' (0.0 0.0 2.0) ;
MAILT3 = MAILT2 'PLUS' (0.0 0.0 2.0) ;
MAIL = MAILT1 'ET' MAILT2 'ET' MAILT3 ;
'ELIMINATION' MAIL 0.001 ;
ENVMAI = 'ENVELOPPE' MAIL ;
INTMAIL = 'DIFF' ('CHANGER' 'POI1' MAIL)
('CHANGER' 'POI1' ENVMAI) ;
CHPO1 = 'BRUI' 'BLAN' 'UNIF' 0.0 0.2 INTMAIL ;
CHPO2 = 'BRUI' 'BLAN' 'UNIF' 0.0 0.2 INTMAIL ;
CHPO3 = 'BRUI' 'BLAN' 'UNIF' 0.0 0.2 INTMAIL ;
CHPO = ('NOMC' CHPO1 'UX' 'NATU' 'DISCRETE') 'ET'
('NOMC' CHPO2 'UY' 'NATU' 'DISCRETE') 'ET'
('NOMC' CHPO3 'UZ' 'NATU' 'DISCRETE') ;
'FORME' CHPO ;
MODM = 'MODELISER' MAIL 'EULER' ;
TABM = 'DOMA' MODM 'VF' ; QMAIL = TABM . 'QUAF' ;
VOLU0 = 'MESURE' MAIL ;
VOLU1 = 'XTY' (TABM . 'XXVOLUM') ('MANUEL' 'CHPO' (TABM . 'CENTRE')
1 'SCAL' 1.0) ('MOTS' 'SCAL') ('MOTS' 'SCAL') ;
ERRO = (VOLU0 '-' VOLU1) 'ABS' ;
'SI' (ERRO > 1.0D-12) ;
'ERREUR' ('CHAIN' 'Problem PYR5') ;
'FINSI' ;
*
******************************
**** PRI6 ********************
******************************
*
*
* Clockwise direction
*
'OPTION' 'DIME' 3 'ELEM' 'PRI6' ;
P1 = 0.1 0.0 0.1 ;
P3 = 1.0 1.1 -0.13 ;
P5 = 1.11 0.11 0.13 ;
P10 = 0.11 0.2 3.1 ;
P12 = 1.11 1. 2.7 ;
P14 = 1.1 0.11 3.23 ;
*
P1 P3 P5 P10 P12 P14 = P1 P3 P5 P10 P12 P14
'TOURNER' 15.0 (0.0 0.0 5.0) (1.1 1.1 6.0) ;
*
MAIL = 'MANUEL' 'PRI6' P1 P3 P5 P10 P12 P14 ;
MODM = 'MODELISER' MAIL 'EULER' ;
TABM = 'DOMA' MODM 'VF' ; QMAIL = TABM . 'QUAF' ;
QMAIL1 = 'CHANGER' QMAIL 'POI1' ;
*
'SI' GRAPH ;
'TRACER' (MAIL 'ET' QMAIL) 'TITRE' 'QUAF' ;
'TRACER' ((tabm . 'MAILLAGE') et ((tabm . 'CENTRE') 'COUL' 'ROUGE'))
'TITRE' 'CENTRE et MAILLAGE';
VEC1 = 'VECTEUR' (TABM . 'XXNORMAF') 0.1 'UX' 'UY' 'UZ' 'ROUG' ;
'TRACER' MAIL VEC1 'TITRE' 'Normals' ;
'FINSI' ;
*
P16 = 'POIN' 16 QMAIL1 ;
P17 = 'POIN' 17 QMAIL1 ;
P18 = 'POIN' 18 QMAIL1 ;
P19 = 'POIN' 19 QMAIL1 ;
P20 = 'POIN' 20 QMAIL1 ;
*
P21 = 'POIN' 21 QMAIL1 ;
*
* Volume as the volume of 14 tetrahedra
*
VOL1 = 'MESURE' ('MANUEL' 'TET4' P1 P3 P5 P21) ;
VOL2 = 'MESURE' ('MANUEL' 'TET4' P10 P12 P14 P21) ;
*
VOL3 = 'MESURE' ('MANUEL' 'TET4' P1 P3 P16 P21) ;
VOL4 = 'MESURE' ('MANUEL' 'TET4' P3 P12 P16 P21) ;
VOL5 = 'MESURE' ('MANUEL' 'TET4' P12 P10 P16 P21) ;
VOL6 = 'MESURE' ('MANUEL' 'TET4' P10 P1 P16 P21) ;
*
VOL7 = 'MESURE' ('MANUEL' 'TET4' P3 P5 P17 P21) ;
VOL8 = 'MESURE' ('MANUEL' 'TET4' P5 P14 P17 P21) ;
VOL9 = 'MESURE' ('MANUEL' 'TET4' P14 P12 P17 P21) ;
VOL10 = 'MESURE' ('MANUEL' 'TET4' P12 P3 P17 P21) ;
*
VOL11 = 'MESURE' ('MANUEL' 'TET4' P5 P14 P18 P21) ;
VOL12 = 'MESURE' ('MANUEL' 'TET4' P14 P10 P18 P21) ;
VOL13 = 'MESURE' ('MANUEL' 'TET4' P10 P1 P18 P21) ;
VOL14 = 'MESURE' ('MANUEL' 'TET4' P1 P5 P18 P21) ;
*
VOL = VOL1 '+' VOL2 '+' VOL3 '+' VOL4 '+' VOL5 '+' VOL6
'+' VOL7 '+' VOL8 '+' VOL9 '+' VOL10 '+' VOL11 '+' VOL12
'+' VOL13 '+' VOL14 ;
*
VOL0 = 'MAXIMUM' (TABM . 'XXVOLUM') ;
*
ERRO = (VOL0 '-' VOL) 'ABS' ;
*
'SI' (ERRO > 1.0D-6) ;
'MESSAGE' 'PRI6' ;
'ERREUR' 21 ;
'FINSI' ;
* Sommet
MAILS = 'CHANGER' MAIL 'POI1' ;
AA = 'DIFF' MAILS (TABM . 'SOMMET') ;
'SI' (('NBNO' AA) > 0 ) ;
'MESSAGE' 'PRI6' ;
'ERREUR' 21 ;
'FINSI' ;
* FACEL, FACEP, ELTFA (comparaison 'NAVIER_STOKES' - 'EULER')
MOD2 = 'MODELISER' QMAIL 'NAVIER_STOKES' 'LINE' ;
TAB2 = 'DOMA' MOD2 'TABLE' ;
AA = 'DIFF' (TAB2 . 'FACEL') (TABM . 'FACEL') ;
'SI' (('NBNO' AA) > 0 ) ;
'MESSAGE' 'PRI6' ;
'ERREUR' 21 ;
'FINSI' ;
AA = 'DIFF' (TAB2 . 'FACEP') (TABM . 'FACEP') ;
'SI' (('NBNO' AA) > 0 ) ;
'MESSAGE' 'PRI6' ;
'ERREUR' 21 ;
'FINSI' ;
MAIL1 = (TAB2 . 'ELTFA') ;
MAIL2 = (TABM . 'ELTFA') ;
AA = 'DIFF' MAIL1 MAIL2 ;
'SI' (('NBNO' AA) > 0 ) ;
'MESSAGE' 'PRI6' ;
'ERREUR' 21 ;
'FINSI' ;
* XXDIEMIN (comparaison 'NAVIER_STOKES' - 'EULER')
CHPO1 = 'ABS' (TABM . 'XXDIEMIN') ;
CHPO2 = 'ABS' ('DOMA' TAB2 'XXDIEMIN') ;
ERRO = 'MAXIMUM' (CHPO1 '-' CHPO2) 'ABS' ;
'SI' (ERRO > 1.0D-6) ;
'MESSAGE' 'TRI3 et QUA4' ;
'ERREUR' 21 ;
'FINSI' ;
*
* Here we deplace the center of the gravity and we put
* it outside.
* But 'DOMA' rechanges its position.
*
* 'SI' CHECKERR ;
* 'MESSAGE' 'PRI6' ;
* 'MESSAGE' 'On deplace le centre de l''elt dehors' ;
* 'MESSAGE' ;
* AA = 'CHANGER' 'POI1' QMAIL ;
* DP = ('POIN' 19 AA) 'MOIN' ('POIN' 21 AA) ;
* BB = 'MANUEL' 'CHPO' ('MANUEL' 'POI1' ('POIN' 21 AA)) 3
* 'UX' (2 '*' ('COORDONNEE' 1 DP))
* 'UY' (2 '*' ('COORDONNEE' 2 DP))
* 'UZ' (2 '*' ('COORDONNEE' 3 DP)) ;
* 'FORME' BB ;
* 'SI' GRAPH ;
* 'TRACER' QMAIL 'TITRE' 'Centre dehors' ;
* 'FINSI' ;
* MODM = 'MODELISER' QMAIL 'EULER' ;
* TABM = 'DOMA' MODM 'VF' ;
* 'OPTION' DONN 5 ;
* 'FINSI' ;
*
* Normals and surface
* We consider the QUA5 P1 P3 P12 P10 P16
* The point are clockwise oriented
PNOR1 = 0.5 '*' ('PVEC' (P1 'MOIN' P16) (P3 'MOIN' P16)) ;
PNOR2 = 0.5 '*' ('PVEC' (P3 'MOIN' P16) (P12 'MOIN' P16)) ;
PNOR3 = 0.5 '*' ('PVEC' (P12 'MOIN' P16) (P10 'MOIN' P16)) ;
PNOR4 = 0.5 '*' ('PVEC' (P10 'MOIN' P16) (P1 'MOIN' P16)) ;
PNOR = PNOR1 'PLUS' PNOR2 'PLUS' PNOR3 'PLUS' PNOR4 ;
XSURF = (('PSCAL' PNOR PNOR) '**' 0.5) ;
PNOR = -1 '*' (PNOR '/' XSURF) ;
AA = ('REDU' (tabm . 'XXNORMAF') ('MANUEL' 'POI1' P16)) ;
BB = 'MANUEL' 'CHPO' ('MANU' 'POI1' P16) 3
'UX' ('COORDONNEE' 1 PNOR)
'UY' ('COORDONNEE' 2 PNOR)
'UZ' ('COORDONNEE' 3 PNOR);
ERRO = 'MAXIMUM' (AA '-' BB) 'ABS' ;
'SI' (ERRO > 1.0D-6) ;
'MESSAGE' 'PRI6' ;
'ERREUR' 21 ;
'FINSI' ;
AA = ('REDU' (tabm . 'XXSURFAC') ('MANUEL' 'POI1' P16)) ;
BB = 'MANUEL' 'CHPO' ('MANU' 'POI1' P16) 1 'SCAL' XSURF ;
ERRO = 'MAXIMUM' (AA '-' BB) 'ABS' ;
'SI' (ERRO > 1.0D-6) ;
'MESSAGE' 'PRI6' ;
'ERREUR' 21 ;
'FINSI' ;
*
* We check that the normals modulus are 1
*
VALNOR = TABM . 'XXNORMAF' ;
VALSUR = TABM . 'XXSURFAC' ;
AA = 'PSCAL' VALNOR VALNOR ('MOTS' 'UX' 'UY' 'UZ')
('MOTS' 'UX' 'UY' 'UZ') ;
'SI' ((('MAXIMUM' AA) 'NEG' 1.0 1.0D-12) 'OU'
(('MINIMUM' AA) 'NEG' 1.0 1.0D-12)) ;
'ERREUR' 'PRI6' ;
'FINSI' ;
*
* We check that the sum of (normals times surfaces) is zero
*
AA = VALNOR '*' VALSUR ;
BB = 'MANUEL' 'CHPO' (TABM . 'FACE') 1 'SCAL' 1.0 ;
ERRO = 'XTY' AA BB ('MOTS' 'UX' 'UY' 'UZ')
('MOTS' 'SCAL' 'SCAL' 'SCAL') ;
'SI' (ERRO > 1.0D-12) ;
'ERREUR' 'PRI6';
'FINSI' ;
*
* We check one triangular face.
*
PCEN1 = (P1 'PLUS' P3 'PLUS' P5) '/' 3. ;
'ELIMINATION' ((TABM . 'FACE') 'ET' PCEN1) 0.0001 ;
PNOR = 0.5 '*' ('PVEC' (P3 'MOIN' P1) (P5 'MOIN' P1)) ;
XSURF = (('PSCAL' PNOR PNOR) '**' 0.5) ;
PNOR = (PNOR '/' XSURF) ;
AA = ('REDU' (tabm . 'XXNORMAF') ('MANUEL' 'POI1' PCEN1)) ;
BB = 'MANUEL' 'CHPO' ('MANU' 'POI1' PCEN1) 3
'UX' ('COORDONNEE' 1 PNOR)
'UY' ('COORDONNEE' 2 PNOR)
'UZ' ('COORDONNEE' 3 PNOR);
ERRO = 'MAXIMUM' (AA '-' BB) 'ABS' ;
'SI' (ERRO > 1.0D-6) ;
'MESSAGE' 'PRI6' ;
'ERREUR' 21 ;
'FINSI' ;
AA = ('REDU' (tabm . 'XXSURFAC') ('MANUEL' 'POI1' PCEN1)) ;
BB = 'MANUEL' 'CHPO' ('MANU' 'POI1' PCEN1) 1 'SCAL' XSURF ;
ERRO = 'MAXIMUM' (AA '-' BB) 'ABS' ;
'SI' (ERRO > 1.0D-6) ;
'MESSAGE' 'PRI6' ;
'ERREUR' 21 ;
'FINSI' ;
******************************
**** CUB8 ********************
******************************
*
* Particular case
*
'OPTION' 'DIME' 3 'ELEM' 'CUB8' ;
P1 = 0.0 0.0 0.0 ;
P2 = 1.0 0.0 0.0 ;
P3 = 1.0 1.0 0.0 ;
P4 = 0.0 1.0 0.0 ;
MAILB = 'DALLER' (P1 'DROIT' 4 P2) (P2 'DROIT' 4 P3)
(P3 'DROIT' 4 P4) (P4 'DROIT' 4 P1)
'PLAN' ;
MAIL = 'VOLUME' MAILB 'TRANSLATION' 4 (0.0 0.0 4.0) ;
MODM = 'MODELISER' MAIL 'EULER' ;
TABM = 'DOMA' MODM 'VF' ;
QMAIL = TABM . 'QUAF' ;
* Comparaison complete 'NAVIER_STOKES' - 'EULER'
MOD2 = 'MODELISER' QMAIL 'NAVIER_STOKES' 'LINE' ;
TAB2 = 'DOMA' MOD2 'TABLE' ;
TAB2 . 'PRECONDI' = 1 ;
AA = 'DIFF' (TAB2 . 'QUAF') (TABM . 'QUAF') ;
'SI' (('NBNO' AA) > 0 ) ;
'MESSAGE' 'TRI3 et QUA4' ;
'ERREUR' 21 ;
'FINSI' ;
AA = 'DIFF' (TAB2 . 'MAILLAGE') (TABM . 'MAILLAGE') ;
'SI' (('NBNO' AA) > 0 ) ;
'MESSAGE' 'TRI3 et QUA4' ;
'ERREUR' 21 ;
'FINSI' ;
AA = 'DIFF' (TAB2 . 'CENTRE') (TABM . 'CENTRE') ;
'SI' (('NBNO' AA) > 0 ) ;
'MESSAGE' 'TRI3 et QUA4' ;
'ERREUR' 21 ;
'FINSI' ;
AA = 'DIFF' (TAB2 . 'SOMMET') (TABM . 'SOMMET') ;
'SI' (('NBNO' AA) > 0 ) ;
'MESSAGE' 'TRI3 et QUA4' ;
'ERREUR' 21 ;
'FINSI' ;
AA = 'DIFF' (TAB2 . 'FACEL') (TABM . 'FACEL') ;
'SI' (('NBNO' AA) > 0 ) ;
'MESSAGE' 'TRI3 et QUA4' ;
'ERREUR' 21 ;
'FINSI' ;
AA = 'DIFF' (TAB2 . 'FACEP') (TABM . 'FACEP') ;
'SI' (('NBNO' AA) > 0 ) ;
'MESSAGE' 'TRI3 et QUA4' ;
'ERREUR' 21 ;
'FINSI' ;
AA = 'DIFF' (TAB2 . 'ELTFA') (TABM . 'ELTFA') ;
'SI' (('NBNO' AA) > 0 ) ;
'MESSAGE' 'TRI3 et QUA4' ;
'ERREUR' 21 ;
'FINSI' ;
* XXSURFAC, XXNORMAF, XXDIEMIN (comparaison 'NAVIER_STOKES' - 'EULER')
CHPO1 = 'DOMA' TAB2 'XXSURFAC' ;
CHPO2 = TABM . 'XXSURFAC' ;
ERRO = 'MAXIMUM' (CHPO1 '-' CHPO2) 'ABS' ;
'SI' (ERRO > 1.0D-6) ;
'MESSAGE' 'TRI3 et QUA4' ;
'ERREUR' 21 ;
'FINSI' ;
CHPO1 = 'DOMA' TAB2 'XXVOLUM' ;
CHPO2 = TABM . 'XXVOLUM' ;
ERRO = 'MAXIMUM' (CHPO1 '-' CHPO2) 'ABS' ;
'SI' (ERRO > 1.0D-6) ;
'MESSAGE' 'TRI3 et QUA4' ;
'ERREUR' 21 ;
'FINSI' ;
CHPO1 = 'ABS' (TABM . 'XXNORMAF') ;
CHPO2 = 'ABS' ('DOMA' TAB2 'XXNORMAF') ;
ERRO = 'MAXIMUM' (CHPO1 '-' CHPO2) 'ABS' ;
'SI' (ERRO > 1.0D-6) ;
'MESSAGE' 'TRI3 et QUA4' ;
'ERREUR' 21 ;
'FINSI' ;
* Normales dans la meme direction que FACEL
NNO = 'NBEL' (TABM . 'FACEL') ;
'REPETER' BL1 NNO ;
AA = 'ELEM' &BL1 (TABM . 'FACEL') ;
BB = 'CHANGER' AA 'POI1' ;
P1 = 'POIN' 1 BB ;
P2 = 'POIN' 2 BB ;
VALX = ('COORDONNEE' 1 P2) '-' ('COORDONNEE' 1 P1) ;
VALY = ('COORDONNEE' 2 P2) '-' ('COORDONNEE' 2 P1) ;
VALZ = ('COORDONNEE' 3 P2) '-' ('COORDONNEE' 3 P1) ;
VALX1 = 'EXTRAIRE' (TABM . 'XXNORMAF') 'UX' P2 ;
VALY1 = 'EXTRAIRE' (TABM . 'XXNORMAF') 'UY' P2 ;
VALZ1 = 'EXTRAIRE' (TABM . 'XXNORMAF') 'UZ' P2 ;
VAL = (VALX '*' VALX1) '+' (VALY '*' VALY1)
'+' (VALZ '*' VALZ1) ;
'SI' (VAL < 0) ;
'MESSAGE' 'CUB8' ;
'ERREUR' 21 ;
'FINSI' ;
'FIN' BL1 ;
CHPO1 = (TABM . 'XXDIEMIN') ;
CHPO2 = ('DOMA' TAB2 'XXDIEMIN') ;
ERRO = 'MAXIMUM' (CHPO1 '-' CHPO2) 'ABS' ;
'SI' (ERRO > 1.0D-6) ;
'MESSAGE' 'TRI3 et QUA4' ;
'ERREUR' 21 ;
'FINSI' ;
*
**** MATROT dans le cas NAVIER_STOKES
*
*
* General case
* Clockwise orientation
*
'OPTION' 'DIME' 3 'ELEM' 'CUB8' ;
P1 = 0.10 0.20 0.11 ;
P3 = 0.01 1.03 -0.11 ;
P5 = 1.03 1.04 0.05 ;
P7 = 1.01 0.02 0.03 ;
P13 = 0.05 0.04 2.11 ;
P15 = 0.08 1.01 1.91 ;
P17 = 1.07 1.02 2.15 ;
P19 = 1.06 0.03 2.13 ;
*
* P1 P3 P5 P7 P13 P15 P17 P19 = P1 P3 P5 P7 P13 P15 P17 P19
* 'TOURNER' 15.0 (0.0 0.0 5.0) (1.1 1.1 6.0) ;
*
MAIL = 'MANUEL' 'CUB8' P1 P3 P5 P7 P13 P15 P17 P19 ;
MODM = 'MODELISER' MAIL 'EULER' ; QMAIL = TABM . 'QUAF' ;
TABM = 'DOMA' MODM 'VF' ;
QMAIL = TABM . 'QUAF' ;
*
QMAIL1 = 'CHANGER' QMAIL 'POI1' ;
P21 = 'POIN' QMAIL1 21 ;
P22 = 'POIN' QMAIL1 22 ;
P23 = 'POIN' QMAIL1 23 ;
P24 = 'POIN' QMAIL1 24 ;
P25 = 'POIN' QMAIL1 25 ;
P26 = 'POIN' QMAIL1 26 ;
P27 = 'POIN' QMAIL1 27 ;
*
'SI' GRAPH ;
'TRACER' (MAIL 'ET' QMAIL) 'TITRE' 'QUAF' ;
'TRACER' ((tabm . 'MAILLAGE') et ((tabm . 'CENTRE') 'COUL' 'ROUGE'))
'TITRE' 'CENTRE et MAILLAGE';
'FINSI' ;
*
AA = 'DIFF' MAIL (TABM . 'MAILLAGE') ;
'SI' ('NEG' ('NBEL' AA) 0) ;
'MESSAGE' 'CUB8' ;
'ERREUR' 5 ;
'FINSI' ;
*
*
* Volume
*
VOL = 0.0D0 ;
QC = P27 ;
'REPETER' BL1 6 ;
'SI' ('EGA' &BL1 1) ;
Q1 = P1 ; Q2 = P3 ; Q3 = P5 ; Q4 = P7 ; QF = P25 ;
'FINSI' ;
'SI' ('EGA' &BL1 2) ;
Q1 = P13 ; Q2 = P15 ; Q3 = P17 ; Q4 = P19 ; QF = P26 ;
'FINSI' ;
'SI' ('EGA' &BL1 3) ;
Q1 = P1 ; Q2 = P3 ; Q3 = P15 ; Q4 = P13 ; QF = P21 ;
'FINSI' ;
'SI' ('EGA' &BL1 4) ;
Q1 = P3 ; Q2 = P5 ; Q3 = P17 ; Q4 = P15 ; QF = P22 ;
'FINSI' ;
'SI' ('EGA' &BL1 5) ;
Q1 = P7 ; Q2 = P5 ; Q3 = P17 ; Q4 = P19 ; QF = P23 ;
'FINSI' ;
'SI' ('EGA' &BL1 6) ;
Q1 = P1 ; Q2 = P13 ; Q3 = P19 ; Q4 = P7 ; QF = P24 ;
'FINSI' ;
VOL1 = 'MESURE' ('MANUEL' 'TET4' Q1 Q2 QF QC) ;
VOL2 = 'MESURE' ('MANUEL' 'TET4' Q2 Q3 QF QC) ;
VOL3 = 'MESURE' ('MANUEL' 'TET4' Q3 Q4 QF QC) ;
VOL4 = 'MESURE' ('MANUEL' 'TET4' Q4 Q1 QF QC) ;
VOL = VOL '+' VOL1 '+' VOL2 '+' VOL3 '+' VOL4 ;
'FIN' BL1 ;
*
VOL0 = 'MAXIMUM' (TABM . 'XXVOLUM') ;
*
ERRO = (VOL0 '-' VOL) 'ABS' ;
*
'SI' (ERRO > 1.0D-6) ;
'MESSAGE' 'CUB8' ;
'ERREUR' 21 ;
'FINSI' ;
* Sommet
MAILS = 'CHANGER' MAIL 'POI1' ;
AA = 'DIFF' MAILS (TABM . 'SOMMET') ;
'SI' (('NBNO' AA) > 0 ) ;
'MESSAGE' 'CUB8' ;
'ERREUR' 21 ;
'FINSI' ;
* FACEL, FACEP, ELTFA (comparaison 'NAVIER_STOKES' - 'EULER')
MOD2 = 'MODELISER' QMAIL 'NAVIER_STOKES' 'LINE' ;
TAB2 = 'DOMA' MOD2 'TABLE' ;
AA = 'DIFF' (TAB2 . 'FACEL') (TABM . 'FACEL') ;
'SI' (('NBNO' AA) > 0 ) ;
'MESSAGE' 'CUB8' ;
'ERREUR' 21 ;
'FINSI' ;
AA = 'DIFF' (TAB2 . 'FACEP') (TABM . 'FACEP') ;
'SI' (('NBNO' AA) > 0 ) ;
'MESSAGE' 'CUB8' ;
'ERREUR' 21 ;
'FINSI' ;
*MAIL1 = 'CHANGER' (TAB2 . 'ELTFA') 'POI1' ;
*MAIL2 = 'CHANGER' (TABM . 'ELTFA') 'POI1' ;
MAIL1 = (TAB2 . 'ELTFA') ;
MAIL2 = (TABM . 'ELTFA') ;
AA = 'DIFF' MAIL1 MAIL2 ;
'SI' (('NBNO' AA) > 0 ) ;
'MESSAGE' 'CUB8' ;
'ERREUR' 21 ;
'FINSI' ;
* XXDIEMIN (comparaison 'NAVIER_STOKES' - 'EULER')
CHPO1 = 'ABS' (TABM . 'XXDIEMIN') ;
CHPO2 = 'ABS' ('DOMA' TAB2 'XXDIEMIN') ;
ERRO = 'MAXIMUM' (CHPO1 '-' CHPO2) 'ABS' ;
'SI' (ERRO > 1.0D-6) ;
'MESSAGE' 'TRI3 et QUA4' ;
'ERREUR' 21 ;
'FINSI' ;
* Normals and surface
*
* We consider the QUA5 P1 P3 P5 P7 P25
* The point are clockwise oriented
*
PNOR1 = 0.5 '*' ('PVEC' (P1 'MOIN' P25) (P3 'MOIN' P25)) ;
PNOR2 = 0.5 '*' ('PVEC' (P3 'MOIN' P25) (P5 'MOIN' P25)) ;
PNOR3 = 0.5 '*' ('PVEC' (P5 'MOIN' P25) (P7 'MOIN' P25)) ;
PNOR4 = 0.5 '*' ('PVEC' (P7 'MOIN' P25) (P1 'MOIN' P25)) ;
PNOR = PNOR1 'PLUS' PNOR2 'PLUS' PNOR3 'PLUS' PNOR4 ;
XSURF = (('PSCAL' PNOR PNOR) '**' 0.5) ;
PNOR = (PNOR '/' XSURF) ;
AA = ('REDU' (tabm . 'XXNORMAF') ('MANUEL' 'POI1' P25)) ;
BB = 'MANUEL' 'CHPO' ('MANU' 'POI1' P25) 3
'UX' ('COORDONNEE' 1 PNOR)
'UY' ('COORDONNEE' 2 PNOR)
'UZ' ('COORDONNEE' 3 PNOR);
ERRO = 'MAXIMUM' (AA '-' BB) 'ABS' ;
'SI' (ERRO > 1.0D-6) ;
'MESSAGE' 'CUB8' ;
'ERREUR' 21 ;
'FINSI' ;
AA = ('REDU' (tabm . 'XXSURFAC') ('MANUEL' 'POI1' P25)) ;
BB = 'MANUEL' 'CHPO' ('MANU' 'POI1' P25) 1 'SCAL' XSURF ;
ERRO = 'MAXIMUM' (AA '-' BB) 'ABS' ;
'SI' (ERRO > 1.0D-6) ;
'MESSAGE' 'CUB8' ;
'ERREUR' 21 ;
'FINSI' ;
*
* We check that the normals modulus are 1
*
VALNOR = TABM . 'XXNORMAF' ;
VALSUR = TABM . 'XXSURFAC' ;
AA = 'PSCAL' VALNOR VALNOR ('MOTS' 'UX' 'UY' 'UZ')
('MOTS' 'UX' 'UY' 'UZ') ;
'SI' ((('MAXIMUM' AA) 'NEG' 1.0 1.0D-12) 'OU'
(('MINIMUM' AA) 'NEG' 1.0 1.0D-12)) ;
'ERREUR' 'CUB8' ;
'FINSI' ;
*
* We check that the sum of (normals times surfaces) is zero
*
AA = VALNOR '*' VALSUR ;
BB = 'MANUEL' 'CHPO' (TABM . 'FACE') 1 'SCAL' 1.0 ;
ERRO = 'XTY' AA BB ('MOTS' 'UX' 'UY' 'UZ')
('MOTS' 'SCAL' 'SCAL' 'SCAL') ;
'SI' (ERRO > 1.0D-12) ;
'ERREUR' 'CUB8';
'FINSI' ;
****************************************
***** GENERAL **************************
****************************************
'OPTION' 'DIME' 3 'ELEM' 'CUB8' ;
P1 = 0.0 0.0 0.0 ;
P2 = 1.0 0.0 0.0 ;
P3 = 1.0 1.0 0.0 ;
P4 = 0.0 1.0 0.0 ;
P5 = 0.0 0.0 1.0 ;
P6 = 1.0 0.0 1.0 ;
P7 = 1.0 1.0 1.0 ;
P8 = 0.0 1.0 1.0 ;
P1P2 = P1 'DROIT' 4 P2 ;
P2P3 = P2 'DROIT' 5 P3 ;
P3P4 = P3 'DROIT' 4 P4 ;
P4P1 = P4 'DROIT' 5 P1 ;
P5P6 = P5 'DROIT' 4 P6 ;
P6P7 = P6 'DROIT' 5 P7 ;
P7P8 = P7 'DROIT' 4 P8 ;
P8P5 = P8 'DROIT' 5 P5 ;
P1P5 = P1 'DROIT' 4 P5 ;
P2P6 = P2 'DROIT' 5 P6 ;
P3P7 = P3 'DROIT' 4 P7 ;
P4P8 = P4 'DROIT' 5 P8 ;
SURFB = 'SURFACE' (P1P2 'ET' P2P3 'ET' P3P4 'ET' P4P1) 'PLAN' ;
SURFH = 'SURFACE' (P5P6 'ET' P6P7 'ET' P7P8 'ET' P8P5) 'PLAN' ;
SURFL1 = 'SURFACE' (P1P5 'ET' ('INVERSE' P8P5) 'ET'
('INVERSE' P4P8) 'ET' P4P1) 'PLAN' ;
SURFL2 = 'SURFACE' (P1P2 'ET' P2P6 'ET' ('INVERSE' P5P6) 'ET'
('INVERSE' P1P5)) 'PLAN' ;
SURFL3 = 'SURFACE' (P2P6 'ET' P6P7 'ET' ('INVERSE' P3P7) 'ET'
('INVERSE' P2P3)) 'PLAN' ;
SURFL4 = 'SURFACE' (('INVERSE' P3P4) 'ET' P3P7 'ET' P7P8 'ET'
('INVERSE' P4P8)) 'PLAN' ;
SURFT = SURFB 'ET' SURFH 'ET' SURFL1 'ET' SURFL2 'ET' SURFL3
'ET' SURFL4 ;
MAIL = 'VOLUME' SURFT ;
*
MODM = 'MODELISER' MAIL 'EULER' ;
TABM = 'DOMA' MODM 'VF' ; QMAIL = TABM . 'QUAF' ;
*
'SI' GRAPH ;
'TRACER' (MAIL 'ET' QMAIL) 'TITRE' 'QUAF' ;
'TRACER' ((tabm . 'MAILLAGE') et ((tabm . 'CENTRE') 'COUL' 'ROUGE'))
'TITRE' 'CENTRE et MAILLAGE';
'FINSI' ;
*
AA = 'DIFF' MAIL (TABM . 'MAILLAGE') ;
'SI' ('NEG' ('NBEL' AA) 0) ;
'MESSAGE' 'CUB8' ;
'ERREUR' 5 ;
'FINSI' ;
*
*** Border Surfaces
*
MODMS = 'MODELISER' SURFT 'EULER' ;
TABMS = 'DOMA' MODMS 'VF' ;
QSURFT = TABMS . 'QUAF' ;
'ELIMINATION' (TABMS . 'QUAF') (TABM . 'QUAF') 0.0001 ;
VALNOR = 'REDU' (TABM . 'XXSURFAC') (TABMS . 'CENTRE') ;
VALSUR = 'REDU' (TABM . 'XXNORMAF') (TABMS . 'CENTRE') ;
AA = VALNOR '*' VALSUR ;
BB = 'MANUEL' 'CHPO' (TABM . 'FACE') 1 'SCAL' 1.0 ;
ERRO = 'XTY' AA BB ('MOTS' 'UX' 'UY' 'UZ')
('MOTS' 'SCAL' 'SCAL' 'SCAL') ;
'SI' (ERRO > 1.0D-12) ;
'ERREUR' 'GENE';
'FINSI' ;
*
LISTYP = (TABMS . 'MAILLAGE') 'ELEM' 'TYPE' ;
*
NELEM = 0 ;
'REPETER' BL1 ('DIME' LISTYP) ;
MAIL1 = 'ELEM' (TABMS . 'MAILLAGE') ('EXTRAIRE' LISTYP &BL1) ;
'REPETER' BL2 ('NBEL' MAIL1) ;
ELE1 = 'ELEM' MAIL1 &BL2 ;
AA = 'MESURE' ELE1 ;
NELEM = NELEM '+' 1;
P1 = 'POIN' (TABMS . 'CENTRE') NELEM ;
BB = 'EXTRAIRE' (TABMS . 'XXVOLUM') 'SCAL' P1 ;
ERRO = (AA '-' BB) 'ABS' ;
'SI' (ERRO > 1.0D-6) ;
'MESSAGE' 'GENE' ;
'ERREUR' 21 ;
'FINSI' ;
'FIN' BL2 ;
'FIN' BL1 ;
* Sommet
MAILS = 'CHANGER' MAIL 'POI1' ;
AA = 'DIFF' MAILS (TABM . 'SOMMET') ;
'SI' (('NBNO' AA) > 0 ) ;
'MESSAGE' 'GENE' ;
'ERREUR' 21 ;
'FINSI' ;
* FACEL, FACEP, ELTFA (comparaison 'NAVIER_STOKES' - 'EULER')
MOD2 = 'MODELISER' QMAIL 'NAVIER_STOKES' 'LINE' ;
TAB2 = 'DOMA' MOD2 'TABLE' ;
AA = 'DIFF' (TAB2 . 'FACE') (TABM . 'FACE') ;
'SI' (('NBNO' AA) > 0 ) ;
'MESSAGE' 'GENE' ;
'ERREUR' 21 ;
'FINSI' ;
AA = 'DIFF' (TAB2 . 'FACEL') (TABM . 'FACEL') ;
'SI' (('NBNO' AA) > 0 ) ;
'MESSAGE' 'TRI3 et QUA4' ;
'ERREUR' 21 ;
'FINSI' ;
AA = 'DIFF' (TAB2 . 'FACEP') (TABM . 'FACEP') ;
'SI' (('NBNO' AA) > 0 ) ;
'MESSAGE' 'TRI3 et QUA4' ;
'ERREUR' 21 ;
'FINSI' ;
MAIL1 = (TAB2 . 'ELTFA') ;
MAIL2 = (TABM . 'ELTFA') ;
AA = 'DIFF' MAIL1 MAIL2 ;
'SI' (('NBNO' AA) > 0 ) ;
'MESSAGE' 'TRI3 et QUA4' ;
'ERREUR' 21 ;
'FINSI' ;
* XXDIEMIN (comparaison 'NAVIER_STOKES' - 'EULER')
CHPO1 = 'ABS' (TABM . 'XXDIEMIN') ;
CHPO2 = 'ABS' ('DOMA' TAB2 'XXDIEMIN') ;
ERRO = 'MAXIMUM' (CHPO1 '-' CHPO2) 'ABS' ;
'SI' (ERRO > 1.0D-6) ;
'MESSAGE' 'TRI3 et QUA4' ;
'ERREUR' 21 ;
'FINSI' ;
*
* We check that the normals modulus are 1
*
VALNOR = TABM . 'XXNORMAF' ;
VALSUR = TABM . 'XXSURFAC' ;
AA = 'PSCAL' VALNOR VALNOR ('MOTS' 'UX' 'UY' 'UZ')
('MOTS' 'UX' 'UY' 'UZ') ;
'SI' ((('MAXIMUM' AA) 'NEG' 1.0 1.0D-12) 'OU'
(('MINIMUM' AA) 'NEG' 1.0 1.0D-12)) ;
'ERREUR' 'CUB8' ;
'FINSI' ;
*
* We check that each element satisfies the property
* (normals times surfaces) = zero
*
* ELTFA and MAIL have the same structure
*
LISTYP = (TABM . 'ELTFA') 'ELEM' 'TYPE' ;
LISTYP1 = (TABM . 'QUAF') 'ELEM' 'TYPE' ;
LISTYP0 = (TABM . 'MAILLAGE') 'ELEM' 'TYPE' ;
*
NELEM = 0 ;
* Volume as sum of single volumes
VOL = 0.0 ;
'REPETER' BL1 ('DIME' LISTYP) ;
MAIL0 = 'ELEM' (TABM . 'MAILLAGE') ('EXTRAIRE' LISTYP0 &BL1) ;
MAIL1 = 'ELEM' (TABM . 'ELTFA') ('EXTRAIRE' LISTYP &BL1) ;
MAIL2 = 'ELEM' (TABM . 'QUAF') ('EXTRAIRE' LISTYP1 &BL1) ;
NM1 = 'NBEL' MAIL1 ;
NM2 = 'NBEL' MAIL2 ;
'SI' ('NEG' NM1 NM2) ;
'ERREUR' 21 ;
'FINSI' ;
'REPETER' BL2 ('NBEL' MAIL1) ;
NELEM = NELEM '+' 1 ;
ELEM1 = 'ELEM' MAIL0 &BL2 ;
ELE1 = 'ELEM' MAIL1 &BL2 ;
ELE2 = 'CHANGER' ELE1 'POI1' ;
NM2 = 'NBNO' ELE2 ;
ELE3 = 'ELEM' MAIL2 &BL2 ;
ELE4 = 'CHANGER' ELE3 'POI1' ;
NM4 = 'NBNO' ELE4 ;
ELE5 = 'DIFF' ELE4 ELE2 ;
NM5 = 'NBNO' ELE5 ;
'SI' ('NEG' (NM2 '+' NM5) NM4) ;
'ERREUR' 'QUAF and ELTFA non compatible' ;
'ERREUR' 21 ;
'FINSI' ;
MOD2 = 'MODELISER' ELEM1 'EULER' ;
TAB2 = 'DOMA' MOD2 'VF' ;
ELE7 = TAB2 . 'QUAF' ;
'ELIMINATION' ELE3 ELE7 0.0001 ;
AA = 'DIFF' ELE7 ELE3 ;
'SI' ('NEG' ('NBEL' AA) 0) ;
'MESSAGE' 'GENE' ;
'ERREUR' 'Anormale' ;
'FINSI' ;
VOL = VOL '+' ('MAXIMUM' (TAB2 . 'XXVOLUM')) ;
PCEN = 'POIN' (TABM . 'CENTRE') NELEM ;
DSURF = 0.0 0.0 0.0 ;
'REPETER' BL3 ('NBEL' ELE2) ;
PFAC = 'POIN' &BL3 ELE2 ;
SURFF = 'EXTRAIRE' (TABM . 'XXSURFAC') 'SCAL' PFAC ;
PNORM = ('EXTRAIRE' (TABM . 'XXNORMAF') 'UX' PFAC)
('EXTRAIRE' (TABM . 'XXNORMAF') 'UY' PFAC)
('EXTRAIRE' (TABM . 'XXNORMAF') 'UZ' PFAC) ;
PCF = PFAC 'MOIN' PCEN ;
DORIE = 'SIGNE' ('PSCAL' PNORM PCF) ;
DSURF = DSURF 'PLUS' (DORIE * PNORM * SURFF) ;
'FIN' BL3 ;
AA = 'MAXIMUM' ('ABS' ('PROG' ('COORDONNEE' 1 DSURF)
('COORDONNEE' 2 DSURF) ('COORDONNEE' 3 DSURF))) ;
'SI' (AA > 1.0D-12) ;
'MESSAGE' 'GENE' ;
'ERREUR' 21 ;
'FINSI' ;
'FIN' BL2 ;
'FIN' BL1 ;
*
* Volume
*
AA = 'MESURE' MAIL ;
CHPUN = 'MANUEL' 'CHPO' (TABM . 'CENTRE') 1 'SCAL' 1.0 ;
BB = 'XTY' (TABM . 'XXVOLUM') CHPUN ('MOTS' 'SCAL') ('MOTS' 'SCAL') ;
ERRO = (AA '-' BB) 'ABS' ;
'SI' (ERRO > 5.0D-6) ;
'MESSAGE' 'GENE' ;
'ERREUR' 21 ;
'FINSI' ;
ERRO = VOL '-' BB ;
'SI' (ERRO > 5.0D-6) ;
'MESSAGE' 'GENE' ;
'ERREUR' 21 ;
'FINSI' ;
*
* Matrot
*
AA = 'EXCO' (TABM . 'MATROT') ('MOTS' 'MX' 'MY' 'MZ')
('MOTS' 'UX' 'UY' 'UZ') ;
ERRO ='MAXIMUM' (AA '-' (TABM . 'XXNORMAF')) 'ABS' ;
'SI' (ERRO > 1.0D-12) ;
'ERREUR' ('CHAIN' 'Problem ' ('VALEUR' 'ELEM')) ;
'FINSI' ;
*
BB = 'EXCO' (TABM . 'MATROT') ('MOTS' 'RX' 'RY' 'RZ')
('MOTS' 'UX' 'UY' 'UZ') ;
ERRO = 'MAXIMUM' ('PSCAL' AA BB ('MOTS' 'UX' 'UY' 'UZ')
('MOTS' 'UX' 'UY' 'UZ'))
'ABS' ;
'SI' (ERRO > 1.0D-12) ;
'ERREUR' ('CHAIN' 'Problem ' ('VALEUR' 'ELEM')) ;
'FINSI' ;
*
COMPZ = 'PSCAL' AA BB ('MOTS' 'UX') ('MOTS' 'UY') ;
COMPZ = COMPZ '-' ('PSCAL' AA BB ('MOTS' 'UY') ('MOTS' 'UX')) ;
COMPZ1 = 'EXCO' (TABM . 'MATROT') ('MOTS' 'UZ')
('MOTS' 'SCAL') ;
ERRO = 'MAXIMUM' (COMPZ '-' COMPZ1) 'ABS' ;
'SI' (ERRO > 1.0D-12) ;
'ERREUR' ('CHAIN' 'Problem ' ('VALEUR' 'ELEM')) ;
'FINSI' ;
*
COMPX = 'PSCAL' AA BB ('MOTS' 'UY') ('MOTS' 'UZ') ;
COMPX = COMPX '-' ('PSCAL' AA BB ('MOTS' 'UZ') ('MOTS' 'UY')) ;
COMPX1 = 'EXCO' (TABM . 'MATROT') ('MOTS' 'UX')
('MOTS' 'SCAL') ;
ERRO = 'MAXIMUM' (COMPX '-' COMPX1) 'ABS' ;
'SI' (ERRO > 1.0D-12) ;
'ERREUR' ('CHAIN' 'Problem ' ('VALEUR' 'ELEM')) ;
'FINSI' ;
*
COMPY = 'PSCAL' AA BB ('MOTS' 'UZ') ('MOTS' 'UX') ;
COMPY = COMPY '-' ('PSCAL' AA BB ('MOTS' 'UX') ('MOTS' 'UZ')) ;
COMPY1 = 'EXCO' (TABM . 'MATROT') ('MOTS' 'UY')
('MOTS' 'SCAL') ;
ERRO = 'MAXIMUM' (COMPY '-' COMPY1) 'ABS' ;
'SI' (ERRO > 1.0D-12) ;
'ERREUR' ('CHAIN' 'Problem ' ('VALEUR' 'ELEM')) ;
'FINSI' ;
'FIN' ;
© Cast3M 2003 - All rights reserved.
Disclaimer