* 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' ;
OPTI DIME 3 ELEM TET4 ;
OPTI ISOV SURFACE ;
*
*-------------------------------------------------------------------
*--------------------- 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 ;
COT2 = LXY1 ET LZZ2 ET (INVE LZZ1) ;
COT3 = LXY2 ET LZZ3 ET (INVE LZZ2) ;
COT4 = LXY3 ET LZZ1 ET (INVE LZZ3) ;
*-----------------------------------------------------------
* Surfaces
*-----------------------------------------------------------
SUB1 = SURF COT1 'PLANE' ;
SUZ1 = SURF COT2 'PLANE' ;
SUZ2 = SURF COT3 'PLANE' ;
SUZ3 = SURF COT4 'PLANE' ;
SUT1 = SUB1 ET SUZ1 ET SUZ2 ET SUZ3 ;
ELIM EPSI1 SUT1 ;
*-------------------------------------------------------------------
* -- VOLUMES --
*-------------------------------------------------------------------
MASSIF0 = COUL ROUG (VOLU SUT1) ;
SI GRAPH ;
TRAC CACH MASSIF0 ;
FINSI ;
*-------------------------------------------------------------------
*=====================================================================
* -- MAILLAGES QUAF --
*=====================================================================
QFTOT = CHANGE MASSIF0 QUAF ;
*
*=====================================================================
* -- MODELE--
*=====================================================================
MODHYB = 'MODELE' QFTOT 'DARCY' 'ANISOTROPE' ;
HYSOM = 'DOMA' MODHYB 'SOMMET' ;
XXS YYS ZZS = 'COOR' HYSOM ;
*
*=====================================================================
* 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
LIS1 = PROG 1500.0 ;
SI GRAPH ;
LIS1 = PROG 1900.0 1700.0 1500.0 800.0 1040.0 1200.0 ;
FINSI ;
*
* Procedure @isosurf
MAIF1 CHPF1 = @ISOSURF MASSIF0 LIS1 HANA1 ;
*
SI GRAPH ;
TRAC CHPF1 MAIF1 ;
FINSI ;
*
CONT1 = COT1 ET COT2 ET COT3 ET COT4 ;
VAL1 = MINI HANA1 ;
CHP2 = MANU 'CHPO' CONT1 1 'SCAL' VAL1 'NATURE' 'DISCRET' ;
MAT1 = MAIF1 ET CONT1 ;
CHT1 = CHPF1 ET CHP2 ;
SI GRAPH ;
TRAC CACH FACE CHT1 MAT1 ;
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 ;
GEO1 = MAIF1 ELEM 'CONTENANT' PV1 ;
OPTI ERREUR NORMAL ;
MOT1 = TYPE GEO1 ;
SI (EGA MOT1 'ANNULE') ;
MESS 'Point de reference hors isosurface' ;
'ERREUR' 5 ;
FINSI ;
*
FIN ;
************************************************************************
© Cast3M 2003 - All rights reserved.
Disclaimer