************************************************************************ * NOM : partition.dgibi * DESCRIPTION : Teste les options de partitionnement de maillage de * l'operateur PART ************************************************************************ SMALL = 1.E-5 ; OPTI 'DIME' 3 ; * Affichages graphiques ? GRAPH = FAUX ; * PROCEDURE PERMETTANT DE VALIDER QU'UNE PARTITION A LE NOMBRE ATTENDU * DE ZONES, OU QU'UN CONTOUR A LE NOMBRE ATTENDU D'ELEMENTS DEBP VALIDER ENTI1*'ENTIER' ; ARGU TAB1/'TABLE' ; SI (EXIS TAB1) ; LOGI1 = (EGA (DIME TAB1) ENTI1) ; SINON ; ARGU MAIL1*'MAILLAGE' ; LOGI1 = (EGA (NBEL MAIL1) ENTI1) ; FINS ; SI (NON LOGI1) ; ERRE 5 ; FINS ; FINP ; * +------------------------------------------------------------+ * | MAILLAGES SURFACIQUES TYPE "LIVRETS DE QUELQUES PAGES" ... | * +------------------------------------------------------------+ NNN = 2 ; OPTI 'ELEM' 'QUA4' ; A1 = (0. 0. 0.) DROI NNN (1. 0. 0.) TRAN NNN (0. 1. 0.) ; OPTI 'ELEM' 'TRI3' ; B1 = (1. 0. 0.) DROI NNN (1. 0. 1.) TRAN NNN (0. 1. 0.) ; C1 = A1 PLUS (1. 0. 0.) ; D1 = B1 TOUR (1. 0. 0.) (1. 1. 0.) 80. ; E1 = CHAN 'QUAD' D1 ; F1 = CHAN 'QUAD' (A1 TOUR (1. 0. 0.) (1. 1. 0.) -70.) ; G1 = CHAN 'QUAD' (A1 TOUR (1. 0. 0.) (1. 1. 0.) -10.) ; ELIM (A1 ET B1 ET C1 ET D1 ET E1 ET F1 ET G1) SMALL ; MAIL11 = A1 ET B1 ET C1 ; MAIL12 = A1 ET B1 ET C1 ET D1 ; MAIL13 = A1 ET B1 ET C1 ET E1 ET F1 ET G1 ; ******************************************************* * LES DEUX PARTITIONS CI-DESSOUS NE SONT PAS EQUIVALENTES ! TAB11_1 = PART 'NESC' 'SEPA' MAIL11 'ANGL' 30. ; TAB11_2 = PART 'NESC' 'SEPA' MAIL11 'MAIL' (ARET MAIL11 30.) ; MESS 'PARTITION 11 POUR UN ANGLE DE 30 DEGRES"' ; SI GRAPH ; TRACPART TAB11_1 'NCLK' ; FINS ; MESS 'PARTITION 11 LE LONG DES ARETES > 30 DEGRES' ; SI GRAPH ; TRACPART TAB11_2 'NCLK' ; FINS ; VALIDER TAB11_1 2 ; VALIDER TAB11_2 3 ; * ON EN PROFITE POUR TESTER L'OPERATEUR CONTOUR BORI11 = CONT MAIL11 'INTE' ; BORE11 = CONT MAIL11 'EXTE' ; BORT11 = CONT MAIL11 'TOUT' ; VALIDER BORI11 NNN ; VALIDER BORE11 (9*NNN) ; VALIDER BORT11 (10*NNN) ; SI GRAPH ; TRAC BORI11 'NOEU' 'TITR' 'CONTOUR INTERIEUR DE MAIL11' ; TRAC BORE11 'NOEU' 'TITR' 'CONTOUR EXTERIEUR DE MAIL11' ; TRAC BORT11 'NOEU' 'TITR' 'CONTOUR COMPLET DE MAIL11' ; FINS ; TAB11_3 = PART 'NESC' 'SEPA' MAIL11 'MAIL' BORI11 ; TAB11_4 = PART 'NESC' 'SEPA' MAIL11 'MAIL' BORE11 ; TAB11_5 = PART 'NESC' 'SEPA' MAIL11 'MAIL' BORT11 ; MESS 'PARTITION 11 LE LONG DU CONTOUR INTERIEUR' ; SI GRAPH ; TRACPART TAB11_3 'NCLK' ; FINS ; MESS 'PARTITION 11 LE LONG DU CONTOUR INTERIEUR' ; SI GRAPH ; TRACPART TAB11_4 'NCLK' ; FINS ; MESS 'PARTITION 11 LE LONG DU CONTOUR INTERIEUR' ; SI GRAPH ; TRACPART TAB11_5 'NCLK' ; FINS ; VALIDER TAB11_3 3 ; VALIDER TAB11_4 1 ; VALIDER TAB11_5 3 ; * ENCORE UNE AUTRE FACON D'OBTENIR LE MEME RESULTAT TAB11_6 = PART 'NESC' 'SEPA' MAIL11 'FACE' ; MESS 'PARTITION 11 AVEC L OPTION "FACE"' ; SI GRAPH ; TRACPART TAB11_6 'NCLK' ; FINS ; VALIDER TAB11_6 3 ; ******************************************************* * EFFET DE LA VALEUR DE L'ANGLE SUR LE NOMBRE DE PARTITIONS TAB12_1 = PART 'NESC' MAIL12 'SEPA' 'ANGL' 5. ; TAB12_2 = PART 'NESC' MAIL12 'SEPA' 'ANGL' 30. ; TAB12_3 = PART 'NESC' MAIL12 'SEPA' 'ANGL' 100. ; MESS 'PARTITION 12 POUR UN ANGLE DE 5 DEGRES' ; SI GRAPH ; TRACPART TAB12_1 'NCLK' ; FINS ; MESS 'PARTITION 12 POUR UN ANGLE DE 30 DEGRES' ; SI GRAPH ; TRACPART TAB12_2 'NCLK' ; FINS ; MESS 'PARTITION 12 POUR UN ANGLE DE 100 DEGRES' ; SI GRAPH ; TRACPART TAB12_3 'NCLK' ; FINS ; VALIDER TAB12_1 3 ; VALIDER TAB12_2 2 ; VALIDER TAB12_3 1 ; ******************************************************* * PARTITION AVEC DES ELEMENTS D'ORDRE 1 ET 2 DANS LE MAILLAGE * CE CONTOUR CONTIENT A LA FOIS DES SEG2 ET DES SEG3... BORI13 = CONT MAIL13 'INTE' ; LIST BORI13 ; VALIDER BORI13 (2*NNN) ; * ...ALORS QUE CES ARETES NE CONTIENNENT QUE DES SEG2 (BUG ?) ARET13 = ARET MAIL13 3. ; LIST ARET13 ; TAB13_1 = PART 'NESC' 'SEPA' MAIL13 'ANGL' 3. ; TAB13_2 = PART 'NESC' 'SEPA' MAIL13 'MAIL' ARET13 ; TAB13_3 = PART 'NESC' 'SEPA' MAIL13 'FACE' ; TAB13_4 = PART 'NESC' 'SEPA' MAIL13 'MAIL' BORI13 ; MESS 'PARTITION 13 POUR UN ANGLE DE 3 DEGRES' ; SI GRAPH ; TRACPART TAB13_1 'NCLK' ; FINS ; MESS 'PARTITION 13 LE LONG DES ARETES > 3 DEGRES' ; SI GRAPH ; TRACPART TAB13_2 'NCLK' ; FINS ; MESS 'PARTITION 13 AVEC L OPTION "FACE"' ; SI GRAPH ; TRACPART TAB13_3 'NCLK' ; FINS ; MESS 'PARTITION 13 LE LONG DU CONTOUR INTERIEUR' ; SI GRAPH ; TRACPART TAB13_4 'NCLK' ; FINS ; VALIDER TAB13_1 4 ; VALIDER TAB13_2 4 ; VALIDER TAB13_3 6 ; VALIDER TAB13_4 6 ; * +---------------------------------------+ * | MAILLAGE LINEIQUE TYPE "TALISMAN" ... | * +---------------------------------------+ P0 = (0. 0. 0.) ; P1 = (1. 0. 0.) ; PTS2 = P0 ET P1 ; PK = P1 ; REPE K 11 ; PK = PK TOUR P0 (0. 0. 1.) 30. ; PTS2 = PTS2 ET PK ; FIN K ; MAIL2 = CHAN 'LIGN' (TRIA PTS2) ; * ON COMMENCE PAR CHERCHER LES JONCTIONS... JONC2 = POIN MAIL2 'JONC' ; SI GRAPH ; TRAC (MAIL2 ET (COUL 'ROUG' JONC2)) ; FINS ; VALIDER JONC2 13 ; * ...PUIS ON TESTE QUELQUES PARTITIONS TAB2_1 = PART 'NESC' 'SEPA' MAIL2 'LIGN' ; TAB2_2 = PART 'NESC' 'SEPA' MAIL2 'MAIL' JONC2 ; TAB2_3 = PART 'NESC' 'SEPA' MAIL2 'ANGL' 10. ; TAB2_4 = PART 'NESC' 'SEPA' MAIL2 'MAIL' (ELEM PTS2 (LECT 1 8 10)) ; MESS 'PARTITION 2 AVEC L OPTION "LIGN"' ; SI GRAPH ; TRACPART TAB2_1 'NCLK' ; FINS ; MESS 'PARTITION 2 SELON LES NOEUDS DE JONCTION' ; SI GRAPH ; TRACPART TAB2_2 'NCLK' ; FINS ; MESS 'PARTITION 2 POUR UN ANGLE DE 10 DEGRES' ; SI GRAPH ; TRACPART TAB2_3 'NCLK' ; FINS ; MESS 'PARTITION 2 SELON 2 NOEUDS' ; SI GRAPH ; TRACPART TAB2_4 'NCLK' ; FINS ; VALIDER TAB2_1 24 ; VALIDER TAB2_2 24 ; VALIDER TAB2_3 18 ; VALIDER TAB2_4 4 ; * +--------------------+ * | MAILLAGE VOLUMIQUE | * +--------------------+ OPTI 'ELEM' 'CUB8' ; SURF1 = (0. 0. 0.) DROI 4 (1. 0. 0.) TRAN 4 (0. 1. 0.) ; VOLU1 = SURF1 VOLU 'TRAN' 4 (0. 0. 1.) ; VOLU2 = VOLU1 PLUS (1. 0. 0.) ; * VOLU2 = CHAN 'TET4' VOLU2 ; VOLU3 = VOLU1 ET VOLU2 ; COUP1 = SURF1 PLUS (0. 0. 0.25) ; COUP2 = SURF1 PLUS (1. 0. 0.75) ; * COUP2 = CHAN 'TRI3' COUP2 ; COUP3 = (COTE 2 COUP1) TRAN 2 (0. 0. 0.5) ; COUP4 = SURF1 PLUS (0.75 0. 0.75) ; COUP_A = COUL 'ROUG' (COUP1 ET COUP2 ET COUP3) ; COUP_B = COUL 'VERT' (COUP1 ET COUP4 ET COUP3) ; ELIM (VOLU3 ET COUP_A ET COUP_B) SMALL ; SI GRAPH ; TRAC (VOLU3 ET COUP_A) 'CACH' 'TITR' 'MAILLAGE SEPARATEUR COUP_A' ; TRAC (VOLU3 ET COUP_B) 'CACH' 'TITR' 'MAILLAGE SEPARATEUR COUP_B' ; FINS ; TAB3_1 = PART 'NESC' 'OPTI' VOLU3 8 ; TAB3_2 = PART 'NESC' 'ARLE' VOLU3 5 ; TAB3_3 = PART 'NESC' 'CONN' VOLU3 ; TAB3_4 = PART 'NESC' 'SEPA' VOLU3 'MAIL' COUP_A ; TAB3_5 = PART 'NESC' 'SEPA' VOLU3 'MAIL' COUP_B ; MESS 'PARTITION 3 AVEC L OPTION "OPTI"' ; SI GRAPH ; TRACPART TAB3_1 'NCLK' ; FINS ; MESS 'PARTITION 3 AVEC L OPTION "ARLE"' ; SI GRAPH ; TRACPART TAB3_2 'NCLK' ; FINS ; MESS 'PARTITION 3 AVEC L OPTION "CONN"' ; SI GRAPH ; TRACPART TAB3_3 'NCLK' ; FINS ; MESS 'PARTITION 3 AVEC L OPTION "SEPA" "MAIL" COUP_A' ; SI GRAPH ; TRACPART TAB3_4 'NCLK' ; FINS ; MESS 'PARTITION 3 AVEC L OPTION "SEPA" "MAIL" COUP_B' ; SI GRAPH ; TRACPART TAB3_5 'NCLK' ; FINS ; VALIDER TAB3_1 8 ; VALIDER TAB3_2 5 ; VALIDER TAB3_3 1 ; VALIDER TAB3_4 2 ; VALIDER TAB3_5 1 ; FIN ;