* 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 ************* ***************************** P1 = 1.11 0.0 ; P2 = 1.0 1.13 ; MAIL = P1 'DROIT' 5 P2 ; * * MODM = 'MODELISER' MAIL 'EULER' ; QMAIL = TABM . 'QUAF' ; 'SI' GRAPH ; 'TRACER' (MAIL 'ET' QMAIL) 'TITRE' 'QUAF' ; 'TITRE' 'CENTRE et MAILLAGE'; 'FINSI' ; 'MESSAGE' 'SEG3' ; 'ERREUR' 5 ; 'FINSI' ; * Volume VOL0 = VOL0 '**' 0.5 ; 'DISCRETE' ; ERRO = (VOL0 '-' VOL1) 'ABS' ; 'SI' (ERRO > 1.0D-6) ; 'MESSAGE' 'SEG3' ; 'ERREUR' 5 ; 'FINSI' ; ***************************** **** SEG3 in 3D ************* ***************************** 'SI' CHECKERR ; 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' ; 'FINSI' ; ***************************** **** TRI3 in 3D ************* ***************************** 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) ; (P4 'DROIT' 1 P1) 'PLAN' ; * MODM = 'MODELISER' MAIL 'EULER' ; QMAIL = TABM . 'QUAF' ; * 'SI' GRAPH ; 'TRACER' (MAIL 'ET' QMAIL) 'TITRE' 'QUAF' ; 'TITRE' 'CENTRE et MAILLAGE'; 'FINSI' ; * 'MESSAGE' 'TRI3' ; 'ERREUR' 5 ; 'FINSI' ; * Volume 'REPETER' BL1 NN ; BB = 'EXTRAIRE' (TABM . 'XXVOLUM') 'SCAL' 'LISTE' BB ; ERRO = (AA '-' BB) 'ABS' ; 'SI' (ERRO > 1.0D-6) ; 'MESSAGE' 'TRI3' ; 'ERREUR' 5 ; 'FINSI' ; 'FIN' BL1 ; ***************************** **** QUA4 in 3D ************* ***************************** 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) ; (P4 'DROIT' 2 P1) 'PLAN' ; * MODM = 'MODELISER' MAIL 'EULER' ; QMAIL = TABM . 'QUAF' ; 'SI' GRAPH ; 'TRACER' (MAIL 'ET' QMAIL) 'TITRE' 'QUAF' ; 'TITRE' 'CENTRE et MAILLAGE'; 'FINSI' ; * 'MESSAGE' 'QUA4' ; 'ERREUR' 5 ; 'FINSI' ; * Volume 'REPETER' BL1 NN ; * * NB If the elts are not in the same plane * 'MESURE' gives not the same results * BB = 'EXTRAIRE' (TABM . 'XXVOLUM') 'SCAL' ERRO = (AA '-' BB) 'ABS' ; 'SI' (ERRO > 1.0D-6) ; 'MESSAGE' 'QUA4' ; 'ERREUR' 21 ; 'FINSI' ; 'FIN' BL1 ; ***************************** **** TRI3 and QUA4 in 3D *** ***************************** 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 ; (P4 'DROIT' 2 P1) 'PLAN' ; 'OPTION' 'ELEM' 'CUB8' ; (P6 'DROIT' 2 P3) 'ET' (P3 'DROIT' 2 P4)) 'PLAN' ; MAIL = MAIL1 'ET' MAIL2 ; 'ELIMINATION' MAIL 0.0001 ; * MODM = 'MODELISER' MAIL 'EULER' ; QMAIL = TABM . 'QUAF' ; * 'SI' GRAPH ; 'TRACER' (MAIL 'ET' QMAIL) 'TITRE' 'QUAF' ; 'TITRE' 'CENTRE et MAILLAGE'; 'FINSI' ; * 'MESSAGE' 'TRI3 et QUA4' ; 'ERREUR' 5 ; 'FINSI' ; * Volume MAIL = (TABM . 'MAILLAGE') ; NNE=0 ; 'REPETER' BL0 NN0 ; 'REPETER' BL1 NN ; NNE = NNE '+' 1 ; * * NB If the elts are not on the same plane * 'MESURE' gives not the same results * BB = 'EXTRAIRE' (TABM . 'XXVOLUM') 'SCAL' ERRO = (AA '-' BB) 'ABS' ; 'SI' (ERRO > 1.0D-6) ; 'MESSAGE' 'TRI3 et QUA4' ; 'ERREUR' 21 ; 'FINSI' ; 'FIN' BL1 ; 'FIN' BL0 ; ***************************** **** TRI3 in 2D ************* ***************************** P1 = 0.0 0.0 ; P2 = 1.0 0.0 ; P3 = 1.11 1.13 ; P4 = 0.0 1.0 ; (P4 'DROIT' 1 P1) 'PLAN' ; * MODM = 'MODELISER' MAIL 'EULER' ; QMAIL = TABM . 'QUAF' ; * 'SI' GRAPH ; 'TRACER' (MAIL 'ET' QMAIL) 'TITRE' 'QUAF' ; 'TITRE' 'CENTRE et MAILLAGE'; VEC1 = 'VECTEUR' (TABM . 'XXNORMAF') 0.1 'UX' 'UY' 'ROUG' ; 'TRACER' MAIL VEC1 'TITRE' 'Normals' ; 'FINSI' ; * 'MESSAGE' 'TRI3' ; 'ERREUR' 5 ; 'FINSI' ; ***************************** **** QUA4 bizarre in 2D ***** ***************************** 'SI' CHECKERR ; * Center of gravity outside the domain P1 = 0.0 0.0 ; P2 = 1.0 0.0 ; P3 = 1.0 1.0 ; P4 = 0.75 0.1 ; (P4 'DROIT' 1 P1) 'PLAN' ; * MODM = 'MODELISER' MAIL 'EULER' ; 'FINSI' ; * * Element with singular Jacobian allowed since * the center of gravity is inside of the elements * Clockwise orientation of the noeuds. * 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' ; QMAIL = TABM . 'QUAF' ; 'SI' GRAPH ; 'TRACER' (MAIL 'ET' QMAIL) 'TITRE' 'QUAF' ; 'TRACER' ((tabm . 'MAILLAGE') et 'TITRE' 'CENTRE et MAILLAGE'; VEC1 = 'VECTEUR' (TABM . 'XXNORMAF') 0.1 'UX' 'UY' 'ROUG' ; 'TRACER' MAIL VEC1 'TITRE' 'Normals' ; 'FINSI' ; * '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) ; PCEN = PCEN '/' (VOL1 '+' VOL2) ; 'ELIMINATION' ((TABM . CENTRE) 'ET' PCEN) 0.001 ; '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 ; VAL = (((XP1 '-' XP2) '**' 2) '+' ((YP2 '-' YP1) '**' 2)) '**' 0.5 ; ((YP1 '-' YP2) '/' VAL) 'UY' ((XP2 '-' XP1) '/' VAL) ; ERRO = 'MAXIMUM' (VALNOR1 '-' VALNOR2) 'ABS' ; 'SI' (ERRO > 1.0D-12) ; 'FINSI' ; * * We check that the sum of (normals times surfaces) is zero * VALNOR = TABM . 'XXNORMAF' ; VALSUR = TABM . 'XXSURFAC' ; AA = VALNOR '*' VALSUR ; 'SI' (ERRO > 1.0D-12) ; 'FINSI' ; * * We check that the normals modulus are 1 * 'SI' ((('MAXIMUM' AA) 'NEG' 1.0 1.0D-12) 'OU' (('MINIMUM' AA) 'NEG' 1.0 1.0D-12)) ; 'ERREUR' ('CHAIN' 'Problem QUA4') ; 'FINSI' ; * * Matrot * ERRO ='MAXIMUM' (AA '-' (TABM . 'XXNORMAF')) 'ABS' ; 'SI' (ERRO > 1.0D-12) ; 'FINSI' ; * 'ABS' ; 'SI' (ERRO > 1.0D-12) ; 'FINSI' ; * Vector product ERRO = 'MAXIMUM' (COMPZ '-' 1.) 'ABS' ; 'SI' (ERRO > 1.0D-12) ; 'FINSI' ; ***************************** **** QUA4 in 2D ************* ***************************** P1 = 0.0 0.0 ; P2 = 1.0 0.0 ; P3 = 1.11 1.13 ; P4 = 0.0 1.0 ; (P4 'DROIT' 2 P1) 'PLAN' ; * MODM = 'MODELISER' MAIL 'EULER' ; 'SI' GRAPH ; 'TRACER' (MAIL 'ET' QMAIL) 'TITRE' 'QUAF' ; 'TITRE' 'CENTRE et MAILLAGE'; VEC1 = 'VECTEUR' (TABM . 'XXNORMAF') 0.1 'UX' 'UY' 'ROUG' ; 'TRACER' MAIL VEC1 'TITRE' 'Normals' ; 'FINSI' ; * 'MESSAGE' 'QUA4' ; 'ERREUR' 5 ; 'FINSI' ; ***************************** **** TRI3 and QUA4 in 2D *** ***************************** 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 ; (P4 'DROIT' 2 P1) 'PLAN' ; 'OPTION' 'ELEM' 'QUA4' ; (P6 'DROIT' 2 P3) 'ET' (P3 'DROIT' 2 P4)) 'PLAN' ; MAIL = MAIL1 'ET' MAIL2 ; 'ELIMINATION' MAIL 0.0001 ; MODM = 'MODELISER' MAIL 'EULER' ; QMAIL = TABM . 'QUAF' ; * 'SI' GRAPH ; 'TRACER' (MAIL 'ET' QMAIL) 'TITRE' 'QUAF' ; 'TITRE' 'CENTRE et MAILLAGE'; VEC1 = 'VECTEUR' (TABM . 'XXNORMAF') 0.1 'UX' 'UY' 'ROUG' ; 'TRACER' MAIL VEC1 'TITRE' 'Normals' ; 'FINSI' ; * 'MESSAGE' 'TRI3 et QUA4' ; 'ERREUR' 5 ; 'FINSI' ; * Volume MAIL = (TABM . 'MAILLAGE') ; NNE=0 ; 'REPETER' BL0 NN0 ; 'REPETER' BL1 NN ; NNE = NNE '+' 1 ; BB = 'EXTRAIRE' (TABM . 'XXVOLUM') 'SCAL' 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' ; 'MESSAGE' 'TRI3 et QUA4' ; 'ERREUR' 21 ; 'FINSI' ; * Comparaison complete 'NAVIER_STOKES' - 'EULER' MOD2 = 'MODELISER' QMAIL 'NAVIER_STOKES' 'LINE' ; TAB2 . 'PRECONDI' = 1 ; 'MESSAGE' 'TRI3 et QUA4' ; 'ERREUR' 21 ; 'FINSI' ; 'MESSAGE' 'TRI3 et QUA4' ; 'ERREUR' 21 ; 'FINSI' ; 'MESSAGE' 'TRI3 et QUA4' ; 'ERREUR' 21 ; 'FINSI' ; 'MESSAGE' 'TRI3 et QUA4' ; 'ERREUR' 21 ; 'FINSI' ; 'MESSAGE' 'TRI3 et QUA4' ; 'ERREUR' 21 ; 'FINSI' ; 'MESSAGE' 'TRI3 et QUA4' ; 'ERREUR' 21 ; 'FINSI' ; 'MESSAGE' 'TRI3 et QUA4' ; 'ERREUR' 21 ; 'FINSI' ; * XXSURFAC, XXNORMAF, XXDIEMIN (comparaison 'NAVIER_STOKES' - 'EULER') CHPO2 = TABM . 'XXSURFAC' ; ERRO = 'MAXIMUM' (CHPO1 '-' CHPO2) 'ABS' ; 'SI' (ERRO > 1.0D-6) ; 'MESSAGE' 'TRI3 et QUA4' ; 'ERREUR' 21 ; 'FINSI' ; CHPO2 = TABM . 'XXVOLUM' ; ERRO = 'MAXIMUM' (CHPO1 '-' CHPO2) 'ABS' ; 'SI' (ERRO > 1.0D-6) ; 'MESSAGE' 'TRI3 et QUA4' ; 'ERREUR' 21 ; 'FINSI' ; CHPO1 = 'ABS' (TABM . 'XXNORMAF') ; ERRO = 'MAXIMUM' (CHPO1 '-' CHPO2) 'ABS' ; 'SI' (ERRO > 1.0D-6) ; 'MESSAGE' 'TRI3 et QUA4' ; 'ERREUR' 21 ; 'FINSI' ; CHPO1 = (TABM . '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' ; BB = TT. 'QUAF' ; 'ELIMINATION' BB (TABM . 'QUAF') 0.0001 ; DD = TT . 'CENTRE' ; AA = VALNOR '*' VALSUR ; '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 * * NELEM = 0 ; 'SI' ('NEG' NM1 NM2) ; 'ERREUR' 'QUAF and ELTFA non compatible' ; 'ERREUR' 21 ; 'FINSI' ; NELEM = NELEM '+' 1 ; ELE2 = 'CHANGER' ELE1 'POI1' ; ELE4 = 'CHANGER' ELE3 'POI1' ; 'SI' ('NEG' (NM2 '+' NM5) NM4) ; 'ERREUR' 'QUAF and ELTFA non compatible' ; 'ERREUR' 21 ; 'FINSI' ; DSURF = 0.0 0.0 ; SURFF = 'EXTRAIRE' (TABM . 'XXSURFAC') 'SCAL' PFAC ; PNORM = ('EXTRAIRE' (TABM . 'XXNORMAF') 'UX' PFAC) ('EXTRAIRE' (TABM . 'XXNORMAF') 'UY' PFAC); DORIE = 'SIGNE' ('PSCAL' PNORM PCF) ; 'FIN' BL3 ; ('COORDONNEE' 2 DSURF) ('COORDONNEE' 3 DSURF))) ; 'SI' (AA > 1.0D-12) ; 'MESSAGE' 'GENE' ; 'ERREUR' 21 ; 'FINSI' ; 'FIN' BL2 ; 'FIN' BL1 ; * ****************************** **** 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 = PCEN '/' 4. ; MAIL = 'MANUEL' 'TET4' P1 P2 P3 P4 ; * MODM = 'MODELISER' MAIL 'EULER' ; VALNOR = TABM . 'XXNORMAF' ; VALSUR = TABM . 'XXSURFAC' ; * 'SI' GRAPH ; 'TRACER' (MAIL 'ET' QMAIL) 'TITRE' 'QUAF' ; 'TITRE' 'CENTRE et MAILLAGE'; VEC1 = 'VECTEUR' (TABM . 'XXNORMAF') 0.1 'UX' 'UY' 'UZ' 'ROUG' ; 'TRACER' MAIL VEC1 'TITRE' 'Normals' ; 'FINSI' ; * 'MESSAGE' 'TET4' ; 'ERREUR' 5 ; 'FINSI' ; 'ELIMINATION' ((TABM. 'CENTRE') 'ET' PCEN) 0.0001 ; 'MESSAGE' 'TET4' ; 'ERREUR' 5 ; 'FINSI' ; * Volume 'REPETER' BL1 NN ; BB = 'EXTRAIRE' (TABM . 'XXVOLUM') 'SCAL' ERRO = (AA '-' BB) 'ABS' ; 'SI' (ERRO > 1.0D-6) ; 'MESSAGE' 'TET4' ; 'ERREUR' 21 ; 'FINSI' ; 'FIN' BL1 ; * Sommet MAILS = 'CHANGER' MAIL 'POI1' ; 'MESSAGE' 'TET4' ; 'ERREUR' 21 ; 'FINSI' ; * Comparaison complete 'NAVIER_STOKES' - 'EULER' MOD2 = 'MODELISER' QMAIL 'NAVIER_STOKES' 'LINE' ; TAB2 . 'PRECONDI' = 1 ; 'MESSAGE' 'TRI3 et QUA4' ; 'ERREUR' 21 ; 'FINSI' ; 'MESSAGE' 'TRI3 et QUA4' ; 'ERREUR' 21 ; 'FINSI' ; 'MESSAGE' 'TRI3 et QUA4' ; 'ERREUR' 21 ; 'FINSI' ; 'MESSAGE' 'TRI3 et QUA4' ; 'ERREUR' 21 ; 'FINSI' ; 'MESSAGE' 'TRI3 et QUA4' ; 'ERREUR' 21 ; 'FINSI' ; 'MESSAGE' 'TRI3 et QUA4' ; 'ERREUR' 21 ; 'FINSI' ; 'MESSAGE' 'TRI3 et QUA4' ; 'ERREUR' 21 ; 'FINSI' ; * XXSURFAC, XXNORMAF, XXDIEMIN (comparaison 'NAVIER_STOKES' - 'EULER') CHPO2 = TABM . 'XXSURFAC' ; ERRO = 'MAXIMUM' (CHPO1 '-' CHPO2) 'ABS' ; 'SI' (ERRO > 1.0D-6) ; 'MESSAGE' 'TRI3 et QUA4' ; 'ERREUR' 21 ; 'FINSI' ; CHPO2 = TABM . 'XXVOLUM' ; ERRO = 'MAXIMUM' (CHPO1 '-' CHPO2) 'ABS' ; 'SI' (ERRO > 1.0D-6) ; 'MESSAGE' 'TRI3 et QUA4' ; 'ERREUR' 21 ; 'FINSI' ; CHPO1 = 'ABS' (TABM . 'XXNORMAF') ; ERRO = 'MAXIMUM' (CHPO1 '-' CHPO2) 'ABS' ; 'SI' (ERRO > 1.0D-6) ; 'MESSAGE' 'TRI3 et QUA4' ; 'ERREUR' 21 ; 'FINSI' ; CHPO1 = (TABM . 'XXDIEMIN') ; ERRO = 'MAXIMUM' (CHPO1 '-' CHPO2) 'ABS' ; 'SI' (ERRO > 1.0D-6) ; 'MESSAGE' 'TRI3 et QUA4' ; 'ERREUR' 21 ; 'FINSI' ; * * We check the interfaces * * ('PSCAL' A3 A3) ('PSCAL' A4 A4) ; VALSUR1 = VALSUR1 '**' 0.5 ; VALSUR1 = VALSUR1 '*' 0.5 ; VALSURM = 'MANUEL' 'QUA4' PCEN1 PCEN2 PCEN3 PCEN4 ; 'SI' (ERRO > 1.0D-6) ; 'FINSI' ; * * We check that the normals modulus are 1 * 'SI' ((('MAXIMUM' AA) 'NEG' 1.0 1.0D-12) 'OU' (('MINIMUM' AA) 'NEG' 1.0 1.0D-12)) ; 'FINSI' ; * * We check the normal in one face (P1, P2, P4) * VECNOR1 = VECNOR1 '/' (('PSCAL' VECNOR1 VECNOR1) '**' 0.5) ; 'UX' ('COORDONNEE' 1 VECNOR1) 'UY' ('COORDONNEE' 2 VECNOR1) 'UZ' ('COORDONNEE' 3 VECNOR1) ; 'ABS' ; 'SI' (ERRO > 1.0D-6) ; 'FINSI' ; * * We check that the sum of (normals times surfaces) is zero * AA = VALNOR '*' VALSUR ; 'SI' (ERRO > 1.0D-12) ; 'FINSI' ; * * Matrot * ERRO ='MAXIMUM' (AA '-' (TABM . 'XXNORMAF')) 'ABS' ; 'SI' (ERRO > 1.0D-12) ; 'FINSI' ; * 'ABS' ; 'SI' (ERRO > 1.0D-12) ; 'FINSI' ; * ERRO = 'MAXIMUM' (COMPZ '-' COMPZ1) 'ABS' ; 'SI' (ERRO > 1.0D-12) ; 'FINSI' ; * ERRO = 'MAXIMUM' (COMPX '-' COMPX1) 'ABS' ; 'SI' (ERRO > 1.0D-12) ; 'FINSI' ; * ERRO = 'MAXIMUM' (COMPY '-' COMPY1) 'ABS' ; 'SI' (ERRO > 1.0D-12) ; 'FINSI' ; ****************************** **** PYR5 ******************** ****************************** * * General case * 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' ; MAIL1 = 'MANUEL' 'QUA4' P1 P2 P3 P4 ; MODM1 = 'MODELISER' MAIL1 'EULER' ; 'ELIMINATION' QMAIL QMAIL1 0.001 ; * 'SI' GRAPH ; 'TRACER' (MAIL 'ET' QMAIL) 'TITRE' 'QUAF' ; 'TITRE' 'CENTRE et MAILLAGE'; VEC1 = 'VECTEUR' (TABM . 'XXNORMAF') 0.1 'UX' 'UY' 'UZ' 'ROUG' ; 'TRACER' MAIL VEC1 'TITRE' 'Normals' ; 'FINSI' ; * '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 = PCEN1 '/' 4. ; PCEN2 = PCEN2 '/' 4. ; PCEN3 = PCEN3 '/' 4. ; PCEN4 = PCEN4 '/' 4. ; PCEN = PCEN '/' VOL ; 'ELIMINATION' (PCEN 'ET' (TABM . 'CENTRE')) 0.0001 ; 'MESSAGE' 'PYR5' ; 'ERREUR' 5 ; 'FINSI' ; * Normals and surface XSURF = (('PSCAL' PNOR PNOR) '**' 0.5) ; PNOR = PNOR '/' XSURF ; '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' ; ERRO = 'MAXIMUM' (AA '-' BB) 'ABS' ; 'SI' (ERRO > 1.0D-6) ; 'MESSAGE' 'PYR5' ; 'ERREUR' 21 ; 'FINSI' ; * * Particular case (base bizarre) * Clockwise orientation. 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' ; MAIL1 = 'MANUEL' 'QUA4' P1 P2 P3 P4 ; MODM1 = 'MODELISER' MAIL1 'EULER' ; 'ELIMINATION' QMAIL QMAIL1 0.001 ; * 'SI' GRAPH ; 'TRACER' (MAIL 'ET' QMAIL) 'TITRE' 'QUAF' ; 'TITRE' 'CENTRE et MAILLAGE'; VEC1 = 'VECTEUR' (TABM . 'XXNORMAF') 0.1 'UX' 'UY' 'UZ' 'ROUG' ; 'TRACER' MAIL VEC1 'TITRE' 'Normals' ; 'FINSI' ; * '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 = PCEN1 '/' 4. ; PCEN2 = PCEN2 '/' 4. ; PCEN3 = PCEN3 '/' 4. ; PCEN4 = PCEN4 '/' 4. ; PCEN = PCEN '/' VOL ; 'ELIMINATION' (PCEN 'ET' (TABM . 'CENTRE')) 0.0001 ; 'MESSAGE' 'PYR5' ; 'ERREUR' 5 ; 'FINSI' ; * Normals and surface XSURF = (('PSCAL' PNOR PNOR) '**' 0.5) ; PNOR = PNOR '/' XSURF ; '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' ; 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' ; '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 ; 'SI' (ERRO > 1.0D-12) ; 'ERREUR' 'PYR5' ; 'FINSI' ; * * We check the triangular faces. * * ('PSCAL' A3 A3) ('PSCAL' A4 A4) ; VALSUR1 = VALSUR1 '**' 0.5 ; VALSUR1 = VALSUR1 '*' 0.5 ; VALSURM = 'MANUEL' 'QUA4' PCEN1 PCEN2 PCEN3 PCEN4 ; 'SI' (ERRO > 1.0D-7) ; 'FINSI' ; * * Matrot * ERRO ='MAXIMUM' (AA '-' (TABM . 'XXNORMAF')) 'ABS' ; 'SI' (ERRO > 1.0D-12) ; 'FINSI' ; * 'ABS' ; 'SI' (ERRO > 1.0D-12) ; 'FINSI' ; * ERRO = 'MAXIMUM' (COMPZ '-' COMPZ1) 'ABS' ; 'SI' (ERRO > 1.0D-12) ; 'FINSI' ; * ERRO = 'MAXIMUM' (COMPX '-' COMPX1) 'ABS' ; 'SI' (ERRO > 1.0D-12) ; 'FINSI' ; * ERRO = 'MAXIMUM' (COMPY '-' COMPY1) 'ABS' ; 'SI' (ERRO > 1.0D-12) ; '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 ; MAILT1 = MAILT1 'ET' MAILT2 'ET' MAILT3 ; 'ELIMINATION' MAILT1 0.001 ; MAILT1 = MAILT1 'ET' MAILT2 'ET' MAILT3 ; 'ELIMINATION' MAILT1 0.001 ; MAIL = MAILT1 'ET' MAILT2 'ET' MAILT3 ; 'ELIMINATION' MAIL 0.001 ; ENVMAI = 'ENVELOPPE' MAIL ; ('CHANGER' 'POI1' ENVMAI) ; 'FORME' CHPO ; MODM = 'MODELISER' MAIL 'EULER' ; VOLU0 = 'MESURE' MAIL ; ERRO = (VOLU0 '-' VOLU1) 'ABS' ; 'SI' (ERRO > 1.0D-12) ; 'ERREUR' ('CHAIN' 'Problem PYR5') ; 'FINSI' ; * ****************************** **** PRI6 ******************** ****************************** * * * Clockwise direction * 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' ; QMAIL1 = 'CHANGER' QMAIL 'POI1' ; * 'SI' GRAPH ; 'TRACER' (MAIL 'ET' QMAIL) 'TITRE' 'QUAF' ; 'TITRE' 'CENTRE et MAILLAGE'; VEC1 = 'VECTEUR' (TABM . 'XXNORMAF') 0.1 'UX' 'UY' 'UZ' 'ROUG' ; 'TRACER' MAIL VEC1 'TITRE' 'Normals' ; 'FINSI' ; * * * * 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' ; 'MESSAGE' 'PRI6' ; 'ERREUR' 21 ; 'FINSI' ; * FACEL, FACEP, ELTFA (comparaison 'NAVIER_STOKES' - 'EULER') MOD2 = 'MODELISER' QMAIL 'NAVIER_STOKES' 'LINE' ; 'MESSAGE' 'PRI6' ; 'ERREUR' 21 ; 'FINSI' ; 'MESSAGE' 'PRI6' ; 'ERREUR' 21 ; 'FINSI' ; MAIL1 = (TAB2 . 'ELTFA') ; MAIL2 = (TABM . 'ELTFA') ; 'MESSAGE' 'PRI6' ; 'ERREUR' 21 ; 'FINSI' ; * XXDIEMIN (comparaison 'NAVIER_STOKES' - 'EULER') CHPO1 = 'ABS' (TABM . '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 XSURF = (('PSCAL' PNOR PNOR) '**' 0.5) ; PNOR = -1 '*' (PNOR '/' XSURF) ; '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' ; 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' ; '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 ; 'SI' (ERRO > 1.0D-12) ; 'ERREUR' 'PRI6'; 'FINSI' ; * * We check one triangular face. * XSURF = (('PSCAL' PNOR PNOR) '**' 0.5) ; PNOR = (PNOR '/' XSURF) ; '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' ; ERRO = 'MAXIMUM' (AA '-' BB) 'ABS' ; 'SI' (ERRO > 1.0D-6) ; 'MESSAGE' 'PRI6' ; 'ERREUR' 21 ; 'FINSI' ; ****************************** **** CUB8 ******************** ****************************** * * Particular case * 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' ; QMAIL = TABM . 'QUAF' ; * Comparaison complete 'NAVIER_STOKES' - 'EULER' MOD2 = 'MODELISER' QMAIL 'NAVIER_STOKES' 'LINE' ; TAB2 . 'PRECONDI' = 1 ; 'MESSAGE' 'TRI3 et QUA4' ; 'ERREUR' 21 ; 'FINSI' ; 'MESSAGE' 'TRI3 et QUA4' ; 'ERREUR' 21 ; 'FINSI' ; 'MESSAGE' 'TRI3 et QUA4' ; 'ERREUR' 21 ; 'FINSI' ; 'MESSAGE' 'TRI3 et QUA4' ; 'ERREUR' 21 ; 'FINSI' ; 'MESSAGE' 'TRI3 et QUA4' ; 'ERREUR' 21 ; 'FINSI' ; 'MESSAGE' 'TRI3 et QUA4' ; 'ERREUR' 21 ; 'FINSI' ; 'MESSAGE' 'TRI3 et QUA4' ; 'ERREUR' 21 ; 'FINSI' ; * XXSURFAC, XXNORMAF, XXDIEMIN (comparaison 'NAVIER_STOKES' - 'EULER') CHPO2 = TABM . 'XXSURFAC' ; ERRO = 'MAXIMUM' (CHPO1 '-' CHPO2) 'ABS' ; 'SI' (ERRO > 1.0D-6) ; 'MESSAGE' 'TRI3 et QUA4' ; 'ERREUR' 21 ; 'FINSI' ; CHPO2 = TABM . 'XXVOLUM' ; ERRO = 'MAXIMUM' (CHPO1 '-' CHPO2) 'ABS' ; 'SI' (ERRO > 1.0D-6) ; 'MESSAGE' 'TRI3 et QUA4' ; 'ERREUR' 21 ; 'FINSI' ; CHPO1 = 'ABS' (TABM . '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 'REPETER' BL1 NNO ; BB = 'CHANGER' AA 'POI1' ; 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') ; 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 * 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' ; QMAIL = TABM . 'QUAF' ; * QMAIL1 = 'CHANGER' QMAIL 'POI1' ; * 'SI' GRAPH ; 'TRACER' (MAIL 'ET' QMAIL) 'TITRE' 'QUAF' ; 'TITRE' 'CENTRE et MAILLAGE'; 'FINSI' ; * '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' ; 'MESSAGE' 'CUB8' ; 'ERREUR' 21 ; 'FINSI' ; * FACEL, FACEP, ELTFA (comparaison 'NAVIER_STOKES' - 'EULER') MOD2 = 'MODELISER' QMAIL 'NAVIER_STOKES' 'LINE' ; 'MESSAGE' 'CUB8' ; 'ERREUR' 21 ; 'FINSI' ; 'MESSAGE' 'CUB8' ; 'ERREUR' 21 ; 'FINSI' ; *MAIL1 = 'CHANGER' (TAB2 . 'ELTFA') 'POI1' ; *MAIL2 = 'CHANGER' (TABM . 'ELTFA') 'POI1' ; MAIL1 = (TAB2 . 'ELTFA') ; MAIL2 = (TABM . 'ELTFA') ; 'MESSAGE' 'CUB8' ; 'ERREUR' 21 ; 'FINSI' ; * XXDIEMIN (comparaison 'NAVIER_STOKES' - 'EULER') CHPO1 = 'ABS' (TABM . '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 * XSURF = (('PSCAL' PNOR PNOR) '**' 0.5) ; PNOR = (PNOR '/' XSURF) ; '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' ; 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' ; '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 ; 'SI' (ERRO > 1.0D-12) ; 'ERREUR' 'CUB8'; 'FINSI' ; **************************************** ***** GENERAL ************************** **************************************** 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' ; * 'SI' GRAPH ; 'TRACER' (MAIL 'ET' QMAIL) 'TITRE' 'QUAF' ; 'TITRE' 'CENTRE et MAILLAGE'; 'FINSI' ; * 'MESSAGE' 'CUB8' ; 'ERREUR' 5 ; 'FINSI' ; * *** Border Surfaces * MODMS = 'MODELISER' SURFT 'EULER' ; QSURFT = TABMS . 'QUAF' ; 'ELIMINATION' (TABMS . 'QUAF') (TABM . 'QUAF') 0.0001 ; AA = VALNOR '*' VALSUR ; 'SI' (ERRO > 1.0D-12) ; 'ERREUR' 'GENE'; 'FINSI' ; * * NELEM = 0 ; AA = 'MESURE' ELE1 ; NELEM = NELEM '+' 1; 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' ; 'MESSAGE' 'GENE' ; 'ERREUR' 21 ; 'FINSI' ; * FACEL, FACEP, ELTFA (comparaison 'NAVIER_STOKES' - 'EULER') MOD2 = 'MODELISER' QMAIL 'NAVIER_STOKES' 'LINE' ; 'MESSAGE' 'GENE' ; 'ERREUR' 21 ; 'FINSI' ; 'MESSAGE' 'TRI3 et QUA4' ; 'ERREUR' 21 ; 'FINSI' ; 'MESSAGE' 'TRI3 et QUA4' ; 'ERREUR' 21 ; 'FINSI' ; MAIL1 = (TAB2 . 'ELTFA') ; MAIL2 = (TABM . 'ELTFA') ; 'MESSAGE' 'TRI3 et QUA4' ; 'ERREUR' 21 ; 'FINSI' ; * XXDIEMIN (comparaison 'NAVIER_STOKES' - 'EULER') CHPO1 = 'ABS' (TABM . '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' ; '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 * * NELEM = 0 ; * Volume as sum of single volumes VOL = 0.0 ; 'SI' ('NEG' NM1 NM2) ; 'ERREUR' 21 ; 'FINSI' ; NELEM = NELEM '+' 1 ; ELE2 = 'CHANGER' ELE1 'POI1' ; ELE4 = 'CHANGER' ELE3 'POI1' ; 'SI' ('NEG' (NM2 '+' NM5) NM4) ; 'ERREUR' 'QUAF and ELTFA non compatible' ; 'ERREUR' 21 ; 'FINSI' ; MOD2 = 'MODELISER' ELEM1 'EULER' ; ELE7 = TAB2 . 'QUAF' ; 'ELIMINATION' ELE3 ELE7 0.0001 ; 'MESSAGE' 'GENE' ; 'ERREUR' 'Anormale' ; 'FINSI' ; VOL = VOL '+' ('MAXIMUM' (TAB2 . 'XXVOLUM')) ; DSURF = 0.0 0.0 0.0 ; SURFF = 'EXTRAIRE' (TABM . 'XXSURFAC') 'SCAL' PFAC ; PNORM = ('EXTRAIRE' (TABM . 'XXNORMAF') 'UX' PFAC) ('EXTRAIRE' (TABM . 'XXNORMAF') 'UY' PFAC) ('EXTRAIRE' (TABM . 'XXNORMAF') 'UZ' PFAC) ; DORIE = 'SIGNE' ('PSCAL' PNORM PCF) ; 'FIN' BL3 ; ('COORDONNEE' 2 DSURF) ('COORDONNEE' 3 DSURF))) ; 'SI' (AA > 1.0D-12) ; 'MESSAGE' 'GENE' ; 'ERREUR' 21 ; 'FINSI' ; 'FIN' BL2 ; 'FIN' BL1 ; * * Volume * AA = 'MESURE' MAIL ; 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 * ERRO ='MAXIMUM' (AA '-' (TABM . 'XXNORMAF')) 'ABS' ; 'SI' (ERRO > 1.0D-12) ; 'FINSI' ; * 'ABS' ; 'SI' (ERRO > 1.0D-12) ; 'FINSI' ; * ERRO = 'MAXIMUM' (COMPZ '-' COMPZ1) 'ABS' ; 'SI' (ERRO > 1.0D-12) ; 'FINSI' ; * ERRO = 'MAXIMUM' (COMPX '-' COMPX1) 'ABS' ; 'SI' (ERRO > 1.0D-12) ; 'FINSI' ; * ERRO = 'MAXIMUM' (COMPY '-' COMPY1) 'ABS' ; 'SI' (ERRO > 1.0D-12) ; 'FINSI' ; 'FIN' ;
© Cast3M 2003 - Tous droits réservés.
Mentions légales