1 #@ MODIF sd_xfem SD DATE 04/02/2008 AUTEUR GALENNE E.GALENNE
2 # -*- coding: iso-8859-1 -*-
3 # CONFIGURATION MANAGEMENT OF EDF VERSION
4 # ======================================================================
5 # COPYRIGHT (C) 1991 - 2007 EDF R&D WWW.CODE-ASTER.ORG
6 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
7 # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
8 # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
9 # (AT YOUR OPTION) ANY LATER VERSION.
11 # THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
12 # WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
13 # MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
14 # GENERAL PUBLIC LICENSE FOR MORE DETAILS.
16 # YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
17 # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
18 # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
19 # ======================================================================
23 from SD.sd_cham_no import sd_cham_no
24 from SD.sd_cham_elem import sd_cham_elem
25 from SD.sd_carte import sd_carte
26 from SD.sd_util import *
30 #-------------------------------
32 #-------------------------------
34 class sd_fiss_xfem(AsBase):
37 # I.1) objets relatifs aux level sets
44 FONDFISS = Facultatif(AsVR())
45 BASEFOND = Facultatif(AsVR())
46 FONDMULT = Facultatif(AsVI())
49 # I.2) objets relatifs à l'enrichissement
51 GROUP_MA_ENRI = AsVI()
52 GROUP_NO_ENRI = AsVI()
56 MAILFISS_CTIP = Facultatif(AsVI(SDNom(nomj='.MAILFISS .CTIP')))
57 MAILFISS_HEAV = Facultatif(AsVI(SDNom(nomj='.MAILFISS .HEAV')))
58 MAILFISS_HECT = Facultatif(AsVI(SDNom(nomj='.MAILFISS .HECT')))
59 MAILFISS_INDIC = AsVI(SDNom(nomj='.MAILFISS .INDIC'), lonmax=6, )
60 LISNOH = Facultatif(AsVI())
62 # I.3) objets relatifs à la propagation
64 PRO_MES_EL = Facultatif(sd_cham_elem(SDNom(nomj='.PRO.MES_EL')))
65 PRO_NORMAL = Facultatif(sd_cham_elem(SDNom(nomj='.PRO.NORMAL')))
67 # I.4) objets relatifs au contact
69 BASCO = Facultatif(sd_cham_no())
70 LISCO = Facultatif(AsVR(SDNom(nomj='.LISCO')))
71 LISEQ = Facultatif(AsVI(SDNom(nomj='.LISEQ')))
72 LISRL = Facultatif(AsVI(SDNom(nomj='.LISRL')))
75 # 1.5) vérifications d'existence :
77 def check_existence(self,checker) :
78 sdu_ensemble((self.FONDFISS, self.FONDMULT))
79 sdu_ensemble((self.LISRL, self.LISCO))
80 sdu_ensemble((self.PRO_MES_EL.CELD, self.PRO_NORMAL.CELD))
83 #-------------------------------
85 #-------------------------------
87 class sd_modele_xfem(AsBase):
90 # II.1) objets relatifs aux sous-éléments
92 TOPOSE_PIN = sd_cham_elem(SDNom(nomj='.TOPOSE.PIN'))
93 TOPOSE_CNS = sd_cham_elem(SDNom(nomj='.TOPOSE.CNS'))
94 TOPOSE_HEA = sd_cham_elem(SDNom(nomj='.TOPOSE.HEA'))
95 TOPOSE_LON = sd_cham_elem(SDNom(nomj='.TOPOSE.LON'))
96 TOPOSE_CRI = Facultatif(sd_cham_elem(SDNom(nomj='.TOPOSE.CRI')))
98 # II.2) objets relatifs aux facettes de contact
100 TOPOFAC_PI = sd_cham_elem(SDNom(nomj='.TOPOFAC.PI'))
101 TOPOFAC_AI = sd_cham_elem(SDNom(nomj='.TOPOFAC.AI'))
102 TOPOFAC_CF = sd_cham_elem(SDNom(nomj='.TOPOFAC.CF'))
103 TOPOFAC_LO = sd_cham_elem(SDNom(nomj='.TOPOFAC.LO'))
104 TOPOFAC_BA = sd_cham_elem(SDNom(nomj='.TOPOFAC.BA'))
106 TOPOFAC_GM = sd_cham_elem(SDNom(nomj='.TOPOFAC.GM'))
107 TOPOFAC_GE = sd_cham_elem(SDNom(nomj='.TOPOFAC.GE'))
108 TOPOFAC_OE = sd_cham_elem(SDNom(nomj='.TOPOFAC.OE'))
109 TOPOFAC_OM = sd_cham_elem(SDNom(nomj='.TOPOFAC.OM'))
111 # II.3) objets concaténés relatifs aux level sets
115 BASLOC = sd_cham_no()
118 # II.4) autres objets
120 XFEM_CONT = AsVI(lonmax=1) # contact ou pas
121 FISS = AsVK8() # noms des fissures
122 NFIS = AsVI(lonmax=1,) # nombre de fissures
123 XMAFIS = sd_carte() # pour chaque maille : nom de la fissure
127 #----------------------------------
128 # III. sd charge de contact
129 #----------------------------------
131 class sd_contact_xfem(AsBase):
132 #-------------------------------