* fichier : isosurf.dgibi ************************************************************************ ************************************************************************ ************************ CAS TEST : isosurf.dgibi ****************** GRAPH = FAUX ; 'SAUT' 'PAGE' ; *------------------------------------------------------------------- * TEST @ISOSURF * ISOSURFACES POUR MAILLAGE DE TETRAHEDRES ******************************************************************** * Test de la procedure qui extrait les isosurfaces dont les valeurs * sont listées dans une liste (LIS1) d'un champoint (HANA1) appuyé * sur un maillage (MASSIF0) exclusivement constitué de tetrahèdres * (TET4). * * Le résultat final est constitué du maillage surfacique (TRI3) * regroupant l'ensemble des isosurface MAIF1 et du champoint CHPF1 * des isovaleurs LIS1 appuyées sur MAIF1. * * Si GRAPH est faux, seule l'isosurface de valeur 1500 est extraite * et un test de non regression est realise sur la base de * l'apartenance d'un point de coordonnees analytiques a la surface * extraite. * * Si GRAPH est vrai, le meme test de non regression est realise, * mais 6 isosurfaces dont les valeurs sont listees dans LIS1 sont * tracees. ******************************************************************** * 'OPTION' 'ECHO' 1 ; 'TITRE' 'Isosurface Tetra' ; * *------------------------------------------------------------------- *--------------------- Création du maillage 3D --------------------- * EPSI1 = 0.000001 ; *----------------------------------------- * Dimensions de base *----------------------------------------- LX1 = 10.D0 ; LY1 = 10.D0 ; LZ1 = 10.D0 ; *----------------------------------------- * Points *----------------------------------------- * Points tetra P1 = 0.D0 0.D0 0.D0 ; P2 = LX1 0.D0 0.D0 ; P3 = LX1 LY1 0.D0 ; P4 = (LX1 / 2.D0) (LY1 / 4.D0) LZ1 ; *----------------------------------------- * Lignes base *----------------------------------------- ND1 = 13 ; LXY1 = DROIT ND1 P1 P2 ; LXY2 = DROIT ND1 P2 P3 ; LXY3 = DROIT ND1 P3 P1 ; COT1 = LXY1 ET LXY2 ET LXY3 ; * LZZ1 = DROIT ND1 P1 P4 ; LZZ2 = DROIT ND1 P2 P4 ; LZZ3 = DROIT ND1 P3 P4 ; *----------------------------------------------------------- * Surfaces *----------------------------------------------------------- SUT1 = SUB1 ET SUZ1 ET SUZ2 ET SUZ3 ; ELIM EPSI1 SUT1 ; *------------------------------------------------------------------- * -- VOLUMES -- *------------------------------------------------------------------- SI GRAPH ; TRAC CACH MASSIF0 ; FINSI ; *------------------------------------------------------------------- *===================================================================== * -- MAILLAGES QUAF -- *===================================================================== QFTOT = CHANGE MASSIF0 QUAF ; * *===================================================================== * -- MODELE-- *===================================================================== MODHYB = 'MODELE' QFTOT 'DARCY' 'ANISOTROPE' ; * *===================================================================== * Valeurs charges imposees GRA1 = 2000.D0 ; * * Champoint PI2 = 2.0D0 * 3.1414D0 ; HANA1 = (COS (PI2 * (XXS - (LX1 / 2.D0)))) * (COS (PI2 * (XXS - (LX1 / 2.D0)))) * (COS (PI2 * (YYS - (LY1 / 2.D0)))) * (COS (PI2 * (YYS - (LY1 / 2.D0)))) * (COS (PI2 * (ZZS - (LZ1 / 2.D0)))) * (COS (PI2 * (ZZS - (LZ1 / 2.D0)))) * GRA1 ; * *------------------Tracer champoint----------------------------- SI GRAPH ; TRAC CACH HANA1 MASSIF0 ; FINSI ; * =========================================================== * Liste des isovaleurs a extraire SI GRAPH ; FINSI ; * * Procedure @isosurf * SI GRAPH ; TRAC CHPF1 MAIF1 ; FINSI ; * CONT1 = COT1 ET COT2 ET COT3 ET COT4 ; MAT1 = MAIF1 ET CONT1 ; CHT1 = CHPF1 ET CHP2 ; SI GRAPH ; FINSI ; * * Verification de l'algoritme * Un point de coordonnees XT1, YT1, ZT1 identifie comme * appartenant a la surface d'isovaleur 1500.0D0 definie * dans LIS1 est il reelement contenu dans l'isosurface extraite ? VAL0 = (COS (PI2 * ((LY1 / 4.D0) - (LY1 / 2.D0)))) * (COS (PI2 * ((LY1 / 4.D0) - (LY1 / 2.D0)))) ; VAL1 = (1500.0D0 / (GRA1 * VAL0)) ** 0.5D0 ; VAL2 = ((1.D0 - (VAL1 * VAL1)) ** 0.5D0) / VAL1 ; VAL3 = ATG (VAL2) ; ZT1 = (VAL3 / PI2 ) + (LZ1 / 2.D0) ; XT1 = LX1 / 2.D0 ; YT1 = LY1 / 4.D0 ; PV1 = XT1 YT1 ZT1 ; * OPTI ERREUR IGNORE ; OPTI ERREUR NORMAL ; SI (EGA MOT1 'ANNULE') ; MESS 'Point de reference hors isosurface' ; 'ERREUR' 5 ; FINSI ; * FIN ; ************************************************************************
© Cast3M 2003 - Tous droits réservés.
Mentions légales