self.fenetre = fenetre
else:
self.fenetre = fenetre.master
- fenetre.destroy()
+ fenetre.destroy()
self.fenetre.title(self.objet.titre)
self.fenetre.geometry("700x700+50+50")
self.fenetre.resizable(1,1)
#self.fenetre.maxsize(900,800)
self.fenetre.protocol("WM_DELETE_WINDOW",self.quit)
self.fenetre.update()
-
+
def init_frames(self):
"""
Initialise les frames principales de l'appli
self.scroll_h.grid(row=1,column=0,rowspan=2,sticky='nesw')
self.canvas = Canvas(self.frame1,
bg='white',
- relief='sunken',
- scrollregion=(0,0,1000,1000),
- yscrollcommand=self.scroll_v.set,
- xscrollcommand=self.scroll_h.set)
+ relief='sunken',
+ scrollregion=(0,0,1000,1000),
+ yscrollcommand=self.scroll_v.set,
+ xscrollcommand=self.scroll_h.set)
self.canvas.grid(row=0,column=0,sticky='nesw')
self.scroll_v.configure(command=self.canvas.yview)
self.scroll_h.configure(command=self.canvas.xview)
bbox = self.canvas.bbox(titre)
bordure = self.canvas.create_rectangle(bbox[0]-5,bbox[1]-5,bbox[2]+5,bbox[3]+5,
outline = 'black',
- fill = 'grey75')
- self.canvas.lower(bordure)
+ fill = 'grey75')
+ self.canvas.lower(bordure)
self.y_courant += 100
# Construction des items
for item in self.objet.l_items :
# Affichage du texte dans le fichier associé (s'il existe)
if self.objet.fichier :
try:
- texte=open(self.objet.fichier,'r').read()
+ texte=open(self.objet.fichier,'r').read()
except:
texte="Fichier %s inaccessible" % self.objet.fichier
- self.canvas.create_text(10,self.y_courant+20,
- text=texte,
- anchor='nw')
+ self.canvas.create_text(10,self.y_courant+20,
+ text=texte,
+ anchor='nw')
# Configuration dynamique des boutons
self.config_boutons()
#
"""
l = Label(self.canvas,
text=item.titre,
- foreground = 'blue',
- background='white',
- font="Helvetica 12 bold")
+ foreground = 'blue',
+ background='white',
+ font="Helvetica 12 bold")
l.bind("<Button-1>",lambda e,s=self,o=item : s.update_objet(o))
l.bind("<Enter>",lambda e,s=self,o=l : s.select_label(o))
l.bind("<Leave>",lambda e,s=self,o=l : s.deselect_label(o))
l_items = self.t_item[2]
if l_items :
for item in l_items :
- o = ITEM_INDEX(item)
+ o = ITEM_INDEX(item)
o.build()
self.l_items.append(o)
exec txt in d
items = d.get("items",None)
if items :
- self.titre = items[0]
- self.fichier = items[1]
- l_items = items[2]
- for item in l_items :
+ self.titre = items[0]
+ self.fichier = items[1]
+ l_items = items[2]
+ for item in l_items :
o = ITEM_INDEX(item)
- o.build()
+ o.build()
self.l_items.append(o)
Pour installer EFICAS a partir de la distribution : <nom_distrib>.tgz
faire :
- tar xzvf <nom_distrib>.tgz
+ tar xzvf <nom_distrib>.tgz
ce qui a pour effet de créer un répertoire de nom <nom_distrib>.
2- Utilisation d'Eficas
Pour utiliser Eficas, aller dans le répertoire Aster et faire :
- python eficas_aster.py
+ python eficas_aster.py
+Version 1.10 (6/2006):
+ Mise en synchronisation avec la version 8.3 de Code_Aster de juin 2006.
+
+Version 1.9 (12/2005):
+ Mise en synchronisation avec la version 8.2 de Code_Aster de decembre 2005.
+
Version 1.8 (6/2005):
Mise en synchronisation avec la version 8.1 de Code_Aster de mai 2005.
Les includes et poursuites peuvent etre édités. Introduction de la notation
scientifique pour les flottants.
-Version 1.7 (12/2004):
- Mise en synchronosation avec la version STA7.4 de Code_Aster de décembre 2004
+Version 1.7 : (12/2004)
+ Mise en synchronisation avec la version STA7 de Code_Aster (7.4).
Les formules changent et deviennent des formules au sens python.
+ Disparition des PARAMETRE-EVAL
+ Les touches raccourcis (CtrlC par exple) sont activées et paramétrables dans prefs.py.
+
+Version 1.6 : (05/2004)
+ Mise en synchronisation avec la version STA7 de Code_Aster (7.2.26)
+ Evolution de la saisie des valeurs pour definir une fonction (EO2003-241) :
+ - Saisie des valeurs sous forme de tuple.
+ - Si une valeur est selectionnée, l'insertion se fera après cette valeur
+ et non en fin de liste
+
+Version 1.5 (10/2003):
+ Mise en synchronisation avec la version STA7 de Code_Aster d'octobre 2003 (7.2)
+ Introduction des validateurs de mots cles simples
Version 1.4 (5/2003):
Mise en synchronisation avec la version STA7 de Code_Aster de mai 2003 (7.1)
Possibilité de donner un nom de fichier en argument lors de l'ouverture d'EFICAS (EO2003-060)
Correction d'une anomalie dans la fonctionnalité de commentarisation des commandes (AO2003-041)
- Ajout du bouton de documentation dans le pannneau FORMULE (AO2002-447)
+ Ajout du bouton de documentation dans le panneau FORMULE (AO2002-447)
Selection automatique du concept quand il n'en existe qu'un (EO2002-162)
Version 1.3 (11/2002):
-------------------------------------------------------------------------------------------------------------
- FAQs et Limitations d'EFICAS
+ FAQs et Limitations d'EFICAS
-------------------------------------------------------------------------------------------------------------
1. Mots réservés :
- Tous les mots du langage Python sont des mots réservés.
- On ne peut donc pas appeler une variable ou un concept 'fin' ou 'dir'
- Pour la liste complète de ces mots-clés, veuillez vous référer à la
- documentation Python
+ Tous les mots du langage Python sont des mots réservés.
+ On ne peut donc pas appeler une variable ou un concept 'fin' ou 'dir'
+ Pour la liste complète de ces mots-clés, veuillez vous référer à la
+ documentation Python
2. Concepts réentrants :
- Ne pas indiquer par un '&' devant son nom qu'un concept est utilisé comme
- concept réentrant. En effet EFICAS le sait !
+ Ne pas indiquer par un '&' devant son nom qu'un concept est utilisé comme
+ concept réentrant. En effet EFICAS le sait !
3. Carte commentaire :
- La carte commentaire est désormais le '#' (dièse) au lieu du '%' (pourcent)
+ La carte commentaire est désormais le '#' (dièse) au lieu du '%' (pourcent)
Les commentaires sont gérés comme des objets de même niveau que les
commandes ; il n'est plus possible de placer des commentaires "dans"
une commande. Attention, lors de la traduction d'un fichier de version 5
4. Nommer le concept produit par un opérateur :
- Vous ne pouvez nommer le concept produit d'un opérateur que lorsque
- celui-ci aura été entièrement et correctement rempli.
+ Vous ne pouvez nommer le concept produit d'un opérateur que lorsque
+ celui-ci aura été entièrement et correctement rempli.
5. Règle de rémanence dans les mots-clés facteurs répétés :
- La règle de rémanence qui permettait pour certains mots-clés facteurs
- et pour certains de leurs mots-clés simples de ne pas répeter la valeur
- de ces derniers dans toutes les occurrences du mot-clé facteur n'est pas
- connue d'EFICAS.
- En conséquence, vous devez répéter les mots-clés simples concernés dans
- toutes les occurrences des mots-clés facteurs.
+ La règle de rémanence qui permettait pour certains mots-clés facteurs
+ et pour certains de leurs mots-clés simples de ne pas répeter la valeur
+ de ces derniers dans toutes les occurrences du mot-clé facteur n'est pas
+ connue d'EFICAS.
+ En conséquence, vous devez répéter les mots-clés simples concernés dans
+ toutes les occurrences des mots-clés facteurs.
6. Besoin d'aide ?
-
- La documentation d'utilisation d'EFICAS a pris un peu de retard sur le produit ...
- Néanmoins, vous disposez sur la plupart des panneaux contextuels ( les panneaux à
- droite de l'arbre) d'une aide en ligne que vous pouvez activer en maintenant le
- bouton droit de votre souris enfoncé.
+
+ La documentation d'utilisation d'EFICAS a pris un peu de retard sur le produit ...
+ Néanmoins, vous disposez sur la plupart des panneaux contextuels ( les panneaux à
+ droite de l'arbre) d'une aide en ligne que vous pouvez activer en maintenant le
+ bouton droit de votre souris enfoncé.
#class LASSD(I_LASSD.LASSD,N_LASSD.LASSD):pass
class LASSD(I_LASSD.LASSD):pass
-class assd(N_ASSD.assd,I_ASSD.ASSD,ASSD):pass
+class assd(N_ASSD.assd,I_ASSD.assd,ASSD):pass
class FONCTION(N_FONCTION.FONCTION,I_FONCTION.FONCTION,ASSD):
def __init__(self,etape=None,sd=None,reg='oui'):
N_FONCTION.FONCTION.__init__(self,etape=etape,sd=sd,reg=reg)
I_FONCTION.FONCTION.__init__(self,etape=etape,sd=sd,reg=reg)
-class formule(N_FONCTION.formule,I_FONCTION.formule,ASSD):
+class formule(I_FONCTION.formule,N_FONCTION.formule,ASSD):
def __init__(self,etape=None,sd=None,reg='oui'):
N_FONCTION.formule.__init__(self,etape=etape,sd=sd,reg=reg)
I_FONCTION.formule.__init__(self,etape=etape,sd=sd,reg=reg)
N_FONCTION.formule.__init__(self,etape=etape,sd=sd,reg=reg)
I_FONCTION.fonction.__init__(self,etape=etape,sd=sd,reg=reg)
-class GEOM(N_GEOM.GEOM,I_ASSD.ASSD,ASSD):pass
-class geom(N_GEOM.geom,I_ASSD.ASSD,ASSD):pass
-class CO(N_CO.CO,I_ASSD.ASSD,ASSD):pass
+class GEOM(N_GEOM.GEOM,I_ASSD.GEOM,ASSD):pass
+class geom(N_GEOM.geom,I_ASSD.geom,ASSD):pass
+class CO(N_CO.CO,I_ASSD.CO,ASSD):pass
I_ENTITE.ENTITE.__init__(self)
N_FACT.FACT.__init__(self,*tup,**args)
+from Noyau import N_OBJECT
+from Ihm import I_OBJECT
+
+class ErrorObj(I_OBJECT.ErrorObj,N_OBJECT.ErrorObj):pass
+N_OBJECT.ErrorObj=ErrorObj
+
--- /dev/null
+
+from Ihm import I_REGLE
+
+from Noyau import N_SENSIBILITE
+
+class REUSE_SENSIBLE(I_REGLE.REGLE,N_SENSIBILITE.REUSE_SENSIBLE):pass
+class CONCEPT_SENSIBLE(I_REGLE.REGLE,N_SENSIBILITE.CONCEPT_SENSIBLE):pass
+class DERIVABLE(I_REGLE.REGLE,N_SENSIBILITE.DERIVABLE):pass
+
# -*- coding: utf-8 -*-
-import types
-from Noyau import N_VALIDATOR
-from Ihm import I_VALIDATOR
-
-class FunctionVal(I_VALIDATOR.FunctionVal,N_VALIDATOR.FunctionVal):pass
-class OrVal(I_VALIDATOR.OrVal,N_VALIDATOR.OrVal):pass
-class AndVal(I_VALIDATOR.AndVal,N_VALIDATOR.AndVal):pass
-class NoRepeat(I_VALIDATOR.NoRepeat,N_VALIDATOR.NoRepeat):pass
-class LongStr(I_VALIDATOR.LongStr,N_VALIDATOR.LongStr):pass
-class OrdList(I_VALIDATOR.OrdList,N_VALIDATOR.OrdList):pass
-class RangeVal(I_VALIDATOR.RangeVal,N_VALIDATOR.RangeVal):pass
-class EnumVal(I_VALIDATOR.EnumVal,N_VALIDATOR.EnumVal):pass
-class TypeVal(I_VALIDATOR.TypeVal,N_VALIDATOR.TypeVal):pass
-class PairVal(I_VALIDATOR.PairVal,N_VALIDATOR.PairVal):pass
-class CardVal(I_VALIDATOR.CardVal,N_VALIDATOR.CardVal):pass
-class InstanceVal(I_VALIDATOR.InstanceVal,N_VALIDATOR.InstanceVal):pass
-
-def do_liste(validators):
- """
- Convertit une arborescence de validateurs en OrVal ou AndVal
- validators est une liste de validateurs ou de listes ou de tuples
- """
- valids=[]
- for validator in validators:
- if type(validator) == types.FunctionType:
- valids.append(FunctionVal(validator))
- elif type(validator) == types.TupleType:
- valids.append(OrVal(do_liste(validator)))
- elif type(validator) == types.ListType:
- valids.append(AndVal(do_liste(validator)))
- else:
- valids.append(validator)
- return valids
-
-def validatorFactory(validator):
- if type(validator) == types.FunctionType:
- return FunctionVal(validator)
- elif type(validator) == types.TupleType:
- return OrVal(do_liste(validator))
- elif type(validator) == types.ListType:
- return AndVal(do_liste(validator))
- else:
- return validator
-
+from Ihm.I_VALIDATOR import *
-# -*- coding: utf-8 -*-
+# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
-# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-#
-#
# ======================================================================
+
+
"""
- Ce package contient les classes qui seront effectivement utilisées dans les applications.
- C'est dans ce package que sont réalisées les combinaisons de classes de base
- avec les classes MIXIN qui implémentent les fonctionnalités qui ont été séparées
- du noyau pour des raisons de modularité afin de faciliter la maintenance et
- l'extensibilité.
+ Ce package contient les classes qui seront effectivement utilisees dans les applications.
+ C'est dans ce package que sont realisees les combinaisons de classes de base
+ avec les classes MIXIN qui implementent les fonctionnalites qui ont ete separees
+ du noyau pour des raisons de modularite afin de faciliter la maintenance et
+ l'extensibilite.
- De plus toutes les classes utilisables par les applications sont remontées au
- niveau du package afin de rendre le plus indépendant possible l'utilisation des
- classes et leur implémentation.
+ De plus toutes les classes utilisables par les applications sont remontees au
+ niveau du package afin de rendre le plus independant possible l'utilisation des
+ classes et leur implementation.
"""
+
+# permet de se proteger de l'oubli de carte coding
+# ce warning deviendra fatal en python 2.4
+import warnings
+warnings.filterwarnings('error','Non-ASCII character.*pep-0263',DeprecationWarning)
+
from A_JDC_CATA import JDC_CATA
from A_OPER import OPER
from A_PROC import PROC
from A_A_CLASSER import A_CLASSER
from A_ASSD import ASSD,assd
-#from A_ASSD import LASSD
from A_ASSD import GEOM,geom
# Pour le moment on laisse fonction (ceinture et bretelles)
from A_ASSD import FONCTION, fonction
from Noyau.N_Exception import AsException
from Noyau.N_utils import AsType
-#from Noyau.N_VALIDATOR import Valid,RangeVal,OrdList,NoRepeat,LongStr,EnumVal,CardVal,TypeVal,InstanceVal,OrVal,AndVal
-from A_VALIDATOR import OrdList,NoRepeat,LongStr,OrVal,AndVal
+from A_VALIDATOR import OrVal,AndVal
+from A_VALIDATOR import OrdList,NoRepeat,LongStr,Compulsory
from A_VALIDATOR import RangeVal, EnumVal, TypeVal, PairVal
from A_VALIDATOR import CardVal, InstanceVal
import Noyau.N_ENTITE
Noyau.N_ENTITE.ENTITE.factories['validator']=A_VALIDATOR.validatorFactory
+from A_SENSIBILITE import CONCEPT_SENSIBLE, REUSE_SENSIBLE, DERIVABLE
from Extensions.niveau import NIVEAU
from Extensions.etape_niveau import ETAPE_NIVEAU
import pre74
+from math import sin,cos,tan,asin,acos,atan2,atan,sinh,cosh,tanh,exp,log,log10
+from math import sqrt,pi
+
from cata import *
INCLUDE_MATERIAU.itemeditor=pre74.compomacro.INCLUDE_MATERIAUTreeItem
+# -*- coding: iso-8859-1 -*-
#& MODIF COMMANDE DATE 03/02/2003 AUTEUR DURAND C.DURAND
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
#
__version__="$Name: $"
-__Id__="$Id: cata_aster_v6.py,v 1.12 2001/01/16 15:55:05 iliade Exp $"
+__Id__="$Id: cata.py,v 1.4.6.1 2006/05/29 07:04:57 cchris Exp $"
#
JdC = JDC_CATA(code='ASTER',
execmodul=None,
+# -*- coding: iso-8859-1 -*-
#@ MODIF ops Cata DATE 23/10/2002 AUTEUR DURAND C.DURAND
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
--- /dev/null
+#@ MODIF __init__ Macro DATE 20/09/2004 AUTEUR DURAND C.DURAND
+# -*- coding: iso-8859-1 -*-
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
--- /dev/null
+#@ MODIF ajout_quad_gmsh Macro DATE 14/09/2004 AUTEUR MCOURTOI M.COURTOIS
+# -*- coding: iso-8859-1 -*-
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+
+
+
+# script PYTHON de modification d'un fichier de maillage GMSH (*.msh)
+# pour transformer les mailles lineiques en mailles quadratiques
+# SEG2->SEG3 / TRIA3->TRIA6 / QUAD4->QUAD8,
+# TETRA4 -> TETRA10 / PENTA6 -> PENTA15 / PYRAM5 -> PYRAM13
+
+def ajout_quad_gmsh(texte):
+
+ import os,sys,copy
+
+ try:
+# construction du dictionnaire nom du noeud / coordonnees : dict_no
+# construction de la liste des noeuds : l_no
+
+ typ_mail={}
+ typ_mail['LI']=['1']
+ typ_mail['2D']=['2','3']
+ typ_mail['3D']=['4','5','6','7']
+ typ_mail['PO']=['15']
+
+ texte_eclate=texte.split('\n')
+ nbno=int(texte_eclate[texte_eclate.index('$NOD')+1])
+ l_no=texte_eclate[texte_eclate.index('$NOD')+2:texte_eclate.index('$ENDNOD')]
+ dict_no={}
+ for i in texte_eclate[texte_eclate.index('$NOD')+2:texte_eclate.index('$ENDNOD')]:
+ cc=i.split(' ')
+ dict_no[cc[0]]=[]
+ for j in cc[1:]:dict_no[cc[0]].append(float(j))
+
+ l_el1=texte_eclate[texte_eclate.index('$ELM')+2:texte_eclate.index('$ENDELM')]
+ nbel =texte_eclate[texte_eclate.index('$ELM')+1]
+
+
+# construction du dictionnaire : element / liste des aretes de l'element : elems_aretes
+# et de son inverse : aretes / elements contenant cette arete : aretes_elems
+
+ aretes_elems={}
+ elems_aretes={}
+ l_el=[]
+ for elem in l_el1 :
+ connec0=elem.split(' ')[5:]
+ while '' in connec0 : connec0.remove('')
+ aa=elem.split(' ')[:4]
+
+# attention : indicateur de type de maille : ajouter 7 pour passer
+# de TRIA3 a TRIA6, de SEG2 a SEG3, de QUAD4 a QUAD8 (voir inigms.f)
+
+# si maille POI1, on ne fait rien
+
+ if aa[1] not in typ_mail['PO'] : typel=str(int(aa[1])+7)
+ else : typel=aa[1]
+ nom_elem=aa[0]+' '+typel+' '+aa[2]+' '+aa[3]
+ segments=[]
+
+# traitement des mailles lineaires : un seul segment
+ if aa[1] in typ_mail['LI']:
+ segments.append([int(connec0[0]),int(connec0[1])])
+
+# traitement des mailles planes (TRI3 QUA4) : on cree les segments en prenant les noeuds consecutivement, puis on ferme
+ elif aa[1] in typ_mail['2D']:
+ for i in range(len(connec0)-1) : segments.append([int(connec0[i]),int(connec0[i+1])])
+ segments.append([int(connec0[-1]),int(connec0[0])])
+
+# traitement des mailles TETRA4 : pour comprendre, voir "fonctions de forme des elements isoparametriques" R3.01.01
+ elif aa[1]=='4':
+ for i in range(0,2) : segments.append([int(connec0[i]),int(connec0[i+1])])
+ segments.append([int(connec0[2]),int(connec0[0])])
+ for i in range(0,3) : segments.append([int(connec0[3]),int(connec0[i])])
+
+# traitement des mailles HEXA8 : pour comprendre, voir "fonctions de forme des elements isoparametriques" R3.01.01
+ elif aa[1]=='5':
+ for i in range(0,3) : segments.append([int(connec0[i]),int(connec0[i+1])])
+ segments.append([int(connec0[3]),int(connec0[0])])
+ for i in range(4,7) : segments.append([int(connec0[i]),int(connec0[i+1])])
+ segments.append([int(connec0[7]),int(connec0[4])])
+ for i in range(0,4) : segments.append([int(connec0[i]),int(connec0[i+4])])
+
+# traitement des mailles PENTA6 : pour comprendre, voir "fonctions de forme des elements isoparametriques" R3.01.01
+ elif aa[1]=='6':
+ for i in range(0,2) : segments.append([int(connec0[i]),int(connec0[i+1])])
+ segments.append([int(connec0[2]),int(connec0[0])])
+ for i in range(3,5) : segments.append([int(connec0[i]),int(connec0[i+1])])
+ segments.append([int(connec0[5]),int(connec0[3])])
+ for i in range(0,3) : segments.append([int(connec0[i]),int(connec0[i+3])])
+
+# traitement des mailles PYRA5 : pour comprendre, voir "fonctions de forme des elements isoparametriques" R3.01.01
+ elif aa[1]=='7':
+ for i in range(0,3) : segments.append([int(connec0[i]),int(connec0[i+1])])
+ segments.append([int(connec0[3]),int(connec0[0])])
+ for i in range(0,4) : segments.append([int(connec0[4]),int(connec0[i])])
+
+ elems_aretes[nom_elem]=[]
+ for seg in segments :
+ elems_aretes[nom_elem].append(copy.copy(seg))
+ seg.sort()
+ for seg in segments :
+ if aretes_elems.has_key(tuple(seg)):aretes_elems[tuple(seg)].append(nom_elem)
+ else :aretes_elems[tuple(seg)]=[nom_elem]
+ l_el.append(nom_elem)
+
+# construction de la liste complete des aretes
+
+ l_ar=aretes_elems.keys()
+ l_ar.sort()
+
+# numero du plus grand noeud :
+ nmax=int(l_no[-1].split(' ')[0])
+
+# nouveau nombre total de noeuds :
+ ndtot=nbno+len(l_ar)
+
+# insertion des noeuds milieux dans le dictionnaire "aretes" et la liste "l_no" :
+ ind=nmax
+ for i in l_ar:
+ ind=ind+1
+ x=(dict_no[str(i[0])][0]+dict_no[str(i[1])][0])/2
+ y=(dict_no[str(i[0])][1]+dict_no[str(i[1])][1])/2
+ z=(dict_no[str(i[0])][2]+dict_no[str(i[1])][2])/2
+ l_no.append(str(ind)+' '+str(x)+' '+str(y)+' '+str(z))
+ for elem in aretes_elems[i]:
+ for ar in elems_aretes[elem]:
+ k=copy.copy(ar)
+ k.sort()
+ kk=tuple(k)
+ if i==kk:
+ ar.insert(1,ind)
+
+# re-ecriture du fichier avec les noeuds milieux :
+
+ resu='$NOD\n'+str(ndtot)+'\n'
+ for i in l_no:
+ resu=resu+i+'\n'
+ resu=resu+'$ENDNOD\n'+'$ELM\n'+nbel+'\n'
+ for i in l_el:
+ aa=i.split(' ')[:4]
+ if aa[1] not in typ_mail['PO']:
+ typ=str(int(aa[1])-7)
+ else : typ=aa[1]
+ if elems_aretes[i]!=[]:
+ resu=resu+i
+
+# traitement des mailles lineaires : d'abord les noeuds sommets, puis le noeud milieu
+ if typ in typ_mail['LI']:
+ resu=resu+' 3 '
+ for j in elems_aretes[i]:
+ resu=resu+str(j[0])+' '+str(j[2])+' '+str(j[1])+' '
+
+# traitement des mailles planes (TRI3 QUA4) : d'abord les noeuds sommets, puis, dans le meme ordre, les noeuds milieux
+ elif typ in typ_mail['2D']:
+ resu=resu+' '+str(len(elems_aretes[i])*2)+' '
+ for j in elems_aretes[i]:
+ resu=resu+str(j[0])+' '
+ for j in elems_aretes[i]:
+ resu=resu+str(j[1])+' '
+
+# traitement des mailles TETRA4 : pour comprendre, voir "fonctions de forme des elements isoparametriques" R3.01.01
+ elif typ=='4':
+ resu=resu+' 10 '
+ for j in elems_aretes[i][:4]:
+ resu=resu+str(j[0])+' '
+ resu=resu+str(elems_aretes[i][0][1])+' '
+ resu=resu+str(elems_aretes[i][1][1])+' '
+ resu=resu+str(elems_aretes[i][2][1])+' '
+ resu=resu+str(elems_aretes[i][3][1])+' '
+ resu=resu+str(elems_aretes[i][4][1])+' '
+ resu=resu+str(elems_aretes[i][5][1])+' '
+
+# traitement des mailles HEXA8 : pour comprendre, voir "fonctions de forme des elements isoparametriques" R3.01.01
+ elif typ=='5':
+ resu=resu+' 20 '
+ for j in elems_aretes[i][:8]:
+ resu=resu+str(j[0])+' '
+ resu=resu+str(elems_aretes[i][0][1])+' '
+ resu=resu+str(elems_aretes[i][1][1])+' '
+ resu=resu+str(elems_aretes[i][2][1])+' '
+ resu=resu+str(elems_aretes[i][3][1])+' '
+
+ resu=resu+str(elems_aretes[i][8][1])+' '
+ resu=resu+str(elems_aretes[i][9][1])+' '
+ resu=resu+str(elems_aretes[i][10][1])+' '
+ resu=resu+str(elems_aretes[i][11][1])+' '
+
+ resu=resu+str(elems_aretes[i][4][1])+' '
+ resu=resu+str(elems_aretes[i][5][1])+' '
+ resu=resu+str(elems_aretes[i][6][1])+' '
+ resu=resu+str(elems_aretes[i][7][1])+' '
+
+# traitement des mailles PENTA6 : pour comprendre, voir "fonctions de forme des elements isoparametriques" R3.01.01
+ elif typ=='6':
+ resu=resu+' 15 '
+ for j in elems_aretes[i][:6]:
+ resu=resu+str(j[0])+' '
+ resu=resu+str(elems_aretes[i][0][1])+' '
+ resu=resu+str(elems_aretes[i][1][1])+' '
+ resu=resu+str(elems_aretes[i][2][1])+' '
+
+ resu=resu+str(elems_aretes[i][6][1])+' '
+ resu=resu+str(elems_aretes[i][7][1])+' '
+ resu=resu+str(elems_aretes[i][8][1])+' '
+
+ resu=resu+str(elems_aretes[i][3][1])+' '
+ resu=resu+str(elems_aretes[i][4][1])+' '
+ resu=resu+str(elems_aretes[i][5][1])+' '
+
+# traitement des mailles PYRA5 : pour comprendre, voir "fonctions de forme des elements isoparametriques" R3.01.01
+ elif typ=='7':
+ resu=resu+' 13 '
+ for j in elems_aretes[i][:4]:
+ resu=resu+str(j[0])+' '
+ resu=resu+str(elems_aretes[i][0][1])+' '
+ resu=resu+str(elems_aretes[i][1][1])+' '
+ resu=resu+str(elems_aretes[i][2][1])+' '
+
+ resu=resu+str(elems_aretes[i][6][1])+' '
+ resu=resu+str(elems_aretes[i][7][1])+' '
+ resu=resu+str(elems_aretes[i][8][1])+' '
+
+ resu=resu+str(elems_aretes[i][3][1])+' '
+ resu=resu+str(elems_aretes[i][4][1])+' '
+ resu=resu+str(elems_aretes[i][5][1])+' '
+
+ else:
+# traitement des mailles POI1 : on recopie la connectivite telle quelle, sans ajouter de nouveau noeud
+ resu=resu+l_el1[l_el.index(i)]
+
+ resu=resu+'\n'
+
+ resu=resu+'$ENDELM\n'
+ return resu
+ except :
+ return 0
--- /dev/null
+#@ MODIF calc_precont_ops Macro DATE 05/07/2005 AUTEUR DURAND C.DURAND
+# -*- coding: iso-8859-1 -*-
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2003 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+
+
+# RESPONSABLE ASSIRE A.ASSIRE
+
+def calc_precont_ops(self,reuse,MODELE,CHAM_MATER,CARA_ELEM,EXCIT,
+ CABLE_BP,CABLE_BP_INACTIF,
+ COMP_INCR,ETAT_INIT,NEWTON,RECH_LINEAIRE,
+ CONVERGENCE,INCREMENT,SOLVEUR,SOLV_NON_LOCAL,
+ LAGR_NON_LOCAL,PARM_THETA,INFO,TITRE,**args):
+
+
+ """
+ Ecriture de la macro CALC_PRECONT
+ """
+ import copy
+ import aster
+ import string
+ import types
+ from Accas import _F
+ from Noyau.N_utils import AsType
+ ier=0
+
+ # On importe les definitions des commandes a utiliser dans la macro
+ AFFE_MODELE = self.get_cmd('AFFE_MODELE')
+ CREA_CHAMP = self.get_cmd('CREA_CHAMP')
+ AFFE_CHAR_MECA = self.get_cmd('AFFE_CHAR_MECA')
+ DEFI_LIST_REEL = self.get_cmd('DEFI_LIST_REEL')
+ STAT_NON_LINE = self.get_cmd('STAT_NON_LINE')
+ CALC_NO = self.get_cmd('CALC_NO')
+ CREA_CHAMP = self.get_cmd('CREA_CHAMP')
+ DEFI_FONCTION = self.get_cmd('DEFI_FONCTION')
+ RECU_TABLE = self.get_cmd('RECU_TABLE')
+ DEFI_MATERIAU = self.get_cmd('DEFI_MATERIAU')
+ AFFE_MATERIAU = self.get_cmd('AFFE_MATERIAU')
+
+ # La macro compte pour 1 dans la numerotation des commandes
+ self.set_icmd(1)
+
+ # Le concept sortant (de type evol_noli) est nomme RES dans
+ # le contexte de la macro
+
+ self.DeclareOut('RES',self.sd)
+
+ # -------------------------------------------------------------
+ # 1. CREATION DES MOTS-CLES ET CONCEPTS POUR LES STAT_NON_LINE
+ # ------------------------------------------------------------
+
+
+ # 1.1 Recuperation de la liste d'instants, de l'instant initial et final
+ # Creation de la nouvelle liste d'instants
+ # ----------------------------------------------------------
+
+ dIncrement=INCREMENT[0].cree_dict_valeurs(INCREMENT[0].mc_liste)
+
+ __prec = dIncrement['PRECISION']
+ __L0 = dIncrement['LIST_INST']
+ __L1 = __L0.Valeurs()
+
+ # Traitement de l'etat initial
+ if ETAT_INIT:
+ dEtatInit=ETAT_INIT[0].cree_dict_valeurs(ETAT_INIT[0].mc_liste)
+ for i in dEtatInit.keys():
+ if dEtatInit[i]==None : del dEtatInit[i]
+
+ __EVINIT = dEtatInit['EVOL_NOLI']
+ else :
+ dEtatInit=None
+
+ # Test de la presence de reuse=
+ if self.reuse == None:
+ dReuse=None
+ else :
+ dReuse='RES'
+
+ # Teste si INST_INIT est donné ou bien recalcule __TMIN
+ if dIncrement['INST_INIT'] == None:
+ if self.reuse == None:
+ __TMIN = __L1[0]
+ else:
+ __dico = __EVINIT.LIST_VARI_ACCES()
+ __TMIN = __dico['INST'][-1]
+ else:
+ __TMIN = dIncrement['INST_INIT']
+
+ # Teste si INST_FIN est donné ou bien recalcule __TMAX
+ if dIncrement['INST_FIN'] == None:
+ __TMAX = __L1[-1]
+ else:
+ __TMAX = dIncrement['INST_FIN']
+
+ # Teste si INST_INIT est bien plus petit que INST_FIN
+ if __TMAX <= __TMIN:
+ ier=ier+1
+ self.cr.fatal("""<F> <CALC_PRECONT> ERREUR : INST_FIN PLUS PETIT QUE INST_INIT""")
+ return ier
+
+ # Cree la liste d'instant __L2 allant de __TMIN a __TMAX et contenant
+ # un instant supplementaire __TINT
+ __L2=[]
+ for m in __L1:
+ if m>=__TMIN and m<=__TMAX:
+ __L2.append(m)
+
+ __TINT = (9.*__L2[-1] + __L2[-2])/10.
+ __L2[-1:-1] = [__TINT]
+
+ # __LST0 est la liste d'instants utilisée pour l'etape 1
+ __LST0=DEFI_LIST_REEL( DEBUT = __TMIN,
+ INTERVALLE = _F(JUSQU_A = __TMAX, NOMBRE = 1),)
+
+ # __LST et __FCT sont utilisés pour les etapes 2 et 3
+ __LST=DEFI_LIST_REEL(VALE=__L2,);
+ __FCT=DEFI_FONCTION(INTERPOL=('LIN','LIN'),
+ NOM_PARA='INST',
+ VALE=(__TMIN,0.0,__TINT,1.0,__TMAX,1.0),);
+
+ for i in dIncrement.keys():
+ if dIncrement[i]==None : del dIncrement[i]
+ dIncrement['LIST_INST']= __LST
+ dIncrement['INST_FIN'] = __TINT
+
+
+
+ # 1.2 Recuperation des parametres pour STAT_NON_LINE
+ # -------------------------------------------------------
+
+ dNewton=NEWTON[0].cree_dict_valeurs(NEWTON[0].mc_liste)
+ for i in dNewton.keys():
+ if dNewton[i]==None : del dNewton[i]
+
+ dConvergence=CONVERGENCE[0].cree_dict_valeurs(CONVERGENCE[0].mc_liste)
+ for i in dConvergence.keys():
+ if dConvergence[i]==None : del dConvergence[i]
+
+ dSolveur=SOLVEUR[0].cree_dict_valeurs(SOLVEUR[0].mc_liste)
+ for i in dSolveur.keys():
+ if dSolveur[i]==None : del dSolveur[i]
+
+ if RECH_LINEAIRE:
+ dRech_lin=RECH_LINEAIRE[0].cree_dict_valeurs(RECH_LINEAIRE[0].mc_liste)
+ for i in dRech_lin.keys():
+ if dRech_lin[i]==None : del dRech_lin[i]
+ else :
+ dRech_lin=None
+
+ if SOLV_NON_LOCAL:
+ dSolv_nonloc=SOLV_NON_LOCAL[0].cree_dict_valeurs(SOLV_NON_LOCAL[0].mc_liste)
+ for i in dSolv_nonloc.keys():
+ if dSolv_nonloc[i]==None : del dSolv_nonloc[i]
+ else :
+ dSolv_nonloc=None
+
+ if LAGR_NON_LOCAL:
+ dLagr_nonloc=LAGR_NON_LOCAL[0].cree_dict_valeurs(LAGR_NON_LOCAL[0].mc_liste)
+ for i in dLagr_nonloc.keys():
+ if dLagr_nonloc[i]==None : del dLagr_nonloc[i]
+ else :
+ dLagr_nonloc=None
+
+
+
+ # 1.3 Creation des mots-cles pour les 3 AFFE_CHAR_MECA
+ # Recuperation des cables dans les concepts CABLE_BP
+ # et CABLE_BP_INACTIF
+ # ------------------------------------------------------
+ if type(CABLE_BP) is not types.NoneType:
+ if type(CABLE_BP) is not types.TupleType:
+ CABLE_BP0 = CABLE_BP
+ CABLE_BP = []
+ CABLE_BP.append ( CABLE_BP0 )
+
+ if type(CABLE_BP_INACTIF) is not types.NoneType:
+ if type(CABLE_BP_INACTIF) is not types.TupleType:
+ CABLE_BP_INACTIF0 = CABLE_BP_INACTIF
+ CABLE_BP_INACTIF = []
+ CABLE_BP_INACTIF.append ( CABLE_BP_INACTIF0 )
+
+ motscles={}
+ motscles['RELA_CINE_BP']=[]
+ motscle2={}
+ motscle2['RELA_CINE_BP']=[]
+ motscle3={}
+ motscle3['RELA_CINE_BP']=[]
+ __GROUP_MA_A=[]
+ Result = [[None]*1]
+ for mcabl in CABLE_BP:
+ # Creation de mots-cles pour les AFFE_CHAR_MECA
+ motscles['RELA_CINE_BP'].append(_F(CABLE_BP=mcabl,
+ SIGM_BPEL = 'OUI',
+ RELA_CINE = 'NON',) )
+ motscle2['RELA_CINE_BP'].append(_F(CABLE_BP=mcabl,
+ SIGM_BPEL = 'NON',
+ RELA_CINE = 'OUI',) )
+ motscle3['RELA_CINE_BP'].append(_F(CABLE_BP=mcabl,
+ SIGM_BPEL = 'OUI',
+ RELA_CINE = 'OUI',) )
+
+ # Creation de __GROUP_MA_A : liste des noms des cables contenus
+ # dans chaque concept CABLE_BP = cables a activer
+ __TCAB = RECU_TABLE(CO=mcabl,NOM_TABLE='CABLE_BP');
+ __nb = 0
+ while 1:
+ try:
+ Result[__nb][0] = __TCAB['NOM_CABLE',__nb+1]
+ __CAB = __TCAB['NOM_CABLE',__nb+1]
+ if __nb == 0:
+ __GROUP_MA_A.append(__CAB)
+ else:
+ i = 0
+ # enlève les doublons
+ for m in __GROUP_MA_A:
+ i=i+1
+ if __CAB == m:
+ break
+ if i == len(__GROUP_MA_A):
+ __GROUP_MA_A.append(__CAB)
+
+ __nb = __nb + 1
+ Result.append([None]*1)
+ # Si on a lu toutes les valeurs alors on sort de la boucle
+ except KeyError:
+ break
+
+ # Creation de __GROUP_MA_I : liste des noms des cables contenus
+ # dans chaque CABLE_BP_INACTIF
+ # __GROUP_MA_CABLE = liste des cables actifs et inactifs
+ Result = [[None]*1]
+ __GROUP_MA_I=[]
+
+ if CABLE_BP_INACTIF:
+ for mcabl in CABLE_BP_INACTIF:
+ __TCA0 = RECU_TABLE(CO=mcabl,NOM_TABLE='CABLE_BP');
+ __nb = 0
+ while 1:
+ try:
+ Result[__nb][0] = __TCA0['NOM_CABLE',__nb+1]
+ __CA0 = __TCA0['NOM_CABLE',__nb+1]
+ if __nb == 0:
+ __GROUP_MA_I.append(__CA0)
+ else:
+ i = 0
+ # enlève les doublons
+ for m in __GROUP_MA_I:
+ i=i+1
+ if __CA0 == m:
+ break
+ if i == len(__GROUP_MA_I):
+ __GROUP_MA_I.append(__CA0)
+
+ __nb = __nb + 1
+ Result.append([None]*1)
+ # Si on a lu toutes les valeurs alors on sort de la boucle
+ except KeyError:
+ break
+ motscle6={}
+ motscle6['RELA_CINE_BP']=[]
+ for mcabl in CABLE_BP_INACTIF:
+ # Creation de mots-cles pour les AFFE_CHAR_MECA
+ motscle6['RELA_CINE_BP'].append(_F(CABLE_BP=mcabl,
+ SIGM_BPEL = 'NON',
+ RELA_CINE = 'OUI',) )
+
+ __GROUP_MA_CABLES = __GROUP_MA_A + __GROUP_MA_I
+
+
+ # 1.4 Creation des mots-clés facteurs COMP_INCR
+ # pour étape 2 (dComp_incr0) et étape 3 (dComp_incr1)
+ # ------------------------------------------------------
+
+ dComp_incr=[]
+ for j in COMP_INCR :
+ dComp_incr.append(j.cree_dict_valeurs(j.mc_liste))
+ for i in dComp_incr[-1].keys():
+ if dComp_incr[-1][i]==None : del dComp_incr[-1][i]
+
+ dComp_incr0=copy.copy(dComp_incr)
+ dComp_incr1=copy.copy(dComp_incr)
+
+ dComp_incr0.append(_F(RELATION='SANS',GROUP_MA=__GROUP_MA_CABLES) )
+ if __GROUP_MA_I:
+ dComp_incr1.append(_F(RELATION='SANS',GROUP_MA=__GROUP_MA_I) )
+
+
+ # 1.5 Modele contenant uniquement les cables de precontrainte
+ # ---------------------------------------------------------
+
+ __MOD = string.ljust(MODELE.nom,8)
+ __MOD =__MOD+'.MODELE .NOMA '
+ __LMAIL = aster.getvectjev(__MOD)
+ __MAIL = string.strip(__LMAIL[0])
+
+ objma=self.get_sd_avant_etape(__MAIL,self)
+
+ __M_CA=AFFE_MODELE( MAILLAGE=objma,
+ AFFE =_F( GROUP_MA = __GROUP_MA_A,
+ PHENOMENE = 'MECANIQUE',
+ MODELISATION = 'BARRE') )
+
+
+ # 1.6 Blocage de tous les noeuds des cables actifs
+ # --------------------------------------------------
+
+ _B_CA=AFFE_CHAR_MECA(MODELE=__M_CA,
+ DDL_IMPO= _F( GROUP_MA = __GROUP_MA_A,
+ DX = 0.,
+ DY = 0.,
+ DZ = 0.),)
+
+
+ # 1.7 Chargements concernant les cables
+ # -------------------------------------
+ _C_CN=AFFE_CHAR_MECA(MODELE=__M_CA,**motscles)
+ _C_CA=AFFE_CHAR_MECA(MODELE=MODELE,**motscle2)
+ _C_CT=AFFE_CHAR_MECA(MODELE=MODELE,**motscle3)
+ if CABLE_BP_INACTIF:
+ _C_CI=AFFE_CHAR_MECA(MODELE=MODELE,**motscle6)
+
+
+
+ # -------------------------------------------------------------
+ # 2. CALCULS
+ # ------------------------------------------------------------
+
+
+ #-------------------------------------------------------------------
+ # 2.1 Premiere etape : calcul sur le(s) cable(s) et
+ # recuperation des _F_CAs aux noeuds
+ # on travaile entre tmin et tmax
+ #-------------------------------------------------------------------
+
+ __EV1=STAT_NON_LINE(
+ MODELE = __M_CA,
+ CHAM_MATER = CHAM_MATER,
+ CARA_ELEM = CARA_ELEM,
+ EXCIT =(_F(CHARGE = _B_CA),
+ _F(CHARGE = _C_CN),),
+ COMP_INCR =_F( RELATION = 'ELAS',
+ DEFORMATION = 'PETIT',
+ TOUT = 'OUI'),
+ INCREMENT =_F(LIST_INST = __LST0,
+ PRECISION = __prec),
+ SOLVEUR = dSolveur,
+ PARM_THETA = PARM_THETA,
+ INFO =INFO,
+ TITRE = TITRE, )
+
+ __EV1 = CALC_NO( reuse = __EV1,
+ RESULTAT = __EV1,
+ GROUP_MA = __GROUP_MA_A,
+ OPTION = 'FORC_NODA' )
+
+ __REA = CREA_CHAMP (
+ TYPE_CHAM = 'NOEU_DEPL_R',
+ OPERATION = 'EXTR',
+ RESULTAT = __EV1,
+ NOM_CHAM = 'FORC_NODA',
+ INST = __TMAX);
+
+ __REAC = CREA_CHAMP (TYPE_CHAM='NOEU_DEPL_R',
+ OPERATION = 'ASSE',
+ MODELE = MODELE,
+ ASSE= _F(GROUP_MA=__GROUP_MA_A,
+ CHAM_GD=__REA,
+ COEF_R = -1.), )
+
+ _F_CA=AFFE_CHAR_MECA(MODELE=__M_CA,
+ VECT_ASSE = __REAC )
+
+
+
+ #-----------------------------------------------------------------------
+ # 2.2 Deuxieme etape : application de la precontrainte sur le beton
+ # en desactivant les cables
+ #-----------------------------------------------------------------------
+
+ # Regeneration des mots-cles EXCIT passés en argument de la macro
+ dExcit=[]
+ for j in EXCIT :
+ dExcit.append(j.cree_dict_valeurs(j.mc_liste))
+ for i in dExcit[-1].keys():
+ if dExcit[-1][i]==None : del dExcit[-1][i]
+
+ if CABLE_BP_INACTIF:
+ dExcit.append(_F(CHARGE=_C_CI),)
+
+ # Creation du mots-cle EXCIT pour le STAT_NON_LINE
+ dExcit1=copy.copy(dExcit)
+ dExcit1.append(_F(CHARGE=_C_CA),)
+ dExcit1.append(_F(CHARGE = _F_CA,
+ FONC_MULT=__FCT ),)
+
+ RES=STAT_NON_LINE(
+ MODELE =MODELE,
+ CARA_ELEM =CARA_ELEM,
+ CHAM_MATER = CHAM_MATER,
+ COMP_INCR=dComp_incr0,
+ INCREMENT=dIncrement,
+ ETAT_INIT = dEtatInit,
+ NEWTON =dNewton,
+ CONVERGENCE=dConvergence,
+ RECH_LINEAIRE = dRech_lin,
+ SOLVEUR = dSolveur,
+ SOLV_NON_LOCAL = dSolv_nonloc,
+ LAGR_NON_LOCAL = dLagr_nonloc,
+ ARCHIVAGE = _F(INST = __TINT),
+ PARM_THETA = PARM_THETA,
+ INFO =INFO,
+ TITRE = TITRE,
+ EXCIT = dExcit1,
+ )
+
+ # Recuperation du dernier numero d'ordre pour pouvoir l'écraser dans RES
+ __dico2 = RES.LIST_VARI_ACCES()
+ __no = __dico2['NUME_ORDRE'][-1]
+
+
+ #-----------------------------------------------------------------------
+ # 2.2 Troisieme etape : on remet la tension dans les cables
+ #-----------------------------------------------------------------------
+
+ # Creation du mots-cles EXCIT pour le STAT_NON_LINE
+ dExcit2=copy.copy(dExcit)
+ dExcit2.append(_F(CHARGE=_C_CT,) )
+
+ # Calcul sur un seul pas (de __TINT a __TMAX)
+ RES=STAT_NON_LINE( reuse = RES,
+ ETAT_INIT = _F(EVOL_NOLI =RES),
+ MODELE = MODELE,
+ CHAM_MATER = CHAM_MATER,
+ CARA_ELEM = CARA_ELEM,
+ COMP_INCR=dComp_incr1,
+ INCREMENT=_F(LIST_INST = __LST,
+ PRECISION = __prec),
+ NEWTON =dNewton,
+ RECH_LINEAIRE = dRech_lin,
+ CONVERGENCE=dConvergence,
+ SOLVEUR = dSolveur,
+ SOLV_NON_LOCAL = dSolv_nonloc,
+ LAGR_NON_LOCAL = dLagr_nonloc,
+ ARCHIVAGE = _F(NUME_INIT = __no,
+ DETR_NUME_SUIV = 'OUI' ),
+ PARM_THETA = PARM_THETA,
+ INFO =INFO,
+ TITRE = TITRE,
+ EXCIT =dExcit2,
+ )
+
+ return ier
+
--- /dev/null
+#@ MODIF defi_cable_bp_ops Macro DATE 14/09/2004 AUTEUR MCOURTOI M.COURTOIS
+# -*- coding: iso-8859-1 -*-
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2003 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE ASSIRE A.ASSIRE
+
+# ===========================================================================
+# CORPS DE LA MACRO "DEFI_CABLE_BP"
+# -------------------------------------
+# USAGE :
+# Entrée :
+# - MAILLAGE
+# - MODELE
+# - CABLE
+# - CHAM_MATER
+# - CARA_ELEM
+# - GROUP_MA_BETON
+# - DEFI_CABLE
+# - TYPE_ANCRAGE
+# - TENSION_INIT
+# - RECUL_ANCRAGE
+# - RELAXATION
+# - CONE
+# RAYON
+# LONGUEUR
+# PRESENT OUI ou NON deux fois
+# - TITRE
+# - INFO 1 / 2
+#
+# ===========================================================================
+
+
+
+def defi_cable_bp_ops(self,MAILLAGE,MODELE,CHAM_MATER,CARA_ELEM,GROUP_MA_BETON,
+ DEFI_CABLE,TYPE_ANCRAGE,TENSION_INIT,RECUL_ANCRAGE,
+ RELAXATION,CONE,TITRE,INFO,**args):
+
+ """
+ Ecriture de la macro DEFI_CABLE_BP
+ """
+ from Accas import _F
+ import aster,string
+ ier=0
+
+ # On importe les definitions des commandes a utiliser dans la macro
+ DEFI_GROUP = self.get_cmd('DEFI_GROUP')
+ IMPR_RESU = self.get_cmd('IMPR_RESU')
+ DEFI_CABLE_OP = self.get_cmd('DEFI_CABLE_OP')
+ RECU_TABLE = self.get_cmd('RECU_TABLE')
+ IMPR_TABLE = self.get_cmd('IMPR_TABLE')
+ IMPR_CO = self.get_cmd('IMPR_CO')
+
+ # La macro compte pour 1 dans la numerotation des commandes
+ self.set_icmd(1)
+
+ # Le concept sortant (de type char_meca) est nomme CHCABLE dans
+ # le contexte de la macro
+
+ self.DeclareOut('__DC',self.sd)
+
+ # ---------------------------------------------------------------------------- #
+ # Début de la Macro :
+
+ motscles={}
+
+ # RECUPERATION DES INFOS DONNEES PAR LE MOT-CLE "CONE"
+
+ if CONE:
+ dCONE=CONE[0].cree_dict_valeurs(CONE[0].mc_liste)
+ for i in dCONE.keys():
+ if dCONE[i]==None : del dCONE[i]
+
+ RAYON = dCONE['RAYON']
+ LONGUEUR = dCONE['LONGUEUR']
+
+ motscles['CONE']=[]
+ motscles['CONE'].append( dCONE )
+
+
+ # VERIFICATION QUE LE MAILLAGE EST COHERENT AVEC LE MODELE
+
+ __MAIL = aster.getvectjev( string.ljust(MODELE.nom,8) + '.MODELE .NOMA ' )
+ if string.ljust(MAILLAGE.nom,8) != __MAIL[0] :
+ self.DeclareOut(MAILLAGE.nom,maillage)
+ print ' '
+ print ' # ---------------------------------------------------------------------------'
+ print ' # DEFI_CABLE_BP - Erreur : LE CONCEPT MAILLAGE RENSEIGNE NE CORRESPOND'
+ print ' # PAS A CELUI UTILISE DANS LE MODELE !'
+ print ' # ',MAILLAGE.nom,' - ',__MAIL[0]
+ print ' # ---------------------------------------------------------------------------'
+ print ' '
+ ier=ier+1
+ self.cr.fatal("""<F> <DEFI_CABLE_BP> Erreur dans la macro""")
+ return ier
+
+
+ # DEFINITION DU NOM DES GROUP_NO
+
+ __NOM = '_AN_'
+ __LGNO = MAILLAGE.LIST_GROUP_NO()
+ __LGN1 = []
+ for i in __LGNO :
+ __LGN1.append( i[0][:len(__NOM)] )
+
+ __NB = __LGN1.count(__NOM)
+
+# FIN RECUPERATION DES INFOS DONNEES PAR LE MOT-CLE "CONE"
+
+
+ # RECUPERATION DES INFOS DONNEES PAR LE MOT-CLE "DEFI_CABLE"
+
+ dDEFI_CABLE=[]
+ for j in DEFI_CABLE :
+ dDEFI_CABLE.append(j.cree_dict_valeurs(j.mc_liste))
+ for i in dDEFI_CABLE[-1].keys():
+ if dDEFI_CABLE[-1][i]==None : del dDEFI_CABLE[-1][i]
+
+
+ # BOUCLE SUR LES FACTEURS DU MOT-CLE "DEFI_CABLE"
+
+ motscles['DEFI_CABLE']=[]
+
+ for i in dDEFI_CABLE:
+
+ # CAS OU L'ON A DEFINI LE MOT-CLE "CONE"
+ if CONE:
+
+ # CREATION DU PREMIER TUNNEL
+
+ if dCONE['PRESENT'][0] == 'OUI':
+ __NB = __NB + 1
+ __NOM1 = __NOM + str( int(__NB) )
+
+ motscle2={}
+ motscle2['CREA_GROUP_NO']=[]
+
+ if i.has_key('GROUP_MA') == 1:
+ __CAB = i['GROUP_MA']
+ motscle2= {'CREA_GROUP_NO': [{'LONGUEUR': LONGUEUR, 'RAYON': RAYON, 'OPTION': 'TUNNEL', 'GROUP_MA': [ GROUP_MA_BETON, __CAB ], 'GROUP_MA_AXE': __CAB, 'NOM': __NOM1}]}
+ if i.has_key('MAILLE') == 1:
+ print ' '
+ print ' # ---------------------------------------------------------------------------'
+ print ' # DEFI_CABLE_BP - Erreur : MAILLE INTERDIT - UTILISER GROUP_MA'
+ print ' # ---------------------------------------------------------------------------'
+ print ' '
+ ier=ier+1
+ self.cr.fatal("""<F> <DEFI_CABLE_BP> Erreur dans la macro""")
+ return ier
+ if i.has_key('GROUP_NO_ANCRAGE') == 1:
+ __PC1 = i['GROUP_NO_ANCRAGE'][0]
+ motscle2['CREA_GROUP_NO'][0]['GROUP_NO_ORIG'] = __PC1
+ if i.has_key('NOEUD_ANCRAGE') == 1:
+ __PC1 = i['NOEUD_ANCRAGE'][0]
+ motscle2['CREA_GROUP_NO'][0]['NOEUD_ORIG'] = __PC1
+
+
+ DEFI_GROUP( reuse=MAILLAGE,
+ MAILLAGE=MAILLAGE,
+ INFO=INFO,
+ ALARME='NON',
+ **motscle2
+ ) ;
+
+ # CREATION DU DEUXIEME TUNNEL
+
+ if dCONE['PRESENT'][1] == 'OUI':
+ __NB = __NB + 1
+ __NOM2 = __NOM + str( int(__NB) )
+
+ motscle2={}
+ motscle2['CREA_GROUP_NO']=[]
+
+ if i.has_key('GROUP_MA') == 1:
+ __CAB = i['GROUP_MA']
+ motscle2= {'CREA_GROUP_NO': [{'LONGUEUR': LONGUEUR, 'RAYON': RAYON, 'OPTION': 'TUNNEL', 'GROUP_MA': [ GROUP_MA_BETON, __CAB ], 'GROUP_MA_AXE': __CAB, 'NOM': __NOM2}]}
+ if i.has_key('MAILLE') == 1:
+ print ' '
+ print ' # ---------------------------------------------------------------------------'
+ print ' # DEFI_CABLE_BP - Erreur : MAILLE INTERDIT - UTILISER GROUP_MA'
+ print ' # ---------------------------------------------------------------------------'
+ print ' '
+ ier=ier+1
+ self.cr.fatal("""<F> <DEFI_CABLE_BP> Erreur dans la macro""")
+ return ier
+ if i.has_key('GROUP_NO_ANCRAGE') == 1:
+ __PC1 = i['GROUP_NO_ANCRAGE'][1]
+ motscle2['CREA_GROUP_NO'][0]['GROUP_NO_ORIG'] = __PC1
+ if i.has_key('NOEUD_ANCRAGE') == 1:
+ __PC1 = i['NOEUD_ANCRAGE'][1]
+ motscle2['CREA_GROUP_NO'][0]['NOEUD_ORIG'] = __PC1
+
+ DEFI_GROUP( reuse=MAILLAGE,
+ MAILLAGE=MAILLAGE,
+ INFO=INFO,
+ ALARME='NON',
+ **motscle2
+ ) ;
+
+
+ # CREATION DES NOUVEAUX FACTEURS DU MOT-CLE "DEFI_CABLE" POUR DEFI_CABLE_BP
+
+ if dCONE['PRESENT'][0] == 'OUI' and dCONE['PRESENT'][1] == 'OUI':
+ if i.has_key('GROUP_MA') == 1 and i.has_key('GROUP_NO_ANCRAGE') == 1:
+ motscles['DEFI_CABLE'].append( _F(GROUP_MA=i['GROUP_MA'],
+ GROUP_NO_ANCRAGE=i['GROUP_NO_ANCRAGE'],
+ GROUP_NO_FUT=( __NOM1,__NOM2, ), ), )
+ if i.has_key('GROUP_MA') == 1 and i.has_key('NOEUD_ANCRAGE') == 1:
+ motscles['DEFI_CABLE'].append( _F(GROUP_MA=i['GROUP_MA'],
+ NOEUD_ANCRAGE=i['NOEUD_ANCRAGE'],
+ GROUP_NO_FUT=( __NOM1,__NOM2, ), ), )
+
+ if dCONE['PRESENT'][0] == 'OUI' and dCONE['PRESENT'][1] == 'NON':
+ if i.has_key('GROUP_MA') == 1 and i.has_key('GROUP_NO_ANCRAGE') == 1:
+ motscles['DEFI_CABLE'].append( _F(GROUP_MA=i['GROUP_MA'],
+ GROUP_NO_ANCRAGE=i['GROUP_NO_ANCRAGE'],
+ GROUP_NO_FUT=( __NOM1, ), ), )
+ if i.has_key('GROUP_MA') == 1 and i.has_key('NOEUD_ANCRAGE') == 1:
+ motscles['DEFI_CABLE'].append( _F(GROUP_MA=i['GROUP_MA'],
+ NOEUD_ANCRAGE=i['NOEUD_ANCRAGE'],
+ GROUP_NO_FUT=( __NOM1, ), ), )
+
+ if dCONE['PRESENT'][0] == 'NON' and dCONE['PRESENT'][1] == 'OUI':
+ if i.has_key('GROUP_MA') == 1 and i.has_key('GROUP_NO_ANCRAGE') == 1:
+ motscles['DEFI_CABLE'].append( _F(GROUP_MA=i['GROUP_MA'],
+ GROUP_NO_ANCRAGE=i['GROUP_NO_ANCRAGE'],
+ GROUP_NO_FUT=( __NOM2, ), ), )
+ if i.has_key('GROUP_MA') == 1 and i.has_key('NOEUD_ANCRAGE') == 1:
+ motscles['DEFI_CABLE'].append( _F(GROUP_MA=i['GROUP_MA'],
+ NOEUD_ANCRAGE=i['NOEUD_ANCRAGE'],
+ GROUP_NO_FUT=( __NOM2, ), ), )
+
+ if dCONE['PRESENT'][0] == 'NON' and dCONE['PRESENT'][1] == 'NON':
+ if i.has_key('GROUP_MA') == 1 and i.has_key('GROUP_NO_ANCRAGE') == 1:
+ motscles['DEFI_CABLE'].append( _F(GROUP_MA=i['GROUP_MA'],
+ GROUP_NO_ANCRAGE=i['GROUP_NO_ANCRAGE'], ), )
+ if i.has_key('GROUP_MA') == 1 and i.has_key('NOEUD_ANCRAGE') == 1:
+ motscles['DEFI_CABLE'].append( _F(GROUP_MA=i['GROUP_MA'],
+ NOEUD_ANCRAGE=i['NOEUD_ANCRAGE'], ), )
+
+
+ # CAS OU L'ON A PAS DEFINI LE MOT-CLE "CONE"
+ else:
+ if i.has_key('GROUP_MA') == 1 and i.has_key('GROUP_NO_ANCRAGE') == 1:
+ motscles['DEFI_CABLE'].append( _F(GROUP_MA=i['GROUP_MA'],
+ GROUP_NO_ANCRAGE=i['GROUP_NO_ANCRAGE'], ), )
+
+ if i.has_key('GROUP_MA') == 1 and i.has_key('NOEUD_ANCRAGE') == 1:
+ motscles['DEFI_CABLE'].append( _F(GROUP_MA=i['GROUP_MA'],
+ NOEUD_ANCRAGE=i['NOEUD_ANCRAGE'], ), )
+
+ if i.has_key('MAILLE') == 1 and i.has_key('GROUP_NO_ANCRAGE') == 1:
+ motscles['DEFI_CABLE'].append( _F(MAILLE=i['MAILLE'],
+ GROUP_NO_ANCRAGE=i['GROUP_NO_ANCRAGE'], ), )
+
+ if i.has_key('MAILLE') == 1 and i.has_key('NOEUD_ANCRAGE') == 1:
+ motscles['DEFI_CABLE'].append( _F(MAILLE=i['MAILLE'],
+ NOEUD_ANCRAGE=i['NOEUD_ANCRAGE'], ), )
+
+
+# FIN BOUCLE sur i in DEFI_CABLE
+
+
+ # LANCEMENT DE DEFI_CABLE_BP
+
+ if RELAXATION:
+ dRelaxation=RELAXATION[0].cree_dict_valeurs(RELAXATION[0].mc_liste)
+ for i in dRelaxation.keys():
+ if dRelaxation[i]==None : del dRelaxation[i]
+
+ __DC=DEFI_CABLE_OP(MODELE=MODELE,
+ CHAM_MATER=CHAM_MATER,
+ CARA_ELEM=CARA_ELEM,
+ GROUP_MA_BETON=GROUP_MA_BETON,
+ TYPE_ANCRAGE=TYPE_ANCRAGE,
+ TENSION_INIT=TENSION_INIT,
+ RECUL_ANCRAGE=RECUL_ANCRAGE,
+ RELAXATION=dRelaxation,
+ INFO=INFO,
+ **motscles
+ );
+
+ else:
+
+ __DC=DEFI_CABLE_OP(MODELE=MODELE,
+ CHAM_MATER=CHAM_MATER,
+ CARA_ELEM=CARA_ELEM,
+ GROUP_MA_BETON=GROUP_MA_BETON,
+ TYPE_ANCRAGE=TYPE_ANCRAGE,
+ TENSION_INIT=TENSION_INIT,
+ RECUL_ANCRAGE=RECUL_ANCRAGE,
+ INFO=INFO,
+ **motscles
+ );
+
+# __TCAB = RECU_TABLE(CO=__DC,NOM_TABLE='CABLE_BP');
+# IMPR_TABLE(TABLE=__TCAB);
+
+ return ier
--- /dev/null
+#@ MODIF defi_part_feti_ops Macro DATE 05/07/2005 AUTEUR DURAND C.DURAND
+# -*- coding: iso-8859-1 -*-
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE ASSIRE A.ASSIRE
+
+
+# ===========================================================================
+# CORPS DE LA MACRO "DEFI_PART_FETI"
+# -------------------------------------
+# USAGE :
+# MAILLAGE maillage a partitionner
+# MODELE modele (facultatif)
+# NB_PART nb de sous-domaines
+# EXCIT liste des chargements
+# METHODE PMETIS, KMETIS ou AUTRE
+# LOGICIEL si AUTRE alors on attend un chemin complet vers executable
+# NOM_GROUP_MA Un nom de base pour les group_ma contenant les SD
+# INFO 1,2
+#
+# ===========================================================================
+# script PYTHON : appel a Metis et lancement de DEFI_PART_OPS
+
+
+def defi_part_feti_ops(self,MAILLAGE,MODELE,NB_PART,EXCIT,METHODE,NOM_GROUP_MA,INFO,**args):
+
+ import aster, string, sys
+
+ from Accas import _F
+ from Noyau.N_utils import AsType
+
+ from Utilitai import partition
+
+ # DEBUT DE LA MACRO
+ ier=0
+
+ INCLUSE='NON' # On cree des GROUP_MA pour les mailles de bords (pour developpeur)
+
+ # Nom des GROUP_MA générés
+ NOM_GROUP_MA = string.strip(NOM_GROUP_MA)
+ NOM_GROUP_MA_BORD = '_' + NOM_GROUP_MA
+
+ # Test sur le nombre de caractères de NOM_GROUP_MA
+ if ( len(NOM_GROUP_MA)+len(str(NB_PART)) > 7 ):
+ print '\n\n ERREUR : Afin de pouvoir générer les GROUP_MA, réduisez le nombre \n de caractères de NOM_GROUP_MA à un maximum de :', 7-len(str(NB_PART))
+ print '\n\n'
+ sys.exit(1)
+
+ # Verification que des GROUP_MA ne portent pas deja les memes noms
+ _lst = []
+ for i in MAILLAGE.LIST_GROUP_MA():
+ _lst.append( string.strip(i[0]) )
+ for i in range(NB_PART):
+ if ( NOM_GROUP_MA+str(i) in _lst ):
+ print '\n\n ERREUR : Il existe déjà un GROUP_MA nommé : ', NOM_GROUP_MA+str(i)
+ print '\n\n'
+ sys.exit(1)
+ if ( NOM_GROUP_MA_BORD+str(i) in _lst ):
+ print '\n\n ERREUR : Il existe déjà un GROUP_MA nommé : ', NOM_GROUP_MA_BORD+str(i)
+ print '\n\n'
+ sys.exit(1)
+
+ # Executable du partitionneur
+ if METHODE=="AUTRE":
+ exe_metis = arg['LOGICIEL']
+ else:
+ exe_metis = aster.repout() + string.lower(METHODE)
+
+ # On importe les definitions des commandes a utiliser dans la macro
+ DEFI_PART_OPS = self.get_cmd('DEFI_PART_OPS')
+ INFO_EXEC_ASTER = self.get_cmd('INFO_EXEC_ASTER')
+ DEFI_FICHIER = self.get_cmd('DEFI_FICHIER')
+ DETRUIRE = self.get_cmd('DETRUIRE')
+
+ # La macro compte pour 1 dans la numerotation des commandes
+ self.set_icmd(1)
+
+ # Le concept sortant dans le contexte de la macro
+ self.DeclareOut('_SDFETI',self.sd)
+
+ # Debut :
+ print """
+
+ # ---------------------------------------------------------------------------
+ # MACRO-COMMANDE : DEFI_PART_FETI
+ # ----------------
+"""
+
+ # Objet Partition
+ _part = partition.PARTITION(jdc=self);
+
+ # Recuperation de deux UL libres
+ _UL=INFO_EXEC_ASTER(LISTE_INFO='UNITE_LIBRE')
+ ul1=_UL['UNITE_LIBRE',1]
+ DETRUIRE(CONCEPT=(_F(NOM=_UL),), INFO=1)
+ DEFI_FICHIER(UNITE=ul1)
+ _UL=INFO_EXEC_ASTER(LISTE_INFO='UNITE_LIBRE')
+ ul2=_UL['UNITE_LIBRE',1]
+ DEFI_FICHIER(ACTION='LIBERER',UNITE=ul1)
+
+ fichier_in = 'fort.' + str(ul1)
+ fichier_out = 'fort.' + str(ul2)
+
+ # Options de la classe Partition
+ _part.OPTIONS['exe_metis'] = exe_metis
+ _part.OPTIONS['fichier_in'] = fichier_in
+ _part.OPTIONS['fichier_out'] = fichier_out
+
+
+ # Partitionnement
+ if MODELE:
+ _part.Partitionne_Aster(
+ MAILLAGE = MAILLAGE,
+ MODELE = MODELE,
+ NB_PART = NB_PART,
+ INFO = INFO,
+ );
+
+ elif MAILLAGE:
+ _part.Partitionne_Aster(
+ MAILLAGE = MAILLAGE,
+ NB_PART = NB_PART,
+ INFO = INFO,
+ );
+
+
+ # Creation des group_ma dans le maillage Aster
+ _part.Creation_Group_ma_Aster_par_SD(NOM=NOM_GROUP_MA, NOM2=NOM_GROUP_MA_BORD, INCLUSE=INCLUSE)
+
+
+ # Creation de la SDFETI
+ if MODELE:
+ _tmp = []
+ for i in range(NB_PART):
+ txt = { 'GROUP_MA': NOM_GROUP_MA + str(i) }
+ if ( NOM_GROUP_MA_BORD+str(i) in _part.ASTER['GROUP_MA_BORD'] ):
+ txt['GROUP_MA_BORD'] = NOM_GROUP_MA_BORD + str(i)
+ _tmp.append( txt )
+
+ motscle2= {'DEFI': _tmp }
+
+ # Regeneration des mots-cles EXCIT passés en argument de la macro
+ if EXCIT:
+ dExcit=[]
+ for j in EXCIT :
+ dExcit.append(j.cree_dict_valeurs(j.mc_liste))
+ for i in dExcit[-1].keys():
+ if dExcit[-1][i]==None : del dExcit[-1][i]
+ motscle2['EXCIT']=dExcit
+
+ _SDFETI=DEFI_PART_OPS(NOM='SDD',
+ MODELE=MODELE,
+ INFO=1,
+ **motscle2
+ );
+ else:
+ _SDFETI=None
+
+
+ # Fin :
+ print """
+
+ % FIN MACRO-COMMANDE: DEFI_PART_FETI
+
+"""
+
+ return ier
--- /dev/null
+#@ MODIF fiabilite_fichier Macro DATE 14/09/2004 AUTEUR MCOURTOI M.COURTOIS
+# -*- coding: iso-8859-1 -*-
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE GNICOLAS G.NICOLAS
+#
+class fiabilite_fichier :
+#
+ """ Classe des fichiers de données des logiciels fiabilistes
+ Cette classe a été mise au point pour le couplage entre
+ Code_ASTER et MEFISTO, mais pourrait servir ailleurs.
+ """
+#
+#
+#====
+# 1. Le constructeur
+#====
+#
+#
+ def __init__ ( self, jdc, Rep_Calc_LOGICIEL_global, nomfic, info = 1 ) :
+#
+# jdc : le jeu de commandes en cours de traitement
+#
+ self.jdc = jdc
+#
+# Rep_Calc_LOGICIEL_global : le répertoire d'exécution du logiciel de fiabilité
+#
+ self.Rep_Calc_LOGICIEL_global = Rep_Calc_LOGICIEL_global
+#
+# nomfic : nom local du fichier à créer
+#
+ self.nomfic = nomfic
+#
+# messages_erreur : messages d'erreur
+#
+ self.messages_erreur = { 0 : "Tout va bien",
+ 1 : "==> Ce fichier est inconnu.",
+ 2 : "==> Ce type d'ouverture est inconnu.",
+ 10 : "==> Problème à l'ouverture.",
+ 11 : "==> Problème à la fermeture.",
+ 20 : "==> Problème à l'impression." }
+#
+# info : niveau d'information au sens ASTER
+#
+ self.info = info
+#
+# ligne_sep : ligne de séparation
+#
+ self.ligne_sep = "========================================================="
+ self.ligne_commentaire = "#" + self.ligne_sep + "\n"
+#
+ if info >= 2 :
+ print "Création du fichier : "+self.nomfic
+#
+#====
+# 2. Ouverture du fichier
+#====
+#
+ def Ouvre_Fichier ( self, type_ouvr ) :
+#
+# 2.0. ==> Préalables
+#
+ """
+ Ouvre le fichier en lecture ou écriture.
+ 0 : tout s'est bien passé
+ 1 : on veut ouvrir en lecture un fichier qui n'existe pas
+ 2 : le mode d'ouverture est inconnu
+ 10 : impossible d'ouvrir
+ """
+#
+ import os
+#
+# 2.1. ==> Le nom global du fichier
+#
+ self.nomfic_global = os.path.join(self.Rep_Calc_LOGICIEL_global,self.nomfic)
+#
+# 2.2. ==> Controles
+#
+ erreur = 0
+#
+ if ( type_ouvr == "w" or type_ouvr == "r" ) :
+#
+ if ( type_ouvr == "r" ) :
+ if not os.path.isfile(self.nomfic_global) :
+ erreur = 1
+
+ else :
+#
+ self.jdc.cr.warn("Type d'ouverture : "+type_ouvr)
+ erreur = 2
+#
+# 2.3. ==> Ouverture vraie
+#
+ if not erreur :
+#
+ erreur_partiel = [0]
+ try :
+ self.fic = open( self.nomfic_global, type_ouvr )
+ except os.error,erreur_partiel :
+ self.jdc.cr.warn("Code d'erreur de open : " + str(erreur_partiel[0]) + " : " + erreur_partiel[1])
+ erreur = 10
+#
+# 2.4. ==> C'est fini
+#
+ if erreur :
+ self.jdc.cr.warn("Fichier : "+self.nomfic)
+ self.jdc.cr.warn(self.messages_erreur[erreur])
+#
+ return erreur
+#
+#====
+# 3. Fermeture du fichier
+#====
+#
+ def Ferme_Fichier ( self ) :
+#
+# 3.0. ==> Préalables
+#
+ """
+ Ferme le fichier.
+ 0 : tout s'est bien passé
+ 20 : impossible d'imprimer
+ """
+#
+ import os
+#
+# 3.1. ==> Controles
+#
+ erreur = 0
+#
+ if not os.path.isfile(self.nomfic_global) :
+ erreur = 1
+#
+# 3.2. ==> Fermeture vraie
+#
+ if not erreur :
+#
+ erreur_partiel = [0]
+ try :
+ self.fic.close( )
+ except os.error,erreur_partiel :
+ self.jdc.cr.warn("Code d'erreur de close : " + str(erreur_partiel[0]) + " : " + erreur_partiel[1])
+ erreur = 11
+#
+# 3.3. ==> C'est fini
+#
+ if erreur :
+ self.jdc.cr.warn("Fichier : "+self.nomfic)
+ self.jdc.cr.warn(self.messages_erreur[erreur])
+#
+ return erreur
+#
+#====
+# 4. Impression du contenu du fichier
+#====
+#
+ def Imprime_Fichier ( self ) :
+#
+# 4.0. ==> Préalables
+#
+ """
+ Imprime le fichier.
+ 0 : tout s'est bien passé
+ 20 : impossible d'imprimer
+ """
+#
+# 4.1. ==> Lecture
+#
+ erreur = self.Ouvre_Fichier ( "r" )
+ if not erreur :
+ les_lignes = self.fic.readlines()
+ erreur = self.Ferme_Fichier ( )
+#
+# 4.2. ==> Impression
+#
+ if not erreur :
+#
+ print "\n"+self.ligne_sep
+ print "Contenu du fichier " + self.nomfic," :"
+ for ligne in les_lignes :
+ print ligne[:-1]
+ print self.ligne_sep+"\n"
+#
+# 4.4. ==> C'est fini
+#
+ if erreur :
+ erreur = 20
+ self.jdc.cr.warn("Fichier : "+self.nomfic)
+ self.jdc.cr.warn(self.messages_erreur[erreur])
+#
+ return erreur
+#
+#====
+# 5. Ecriture de lignes de commentaires
+#====
+#
+ def Ecrit_Commentaires ( self, comm ) :
+#
+ """
+ Liste = commentaires à écrire
+ Soit c'est une chaine qu'on écrit sur une ligne ;
+ Soit c'est une liste, qu'on écrit à raison de une par ligne.
+ Remarque : cela suppose que le fichier est ouvert en écriture
+ """
+#
+ if type(comm) == type([ ]) :
+ Liste = comm
+ else :
+ Liste = [comm]
+#
+ for ligne in Liste :
+ self.fic.write("# "+str(ligne)+"\n")
+#
+#====
+# 6. Ecriture de lignes de titres
+#====
+#
+ def Ecrit_Titre ( self, comm ) :
+#
+ """
+ Liste = commentaires à écrire, encadrés par des séparateurs
+ Soit c'est une chaine qu'on écrit sur une ligne ;
+ Soit c'est une liste, qu'on écrit à raison de une par ligne.
+ Remarque : cela suppose que le fichier est ouvert en écriture
+ """
+#
+ self.fic.write(self.ligne_commentaire)
+ self.Ecrit_Commentaires(comm)
+ self.fic.write(self.ligne_commentaire)
+#
+#====
+# 7. Ecriture d'une ligne de valeurs
+#====
+#
+ def Ecrit_Valeurs ( self, val ) :
+#
+ """
+ Liste = liste des valeurs à écrire, représenatn une ligne
+ Remarque : cela suppose que le fichier est ouvert en écriture
+ """
+#
+ if type(val) == type([ ]) :
+ ligne = " "
+ for aux in val :
+ ligne = ligne + " " + str(aux)
+ else :
+ ligne = str(val)
+#
+ self.fic.write(ligne+"\n")
+#
+#
+#=======================================================================================
+#=======================================================================================
+
+
+#
+#
+if __name__ == "__main__" :
+#
+ import os
+ import sys
+ import tempfile
+#
+# 1. ==> Préalable
+#
+ Rep_Calc_LOGICIEL_global = tempfile.mktemp()
+ os.mkdir(Rep_Calc_LOGICIEL_global)
+#
+ jdc = None
+#
+# 2. ==> Création de la classe
+#
+ nomfic = "dataGrad"
+ fic = fiabilite_fichier ( jdc, Rep_Calc_LOGICIEL_global , nomfic )
+#
+# 3. ==> Ouverture du fichier
+#
+ erreur = fic.Ouvre_Fichier ( "w" )
+#
+# 4. ==> Remplissage du fichier
+#
+ if not erreur :
+ aux = ["Titre 1", "Titre 2"]
+ fic.Ecrit_Titre (aux)
+ aux = ["Ligne 1", "Ligne 2"]
+ fic.Ecrit_Commentaires (aux)
+ aux = "Ligne en forme de chaine"
+ fic.Ecrit_Commentaires (aux)
+ aux = 1789.1792
+ fic.Ecrit_Commentaires (aux)
+ aux = [1, 0.0]
+ fic.Ecrit_Valeurs (aux)
+ aux = 1958.
+ fic.Ecrit_Valeurs (aux)
+#
+# 5. ==> Fermeture du fichier
+#
+ if not erreur :
+ erreur = fic.Ferme_Fichier ( )
+#
+# 4. ==> Impression du fichier
+#
+ if not erreur :
+ erreur = fic.Imprime_Fichier ( )
+#
+# 4. ==> La fin
+#
+ Liste = os.listdir(Rep_Calc_LOGICIEL_global)
+#
+ for nomfic in Liste :
+ fic_total = os.path.join(Rep_Calc_LOGICIEL_global,nomfic)
+ os.chmod (fic_total,0755)
+ os.remove (fic_total)
+ os.rmdir (Rep_Calc_LOGICIEL_global)
+#
+ if erreur :
+ mess = "Erreur " + str(erreur)
+ else :
+ mess = "Fin normale."
+ sys.exit(mess)
--- /dev/null
+#@ MODIF fiabilite_mefisto Macro DATE 14/09/2004 AUTEUR MCOURTOI M.COURTOIS
+# -*- coding: iso-8859-1 -*-
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+
+
+# RESPONSABLE GNICOLAS G.NICOLAS
+#
+def fiabilite_mefisto ( self, Rep_Calc_LOGICIEL_global,
+ INFO, VERSION,
+ SEUIL, SEUIL_TYPE,
+ VARIABLE,
+ valeurs_lois,
+ **args ) :
+#
+# valeurs_lois est un dictionnaire indexé sur les variables.
+# Chaque case, valeurs_lois[m], est un dictionnaire contenant :
+# d["v_moy_physique"] = valeur moyenne physique
+# d["v_moy_loi"] = valeur moyenne de la loi
+# d["v_min_loi"] = valeur minimale de la loi
+# d["v_max_loi"] = valeur maximale de la loi
+# d["sigma_loi"] = ecart type de la loi
+#
+# args est le dictionnaire des arguments optionnels
+# args.keys() est la liste des mots-clés
+# args.keys()[0] est la premiere valeur de cette liste
+# args.keys()[1:] est la liste des valeurs suivantes dans cette liste
+# args.keys(mot_cle) représente le contenu de la variable mot_cle dans la macro appelante.
+#
+ """ Ecriture des données spécifiques à MEFISTO. """
+#
+ from Macro import fiabilite_fichier
+ import os
+ import string
+#
+#____________________________________________________________________
+#
+# 1. Préalables
+#____________________________________________________________________
+#
+#
+ messages_erreur = { 0 : "Tout va bien",
+ 1 : "Fichier inconnu.",
+ 2 : "Problème d'ouverture de fichier.",
+ 10 : "Problème d'ouverture de fichier.",
+ 11 : "Problème de fermeture de fichier.",
+ 20 : "Problème d'impression de fichier.",
+ 50 : "Donnée inacceptable.",
+ 100 : "Erreur." }
+#
+ trad_oui_non = { "OUI" : 1,
+ "NON" : 0 }
+#
+ erreur = 0
+#
+ while not erreur :
+#
+#____________________________________________________________________
+#
+# 2. Les fichiers pour le logiciel de fiabilité
+# Ils sont créés dans le répertoire d'exécution du logiciel de fiabilité, avec leurs noms officiels
+#____________________________________________________________________
+#
+#
+ fic_dataMenu = "dataMenu"
+ fic_dataStoch = "dataStoch"
+ fic_dataNum = "dataNum"
+ fic_dataGrad = "dataGrad"
+#
+#____________________________________________________________________
+#
+# 3. Construction du fichier 'dataMenu'
+#____________________________________________________________________
+#
+# 3.1 ==> Ouverture du fichier
+#
+ f_menu = fiabilite_fichier.fiabilite_fichier ( self, Rep_Calc_LOGICIEL_global, fic_dataMenu, INFO )
+ erreur = f_menu.Ouvre_Fichier ( "w" )
+ if erreur :
+ break
+#
+# 3.2 ==> Ecriture des données nécessaires
+#
+ f_menu.Ecrit_Titre ("MENU DU PROGRAMME MEFISTO")
+ f_menu.Ecrit_Titre ("1 <=> OUI et 0 <=> NON (entiers)")
+#
+ f_menu.Ecrit_Titre ("Recherche du point de conception")
+ aux = trad_oui_non[args["RECH_PT_CONCEPT"]]
+ f_menu.Ecrit_Valeurs (aux)
+#
+ f_menu.Ecrit_Titre ("First Order Reliability Analyses")
+ aux = trad_oui_non[args["METHODE_FORM"]]
+ f_menu.Ecrit_Valeurs (aux)
+#
+ f_menu.Ecrit_Titre ("Second Order Reliability Analyses")
+ aux = trad_oui_non[args["METHODE_SORM"]]
+ f_menu.Ecrit_Valeurs (aux)
+#
+ f_menu.Ecrit_Titre ("Importance Sampling Analyses")
+ aux = trad_oui_non[args["TIRAGE_IMPORTANCE"]]
+ f_menu.Ecrit_Valeurs (aux)
+#
+ f_menu.Ecrit_Titre ("Optimality Test (1) : Hessian Test")
+ aux = trad_oui_non[args["T_HESSIEN"]]
+ f_menu.Ecrit_Valeurs (aux)
+#
+ f_menu.Ecrit_Titre ("Optimality Test (2) : Sphere Test")
+ aux = trad_oui_non[args["T_SPHERE"]]
+ f_menu.Ecrit_Valeurs (aux)
+#
+ f_menu.Ecrit_Titre ("Optimality Test (3) : Strong Max Test")
+ aux = trad_oui_non[args["T_MAXIMUM_FORT"]]
+ f_menu.Ecrit_Valeurs (aux)
+#
+ f_menu.Ecrit_Titre ("Experiment Plan")
+ aux = trad_oui_non[args["PLAN_EXPERIENCE"]]
+ f_menu.Ecrit_Valeurs (aux)
+#
+ f_menu.Ecrit_Titre ("Polynomial Taylor Approximation (order 2)")
+ aux = trad_oui_non[args["POLYNOME_TAYLOR"]]
+ f_menu.Ecrit_Valeurs (aux)
+#
+# 3.3 ==> Fermeture du fichier
+#
+ erreur = f_menu.Ferme_Fichier ( )
+ if erreur :
+ break
+#
+ if INFO >= 2 :
+ erreur = f_menu.Imprime_Fichier ( )
+ if erreur :
+ break
+#
+#____________________________________________________________________
+#
+# 4. Construction du fichier "dataStoch"
+#____________________________________________________________________
+#
+# 4.1 ==> Ouverture du fichier
+#
+ f_stoch = fiabilite_fichier.fiabilite_fichier ( self, Rep_Calc_LOGICIEL_global, fic_dataStoch, INFO )
+ erreur = f_stoch.Ouvre_Fichier ( "w" )
+ if erreur :
+ break
+#
+# 4.2 ==> Nombre d'occurence de VARIABLE
+#
+ nb_occu_variable = len(VARIABLE)
+#
+# 4.3 ==> Ecriture des données nécessaires
+#
+ f_stoch.Ecrit_Titre ("Code name")
+ aux=string.replace(VERSION,"_",".")
+ aux=string.replace(aux,"N","n")
+ aux=string.replace(aux,"V","v")
+ f_stoch.Ecrit_Valeurs ( "aster_" + aux )
+#
+ aux = [ "Gradients evaluated by the code" ]
+ aux.append("1 : Au moins 1 ; 0 : aucun")
+ f_stoch.Ecrit_Titre (aux)
+ gradient = 0
+ for m in VARIABLE :
+ if m["GRADIENT"] == "OUI" : gradient = 1
+ f_stoch.Ecrit_Valeurs (gradient)
+#
+ f_stoch.Ecrit_Titre ("Variates number")
+ f_stoch.Ecrit_Valeurs ( nb_occu_variable )
+#
+ aux = [ "Stochastic Variates" ]
+ aux.append("1: Uniforme (min, max)")
+ aux.append("2: Normal (mean, std dev)")
+ aux.append("3: LogNormal (mean, std dev, min)")
+ aux.append("4: Normal Truncated (mean, std dev, min, max)")
+ f_stoch.Ecrit_Titre (aux)
+#
+ for m in VARIABLE :
+#
+ d = valeurs_lois[m]
+ if m["LOI"] == "UNIFORME" :
+ f_stoch.Ecrit_Valeurs ( [ m["NOM"], 1 , d["v_min_loi"] , d["v_max_loi"] ] )
+ elif m["LOI"] == "NORMALE" :
+ f_stoch.Ecrit_Valeurs ( [ m["NOM"], 2 , d["v_moy_loi"] , d["sigma_loi"] ] )
+ elif m["LOI"] == "LOGNORMALE" :
+ f_stoch.Ecrit_Valeurs ( [ m["NOM"], 3 , d["v_moy_loi"] , d["sigma_loi"] , d["v_min_loi"] ] )
+ elif m["LOI"] == "NORMALE_TRONQUEE" :
+ f_stoch.Ecrit_Valeurs ( [ m["NOM"], 4 , d["v_moy_loi"] , d["sigma_loi"] , d["v_min_loi"] , d["v_max_loi"] ] )
+ else :
+ erreur = 50
+#
+ if erreur :
+ break
+#
+ f_stoch.Ecrit_Titre ("Initial Points")
+ for m in VARIABLE :
+ if m["POINT_INI"] is None :
+ aux = valeurs_lois[m]["v_moy_physique"]
+ else :
+ aux = m["POINT_INI"]
+ f_stoch.Ecrit_Valeurs ( aux )
+#
+ f_stoch.Ecrit_Titre ("Reference Points")
+ for m in VARIABLE :
+ if m["POINT_REF"] is None :
+ aux = valeurs_lois[m]["v_moy_physique"]
+ else :
+ aux = m["POINT_REF"]
+ f_stoch.Ecrit_Valeurs ( aux )
+#
+ f_stoch.Ecrit_Titre ("Design Points")
+ for m in VARIABLE :
+ if args["RECH_PT_CONCEPT"] == "OUI" :
+ aux = 1792.
+ elif m["POINT_CONCEPT"] is None :
+ aux = valeurs_lois[m]["v_moy_physique"]
+ else :
+ aux = m["POINT_CONCEPT"]
+ f_stoch.Ecrit_Valeurs ( aux )
+#
+ f_stoch.Ecrit_Titre ("Correlation matrix fictive")
+ for m in range(nb_occu_variable) :
+ aux = [ ]
+ for n in range(nb_occu_variable) :
+ aux.append(args["MATRICE"][n + m*nb_occu_variable])
+ f_stoch.Ecrit_Valeurs ( aux )
+#
+ f_stoch.Ecrit_Titre ("Parameter threshold value")
+ if SEUIL_TYPE == "MAXIMUM" :
+ aux = SEUIL
+ else :
+ aux = -SEUIL
+ f_stoch.Ecrit_Valeurs ( aux )
+#
+# 4.4 ==> Fermeture du fichier
+#
+ erreur = f_stoch.Ferme_Fichier ( )
+ if erreur :
+ break
+#
+ if INFO >= 2 :
+ erreur = f_stoch.Imprime_Fichier ( )
+ if erreur :
+ break
+#
+#____________________________________________________________________
+#
+# 5. Construction du fichier 'dataNum'
+#____________________________________________________________________
+#
+# 5.1 ==> Ouverture du fichier
+#
+ f_num = fiabilite_fichier.fiabilite_fichier ( self, Rep_Calc_LOGICIEL_global, fic_dataNum, INFO )
+ erreur = f_num.Ouvre_Fichier ( "w" )
+ if erreur :
+ break
+#
+# 5.2 ==> Ecriture des données nécessaires
+#
+ f_num.Ecrit_Titre ("Parameters : EpsU, EpsG, Tau, Omega, iterMax")
+ if args["RECH_PT_CONCEPT"] == "OUI" :
+ f_num.Ecrit_Valeurs (args["EPSILON_U"])
+ f_num.Ecrit_Valeurs (args["EPSILON_G"])
+ f_num.Ecrit_Valeurs (args["TAU"])
+ f_num.Ecrit_Valeurs (args["OMEGA"])
+ f_num.Ecrit_Valeurs (args["ITER_MAX"])
+ else :
+ aux = 0.1848
+ for k in range(5) :
+ f_num.Ecrit_Valeurs (aux)
+#
+ f_num.Ecrit_Titre ("Parameters : hgrad, hhess")
+ f_num.Ecrit_Valeurs (args["HGRAD"])
+ f_num.Ecrit_Valeurs (args["HHESS"])
+#
+ aux = [ "Parameter Optimality Test(sphere)" ]
+ aux.append("1: Parametric Method (Point Number in each direction)")
+ aux.append("2: Gaussian Method (Total Point Number)")
+ aux.append("3: Rejection Method (Total Point Number)")
+ f_num.Ecrit_Titre (aux)
+#
+ if args["T_SPHERE"] == "OUI" :
+#
+ if args["METHODE_TEST"] == "PARAMETRIQUE" :
+ aux1 = 1
+ elif args["METHODE_TEST"] == "GAUSSIENNE" :
+ aux1 = 2
+ elif args["METHODE_TEST"] == "REJECTION" :
+ aux1 = 3
+ else :
+ self.cr.warn("METHODE DE TEST : "+args["METHODE_TEST"])
+ erreur = 50
+ break
+#
+ aux2 = args["NB_POINT"]
+#
+ else :
+#
+# remarque : il faut mettre une valeur plausible en aux1, sinon plantage violent ...
+ aux1 = 1
+ aux2 = 1789
+#
+ f_num.Ecrit_Valeurs ( [ aux1 , aux2 ] )
+#
+ aux = [ "Parameters : alpha, beta" ]
+ aux.append("alpha: common net")
+ aux.append("beta: extreme net")
+ f_num.Ecrit_Titre (aux)
+ if args["PLAN_EXPERIENCE"] == "OUI" :
+ aux1 = args["ALPHA"]
+ aux2 = args["BETA"]
+ else :
+ aux1 = 1789.0
+ aux2 = 1789.0
+ f_num.Ecrit_Valeurs ( aux1 )
+ f_num.Ecrit_Valeurs ( aux2 )
+#
+ f_num.Ecrit_Titre ("Parameters Strong Max Test : cosLim, dProb")
+ if args["T_MAXIMUM_FORT"] == "OUI" :
+ aux1 = args["COS_LIM"]
+ aux2 = args["DPROB"]
+ else :
+ aux1 = 0.1789
+ aux2 = 0.1789
+ f_num.Ecrit_Valeurs ( aux1 )
+ f_num.Ecrit_Valeurs ( aux2 )
+#
+ f_num.Ecrit_Titre ("Parameter Importance Samplings : Simulation Number")
+ if args["TIRAGE_IMPORTANCE"] == "OUI" :
+ aux = args["NB_SIMULATION"]
+ else :
+ aux = 1945
+ f_num.Ecrit_Valeurs ( aux )
+#
+# 5.3 ==> Fermeture du fichier
+#
+ erreur = f_num.Ferme_Fichier ( )
+ if erreur :
+ break
+#
+ if INFO >= 2 :
+ erreur = f_num.Imprime_Fichier ( )
+ if erreur :
+ break
+#
+#____________________________________________________________________
+#
+# 6. Construction du fichier 'dataGrad'
+#____________________________________________________________________
+#
+# 6.1 ==> Création du fichier
+#
+ f_grad = fiabilite_fichier.fiabilite_fichier ( self, Rep_Calc_LOGICIEL_global, fic_dataGrad, INFO )
+ erreur = f_grad.Ouvre_Fichier ( "w" )
+ if erreur :
+ break
+#
+# 6.2 ==> Ecriture des données nécessaires
+#
+ f_grad.Ecrit_Titre ("Commentaires")
+#
+ for m in VARIABLE :
+ f_grad.Ecrit_Commentaires (m["NOM"])
+ if m["GRADIENT"] == "OUI" :
+ gradient = 1
+ increment = 0.0
+ else :
+ gradient = 0
+ increment = m["INCREMENT"]
+ aux = [gradient,increment]
+ f_grad.Ecrit_Valeurs (aux)
+#
+# 6.3 ==> Fermeture du fichier
+#
+ erreur = f_grad.Ferme_Fichier ( )
+ if erreur :
+ break
+#
+ if INFO >= 2 :
+ erreur = f_grad.Imprime_Fichier ( )
+ if erreur :
+ break
+#
+#____________________________________________________________________
+#
+# 7. C'est fini !
+#____________________________________________________________________
+#
+ break
+#
+ if erreur :
+ if not messages_erreur.has_key(erreur) :
+ erreur = 100
+ self.cr.warn(messages_erreur[erreur])
+ erreur = 11
+#
+ return erreur
+#
+########################## Fin de la fonction##################################
+#
+########################## Auto-test##################################
+#
+if __name__ == "__main__" :
+#
+ import os
+ import sys
+ import tempfile
+#
+ Rep_Calc_LOGICIEL_global = tempfile.mktemp()
+ os.mkdir(Rep_Calc_LOGICIEL_global)
+#
+ INFO = 2
+ VERSION = "V3_2"
+ SEUIL = 1789.
+ SEUIL_TYPE = "MAXIMUM"
+ VARIABLE = []
+ args = {}
+ valeurs = {}
+#
+ erreur = fiabilite_mefisto ( None, Rep_Calc_LOGICIEL_global,
+ INFO, VERSION,
+ SEUIL, SEUIL_TYPE,
+ VARIABLE,
+ valeurs,
+ **args )
+### print "Erreur = ", erreur
+ Liste = os.listdir(Rep_Calc_LOGICIEL_global)
+#
+ for nomfic in Liste :
+ fic_total = os.path.join(Rep_Calc_LOGICIEL_global,nomfic)
+ os.chmod (fic_total,0755)
+ os.remove (fic_total)
+ os.rmdir (Rep_Calc_LOGICIEL_global)
+#
+ sys.exit("blabla")
--- /dev/null
+#@ MODIF impr_fonction_ops Macro DATE 11/05/2005 AUTEUR MCOURTOI M.COURTOIS
+# -*- coding: iso-8859-1 -*-
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+
+# RESPONSABLE MCOURTOI M.COURTOIS
+
+import os.path
+
+# ------------------------------------------------------------------------------
+def impr_fonction_ops(self, FORMAT, COURBE, INFO, **args):
+ """
+ Macro IMPR_FONCTION permettant d'imprimer dans un fichier des fonctions,
+ colonnes de table...
+ Erreurs<S> dans IMPR_FONCTION pour ne pas perdre la base.
+ """
+ macro='IMPR_FONCTION'
+ import aster
+ from Accas import _F
+ from Utilitai import Graph
+ from Utilitai.Utmess import UTMESS
+ from Utilitai.UniteAster import UniteAster
+ ier=0
+ # La macro compte pour 1 dans la numerotation des commandes
+ self.set_icmd(1)
+
+ # On importe les definitions des commandes a utiliser dans la macro
+ # Le nom de la variable doit etre obligatoirement le nom de la commande
+ CALC_FONC_INTERP = self.get_cmd('CALC_FONC_INTERP')
+ DEFI_LIST_REEL = self.get_cmd('DEFI_LIST_REEL')
+ DETRUIRE = self.get_cmd('DETRUIRE')
+
+ #----------------------------------------------
+ # 0. Traitement des arguments, initialisations
+ # unité logique des fichiers réservés
+ ul_reserve=(8,)
+ UL = UniteAster()
+
+ # 0.1. Fichier
+ nomfich=None
+ if args['UNITE'] and args['UNITE']<>6:
+ nomfich=UL.Nom(args['UNITE'])
+ if INFO==2:
+ print ' Nom du fichier :',nomfich
+ if nomfich and os.path.exists(nomfich) and os.stat(nomfich).st_size<>0:
+ if FORMAT=='XMGRACE':
+ niv='A'
+ else:
+ niv='I'
+ UTMESS(niv,macro,'Le fichier '+nomfich+' existe déjà, on écrit ' \
+ 'à la suite.')
+
+ # 0.2. Récupération des valeurs sous COURBE
+ unparmi=('FONCTION','LIST_RESU','FONC_X','ABSCISSE')
+
+ # i0 : indice du mot-clé facteur qui contient LIST_PARA, sinon i0=0
+ i0=0
+ Courbe=[]
+ iocc=-1
+ for Ci in COURBE:
+ iocc+=1
+ dC = Ci.cree_dict_valeurs(Ci.mc_liste)
+ if dC.has_key('LIST_PARA') and dC['LIST_PARA']!=None and i0==0:
+ i0=iocc
+ for mc in dC.keys():
+ if dC[mc]==None: del dC[mc]
+ Courbe.append(dC)
+ if INFO==2:
+ print ' Nombre de fonctions à analyser : ',len(Courbe)
+
+ # 0.3. Devra-t-on interpoler globalement ?
+ # Dans ce cas, linter__ est le LIST_PARA
+ # ou, à défaut, les abscisses de la première courbe
+ interp=False
+ if FORMAT=='TABLEAU':
+ interp=True
+ dCi=Courbe[i0]
+ if dCi.has_key('LIST_PARA'):
+ linter__=dCi['LIST_PARA']
+ else:
+ obj=None
+ for typi in unparmi:
+ if dCi.has_key(typi):
+ obj=dCi[typi]
+ typ=obj.__class__.__name__
+ break
+ if obj==None:
+ UTMESS('S',macro,'incohérence entre le catalogue et la macro.')
+ if typi=='FONCTION':
+ if typ=='nappe_sdaster':
+ lpar,lval=obj.Valeurs()
+ linterp=lval[0][0]
+ else:
+ linterp=obj.Valeurs()[0]
+ elif typi=='FONC_X':
+ lbid,linterp=obj.Valeurs()
+ elif typi=='ABSCISSE':
+ linterp=obj
+ linter__=DEFI_LIST_REEL(VALE=linterp)
+ if INFO==2:
+ print ' Interpolation globale sur la liste :\n',linter__.Valeurs()
+
+
+ #----------------------------------------------
+ # 1. Récupération des valeurs des N courbes sous forme
+ # d'une liste de N listes
+ #----------------------------------------------
+ graph=Graph.Graph()
+ iocc=-1
+ for dCi in Courbe:
+ iocc+=1
+
+ # 1.1. Type d'objet à traiter
+ obj=None
+ for typi in unparmi:
+ if dCi.has_key(typi):
+ obj=dCi[typi]
+ typ=obj.__class__.__name__
+ break
+ if not dCi.has_key('LEGENDE') and hasattr(obj,'get_name'):
+ dCi['LEGENDE']=obj.get_name()
+ if obj==None:
+ UTMESS('S',macro,'incohérence entre le catalogue et la macro.')
+
+ # 1.2. Extraction des valeurs
+
+ # 1.2.1. Mot-clé FONCTION
+ if typi=='FONCTION':
+ if typ=='nappe_sdaster':
+ lpar,lval=obj.Valeurs()
+ dico,ldicf=obj.Parametres()
+ Leg=dCi['LEGENDE']
+ for i in range(len(lpar)):
+ p=lpar[i]
+ lx=lval[i][0]
+ ly=lval[i][1]
+ # sur quelle liste interpoler chaque fonction
+ if i==0:
+ if interp:
+ li__=linter__
+ elif dCi.has_key('LIST_PARA'):
+ li__=dCi['LIST_PARA']
+ else:
+ li__=DEFI_LIST_REEL(VALE=lx)
+ # compléter les paramètres d'interpolation
+ dic=dico.copy()
+ dic.update(ldicf[i])
+
+ if (interp or dCi.has_key('LIST_PARA')) and i>0:
+ ftmp__=CALC_FONC_INTERP(
+ FONCTION=obj,
+ VALE_PARA=p,
+ LIST_PARA_FONC=li__,
+ **dic
+ )
+ pv,lv2=ftmp__.Valeurs()
+ lx=lv2[0][0]
+ ly=lv2[0][1]
+ # on stocke les données dans le Graph
+ nomresu=dic['NOM_RESU'].strip()+'_'+str(len(graph.Legendes))
+ dicC={
+ 'Val' : [lx,ly],
+ 'Lab' : [dic['NOM_PARA_FONC'],nomresu]
+ }
+ # ajoute la valeur du paramètre
+ dCi['LEGENDE'] = '%s %s=%g' % (Leg,dic['NOM_PARA'].strip(),p)
+ Graph.AjoutParaCourbe(dicC, args=dCi)
+ graph.AjoutCourbe(**dicC)
+ DETRUIRE(CONCEPT=_F(NOM=('li__','ftmp__'),),ALARME='NON',INFO=1)
+ else:
+ ftmp__=obj
+ dpar=ftmp__.Parametres()
+ if interp:
+ ftmp__=CALC_FONC_INTERP(
+ FONCTION=obj,
+ LIST_PARA=linter__,
+ **dpar
+ )
+ elif dCi.has_key('LIST_PARA'):
+ ftmp__=CALC_FONC_INTERP(
+ FONCTION=obj,
+ LIST_PARA=dCi['LIST_PARA'],
+ **dpar
+ )
+ lval=list(ftmp__.Valeurs())
+ lx=lval[0]
+ lr=lval[1]
+ if typ=='fonction_c' and dCi.has_key('PARTIE'):
+ if dCi['PARTIE']=='IMAG' : lr=lval[2]
+ # on stocke les données dans le Graph
+ if typ=='fonction_c' and not dCi.has_key('PARTIE'):
+ nomresu=dpar['NOM_RESU'].strip()+'_'+str(len(graph.Legendes))
+ dicC={
+ 'Val' : lval,
+ 'Lab' : [dpar['NOM_PARA'],nomresu+'_R',nomresu+'_I']
+ }
+ else:
+ nomresu=dpar['NOM_RESU'].strip()+'_'+str(len(graph.Legendes))
+ dicC={
+ 'Val' : [lx,lr],
+ 'Lab' : [dpar['NOM_PARA'],nomresu]
+ }
+ Graph.AjoutParaCourbe(dicC, args=dCi)
+ graph.AjoutCourbe(**dicC)
+
+ # 1.2.2. Mot-clé LIST_RESU
+ elif typi=='LIST_RESU':
+ if interp and iocc>0:
+ UTMESS('S',macro,"""Il n'y a pas de règles d'interpolation pour LIST_PARA/LIST_RESU,
+ LIST_PARA/LIST_RESU ne peut donc apparaitre qu'une seule fois
+ et à la première occurence de COURBE""")
+ lx=dCi['LIST_PARA'].Valeurs()
+ lr=obj.Valeurs()
+ if len(lx)<>len(lr):
+ UTMESS('S',macro,"LIST_PARA et LIST_RESU n'ont pas la meme taille")
+ # on stocke les données dans le Graph
+ dicC={
+ 'Val' : [lx,lr],
+ 'Lab' : [dCi['LIST_PARA'].get_name(),obj.get_name()]
+ }
+ Graph.AjoutParaCourbe(dicC, args=dCi)
+ graph.AjoutCourbe(**dicC)
+
+ # 1.2.3. Mot-clé FONC_X
+ # exemple : obj(t)=sin(t), on imprime x=sin(t), y=cos(t)
+ # ob2(t)=cos(t)
+ elif typi=='FONC_X':
+ ob2=dCi['FONC_Y']
+ # peut-on blinder au niveau du catalogue
+ if typ=="nappe_sdaster" or ob2.__class__.__name__=="nappe_sdaster":
+ UTMESS('S',macro,"FONC_X/FONC_Y ne peuvent pas etre des nappes !")
+ if interp and iocc>0:
+ UTMESS('S',macro,"""Au format 'TABLEAU' ,FONC_X/FONC_Y ne peut apparaitre qu'une seule fois
+ et à la première occurence de COURBE""")
+ ftmp__=obj
+ dpar=ftmp__.Parametres()
+ ftm2__=ob2
+ dpa2=ftm2__.Parametres()
+ intloc=False
+ if interp and not dCi.has_key('LIST_PARA'):
+ # dans ce cas, linter__ contient les ordonnées de FONC_X
+ intloc=False
+ li__=linter__
+ elif dCi.has_key('LIST_PARA'):
+ intloc=True
+ li__=dCi['LIST_PARA']
+ if intloc:
+ ftmp__=CALC_FONC_INTERP(
+ FONCTION=obj,
+ LIST_PARA=li__,
+ **dpar
+ )
+ lt,lx=ftmp__.Valeurs()
+ ftm2__=CALC_FONC_INTERP(
+ FONCTION=ob2,
+ LIST_PARA=li__,
+ **dpa2
+ )
+ else:
+ lt,lx=ftmp__.Valeurs()
+ li__=DEFI_LIST_REEL(VALE=lt)
+ ftm2__=CALC_FONC_INTERP(
+ FONCTION=ob2,
+ LIST_PARA=li__,
+ **dpa2
+ )
+
+ lbid,ly=ftm2__.Valeurs()
+ # on stocke les données dans le Graph
+ # on imprime la liste des paramètres seulement si LIST_PARA
+ if intloc:
+ nomresur=dpar['NOM_RESU'].strip()+'_'+str(len(graph.Legendes))
+ nomresu2=dpa2['NOM_RESU'].strip()+'_'+str(len(graph.Legendes)+1)
+ dicC={
+ 'Val' : [lt,lx,ly],
+ 'Lab' : [dpar['NOM_PARA'],nomresur,nomresu2]
+ }
+ else:
+ nomresur=dpar['NOM_RESU'].strip()+'_'+str(len(graph.Legendes))
+ nomresu2=dpa2['NOM_RESU'].strip()+'_'+str(len(graph.Legendes)+1)
+ dicC={
+ 'Val' : [lx,ly],
+ 'Lab' : [nomresur,nomresu2]
+ }
+ Graph.AjoutParaCourbe(dicC, args=dCi)
+ graph.AjoutCourbe(**dicC)
+
+ # 1.2.4. Mot-clé ABSCISSE / ORDONNEE
+ elif typi=='ABSCISSE':
+ if interp and iocc>0:
+ UTMESS('S',macro,"""Il n'y a pas de règles d'interpolation pour ABSCISSE/ORDONNEE,
+ ABSCISSE/ORDONNEE ne peut donc apparaitre qu'une seule fois
+ et à la première occurence de COURBE""")
+ lx=obj
+ lr=dCi['ORDONNEE']
+ if len(lx)<>len(lr):
+ UTMESS('S',macro,"ABSCISSE et ORDONNEE n'ont pas la meme taille")
+ # on stocke les données dans le Graph
+ dicC={
+ 'Val' : [lx,lr],
+ 'Lab' : ['Absc','Ordo']
+ }
+ Graph.AjoutParaCourbe(dicC, args=dCi)
+ graph.AjoutCourbe(**dicC)
+
+ # 1.2.9. ménage
+ DETRUIRE(CONCEPT=_F(NOM=('li__','ftmp__','ftm2__'),),ALARME='NON',INFO=1)
+
+ # 1.2.99. ménage hors boucle
+ DETRUIRE(CONCEPT=_F(NOM=('linter__'),), ALARME='NON',INFO=1)
+
+ # 1.3. dbg
+ if INFO==2:
+ print '\n'+'-'*70+'\n Contenu du Graph : \n'+'-'*70
+ print graph
+ print '-'*70+'\n'
+
+ #----------------------------------------------
+ # 2. Impression du 'tableau' de valeurs
+ #----------------------------------------------
+
+ # 2.0. Surcharge des propriétés du graphique et des axes
+ # (bloc quasiment identique dans Table)
+ if args['TITRE']<>None: graph.Titre=args['TITRE']
+ if args['SOUS_TITRE']<>None: graph.SousTitre=args['SOUS_TITRE']
+ if FORMAT in ('XMGRACE','AGRAF'):
+ if args['BORNE_X']<>None:
+ graph.Min_X=args['BORNE_X'][0]
+ graph.Max_X=args['BORNE_X'][1]
+ if args['BORNE_Y']<>None:
+ graph.Min_Y=args['BORNE_Y'][0]
+ graph.Max_Y=args['BORNE_Y'][1]
+ if args['LEGENDE_X']<>None: graph.Legende_X=args['LEGENDE_X']
+ if args['LEGENDE_Y']<>None: graph.Legende_Y=args['LEGENDE_Y']
+ if args['ECHELLE_X']<>None: graph.Echelle_X=args['ECHELLE_X']
+ if args['ECHELLE_Y']<>None: graph.Echelle_Y=args['ECHELLE_Y']
+ if args['GRILLE_X']<>None: graph.Grille_X=args['GRILLE_X']
+ if args['GRILLE_Y']<>None: graph.Grille_Y=args['GRILLE_Y']
+
+ kargs={
+ 'FORMAT' : FORMAT,
+ 'FICHIER' : nomfich,
+ }
+
+ # 2.1. au format TABLEAU
+ if FORMAT=='TABLEAU':
+ # surcharge par les formats de l'utilisateur
+ kargs['dform']={
+ 'csep' : args['SEPARATEUR'],
+ 'ccom' : args['COMMENTAIRE'],
+ 'cdeb' : args['DEBUT_LIGNE'],
+ 'cfin' : args['FIN_LIGNE']
+ }
+
+ # 2.2. au format AGRAF
+ elif FORMAT=='AGRAF':
+ nomdigr=None
+ if args['UNITE_DIGR']<>6:
+ nomdigr=UL.Nom(args['UNITE_DIGR'])
+ kargs['FICHIER']=[nomfich, nomdigr]
+ kargs['dform']={ 'formR' : '%12.5E' }
+
+ # 2.3. au format XMGRACE et dérivés
+ elif FORMAT=='XMGRACE':
+ kargs['dform']={ 'formR' : '%.8g' }
+ kargs['PILOTE']=args['PILOTE']
+
+ # 2.39. Format inconnu
+ else:
+ UTMESS('S',macro,'Format inconnu : '+FORMAT)
+
+ # Traiter le cas des UL réservées
+ if args['UNITE'] and args['UNITE'] in ul_reserve:
+ UL.Etat(args['UNITE'], etat='F')
+ if FORMAT=='AGRAF' and args['UNITE_DIGR']<>args['UNITE'] \
+ and args['UNITE_DIGR'] in ul_reserve:
+ UL.Etat(args['UNITE_DIGR'], etat='F')
+
+ # 2.4. On trace !
+ graph.Trace(**kargs)
+
+ # 99. Traiter le cas des UL réservées
+ UL.EtatInit()
+
+ return ier
--- /dev/null
+#@ MODIF impr_table_ops Macro DATE 10/10/2005 AUTEUR MCOURTOI M.COURTOIS
+# -*- coding: iso-8859-1 -*-
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+
+# RESPONSABLE MCOURTOI M.COURTOIS
+
+import os.path
+import re
+
+from types import ListType, TupleType, StringTypes
+EnumTypes=(ListType, TupleType)
+
+
+# ------------------------------------------------------------------------------
+def impr_table_ops(self, FORMAT, TABLE, INFO, **args):
+ """
+ Macro IMPR_TABLE permettant d'imprimer une table dans un fichier.
+ Erreurs<S> dans IMPR_TABLE pour ne pas perdre la base.
+ """
+ macro='IMPR_TABLE'
+ import aster
+ from Accas import _F
+ from Cata.cata import table_jeveux
+ from Utilitai.Utmess import UTMESS
+ from Utilitai.UniteAster import UniteAster
+ ier=0
+ # La macro compte pour 1 dans la numerotation des commandes
+ self.set_icmd(1)
+
+ # On importe les definitions des commandes a utiliser dans la macro
+ # Le nom de la variable doit etre obligatoirement le nom de la commande
+ DETRUIRE = self.get_cmd('DETRUIRE')
+ RECU_FONCTION = self.get_cmd('RECU_FONCTION')
+
+ #----------------------------------------------
+ # 0. Traitement des arguments, initialisations
+ # unité logique des fichiers réservés
+ ul_reserve=(8,)
+ UL = UniteAster()
+
+ # 0.1. Fichier
+ nomfich=None
+ if args['UNITE'] and args['UNITE']<>6:
+ nomfich=UL.Nom(args['UNITE'])
+ if nomfich and os.path.exists(nomfich) and os.stat(nomfich).st_size<>0:
+ if FORMAT=='XMGRACE':
+ UTMESS('A',macro,'Le fichier '+nomfich+' existe déjà, on écrit ' \
+ 'à la suite.')
+
+ # 0.2. Création des dictionnaires des FILTRES
+ Filtre=[]
+ if args['FILTRE']:
+ for Fi in args['FILTRE']:
+ dF = Fi.cree_dict_valeurs(Fi.mc_liste)
+ for mc in dF.keys():
+ if dF[mc]==None: del dF[mc]
+ Filtre.append(dF)
+ # format pour l'impression des filtres
+ form_filtre='\nFILTRE -> NOM_PARA: %-16s CRIT_COMP: %-4s VALE: %s'
+
+ # 0.3. Création de la liste des tables (une seule sans SENSIBILITE)
+ form_sens='\n... SENSIBILITE AU PARAMETRE %s'
+ ltab=[]
+ if args['SENSIBILITE']:
+ nmemo='&NOSENSI.MEMO.CORR'.ljust(24)
+ vect=aster.getvectjev(nmemo)
+ if vect:
+ lps=args['SENSIBILITE']
+ if not type(lps) in EnumTypes:
+ lps=[lps,]
+ for ps in [ps.get_name() for ps in lps]:
+ trouv=False
+ for ch in vect[0:len(vect):2]:
+ if ch[0:8].strip()==TABLE.get_name() and ch[8:16].strip()==ps:
+ trouv=True
+ ncomp=ch[16:24].strip()
+ sdtab=table_jeveux(ncomp)
+ tabs=sdtab.EXTR_TABLE()
+ tabs.titr+=form_sens % ps
+ ltab.append([tabs, sdtab])
+ if not trouv:
+ UTMESS('A',macro,'Dérivée de %s par rapport à %s non disponible'\
+ % (TABLE.get_name(), ps))
+ else:
+ UTMESS('A',macro,'Pas de calcul de sensibilité accessible.')
+ else:
+ ltab.append([TABLE.EXTR_TABLE(), TABLE])
+
+ if len(ltab)<1:
+ return ier
+
+ # 0.4.1. liste des paramètres à conserver
+ nom_para=ltab[0][0].para
+ if args['NOM_PARA']:
+ nom_para=args['NOM_PARA']
+ if not type(nom_para) in EnumTypes:
+ nom_para=[nom_para,]
+
+ # 0.4.2. Traiter le cas des UL réservées
+ if args['UNITE'] and args['UNITE'] in ul_reserve:
+ UL.Etat(args['UNITE'], etat='F')
+
+ #----------------------------------------------
+ # Boucle sur les tables
+ for tab, sdtab in ltab:
+
+ # ----- 1. Infos de base
+ if INFO==2:
+ print 'IMPRESSION DE LA TABLE : %s' % sdtab.get_name()
+
+ if args['TITRE']:
+ tab.titr=args['TITRE'] + '\n' + tab.titr
+
+ # ----- 2. Filtres
+ for Fi in Filtre:
+ col = getattr(tab, Fi['NOM_PARA'])
+ # peu importe le type
+ opts=[Fi[k] for k in ('VALE','VALE_I','VALE_C','VALE_K') if Fi.has_key(k)]
+ kargs={}
+ for k in ('CRITERE','PRECISION'):
+ if Fi.has_key(k):
+ kargs[k]=Fi[k]
+ tab = tab & ( getattr(col, Fi['CRIT_COMP'])(*opts,**kargs) )
+ # trace l'operation dans le titre
+ #if FORMAT in ('TABLEAU','ASTER'):
+ tab.titr+=form_filtre % (Fi['NOM_PARA'], Fi['CRIT_COMP'], \
+ ' '.join([str(v) for v in opts]))
+
+ # ----- 3. Tris
+ if args['TRI']:
+ # une seule occurence de TRI
+ T0=args['TRI'][0]
+ dT=T0.cree_dict_valeurs(T0.mc_liste)
+ tab.sort(CLES=dT['NOM_PARA'], ORDRE=dT['ORDRE'])
+
+ # ----- 4. Impression
+ # vérification des paramètres
+ for p in nom_para:
+ if not p in tab.para:
+ UTMESS('A', 'IMPR_TABLE', 'Paramètre absent de la table : %s' % p)
+
+ # sélection des paramètres
+ timp=tab[nom_para]
+
+ # passage des mots-clés de mise en forme à la méthode Impr
+ kargs=args.copy()
+ kargs.update({
+ 'FORMAT' : FORMAT,
+ 'FICHIER' : nomfich,
+ 'dform' : {},
+ })
+ # pour l'impression des fonctions
+ kfonc={
+ 'FORMAT' : FORMAT,
+ 'FICHIER' : nomfich,
+ }
+
+ # 4.1. au format AGRAF
+ if FORMAT=='AGRAF':
+ kargs['dform']={ 'formR' : '%12.5E' }
+ kfonc['FORMAT']='TABLEAU'
+
+ # 4.2. au format XMGRACE et dérivés
+ elif FORMAT=='XMGRACE':
+ kargs['dform']={ 'formR' : '%.8g' }
+ kargs['PILOTE']=args['PILOTE']
+ kfonc['PILOTE']=args['PILOTE']
+
+ # 4.3. format spécifié dans les arguments
+ if args['FORMAT_R']:
+ kargs['dform'].update({ 'formR' : fmtF2PY(args['FORMAT_R']) })
+
+ # 4.4. regroupement par paramètre : PAGINATION
+ if args['PAGINATION']:
+ l_ppag=args['PAGINATION']
+ if not type(l_ppag) in EnumTypes:
+ l_ppag=[l_ppag,]
+ kargs['PAGINATION'] = [p for p in l_ppag if p in nom_para]
+ l_para_err = [p for p in l_ppag if not p in nom_para]
+ if len(l_para_err)>0:
+ UTMESS('A', 'IMPR_TABLE', 'Paramètres absents de la table (ou de '\
+ 'NOM_PARA) : %s' % ', '.join(l_para_err))
+
+ timp.Impr(**kargs)
+
+ # ----- 5. IMPR_FONCTION='OUI'
+ if args['IMPR_FONCTION'] and args['IMPR_FONCTION']=='OUI':
+ # cherche parmi les cellules celles qui contiennent un nom de fonction
+ dfon={}
+ for row in timp:
+ for par,cell in row.items():
+ if type(cell) in StringTypes:
+ if aster.getvectjev(cell.strip().ljust(19)+'.PROL')<>None:
+ dfon[cell.strip().ljust(19)]=par
+ # impression des fonctions trouvées
+ for f,par in dfon.items():
+ __fonc=RECU_FONCTION(
+ TABLE=sdtab,
+ FILTRE=_F(
+ NOM_PARA=par,
+ VALE_K=f,
+ ),
+ NOM_PARA_TABL=par,
+ )
+ __fonc.Trace(**kfonc)
+ DETRUIRE(CONCEPT=_F(NOM=('__fonc',),), ALARME='NON', INFO=1,)
+
+ # 99. Traiter le cas des UL réservées
+ UL.EtatInit()
+
+ return ier
+
+# ------------------------------------------------------------------------------
+def fmtF2PY(fformat):
+ """Convertit un format Fortran en format Python (printf style).
+ Gère uniquement les fortrans réels, par exemple : E12.5, 1PE13.6, D12.5...
+ """
+ fmt=''
+ matP=re.search('([0-9]+)P',fformat)
+ if matP:
+ fmt+=' '*int(matP.group(1))
+ matR=re.search('([eEdDfFgG]{1})([\.0-9]+)',fformat)
+ if matR:
+ fmt+='%'+matR.group(2)+re.sub('[dD]+','E',matR.group(1))
+ try:
+ s=fmt % -0.123
+ except (ValueError, TypeError), msg:
+ fmt='%12.5E'
+ print 'Error :',msg
+ print 'Format par défaut utilisé :',fmt
+ return fmt
--- /dev/null
+#@ MODIF lire_fonction_ops Macro DATE 26/05/2005 AUTEUR MCOURTOI M.COURTOIS
+# -*- coding: iso-8859-1 -*-
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+
+import os.path, Numeric
+
+# ------------------------------------------------------------------------------
+def lire_blocs(nomfich, SEPAR):
+ """Retourne la liste des blocs
+ """
+ def info(ib, nlig, ncol):
+ """Affiche les infos d'un bloc"""
+ print " . Bloc %2d : %6d lignes, %6d colonnes" % (ib, nlig, ncol)
+ print " Lecture des blocs du fichier '%s'" % nomfich
+ fich=open(nomfich, 'r')
+ ier=0
+ message = ''
+ if SEPAR=='None' : SEPAR=None
+ blocs = []
+ lignes = []
+ llen=0
+ il=0
+ for line in fich:
+ il+=1
+ try:
+ if line.strip()=='':
+ raise ValueError
+ splin = line.split(SEPAR)
+ lignes.append(map(float, splin))
+ if llen==0:
+ llen=len(splin)
+ elif len(splin)<>llen:
+ ier+=1
+ message='Ligne %d : %d champs au lieu de %d attendus' % (il,len(splin),llen)
+ return ier, message, []
+ except ValueError:
+ if lignes==[]:
+ pass # dans ce cas, on a plusieurs lignes délimitant 2 fonctions
+ else:
+ blocs.append(Numeric.array(lignes))
+ info(len(blocs), len(lignes), llen)
+ lignes=[]
+ llen=0
+ fich.close()
+ if lignes!=[] :
+ blocs.append(Numeric.array(lignes))
+ info(len(blocs), len(lignes), llen)
+ return ier, message, blocs
+
+# ------------------------------------------------------------------------------
+def liste_double(nomfich,INDIC_PARA,INDIC_RESU,SEPAR):
+ """Méthode de construction du VALE pour le format libre
+ format LIBRE
+ Les lignes contenant autre chose que des séquences de nombres
+ réels et de séparateurs sont considérées comme délimitant deux
+ fonctions différentes. Cette situation correspond à l exception
+ ValueError levée par le map de float. Le deuxieme indice de
+ INDIC_PARA et INDIC_RESU est l indice permettant de pointer sur la
+ fonction voulue, au sens de ce découpage.
+ """
+ from Utilitai.transpose import transpose
+ ier, message, blocs = lire_blocs(nomfich, SEPAR)
+ if ier<>0:
+ return ier,message,[]
+
+ # vérifications de cohérences lignes et colonnes
+ nb_blocs = len(blocs)
+ bloc_para = INDIC_PARA[0]
+ col_para = INDIC_PARA[1]
+ bloc_resu = INDIC_RESU[0]
+ col_resu = INDIC_RESU[1]
+ msg=[]
+ if bloc_para>nb_blocs :
+ ier+=1
+ msg.append("Il y a %d blocs or INDIC_PARA=(%d, .)" % (nb_blocs, bloc_para))
+ if bloc_resu>nb_blocs:
+ ier+=1
+ msg.append("Il y a %d blocs or INDIC_RESU=(%d, .)" % (nb_blocs, bloc_resu))
+ if ier<>0:
+ return ier, '\n'.join(msg), []
+
+ if col_para>len(blocs[bloc_para-1][0]):
+ ier+=1
+ msg.append("Le bloc %d comporte %d colonnes or INDIC_PARA=(., %d)" % \
+ (bloc_para, len(blocs[bloc_para-1][0]), col_para))
+ if col_resu>len(blocs[bloc_resu-1][0]) :
+ ier+=1
+ msg.append("Le bloc %d comporte %d colonnes or INDIC_RESU=(., %d)" % \
+ (bloc_resu, len(blocs[bloc_resu-1][0]), col_resu))
+ if ier<>0:
+ return ier, '\n'.join(msg), []
+
+ # construction du VALE de la fonction par recherche des indices
+ # de colonnes et de fonctions dans le tableau blocs
+ vale_para = blocs[bloc_para-1][:,col_para-1]
+ vale_resu = blocs[bloc_resu-1][:,col_resu-1]
+ if len(vale_para)!=len(vale_resu) :
+ ier+=1
+ print 'VALE_PARA =', vale_para
+ print 'VALE_RESU =', vale_resu
+ message="""Les deux colonnes extraites n'ont pas la meme longueur
+ %d lignes pour PARA
+ %d lignes pour RESU""" % (len(vale_para), len(vale_resu))
+ if ier<>0:
+ return ier,message,[]
+
+ laux=transpose([vale_para, vale_resu])
+ liste_vale=[]
+ for v in laux: liste_vale.extend(v)
+ return ier,'',liste_vale
+
+# ------------------------------------------------------------------------------
+def liste_simple(nomfich,INDIC_PARA,SEPAR):
+ """recherche d'une liste simple
+ """
+ ier, message, blocs = lire_blocs(nomfich, SEPAR)
+
+ # vérifications de cohérences lignes et colonnes
+ nb_blocs = len(blocs)
+ bloc_para = INDIC_PARA[0]
+ col_para = INDIC_PARA[1]
+ msg=[]
+ if bloc_para>nb_blocs :
+ ier+=1
+ msg.append("Il y a %d blocs or INDIC_PARA=(%d, .)" % (nb_blocs, bloc_para))
+ if col_para>len(blocs[bloc_para-1][0]):
+ ier+=1
+ msg.append("Le bloc %d comporte %d colonnes or INDIC_PARA=(., %d)" % \
+ (bloc_para, len(blocs[bloc_para-1][0]), col_para))
+ if ier<>0:
+ return ier, '\n'.join(msg), []
+
+ # construction du VALE de la fonction par recherche des indices
+ # de colonnes et de fonctions dans le tableau l_fonc
+ vale_1=blocs[bloc_para-1][:,col_para-1]
+ return ier,'',vale_1.tolist()
+
+# ------------------------------------------------------------------------------
+def lire_fonction_ops(self,FORMAT,TYPE,SEPAR,INDIC_PARA,UNITE,
+ NOM_PARA,NOM_RESU,INTERPOL,PROL_DROITE,
+ PROL_GAUCHE,VERIF,INFO,TITRE,**args):
+ """Méthode corps de la macro
+ """
+ from Accas import _F
+ from Utilitai.Utmess import UTMESS
+ from Utilitai.UniteAster import UniteAster
+
+ ier=0
+ # La macro compte pour 1 dans la numerotation des commandes
+ self.set_icmd(1)
+
+ # On recopie le mot cle defi_fonction pour le proteger
+ if TYPE=='NAPPE' :
+ mc_DEFI_FONCTION=args['DEFI_FONCTION']
+
+ # On importe les definitions des commandes a utiliser dans la macro
+ DEFI_FONCTION =self.get_cmd('DEFI_FONCTION')
+ DEFI_NAPPE =self.get_cmd('DEFI_NAPPE')
+
+ nompro='LIRE_FONCTION'
+
+ # Lecture de la fonction dans un fichier d unité logique UNITE
+ UL = UniteAster()
+ nomfich=UL.Nom(UNITE)
+ if not os.path.isfile(nomfich):
+ UTMESS('F', nompro, "le fichier '%s' est introuvable" % nomfich)
+
+ # fonction(_c) ou nappe en sortie
+ self.DeclareOut('ut_fonc',self.sd)
+
+ if TYPE=='FONCTION':
+ # mise en forme de la liste de valeurs suivant le format choisi :
+ ier,message,liste_vale=liste_double(nomfich,INDIC_PARA,args['INDIC_RESU'],SEPAR)
+ if ier!=0: UTMESS('F', nompro, message)
+
+ # création de la fonction ASTER :
+ ut_fonc=DEFI_FONCTION( NOM_PARA =NOM_PARA,
+ NOM_RESU =NOM_RESU,
+ PROL_DROITE=PROL_DROITE,
+ PROL_GAUCHE=PROL_GAUCHE,
+ INTERPOL =INTERPOL,
+ INFO =INFO,
+ TITRE =TITRE,
+ VERIF =VERIF,
+ VALE =liste_vale,)
+
+ elif TYPE=='FONCTION_C':
+ # mise en forme de la liste de valeurs suivant le format choisi :
+ if 'INDIC_REEL' in args :
+ indic1=args['INDIC_REEL']
+ indic2=args['INDIC_IMAG']
+ if 'INDIC_MODU' in args :
+ indic1=args['INDIC_MODU']
+ indic2=args['INDIC_PHAS']
+ ier,message,liste_vale_r=liste_double(nomfich,INDIC_PARA,indic1,SEPAR)
+ if ier!=0: UTMESS('F', nompro, message)
+
+ ier,message,liste_vale_i=liste_double(nomfich,INDIC_PARA,indic2,SEPAR)
+ if ier!=0: UTMESS('F', nompro, message)
+
+ liste=[]
+ if 'INDIC_REEL' in args :
+ for i in range(len(liste_vale_r)/2) :
+ liste.extend([liste_vale_r[2*i],liste_vale_r[2*i+1],liste_vale_i[2*i+1]])
+ elif 'INDIC_MODU' in args :
+ for i in range(len(liste_vale_r)/2) :
+ module=liste_vale_r[2*i+1]
+ phase =liste_vale_i[2*i+1]
+ liste.extend([liste_vale_r[2*i],module*cos(phase),module*sin(phase)])
+
+ # création de la fonction ASTER :
+ ut_fonc=DEFI_FONCTION( NOM_PARA =NOM_PARA,
+ NOM_RESU =NOM_RESU,
+ PROL_DROITE =PROL_DROITE,
+ PROL_GAUCHE =PROL_GAUCHE,
+ INTERPOL =INTERPOL,
+ INFO =INFO,
+ TITRE =TITRE,
+ VERIF =VERIF,
+ VALE_C =liste,)
+
+ elif TYPE=='NAPPE':
+
+ # création de la nappe ASTER :
+ motscles={}
+ motscles['DEFI_FONCTION']=[]
+ for elem in mc_DEFI_FONCTION:
+ ier,message,liste_vale=liste_double(nomfich,args['INDIC_ABSCISSE'],elem['INDIC_RESU'],SEPAR)
+ if ier!=0: UTMESS('F', nompro, message)
+
+ motscles['DEFI_FONCTION'].append( _F( VALE =liste_vale,
+ INTERPOL =args['INTERPOL_FONC'],
+ PROL_DROITE=args['PROL_DROITE_FONC'],
+ PROL_GAUCHE=args['PROL_GAUCHE_FONC'] ) )
+ ier,message,liste_para=liste_simple(nomfich,INDIC_PARA,SEPAR)
+ if ier!=0: UTMESS('F', nompro, message)
+
+ # création de la nappe
+ ut_fonc=DEFI_NAPPE( PARA =liste_para,
+ NOM_PARA =NOM_PARA,
+ NOM_PARA_FONC =args['NOM_PARA_FONC'],
+ NOM_RESU =NOM_RESU,
+ PROL_DROITE =PROL_DROITE,
+ PROL_GAUCHE =PROL_GAUCHE,
+ INTERPOL =INTERPOL,
+ INFO =INFO,
+ TITRE =TITRE,
+ VERIF =VERIF,
+ **motscles)
+ # remet UNITE dans son état initial
+ UL.EtatInit()
+ return ier
--- /dev/null
+#@ MODIF lire_inte_spec_ops Macro DATE 26/05/2005 AUTEUR MCOURTOI M.COURTOIS
+# -*- coding: iso-8859-1 -*-
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+
+def lire_inte_spec_ops(self,UNITE,FORMAT,NOM_PARA,NOM_RESU,INTERPOL,
+ PROL_DROITE,PROL_GAUCHE,TITRE,INFO,**args):
+ ier=0
+
+ from Accas import _F
+ import os
+ from math import cos,sin
+ from Utilitai.Utmess import UTMESS
+ from Utilitai.UniteAster import UniteAster
+ # On importe les definitions des commandes a utiliser dans la macro
+ DEFI_FONCTION =self.get_cmd('DEFI_FONCTION')
+ CREA_TABLE =self.get_cmd('CREA_TABLE')
+
+ # La macro compte pour 1 dans la numerotation des commandes
+ self.set_icmd(1)
+ nompro='LIRE_INTE_SPEC'
+
+ # Lecture de la fonction dans un fichier d unité logique UNITE
+ UL = UniteAster()
+ nomfich=UL.Nom(UNITE)
+ if not os.path.isfile(nomfich):
+ UTMESS('F', nompro, "le fichier '%s' est introuvable" % nomfich)
+ file=open(nomfich,'r')
+ texte=file.read()
+ file.close()
+
+ list_fonc=texte.split('FONCTION_C')
+ entete=list_fonc.pop(0)
+ try :
+ entete=entete[entete.index('DIM'):]
+ dim=int(entete[entete.index('=')+1:entete.index('\n')])
+ except ValueError :
+ ier=ier+1
+ self.cr.fatal("<F> <LIRE_INTE_SPEC> la dimension DIM n est pas précisée dans le fichier lu")
+ return ier
+
+ if len(list_fonc)!=(dim*(dim+1)/2):
+ ier=ier+1
+ self.cr.fatal("<F> <LIRE_INTE_SPEC> nombre de fonctions incorrect")
+ return ier
+
+ nume_i=[]
+ nume_j=[]
+ l_fonc=[]
+ for i in range(dim*(dim+1)/2):
+ numi=list_fonc[i][list_fonc[i].index('I =')+3:]
+ numi=numi[:numi.index('\n')]
+ nume_i.append(int(numi))
+ numj=list_fonc[i][list_fonc[i].index('J =')+3:]
+ numj=numj[:numj.index('\n')]
+ nume_j.append(int(numj))
+ try :
+ vale_fonc=list_fonc[i][list_fonc[i].index('VALEUR =\n')+9:list_fonc[i].index('FINSF\n')]
+ vale_fonc=vale_fonc.replace('\n',' ')
+ vale_fonc=map(float,vale_fonc.split())
+ except ValueError :
+ ier=ier+1
+ self.cr.fatal("<F> <LIRE_INTE_SPEC> erreur dans les données de fonctions")
+ return ier
+
+ liste=[]
+ if FORMAT=='REEL_IMAG':
+ liste=vale_fonc
+ elif FORMAT=='MODULE_PHASE':
+ for i in range(len(vale_fonc)/3) :
+ module=vale_fonc[3*i+1]
+ phase =vale_fonc[3*i+2]
+ liste=liste+[vale_fonc[3*i],module*cos(phase),module*sin(phase)]
+
+ # création de la fonction ASTER :
+ _fonc=DEFI_FONCTION( NOM_PARA =NOM_PARA,
+ NOM_RESU =NOM_RESU,
+ PROL_DROITE=PROL_DROITE,
+ PROL_GAUCHE=PROL_GAUCHE,
+ INTERPOL =INTERPOL,
+ INFO =INFO,
+ TITRE =TITRE,
+ VALE_C =liste,)
+ l_fonc.append(_fonc.nom)
+
+ nume_ib=[]
+ nume_jb=[]
+ for i in range(dim):
+ for j in range(i,dim):
+ nume_ib.append(i+1)
+ nume_jb.append(j+1)
+ if nume_i!=nume_ib or nume_j!=nume_jb :
+ ier=ier+1
+ self.cr.fatal("<F> <LIRE_INTE_SPEC> erreur dans les indices")
+ return ier
+ mcfact=[]
+ mcfact.append(_F(PARA='NOM_CHAM' ,LISTE_K=(NOM_RESU),NUME_LIGN=(1,)))
+ mcfact.append(_F(PARA='OPTION' ,LISTE_K=('TOUT',) ,NUME_LIGN=(1,)))
+ mcfact.append(_F(PARA='DIMENSION' ,LISTE_I=(dim,) ,NUME_LIGN=(1,)))
+ mcfact.append(_F(PARA='NUME_ORDRE_I',LISTE_I=nume_i ,NUME_LIGN=range(2,len(nume_i)+2)))
+ mcfact.append(_F(PARA='NUME_ORDRE_J',LISTE_I=nume_j ,NUME_LIGN=range(2,len(nume_j)+2)))
+ mcfact.append(_F(PARA='FONCTION' ,LISTE_K=l_fonc ,NUME_LIGN=range(2,len(list_fonc)+2)))
+ self.DeclareOut('tab_inte',self.sd)
+ tab_inte=CREA_TABLE(TYPE_TABLE='TABL_INTE_SPEC',
+ LISTE=mcfact,
+ TITRE=TITRE,)
+
+ # remet UNITE dans son état initial
+ UL.EtatInit()
+ return ier
--- /dev/null
+#@ MODIF lire_table_ops Macro DATE 26/05/2005 AUTEUR MCOURTOI M.COURTOIS
+# -*- coding: iso-8859-1 -*-
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+
+import string
+
+# ------------------------------------------------------------------------------
+def lecture_table(texte,nume,separ):
+ """Méthode de construction du dictionnaire PARAMETRE / LISTE DE VALEURS
+ format ASTER
+ Les lignes contenant autre chose que des séquences de nombres
+ réels et de séparateurs sont considérées comme délimitant deux
+ fonctions différentes. Cette situation correspond à l exception
+ ValueError levée par le map de float. Le deuxieme indice de
+ VALE_PARA et VALE_RESU est l indice permettant de pointer sur la
+ fonction voulue, au sens de ce découpage.
+ """
+
+ from Utilitai.transpose import transpose
+ if string.strip(separ)=='' : separ=None
+ tab_lue={}
+ nume_lign=[]
+ idt_deb='#DEBUT_TABLE\n'
+ idt_fin='#FIN_TABLE\n'
+ idt_tit='#TITRE'
+ if nume>texte.count(idt_deb) :
+ message= "<F> <CREA_TABLE> NUME_TABLE :le nombre de blocs de tables dans "
+ message=message+"le fichier est "+str(texte.count(idt_deb))
+ return 1,message,None,None,None
+ for i in range(nume):
+ texte=texte[texte.index(idt_deb)+1:]
+ texte=texte[:texte.index(idt_fin)]
+
+ titre_tab=[string.rstrip(elem[7:-1]) for elem in texte if elem.find(idt_tit)!=-1]
+ texte_tab=[elem.split(separ) for elem in texte if elem.find(idt_tit)==-1]
+
+ if ( separ!=None) :
+ tab_trav=[]
+ for line in texte_tab :
+ ligne=[]
+ for elem in line :
+ if ( elem != '' and elem !='\n') :
+ ligne.append(string.strip(elem))
+ tab_trav.append(ligne)
+ texte_tab=tab_trav
+
+ list_para=texte_tab[0]
+ list_type=texte_tab[1]
+ texte_tab.pop(0)
+ texte_tab.pop(0)
+ nb_para=len(texte_tab[0])
+
+ for line in texte_tab :
+ if len(line)!=nb_para :
+ message= "<F> <CREA_TABLE> incoherence dans le nombre de colonnes "
+ message=message+"de la table a lire"
+ return 1,message,None,None,None
+ texte_tab=transpose(texte_tab)
+ for i in range(nb_para):
+ tab_trav=[]
+ list_val=[]
+ col_type=list_type[i]
+ if col_type=='R':
+ try :
+ texte_tab[i]=map(float,texte_tab[i])
+ nume_lign.append([0])
+ except ValueError:
+# Presence de - dans la ligne
+ for indice in range(len(texte_tab[i])):
+ if texte_tab[i][indice]!='-':
+ tab_trav.append(indice+1)
+ list_val.append(float(texte_tab[i][indice]))
+
+ nume_lign.append(tab_trav)
+ texte_tab[i]=list_val
+ elif col_type=='I' :
+ try :
+ texte_tab[i]=map(int,texte_tab[i])
+ nume_lign.append([0])
+# Presence de - dans la ligne
+ except ValueError:
+ for indice in range(len(texte_tab[i])):
+ if texte_tab[i][indice]!='-':
+ tab_trav.append(indice+1)
+ list_val.append(float(texte_tab[i][indice]))
+ nume_lign.append(tab_trav)
+ texte_tab[i]=list_val
+
+ else :
+ try : nume_lign.append([0])
+ except ValueError: pass
+
+ tab_lue[list_para[i]]=(list_type[i],texte_tab[i],nume_lign[i])
+
+ return 0,None,titre_tab,list_para,tab_lue
+
+
+# ------------------------------------------------------------------------------
+def lire_table_ops(self,UNITE,FORMAT,NUME_TABLE,SEPARATEUR,
+ TYPE_TABLE,PARA,TITRE,**args):
+ """Méthode corps de la macro LIRE_TABLE
+ """
+ import os
+ from Accas import _F
+ from Utilitai.Utmess import UTMESS
+ from Utilitai.UniteAster import UniteAster
+
+ ier=0
+ ### On importe les definitions des commandes a utiliser dans la macro
+ CREA_TABLE =self.get_cmd('CREA_TABLE')
+
+ ### La macro compte pour 1 dans la numerotation des commandes
+ self.set_icmd(1)
+
+ ### Lecture de la table dans un fichier d unité logique UNITE
+ UL = UniteAster()
+ nomfich=UL.Nom(UNITE)
+ if not os.path.isfile(nomfich):
+ UTMESS('F', nompro, "le fichier '%s' est introuvable" % nomfich)
+
+ file=open(nomfich,'r')
+ texte=file.readlines()
+ file.close()
+
+ ### mise en forme de la liste de valeurs suivant le format choisi :
+ if FORMAT=='ASTER':
+ ier,message,titr_tab,list_para,tab_lue=lecture_table(texte,NUME_TABLE,SEPARATEUR)
+ if ier!=0 :
+ self.cr.fatal(message)
+ return ier
+ else : pass
+
+ ### création de la table ASTER :
+ self.DeclareOut('ut_tab',self.sd)
+ mcfact=[]
+ num_col=0
+ for tab_para in list_para:
+ mcsimp={}
+ mcsimp['PARA']=tab_para
+
+ if tab_lue[tab_para][2] != [0] :
+ mcsimp['NUME_LIGN']=tab_lue[tab_para][2]
+
+ if tab_lue[tab_para][0] not in ('I','R') :
+ mcsimp['TYPE_K'] =tab_lue[tab_para][0]
+ mcsimp['LISTE_K']=tab_lue[tab_para][1]
+ elif tab_lue[tab_para][0]=='I' :
+ mcsimp['LISTE_I']=tab_lue[tab_para][1]
+ elif tab_lue[tab_para][0]=='R' :
+ mcsimp['LISTE_R']=tab_lue[tab_para][1]
+
+ mcfact.append( _F(**mcsimp) )
+ num_col = num_col + 1
+ motscles={}
+ motscles['LISTE']=mcfact
+
+ ut_tab=CREA_TABLE(TITRE=titr_tab,TYPE_TABLE=TYPE_TABLE, **motscles)
+
+ # remet UNITE dans son état initial
+ UL.EtatInit()
+ return ier
--- /dev/null
+#@ MODIF macr_adap_mail_ops Macro DATE 05/10/2004 AUTEUR CIBHHLV L.VIVAN
+# -*- coding: iso-8859-1 -*-
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2003 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE GNICOLAS G.NICOLAS
+#
+def macr_adap_mail_ops ( self,
+ INFO, VERSION_HOMARD, LANGUE,
+ NOMBRE, QUALITE, CONNEXITE, TAILLE, INTERPENETRATION,
+ NON_SIMPLEXE, MAILLAGE_FRONTIERE,
+ **args):
+ """
+ Ecriture des macros MACR_ADAP_MAIL/MACR_INFO_MAIL
+ Remarque : on ne mentionne explicitement que les mots-clés communs aux
+ deux macros. Les autres sont dans le dictionnaire args
+ """
+#
+# 1. args est le dictionnaire des arguments
+# args.keys() est la liste des mots-clés
+# args.keys()[0] est la premiere valeur de cette liste
+# args.keys()[1:] est la liste des valeurs suivantes dans cette liste
+# args.keys(mot_cle) représente le contenu de la variable mot_cle dans la macro appelante.
+#
+### print args
+### print args.keys()
+### if len (args.keys())>0 : print args.keys()[0]
+### print args["MAILLAGE"]
+#
+# 2. Les caractéristiques d'un passage sont conservées dans un dictionnaire. Il y a autant de
+# dictionnaires que de sollicitations pour une série d'adaptation. L'ensemble de ces dictionnaires
+# est conservé dans la liste Liste_Passages. Cette liste est nécessairement globale pour pouvoir
+# la retrouver à chaque nouveau passage.
+# Description du dictionnaire de passages :
+# dico["Maillage_0"] = o ; string ; nom du concept du maillage initial de la série d'adaptation
+# dico["Maillage_NP1"] = o ; string ; nom du concept du dernier maillage adapté
+# dico["Rep_Calc_HOMARD_global"] = o ; string ; Nom global du répertoire de calcul pour HOMARD
+# dico["Rep_Calc_HOMARD_local"] = o ; string ; Nom local du répertoire de calcul pour HOMARD
+# depuis le répertoire de calcul pour ASTER
+# dico["niter"] = o ; entier ; numéro d'itération
+#
+# 3. Les caractéristiques d'un maillage sont conservées dans un dictionnaire. Il y a autant de
+# dictionnaires que de maillages manipulés. L'ensemble de ces dictionnaires est conservé
+# dans la liste Liste_Maillages.
+# Description du dictionnaire de maillages :
+# dico["Type_Maillage"] = o ; string ; "MAILLAGE_N", "MAILLAGE_NP1" ou "MAILLAGE_FRONTIERE"
+# dico["Nom_ASTER"] = o ; concept ASTER associé
+# dico["Action"] = o ; string ; "A_ecrire" ou "A_lire"
+# dico["NOM_MED"] = o ; string ; Nom MED du maillage
+#
+# 4. Les caractéristiques d'un champ sont conservées dans un dictionnaire. Il y a autant de
+# dictionnaires que de champs manipulés. L'ensemble de ces dictionnaires est conservé
+# dans la liste Liste_Champs.
+# Description du dictionnaire de champs :
+# dico["Type_Champ"] = o ; string ; "INDICATEUR" ou "CHAMP"
+# dico["RESULTAT"] = o ; concept ASTER du résutat associé
+# dico["NOM_CHAM"] = o ; string ; Nom ASTER du champ
+# dico["COMPOSANTE"] = f ; string ; Nom ASTER de la composante (dans le cas de l'indicateur)
+# dico["NUME_ORDRE"] = f ; entier ; Numéro d'ordre du champ
+# dico["INST"] = f ; entier ; Instant du champ
+# dico["PRECISION"] = f ; entier ; Précision sur l'instant du champ
+# dico["CRITERE"] = f ; entier ; Critère de précision sur l'instant du champ
+# dico["CHAM_MAJ"] = f ; string ; Nom ASTER du champ interpolé sur le nouveau maillage
+# dico["NOM_MED"] = o ; string ; Nom MED du champ
+#
+ from Accas import _F
+ import aster
+ import string
+ import types
+ import os
+#
+ global Liste_Passages
+#
+#--------------------------------------------------------------------
+# 1. Préalables
+#--------------------------------------------------------------------
+#
+# 1.1. ==> La macro compte pour 1 dans la numerotation des commandes
+#
+ self.set_icmd(1)
+#
+# 1.2. ==> Numéro du passage dans cette macro
+#
+ try :
+ self.jdc.indice_macro_homard = self.jdc.indice_macro_homard + 1
+ except :
+ self.jdc.indice_macro_homard = 1
+ Liste_Passages = []
+ Numero_Passage_Fonction = self.jdc.indice_macro_homard
+### print "Numero_Passage_Fonction = ",Numero_Passage_Fonction
+#
+# 1.3. ==> On importe les definitions des commandes a utiliser dans la macro
+#
+ DEFI_FICHIER = self.get_cmd("DEFI_FICHIER")
+ IMPR_RESU = self.get_cmd("IMPR_RESU")
+ EXEC_LOGICIEL = self.get_cmd("EXEC_LOGICIEL")
+ IMPR_FICO_HOMA = self.get_cmd("IMPR_FICO_HOMA")
+ LIRE_MAILLAGE = self.get_cmd("LIRE_MAILLAGE")
+ LIRE_CHAMP = self.get_cmd("LIRE_CHAMP")
+ DETRUIRE = self.get_cmd('DETRUIRE')
+#
+# 1.4. ==> Le nom du programme HOMARD à lancer
+#
+ repertoire_outils = aster.repout()
+ homard = repertoire_outils + "homard"
+#
+# 1.5. ==> Initialisations
+#
+ codret = 0
+ codret_partiel = [0]
+ Rep_Calc_ASTER = os.getcwd()
+#
+ Liste_Maillages = []
+ Liste_Champs = []
+ dico_indi = {}
+#
+ ADAPTATION = None
+ MAJ_CHAM = None
+#
+ unite = 71
+#
+#--------------------------------------------------------------------
+# 2. Décodage des arguments de la macro-commande
+#--------------------------------------------------------------------
+# 2.1. ==> Données de pilotage de l'adaptation
+#
+ if ( self.nom == "MACR_ADAP_MAIL" ) :
+#
+ modhom = "ADAP"
+#
+ ADAPTATION = args["ADAPTATION"]
+ if args.has_key("MAJ_CHAM") :
+ MAJ_CHAM = args["MAJ_CHAM"]
+#
+# 2.1.1. ==> Les concepts "maillage"
+#
+ for mot_cle in ["MAILLAGE_N","MAILLAGE_NP1"] :
+ dico = {}
+ dico["Type_Maillage"] = mot_cle
+ dico["Nom_ASTER"] = ADAPTATION[mot_cle]
+ if ( mot_cle == "MAILLAGE_N" ) :
+ dico["Action"] = "A_ecrire"
+ else :
+ dico["Action"] = "A_lire"
+ Liste_Maillages.append(dico)
+#
+# 2.1.2. ==> L'éventuel indicateur d'erreur
+#
+ if ADAPTATION["LIBRE"] != None :
+ dico = {}
+ dico["Type_Champ"] = "INDICATEUR"
+ dico["RESULTAT"] = ADAPTATION["RESULTAT_N"]
+ dico["NOM_CHAM"] = ADAPTATION["INDICATEUR"]
+ dico["COMPOSANTE"] = ADAPTATION["NOM_CMP_INDICA"]
+ if ( ADAPTATION["NUME_ORDRE"] != None ) :
+ dico["NUME_ORDRE"] = ADAPTATION["NUME_ORDRE"]
+ if ( ADAPTATION["INST"] != None ) :
+ dico["INST"] = ADAPTATION["INST"]
+ for cle in [ "PRECISION", "CRITERE" ] :
+ if ( ADAPTATION[cle] != None ) :
+ dico[cle] = ADAPTATION[cle]
+ dico["NOM_MED"] = aster.mdnoch ( dico["RESULTAT"].nom , dico["NOM_CHAM"] )
+ Liste_Champs.append(dico)
+ dico_indi = dico
+### print dico
+#
+# 2.1.3. ==> Les champs à mettre à jour
+#
+ if ( MAJ_CHAM != None ) :
+#
+ for maj_cham in MAJ_CHAM :
+### print maj_cham
+#
+ dico = {}
+ dico["Type_Champ"] = "CHAMP"
+ for cle in [ "CHAM_MAJ", "TYPE_CHAM", "RESULTAT", "NOM_CHAM" ] :
+ dico[cle] = maj_cham[cle]
+ if ( maj_cham["NUME_ORDRE"] != None ) :
+ dico["NUME_ORDRE"] = maj_cham["NUME_ORDRE"]
+ elif ( maj_cham["INST"] != None ) :
+ dico["INST"] = maj_cham["INST"]
+ for cle in [ "PRECISION", "CRITERE" ] :
+ if ( maj_cham[cle] != None ) :
+ dico[cle] = maj_cham[cle]
+ dico["NOM_MED"] = aster.mdnoch ( dico["RESULTAT"].nom , dico["NOM_CHAM"] )
+#
+### print dico
+ Liste_Champs.append(dico)
+#
+# 2.2. ==> Données de pilotage de l'information
+#
+ else :
+#
+ modhom = "INFO"
+#
+ dico = {}
+ dico["Type_Maillage"] = "MAILLAGE_N"
+ dico["Nom_ASTER"] = args["MAILLAGE"]
+ dico["Action"] = "A_ecrire"
+ Liste_Maillages.append(dico)
+#
+# 2.3. ==> Suivi de frontière
+#
+ if ( MAILLAGE_FRONTIERE != None ) :
+#
+ dico = {}
+ dico["Type_Maillage"] = "MAILLAGE_FRONTIERE"
+ dico["Nom_ASTER"] = MAILLAGE_FRONTIERE
+ dico["Action"] = "A_ecrire"
+ Liste_Maillages.append(dico)
+#
+#--------------------------------------------------------------------
+# 3. Préparation du lancement des commandes
+#--------------------------------------------------------------------
+#
+# 3.1. ==> . Elaboration des noms MED des concepts de maillage
+# . Memorisation des noms ASTER du maillage en entrée et en sortie (sous forme string)
+# On crée une nouvelle liste des dictionnaires décrivant les maillages
+# et à la fin on écrase l'ancienne liste par cette nouvelle.
+#
+ L = []
+ for dico in Liste_Maillages :
+ dico["NOM_MED"] = aster.mdnoma(dico["Nom_ASTER"].nom)
+ L.append(dico)
+ if ( dico["Type_Maillage"] == "MAILLAGE_N" ) :
+ Nom_Concept_Maillage_N = dico["Nom_ASTER"].nom
+ elif ( dico["Type_Maillage"] == "MAILLAGE_NP1" ) :
+ Nom_Concept_Maillage_NP1 = dico["Nom_ASTER"].nom
+ Liste_Maillages = L
+#
+# 3.2. ==> Recherche du numéro d'itération et du répertoire de travail
+#
+# 3.2.1. ==> Par défaut :
+# . le numéro d'itération est nul
+# . le nom du répertoire de lancement de HOMARD est construit sur le nom
+# du maillage en entrée et le numéro de passage dans la fonction
+#
+ niter = 0
+ Nom_Rep_local = Nom_Concept_Maillage_N + "_" + modhom + "_" + str(Numero_Passage_Fonction)
+ Rep_Calc_HOMARD_local = os.path.join(".",Nom_Rep_local)
+ Rep_Calc_HOMARD_global = os.path.join(Rep_Calc_ASTER,Nom_Rep_local)
+### print "Rep_Calc_HOMARD_local = ", Rep_Calc_HOMARD_local
+### print "Rep_Calc_HOMARD_global = ", Rep_Calc_HOMARD_global
+#
+# 3.2.2. ==> En adaptation :
+#
+ if ( modhom == "ADAP" ) :
+#
+# 3.2.2.1. ==> On recherche si dans les passages déjà effectués, il en existe un
+# dont le maillage d'arrivée était l'actuel maillage d'entrée. Si c'est
+# le cas, cela veut dire que l'adaptation en cours est la suite d'une
+# précédente. On doit donc utiliser le meme répertoire. Le numéro
+# d'itération est celui de l'adaptation précédente augmenté de 1.
+#
+ for dico in Liste_Passages :
+ if ( dico["Maillage_NP1"] == Nom_Concept_Maillage_N ) :
+ niter = dico["niter"] + 1
+ Rep_Calc_HOMARD_local = dico["Rep_Calc_HOMARD_local"]
+ Rep_Calc_HOMARD_global = dico["Rep_Calc_HOMARD_global"]
+#
+# 3.2.2.2. ==> Memorisation de ce passage
+#
+# 3.2.2.2.1. ==> Enregistrement d'un nouveau cas de figure
+#
+ if ( niter == 0 ) :
+ dico = {}
+ dico["Maillage_0"] = Nom_Concept_Maillage_N
+ dico["Maillage_NP1"] = Nom_Concept_Maillage_NP1
+ dico["Rep_Calc_HOMARD_local"] = Rep_Calc_HOMARD_local
+ dico["Rep_Calc_HOMARD_global"] = Rep_Calc_HOMARD_global
+ dico["niter"] = niter
+ Liste_Passages.append(dico)
+#
+# 3.2.2.2.2. ==> Modification du cas en cours
+#
+ else :
+ L = []
+ for dico in Liste_Passages :
+ if ( dico["Maillage_NP1"] == Nom_Concept_Maillage_N ) :
+ dico["Maillage_NP1"] = Nom_Concept_Maillage_NP1
+ dico["niter"] = niter
+ L.append(dico)
+ Liste_Passages = L
+#
+### print "niter = ", niter, ", Rep_Calc_HOMARD_global = ", Rep_Calc_HOMARD_global
+#
+#--------------------------------------------------------------------
+# 4. Ecriture des commandes
+#--------------------------------------------------------------------
+#
+# 4.1. ==> Création du répertoire pour homard
+# attention : on ne fait cette creation qu'une seule fois par cas
+# d'adaptation ou d'information
+#
+ if ( niter == 0 ) :
+#
+ try :
+ os.mkdir(Rep_Calc_HOMARD_global)
+ except os.error,codret_partiel :
+ self.cr.warn("Code d'erreur de mkdir : " + str(codret_partiel[0]) + " : " + codret_partiel[1])
+ self.cr.fatal("<F> <MACR_ADAP_MAIL> Impossible de créer le répertoire de travail pour HOMARD : "+Rep_Calc_HOMARD_global)
+ codret = codret + 1
+#
+# 4.2. ==> Ecriture des commandes de creation des donnees MED
+#
+# On doit écrire : le maillage,
+# le champ d'indicateur d'erreur
+# les champs à convertir
+# Remarque : on met tout dans le meme fichier
+#
+# Chacune de ces écritures est optionnelle selon le contexte.
+#
+ if ( INFO > 1 ) : infomail = "OUI"
+ else : infomail = "NON"
+#
+# 4.2.1. ==> Noms des fichiers d'ASTER vers HOMARD et éventuellement de HOMARD vers ASTER
+# Remarque : aujourd'hui, les écritures ou les lectures au format MED se font obligatoirement sur
+# un fichier de nom fort.n, placé dans le répertoire de calcul
+# Dans le fichier de configuration, on donne comme nom MAILL.(niter).MED en entrée et
+# MAILL.(niter+1).MED en sortie (cf. adhc00)
+# Tant que les E/S MED n'ont pas évolué, on fait un lien pour assurer la cohérence.
+#
+# 4.2.1.1. ==> D'ASTER vers HOMARD
+#
+ Unite_Fichier_ASTER_vers_HOMARD = 1787 + 2*Numero_Passage_Fonction
+ Fichier_ASTER_vers_HOMARD = os.path.join(Rep_Calc_ASTER,"fort." + str(Unite_Fichier_ASTER_vers_HOMARD))
+ Fichier_HOMARD_Entree = os.path.join(Rep_Calc_HOMARD_global,"MAILL."+str(niter)+".MED")
+### print "Fichier_ASTER_vers_HOMARD = ",Fichier_ASTER_vers_HOMARD
+### print "Fichier_HOMARD_Entree = ",Fichier_HOMARD_Entree
+ try :
+ os.symlink(Fichier_ASTER_vers_HOMARD,Fichier_HOMARD_Entree)
+ except os.error,codret_partiel :
+ self.cr.warn("Code d'erreur de symlink : " + str(codret_partiel[0]) + " : " + codret_partiel[1])
+ self.cr.fatal("<F> <MACR_ADAP_MAIL> Probleme au lien entre " + Fichier_ASTER_vers_HOMARD + " et " + Fichier_HOMARD_Entree)
+ codret = codret + 1
+#
+# 4.2.1.2. ==> De HOMARD vers ASTER
+#
+ if ( modhom == "ADAP" ) :
+ Unite_Fichier_HOMARD_vers_ASTER = Unite_Fichier_ASTER_vers_HOMARD + 1
+ Fichier_HOMARD_vers_ASTER = os.path.join(Rep_Calc_ASTER,"fort." + str(Unite_Fichier_HOMARD_vers_ASTER))
+ Fichier_HOMARD_Sortie = os.path.join(Rep_Calc_HOMARD_global,"MAILL."+str(niter+1)+".MED")
+### print "Fichier_HOMARD_vers_ASTER = ",Fichier_HOMARD_vers_ASTER
+### print "Fichier_HOMARD_Sortie = ",Fichier_HOMARD_Sortie
+ try :
+ os.symlink(Fichier_HOMARD_vers_ASTER,Fichier_HOMARD_Sortie)
+ except os.error,codret_partiel :
+ self.cr.warn("Code d'erreur de symlink : " + str(codret_partiel[0]) + " : " + codret_partiel[1])
+ self.cr.fatal("<F> <MACR_ADAP_MAIL> Probleme au lien entre " + Fichier_HOMARD_vers_ASTER + " et " + Fichier_HOMARD_Sortie)
+ codret = codret + 1
+#
+# 4.2.2. La définition du fichier de ASTER vers HOMARD
+#
+ DEFI_FICHIER ( ACTION= "ASSOCIER",
+ UNITE = Unite_Fichier_ASTER_vers_HOMARD,
+ TYPE = "LIBRE",
+ INFO = INFO )
+#
+# 4.2.3. Le(s) maillage(s)
+# Le maillage de calcul et l'éventuel maillage de la frontiere sont écrits
+# dans le meme fichier MED
+# En fait, on pourrait s'en passer au dela de la 1ère itération
+# car HOMARD a mémorisé. Mais dès que l'on écrit un champ,
+# les conventions MED imposent la présence du maillage dans le fichier.
+# Donc on va toujours écrire.
+#
+ for dico in Liste_Maillages :
+ if ( dico["Action"] == "A_ecrire" ) :
+ motscsi={}
+ motscsi["MAILLAGE"] = dico["Nom_ASTER"]
+ motscfa={}
+ motscfa["RESU"]=_F( INFO_MAILLAGE=infomail,
+ **motscsi )
+#
+ IMPR_RESU ( INFO = INFO,
+ FORMAT ='MED', UNITE = Unite_Fichier_ASTER_vers_HOMARD,
+ **motscfa )
+#
+# 4.2.4. Le(s) champ(s)
+# Attention : il se peut que l'on demande la mise à jour du champ qui a servi comme
+# indicateur d'erreur. Si c'est le cas, il ne faut pas demander son
+# impression sinon il y a plantage d'IMPR_RESU qui ne sait pas substituer
+# deux champs. D'ailleurs, c'est plus économique ainsi !
+# Remarque : pour l'adaptation, on ne demande a priori qu'une composante du champ d'indicateur.
+# s'il y a demande de mise à jour, toutes les composantes sont concernées. Il faut
+# donc dans ce cas imprimer le champ total.
+# dico["Type_Champ"] = o ; string ; "INDICATEUR" ou "CHAMP"
+# dico["RESULTAT"] = o ; concept ASTER du résutat associé
+# dico["NOM_CHAM"] = o ; string ; Nom ASTER du champ
+# dico["COMPOSANTE"] = f ; string ; Nom ASTER de la composante (dans le cas de l'indicateur)
+# dico["NUME_ORDRE"] = f ; entier ; Numéro d'ordre du champ
+# dico["INST"] = f ; entier ; Instant du champ
+# dico["PRECISION"] = f ; entier ; Précision sur l'instant du champ
+# dico["CRITERE"] = f ; entier ; Critère de précision sur l'instant du champ
+# dico["CHAM_MAJ"] = f ; string ; Nom ASTER du champ interpolé sur le nouveau maillage
+# dico["NOM_MED"] = o ; string ; Nom MED du champ
+#
+# 4.2.4.1. Recherche d'un doublon éventuel sur le champ d'indicateur d'erreur
+#
+ if len(dico_indi) > 0 :
+ imprime_indic = 0
+ else :
+ imprime_indic = 1
+#
+ Liste_Champs_imprime = []
+ for dico in Liste_Champs :
+# Pour un champ à mettre à jour, on a toujours impression
+ if ( dico["Type_Champ"] == "CHAMP" ) :
+ Liste_Champs_imprime.append(dico)
+# Si le champ d'indicateur n'a pas été repéré comme champ à mettre à jour :
+ if not imprime_indic :
+# Est-ce le meme champ ?
+ ok = 1
+ for cle in [ "RESULTAT", "NOM_CHAM" ] :
+ if ( dico_indi[cle] != dico[cle] ) :
+ ok = 0
+ break
+# Si oui, est-ce au meme moment ? (remarque : si rien n'est désigné, c'est qu'il n'y a qu'un
+# seul instant ... donc c'est le meme ! En revanche, on ne sait pas comparer une donnée
+# en numéro d'ordre et une donnée en instant. On croise les doigts.)
+ if ok :
+ for cle in [ "NUME_ORDRE", "INST" ] :
+ if dico.has_key(cle) :
+ if ( dico[cle] != None ) :
+ if dico_indi.has_key(cle) :
+ if ( dico_indi[cle] != dico[cle] ) :
+ ok = 0
+ break
+ if ok : imprime_indic = 1
+# Si le champ d'indicateur n'a pas été repéré comme champ à mettre à jour, il faut
+# l'inclure dans les champs à imprimer
+ if not imprime_indic : Liste_Champs_imprime.append(dico_indi)
+#
+# 4.2.4.2. Impressions après le filtrage précédent
+#
+ for dico in Liste_Champs_imprime :
+ motscsi={}
+ for cle in [ "RESULTAT", "NOM_CHAM", "NUME_ORDRE", "INST", "PRECISION", "CRITERE" ] :
+ if dico.has_key(cle) :
+ if ( dico[cle] != None ) :
+ motscsi[cle] = dico[cle]
+ if dico.has_key("COMPOSANTE") :
+ motscsi["NOM_CMP"] = dico["COMPOSANTE"]
+ motscfa={}
+ motscfa["RESU"]=_F( INFO_MAILLAGE=infomail,
+ **motscsi
+ )
+#
+ IMPR_RESU ( INFO = INFO,
+ FORMAT ='MED', UNITE = Unite_Fichier_ASTER_vers_HOMARD,
+ **motscfa )
+#
+# 4.3. ==> Ecriture de la commande d'écriture des fichiers de données pour HOMARD
+#
+ motscfa={}
+#
+# 4.3.1. ==> Le traitement
+#
+ motscsi={}
+#
+# 4.3.1.1. ==> Le type de traitement
+#
+ if ( modhom == "ADAP" ) :
+ if ( ADAPTATION["UNIFORME"] != None ) :
+ motscsi["UNIFORME"] = ADAPTATION["UNIFORME"]
+ else :
+ motscsi["ADAPTATION"] = ADAPTATION["LIBRE"]
+ else :
+ motscsi["INFORMATION"] = "OUI"
+#
+# 4.3.1.2. ==> Les noms med des maillages
+#
+ for dico in Liste_Maillages :
+### print "Nom MED de " + dico["Type_Maillage"] + " = " + dico["NOM_MED"]
+ motscsi[ "NOM_MED_"+dico["Type_Maillage"] ] = dico["NOM_MED"]
+#
+# 4.3.1.3. ==> Les caracteristiques de l'éventuel indicateur d'erreur
+#
+ for dico in Liste_Champs :
+ if ( dico["Type_Champ"] == "INDICATEUR" ) :
+ Liste_aux = [ "NOM_MED", "COMPOSANTE" ]
+ if dico.has_key("NUME_ORDRE") :
+ Liste_aux.append("NUME_ORDRE")
+ else :
+ for cle in [ "RESULTAT", "NOM_CHAM", "INST", "PRECISION", "CRITERE" ] :
+ Liste_aux.append(cle)
+ for cle in Liste_aux :
+ if dico.has_key(cle) :
+ if ( dico[cle] != None ) :
+ motscsi[cle] = dico[cle]
+#
+# 4.3.1.4. ==> Les critères de raffinement et les niveaux extremes
+#
+ if ( modhom == "ADAP" ) :
+ Liste_aux = [ ]
+ if ( ADAPTATION["LIBRE"] == "RAFF_DERA" or ADAPTATION["LIBRE"] == "RAFFINEMENT" ) :
+ Liste_aux.append("CRIT_RAFF_ABS")
+ Liste_aux.append("CRIT_RAFF_REL")
+ Liste_aux.append("CRIT_RAFF_PE")
+ if ( ADAPTATION["LIBRE"] == "RAFF_DERA" or ADAPTATION["LIBRE"] == "DERAFFINEMENT" ) :
+ Liste_aux.append("CRIT_DERA_ABS")
+ Liste_aux.append("CRIT_DERA_REL")
+ Liste_aux.append("CRIT_DERA_PE")
+ niveau = 0
+ if ( ADAPTATION["LIBRE"] == "RAFF_DERA" or ADAPTATION["LIBRE"] == "RAFFINEMENT" or ADAPTATION["UNIFORME"] == "RAFFINEMENT" ) :
+ Liste_aux.append("NIVE_MAX")
+ niveau = niveau + 1
+ if ( ADAPTATION["LIBRE"] == "RAFF_DERA" or ADAPTATION["LIBRE"] == "DERAFFINEMENT" or ADAPTATION["UNIFORME"] == "DERAFFINEMENT" ) :
+ Liste_aux.append("NIVE_MIN")
+ niveau = niveau + 2
+ for mot_cle in Liste_aux :
+ if ( ADAPTATION[mot_cle] != None ) :
+ motscsi[mot_cle] = ADAPTATION[mot_cle]
+#
+ if ( niveau == 2 ) :
+ if ( ADAPTATION["NIVE_MIN"] > ADAPTATION["NIVE_MAX"] ) :
+ self.cr.fatal("<F> <MACR_ADAP_MAIL> Le niveau minimum doit etre inferieur au niveau maximum.")
+ codret = codret + 1
+#
+# 4.3.1.5. ==> Numéro d'itération
+#
+ if ( modhom == "ADAP" ) :
+ motscsi["NITER"] = niter
+#
+# 4.3.1.6. ==> Suivi de la frontiere
+#
+ if args.has_key("GROUP_MA") :
+ if ( args["GROUP_MA"] != None ) :
+ motscsi["GROUP_MA"] = args["GROUP_MA"]
+#
+# 4.3.1.7. ==> Bilan
+#
+ motscfa["TRAITEMENT"] = _F(**motscsi)
+#
+# 4.3.2. ==> L'analyse
+#
+ motscsi={}
+ if ( NOMBRE != None ) : motscsi["NOMBRE" ] = NOMBRE
+ if ( QUALITE != None ) : motscsi["QUALITE" ] = QUALITE
+ if ( CONNEXITE != None ) : motscsi["CONNEXITE" ] = CONNEXITE
+ if ( TAILLE != None ) : motscsi["TAILLE" ] = TAILLE
+ if ( INTERPENETRATION != None ) : motscsi["INTERPENETRATION" ] = INTERPENETRATION
+#
+ motscfa["ANALYSE"] = _F(**motscsi)
+#
+# 4.3.3. ==> La mise à jour de champs
+#
+ prem = 1
+ for dico in Liste_Champs :
+ motscsi={}
+ if ( dico["Type_Champ"] == "CHAMP" ) :
+ Liste_aux = [ "NOM_MED", "COMPOSANTE" ]
+ if dico.has_key("NUME_ORDRE") :
+ Liste_aux.append("NUME_ORDRE")
+ else :
+ for cle in [ "RESULTAT", "NOM_CHAM", "INST", "PRECISION", "CRITERE" ] :
+ Liste_aux.append(cle)
+ for cle in Liste_aux :
+ if dico.has_key(cle) :
+ if ( dico[cle] != None ) :
+ motscsi[cle] = dico[cle]
+### print motscsi
+ if prem :
+ motscfa["MAJ_CHAM"] = [_F(**motscsi),]
+ prem = 0
+ else :
+ motscfa["MAJ_CHAM"].append(_F(**motscsi))
+#
+# 4.3.4. ==> La commande
+#
+# 4.3.4.1. ==> Les fichiers annexes
+#
+ dico = {}
+#
+ Nom_Fichier_Configuration = "HOMARD.Configuration"
+ Fichier_Configuration = os.path.join(Rep_Calc_HOMARD_local,Nom_Fichier_Configuration)
+ dico[Fichier_Configuration] = ("HOMARD_CONFIG","UNITE_CONF",unite)
+#
+ if ( modhom != "ADAP" ) :
+ unite = unite + 1
+ Nom_Fichier_Donnees = "HOMARD.Donnees"
+ Fichier_Donnees = os.path.join(Rep_Calc_HOMARD_local,Nom_Fichier_Donnees)
+# 1234567890123456
+ dico[Fichier_Donnees] = ("HOMARD_DONN","UNITE_DONN",unite)
+#
+# 4.3.4.2. ==> L'ouverture de ces fichiers
+#
+ for fic in dico.keys() :
+ DEFI_FICHIER ( ACTION= "ASSOCIER", FICHIER = fic, UNITE = dico[fic][2],
+ TYPE = "ASCII", ACCES = "NEW", INFO = INFO )
+ motscfa[dico[fic][1]] = dico[fic][2]
+#
+# 4.3.4.3. ==> Ecriture
+#
+### print motscfa
+ IMPR_FICO_HOMA ( INFO=INFO, LANGUE = LANGUE, NON_SIMPLEXE = NON_SIMPLEXE, **motscfa )
+#
+### for fic in dico.keys() :
+### print "\nContenu de ", fic
+### fichier = open (fic,"r")
+### les_lignes = fichier.readlines()
+### fichier.close()
+### for ligne in les_lignes :
+### print ligne[:-1]
+#
+# 4.3.4.4. ==> La fermeture des fichiers locaux
+# Remarque : il faut le faire ici pour que le gestionnaire de DEFI_FICHIER soit à jour
+# Remarque : aujourd'hui on est obligé de passer par le numéro d'unité logique
+#
+ for fic in dico.keys() :
+ DEFI_FICHIER ( ACTION= "LIBERER", UNITE = dico[fic][2], INFO = INFO )
+#
+# 4.4. ==> Ecriture de la commande d'exécution de homard
+# Remarque : dans la donnée de la version de HOMARD, il faut remplacer
+# le _ de la donnee par un ., qui
+# est interdit dans la syntaxe du langage de commandes ASTER
+# Remarque : il faut remplacer le N majuscule de la donnee par
+# un n minuscule, qui est interdit dans la syntaxe du langage
+# de commandes ASTER
+# Remarque : pour le nommage des fichiers d'échange entre ASTER et HOMARD, on utilise
+# la convention implicite du fort.n des entrees/sorties au format MED
+#
+ VERSION_HOMARD=string.replace(VERSION_HOMARD,"_",".")
+ VERSION_HOMARD=string.replace(VERSION_HOMARD,"N","n")
+ if ( VERSION_HOMARD[-6:]=="_PERSO" ):
+# motscsi["ARGUMENT"]=_F("TYPEXE"="-PERSO")
+ VERSION_HOMARD=VERSION_HOMARD[:-6]
+#
+ if ( modhom == "ADAP" ) :
+ Nom_Fichier_Donnees = "0"
+#
+ EXEC_LOGICIEL ( ARGUMENT = (_F(NOM_PARA=Rep_Calc_HOMARD_global), # nom du repertoire
+ _F(NOM_PARA=VERSION_HOMARD), # version de homard
+ _F(NOM_PARA=str(INFO)), # niveau d information
+ _F(NOM_PARA=Nom_Fichier_Donnees), # fichier de données HOMARD
+ ),
+ LOGICIEL = homard
+ )
+#
+# 4.5. ==> Ecriture de la commande de lecture des resultats med
+# Remarque :
+# La fonction self.DeclareOut(a,b) focntionne ainsi :
+# a est une chaine de caracteres
+# b est la variable déclarée dans la commande
+# le but est de associer le contenu de b à la variable locale qui sera désignée par a
+# Exemple :
+# self.DeclareOut("maillage_np1",ADAPTATION["MAILLAGE_NP1"])
+# ==> la variable maillage_np1 est identifiée à l'argument "MAILLAGE_NP1" du mot-clé ADAPTATION
+#
+ if ( modhom == "ADAP" ) :
+#
+# 4.5.1. ==> Le maillage
+#
+ self.DeclareOut("maillage_np1",ADAPTATION["MAILLAGE_NP1"])
+ for dico in Liste_Maillages :
+ if ( dico["Action"] == "A_lire" ) :
+ maillage_np1 = LIRE_MAILLAGE ( UNITE = Unite_Fichier_HOMARD_vers_ASTER,
+ FORMAT = "MED",
+ NOM_MED = dico["NOM_MED"],
+ VERI_MAIL = _F(VERIF="NON"), INFO_MED = INFO, INFO = INFO )
+#
+# 4.5.2. ==> Les champs
+#
+ for dico in Liste_Champs :
+ if ( dico["Type_Champ"] == "CHAMP" ) :
+### print dico
+ self.DeclareOut("champ_maj",dico["CHAM_MAJ"])
+ motscsi={}
+ for cle in [ "NUME_ORDRE", "INST", "PRECISION", "CRITERE" ] :
+ if dico.has_key(cle) :
+ if ( dico[cle] != None ) :
+ motscsi[cle] = dico[cle]
+ if dico.has_key("NUME_ORDRE") :
+ motscsi["NUME_PT"] = dico["NUME_ORDRE"]
+ champ_maj = LIRE_CHAMP ( UNITE = Unite_Fichier_HOMARD_vers_ASTER, FORMAT = "MED",
+ MAILLAGE = maillage_np1,
+ NOM_MED = dico["NOM_MED"], NOM_CMP_IDEM = "OUI", TYPE_CHAM = dico["TYPE_CHAM"],
+ INFO = INFO, **motscsi )
+#
+#--------------------------------------------------------------------
+# 5. Menage des fichiers MED et HOMARD devenus inutiles
+#--------------------------------------------------------------------
+#
+ fic = os.path.join(Rep_Calc_HOMARD_global,"MAILL."+str(niter)+".HOM")
+ Liste_aux = [ Fichier_ASTER_vers_HOMARD, Fichier_HOMARD_Entree, fic ]
+ if ( modhom == "ADAP" ) :
+ Liste_aux.append(Fichier_HOMARD_vers_ASTER)
+ Liste_aux.append(Fichier_HOMARD_Sortie)
+#
+ for fic in Liste_aux :
+ if ( INFO > 1 ) : print "Destruction du fichier ", fic
+ if os.path.islink(fic) :
+ try :
+ os.unlink(fic)
+ except os.error,codret_partiel :
+ self.cr.warn("Code d'erreur de unlink : " + str(codret_partiel[0]) + " : " + codret_partiel[1])
+ self.cr.warn("Impossible d'enlever le lien sur le fichier : "+fic)
+ codret = codret + 1
+ if os.path.isfile(fic) :
+ try :
+ os.remove(fic)
+ except os.error,codret_partiel :
+ self.cr.warn("Code d'erreur de remove : " + str(codret_partiel[0]) + " : " + codret_partiel[1])
+ self.cr.warn("Impossible de détruire le fichier : "+fic)
+ codret = codret + 1
+### print os.listdir(Rep_Calc_ASTER)
+### print os.listdir(Rep_Calc_HOMARD_global)
+#
+#--------------------------------------------------------------------
+# 6. C'est fini !
+#--------------------------------------------------------------------
+#
+ return codret
--- /dev/null
+#@ MODIF macr_ascouf_calc_ops Macro DATE 22/11/2004 AUTEUR LEBOUVIE F.LEBOUVIER
+# -*- coding: iso-8859-1 -*-
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+
+
+def macr_ascouf_calc_ops(self,TYPE_MAILLAGE,CL_BOL_P2_GV,MAILLAGE,MODELE,CHAM_MATER,CARA_ELEM,
+ FOND_FISS,CHARGE,RESU_THER,AFFE_MATERIAU,
+ PRES_REP,ECHANGE,TORS_P1,COMP_INCR,COMP_ELAS,
+ SOLVEUR,CONVERGENCE,NEWTON,RECH_LINEAIRE,
+ INCREMENT,THETA_3D,IMPR_TABLE,IMPRESSION,INFO,TITRE ,**args):
+ """
+ Ecriture de la macro MACR_ASCOUF_CALC
+ """
+ from Accas import _F
+ import types
+ import math
+ import aster
+ from math import pi,sin,cos,sqrt,atan2
+ ier=0
+# On recopie les mots cles affe_materiau et impr_table pour les proteger
+ mc_AFFE_MATERIAU=AFFE_MATERIAU
+ mc_IMPR_TABLE =IMPR_TABLE
+ # On importe les definitions des commandes a utiliser dans la macro
+ AFFE_MODELE =self.get_cmd('AFFE_MODELE' )
+ AFFE_MATERIAU =self.get_cmd('AFFE_MATERIAU' )
+ AFFE_CARA_ELEM =self.get_cmd('AFFE_CARA_ELEM' )
+ AFFE_CHAR_THER_F =self.get_cmd('AFFE_CHAR_THER_F')
+ THER_LINEAIRE =self.get_cmd('THER_LINEAIRE' )
+ AFFE_CHAR_MECA =self.get_cmd('AFFE_CHAR_MECA' )
+ STAT_NON_LINE =self.get_cmd('STAT_NON_LINE' )
+ CALC_ELEM =self.get_cmd('CALC_ELEM' )
+ IMPR_RESU =self.get_cmd('IMPR_RESU' )
+ IMPR_TABLE =self.get_cmd('IMPR_TABLE' )
+ DEFI_FOND_FISS =self.get_cmd('DEFI_FOND_FISS' )
+ CALC_THETA =self.get_cmd('CALC_THETA' )
+ CALC_G_THETA_T =self.get_cmd('CALC_G_THETA_T' )
+ CALC_G_LOCAL_T =self.get_cmd('CALC_G_LOCAL_T' )
+ POST_RCCM =self.get_cmd('POST_RCCM' )
+ POST_RELEVE_T =self.get_cmd('POST_RELEVE_T' )
+
+ # La macro compte pour 1 dans la numerotation des commandes
+ self.set_icmd(1)
+#------------------------------------------------------------------
+# DATA
+ GRMAIL = ('COUDE','PEAUINT','PEAUEXT','EXTUBE','CLGV','FACE1','FACE2')
+#------------------------------------------------------------------
+#
+ if CL_BOL_P2_GV!=None :
+ if TYPE_MAILLAGE=='SOUS_EPAIS_COUDE' :
+ print '<A> <MACR_ASCOUF_CALC> la condition aux limites sur bol a section conique'
+ print ' est ignoree pour un coude avec sous-epaisseurs'
+ elif (TYPE_MAILLAGE[:4]!='FISS') and (CL_BOL_P2_GV['AZIMUT']!=None) :
+ ier=ier+1
+ self.cr.fatal("""<E> <MACR_ASCOUF_CALC> mot-cle AZIMUT non autorise dans le cas d''un coude sain""")
+ return ier
+#
+ if mc_IMPR_TABLE!=None :
+ FLAG = 0
+ if (mc_IMPR_TABLE['NOM_PARA']==None) and (mc_IMPR_TABLE['POSI_ANGUL']==None) and (mc_IMPR_TABLE['POSI_CURV_LONGI']==None) :
+ ier=ier+1
+ self.cr.fatal("""<E> <MACR_ASCOUF_CALC> POSI_ANGUL POSI_CURV_LONGI est obligatoire""")
+ return ier
+ if (mc_IMPR_TABLE['NOM_PARA']!=None) :
+ impr_table_nom_para= mc_IMPR_TABLE['NOM_PARA']
+ for impt in impr_table_nom_para :
+ if impt in ('SI_LONG','SI_CIRC','SI_RADI') :
+ FLAG = 1
+ if (((impt['ANGLE']==None) and (impt['POSI_ANGUL']==None) and (impt['R_CINTR' ]==None)) or
+ ((impt['ANGLE']==None) and (impt['R_CINTR' ]==None) and (impt['POSI_CURV_LONGI']==None)) ) :
+ ier=ier+1
+ self.cr.fatal("""<E> <MACR_ASCOUF_CALC> il faut renseigner : ANGLE, R_CINTR et POSI_ANGUL ou ANGLE, R_CINTR et POSI_CURV_LONGI""")
+ return ier
+ if (mc_IMPR_TABLE['NOM_PARA']==None) : FLAG = 1
+ if not FLAG : print '<A> <MACR_ASCOUF_CALC> ANGL_COUDE et ANGL_SOUS_EPAI sont inutiles dans ce cas'
+#
+#------------------------------------------------------------------
+#
+# --- commande AFFE_MODELE ---
+#
+ self.DeclareOut('modele',MODELE)
+ mcfact=[]
+ if (PRES_REP!=None) and (PRES_REP['PRES_LEVRE']=='OUI') and (TYPE_MAILLAGE[:4]=='FISS') :
+ mcfact.append(_F(GROUP_MA=GRMAIL ,PHENOMENE='MECANIQUE',MODELISATION='3D' ))
+ else:
+ mcfact.append(_F(GROUP_MA=GRMAIL[:5] ,PHENOMENE='MECANIQUE',MODELISATION='3D' ))
+ if TORS_P1!=None :
+ mcfact.append(_F(GROUP_MA='P1' ,PHENOMENE='MECANIQUE',MODELISATION='DIS_TR'))
+ if CL_BOL_P2_GV==None :
+ mcfact.append(_F(GROUP_MA='P2' ,PHENOMENE='MECANIQUE',MODELISATION='DIS_TR'))
+ modele = AFFE_MODELE( MAILLAGE = MAILLAGE ,
+ AFFE = mcfact )
+ if ECHANGE!=None : # modele thermique
+ __modthe = AFFE_MODELE( MAILLAGE = MAILLAGE ,
+ AFFE = _F(TOUT ='OUI',
+ PHENOMENE ='THERMIQUE',
+ MODELISATION='3D' ) )
+#------------------------------------------------------------------
+#
+# --- commande AFFE_MATERIAU ---
+#
+ if CHAM_MATER!=None : self.DeclareOut('affmat',CHAM_MATER)
+ mcfact=[]
+ for mater in mc_AFFE_MATERIAU :
+ if mater['TOUT']!=None :
+ mcfact.append(_F(TOUT =mater['TOUT' ],MATER=mater['MATER'],TEMP_REF=mater['TEMP_REF']))
+ rccmat = mater['MATER']
+ else :
+ mcfact.append(_F(GROUP_MA=mater['GROUP_MA'],MATER=mater['MATER'],TEMP_REF=mater['TEMP_REF']))
+ if mater['GROUP_MA'][:5]=='COUDE' :
+ if TORS_P1!=None :
+ mcfact.append(_F(GROUP_MA='P1',MATER=mater['MATER'],TEMP_REF=mater['TEMP_REF']))
+ mcfact.append(_F(GROUP_MA='P2',MATER=mater['MATER'],TEMP_REF=mater['TEMP_REF']))
+ elif (len(mc_AFFE_MATERIAU)==1) and (CL_BOL_P2_GV==None) :
+ mcfact.append(_F(GROUP_MA='P2',MATER=mater['MATER'],TEMP_REF=mater['TEMP_REF']))
+ elif (mater['BOL' ][:3]=='BOL' ) and (CL_BOL_P2_GV==None) :
+ mcfact.append(_F(GROUP_MA='P2',MATER=mater['MATER'],TEMP_REF=mater['TEMP_REF']))
+ affmat = AFFE_MATERIAU( MAILLAGE = MAILLAGE ,
+ MODELE = modele ,
+ AFFE = mcfact )
+#------------------------------------------------------------------
+#
+# --- commande AFFE_CARA_ELEM ---
+#
+ if (TORS_P1!=None) or (CL_BOL_P2_GV==None) :
+ if CARA_ELEM!=None : self.DeclareOut('carael',CARA_ELEM)
+ motscles={}
+ motscles['DISCRET']=[]
+ if (TORS_P1!=None) : motscles['DISCRET'].append(_F( GROUP_MA='P1' ,
+ CARA ='K_TR_D_N',
+ VALE = ( 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 ) ),)
+ if (CL_BOL_P2_GV==None) : motscles['DISCRET'].append(_F( GROUP_MA='P2' ,
+ CARA ='K_TR_D_N',
+ VALE = ( 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 ) ),)
+
+ carael = AFFE_CARA_ELEM( MODELE = modele ,**motscles)
+#
+ if ECHANGE!=None :
+#------------------------------------------------------------------
+#
+# --- commande AFFE_CHAR_THER_F ---
+# condition aux limites
+#
+ __chther = AFFE_CHAR_THER_F( MODELE = __modthe ,
+ ECHANGE= _F(GROUP_MA='PEAUINT',
+ COEF_H =ECHANGE['COEF_H'],
+ TEMP_EXT=ECHANGE['TEMP_EXT'],), )
+#------------------------------------------------------------------
+#
+# --- calcul thermique ---
+#
+ if RESU_THER!=None : self.DeclareOut('resuth',RESU_THER)
+ mcsimp={}
+ if INCREMENT['NUME_INST_INIT']!=None : mcsimp['NUME_INIT']=INCREMENT['NUME_INST_INIT']
+ if INCREMENT['NUME_INST_FIN' ]!=None : mcsimp['NUME_FIN' ]=INCREMENT['NUME_INST_FIN' ]
+ mcfact=_F(LIST_INST=INCREMENT['LIST_INST'],**mcsimp)
+ resuth = THER_LINEAIRE( MODELE = __modthe ,
+ CHAM_MATER = affmat ,
+ TEMP_INIT = _F(STATIONNAIRE='OUI',),
+ EXCIT = _F(CHARGE=__chther,),
+ INCREMENT = mcfact, )
+#
+ if CHARGE!=None : self.DeclareOut('chmeth',CHARGE)
+ chmeth = AFFE_CHAR_MECA( MODELE = modele ,
+ TEMP_CALCULEE = resuth )
+#------------------------------------------------------------------
+#
+# --- commande AFFE_CHAR_MECA ---
+# condition aux limites de type raccord 3d-poutre
+# ou bien blocage de mouvements rigides en cas d embout
+# a section conique, bol de type gv
+#
+ motscles={}
+ motscles['LIAISON_ELEM']=[]
+ if TORS_P1!=None :
+ motscles['LIAISON_ELEM'].append(_F( OPTION ='3D_POU' ,
+ GROUP_MA_1='EXTUBE',
+ GROUP_NO_2='P1') )
+ if CL_BOL_P2_GV==None :
+ motscles['LIAISON_ELEM'].append(_F( OPTION ='3D_POU' ,
+ GROUP_MA_1='CLGV',
+ GROUP_NO_2='P2') )
+ motscles['DDL_IMPO' ]=_F( GROUP_NO ='P2' ,
+ DX = 0.0 ,
+ DY = 0.0 ,
+ DZ = 0.0 ,
+ DRX = 0.0 ,
+ DRY = 0.0 ,
+ DRZ = 0.0 , )
+ else :
+ motscles['FACE_IMPO' ]=_F( GROUP_MA ='CLGV' ,
+ DNOR = 0.0 , )
+ ALPHA = CL_BOL_P2_GV['ANGLE' ]
+ AZIM = CL_BOL_P2_GV['AZIMUT']
+ ALPHAR = ALPHA*pi/180.0
+ AZIMR = AZIM *pi/180.0
+ DDLB1 = []
+ COEFB1 = []
+ if (AZIM!=0.0) and (AZIM!=180.0) and (ALPHA!=90.0) :
+ DDLB1.append('DX')
+ COEFB1.append(SIN(AZIMR)*COS(ALPHAR))
+ if (AZIM!=90.0) :
+ DDLB1.append('DY')
+ COEFB1.append(COS(AZIMR))
+ if (AZIM!=0.) and (AZIM!=180.) and (ALPHA!=0.):
+ DDLB1.append('DZ')
+ COEFB1.append(-SIN(AZIMR)*SIN(ALPHAR))
+ POINT=['BOUT1',]*len(DDLB1)
+ motscles['LIAISON_DDL']=_F( GROUP_NO = POINT ,
+ DDL = DDLB1 ,
+ COEF_MULT = COEFB1 ,
+ COEF_IMPO = 0.0 , )
+
+ __conlim = AFFE_CHAR_MECA( MODELE = modele ,**motscles)
+#
+# --- commande AFFE_CHAR_MECA ---
+# chargement mecanique : pres_rep, effet de fond
+#
+ if PRES_REP!=None :
+ motscles={}
+ if (PRES_REP['PRES_LEVRE']=='OUI') and (TYPE_MAILLAGE[:4]=='FISS') :
+ motscles['PRES_REP']=_F( GROUP_MA = ('PEAUINT','FACE1','FACE2') ,
+ PRES = PRES_REP['PRES'] ,)
+ else :
+ motscles['PRES_REP']=_F( GROUP_MA = 'PEAUINT',
+ PRES = PRES_REP['PRES'] ,)
+ if PRES_REP['EFFE_FOND_P1']!=None :
+ motscles['EFFE_FOND']=_F( GROUP_MA_INT = 'BORDTU' ,
+ GROUP_MA = 'EXTUBE' ,
+ PRES = PRES_REP['PRES'] ,)
+#
+ __chpres = AFFE_CHAR_MECA( MODELE = modele ,**motscles)
+#
+# --- commande AFFE_CHAR_MECA ---
+# chargement mecanique : torseur d efforts
+#
+ if TORS_P1!=None :
+ __chtor = [None]*6
+ i=0
+ for tors in TORS_P1:
+ mcsimp={}
+ if tors['FX']!=None : mcsimp['FX']=tors['FX']
+ if tors['FY']!=None : mcsimp['FY']=tors['FY']
+ if tors['FZ']!=None : mcsimp['FZ']=tors['FZ']
+ if tors['MX']!=None : mcsimp['MX']=tors['MX']
+ if tors['MY']!=None : mcsimp['MY']=tors['MY']
+ if tors['MZ']!=None : mcsimp['MZ']=tors['MZ']
+ mcfact=_F(GROUP_NO='P1',**mcsimp)
+ __chtor[i] = AFFE_CHAR_MECA( MODELE = modele ,
+ FORCE_NODALE = mcfact , )
+ i=i+1
+#
+# --- commande STAT_NON_LINE ---
+#
+ motscles={}
+#
+ mcfex=[] # mot clé facteur EXCIT
+ mcfex.append(_F(CHARGE=__conlim,))
+ if ECHANGE!=None :
+ mcfex.append(_F(CHARGE=chmeth,))
+ if PRES_REP!=None:
+ if PRES_REP['FONC_MULT']!=None :
+ mcfex.append(_F(CHARGE=__chpres,FONC_MULT=PRES_REP['FONC_MULT']))
+ else :
+ mcfex.append(_F(CHARGE=__chpres,))
+ if TORS_P1!=None:
+ i=0
+ for tors in TORS_P1 :
+ if tors['FONC_MULT']!=None :
+ mcfex.append(_F(CHARGE=__chtor[i],FONC_MULT=tors['FONC_MULT']))
+ else :
+ mcfex.append(_F(CHARGE=__chtor[i],))
+ i=i+1
+ motscles['EXCIT'] =mcfex
+#
+ mcfci=[] # mot clé facteur COMP_INCR :obligatoire pour les noeuds discrets
+ if COMP_INCR!=None :
+ mcfci.append(_F(TOUT='OUI' ,RELATION=COMP_INCR['RELATION']))
+ elif COMP_ELAS!=None :
+ motscles['COMP_ELAS'] =_F(GROUP_MA='COUDE',RELATION=COMP_ELAS['RELATION'])
+ if TORS_P1!=None : mcfci.append( _F(GROUP_MA='P1',RELATION='ELAS'))
+ if CL_BOL_P2_GV==None: mcfci.append( _F(GROUP_MA='P2',RELATION='ELAS'))
+ motscles['COMP_INCR'] =mcfci
+#
+ dSolveur=SOLVEUR[0].cree_dict_valeurs(SOLVEUR[0].mc_liste)
+ for i in dSolveur.keys():
+ if dSolveur[i]==None : del dSolveur[i]
+#
+ dConverg=CONVERGENCE[0].cree_dict_valeurs(CONVERGENCE[0].mc_liste)
+ for i in dConverg.keys():
+ if dConverg[i]==None : del dConverg[i]
+#
+ dNewton=NEWTON[0].cree_dict_valeurs(NEWTON[0].mc_liste)
+ for i in dNewton.keys():
+ if dNewton[i]==None : del dNewton[i]
+#
+ dRechlin=RECH_LINEAIRE[0].cree_dict_valeurs(RECH_LINEAIRE[0].mc_liste)
+ for i in dRechlin.keys():
+ if dRechlin[i]==None : del dRechlin[i]
+#
+ dIncrem=INCREMENT[0].cree_dict_valeurs(INCREMENT[0].mc_liste)
+ for i in dIncrem.keys():
+ if dIncrem[i]==None : del dIncrem[i]
+#
+ if TITRE!=None :
+ motscles['TITRE' ] =TITRE
+ motscles ['SOLVEUR' ] =dSolveur
+ motscles ['CONVERGENCE' ] =dConverg
+ motscles ['NEWTON' ] =dNewton
+ motscles ['RECH_LINEAIRE'] =dRechlin
+ motscles ['INCREMENT' ] =dIncrem
+ self.DeclareOut('nomres',self.sd)
+ nomres = STAT_NON_LINE( MODELE = modele ,
+ CHAM_MATER = affmat ,
+ CARA_ELEM = carael ,
+ INFO = INFO , **motscles)
+#
+# --- commande CALC_ELEM ---
+#
+ nomres = CALC_ELEM( reuse = nomres,
+ RESULTAT = nomres ,
+ MODELE = modele ,
+ TOUT_ORDRE = 'OUI' ,
+ OPTION = ('SIEF_ELNO_ELGA','EQUI_ELNO_SIGM') ,
+ INFO = INFO ,)
+#
+# --- post-traitements ---
+#
+ if TYPE_MAILLAGE=='SOUS_EPAIS_COUDE':
+#
+# --- post traitement sous-epaisseurs: ligaments ---
+#
+ if mc_IMPR_TABLE!=None:
+#
+ SECT=('MI','TU','GV')
+ LIG=('FDRO','EXDR','EXTR','EXGA','FGAU','INGA','INTR','INDR')
+ if mc_IMPR_TABLE['POSI_ANGUL']==None:
+ ASEP=(mc_IMPR_TABLE['POSI_CURV_LONGI']/mc_IMPR_TABLE['R_CINTR'])*(180./pi)
+ else :
+ ASEP=mc_IMPR_TABLE['POSI_ANGUL']
+#
+# moyenne_rccm, invariant et moyenne sur les ligaments dans
+# l epaisseur
+#
+ l_grno=MAILLAGE.LIST_GROUP_NO()
+ tablig=[None]*4
+#
+# prelevements des ligaments circonferentiels et longitudinaux
+# de la sous-epaisseur
+#
+ lgrno=[]
+ for tgrno in l_grno :
+ if tgrno[0][:3] in ('CIR','LON') : lgrno.append(tgrno[0])
+ elif tgrno[0][:5]=='PCENT' : lgrno.append(tgrno[0])
+ elif (tgrno[0][:4] in LIG) and (tgrno[0][4:6] not in ('GV','TU','MI')): lgrno.append(tgrno[0])
+#
+ motscles={}
+ motscles['SEGMENT']=[]
+ for grno in lgrno : motscles['SEGMENT'].append(_F(INTITULE=grno,GROUP_NO=grno))
+ motscles['TITRE']='TABLE DE POST-TRAITEMENT SECTION SOUS-EPAISSEUR'
+ tablig[1]=POST_RCCM(MATER = rccmat,
+ MAILLAGE = MAILLAGE,
+ TYPE_RESU_MECA = 'EVOLUTION',
+ OPTION = 'PM_PB',
+ TRANSITOIRE=_F(RESULTAT=nomres,
+ NOM_CHAM='SIEF_ELNO_ELGA',),**motscles)
+#
+ motscles={}
+ motscles['ACTION']=[]
+ for tgrno in lgrno :
+ motscles['ACTION'].append(_F(RESULTAT=nomres,
+ NOM_CHAM='SIEF_ELNO_ELGA',
+ INTITULE=tgrno,
+ GROUP_NO=tgrno,
+ INVARIANT='OUI',
+ OPERATION='EXTRACTION',))
+ motscles['TITRE']='TABLE DE POST-TRAITEMENT SECTION SOUS-EPAISSEUR'
+
+ tablig[2]=POST_RELEVE_T(**motscles)
+#
+ motscles={}
+ nommail=MAILLAGE.nom
+ coord =aster.getvectjev(nommail.ljust(8)+'.COORDO .VALE')
+ linomno =aster.getvectjev(nommail.ljust(8)+'.NOMNOE')
+ collgrno=aster.getcolljev(nommail.ljust(8)+'.GROUPENO')
+
+ motscles['ACTION']=[]
+ for tgrno in lgrno :
+ if tgrno[:3]!='LON' :
+ if mc_IMPR_TABLE['TRANSFORMEE']=='TUBE': vecty=(0.,0.,1.)
+ else : vecty=(sin(ASEP*pi/180.),0.,cos(ASEP*pi/180.))
+ else :
+ if mc_IMPR_TABLE['TRANSFORMEE']=='TUBE': vecty=(0.,0.,1.)
+ else :
+ grpn=collgrno['FGAUTU ']
+ LT1=coord[3*(grpn[0]-1)+2]
+ for node in grpn:
+ X = coord[3*(node-1)]
+ Y = coord[3*(node-1)+1]
+ Z = coord[3*(node-1)+2]
+ RCIN = mc_IMPR_TABLE['R_CINTR']
+ if Z<LT1 : ANGSEC=0.
+ elif X<(-1*RCIN) : ANGSEC=mc_IMPR_TABLE['ANGLE']*pi/180.
+ else :
+ VCOS = cos((-LT1-Z)/(sqrt((X+RCIN)**2+Y**2 )))
+ VSIN = sin((-LT1-Z)/(sqrt((X+RCIN)**2+Y**2 )))
+ ANGSEC = atan2(VSIN,VCOS)
+ vecty=(sin(ANGSEC),0.,cos(ANGSEC))
+ motscles['ACTION'].append(_F(RESULTAT=nomres,
+ NOM_CHAM='SIEF_ELNO_ELGA',
+ INTITULE=tgrno,
+ GROUP_NO=tgrno,
+ NOM_CMP=('SIXX','SIYY','SIZZ','SIXY','SIXZ','SIYZ',),
+ REPERE='LOCAL',
+ VECT_Y=vecty,
+ OPERATION='MOYENNE',))
+ motscles['TITRE']='TABLE DE POST-TRAITEMENT SECTION SOUS-EPAISSEUR'
+ tablig[3]=POST_RELEVE_T(**motscles)
+#
+# prelevements des ligaments sur les sections MI,TU et GV
+# les 8 ligaments sont tous les 45 degres
+#
+ ACOUR = mc_IMPR_TABLE['ANGLE']*pi/180.0
+ secrcm=[None]*3
+ secinv=[None]*3
+ secmoy=[None]*3
+ for i in range(3):
+ if mc_IMPR_TABLE['TRANSFORMEE']=='TUBE': vecty=(0.,0.,1.)
+ else :
+ if i==0 : vecty=(sin(ACOUR/2.),0.,cos(ACOUR/2.))
+ if i==1 : vecty=(0.,0.,1.)
+ if i==2 : vecty=(sin(ACOUR),0.,cos(ACOUR))
+ motscles = {}
+ motscles['TITRE']='TABLE DE POST-TRAITEMENT MOYENNE RCCM SECTION '+SECT[i]
+#
+# moyenne RCCM sur les sections MI,TU et GV
+#
+ motscles['SEGMENT']=[]
+ for j in range(8) : motscles['SEGMENT'].append(_F(INTITULE=LIG[j]+SECT[i],
+ GROUP_NO=LIG[j]+SECT[i]))
+ secrcm[i] = POST_RCCM( MAILLAGE = MAILLAGE ,
+ MATER = rccmat ,
+ TYPE_RESU_MECA = 'EVOLUTION' ,
+ OPTION = 'PM_PB' ,
+ TRANSITOIRE = _F(RESULTAT = nomres,NOM_CHAM='SIEF_ELNO_ELGA'),
+ **motscles)
+#
+# invariants sur les sections MI,TU et GV
+#
+ motscles = {}
+ motscles['TITRE']='TABLE DE POST-TRAITEMENT INVARIANTS SECTION '+SECT[i]
+ motscles['ACTION']=[]
+ for j in range(8) : motscles['ACTION'].append(_F(INTITULE =LIG[j]+SECT[i],
+ GROUP_NO =LIG[j]+SECT[i],
+ RESULTAT =nomres,
+ NOM_CHAM ='SIEF_ELNO_ELGA',
+ INVARIANT='OUI',
+ OPERATION='EXTRACTION'))
+ secinv[i] = POST_RELEVE_T(**motscles)
+#
+# moyennes contraintes sur les sections MI,TU et GV
+#
+ motscles = {}
+ motscles['TITRE']='TABLE DE POST-TRAITEMENT MOYENNE SECTION '+SECT[i]
+ motscles['ACTION']=[]
+ for j in range(8) : motscles['ACTION'].append(_F(INTITULE =LIG[j]+SECT[i],
+ REPERE ='LOCAL',
+ VECT_Y =vecty,
+ GROUP_NO =LIG[j]+SECT[i],
+ RESULTAT =nomres,
+ NOM_CHAM ='SIEF_ELNO_ELGA',
+ NOM_CMP =('SIXX','SIYY','SIZZ','SIXY','SIXZ','SIYZ'),
+ OPERATION='MOYENNE'))
+ secmoy[i] = POST_RELEVE_T(**motscles)
+
+#
+# impression des valeurs maximales pour chaque sous-epaisseur
+#
+ if mc_IMPR_TABLE['TOUT_PARA']=='OUI' :
+ list_para=['TRESCA_MEMBRANE','TRESCA_MFLE','TRESCA','SI_LONG','SI_RADI','SI_CIRC']
+ else : list_para=mc_IMPR_TABLE['NOM_PARA']
+ if 'TRESCA_MEMBRANE' in list_para:
+ IMPR_TABLE(TABLE = tablig[1],
+ FILTRE = _F( NOM_PARA ='PM', CRIT_COMP ='MAXI'),
+ NOM_PARA = ('INTITULE','PM'));
+ if 'TRESCA_MFLE' in list_para:
+ IMPR_TABLE(TABLE = tablig[1],
+ FILTRE =(_F( NOM_PARA ='LIEU',VALE_K ='ORIG'),
+ _F( NOM_PARA ='PMB', CRIT_COMP='MAXI'),),
+ NOM_PARA = ('INTITULE','PMB'));
+ IMPR_TABLE(TABLE = tablig[1],
+ FILTRE =(_F( NOM_PARA='LIEU', VALE_K ='EXTR'),
+ _F( NOM_PARA ='PMB', CRIT_COMP='MAXI'),),
+ NOM_PARA = ('INTITULE','PMB'));
+ if 'SI_RADI' in list_para:
+ IMPR_TABLE(TABLE = tablig[3],
+ FILTRE =(_F( NOM_PARA='QUANTITE',VALE_K ='MOMENT_0'),
+ _F( NOM_PARA ='SIXX', CRIT_COMP='MAXI'),),
+ NOM_PARA = ('INTITULE','SIXX'));
+ if 'SI_LONG' in list_para:
+ IMPR_TABLE(TABLE = tablig[3],
+ FILTRE =(_F( NOM_PARA='QUANTITE',VALE_K ='MOMENT_0'),
+ _F( NOM_PARA ='SIYY', CRIT_COMP='MAXI'),),
+ NOM_PARA = ('INTITULE','SIYY'));
+ if 'SI_CIRC' in list_para:
+ IMPR_TABLE(TABLE = tablig[3],
+ FILTRE =(_F( NOM_PARA='QUANTITE',VALE_K ='MOMENT_0'),
+ _F( NOM_PARA ='SIZZ', CRIT_COMP='MAXI'),),
+ NOM_PARA = ('INTITULE','SIZZ'));
+ if 'TRESCA' in list_para:
+ IMPR_TABLE(TABLE = tablig[2],
+ NOM_PARA = ('INTITULE','NOEUD','TRESCA',),
+ PAGINATION = 'INTITULE',
+ FILTRE = _F( NOM_PARA = 'TRESCA',
+ CRIT_COMP = 'MAXI' ) ) ;
+#
+# impression des resultats pour chaque sous-epaisseur
+#
+ if 'TRESCA_MEMBRANE' in list_para:
+ IMPR_TABLE(TABLE = tablig[1],
+ FILTRE = _F( NOM_PARA='LIEU', VALE_K ='ORIG'),
+ NOM_PARA = ('INTITULE','PM'));
+ if 'TRESCA_MFLE' in list_para:
+ IMPR_TABLE(TABLE = tablig[1],
+ FILTRE = _F( NOM_PARA='LIEU', VALE_K ='ORIG'),
+ NOM_PARA = ('INTITULE','PMB'));
+ IMPR_TABLE(TABLE = tablig[1],
+ FILTRE = _F( NOM_PARA='LIEU', VALE_K ='EXTR'),
+ NOM_PARA = ('INTITULE','PMB'));
+ if 'SI_RADI' in list_para:
+ IMPR_TABLE(TABLE = tablig[3],
+ FILTRE = _F( NOM_PARA='QUANTITE', VALE_K ='MOMENT_0'),
+ NOM_PARA = ('INTITULE','SIXX'));
+ if 'SI_LONG' in list_para:
+ IMPR_TABLE(TABLE = tablig[3],
+ FILTRE = _F( NOM_PARA='QUANTITE', VALE_K ='MOMENT_0'),
+ NOM_PARA = ('INTITULE','SIYY'));
+ if 'SI_CIRC' in list_para:
+ IMPR_TABLE(TABLE = tablig[3],
+ FILTRE = _F( NOM_PARA='QUANTITE', VALE_K ='MOMENT_0'),
+ NOM_PARA = ('INTITULE','SIZZ'));
+ if 'TRESCA' in list_para:
+ IMPR_TABLE(TABLE = tablig[2],
+ NOM_PARA = ('INTITULE','NOEUD','TRESCA',),
+ PAGINATION = 'INTITULE');
+#
+# impression des resultats pour les sections MI, TU et GV
+#
+ for k in range(3):
+ if 'TRESCA_MEMBRANE' in list_para:
+ IMPR_TABLE(TABLE = secrcm[k],
+ FILTRE = _F( NOM_PARA='LIEU', VALE_K ='ORIG'),
+ NOM_PARA = ('INTITULE','PM'));
+ if 'TRESCA_MFLE' in list_para:
+ IMPR_TABLE(TABLE = secrcm[k],
+ FILTRE = _F( NOM_PARA='LIEU', VALE_K ='ORIG'),
+ NOM_PARA = ('INTITULE','PMB'));
+ IMPR_TABLE(TABLE = secrcm[k],
+ FILTRE = _F( NOM_PARA='LIEU', VALE_K ='EXTR'),
+ NOM_PARA = ('INTITULE','PMB'));
+ if 'SI_RADI' in list_para:
+ IMPR_TABLE(TABLE = secmoy[k],
+ FILTRE = _F( NOM_PARA='QUANTITE', VALE_K ='MOMENT_0'),
+ NOM_PARA = ('INTITULE','SIXX'));
+ if 'SI_LONG' in list_para:
+ IMPR_TABLE(TABLE = secmoy[k],
+ FILTRE = _F( NOM_PARA='QUANTITE', VALE_K ='MOMENT_0'),
+ NOM_PARA = ('INTITULE','SIYY'));
+ if 'SI_CIRC' in list_para:
+ IMPR_TABLE(TABLE = secmoy[k],
+ FILTRE = _F( NOM_PARA='QUANTITE', VALE_K ='MOMENT_0'),
+ NOM_PARA = ('INTITULE','SIZZ'));
+ if 'TRESCA' in list_para:
+ IMPR_TABLE(TABLE = secinv[k],
+ NOM_PARA = ('INTITULE','NOEUD','TRESCA',),
+ PAGINATION = 'INTITULE');
+#
+ if TYPE_MAILLAGE in ('FISS_COUDE','FISS_AXIS_DEB'):
+#
+# --- post traitement fissure : calcul de g ----
+#
+ motscles = {}
+ if FOND_FISS != None : self.DeclareOut('fonfis',FOND_FISS)
+ if TYPE_MAILLAGE =='FISS_COUDE' :
+ motscles['FOND_FISS']=_F(GROUP_NO='FONDFISS')
+ motscles['VECT_GRNO_ORIG']= ('PFOR','THOR')
+ motscles['VECT_GRNO_EXTR']= ('PFEX','THEX')
+ else :
+ motscles['FOND_FERME']=_F(GROUP_MA='FONDFISS',
+ GROUP_NO_ORIG='PFOR',
+ GROUP_MA_ORIG='MAIL_ORI')
+ fonfis=DEFI_FOND_FISS(MAILLAGE=MAILLAGE,
+ LEVRE_SUP=_F(GROUP_MA='FACE1'),
+ LEVRE_INF=_F(GROUP_MA='FACE2'),
+ INFO=2,**motscles
+ );
+ if THETA_3D!=None :
+ for thet in THETA_3D:
+ _nothet=CALC_THETA(MODELE=modele,
+ FOND_FISS=fonfis,
+ THETA_3D=_F(TOUT = 'OUI',
+ MODULE = 1.,
+ R_INF = thet['R_INF'],
+ R_SUP = thet['R_SUP'],),
+ );
+ motscles = {}
+ if COMP_INCR!=None : motscles['COMP_INCR']=_F(RELATION=COMP_INCR['RELATION'])
+ if COMP_ELAS!=None : motscles['COMP_ELAS']=_F(RELATION=COMP_ELAS['RELATION'])
+ _nogthe=CALC_G_THETA_T(
+ RESULTAT =nomres,
+ TOUT_ORDRE ='OUI',
+ THETA =_nothet,
+ **motscles
+ );
+#
+ IMPR_TABLE(TABLE=_nogthe,);
+#
+ for thet in THETA_3D:
+ motscles = {}
+ if COMP_INCR!=None : motscles['COMP_INCR']=_F(RELATION=COMP_INCR['RELATION'])
+ if COMP_ELAS!=None : motscles['COMP_ELAS']=_F(RELATION=COMP_ELAS['RELATION'])
+ if TYPE_MAILLAGE =='FISS_COUDE' :
+ motscles['LISSAGE_THETA']='LEGENDRE'
+ motscles['LISSAGE_G'] ='LEGENDRE'
+ elif TYPE_MAILLAGE =='FISS_AXIS_DEB' :
+ motscles['LISSAGE_THETA']='LAGRANGE'
+ motscles['LISSAGE_G'] ='LAGRANGE'
+ _nogloc=CALC_G_LOCAL_T(MODELE =modele,
+ RESULTAT =nomres,
+ TOUT_ORDRE ='OUI',
+ CHAM_MATER =affmat,
+ FOND_FISS =fonfis,
+ DEGRE = 4,
+ R_INF = thet['R_INF'],
+ R_SUP = thet['R_SUP'],
+ **motscles
+ );
+
+ IMPR_TABLE(TABLE=_nogloc,);
+#
+# --- commande IMPR_RESU ---
+#
+ if IMPRESSION!=None:
+ mcfresu =[]
+ motscles={}
+ if IMPRESSION['FORMAT']=='IDEAS' :
+ motscles['VERSION' ]= IMPRESSION['VERSION']
+ if IMPRESSION['FORMAT']=='CASTEM' :
+ motscles['NIVE_GIBI' ]= IMPRESSION['NIVE_GIBI']
+ mcfresu.append(_F(MAILLAGE=MAILLAGE,RESULTAT=nomres,))
+ if ECHANGE!=None:
+ motscles={}
+ if IMPRESSION['FORMAT']=='IDEAS' :
+ motscles['VERSION' ]= IMPRESSION['VERSION']
+ if IMPRESSION['FORMAT']=='CASTEM' :
+ motscles['NIVE_GIBI' ]= IMPRESSION['NIVE_GIBI']
+ mcfresu.append(_F(RESULTAT=resuth,))
+ IMPR_RESU( MODELE = modele,
+ RESU = mcfresu,
+ FORMAT=IMPRESSION['FORMAT'],**motscles)
+#
+ return ier
--- /dev/null
+#@ MODIF macr_ascouf_mail_ops Macro DATE 24/05/2006 AUTEUR CIBHHLV L.VIVAN
+# -*- coding: iso-8859-1 -*-
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+
+
+import os.path
+from math import sqrt,cos,sin,pi,tan,log,fabs,ceil,fmod,floor
+
+# ------------------------------------------------------------------------------
+def ASCFON(RC,RM,EP,ORIEN,AZIM,AXEC,POS,Y):
+ """
+ FONCTION F(CP)=CC
+ OU CC EST LA TAILLE DE LA FISSURE SUR LE COUDE
+ ET CP LA TAILLE DE FISSURE SUR LA PLAQUE
+ """
+ AZIMR = AZIM*2.*pi/360.
+ if POS=='DEB_INT': X = RM-EP/2.
+ else : X = RM+EP/2.
+ if abs(ORIEN-45.0)<0.01: SIG = 1.
+ else : SIG = -1.
+ f_ASCFON = - SIG*X*RC/(2.*RM*sin(AZIMR)) * ( \
+ log ( RM/X+RM/RC*(cos(AZIMR)- \
+ sin(AZIMR)*SIG*Y/(sqrt(2.)*RM)) + \
+ sqrt( 1.+( RM/X+RM/RC*(cos(AZIMR)- \
+ sin(AZIMR)*SIG*Y/(sqrt(2.)*RM)) )**2 ) \
+ ) \
+ - log ( RM/X+RM/RC*cos(AZIMR) \
+ + sqrt( 1. +(RM/X+RM/RC*cos(AZIMR))**2) \
+ ) ) \
+ - SIG*X*RC/(2.*RM*SIN(AZIMR)) * \
+ ( ( RM/X+RM/RC* ( cos(AZIMR)- \
+ sin(AZIMR)*SIG*Y/(sqrt(2.0)*RM) ) \
+ ) * sqrt( 1. + ( RM/X+RM/RC*(cos(AZIMR)- \
+ sin(AZIMR)*SIG*Y/(SQRT(2.)*RM)) )**2 ) \
+ - ( RM/X+RM/RC*COS(AZIMR) ) \
+ * sqrt( 1. +(RM/X+RM/RC*cos(AZIMR))**2) \
+ ) \
+ - 2.0*AXEC
+ return f_ASCFON
+
+# ------------------------------------------------------------------------------
+def ASCFIS(ALPHA, RM, RC, EP, SUREP, GEOM, AXEA,
+ AXEC, AZIM, POS, SF, DSF, BETA, ORIEN):
+ """
+ MACR_ASCOUF_MAIL ASCFIS
+ taille initiale du defaut fissure sur la plaque en
+ fonction des donnees sur le coude ou le tube suivant la
+ transformation choisie
+
+ ------------DONNEES FOURNIES PAR L UTILISATEUR--------------------
+
+ ALPHA = ANGLE DU COUDE
+ RM = RAYON MOYEN DU COUDE
+ RC = RAYON DE CINTRAGE DU COUDE
+ EP = EPAISSEUR DU COUDE
+ SUREP = VALEUR DE LA SUREPAISSEUR
+ GEOM = TYPE DE GEOMETRIE MODELISEE (COUDE OU TUBE)
+ AXEA = PROFONDEUR FISSURE (DEMI PETIT AXE)
+ AXEC = DEMI GRAND AXE FISSURE
+ AZIM = POSITION AZIMUTALE DU CENTRE DE LA FISSURE
+ POS = POSITION EN PEAU (EXTERNE OU INTERNE)
+ SF = ABCISSE CURVILIGNE LONGITUDINALE DU CENTRE DE LA FISSURE
+ DSF = BOOLEEN EXPRESSION POSITION CENTRE FISSURE
+ BETA = POSITION ANGULAIRE DU CENTRE DE LA FISSURE
+ ORIEN = ORIENTATION DE LA FISSURE
+
+ -----------------DONNEES RENVOYEES-----------------------
+
+ AXEAP = PROFONDEUR DE LA FISSURE (PETIT AXE) SUR LA PLAQUE
+ AXECP = LONGUEUR DE LA FISSURE (GRAND AXE) SUR LA PLAQUE
+ SFP = ABCISSE CURVILIGNE LONGITUDINALE CENTRE FISSURE
+ SUR LA PLAQUE
+
+ """
+ from Utilitai import funct_root
+ if POS=='DEB_INT':
+ if (AZIM>=120.) and (AZIM<=240.0): X = RM-EP/2.0 - SUREP
+ else: X = RM-EP/2.0
+ else: X = RM+EP/2.0
+ AZIMR = AZIM*2.0*pi/360.0
+#
+# -- CALCUL COTE AXIALE DU CENTRE FISSURE SUR LA PLAQUE EN FONCTION
+# DE L ABSCISSE CURVILIGNE DONNEE SUR LE COUDE OU DE LA POSITION
+# ANGULAIRE
+#
+ if DSF:
+ if GEOM=='COUDE': SFP = SF/(1.0+X/RC*cos(AZIMR))
+ else : SFP = SF
+ else :
+ BETAR = BETA*2.0*pi/360.0
+ if (GEOM=='COUDE'):
+ SF = BETAR*(RC+X*cos(AZIMR))
+ SFP = SF/(1.0+X/RC*cos(AZIMR))
+ else:
+ SF = BETAR*RC
+ SFP = SF
+ if (GEOM=='COUDE'): print 'COTE AXIALE CENTRE FISSURE SUR COUDE : %.2f'%SF
+ if (GEOM=='TUBE') : print 'COTE AXIALE CENTRE FISSURE SUR TUBE : %.2f'%SF
+ print 'COTE AXIALE CENTRE FISSURE SUR PLAQUE : %.2f'%SFP
+#
+# ON ENVISAGE LE CAS OU UNE PARTIE DE L AXE EST DANS LES
+# DROITES DES EMBOUTS. LA TRANSFORMATION N EST FAITE QUE SUR LA
+# PARTIE RESTANT DANS LE COUDE.
+#
+ if (GEOM=='COUDE'): DIST = ALPHA*2.0*pi/360.0*(RC+X*cos(AZIMR))
+ else : DIST = ALPHA*2.0*pi/360.0*RC
+ BCOUD = 0.0
+ BEMB = 0.0
+ if abs(ORIEN)<0.01:
+# -- FISSURE LONGITUDINALE (0 DEGRE)
+ BSUP = SF + AXEC
+ BINF = SF - AXEC
+ if BSUP>DIST:
+ BCOUD = DIST - BINF
+ BEMB = BSUP - DIST
+ elif BINF<0. :
+ BCOUD = BSUP
+ BEMB = abs(BINF)
+ elif (BINF>=0. and BSUP<=DIST):
+ BCOUD = 2.0*AXEC
+ elif abs(ORIEN-90.)<0.01:
+# -- FISSURE CIRCONFERENTIELLE (90 DEGRES)
+ BSUP = SF
+ BINF = SF
+ if BSUP>DIST:
+ BCOUD = DIST - BINF
+ BEMB = BSUP - DIST
+ elif BINF<0. :
+ BCOUD = BSUP
+ BEMB = abs(BINF)
+ elif (BINF>=0. and BSUP<=DIST):
+ BCOUD = 2.0*AXEC
+ else:
+# -- FISSURE A +/- 45 DEGRES SUR INTRADOS OU EXTRADOS
+ BSUP = SF + sqrt(2.0)/2.0*AXEC
+ BINF = SF - sqrt(2.0)/2.0*AXEC
+ if BSUP>DIST:
+ BCOUD = (DIST - BINF)*sqrt(2.0)
+ BEMB = (BSUP - DIST)*sqrt(2.0)
+ elif BINF<0. :
+ BCOUD = BSUP *sqrt(2.0)
+ BEMB = abs(BINF)*sqrt(2.0)
+ elif (BINF>=0. and BSUP<=DIST):
+ BCOUD = 2.0*AXEC
+ print 'PARTIE DU GRAND AXE DANS LE COUDE : %.2f'%BCOUD
+ print 'PARTIE DU GRAND AXE DANS L EMBOUT : %.2f'%BEMB
+#
+# -- CALCUL DE LA TAILLE DU GRAND AXE FISSURE SUR LA PLAQUE
+#
+ NEWT=0
+ if abs(ORIEN)<0.01:
+# -- FISSURE LONGITUDINALE (0 DEGRE)
+ if GEOM=='COUDE': AXECP = BCOUD/(1.0+X/RC*cos(AZIMR)) + BEMB
+ else : AXECP = BCOUD + BEMB
+ elif abs(ORIEN-90.)<0.01:
+# -- FISSURE CIRCONFERENTIELLE (90 DEGRES)
+ AXECP = (BCOUD+BEMB)*RM/X
+ else :
+ if GEOM=='COUDE':
+# ------- TRANSFORMATION COUDE
+ if AZIM in (0.,180.):
+# -- FISSURE A +/- 45 DEGRES SUR INTRADOS OU EXTRADOS
+ AXECP = BCOUD*RM*sqrt(2.)/( X*sqrt(1.+(RM/X+RM/RC*cos(AZIMR))**2) )+\
+ BEMB*sqrt( (1.0+(X/RM)**2)*0.5 )
+ else :
+# -- FISSURE A +/- 45 DEGRES AILLEURS
+ AXECP = funct_root.root(ASCFON,(BCOUD-1.,BCOUD+1.))
+ AXECP = AXECP + BEMB*sqrt( (1.+(X/RM)**2)*0.5 )
+ AXECC = ASCFON(AXECP)+BCOUD
+ NEWT=1
+ elif GEOM=='TUBE':
+ AXECP = (BCOUD+BEMB)*sqrt( (1.+(X/RM)**2)*0.5 )
+ else :
+ AXECP = BCOUD + BEMB
+#
+ if GEOM=='COUDE':
+ print 'TAILLE GRAND AXE COUDE DONNE : %.2f'%(2.*AXEC)
+ elif GEOM=='TUBE':
+ print 'TAILLE GRAND AXE TUBE DONNE : %.2f'%(2.*AXEC)
+ print 'TAILLE GRAND AXE PLAQUE DEDUIT : %.2f'%AXECP
+ if NEWT:
+ print 'METHODE DE NEWTON FISSURE A 45 DEGRES -->'
+ print 'TAILLE GRAND AXE COUDE RECALCULE : %.2f'%AXECC
+ if GEOM=='COUDE' and BEMB>0. and BSUP>DIST :
+ SFP = ALPHA*2.*pi*RC/360. - AXECP/2. + BEMB
+ print 'CORRECTION CENTRE : FISSURE A CHEVAL SUR EMBOUT'
+ print 'ABSC. CURV. AXIALE CENTRE FISSURE SUR PLAQUE : %.2f'%SFP
+ if GEOM=='COUDE' and BEMB>0. and BINF<0. :
+ SFP = + AXECP/2. - BEMB
+ print 'CORRECTION CENTRE : FISSURE A CHEVAL SUR EMBOUT'
+ print 'ABSC. CURV. AXIALE CENTRE FISSURE SUR PLAQUE : %.2f'%SFP
+#
+# -- CORRECTION DU PETIT AXE DE LA FISSURE QUAND CELLE-CI SE TROUVE SUR
+# LA ZONE DE SUREPAISSEUR
+#
+ ALPHAR = ALPHA*2.*pi/360.
+ ZSUR1 = ALPHAR*RC/10.
+ ZSUR2 = ALPHAR*RC*9./10.
+ YFISS = (AZIMR-pi/2.)*RM
+ MU = 0.
+ if (AZIM>=120.) and (AZIM<=240.):
+ if (SFP>=ZSUR1) and (SFP<=ZSUR2): MU = 1.
+ elif (SFP<=ZSUR1): MU = SFP/ZSUR1
+ elif (SFP>ZSUR2): MU = (ALPHAR*RC-SFP)/ZSUR1
+ elif (AZIM>=90.) and (AZIM<=120.):
+ if (SFP>=ZSUR1) and (SFP<=ZSUR2): MU = YFISS/(pi/6.*RM)
+ elif (SFP<=ZSUR1): MU = YFISS*SFP/(pi/6.*RM*ZSUR1)
+ elif (SFP>ZSUR2): MU = YFISS*(ALPHAR*RC-SFP)/(pi/6.*RM*ZSUR1)
+ elif (AZIM>=240.) and (AZIM<=270.):
+ if (SFP>=ZSUR1) and (SFP<=ZSUR2): MU = (YFISS-5.*pi/6.*RM)/(pi/6.*RM)
+ elif (SFP<=ZSUR1): MU = (YFISS-5.*pi/6.*RM)*SFP/(pi/6.*RM*ZSUR1)
+ elif (SFP>ZSUR2): MU = (YFISS-5.*pi/6.*RM)*(ALPHAR*RC-SFP)/(pi/6.*RM*ZSUR1)
+#
+ if SUREP!=0.:
+ AXEAP = AXEA * EP / ( EP + MU*SUREP )
+ print '--> CORRECTION DUE A LA SUREPAISSEUR'
+ print '--> TAILLE PETIT AXE PLAQUE : %.2f'%AXEAP
+ else: AXEAP = AXEA
+#
+ return AXEAP,AXECP,SFP
+
+
+# ------------------------------------------------------------------------------
+def ASCSEP(MCL_SOUS_EPAIS,ALPHA,RM,RC,EP,GEOM,SYME):
+ """
+ MACR_ASCOUF_MAIL ASCSEP
+ taille initiale sur la plaque des sous-epaisseurs
+
+ ------------DONNEES FOURNIES PAR L UTILISATEUR--------------------
+
+ ALPHA = ANGLE DU COUDE
+ RM = RAYON MOYEN DU COUDE
+ RC = RAYON DE CINTRAGE DU COUDE
+ EP = EPAISSEUR DU COUDE
+ GEOM = TYPE DE GEOMETRIE MODELISEE (COUDE OU TUBE)
+ SYME = QUART DE STRUCTURE SI 'OUI'
+
+ """
+ ier=0
+ CG=pi/180.
+#
+# --- BOUCLE SUR L ENSEMBLE DES SOUS-EPAISSEURS
+#
+ i=0
+ for ssep in MCL_SOUS_EPAIS :
+ i=i+1
+ print '-------------------------------------'
+ print 'SOUS-EPAISSEUR NUMERO %d'%i
+ print '-------------------------------------'
+#
+# --- CAS DES SOUS-EPAISSEURS AXISYMETRIQUES
+#
+ if ssep['TYPE']=='AXIS':
+ print 'SOUS-EPAISSEUR AXISYMETRIQUE : '
+ print 'CALCUL DE LA TAILLE LONGI ENVELOPPE EN INTRADOS (AZIMUT PI)'
+ ssep.ICIRP = 2.*pi*RM
+ ssep.ISCP = pi*RM
+ ssep.IPHIC = 180.
+ AZIMC = pi
+ else:
+#
+# -- CALCUL DE L ABSCISSE CURVILIGNE CIRCONF.SUR LA PLAQUE
+# EN FONCTION DE L AZIMUT OU DE L ABSCISSE CURVIL.CIRCONF
+# SUR LE COUDE DU CENTRE DE LA SOUS-EPAISSEUR
+# NB : MESURE FAITE EN PEAU EXTERNE SUR LE COUDE
+#
+ if ssep['POSI_CURV_CIRC']!=None:
+ ssep.ISCP = ssep['POSI_CURV_CIRC']*RM/(RM+EP/2.)
+ AZIMC = ssep.ISCP/RM
+ ssep.IPHIC = ssep['POSI_CURV_CIRC']/(RM+EP/2.)*180./pi
+ print 'AZIMUT CENTRE SOUS-EPAISSEUR (DEGRES) : %.2f'%ssep.IPHIC
+ else:
+ ssep.ISCP = ssep['AZIMUT']*pi*RM/180.
+ AZIMC = ssep['AZIMUT']*pi/180.
+ print 'ABSC. CURV. CIRCONF. CENTRE SOUS-EPAISSEUR SUR COUDE : %.2f'%(AZIMC*(RM+EP/2.))
+#
+# PASSAGE DANS LE REPERE PLAQUE (0,2PI) AVEC ORIGINE FLANC DROIT
+# CAR L ORIGINE DES DONNEES CIRCONF. EST EN EXTRADOS
+#
+ if ssep.ISCP>(3.*pi*RM/2.): ssep.ISCP = ssep.ISCP - 3.*pi*RM/2.
+ else: ssep.ISCP = ssep.ISCP + pi*RM/2.
+ print 'ABSC. CURV. CIRCONF. CENTRE SOUS-EPAISSEUR SUR PLAQUE : %.2f'%ssep.ISCP
+#
+# -- CALCUL DE LA TAILLE CIRCONFERENTIELLE
+# NB : MESURE FAITE EN PEAU EXTERNE SUR LE COUDE
+#
+ ssep.ICIRP = ssep['AXE_CIRC']*(RM/(RM+EP/2.))
+ if ssep.ICIRP>(2.*pi*RM) :
+ print ' <MACR_ASCOUF_MAIL> ASCSEP valeur hors domaine'
+ print ' <MACR_ASCOUF_MAIL> sous-epaisseur numero : %d'%i
+ print ' <MACR_ASCOUF_MAIL> taille axe circonferentiel : %.2f'%ssep.ICIRP
+ print ' <MACR_ASCOUF_MAIL> bord plaque : %.2f'%2*pi*RM
+ self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
+ ier = ier+1
+ return ier
+ print 'TAILLE CIRCONFERENTIELLE SOUS-EPAISSEUR SUR PLAQUE : %.2f'%ssep.ICIRP
+ print '<=> TAILLE EQUIVALENTE SUR LA CIRCONFERENCE (DEGRES) : %.2f'%(ssep.ICIRP*360./(2.*pi*RM))
+#
+# -- CALCUL COTE AXIALE DU CENTRE SOUS-EPAISSEUR SUR LA PLAQUE
+# EN FONCTION DE L ABSCISSE CURVILIGNE DONNEE SUR LE COUDE
+# OU DE LA POSITION ANGULAIRE
+# NB : MESURE FAITE EN PEAU EXTERNE SUR LE COUDE
+#
+ if ssep['POSI_CURV_LONGI']!=None:
+ if GEOM=='COUDE':
+ ssep.ISLP = ssep['POSI_CURV_LONGI']/(1.+(RM+EP/2.)/RC*cos(AZIMC))
+ AZIML = ssep.ISLP/RC
+ print 'ANGLE COUDE CENTRE SOUS-EPAISSEUR (DEGRES) : %.2f'%(AZIML*180./pi)
+ else :
+ ssep.ISLP = ssep['POSI_CURV_LONGI']
+ if (SYME in ('QUART','DEMI')) and (ssep.ISLP!=ALPHA*CG*RC/2.) :
+ print ' <MACR_ASCOUF_MAIL> ASCSEP cas de symetrie :'
+ print ' <MACR_ASCOUF_MAIL> la sous-epaisseur doit etre dans la section mediane du coude !'
+ self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
+ ier = ier+1
+ return ier
+ else :
+ if GEOM=='COUDE':
+ print 'ABSC. CURV. AXIALE CENTRE SOUS-EPAISSEUR SUR COUDE : %.2f'%((ssep.BETA)*CG*(RC+(RM+EP/2.)*cos(AZIMC)))
+ AZIML = (ssep.BETA)*CG
+ else :
+ print 'ABSC. CURV. AXIALE CENTRE SOUS-EPAISSEUR SUR TUBE : %.2f'%((ssep.BETA)*CG*RC)
+ ssep.ISLP = (ssep.BETA)*CG*RC
+ if (SYME in ('QUART','DEMI')) and (ssep.BETA!=ALPHA/2.) :
+ print ' <MACR_ASCOUF_MAIL> ASCSEP cas de symetrie :'
+ print ' <MACR_ASCOUF_MAIL> la sous-epaisseur doit etre dans la section mediane du coude !'
+ self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
+ ier = ier+1
+ return ier
+ print 'ABSC. CURV. AXIALE CENTRE SOUS-EPAISSEUR SUR PLAQUE : %.2f'%ssep.ISLP
+#
+# -- CALCUL DE LA TAILLE LONGITUDINALE
+# NB : MESURE FAITE EN PEAU EXTERNE SUR LE COUDE
+#
+# ON ENVISAGE LE CAS OU UNE PARTIE DE L AXE EST DANS LES
+# DROITES DES EMBOUTS. LA TRANSFORMATION N EST FAITE QUE SUR LA
+# PARTIE RESTANT DANS LE COUDE.
+#
+ if GEOM=='COUDE' : DIST = ALPHA*CG*(RC+(RM+EP/2.)*cos(AZIMC))
+ else : DIST = ALPHA*CG*RC
+ if ssep['POSI_CURV_LONGI']!=None:
+ BSUP = ssep['POSI_CURV_LONGI']+ssep['AXE_LONGI']/2.
+ BINF = ssep['POSI_CURV_LONGI']-ssep['AXE_LONGI']/2.
+ else:
+ if GEOM=='COUDE' :
+ BSUP = ssep.BETA*CG*(RC+(RM+EP/2.)*cos(AZIMC))+ssep['AXE_LONGI']/2.
+ BINF = ssep.BETA*CG*(RC+(RM+EP/2.)*cos(AZIMC))-ssep['AXE_LONGI']/2.
+ else:
+ BSUP = ssep.BETA*CG*RC + ssep['AXE_LONGI']/2.
+ BINF = ssep.BETA*CG*RC - ssep['AXE_LONGI']/2.
+ BCOUD1 = 0.
+ BCOUD2 = 0.
+ BEMB1 = 0.
+ BEMB2 = 0.
+ if BINF<0. and BSUP>DIST :
+ BCOUD1 = DIST
+ BEMB1 = abs(BINF) + BSUP-DIST
+ elif BSUP>DIST :
+ BCOUD1 = DIST - BINF
+ BEMB1 = BSUP - DIST
+ elif BINF<0 :
+ BCOUD2 = BSUP
+ BEMB2 = abs(BINF)
+ elif (BINF>=0. and BSUP<=DIST) :
+ BCOUD1 = ssep['AXE_LONGI']
+ BCOUD = BCOUD1+ BCOUD2
+ BEMB = BEMB1 + BEMB2
+ if GEOM=='COUDE' : BPLAQ = BCOUD/(1.+(RM+EP/2.)/RC*cos(AZIMC))
+ else : BPLAQ = BCOUD
+ ssep.ILONP = BPLAQ+BEMB
+ if BEMB1>0.:
+ ssep.ISLP = ALPHA*CG*RC - ssep.ILONP/2. + BEMB1
+ print 'CORRECTION CENTRE : SOUS-EP. A CHEVAL SUR EMBOUT'
+ print 'ABSC. CURV. AXIALE CENTRE SOUS-EPAISSEUR SUR PLAQUE : %.2f'%ssep.ISLP
+ if BEMB2>0.:
+ ssep.ISLP = ssep.ILONP/2. - BEMB2
+ print 'CORRECTION CENTRE : SOUS-EP. A CHEVAL SUR EMBOUT'
+ print 'ABSC. CURV. AXIALE CENTRE SOUS-EPAISSEUR SUR PLAQUE : %.2f'%ssep.ISLP
+ if ssep.ISLP<0. : ssep.ISLP = 0.
+ if (ssep.ISLP>ALPHA*CG*RC) : ssep.ISLP = ALPHA*CG*RC
+#
+# SI LE CENTRE DE LA SOUS-EP CALCULE SUR LA PLAQUE EST DANS L EMBOUT
+# ON CORRIGE SA POSITION EN LE METTANT A L INTERFACE SINON CA PLANTE
+# DANS LA PROC DE MAILLAGE (A AMELIORER)
+#
+ print 'TAILLE LONGITUDINALE SOUS-EPAISSEUR SUR PLAQUE : %.2f'%ssep.ILONP
+ print '<=> TAILLE EQUIVALENTE PAR RAPPORT A L ANGLE DU COUDE (DEGRES): %.2f'%(ssep.ILONP*360/(2*pi*RC))
+#
+ return ier
+
+# ------------------------------------------------------------------------------
+def ASCTCI(MCL_SOUS_EPAIS,RM):
+ """
+ MACR_ASCOUF_MAIL ASCTCI
+ APPELEE DANS : ASCSYM et ASCPRE
+ CALCUL TABLEAU TRIE DES ABSCISSES DES CENTRES DE SOUS-EPAISSEURS
+
+ ------------DONNEES FOURNIES PAR L UTILISATEUR--------------------
+
+ RM = RAYON MOYEN DU COUDE
+
+ -----------------DONNEES RENVOYEES-----------------------
+
+ IABSC1 = CORRESPONDANCE ABSC. CURVI. CIRCONF. SOUS-EP. I
+ IABSC2 = CORRESPONDANCE ABSC. GAUCHE ET DROITE CIRCONF. SOUS-EP. I
+ COORXD = ABSC. DU BORD DROIT DE LA SOUS-EP I
+ COORXG = ABSC. DU BORD GAUCHE DE LA SOUS-EP I
+
+ """
+#
+# --- tri du tableau des abscisses curvilignes circonf. plaque
+#
+ TAMPON = []
+ COORXG = []
+ COORYG = []
+ i=0
+ for ssep in MCL_SOUS_EPAIS :
+ i=i+1
+ if (ssep.ISCP>2.*pi*RM) or (ssep.ISCP<0.) :
+ print ' <MACR_ASCOUF_MAIL> valeur hors domaine'
+ print ' <MACR_ASCOUF_MAIL> SOUS-EPAISSEUR NUMERO :%d'%MCL_SOUS_EPAIS.index(ssep)
+ print ' <MACR_ASCOUF_MAIL> ABSC. CURV. CIRCONF. :%.2f'%ssep.ISCP
+ print ' <MACR_ASCOUF_MAIL> BORD PLAQUE :%.2f'%(2.*pi*RM)
+ self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
+ ier = ier+1
+ return ier
+ TAMPON.append((ssep.ISCP,i))
+ TAMPON.sort()
+ IABSC1=[]
+ for j in range(i):
+ IABSC1.append(TAMPON[j][1])
+ print
+ print 'TRI DES CENTRES ABSC. CURV. CIRCONF. :'
+ print '------------------------------------'
+ i=0
+ for ssep in TAMPON :
+ i=i+1
+ print '%d) SOUS-EP NO %d <> XC = %.2f'%(i,ssep[1],ssep[0])
+#
+# --- calcul des abcisses droites et gauches des sous-epaisseurs
+#
+ COORXD=[]
+ COORXG=[]
+ for bid in TAMPON :
+ XG=bid[0]-MCL_SOUS_EPAIS[bid[1]-1].ICIRP/2.
+ if XG<0. : XG=XG+2.*pi*RM
+ COORXG.append(XG)
+ XD=bid[0]+MCL_SOUS_EPAIS[bid[1]-1].ICIRP/2.
+ if XD>2.*pi*RM : XD=XD-2.*pi*RM
+ COORXD.append(XD)
+#
+# --- tri des bornes d'intervalles en abscisse
+#
+ TAMPON = []
+ for j in range(len(MCL_SOUS_EPAIS)):
+ TAMPON.append((COORXG[j],2*j+1))
+ TAMPON.append((COORXD[j],2*j+2))
+ TAMPON.sort()
+ IABSC2=[]
+ for j in range(2*len(MCL_SOUS_EPAIS)):
+ IABSC2.append(TAMPON[j][1])
+ print
+ print 'TRI DES INTERVALLES G ET D ABSC. CURV. CIRCONF. :'
+ print '-----------------------------------------------'
+ for j in range(2*len(MCL_SOUS_EPAIS)):
+ if fmod(IABSC2[j],2):
+ print '%d) SOUS-EP NO %d <> XG = %.2f'%(j+1,IABSC1[IABSC2[j]/2],TAMPON[j][0])
+ else:
+ print '%d) SOUS-EP NO %d <> XD = %.2f'%(j+1,IABSC1[IABSC2[j]/2-1],TAMPON[j][0])
+#
+ return TAMPON,IABSC1,IABSC2,COORXD,COORXG
+
+# ------------------------------------------------------------------------------
+def ASCTLO(MCL_SOUS_EPAIS,RC,ALPHA,LTCHAR,LTCLIM):
+ """
+ MACR_ASCOUF_MAIL ASCTLO
+ APPELEE DANS : ASCSYM et ASCPRE
+ CALCUL TABLEAU TRIE DES ORDONNEES DES CENTRES DE SOUS-EPAISSEURS
+
+ ------------DONNEES FOURNIES PAR L UTILISATEUR--------------------
+
+ RC = RAYON MOYEN DU COUDE
+ ALPHA = ANGLE DU COUDE
+ LTCHAR = LONGUEUR DE L'EMBOUT DU COTE CHARGEMENT
+ LTCLIM = LONGUEUR DE L'EMBOUT DU COTE CONDITIONS AUX LIMITES
+
+ -----------------DONNEES RENVOYEES-----------------------
+
+ IORDO1 = CORRESPONDANCE ORDO. CURVI. LONGIT. SOUS-EP. I
+ IORDO2 = CORRESPONDANCE ORDO. GAUCHE ET DROITE LONGIT. SOUS-EP. I
+ COORYI = ORDONNEE. DU BORD INTERIEUR DE LA SOUS-EP I
+ COORYS = ORDONNEE. DU BORD SUPERIEUR DE LA SOUS-EP I
+
+ """
+#
+# tri du tableau des abscisses curvilignes axiales plaque
+#
+ ALPHAR = 2.*ALPHA*pi/360.
+ TAMPON = []
+ i=0
+ for ssep in MCL_SOUS_EPAIS :
+ i=i+1
+ if (ssep.ISLP>ALPHAR*RC) or (ssep.ISLP<0.) :
+ print ' <MACR_ASCOUF_MAIL> valeur hors domaine'
+ print ' <MACR_ASCOUF_MAIL> SOUS-EPAISSEUR NUMERO :%d'%MCL_SOUS_EPAIS.index(ssep)
+ print ' <MACR_ASCOUF_MAIL> ABSC. CURV. LONGIT. :%.2f'%ssep.ISLP
+ print ' <MACR_ASCOUF_MAIL> BORDS PLAQUE :%.2f'%(ALPHAR*RC)
+ self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
+ ier = ier+1
+ return ier
+ TAMPON.append((ssep.ISLP,i))
+ TAMPON.sort()
+ IORDO1=[]
+ for j in range(i):
+ IORDO1.append(TAMPON[j][1])
+ print
+ print 'TRI DES CENTRES ABSC. CURV. LONGIT. :'
+ print '------------------------------------'
+ i=0
+ for ssep in TAMPON :
+ i=i+1
+ print '%d) SOUS-EP NO %d <> YC = %.2f'%(i,ssep[1],ssep[0])
+#
+# calcul des abscisses sup. et inf. des sous-ep.
+#
+ COORYI=[]
+ COORYS=[]
+ EPS=0.000000000001
+ for bid in TAMPON :
+ i=i+1
+ YI=bid[0]-MCL_SOUS_EPAIS[bid[1]-1].ILONP/2.
+ YS=bid[0]+MCL_SOUS_EPAIS[bid[1]-1].ILONP/2.
+ if fabs(bid[0])<EPS :
+ YI=-(MCL_SOUS_EPAIS[bid[1]-1]['AXE_LONGI'])/2.
+ YS=MCL_SOUS_EPAIS[bid[1]-1].ILONP-(MCL_SOUS_EPAIS[bid[1]-1]['AXE_LONGI'])/2.
+ if fabs(bid[0]-ALPHAR*RC)<EPS :
+ YI=ALPHAR*RC-(MCL_SOUS_EPAIS[bid[1]-1].ILONP-(MCL_SOUS_EPAIS[bid[1]-1]['AXE_LONGI'])/2.)
+ YS=ALPHAR*RC+(MCL_SOUS_EPAIS[bid[1]-1]['AXE_LONGI'])/2.
+ if YI<(-LTCHAR):
+ print ' <MACR_ASCOUF_MAIL> valeur hors domaine'
+ print ' <MACR_ASCOUF_MAIL> SOUS-EPAISSEUR NUMERO :',bid[1]
+ print ' <MACR_ASCOUF_MAIL> BORD INFERIEUR :',YI
+ print ' <MACR_ASCOUF_MAIL> BORD PLAQUE :',-LTCHAR
+ self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
+ ier = ier+1
+ return ier
+ if YS>(ALPHAR*RC+LTCLIM):
+ print ' <MACR_ASCOUF_MAIL> valeur hors domaine'
+ print ' <MACR_ASCOUF_MAIL> SOUS-EPAISSEUR NUMERO :',bid[1]
+ print ' <MACR_ASCOUF_MAIL> BORD INFERIEUR :',YS
+ print ' <MACR_ASCOUF_MAIL> BORD PLAQUE :',ALPHAR*RC+LTCLIM
+ self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
+ ier = ier+1
+ return ier
+ COORYI.append(YI)
+ COORYS.append(YS)
+#
+# tri des bornes d'intervalles en abscisse
+#
+ TAMPON = []
+ for j in range(len(MCL_SOUS_EPAIS)):
+ TAMPON.append((COORYI[j],2*j+1))
+ TAMPON.append((COORYS[j],2*j+2))
+ TAMPON.sort()
+ IORDO2=[]
+ for j in range(2*len(MCL_SOUS_EPAIS)):
+ IORDO2.append(TAMPON[j][1])
+ print
+ print 'TRI DES INTERVALLES I ET S ABSC. CURV. LONGIT. :'
+ print '-----------------------------------------------'
+ for j in range(2*len(MCL_SOUS_EPAIS)):
+ if fmod(IORDO2[j],2):
+ print '%d) SOUS-EP NO %d <> YI = %.2f'%(j+1,IORDO1[IORDO2[j]/2],TAMPON[j][0])
+ else:
+ print '%d) SOUS-EP NO %d <> YS = %.2f'%(j+1,IORDO1[IORDO2[j]/2-1],TAMPON[j][0])
+#
+ return TAMPON,IORDO1,IORDO2,COORYI,COORYS
+#
+#
+################################################################################
+################################################################################
+################################################################################
+# MACR_ASCOUF_MAIL ASCNBE
+# APPELEE DANS : ASCSYM et ASCPRE
+# CALCUL DU NOMBRE D'ELEMENTS LONGI ET CIRCONF. DANS LES SOUS-EPAISSEURS
+#
+#-----------------DONNEES FOURNIES PAR L UTILISATEUR--------------------
+#
+# COORXG = ABSCISSE DU BORD GAUCHE DE LA SOUS-EPAISSEUR I
+# COORXD = ABSCISSE DU BORD DROIT DE LA SOUS-EPAISSEUR I
+# COORYI = ORDONNEE DU BORD INFERIEUR DE LA SOUS-EPAISSEUR I
+# COORYS = ORDONNEE DU BORD SUPERIEUR DE LA SOUS-EPAISSEUR I
+# BD = ABSCISSE DU BORD DROIT DE LA ZONE CIRCONF J
+# BG = ABSCISSE DU BORD GAUCHE DE LA ZONE CIRCONF J
+# BS = ORDONNEE DU BORD SUPERIEUR DE LA ZONE LONGI J
+# BI = ORDONNEE DU BORD INFERIEUR DE LA ZONE LONGI J
+# DNX = DENSITE ET NOMBRE D'ELEMENTS CIRCONF. DE LA ZONE J
+# DNY = DENSITE ET NOMBRE D'ELEMENTS LONGIT. DE LA ZONE J
+# INDSEX = NUMERO DE SOUS-EPAISSEUR CONTENU DANS LA ZONE CIRCONF J
+# INDSEY = NUMERO DE SOUS-EPAISSEUR CONTENU DANS LA ZONE LONGI J
+# RM = RAYON MOYEN DU COUDE
+# RC = RAYON DE CINTRAGE DU COUDE
+# IABSC1 = CORRESPONDANCE ABSCISSE CURVILIGNE CIRCONF. SOUS-EP. I
+# IORDO1 = CORRESPONDANCE ABSCISSE CURVILIGNE LONGIT. SOUS-EP. I
+#
+#----------------------DONNEES RENVOYEES-----------------------
+#
+# NLX = NOMBRE TOTAL D'ELEMENTS CIRCONF. DE LA SOUS-EPAISSEUR K
+# NLY = NOMBRE TOTAL D'ELEMENTS LONGIT. DE LA SOUS-EPAISSEUR K
+#
+# ------------------------------------------------------------------------------
+def ASCNBE(MCL_SOUS_EPAIS,COORXG,COORXD,COORYI,COORYS,BD,BG,BS,BI,DNX,DNY,RM,RC,
+ INDSEX,INDSEY,IABSC1,IORDO1):
+#
+# calcul du nombre d'elements longi. et circonf. dans les sous-epaisseurs:
+#
+ print
+ print 'DETERMINATION DU NOMBRE D''ELEMENTS DANS LES SOUS-EPAISSEURS :'
+ print '------------------------------------------------------------'
+ NLX=[0]*len(MCL_SOUS_EPAIS)
+ NLY=[0]*len(MCL_SOUS_EPAIS)
+ for j in range(len(BD)):
+ if INDSEX[j]!=0:
+# calcul au passage du nombre d'elements sur chaque zone circonf.
+ RNBEL = (BD[j]-BG[j])*360./(DNX[2*j]*2.*pi*RM)
+ RNBEL2 = RNBEL - floor(RNBEL)
+ if RNBEL2 <= 0.5 : NBEL=int(floor(RNBEL))
+ else : NBEL=int(floor(RNBEL))+1
+ if NBEL <= 1 : NBEL=2
+# calcul au passage du nombre d'elements sur chaque sous-epaisseur circonf.
+ for i in range(len(MCL_SOUS_EPAIS)):
+ l=IABSC1[i]-1
+ if ((COORXG[l]<COORXD[l] and BG[j]>=COORXG[l] and BD[j]<=COORXD[l])\
+ or (COORXG[l]>=COORXD[l] and (BG[j]<=COORXG[l] or BD[j]>=COORXD[l]))):
+ NLX[i]=NLX[i]+NBEL
+ print 'SOUS-EP NO %d ZONE CIRC. NO %d NB ELEM. = %d'%(i+1,j+1,NBEL)
+
+ for j in range(len(BS)):
+ if INDSEY[j]!=0:
+# calcul au passage du nombre d'elements sur chaque zone longi.
+ RNBEL = ((BS[j]-BI[j])*360.)/(DNY[2*j]*2.*pi*RC)
+ RNBEL2 = RNBEL - floor(RNBEL)
+ if RNBEL2 <= 0.5 : NBEL=int(floor(RNBEL))
+ else : NBEL=int(floor(RNBEL))+1
+ if NBEL <= 1 : NBEL=2
+# calcul au passage du nombre d'elements sur chaque sous-epaisseur circonf.
+ i=0
+ for i in range(len(MCL_SOUS_EPAIS)):
+ l=IORDO1[i]-1
+ if (BI[j]>=COORYI[l] and BS[j]<=COORYS[l]):
+ NLY[i]=NLY[i]+NBEL
+ print 'SOUS-EP NO %d ZONE LONGI. NO %d NB ELEM. = %d'%(i+1,j+1,NBEL)
+
+ for j in range(len(NLX)):
+ print 'SOUS-EP NO %d NBE TOTAL ELEMENTS CIRCONF. : %d'%(j+1,NLX[j])
+ print 'SOUS-EP NO %d NBE TOTAL ELEMENTS LONGI. : %d'%(j+1,NLY[j])
+
+#
+ return NLX,NLY
+#
+################################################################################
+################################################################################
+################################################################################
+# MACR_ASCOUF_MAIL ASCSYM
+# PREPARATION DES DONNEES POUR LE MAILLAGE DE PLAQUE AVEC
+# SOUS-EPAISSEURS :
+# CAS D UNE SOUS-EPAISSEUR DANS LE PLAN DE SYMETRIE
+# CONSTRUCTION D UN QUART DU MAILLAGE
+# - CALCUL TABLEAU TRIE DES ABSCISSES ET ORDONNEES DES CENTRES
+# - CALCUL TABLEAU DES ZONES COUVERTES PAR LES SOUS-EPAISSEURS
+#
+#-----------------DONNEES FOURNIES PAR L UTILISATEUR--------------------
+#
+# RM = RAYON MOYEN DU COUDE
+# RC = RAYON DE CINTRAGE DU COUDE
+# ALPHA = ANGLE DU COUDE
+# LT = LONGUEUR DE L EMBOUT DU COTE CHARGEMENT
+# LGV = LONGUEUR DE L EMBOUT DU COTE CONDITIONS AUX LIMITES
+# NBSEP = NOMBRE DE SOUS-EPAISSEURS
+#
+#----------------------DONNEES RENVOYEES-----------------------
+#
+# NZONEX = NOMBRE DE ZONES CIRCONFERENTIELLES
+# NZONEY = NOMBRE DE ZONES LONGITUDINALES
+#
+# ------------------------------------------------------------------------------
+def ASCSYM(MCL_SOUS_EPAIS,RM,RC,ALPHA,LTCHAR,LTCLIM):
+ ier=0
+ DERAFC = 18.
+ DERAFL = 5.
+ INDSEX = []
+ INDSEY = []
+ BG = []
+ BD = []
+ INDBG = []
+ INDBD = []
+ DNX = []
+
+#
+# --- tri des donnees sous-ep. en circonferentiel
+ TAMPON,IABSC1,IABSC2,COORXD,COORXG=ASCTCI(MCL_SOUS_EPAIS,RM)
+#
+# --- calcul des zones en circonferentiel
+#
+ ssep=MCL_SOUS_EPAIS[0]
+ if (ssep.ISCP<pi*RM) :
+#
+# le centre sous-ep est dans la zone flanc droit/extrados/flanc
+# gauche, on preleve pi*RM a droite de la sous-epaisseur
+#
+# zone (centre sous-ep , bord droit)
+#
+ BG.append(ssep.ISCP)
+ BG.append(ssep.ISCP+ssep.ICIRP/2.)
+ BD.append(ssep.ISCP+ssep.ICIRP/2.)
+ BD.append(ssep.ISCP+pi*RM)
+ INDBG.append(0)
+ INDBG.append(1)
+ INDBD.append(0)
+ INDBD.append(0)
+ DNX.append(ssep.IDENC)
+ DNX.append(0)
+ DNX.append(DERAFC)
+ DNX.append(0)
+ INDSEX.append(1)
+ INDSEX.append(0)
+ elif (ssep.ISCP+pi*RM==2.*pi*RM) :
+#
+# sous-ep axisymetrique : on preleve pi*RM a droite
+#
+# zone (centre sous-ep , bord droit)
+#
+ BG.append(ssep.ISCP)
+ BD.append(ssep.ISCP+ssep.ICIRP/2.)
+ INDBG.append(0)
+ INDBD.append(0)
+ DNX.append(ssep.IDENC)
+ DNX.append(0)
+ INDSEX.append(1)
+ INDSEX.append(0)
+ else :
+#
+# le centre sous-ep est dans la zone flanc gauche/intrados/flanc
+# droit : on preleve pi*RM a gauche de la sous-epaisseur
+#
+# zone (centre -pi*RM, bord gauche)
+#
+ BG.append(ssep.ISCP-pi*RM)
+ BG.append(ssep.ISCP-ssep.ICIRP/2.)
+ BD.append(ssep.ISCP-ssep.ICIRP/2.)
+ BD.append(ssep.ISCP)
+ INDBG.append(0)
+ INDBG.append(0)
+ INDBD.append(1)
+ INDBD.append(0)
+ DNX.append(DERAFC)
+ DNX.append(0)
+ DNX.append(ssep.IDENC)
+ DNX.append(0)
+ INDSEX.append(0)
+ INDSEX.append(1)
+
+
+ print
+ print 'ZONES APRES RECOUVREMENT ABSC. CURV. CIRCONF. :'
+ print '---------------------------------------------'
+ EPS=0.000000000001
+ NZONEX=len(BG)
+ for j in range(NZONEX) :
+ if ( fabs(BG[j]) < EPS ) and ( fabs(BD[j]) < EPS ) :
+ print 'ZONE NO %d BORNE GAUCHE = %.2f'\
+ ' / BORNE DROITE = %.2f * SOUS-EPAISSEUR'%(j+1,BG[j],BD[j])
+ else:
+ print 'ZONE NO %d BORNE GAUCHE = %.2f'\
+ ' / BORNE DROITE = %.2f'%(j+1,BG[j],BD[j])
+
+
+# tri des donnees sous-epaisseurs en axial
+ TAMPON,IORDO1,IORDO2,COORYI,COORYS=ASCTLO(MCL_SOUS_EPAIS,RC,ALPHA,LTCHAR,LTCLIM)
+
+# calcul des zones en axial:
+ BI = []
+ BS = []
+ INDBI = []
+ INDBS = []
+ DNY = []
+ INDSEY = []
+ ssep = MCL_SOUS_EPAIS[0]
+ BI.append(0.)
+ BI.append(ssep.ISLP-ssep.ILONP/2.)
+ BS.append(ssep.ISLP-ssep.ILONP/2.)
+ BS.append(ssep.ISLP)
+ INDBI.append(0)
+ INDBI.append(0)
+ INDBS.append(1)
+ INDBS.append(0)
+ DNY.append(DERAFL)
+ DNY.append(0)
+ DNY.append(ssep.IDENL)
+ DNY.append(0)
+ INDSEY.append(0)
+ INDSEY.append(1)
+ print
+ print 'ZONES APRES RECOUVREMENT ABSC. CURV. LONGIT. :'
+ print '-----------------------------------------------'
+ NZONEY=len(BI)
+ for j in range(NZONEY) :
+ if ( fabs(BI[j]) < EPS ) and ( fabs(BS[j]) < EPS ) :
+ print 'ZONE NO %d <> BORNE INF. = %.2f'\
+ ' / BORNE SUP. = %.2f * SOUS-EPAISSEUR'%(j+1,BI[j],BS[j])
+ else:
+ print 'ZONE NO %d <> BORNE INF. = %.2f'\
+ ' / BORNE SUP. = %.2f'%(j+1,BI[j],BS[j])
+
+# calcul du nombre d'elements longi. et circonf. dans les soue-ep
+ NLX,NLY=ASCNBE(MCL_SOUS_EPAIS,COORXG,COORXD,COORYI,COORYS,BD,BG,BS,BI,
+ DNX,DNY,RM,RC,INDSEX,INDSEY,IABSC1,IORDO1)
+
+ return ier,NLX,NLY,NZONEX,NZONEY,BG,BD,BI,BS,INDBG,INDBD,INDBI,INDBS,DNX,DNY
+################################################################################
+################################################################################
+################################################################################
+################################################################################
+# MACR_ASCOUF_MAIL ASCPRE
+# PREPARATION DES DONNEES POUR LE MAILLAGE DE PLAQUE
+# SOUS-EPAISSEURS :
+# - CALCUL TABLEAU TRIE DES ABSCISSES ET ORDONNEES DES CENTRES
+# - CALCUL TABLEAU DES ZONES COUVERTES PAR LES SOUS-EPAISSEURS
+#
+#-----------------DONNEES FOURNIES PAR L UTILISATEUR--------------------
+#
+# RM = RAYON MOYEN DU COUDE
+# RC = RAYON DE CINTRAGE DU COUDE
+# ALPHA = ANGLE DU COUDE
+# LT = LONGUEUR DE L EMBOUT DU COTE CHARGEMENT
+# LGV = LONGUEUR DE L EMBOUT DU COTE CONDITIONS AUX LIMITES
+# NBSEP = NOMBRE DE SOUS-EPAISSEURS
+# SYME = "QUART" DE STRUCTURE, "DEMI" STRUCTURE OU BIEN "ENTIER"
+#
+#----------------------DONNEES RENVOYEES-----------------------
+#
+# NZONEX = NOMBRE DE ZONES CIRCONFERENTIELLES
+# NZONEY = NOMBRE DE ZONES LONGITUDINALES
+#
+# ------------------------------------------------------------------------------
+def ASCPRE(MCL_SOUS_EPAIS,RM,RC,ALPHA,SYME,LTCHAR,LTCLIM):
+ ier=0
+ ALPHAR = 2.*ALPHA*pi/360.
+ DERAFC = 18.
+ DERAFL = 5.
+ EPSI = 0.001
+ NBSEP = len(MCL_SOUS_EPAIS)
+ print 'RECHERCHE DES ZONES DE SOUS-EPAISSEURS DANS LE COUDE\n'
+
+# tri des donnees sous-epaisseurs en circonferentiel
+ TAMPON,IABSC1,IABSC2,COORXD,COORXG=ASCTCI(MCL_SOUS_EPAIS,RM)
+# --- calcul des recouvrements de zones en circonferentiel
+#
+ NZONEX=0
+ j=0
+ ICE=1
+ NBGAU=0
+ NBDRO=0
+ TYPG=0
+ TYPD=0
+ go10=1
+ go20=1
+#
+ BG =[]
+ BD =[]
+ INDBG =[]
+ INDBD =[]
+ DNX =[]
+ INDSEX=[]
+#
+
+ while go10:
+
+ j=j+1
+#
+# definition de la zone courante (borne gauche, borne droite)
+#
+# TYPG = type de la borne:
+# 0 : borne gauche sous-epaisseur
+# 1 : borne droite sous-epaisseur
+# 2 : centre sous-epaisseur
+#
+ if j>2*NBSEP and ICE<NBSEP :
+# cas ou il ne reste plus que des centres a caser
+ MING = MIND
+ TYPG = TYPD
+ NUMG = NUMD
+ MIND = 2.*pi*RM+1
+ elif TYPD==2 :
+# cas ou la borne droite de la zone precedente etait un centre
+ MING = MIND
+ TYPG = TYPD
+ NUMG = NUMD
+ MIND = TAMPON[j-1][0]
+ if fmod(IABSC2[j-1],2):
+ TYPD = 0
+ NUMD = IABSC1[IABSC2[j-1]/2]
+ else:
+ TYPD = 1
+ NUMD = IABSC1[IABSC2[j-1]/2-1]
+ j=j-1
+ else:
+ if j>= 2*NBSEP :
+ MIND = TAMPON[2*NBSEP-1][0]
+ MING = MIND
+ if fmod(IABSC2[2*NBSEP-1],2):
+ TYPG = 0
+ NUMG = IABSC1[IABSC2[2*NBSEP-1]/2]
+ else:
+ TYPG = 1
+ NUMG = IABSC1[IABSC2[2*NBSEP-1]/2-1]
+ TYPD=TYPG
+ NUMD=NUMG
+ else:
+ MING=TAMPON[j-1][0]
+ MIND=TAMPON[j][0]
+ if fmod(IABSC2[j-1],2):
+ TYPG = 0
+ NUMG = IABSC1[IABSC2[j-1]/2]
+ else:
+ TYPG = 1
+ NUMG = IABSC1[IABSC2[j-1]/2-1]
+ if fmod(IABSC2[j],2):
+ TYPD = 0
+ NUMD = IABSC1[IABSC2[j]/2]
+ else:
+ TYPD = 1
+ NUMD = IABSC1[IABSC2[j]/2-1]
+ if fabs(MING-MIND)<EPSI :
+ if j==2*NBSEP:break
+ else:continue
+ if j>2*NBSEP and ICE>=NBSEP:
+ break #on sort de la boucle
+
+ while go20:
+ i=ICE
+ if i<=NBSEP:
+# recherche des centres a intercaler
+ INDC=IABSC1[i-1]
+ if i>1:
+# le centre est deja le meme que precedent
+ if fabs(MCL_SOUS_EPAIS[INDC-1].ISCP-MCL_SOUS_EPAIS[IABSC1[i-2]-1].ISCP) < EPSI :
+ ICE=ICE+1
+ continue
+ if MCL_SOUS_EPAIS[INDC-1].ISCP < MING :
+# le centre est la nouvelle borne gauche
+ j=j-1
+ MIND = MING
+ TYPD = TYPG
+ NUMD = NUMG
+ MING = MCL_SOUS_EPAIS[INDC-1].ISCP
+ TYPG = 2
+ NUMG = INDC
+ ICE = ICE+1
+ elif MCL_SOUS_EPAIS[INDC-1].ISCP < MIND :
+# le centre est la nouvelle borne droite
+ MIND = MCL_SOUS_EPAIS[INDC-1].ISCP
+ TYPD = 2
+ NUMD = INDC
+ ICE = ICE+1
+ continue
+ else:pass
+ NZONEX=NZONEX+1
+#
+# codes d'intervalles de zones
+# 0 0 = zone sous-ep.
+# 0 1 = sous-ep. a droite de la zone
+# 1 0 = sous-ep. a gauche de la zone
+# 1 1 = sous-ep. a droite et a gauche de la zone
+#
+# cas ou la premiere zone ne commence pas au bord de la plaque
+ if MING>0. and NZONEX==1 :
+ BG.append(0.)
+ BD.append(MING)
+ if TYPG==0:
+ INDBG.append(0)
+ INDBD.append(1)
+ DNX.append(DERAFC)
+ DNX.append(0)
+ INDSEX.append(0)
+ elif TYPG==1 or TYPG==2:
+ INDBG.append(0)
+ INDBD.append(0)
+ DNX.append(MCL_SOUS_EPAIS[NUMG-1].IDENC)
+ DNX.append(0)
+ INDSEX.append(NUMG)
+ else: pass
+ NZONEX=NZONEX+1
+#
+ BG.append(MING)
+ BD.append(MIND)
+#
+ if TYPG == 0:
+# borne gauche zone = borne gauche ssep
+ NBGAU=NBGAU+1
+ INDBG.append(0)
+ INDBD.append(0)
+ if TYPD == 0:
+# borne droite zone = borne gauche ssep
+ DNX.append(MCL_SOUS_EPAIS[NUMG-1].IDENC)
+ DNX.append(0)
+ INDSEX.append(NUMG)
+ elif TYPD == 1 or TYPD == 2:
+# borne droite zone = borne droite ssep : TYPD=1
+# borne droite zone = centre ssep : TYPD=2
+ LTMP=[]
+ LTMP.append((MCL_SOUS_EPAIS[NUMG-1].IDENC,NUMG))
+ LTMP.append((MCL_SOUS_EPAIS[NUMD-1].IDENC,NUMD))
+ LTMP.sort()
+ DNX.append(LTMP[0][0])
+ DNX.append(0)
+ INDSEX.append(LTMP[0][1])
+ else: pass
+#
+ elif TYPG == 1:
+# borne gauche zone = borne droite ssep
+ NBDRO = NBDRO+1
+ if TYPD == 0:
+# borne droite zone = borne gauche ssep
+ if NBDRO==NBGAU:
+ INDBG.append(1)
+ INDBD.append(1)
+ DNX.append(DERAFC)
+ DNX.append(0)
+ INDSEX.append(0)
+ else:
+# cas tordu: une sous-ep enveloppe le tout
+ INDBG.append(0)
+ INDBD.append(0)
+ DNX.append(MCL_SOUS_EPAIS[NUMG-1].IDENC)
+ DNX.append(0)
+ INDSEX.append(NUMG)
+ elif TYPD == 1 or TYPD == 2:
+# borne droite zone = borne droite ssep : TYPD=1
+# borne droite zone = centre ssep : TYPD=2
+ INDBG.append(0)
+ INDBD.append(0)
+ DNX.append(MCL_SOUS_EPAIS[NUMD-1].IDENC)
+ DNX.append(0)
+ INDSEX.append(NUMD)
+ else: pass
+#
+ elif TYPG == 2:
+# borne gauche zone = centre ssep
+ INDBG.append(0)
+ INDBD.append(0)
+ if TYPD == 0:
+# borne droite zone = borne gauche ssep
+ DNX.append(MCL_SOUS_EPAIS[NUMG-1].IDENC)
+ DNX.append(0)
+ INDSEX.append(NUMG)
+ elif TYPD == 1 or TYPD == 2:
+# borne droite zone = borne droite ssep : TYPD=1
+# borne droite zone = centre ssep : TYPD=2
+ LTMP=[]
+ LTMP.append((MCL_SOUS_EPAIS[NUMG-1].IDENC,NUMG))
+ LTMP.append((MCL_SOUS_EPAIS[NUMD-1].IDENC,NUMD))
+ LTMP.sort()
+ DNX.append(LTMP[0][0])
+ DNX.append(0)
+ INDSEX.append(LTMP[0][1])
+ else:pass
+ else:pass
+ if j<=(2*NBSEP-2) or ICE<=NBSEP or (TYPD==2 and j<2*NBSEP):
+ iout=0
+ break #on retourne dans la boucle go10
+ else :
+ iout=1
+ break #on sort definitivement
+ if iout:break
+
+ if MIND<2.*pi*RM:
+ NZONEX=NZONEX+1
+ BG.append(MIND)
+ BD.append(2.*pi*RM)
+ if TYPD==0 or TYPD==2:
+ INDBG.append(0)
+ INDBD.append(0)
+ DNX.append(MCL_SOUS_EPAIS[NUMD-1].IDENC)
+ DNX.append(0)
+ INDSEX.append(NUMD)
+ elif TYPD==1:
+ INDBG.append(1)
+ INDBD.append(0)
+ DNX.append(DERAFC)
+ DNX.append(0)
+ INDSEX.append(0)
+ else:pass
+
+# au cas ou 2.*pi*RM correspond a une borne d'intevalle de sous-ep ou a
+# un centre de sous-ep.
+ if fabs(BG[NZONEX-1]-BD[NZONEX-1])<EPSI: NZONEX = NZONEX-1
+
+ print
+ print 'ZONES APRES RECOUVREMENT ABSC. CURV. CIRCONF. :'
+ print '-----------------------------------------------'
+ for j in range(NZONEX) :
+ if INDBG[j]==0 and INDBD[j]==0 :
+ print 'ZONE NO',j+1,'<> BORNE GAUCHE = %.2f'\
+ ' / BORNE DROITE = %.2f * SOUS-EPAISSEUR'%(BG[j],BD[j])
+ else:
+ print 'ZONE NO',j+1,'<> BORNE GAUCHE = %.2f'\
+ ' / BORNE DROITE = %.2f'%(BG[j],BD[j])
+
+
+# --- tri des donnees sous-ep. en axial
+ TAMPON,IORDO1,IORDO2,COORYI,COORYS=ASCTLO(MCL_SOUS_EPAIS,RC,ALPHA,LTCHAR,LTCLIM)
+
+ BI = []
+ BS = []
+ INDBI = []
+ INDBS = []
+ DNY = []
+ INDSEY = []
+
+ if SYME == 'DEMI':
+# calcul des zones en axial :
+# zones (0,bord inferieur) et (bord inferieur,centre sous-ep.)
+ ssep = MCL_SOUS_EPAIS[0]
+ BI.append(0.)
+ BI.append(ssep.ISLP-ssep.ILONP/2.)
+ BS.append(ssep.ISLP-ssep.ILONP/2.)
+ BS.append(ssep.ISLP)
+ INDBI.append(0)
+ INDBI.append(0)
+ INDBS.append(1)
+ INDBS.append(0)
+ DNY.append(DERAFL)
+ DNY.append(0)
+ DNY.append(ssep.IDENL)
+ DNY.append(0)
+ INDSEY.append(0)
+ INDSEY.append(1)
+ NZONEY=1
+#
+ else:
+#
+# calcul des recouvrements de zones en axial
+ j = 0
+ ICE = 1
+ NBINF = 0
+ NBSUP = 0
+ TYPI=0
+ TYPS=0
+ go40=1
+ go50=1
+ NZONEY=0
+#
+ while go40:
+ j=j+1
+#
+# definition de la zone courante (borne inf, borne sup)
+#
+# typi = type de la borne
+# 0 : borne inf. sous-ep.
+# 1 : borne sup. sous-ep.
+# 2 : centre sous-ep.
+#
+ if TYPS==2:
+# cas ou la borne sup. de la zone prec. etait un centre
+ MINI=MINS
+ TYPI=TYPS
+ NUMI=NUMS
+ MINS=TAMPON[j-1][0]
+ if fmod(IORDO2[j-1],2):
+ TYPS = 0
+ NUMS = IORDO1[IORDO2[j-1]/2]
+ else:
+ TYPS = 1
+ NUMS = IORDO1[IORDO2[j-1]/2-1]
+ j=j-1
+ else:
+ if j>= 2*NBSEP :
+ MINI = TAMPON[2*NBSEP-1][0]
+ MINS = MINI
+ if fmod(IORDO2[2*NBSEP-1],2):
+ TYPI = 0
+ NUMI = IORDO1[IORDO2[2*NBSEP-1]/2]
+ else:
+ TYPI = 1
+ NUMI = IORDO1[IORDO2[2*NBSEP-1]/2-1]
+ TYPS=TYPI
+ NUMS=NUMI
+ else:
+ MINI=TAMPON[j-1][0]
+ MINS=TAMPON[j][0]
+ if fmod(IORDO2[j-1],2):
+ TYPI = 0
+ NUMI = IORDO1[IORDO2[j-1]/2]
+ else:
+ TYPI = 1
+ NUMI = IORDO1[IORDO2[j-1]/2-1]
+ if fmod(IORDO2[j],2):
+ TYPS = 0
+ NUMS = IORDO1[IORDO2[j]/2]
+ else:
+ TYPS = 1
+ NUMS = IORDO1[IORDO2[j]/2-1]
+ if fabs(MINI-MINS)<EPSI:
+ if j==2*NBSEP:break
+ else:continue
+
+ while go50:
+ i=ICE
+ if i<=NBSEP:
+# recherche des centres a intercaler
+ INDC=IORDO1[i-1]
+ if i>1:
+# le centre est deja le meme que le precedent
+ if fabs(MCL_SOUS_EPAIS[INDC-1].ISLP-MCL_SOUS_EPAIS[IORDO1[i-2]-1].ISLP)<EPSI:
+ ICE=ICE+1
+ continue
+ if MCL_SOUS_EPAIS[INDC-1].ISLP<MINI:
+# le centre est la nouvelle borne inf.
+ j=j-1
+ MINS = MINI
+ TYPS = TYPI
+ NUMS = NUMI
+ MINI = MCL_SOUS_EPAIS[INDC-1].ISLP
+ TYPI = 2
+ NUMI = INDC
+ ICE = ICE+1
+ elif MCL_SOUS_EPAIS[INDC-1].ISLP<MINS:
+# le centre est la nouvelle borne sup.
+ MINS = MCL_SOUS_EPAIS[INDC-1].ISLP
+ TYPS = 2
+ NUMS = INDC
+ ICE = ICE+1
+ continue
+ else:pass
+ NZONEY=NZONEY+1
+#
+# code d'intervalles de zone
+# 0 0 = ZONE SOUS-EPAISSEUR
+# 0 1 = SOUS-EPAISSEUR A SUPERIEURE DE LA ZONE
+# 1 0 = SOUS-EPAISSEUR A INFERIEURE DE LA ZONE
+# 1 1 = SOUS EPAISSEUR A SUPERIEURE ET A INFERIEURE DE LA ZONE
+#
+# cas ou la premiere zone ne commence pas au bord de la plaque
+ if MINI>0. and NZONEY==1:
+ first=0
+ BI.append(0.)
+ BS.append(MINI)
+ if TYPI==0:
+ INDBI.append(0)
+ INDBS.append(1)
+ DNY.append(DERAFL)
+ DNY.append(0)
+ INDSEY.append(0)
+ elif TYPI==1 or TYPI==2:
+ INDBI.append(0)
+ INDBS.append(0)
+ DNY.append(MCL_SOUS_EPAIS[NUMI-1].IDENL)
+ DNY.append(0)
+ INDSEY.append(NUMI)
+ else:pass
+ NZONEY = NZONEY+1
+#
+ BI.append(MINI)
+ BS.append(MINS)
+
+ if TYPI==0:
+# borne inferieure zone = borne inferieure ssep
+ NBINF = NBINF+1
+ INDBI.append(0)
+ INDBS.append(0)
+ if TYPS==0:
+# borne superieure zone = borne inferieur ssep
+ DNY.append(MCL_SOUS_EPAIS[NUMI-1].IDENL)
+ DNY.append(0)
+ INDSEY.append(NUMI)
+ elif TYPS==1 or TYPS==2:
+# borne superieure zone = borne superieure ssep:TYPS==1
+# borne superieure zone = centre ssep:TYPS==2
+ LTMP=[]
+ LTMP.append((MCL_SOUS_EPAIS[NUMI-1].IDENL,NUMI))
+ LTMP.append((MCL_SOUS_EPAIS[NUMS-1].IDENL,NUMS))
+ LTMP.sort()
+ DNY.append(LTMP[0][0])
+ DNY.append(0)
+ INDSEY.append(LTMP[0][1])
+ else:pass
+ elif TYPI==1:
+# borne inferieure zone=borne superieure ssep
+ NBSUP = NBSUP+1
+ if TYPS==0:
+# borne superieure zone = borne inferieur ssep
+ if NBSUP==NBINF:
+ INDBI.append(1)
+ INDBS.append(1)
+ DNY.append(DERAFL)
+ DNY.append(0)
+ INDSEY.append(0)
+ else:
+# cas tordu: une sous-ep. enveloppe le tout
+ INDBI.append(0)
+ INDBS.append(0)
+ DNY.append(MCL_SOUS_EPAIS[NUMI-1].IDENL)
+ DNY.append(0)
+ INDSEY.append(NUMI)
+ elif TYPS==1 or TYPS==2:
+# borne superieure zone = borne superieure ssep:TYPS==1
+# borne superieure zone = centre ssep:TYPS==2
+ INDBI.append(0)
+ INDBS.append(0)
+ DNY.append(MCL_SOUS_EPAIS[NUMS-1].IDENL)
+ DNY.append(0)
+ INDSEY.append(NUMS)
+ else:pass
+ elif TYPI==2:
+# borne inferieure zone = centre ssep
+ INDBI.append(0)
+ INDBS.append(0)
+ if TYPS==0:
+# borne superieure zone = borne inferieure ssep
+ DNY.append(MCL_SOUS_EPAIS[NUMI-1].IDENL)
+ DNY.append(0)
+ INDSEY.append(NUMI)
+ elif TYPS==1 or TYPS==2:
+# borne superieure zone = borne superieure ssep
+ LTMP=[]
+ LTMP.append((MCL_SOUS_EPAIS[NUMI-1].IDENL,NUMI))
+ LTMP.append((MCL_SOUS_EPAIS[NUMS-1].IDENL,NUMS))
+ LTMP.sort()
+ DNY.append(LTMP[0][0])
+ DNY.append(0)
+ INDSEY.append(LTMP[0][1])
+ else:pass
+ else:pass
+ if j<=(2*NBSEP-2) or TYPS==2:
+ iout=0
+ break #on retourne dans la boucle go40
+ else:
+ iout=1
+ break #on sort definitivement
+ if iout:break
+
+# cas ou la derniere zone ne finit pas au bout de la plaque
+ if MINS<ALPHAR*RC:
+ NZONEY=NZONEY+1
+ BI.append(MINS)
+ BS.append(ALPHAR*RC)
+ if TYPS==0 or TYPS==2:
+ INDBI.append(0)
+ INDBS.append(0)
+ DNY.append(MCL_SOUS_EPAIS[NUMS-1].IDENL)
+ DNY.append(0)
+ INDSEY.append(NUMS)
+ elif TYPS==1:
+ INDBI.append(1)
+ INDBS.append(0)
+ DNY.append(DERAFL)
+ DNY.append(0)
+ INDSEY.append(0)
+ else:pass
+
+ print
+ print 'ZONES APRES RECOUVREMENT ABSC. CURV. LONGIT. :'
+ print '-----------------------------------------------'
+
+ for j in range(NZONEY) :
+ if INDBI[j]==0 and INDBS[j]==0 :
+ print 'ZONE NO',j+1,'<> BORNE INF. = %.2f'\
+ ' / BORNE SUP. = %.2f * SOUS-EPAISSEUR'%(BI[j],BS[j])
+ else:
+ print 'ZONE NO',j+1,'<> BORNE INF. = %.2f'\
+ ' / BORNE SUP. = %.2f '%(BI[j],BS[j])
+
+# calcul du nombre d'elements longi. et circonf. dans les sous-ep
+ NLX,NLY=ASCNBE(MCL_SOUS_EPAIS,COORXG,COORXD,COORYI,COORYS,BD,BG,BS,BI,
+ DNX,DNY,RM,RC,INDSEX,INDSEY,IABSC1,IORDO1)
+
+
+ return ier,NLX,NLY,NZONEX,NZONEY,BG,BD,BI,BS,INDBG,INDBD,INDBI,INDBS,DNX,DNY
+################################################################################
+################################################################################
+################################################################################
+# MACR_ASCOUF_MAIL write_file_dgib_ASCFDO
+#
+# ECRIT DANS UN FICHIER LES DONNES GIBI DE LA PROCEDURE
+# "PLAQUE FISSUREE"
+#
+
+# ------------------------------------------------------------------------------
+def write_file_dgib_ASCFDO(nomFichierDATG,RM,RC,ALPHA,NBTRAN,EP1,EP2,EPI,TETA1,
+ TETA2,LTRAN,SUREP,LTCHAR,LTCLIM,TYPBOL,AXEAP,AXECP,NT,NS,NC,
+ SFP,ORIEN,AZIM,RC0,RC2,RC3,POSIT,EPSI,NIVMAG,SYME, loc_datg) :
+
+ if TYPBOL!= None:
+ if TYPBOL=='CUVE' : TYPEMB = 'typcuv'
+ if TYPBOL=='GV' : TYPEMB = 'typegv'
+ if TYPBOL=='ASP_MPP' : TYPEMB = 'typapp'
+ else:
+ TYPEMB =' '
+
+ if POSIT =='DEB_INT' :
+ POSIT2 = 'interne'
+ else:
+ POSIT2 = 'externe'
+ if SYME[:6]=='ENTIER' : ZSYME = 'entier'
+ elif SYME[:5]=='QUART' : ZSYME = 'quart'
+ else : ZSYME = 'demi'
+ C=AXECP/2.
+ TETAF=AZIM*pi/180.
+
+ POIVIR = ' ;\n'
+ texte='* DEBUT PARAMETRES UTILISATEUR\n'
+ texte=texte+'*\n'
+ texte=texte+'c = '+str(C) +POIVIR
+ texte=texte+'a = '+str(AXEAP) +POIVIR
+ texte=texte+'nt = '+str(NT) +POIVIR
+ texte=texte+'ns = '+str(NS) +POIVIR
+ texte=texte+'nc = '+str(NC) +POIVIR
+ texte=texte+'rm = '+str(RM) +POIVIR
+ texte=texte+'rc = '+str(RC) +POIVIR
+ texte=texte+'alphac = '+str(ALPHA) +POIVIR
+ texte=texte+'nbtranep = '+str(NBTRAN) +POIVIR
+ texte=texte+'ep1 = '+str(EP1) +POIVIR
+ texte=texte+'ep2 = '+str(EP2) +POIVIR
+ texte=texte+'epi = '+str(EPI) +POIVIR
+ texte=texte+'teta1 = '+str(TETA1) +POIVIR
+ texte=texte+'teta2 = '+str(TETA2) +POIVIR
+ texte=texte+'ltran = '+str(LTRAN) +POIVIR
+ texte=texte+'posfis = '+str(SFP) +POIVIR
+ texte=texte+'ksiref = '+str(ORIEN) +POIVIR
+ texte=texte+'surep = '+str(SUREP) +POIVIR
+ texte=texte+'teta_f = '+str(TETAF) +POIVIR
+ texte=texte+'rc0 = '+str(RC0) +POIVIR
+ texte=texte+'rc2 = '+str(RC2) +POIVIR
+ texte=texte+'rc3 = '+str(RC3) +POIVIR
+ texte=texte+"pos = '"+POSIT2+"'" +POIVIR
+ texte=texte+'lt = '+str(LTCHAR) +POIVIR
+ texte=texte+'lgv = '+str(LTCLIM) +POIVIR
+ texte=texte+"typembou = '"+TYPEMB+"'" +POIVIR
+ texte=texte+"zsyme = '"+ZSYME+"'" +POIVIR
+ texte=texte+'epsif = '+str(EPSI) +POIVIR
+ texte=texte+'nivmag = '+str(NIVMAG) +POIVIR
+ texte=texte+'*\n'
+ texte=texte+'* FIN PARAMETRES UTILISATEUR\n'
+ texte = texte + open(os.path.join(loc_datg, 'ascouf_fiss_v4.datg'), 'r').read()
+# texte=texte+'opti donn '
+# texte=texte+"'"+loc_datg+'ascouf_fiss_v4.datg'+"';\n"
+ fdgib=open(nomFichierDATG,'w')
+ fdgib.write(texte)
+ fdgib.close()
+
+################################################################################
+################################################################################
+################################################################################
+# MACR_ASCOUF_MAIL write_file_dgib_ASCSQO
+#
+# ECRIT DANS UN FICHIER LES DONNEES GIBI DE LA PROCEDURE
+# "PLAQUE SOUS-EPAISSEUR"
+#
+#-----------------DONNEES FOURNIES PAR L'UTILISATEUR--------------------
+#
+# RM = RAYON MOYEN DU COUDE
+# RC = RAYON DE CINTRAGE DU COUDE
+# ALPHA = ANGLE DU COUDE
+# NBTRAN = NOMBRE DE TRANSITION D'EPAISSEUR (0, 1 OU 2)
+# EP1 = EPAISSEUR DU COUDE (COTE EMBOUT 1 SI TRANSITION)
+# EP2 = EPAISSEUR DU COUDE (COTE EMBOUT 2 SI TRANSITION)
+# EPI = EPAISSEUR DU COUDE INTERMEDIAIRE SI TRANSITION A 2 PENTES
+# TETA1 = ANGLE DE LA PREMIERE TRANSITION D'EPAISSEUR EVENTUELLE
+# TETA2 = ANGLE DE LA DEUXIEME TRANSITION D'EPAISSEUR EVENTUELLE
+# LTRAN = LONGUEUR ENTRE FIN DE L'EMBOUT 1 ET DEBUT DE TRANSITION
+# LTCHAR = LONGUEUR DE L'EMBOUT DU COTE CHARGEMENT
+# LCLIM = LONGUEUR DE L'EMBOUT DU COTE CONDITIONS AUX LIMITES
+# GEOM = TYPE DE GEOMETRIE MODELISEE (COUDE OU TUBE)
+# SYME = "QUART" DE STRUCTURE, "DEMI" STRUCTURE OU BIEN "ENTIER"
+# NBEP = NOMBRE D'ELEMENTS DANS LE COUDE
+# NLX = NOMBRE D'ELEMENTS CIRCONF. DE LA SOUS-EPAISSEUR
+# NLY = NOMBRE D'ELEMENTS LONGI DE LA SOUS-EPAISSEUR
+
+# ------------------------------------------------------------------------------
+def write_file_dgib_ASCSQO(nomFichierDATG,TYPELE,RM,RC,ALPHA,NBTRAN,EP1,EP2,
+ EPI,TETA1,MCL_SOUS_EPAIS,TETA2,LTRAN,LTCHAR,LTCLIM,GEOM,
+ SYME,NBEP,NLX,NLY,NIVMAG,loc_datg) :
+
+ ssep= MCL_SOUS_EPAIS[0]
+ POIVIR = ' ;\n'
+ texte=' nivmag = '+str(NIVMAG) +POIVIR
+ texte=texte+' option dime 3 elem '+TYPELE+' nive nivmag echo 0'+POIVIR
+ texte=texte+'*\n'
+ texte=texte+'coory = table '+POIVIR
+ texte=texte+'coorz = table '+POIVIR
+ texte=texte+'prof = table '+POIVIR
+ texte=texte+'posit = table '+POIVIR
+ texte=texte+'axisym = table '+POIVIR
+ texte=texte+'axecir = table '+POIVIR
+ texte=texte+'axelon = table '+POIVIR
+ texte=texte+'sousep = table '+POIVIR
+ texte=texte+'coorzc = table '+POIVIR
+ texte=texte+'axelonc = table '+POIVIR
+ texte=texte+'*\n'
+ texte=texte+'* DEBUT PARAMETRES UTILISATEUR\n'
+ texte=texte+'*\n'
+ texte=texte+'* parametres generaux\n'
+ texte=texte+'*\n'
+ texte=texte+' pirad = '+str(pi) +POIVIR
+ texte=texte+' rm = '+str(RM) +POIVIR
+ texte=texte+' rc = '+str(RC) +POIVIR
+ texte=texte+' alpha = '+str(ALPHA) +POIVIR
+ texte=texte+' lt1 = '+str(LTCHAR) +POIVIR
+ texte=texte+' lt2 = '+str(LTCLIM) +POIVIR
+ texte=texte+' nbtranep = '+str(NBTRAN) +POIVIR
+ texte=texte+' ep1 = '+str(EP1) +POIVIR
+ texte=texte+' ep2 = '+str(EP2) +POIVIR
+ texte=texte+' epI = '+str(EPI) +POIVIR
+ texte=texte+' teta1 = '+str(TETA1) +POIVIR
+ texte=texte+' teta2 = '+str(TETA2) +POIVIR
+ texte=texte+' ltran = '+repr(LTRAN) +POIVIR
+ if GEOM == 'COUDE':
+ texte=texte+" zcoude = 'oui' "+POIVIR
+ else:
+ texte=texte+" zcoude = 'non' "+POIVIR
+ if SYME == 'ENTIER':
+ texte=texte+" zsyme = 'entier' "+POIVIR
+ elif SYME == 'QUART':
+ texte=texte+" zsyme = 'quart' "+POIVIR
+ else:
+ texte=texte+" zsyme = 'demi' "+POIVIR
+ if TYPELE == 'CU20':
+ texte=texte+" zquad = 'oui' "+POIVIR
+ else:
+ texte=texte+" zquad = 'non' "+POIVIR
+ SCP=pi*RM
+ texte=texte+' nxep = '+str(NBEP) +POIVIR
+ texte=texte+'*\n'
+ texte=texte+'* Caracteristiques de la sous-epaisseur\n'
+ texte=texte+'*\n'
+ texte=texte+' tysep = '+str(ssep.ICIRP) +POIVIR
+ texte=texte+' tzsep = '+str(ssep.ILONP) +POIVIR
+ texte=texte+' prof . 1 = '+str(ssep['PROFONDEUR']) +POIVIR
+ texte=texte+' ycsep = '+str(SCP-pi*RM) +POIVIR
+ texte=texte+' theta = '+str(ssep.IPHIC) +POIVIR
+ texte=texte+' zcsep = '+repr(ssep.ISLP) +POIVIR
+
+ texte=texte+" posit . 1 = '"+str(ssep['SOUS_EPAIS'].lower())+"'"+POIVIR
+ texte=texte+' nby = '+str(int(NLX[0])) +POIVIR
+ texte=texte+' nbz = '+str(int(NLY[0])) +POIVIR
+ texte=texte+' nbxse = '+str(ssep['NB_ELEM_RADI']) +POIVIR
+ texte=texte+' axelonc . 1 = '+str(ssep['AXE_LONGI'])+POIVIR
+ if ssep['POSI_CURV_LONGI']!=None:
+ texte=texte+' coorzc . 1 = '+repr(ssep['POSI_CURV_LONGI'])+POIVIR
+ else:
+ DZC=ssep.BETA*pi*(RC+(RM+EP1/2.)*cos(pi/2.))/180.
+ texte=texte+' coorzc . 1 = '+repr(DZC)+POIVIR
+ if ssep['TYPE']=='AXIS':
+ texte=texte+" zaxis = 'oui' "+POIVIR
+ else:
+ texte=texte+" zaxis = 'non' "+POIVIR
+ if ssep['EMPREINTE'] == 'OUI':
+ texte=texte+" sousep . 1 = 'oui'"+POIVIR
+ else:
+ texte=texte+" sousep . 1 = 'non'"+POIVIR
+ texte=texte+'*\n'
+ texte=texte+'* FIN PARAMETRES UTILISATEUR \n'
+ texte = texte + open(os.path.join(loc_datg, 'ascouf_ssep_mono_v1.datg'), 'r').read()
+# texte=texte+'opti donn '
+# texte=texte+"'"+loc_datg+'ascouf_ssep_mono_v1.datg'+"'"+POIVIR
+ fdgib=open(nomFichierDATG,'w')
+ fdgib.write(texte)
+ fdgib.close()
+################################################################################
+################################################################################
+################################################################################
+# MACR_ASCOUF_MAIL write_subpart_file_pgib_POST
+#
+# APPELEE DANS : write_file_pgib_ASCSQ2 , write_file_pgib_ASCSD2
+# DEFINIE UNE CHAINE DE CARACTERES UTILISEE LORS DE L'ECRITURE DU
+# FICHIER GIBI DE POST-TRAITEMENTS
+#
+#-----------------DONNEES FOURNIES PAR L'UTILISATEUR--------------------
+#
+# NLX = NOMBRE D'ELEMENTS CIRCONF. DE LA SOUS-EPAISSEUR
+# NLY = NOMBRE D'ELEMENTS LONGI DE LA SOUS-EPAISSEUR
+#
+#-----------------DONNEE RENVOYEE PAR ASTER--------------------
+#
+# texte = chaine de caracteres contenant des instructions gibi
+# de post-traitements
+#
+# ------------------------------------------------------------------------------
+def write_subpart_file_pgib_POST(MCL_SOUS_EPAIS,NLX,NLY):
+ CAR3 = ('fdro','exdr','extr','exga','fgau','inga','intr','indr')
+
+ POIVIR = ' ;\n'
+ texte='* DEBUT POINTS DE POST-TRAITEMENT\n'
+ texte=texte+'*\n'
+ issep=0
+ for ssep in MCL_SOUS_EPAIS:
+ issep=issep+1
+ texte=texte+'*\n'
+ texte=texte+'* sous-epaisseur No '+str( issep)+'\n'
+ texte=texte+'*\n'
+ if ssep['TYPE'] == 'ELLI':
+ texte=texte+'*\n'
+ texte=texte+'* plans circonf longi et colonne centrale \n'
+ texte=texte+'*\n'
+ texte=texte+'pcirc'+str( issep)+' = circo .'+str(issep).rjust(4)+POIVIR
+ texte=texte+'plong'+str( issep)+' = longi .'+str(issep).rjust(4)+POIVIR
+ texte=texte+'pcent'+str( issep)+' = centr .'+str(issep).rjust(4)+POIVIR
+ texte=texte+'*\n'
+ texte=texte+'* ligaments tous les 45 degres a epaisseur minimale \n'
+ texte=texte+'*\n'
+ texte=texte+'isep = '+str( issep)+POIVIR
+ for k in range(8):
+ texte=texte+'ilig = '+str(k+1)+POIVIR
+ texte=texte+'rlig = ilig/10. + isep'+POIVIR
+ texte=texte+str(CAR3[k])+str( issep)+' = lig45 . rlig'+POIVIR
+ if ssep['TYPE'] == 'ELLI':
+ texte=texte+'*\n'
+ texte=texte+"* ligaments circonferentiels a l'epaisseur minimale\n"
+ texte=texte+'*\n'
+ texte=texte+'isep = '+str(issep)+POIVIR
+ for k in range(2*NLX[issep-1]+1):
+ texte=texte+'ilig = '+str(k+1)+POIVIR
+ texte=texte+'rlig = ilig/100. + isep'+POIVIR
+ texte=texte+'cir'+str(issep)+'_'+str(k+1)+' = ligcir . rlig'+POIVIR
+ texte=texte+'*\n'
+ texte=texte+"* ligaments longitudinaux a l'epaisseur minimale\n"
+ texte=texte+'* \n'
+ for k in range(2*NLY[issep-1]+1):
+ texte=texte+'ilig = '+str(k+1)+POIVIR
+ texte=texte+'rlig = ilig/100. + isep'+POIVIR
+ texte=texte+'lon'+str(issep)+'_'+str(k+1)+' = liglon . rlig'+POIVIR
+ texte=texte+'* FIN POINTS DE POST-TRAITEMENT\n'
+ return texte
+
+################################################################################
+################################################################################
+################################################################################
+# MACR_ASCOUF_MAIL write_file_pgib_ASCSQ2
+#
+# ECRIT DANS UN FICHIER LES DONNEES GIBI DE LA PROCEDURE
+# "PLAQUE SOUS-EPAISSEURS"
+# IL S'AGIT DE LA DEUXIEME PARTIE ( APRES LES DONNEES UTILISATEUR )
+#
+#
+#-----------------DONNEES FOURNIES PAR L'UTILISATEUR--------------------
+#
+# NLX = NOMBRE TOTAL D'ELEMENTS CIRCONF. DE LA SOUS-EPAISSEUR K
+# NLY = NOMBRE TOTAL D'ELEMENTS LONGIT. DE LA SOUS-EPAISSEUR K
+
+# ------------------------------------------------------------------------------
+def write_file_pgib_ASCSQ2(MCL_SOUS_EPAIS,NLX,NLY):
+ POIVIR = ' ;\n'
+ texte=write_subpart_file_pgib_POST(MCL_SOUS_EPAIS,NLX,NLY)
+ texte=texte+'*\n'
+ texte=texte+'p1 = 0. 0. (-1.*lt1)'+POIVIR
+ texte=texte+'p2 = 0. 0. (coor 3 bou3)'+POIVIR
+ texte=texte+'ma = coude et p1 et p2'+POIVIR
+ texte=texte+"opti sauv form 'fort.8'"+POIVIR
+ texte=texte+'sort ma'+POIVIR
+ texte=texte+'sauv form ma'+POIVIR
+ texte=texte+'fin'+POIVIR
+ fpgib=open('fort.71','w')
+ fpgib.write(texte)
+ fpgib.close()
+
+################################################################################
+################################################################################
+################################################################################
+# MACR_ASCOUF_MAIL write_file_pgib_ASCSP1
+#
+# ECRIT DANS UN FICHIER LES DONNEES GIBI DE LA PROCEDURE
+# "PLAQUE SOUS-EPAISSEURS"
+# IL S'AGIT DE LA PREMIERE PARTIE ( AVANT LES DONNEES UTILISATEUR )
+#
+#
+# ------------------------------------------------------------------------------
+def write_file_dgib_ASCSP1(nomFichierDATG,TYPELE,MCL_SOUS_EPAIS,NIVMAG,loc_datg):
+
+ POIVIR = ' ;\n'
+ texte=' nivmag = '+str(NIVMAG)+POIVIR
+ texte=texte+' option dime 3 elem '+TYPELE+' nive nivmag echo 0 '+POIVIR
+ texte=texte+'*\n'
+ texte=texte+'bg = table '+POIVIR
+ texte=texte+'bd = table '+POIVIR
+ texte=texte+'bi = table '+POIVIR
+ texte=texte+'bs = table '+POIVIR
+ texte=texte+'indbg = table '+POIVIR
+ texte=texte+'indbd = table '+POIVIR
+ texte=texte+'indbi = table '+POIVIR
+ texte=texte+'indbs = table '+POIVIR
+ texte=texte+'axecir = table '+POIVIR
+ texte=texte+'axelon = table '+POIVIR
+ texte=texte+'axelonc = table '+POIVIR
+ texte=texte+'coorzc = table '+POIVIR
+ texte=texte+'prof = table '+POIVIR
+ texte=texte+'posit = table '+POIVIR
+ texte=texte+'coory = table '+POIVIR
+ texte=texte+'coorz = table '+POIVIR
+ texte=texte+'deny = table '+POIVIR
+ texte=texte+'nbely = table '+POIVIR
+ texte=texte+'denz = table '+POIVIR
+ texte=texte+'nbelz = table '+POIVIR
+ texte=texte+'axisym = table '+POIVIR
+ texte=texte+'sousep = table '+POIVIR
+ texte=texte+'* \n'
+ texte = texte + open(os.path.join(loc_datg, 'ascouf_ssep_mult_v1.datg'), 'r').read()
+# texte=texte+'opti donn '
+# texte=texte+"'"+loc_datg+'ascouf_ssep_mult_v1.datg'+"';\n"
+ fdgib=open(nomFichierDATG,'w')
+ fdgib.write(texte)
+ fdgib.close()
+
+################################################################################
+################################################################################
+################################################################################
+# MACR_ASCOUF_MAIL write_file_pgib_ASCSDO
+#
+# ECRIT DANS UN FICHIER LES DONNEES GIBI DE LA PROCEDURE
+# "PLAQUE SOUS-EPAISSEURS"
+#
+#-----------------DONNEES FOURNIES PAR L'UTILISATEUR--------------------
+#
+# RM = RAYON MOYEN DU COUDE
+# RC = RAYON DE CINTRAGE DU COUDE
+# ALPHA = ANGLE DU COUDE
+# EP = EPAISSEUR DU COUDE
+# LTCHAR = LONGUEUR DE L'EMBOUT DU COTE CHARGEMENT
+# LCLIM = LONGUEUR DE L'EMBOUT DU COTE CONDITIONS AUX LIMITES
+# GEOM = TYPE DE GEOMETRIE MODELISEE (COUDE OU TUBE)
+# SYME = QUART DE STRUCTURE SI 'OUI'
+# INDBG = INDICATEUR BORD GAUCHE DE LA ZONE CIRCONF J
+# INDBD = INDICATEUR BORD DROIT DE LA ZONE CIRCONF J
+# BG = ABSCISSE DU BORD GAUCHE DE LA ZONE CIRCONF J
+# BD = ABSCISSE DU BORD DROIT DE LA ZONE CIRCONF J
+# BI = ORDONNEE DU BORD INFERIEUR DE LA ZONE LONGI J
+# BS = ORDONNEE DU BORD SUPERIEUR DE LA ZONE LONGI J
+# INDBI = INDICATEUR BORD INFERIEUR DE LA ZONE LONGI J
+# INDBS = INDICATEUR BORD SUPERIEUR DE LA ZONE LONGI J
+# INDSEX = NUMERO DE SOUS-EPAISSEUR CONTENU DANS LA ZONE CIRCONF J
+# INDSEY = NUMERO DE SOUS-EPAISSEUR CONTENU DANS LA ZONE LONGI J
+# DNX = DENSITE ET NOMBRE D'ELEMENTS CIRCONF. DE LA ZONE J
+# DNY = DENSITE ET NOMBRE D'ELEMENTS LONGIT. DE LA ZONE J
+# NZONEX = NOMBRE DE ZONES CIRCONFERENTIELLES
+# NZONEY = NOMBRE DE ZONES LONGITUDINALES
+#
+# ------------------------------------------------------------------------------
+def write_file_pgib_ASCSDO(RM,RC,ALPHA,EP,LTCLIM,LTCHAR,NBEP,
+ NZONEX,NZONEY,BG,BD,BI,BS,INDBG,INDBD,INDBI,INDBS,
+ DNX,DNY,MCL_SOUS_EPAIS,GEOM,SYME):
+
+ POIVIR = ' ;\n'
+ NY=20
+ DELTAY=2.*pi*RM/NY
+
+ def nint(x):
+ if 0<ceil(x)-x<=0.5:
+ return int(ceil(x))
+ else:
+ return int(floor(x))
+
+# conversion des densites de raffinement des embout en degres par rapport
+# a l'angle du coude
+ RTMP=nint(LTCHAR/DELTAY)*DELTAY/4.
+ DENSTU = RTMP*360./(2.*pi*RC)
+ DENSGV = DENSTU
+ NZT=0
+ NZGV=0
+
+ texte='* DEBUT PARAMETRES UTILISATEUR \n'
+ texte=texte+'*\n'
+ texte=texte+'* parametres generaux\n'
+ texte=texte+'*\n'
+ texte=texte+'rm = '+str(RM) +POIVIR
+ texte=texte+'rc = '+str(RC) +POIVIR
+ texte=texte+'alphac = '+str(ALPHA) +POIVIR
+ texte=texte+'epc = '+str(EP) +POIVIR
+ texte=texte+'pirad = '+str(pi) +POIVIR
+ texte=texte+'lgv = '+str(LTCLIM) +POIVIR
+ texte=texte+'lt = '+str(LTCHAR) +POIVIR
+ texte=texte+'lcoude = '+str(ALPHA*pi/180.*RC) +POIVIR
+ if GEOM == 'COUDE':
+ texte=texte+"zcoude = 'oui' " +POIVIR
+ else:
+ texte=texte+"zcoude = 'non' " +POIVIR
+ if SYME == 'ENTIER':
+ texte=texte+"zsyme = 'entier' " +POIVIR
+ elif SYME == 'QUART':
+ texte=texte+"zsyme = 'quart' " +POIVIR
+ else:
+ texte=texte+"zsyme = 'demi' " +POIVIR
+ texte=texte+'nxep = '+str(NBEP) +POIVIR
+ texte=texte+'nzt = '+str(NZT) +POIVIR
+ texte=texte+'nzgv = '+str(NZGV) +POIVIR
+ texte=texte+'daxhtu = '+str(DENSTU) +POIVIR
+ texte=texte+'daxhgv = '+str(DENSGV) +POIVIR
+ texte=texte+'*\n'
+
+ texte=texte+'* Zones couvertes en circonference\n'
+ texte=texte+'*\n'
+ for j in range(NZONEX):
+ texte=texte+'bg .' +str(j+1).rjust(23)+' = '+str(BG[j]-pi*RM) +POIVIR
+ texte=texte+'bd .' +str(j+1).rjust(23)+' = '+str(BD[j]-pi*RM) +POIVIR
+ texte=texte+'indbg .'+str(j+1).rjust(23)+' = '+str(INDBG[j]) +POIVIR
+ texte=texte+'indbd .'+str(j+1).rjust(23)+' = '+str(INDBD[j]) +POIVIR
+ texte=texte+'deny .' +str(j+1).rjust(23)+' = '+str(DNX[2*j]) +POIVIR
+ texte=texte+'nbely .'+str(j+1).rjust(23)+' = '+str(int(DNX[2*j+1])) +POIVIR
+ texte=texte+'*\n'
+
+ texte=texte+'* Zones couvertes longitudinalement\n'
+ texte=texte+'*\n'
+ for j in range(NZONEY):
+ texte=texte+'bi .' +str(j+1).rjust(23)+' = '+str(BI[j]) +POIVIR
+ texte=texte+'bs .' +str(j+1).rjust(23)+' = '+str(BS[j]) +POIVIR
+ texte=texte+'indbi .'+str(j+1).rjust(23)+' = '+str(INDBI[j]) +POIVIR
+ texte=texte+'indbs .'+str(j+1).rjust(23)+' = '+str(INDBS[j]) +POIVIR
+ texte=texte+'denz .' +str(j+1).rjust(23)+' = '+str(DNY[2*j]) +POIVIR
+ texte=texte+'nbelz .'+str(j+1).rjust(23)+' = '+str(int(DNY[2*j+1])) +POIVIR
+ texte=texte+'*\n'
+
+ texte=texte+'* Caracteristiques des sous-epaisseurs\n'
+ texte=texte+'*\n'
+ issep=0
+ for ssep in MCL_SOUS_EPAIS:
+ issep=issep+1
+ texte=texte+'axecir .' +str(issep).rjust(23)+' = '+str(ssep.ICIRP) +POIVIR
+ texte=texte+'axelon .' +str(issep).rjust(23)+' = '+str(ssep.ILONP) +POIVIR
+ texte=texte+'prof .' +str(issep).rjust(23)+' = '+str(ssep['PROFONDEUR'])+POIVIR
+ texte=texte+'coory .' +str(issep).rjust(23)+' = '+str(ssep.ISCP-pi*RM) +POIVIR
+ texte=texte+'coorz .' +str(issep).rjust(23)+' = '+str(ssep.ISLP) +POIVIR
+ texte=texte+'posit .' +str(issep).rjust(23)+" = '"+str(ssep['SOUS_EPAIS'].lower())+"'"+POIVIR
+ texte=texte+'axelonc .'+str(issep).rjust(23)+' = '+str(ssep['AXE_LONGI']) +POIVIR
+ if ssep['POSI_CURV_LONGI']!=None:
+ texte=texte+'coorzc .'+str(issep).rjust(23)+' = '+str(ssep['POSI_CURV_LONGI'])+POIVIR
+ else:
+ DZC=ssep.BETA*pi*(RC+(RM+EP/2.)*cos(pi/2.))/180.
+ texte=texte+'coorzc .'+str(issep).rjust(23)+' = '+str(DZC)+POIVIR
+ if ssep['TYPE']=='AXIS':
+ texte=texte+'axisym .'+str(issep).rjust(23)+" = 'oui'"+POIVIR
+ else:
+ texte=texte+'axisym .'+str(issep).rjust(23)+" = 'non'"+POIVIR
+ if ssep['EMPREINTE'] == 'OUI':
+ texte=texte+'sousep .'+str(issep).rjust(23)+" = 'oui'"+POIVIR
+ else:
+ texte=texte+'sousep .'+str(issep).rjust(23)+" = 'non'"+POIVIR
+ texte=texte+'* \n'
+ texte=texte+'* FIN PARAMETRES UTILISATEUR\n'
+ fpgib=open('fort.71','w')
+ fpgib.write(texte)
+ fpgib.close()
+
+
+
+################################################################################
+################################################################################
+################################################################################
+
+# ------------------------------------------------------------------------------
+def write_file_pgib_ASCSP2(MCL_SOUS_EPAIS,NLX,NLY):
+
+ POIVIR = ' ;\n'
+ texte='*\n'
+ texte=texte+'coude extube bord1 clgv bord2 peauext peauint placoude platube\n'
+ texte=texte+'plagv longi circo centr bou1 bou3 ligmed ligtub liggv lig45\n'
+ texte=texte+'ligcir liglon bordtu\n'
+ texte=texte+'= PLAQSEP bg bd bi bs indbg indbd indbi indbs rm rc\n'
+ texte=texte+'alphac pirad epc lt lgv coory coorz axecir axelon prof zsyme posit\n'
+ texte=texte+'lcoude nxep sousep deny nbely denz nbelz axelonc coorzc axisym\n'
+ texte=texte+'daxhtu daxhgv nzt nzgv zcoude'+POIVIR
+ texte=texte+'fdromi = ligmed . 1'+POIVIR
+ texte=texte+'exdrmi = ligmed . 2'+POIVIR
+ texte=texte+'extrmi = ligmed . 3'+POIVIR
+ texte=texte+'exgami = ligmed . 4'+POIVIR
+ texte=texte+'fgaumi = ligmed . 5'+POIVIR
+ texte=texte+'ingami = ligmed . 6'+POIVIR
+ texte=texte+'intrmi = ligmed . 7'+POIVIR
+ texte=texte+'indrmi = ligmed . 8'+POIVIR
+ texte=texte+'fdrotu = ligtub . 1'+POIVIR
+ texte=texte+'exdrtu = ligtub . 2'+POIVIR
+ texte=texte+'extrtu = ligtub . 3'+POIVIR
+ texte=texte+'exgatu = ligtub . 4'+POIVIR
+ texte=texte+'fgautu = ligtub . 5'+POIVIR
+ texte=texte+'ingatu = ligtub . 6'+POIVIR
+ texte=texte+'intrtu = ligtub . 7'+POIVIR
+ texte=texte+'indrtu = ligtub . 8'+POIVIR
+ texte=texte+"si (ega zsyme 'entier')"+POIVIR
+ texte=texte+' fdrogv = liggv . 1'+POIVIR
+ texte=texte+' exdrgv = liggv . 2'+POIVIR
+ texte=texte+' extrgv = liggv . 3'+POIVIR
+ texte=texte+' exgagv = liggv . 4'+POIVIR
+ texte=texte+' fgaugv = liggv . 5'+POIVIR
+ texte=texte+' ingagv = liggv . 6'+POIVIR
+ texte=texte+' intrgv = liggv . 7'+POIVIR
+ texte=texte+' indrgv = liggv . 8'+POIVIR
+ texte=texte+'finsi'+POIVIR
+ texte=texte+'*\n'
+
+ text2=write_subpart_file_pgib_POST(MCL_SOUS_EPAIS,NLX,NLY)
+ texte=texte+text2
+
+ texte=texte+'*\n'
+ texte=texte+'*oeil = 10000. 0. 0.' +POIVIR
+ texte=texte+'*trac oeil cach coude'+POIVIR
+ texte=texte+'*opti donn 5' +POIVIR
+ texte=texte+'p1 = 0. 0. (-1.*lt)'+POIVIR
+ texte=texte+'p2 = 0. 0. (coor 3 bou3)'+POIVIR
+ texte=texte+'ma = coude et p1 et p2'+POIVIR
+ texte=texte+'sort ma'+POIVIR
+ texte=texte+'neu = nbno ma'+POIVIR
+ texte=texte+"mess 'nombre de noeuds : 'neu"+POIVIR
+ texte=texte+"opti sauv form 'fort.8'"+POIVIR
+ texte=texte+'sauv form ma'+POIVIR
+ texte=texte+'fin'+POIVIR
+ fpgib=open('fort.71','a')
+ fpgib.write(texte)
+ fpgib.close()
+
+################################################################################
+################################################################################
+################################################################################
+
+# ------------------------------------------------------------------------------
+def write_file_dgib_ASCRDO(nomFichierDATG,TYPELE,NIVMAG,TYPBOL,ALPHA,RC,RM,EP,SUREP,
+ LTCLIM,LTCHAR,NBEP,loc_datg):
+
+ NY=20
+ CZ=ALPHA*RC*pi/180.
+ NZC=int((ALPHA+0.00001)/5.)
+ DELTAY=2.*pi*RM/20
+ DELTAZ=CZ/NZC
+ DENEXT=int(LTCHAR/DELTAY)*DELTAY/4.
+ NZT=0
+ NZGV=0
+
+ if TYPBOL!=None:
+ if TYPBOL=='CUVE' : TYPEMB = 'typcuv'
+ if TYPBOL=='GV' : TYPEMB = 'typegv'
+ if TYPBOL=='ASP_MPP' : TYPEMB = 'typapp'
+ else:
+ TYPEMB =' '
+
+ POIVIR = ' ;\n'
+ texte='* DEBUT PARAMETRES UTILISATEUR\n'
+ texte=texte+'*\n'
+ texte=texte+'* Parametres generaux\n'
+ texte=texte+'*\n'
+ texte=texte+'nivmag = '+str(NIVMAG) +POIVIR
+ texte=texte+'option dime 3 elem '+TYPELE+' nive nivmag echo 0'+POIVIR
+ texte=texte+'rm = '+str(RM) +POIVIR
+ texte=texte+'rc = '+str(RC) +POIVIR
+ texte=texte+'alphac = '+str(ALPHA) +POIVIR
+ texte=texte+'epc = '+str(EP) +POIVIR
+ texte=texte+'surep = '+str(SUREP) +POIVIR
+ texte=texte+'lgv = '+str(LTCLIM) +POIVIR
+ texte=texte+'lt = '+str(LTCHAR) +POIVIR
+ texte=texte+"typembou = '"+TYPEMB+"'" +POIVIR
+ texte=texte+'nx = '+str(NBEP) +POIVIR
+ texte=texte+'ny = '+str(NY) +POIVIR
+ texte=texte+"pos = 'bidon'" +POIVIR
+ texte=texte+'l1 = 0.' +POIVIR
+ texte=texte+'lbloc = 0.' +POIVIR
+ texte=texte+'crit = 0.0001' +POIVIR
+ texte=texte+'crit2 = 0.01' +POIVIR
+ texte=texte+'epsit = 1.e-3' +POIVIR
+ texte=texte+'pirad = '+str(pi) +POIVIR
+ texte=texte+'nzc = '+str(NZC) +POIVIR
+ texte=texte+'teta_f = '+str(pi/2.) +POIVIR
+ texte=texte+'zpp31 = '+str(CZ) +POIVIR
+ texte=texte+'daxbtu = '+str(DENEXT) +POIVIR
+ texte=texte+'daxhtu = '+str(DELTAZ) +POIVIR
+ texte=texte+'daxbgv = '+str(DELTAZ) +POIVIR
+ texte=texte+'daxhgv = '+str(DENEXT) +POIVIR
+ texte=texte+'nzt = '+str(NZT) +POIVIR
+ texte=texte+'nzgv = '+str(NZGV) +POIVIR
+ texte=texte+'*\n'
+ texte=texte+'* FIN PARAMETRES UTILISATEUR\n'
+ texte = texte + open(os.path.join(loc_datg, 'ascouf_regl_v1.datg'), 'r').read()
+# texte=texte+'opti donn '
+# texte=texte+"'"+loc_datg+'ascouf_regl_v1.datg'+"';\n"
+ fdgib=open(nomFichierDATG,'w')
+ fdgib.write(texte)
+ fdgib.close()
+
+################################################################################
+################################################################################
+################################################################################
+# ------------------------------------------------------------------------------
+def macr_ascouf_mail_ops(self,EXEC_MAILLAGE,TYPE_ELEM,COUDE,
+ SOUS_EPAIS_COUDE,SOUS_EPAIS_MULTI,
+ FISS_COUDE,IMPRESSION,INFO,**args):
+ """
+ Ecriture de la macro MACR_ASCOUF_MAIL
+ """
+ from Accas import _F
+ import types
+ import aster
+
+ ier=0
+
+# On importe les definitions des commandes a utiliser dans la macro
+ EXEC_LOGICIEL =self.get_cmd('EXEC_LOGICIEL')
+ PRE_GIBI =self.get_cmd('PRE_GIBI')
+ LIRE_MAILLAGE =self.get_cmd('LIRE_MAILLAGE')
+ DEFI_GROUP =self.get_cmd('DEFI_GROUP')
+ MODI_MAILLAGE =self.get_cmd('MODI_MAILLAGE')
+ AFFE_MODELE =self.get_cmd('AFFE_MODELE')
+ CREA_MAILLAGE =self.get_cmd('CREA_MAILLAGE')
+ DEFI_FICHIER =self.get_cmd('DEFI_FICHIER')
+ IMPR_RESU =self.get_cmd('IMPR_RESU')
+
+# La macro compte pour 1 dans la numerotation des commandes
+ self.set_icmd(1)
+
+
+ TYPELE = TYPE_ELEM
+ NIVMAG = EXEC_MAILLAGE['NIVE_GIBI']
+ PRECIS = 0.01
+ CRITER = 'RELATIF'
+ CAR3 = ('IFDRO','IEXDR','IEXTR','IEXGA','IFGAU','IINGA','IINTR','IINDR')
+ CAR4 = ('NOFDRO','NOEXDR','NOEXTR','NOEXGA','NOFGAU','NOINGA','NOINTR','NOINDR')
+ CAR5 = ('NEFDRO','NEEXDR','NEEXTR','NEEXGA','NEFGAU','NEINGA','NEINTR','NEINDR')
+ CAR6 = ('FDRO','EXDR','EXTR','EXGA','FGAU','INGA','INTR','INDR')
+ SECT = ('MI','TU','GV')
+
+#
+################################################################################
+# --- caracteristiques du coude ---
+################################################################################
+#
+ GEOM =COUDE['TRANSFORMEE']
+ ALPHA =COUDE['ANGLE']
+ RC =COUDE['R_CINTR']
+ LTCHAR =COUDE['L_TUBE_P1']
+ LTCLIM =COUDE['L_TUBE_P2']
+ NBEP =COUDE['NB_ELEM_EPAIS']
+ SYME =COUDE['SYME']
+ SUREP =0.0
+ TYPBOL = None
+#
+ if COUDE['TRANSFORMEE']=='COUDE' or COUDE['TRAN_EPAIS']=='NON' :
+ SUREP=COUDE['SUR_EPAIS']
+ TYPBOL =COUDE['BOL_P2']
+ DEXT = COUDE['DEXT']
+ EP1 = COUDE['EPAIS']
+ EP2 = EP1
+ EPI = 0.0
+ TETA1 = 0.0
+ TETA2 = 0.0
+ LTRAN = 0.0
+ NBTRAN = 0
+ else:
+ NBTRAN = 1
+ if COUDE['SYME']!='ENTIER':
+ print ' <MACR_ASCOUF_MAIL> les quart et demi structure'
+ print ' <MACR_ASCOUF_MAIL> ne peuvent etre realisees '
+ print ' <MACR_ASCOUF_MAIL> sur un modele comportant une transition '
+ print ' <MACR_ASCOUF_MAIL> d epaisseur '
+ self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
+ ier = ier+1
+ return ier
+#
+ DEXT = COUDE['DEXT_T1']
+ EP1 = COUDE['EPAIS_T1']
+ EP2 = COUDE['EPAIS_T2']
+ TETA1 = COUDE['ANGL_TETA1']
+ TETA2 = 0.0
+ EPI = 0.0
+ if COUDE['ANGL_TETA2']!=None :
+ NBTRAN = 2
+ TETA2 = COUDE['ANGL_TETA2']
+ EPI = COUDE['EPAIS_TI']
+#
+ if COUDE['ABSC_CURV_TRAN']!=None :
+ LTRAN = COUDE['ABSC_CURV_TRAN']
+ else :
+ LTRAN = COUDE['POSI_ANGU_TRAN']* RC * pi / 180.0
+#
+ RM = (DEXT-EP1)/2.0
+ RM2 = RM + (EP2-EP1)/2.0
+ R1 = RC
+ R2 = RM
+ E = EP1
+#
+ if COUDE['SYME']!='ENTIER' and (LTCHAR!=LTCLIM) :
+ print ' <MACR_ASCOUF_MAIL> les deux embouts doivent etre'
+ print ' <MACR_ASCOUF_MAIL> de meme longueur pour les cas de symetrie '
+ self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
+ ier = ier+1
+ return ier
+#
+ LAMOR = 3.0/2.0 * sqrt( RM*RM*RM / EP1)
+ if LTCHAR<LAMOR :
+ print ' <MACR_ASCOUF_MAIL> longueur d embout P1 inferieure'
+ print ' <MACR_ASCOUF_MAIL> a la longueur d amortissement = ',LAMOR
+ print ' <A> <MACR_ASCOUF_MAIL> alarme'
+#
+ LAMOR = 3.0/2.0 * sqrt( RM2*RM2*RM2 / EP2)
+ if LTCLIM<LAMOR :
+ print ' <MACR_ASCOUF_MAIL> longueur d embout P2 inferieure'
+ print ' <MACR_ASCOUF_MAIL> a la longueur d amortissement = ',LAMOR
+ print ' <A> <MACR_ASCOUF_MAIL> alarme'
+#
+ if TYPBOL!=None:
+ if TYPBOL[:1]=='GV' :
+ print ' <MACR_ASCOUF_MAIL> la condition aux limites raccord'
+ print ' <MACR_ASCOUF_MAIL> 3d-poutre appliquee avec la macro de calcul'
+ print ' <MACR_ASCOUF_MAIL> ascouf n est pas licite avec un embout'
+ print ' <MACR_ASCOUF_MAIL> de type conique'
+ print ' <A> <MACR_ASCOUF_MAIL> alarme'
+#
+################################################################################
+# --- caracteristiques de la fissure ---
+################################################################################
+#
+ if FISS_COUDE!=None:
+ if NBEP!=3:
+ print ' <MACR_ASCOUF_MAIL> le nombre d elements dans l epaisseur'
+ print ' <MACR_ASCOUF_MAIL> du coude n est pas parametrable pour'
+ print ' <MACR_ASCOUF_MAIL> un coude avec fissure'
+ print ' <MACR_ASCOUF_MAIL> mot-cle NB_ELEM_EPAIS ignore'
+ print ' <A> <MACR_ASCOUF_MAIL> alarme'
+ FPROF = FISS_COUDE['PROFONDEUR']
+ FAXI = FISS_COUDE['AXIS']
+ if FAXI=='NON' and FISS_COUDE['LONGUEUR']==None :
+ print ' <MACR_ASCOUF_MAIL> pour les fissures non axisymetriques'
+ print ' <MACR_ASCOUF_MAIL> la longueur doit etre specifiee '
+ self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
+ ier = ier+1
+ return ier
+ if FAXI=='OUI' and FISS_COUDE['LONGUEUR']!=None :
+ print ' <MACR_ASCOUF_MAIL> la fissure est axisymetrique : on ne'
+ print ' <MACR_ASCOUF_MAIL> tient pas compte de la longueur specifiee'
+ print ' <A> <MACR_ASCOUF_MAIL> alarme'
+ if FISS_COUDE['LONGUEUR']!=None : FLONG = FISS_COUDE['LONGUEUR']
+ if FAXI=='OUI' :
+#### on prend une marge de securite a cause des modifs dans ascfis
+ FLONG = 2.0 * pi * (RM + EP1)
+ if FISS_COUDE['ABSC_CURV']!=None :
+ SF = FISS_COUDE['ABSC_CURV']
+ LDEFAU = SF
+ BETA = 0.0
+ else:
+ SF = 0.0
+ BETA = FISS_COUDE['POSI_ANGUL']
+ LDEFAU = BETA * RC * pi / 180.0
+ AZIM = FISS_COUDE['AZIMUT']
+ ORIEN = FISS_COUDE['ORIEN']
+ POSIT = FISS_COUDE['FISSURE']
+ NT = FISS_COUDE['NB_TRANCHE']
+ NS = FISS_COUDE['NB_SECTEUR']
+ NC = FISS_COUDE['NB_COURONNE']
+ if FISS_COUDE['RAYON_TORE']!=None : RC0 = FISS_COUDE['RAYON_TORE']
+ else : RC0 = 0.
+ if FISS_COUDE['COEF_MULT_RC2']!=None : RC2 = FISS_COUDE['COEF_MULT_RC2']
+ else : RC2 = 0.
+ if FISS_COUDE['COEF_MULT_RC3']!=None : RC3 = FISS_COUDE['COEF_MULT_RC3']
+ else : RC3 = 0.
+ EPSI = FISS_COUDE['ANGL_OUVERTURE']
+ OR = ORIEN
+ AZ = AZIM
+ POS = POSIT
+ DGAXEC = FLONG/2.0
+ DC = DGAXEC
+ if ORIEN!=90.0 and NBTRAN!=0 :
+ print ' <MACR_ASCOUF_MAIL> avec une transition d epaisseur'
+ print ' <MACR_ASCOUF_MAIL> la fissure doit obligatoirement etre transverse '
+ self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
+ ier = ier+1
+ return ier
+ if ORIEN!=90.0 and NBTRAN!=0 :
+ print ' <MACR_ASCOUF_MAIL> avec une transition d epaisseur'
+ print ' <MACR_ASCOUF_MAIL> la fissure doit obligatoirement etre transverse '
+ self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
+ ier = ier+1
+ return ier
+ if ORIEN!=90.0 and COUDE['SYME']!='ENTIER' :
+ print ' <MACR_ASCOUF_MAIL> l orientation de la fissure doit'
+ print ' <MACR_ASCOUF_MAIL> etre transverse (orien : 90.) pour modeliser '
+ print ' <MACR_ASCOUF_MAIL> un quart ou une demi structure '
+ self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
+ ier = ier+1
+ return ier
+ if ORIEN!=90.0 and FAXI=='OUI' :
+ print ' <MACR_ASCOUF_MAIL> la fissure est axisymetrique : son'
+ print ' <MACR_ASCOUF_MAIL> orientation doit etre transverse (ORIEN : 90.)'
+ self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
+ ier = ier+1
+ return ier
+#
+################################################################################
+# --- caracteristiques des sous epaisseurs ---
+################################################################################
+#
+ isep = 0
+ MCL_SOUS_EPAIS = None
+ if SOUS_EPAIS_MULTI!=None : MCL_SOUS_EPAIS = SOUS_EPAIS_MULTI
+ if SOUS_EPAIS_COUDE!=None : MCL_SOUS_EPAIS = SOUS_EPAIS_COUDE
+ if SOUS_EPAIS_MULTI!=None and NBTRAN!=0 :
+ print ' <MACR_ASCOUF_MAIL> il ne peut pas y avoir plusieurs'
+ print ' <MACR_ASCOUF_MAIL> sous-epaisseurs en meme temps qu une'
+ print ' <MACR_ASCOUF_MAIL> transition d epaisseur : si une seule'
+ print ' <MACR_ASCOUF_MAIL> sous-epaisseur utiliser sous_epais_coude'
+ self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
+ ier = ier+1
+ return ier
+ if SOUS_EPAIS_COUDE!=None and FISS_COUDE!=None and NBTRAN!=0 :
+ print ' <MACR_ASCOUF_MAIL> avec une transition d epaisseur'
+ print ' <MACR_ASCOUF_MAIL> il doit obligatoirement y avoir un defaut'
+ print ' <MACR_ASCOUF_MAIL> soit une fissure soit une sous-epaisseur'
+ self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
+ ier = ier+1
+ return ier
+ if MCL_SOUS_EPAIS!=None :
+ AZIM = 90.0
+ if MCL_SOUS_EPAIS.__class__.__name__ !='MCList' : MCL_SOUS_EPAIS=[MCL_SOUS_EPAIS,]
+ if len(MCL_SOUS_EPAIS)!=1 and COUDE['SYME']!='ENTIER' :
+ print ' <MACR_ASCOUF_MAIL> ne modeliser qu une seule'
+ print ' <MACR_ASCOUF_MAIL> sous-epaisseur pour un quart ou demi-coude'
+ self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
+ ier = ier+1
+ return ier
+ for ssep in MCL_SOUS_EPAIS :
+ isep=isep+1
+ if ssep['AXE_CIRC']!=None and ssep['TYPE']=='AXIS' :
+ print ' <MACR_ASCOUF_MAIL> vous ne pouvez declarer la sous-'
+ print ' <MACR_ASCOUF_MAIL> epaisseur comme axisymetrique et donner'
+ print ' <MACR_ASCOUF_MAIL> une taille d axe circonferentiel'
+ self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
+ ier = ier+1
+ return ier
+ if ssep['AXE_CIRC']==None and ssep['TYPE']=='ELLI' :
+ print ' <MACR_ASCOUF_MAIL> vous devez donner une taille d axe'
+ print ' <MACR_ASCOUF_MAIL> circonferentiel pour une sous-epaisseur de'
+ print ' <MACR_ASCOUF_MAIL> type elliptique'
+ self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
+ ier = ier+1
+ return ier
+ if ssep['POSI_CURV_LONGI']!=None:
+ if ssep['POSI_CURV_LONGI']>(ALPHA*RC*pi/180.0) :
+ print ' <MACR_ASCOUF_MAIL> valeur hors domaine de validite'
+ print ' <MACR_ASCOUF_MAIL> sous-epaisseur numero :',isep
+ print ' <MACR_ASCOUF_MAIL> abscisse curv. longit. :',ssep['POSI_CURV_LONGI']
+ print ' <MACR_ASCOUF_MAIL> valeur maximale autorisee :',(ALPHA*RC*pi/180.0)
+ self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
+ ier = ier+1
+ return ier
+ LDEFAU = ssep['POSI_CURV_LONGI'] + ssep['AXE_LONGI']/2.0
+ BETA = 0.0
+ else:
+ BETA=ssep['POSI_ANGUL']
+ if (BETA<0.) or (BETA>ALPHA) :
+ print ' <MACR_ASCOUF_MAIL> valeur hors domaine de validite'
+ print ' <MACR_ASCOUF_MAIL> sous-epaisseur numero :',isep
+ print ' <MACR_ASCOUF_MAIL> position angulaire centre sous-ep :',BETA
+ print ' <MACR_ASCOUF_MAIL> valeur limite autorisee :',ALPHA
+ self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
+ ier = ier+1
+ return ier
+ LDEFAU = (BETA*RC*pi/180.0) + ssep['AXE_LONGI']/2.0
+#
+ if ssep['POSI_CURV_CIRC']!=None:
+ if ssep['POSI_CURV_CIRC']>(2*pi*RM) :
+ print ' <MACR_ASCOUF_MAIL> valeur hors domaine de validite'
+ print ' <MACR_ASCOUF_MAIL> sous-epaisseur numero :',isep
+ print ' <MACR_ASCOUF_MAIL> abscisse curv. circonf. :',ssep['POSI_CURV_CIRC']
+ print ' <MACR_ASCOUF_MAIL> valeur maximale autorisee :',(2*pi*RM)
+ self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
+ ier = ier+1
+ return ier
+ if ssep['POSI_CURV_CIRC']!=(pi*RM) and ssep['TYPE']=='AXIS':
+ print ' <MACR_ASCOUF_MAIL> le centre d une sous-epaisseur'
+ print ' <MACR_ASCOUF_MAIL> axisymetrique est impose en intrados (pi*RM)'
+ self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
+ ier = ier+1
+ return ier
+ else:
+ ssep.IPHIC=ssep['AZIMUT']
+ if ssep['AZIMUT']!=180. and ssep['TYPE']=='AXIS':
+ print ' <MACR_ASCOUF_MAIL> le centre d une sous-epaisseur'
+ print ' <MACR_ASCOUF_MAIL> axisymetrique est impose en intrados'
+ print ' <MACR_ASCOUF_MAIL> l azimut est fixe a 180 degres'
+ self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
+ ier = ier+1
+ return ier
+# l_ITYPE.append(ssep['TYPE' ])
+# l_ICIRC.append(ssep['AXE_CIRC' ])
+# l_ILONC.append(ssep['AXE_LONGI' ])
+# l_IPROC.append(ssep['PROFONDEUR' ])
+# l_ISLC.append( ssep['POSI_CURV_LONGI'])
+# l_IBETC.append(BETA)
+ ssep.BETA=BETA
+# l_ISCC.append( ssep['POSI_CURV_CIRC' ])
+# l_IPHIC.append(ssep['AZIMUT' ])
+# l_IPOS.append( ssep['SOUS_EPAIS' ])
+# l_INBEL.append(ssep['NB_ELEM_LONGI' ])
+# l_INBEC.append(ssep['NB_ELEM_CIRC' ])
+# l_IEVID.append(ssep['EMPREINTE' ])
+
+ if SOUS_EPAIS_COUDE!=None and COUDE['NB_ELEM_EPAIS']!=3 :
+ print ' <MACR_ASCOUF_MAIL> le nombre d elements dans l'
+ print ' <MACR_ASCOUF_MAIL> epaisseur du coude n est pas parametrable pour'
+ print ' <MACR_ASCOUF_MAIL> la version 2 de la procedure de plaque avec sous'
+ print ' <MACR_ASCOUF_MAIL> -epaisseur : mot-cle NB_ELEM_EPAIS ignore'
+ print ' <A> <MACR_ASCOUF_MAIL> alarme'
+#
+################################################################################
+# --- verifications de coherences ---
+################################################################################
+#
+# donnees globales
+ if COUDE['TRANSFORMEE']=='COUDE' or COUDE['TRAN_EPAIS']=='NON' :
+ if SUREP<0. or SUREP>(RM-EP1/2.0):
+ print ' <MACR_ASCOUF_MAIL> valeur hors domaine de validite'
+ print ' <MACR_ASCOUF_MAIL> surepaisseur :',SUREP
+ print ' <MACR_ASCOUF_MAIL> valeur limite autorisee (RM-EP1/2) :',(RM-EP1/2.0)
+ self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
+ ier = ier+1
+ return ier
+ if RC<=(RM+EP1/2.0):
+ print ' <MACR_ASCOUF_MAIL> valeur hors domaine de validite'
+ print ' <MACR_ASCOUF_MAIL> le rayon de cintrage :',RC
+ print ' <MACR_ASCOUF_MAIL> doit etre superieur a (RM+EP1/2) :',(RM+EP1/2.0)
+ self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
+ ier = ier+1
+ return ier
+#
+# coude fissure
+#
+ if FISS_COUDE!=None:
+ if (RM/EP1)<5. or (RM/EP1)>12.:
+ print ' <MACR_ASCOUF_MAIL> valeur hors domaine de validite (5,12)'
+ print ' <MACR_ASCOUF_MAIL> rapport RM/EP1 :',(RM/EP1)
+ self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
+ ier = ier+1
+ return ier
+ if FISS_COUDE['ABSC_CURV']!=None:
+ if SF<0. or SF>(ALPHA*RC*pi/180.0) :
+ print ' <MACR_ASCOUF_MAIL> valeur hors domaine de validite'
+ print ' <MACR_ASCOUF_MAIL> abscisse curviligne centre fissure :',SF
+ print ' <MACR_ASCOUF_MAIL> valeur limite autorisee :',(ALPHA*RC*pi/180.0)
+ self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
+ ier = ier+1
+ return ier
+ if (NT-2*(NT/2))!=0:
+ print ' <MACR_ASCOUF_MAIL> valeur hors domaine de validite'
+ print ' <MACR_ASCOUF_MAIL> nombre de tranches :',NT
+ self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
+ ier = ier+1
+ return ier
+ if FISS_COUDE['ABSC_CURV'] and ((BETA<0.) or (BETA>ALPHA)):
+ print ' <MACR_ASCOUF_MAIL> valeur hors domaine de validite'
+ print ' <MACR_ASCOUF_MAIL> position angulaire centre fissure :',BETA
+ print ' <MACR_ASCOUF_MAIL> posi_angul doit etre >= 0 et <= ',ALPHA
+ self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
+ ier = ier+1
+ return ier
+#
+# transition d epaisseur
+#
+ if NBTRAN!=0:
+ LCOUDE = ALPHA * RC * pi / 180.0
+ DEXT = 2.0*RM + EP1
+ if (LTRAN<LDEFAU) and (LTRAN>LCOUDE) :
+ print ' <MACR_ASCOUF_MAIL> valeur hors domaine de validite'
+ print ' <MACR_ASCOUF_MAIL> debut transition d epaisseur :',LTRAN
+ print ' <MACR_ASCOUF_MAIL> valeur minimale autorisee :',LDEFAU
+ print ' <MACR_ASCOUF_MAIL> valeur maximale autorisee :',LCOUDE
+ self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
+ ier = ier+1
+ return ier
+ if (TETA1<0.) or (TETA1>30.) :
+ print ' <MACR_ASCOUF_MAIL> valeur hors domaine de validite'
+ print ' <MACR_ASCOUF_MAIL> angle de transition TETA1 :',TETA1
+ print ' <MACR_ASCOUF_MAIL> valeur minimale autorisee :',0.
+ print ' <MACR_ASCOUF_MAIL> valeur maximale autorisee :',30.
+ self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
+ ier = ier+1
+ return ier
+#
+# transition d epaisseur a une pente
+#
+ if NBTRAN==1:
+ if (EP1<12.) or (EP1>80.) :
+ print ' <MACR_ASCOUF_MAIL> valeur hors domaine de validite'
+ print ' <MACR_ASCOUF_MAIL> epaisseur avant la transition :',EP1
+ print ' <MACR_ASCOUF_MAIL> valeur minimale autorisee :',12.
+ print ' <MACR_ASCOUF_MAIL> valeur maximale autorisee :',80.
+ self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
+ ier = ier+1
+ return ier
+ if (EP2<20.) or (EP2>110.) :
+ print ' <MACR_ASCOUF_MAIL> valeur hors domaine de validite'
+ print ' <MACR_ASCOUF_MAIL> epaisseur apres la transition :',EP2
+ print ' <MACR_ASCOUF_MAIL> valeur minimale autorisee :',20.
+ print ' <MACR_ASCOUF_MAIL> valeur maximale autorisee :',110.
+ self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
+ ier = ier+1
+ return ier
+ if (EP1>EP2) :
+ print ' <MACR_ASCOUF_MAIL> l epaisseur avant la transition'
+ print ' <MACR_ASCOUF_MAIL> doit etre inferieure '
+ print ' <MACR_ASCOUF_MAIL> a celle apres la transition'
+ self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
+ ier = ier+1
+ return ier
+ LTRANF = LTRAN + ((EP2-EP1)/(tan(TETA1)))
+ if (LTRANF>LCOUDE) :
+ print ' <MACR_ASCOUF_MAIL> valeur hors domaine de validite'
+ print ' <MACR_ASCOUF_MAIL> fin transition d epaisseur :',LTRANF
+ print ' <MACR_ASCOUF_MAIL> valeur limite autorisee :',LCOUDE
+ self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
+ ier = ier+1
+ return ier
+ if DEXT<112. or DEXT>880. :
+ print ' <MACR_ASCOUF_MAIL> valeur hors domaine de validite'
+ print ' <MACR_ASCOUF_MAIL> diam ext du tube avant transition:',DEXT
+ print ' <MACR_ASCOUF_MAIL> valeur minimum autorisee :',112.
+ print ' <MACR_ASCOUF_MAIL> valeur maximum autorisee :',880.
+ self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
+ ier = ier+1
+ return ier
+#
+# transition d epaisseur a une pente
+#
+ else:
+ if (TETA2<0.) or (TETA2>45.) :
+ print ' <MACR_ASCOUF_MAIL> valeur hors domaine de validite'
+ print ' <MACR_ASCOUF_MAIL> angle de transition TETA2 :',TETA2
+ print ' <MACR_ASCOUF_MAIL> valeur minimale autorisee :',0.
+ print ' <MACR_ASCOUF_MAIL> valeur maximale autorisee :',45.
+ self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
+ ier = ier+1
+ return ier
+ if (EP1<7.) or (EP1>35.) :
+ print ' <MACR_ASCOUF_MAIL> valeur hors domaine de validite'
+ print ' <MACR_ASCOUF_MAIL> epaisseur avant 1ere transition :',EP1
+ print ' <MACR_ASCOUF_MAIL> valeur minimale autorisee :',7.
+ print ' <MACR_ASCOUF_MAIL> valeur maximale autorisee :',35.
+ self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
+ ier = ier+1
+ return ier
+ if (EP2<15.) or (EP2>40.) :
+ print ' <MACR_ASCOUF_MAIL> valeur hors domaine de validite'
+ print ' <MACR_ASCOUF_MAIL> epaisseur avant 2eme transition :',EP2
+ print ' <MACR_ASCOUF_MAIL> valeur minimale autorisee :',15.
+ print ' <MACR_ASCOUF_MAIL> valeur maximale autorisee :',40.
+ self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
+ ier = ier+1
+ return ier
+ if (EPI<15.) or (EPI>40.) :
+ print ' <MACR_ASCOUF_MAIL> valeur hors domaine de validite'
+ print ' <MACR_ASCOUF_MAIL> epaisseur intermediaire :',EPI
+ print ' <MACR_ASCOUF_MAIL> valeur minimale autorisee :',15.
+ print ' <MACR_ASCOUF_MAIL> valeur maximale autorisee :',40.
+ self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
+ ier = ier+1
+ return ier
+ if (EP1>EPI) :
+ print ' <MACR_ASCOUF_MAIL> valeur hors domaine de validite'
+ print ' <MACR_ASCOUF_MAIL> l epaisseur avant la transition'
+ print ' <MACR_ASCOUF_MAIL> doit etre inferieure a l epaisseur intermediaire'
+ self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
+ ier = ier+1
+ return ier
+ if (EP2<EPI) :
+ print ' <MACR_ASCOUF_MAIL> valeur hors domaine de validite'
+ print ' <MACR_ASCOUF_MAIL> l epaisseur apres la transition'
+ print ' <MACR_ASCOUF_MAIL> doit etre inferieure a l epaisseur intermediaire'
+ self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
+ ier = ier+1
+ return ier
+ LTRANF = LTRAN + (EPI-EP1)/(tan(TETA1))
+ LTRANF = LTRANF + (EP2-EPI)/(tan(TETA2))
+ if (LTRANF>LCOUDE) :
+ print ' <MACR_ASCOUF_MAIL> valeur hors domaine de validite'
+ print ' <MACR_ASCOUF_MAIL> fin transition d epaisseur :',LTRANF
+ print ' <MACR_ASCOUF_MAIL> valeur limite autorisee :',LCOUDE
+ self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
+ ier = ier+1
+ return ier
+ if (DEXT<77.) or (DEXT>355.) :
+ print ' <MACR_ASCOUF_MAIL> valeur hors domaine de validite'
+ print ' <MACR_ASCOUF_MAIL> diam ext du tube avant transition:',LTRANF
+ print ' <MACR_ASCOUF_MAIL> valeur minimale autorisee :',77.
+ print ' <MACR_ASCOUF_MAIL> valeur maximale autorisee :',355.
+ self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
+ ier = ier+1
+ return ier
+#
+################################################################################
+# --- calcul taille initiale des defauts sur la plaque ---
+################################################################################
+#
+#
+ if FISS_COUDE!=None:
+ DSF=(FISS_COUDE['ABSC_CURV']!=None)
+ AXEAP,AXECP,SFP = ASCFIS(ALPHA, RM, RC, EP1, SUREP, GEOM, FPROF,
+ DGAXEC, AZIM, POSIT, SF, DSF, BETA, ORIEN)
+ elif MCL_SOUS_EPAIS!=None :
+ ier= ASCSEP(MCL_SOUS_EPAIS,ALPHA,RM,RC,EP1,GEOM,SYME)
+ for ssep in MCL_SOUS_EPAIS:
+ ssep.IDENL = ssep.ILONP/ssep['NB_ELEM_LONGI']*180./(pi*RC)
+ ssep.IDENC = ssep.ICIRP/ssep['NB_ELEM_CIRC']*180./(pi*RM)
+ if SYME=='QUART' :
+# quart de structure
+ ier,NLX,NLY,NZONEX,NZONEY,BG,BD,BI,BS,INDBG,INDBD,INDBI,INDBS,DNX,DNY\
+ = ASCSYM(MCL_SOUS_EPAIS,RM,RC,ALPHA,LTCHAR,LTCLIM)
+ else :
+# demi-structure ou entiere
+ ier,NLX,NLY,NZONEX,NZONEY,BG,BD,BI,BS,INDBG,INDBD,INDBI,INDBS,DNX,DNY\
+ = ASCPRE(MCL_SOUS_EPAIS,RM,RC,ALPHA,SYME,LTCHAR,LTCLIM)
+#
+#
+ loc_gibi=aster.repout()
+ logiel = EXEC_MAILLAGE['LOGICIEL' ]
+ UNITD = EXEC_MAILLAGE['UNITE_DATG']
+ UNITP = EXEC_MAILLAGE['UNITE_MGIB']
+ if logiel=='GIBI98' : logiel = loc_gibi+'gibi98'
+ elif logiel=='GIBI2000': logiel = loc_gibi+'gibi2000'
+ else :
+ self.cr.fatal("<F> <MACR_ASCOUF_MAIL> seuls gibi98 et gibi2000 sont appelableS")
+ ier = ier+1
+ return ier
+#
+# --- ecriture sur le fichier .datg de la procedure ---
+#
+# Nom du fichier de commandes pour GIBI
+ nomFichierDATG = 'fort.'+str(UNITD)
+# Nom du fichier de maillage GIBI
+ nomFichierGIBI = 'fort.'+str(UNITP)
+ loc_datg = aster.repdex()
+#
+ if FISS_COUDE!=None:
+# procedure coude fissure (MOT-CLE FISS_COUDE)
+ write_file_dgib_ASCFDO(nomFichierDATG,RM,RC,ALPHA,NBTRAN,EP1,EP2,EPI,TETA1,
+ TETA2,LTRAN,SUREP,LTCHAR,LTCLIM,TYPBOL,AXEAP,AXECP,NT,NS,NC,SFP,
+ ORIEN,AZIM,RC0,RC2,RC3,POSIT,EPSI,NIVMAG,SYME,loc_datg)
+ elif MCL_SOUS_EPAIS!=None :
+ if SOUS_EPAIS_MULTI==None :
+# procedure coude sous-ep.: (MOT-CLE SOUS_EPAIS_COUDE)
+ write_file_dgib_ASCSQO(nomFichierDATG,TYPELE,RM,RC,ALPHA,NBTRAN,EP1,EP2,
+ EPI,TETA1,MCL_SOUS_EPAIS,TETA2,LTRAN,LTCHAR,LTCLIM,GEOM,
+ SYME,NBEP,NLX,NLY,NIVMAG,loc_datg)
+ write_file_pgib_ASCSQ2(MCL_SOUS_EPAIS,NLX,NLY)
+ else:
+# procedure coude sous-ep.:(MOT-CLE SOUS_EPAIS_MULTI)
+ write_file_dgib_ASCSP1(nomFichierDATG,TYPELE,MCL_SOUS_EPAIS,NIVMAG,loc_datg)
+ write_file_pgib_ASCSDO(RM,RC,ALPHA,EP1,LTCLIM,LTCHAR,NBEP,
+ NZONEX,NZONEY,BG,BD,BI,BS,INDBG,INDBD,INDBI,INDBS,
+ DNX,DNY,MCL_SOUS_EPAIS,GEOM,SYME)
+ write_file_pgib_ASCSP2(MCL_SOUS_EPAIS,NLX,NLY)
+ else:
+# procedure coude regle
+ write_file_dgib_ASCRDO(nomFichierDATG,TYPELE,NIVMAG,TYPBOL,ALPHA,RC,RM,EP1,SUREP,
+ LTCLIM,LTCHAR,NBEP,loc_datg)
+
+
+# GIBI
+ EXEC_LOGICIEL( LOGICIEL = logiel ,
+ ARGUMENT = ( _F(NOM_PARA=nomFichierDATG),
+ _F(NOM_PARA=nomFichierGIBI), ), )
+# PRE_GIBI
+ PRE_GIBI()
+
+ if SYME == 'QUART' : self.DeclareOut('nomres',self.sd)
+# LIRE_MAILLAGE
+ nomres=LIRE_MAILLAGE(INFO=INFO)
+
+# DEFI_GROUP 1
+
+ motscles={}
+ l_CREA_GROUP_NO=[]
+ l_CREA_GROUP_NO.append('BORD1')
+ l_CREA_GROUP_NO.append('CLGV')
+ l_CREA_GROUP_NO.append('BORD2')
+ l_CREA_GROUP_NO.append('PEAUINT')
+ l_CREA_GROUP_NO.append('PEAUEXT')
+
+# cas des fissures axisymetriques
+ if FISS_COUDE!=None:
+ if FISS_COUDE['AXIS']=='OUI':
+ motscles['CREA_GROUP_MA']=[]
+ motscles['CREA_GROUP_MA'].append(_F(GROUP_MA = 'FONDFISS',
+ NOM = 'MAIL_ORI',
+ POSITION = 'INIT' , ),)
+
+# conversion des groupes de mailles en groupes du bloc fissure
+ if FISS_COUDE!=None:
+ if SYME == 'ENTIER':
+ l_CREA_GROUP_NO.append('NOLIG1')
+ l_CREA_GROUP_NO.append('FACE1')
+ l_CREA_GROUP_NO.append('NOLIG2')
+ l_CREA_GROUP_NO.append('FACE2')
+ l_CREA_GROUP_NO.append('FONDFISS')
+
+ motscles['CREA_GROUP_NO']=[]
+ motscles['CREA_GROUP_NO'].append(_F(GROUP_MA=tuple(l_CREA_GROUP_NO)))
+
+# conversion des groupes de mailles en groupes de noeuds pour les
+# ligaments des sous-ep.
+ if MCL_SOUS_EPAIS!=None:
+ issep=0
+ for ssep in MCL_SOUS_EPAIS:
+ issep=issep+1
+ if ssep['TYPE']=='ELLI':
+ for k in range(2*NLX[issep-1]+1):
+ chtmp=str(issep)+'_'+str(k+1)
+ ch1='CIR'+chtmp
+ ch2='ICI'+chtmp
+ motscles['CREA_GROUP_NO'].append(_F(NOM = ch2,
+ GROUP_MA = ch1,),)
+ motscles['CREA_GROUP_NO'].append(_F(NOM = 'IPCEN'+str(issep),
+ GROUP_MA = 'PCENT'+str(issep),),)
+ for k in range(2*NLY[issep-1]+1):
+ chtmp=str(issep)+'_'+str(k+1)
+ ch1='LON'+chtmp
+ ch2='ILO'+chtmp
+ motscles['CREA_GROUP_NO'].append(_F(NOM = ch2,
+ GROUP_MA = ch1,),)
+ for k in range(2*NLX[issep-1]+1):
+ chtmp=str(issep)+'_'+str(k+1)
+ ch1='ICI'+chtmp
+ ch2='OCI'+chtmp
+ ch3='ECI'+chtmp
+ motscles['CREA_GROUP_NO'].append(_F(NOM = ch2,
+ INTERSEC = ('PEAUEXT',ch1),),)
+ motscles['CREA_GROUP_NO'].append(_F(NOM = ch3,
+ INTERSEC = ('PEAUINT',ch1),),)
+ motscles['CREA_GROUP_NO'].append(_F(NOM = 'OPCEN'+str(issep),
+ INTERSEC = ('PEAUEXT','IPCEN'+str(issep),),),)
+ motscles['CREA_GROUP_NO'].append(_F(NOM = 'EPCEN'+str(issep),
+ INTERSEC = ('PEAUINT','IPCEN'+str(issep),),),)
+ for k in range(2*NLY[issep-1]+1):
+ chtmp=str(issep)+'_'+str(k+1)
+ ch1='ILO'+chtmp
+ ch2='OLO'+chtmp
+ ch3='ELO'+chtmp
+ motscles['CREA_GROUP_NO'].append(_F(NOM = ch2,
+ INTERSEC = ('PEAUEXT',ch1),),)
+ motscles['CREA_GROUP_NO'].append(_F(NOM = ch3,
+ INTERSEC = ('PEAUINT',ch1),),)
+ for k in range(2*NLX[issep-1]+1):
+ chtmp=str(issep)+'_'+str(k+1)
+ ch1='CIR'+chtmp
+ ch2='ICI'+chtmp
+ ch3='OCI'+chtmp
+ ch4='ECI'+chtmp
+ motscles['CREA_GROUP_NO'].append(_F(OPTION = 'SEGM_DROI_ORDO',
+ NOM = ch1,
+ GROUP_NO = ch2,
+ GROUP_NO_ORIG = ch3,
+ GROUP_NO_EXTR = ch4,
+ PRECISION = PRECIS,
+ CRITERE = CRITER,),)
+ motscles['CREA_GROUP_NO'].append(_F(OPTION = 'SEGM_DROI_ORDO',
+ NOM = 'PCENT'+str(issep),
+ GROUP_NO = 'IPCEN'+str(issep),
+ GROUP_NO_ORIG = 'OPCEN'+str(issep),
+ GROUP_NO_EXTR = 'EPCEN'+str(issep),
+ PRECISION = PRECIS,
+ CRITERE = CRITER,),)
+ for k in range(2*NLY[issep-1]+1):
+ chtmp=str(issep)+'_'+str(k+1)
+ ch1='LON'+chtmp
+ ch2='ILO'+chtmp
+ ch3='OLO'+chtmp
+ ch4='ELO'+chtmp
+ motscles['CREA_GROUP_NO'].append(_F(OPTION = 'SEGM_DROI_ORDO',
+ NOM = ch1,
+ GROUP_NO = ch2,
+ GROUP_NO_ORIG = ch3,
+ GROUP_NO_EXTR = ch4,
+ PRECISION = PRECIS,
+ CRITERE = CRITER,),)
+# 1/ noms intermediaires des groupes de noeuds representant les ligaments
+# des sections: TU,MI,GV et sous-ep.
+ for k in range(8):
+ motscles['CREA_GROUP_NO'].append(_F( NOM = CAR3[k]+str(issep),
+ GROUP_MA = CAR6[k]+str(issep),),)
+
+ for k in range(3):
+ if SYME == 'ENTIER' or k!=2:
+ for j in range(8):
+ motscles['CREA_GROUP_NO'].append(_F( NOM = CAR3[j]+SECT[k],
+ GROUP_MA = CAR6[j]+SECT[k],),)
+
+# 2/ determination et nommage des noeuds origine et extremite des groupes de noeuds
+# representant les ligaments de la ou des sections: sous-ep.
+ issep=0
+ for ssep in MCL_SOUS_EPAIS:
+ issep=issep+1
+ for k in range(8):
+ motscles['CREA_GROUP_NO'].append(_F( NOM = CAR4[k]+str(issep),
+ INTERSEC = ('PEAUEXT',CAR3[k]+str(issep),),),)
+ motscles['CREA_GROUP_NO'].append(_F( NOM = CAR5[k]+str(issep),
+ INTERSEC = ('PEAUINT',CAR3[k]+str(issep),),),)
+# 3/ nommage final des groupes de noeuds representant les ligaments
+# de la ou des sections: sous-ep.
+ for k in range(8):
+ motscles['CREA_GROUP_NO'].append(_F(OPTION = 'SEGM_DROI_ORDO',
+ NOM = CAR6[k]+str(issep),
+ GROUP_NO = CAR3[k]+str(issep),
+ GROUP_NO_ORIG = CAR4[k]+str(issep),
+ GROUP_NO_EXTR = CAR5[k]+str(issep),
+ PRECISION = PRECIS,
+ CRITERE = CRITER,),)
+
+# 4/ determination et nommage des noeuds origine et extremite des groupes de noeuds
+# representant les ligaments des sections: TU,MI,GV
+ for k in range(3):
+ if SYME == 'ENTIER' or k!=2:
+ for j in range(8):
+ motscles['CREA_GROUP_NO'].append(_F( NOM = CAR4[j]+SECT[k],
+ INTERSEC = ('PEAUEXT',CAR3[j]+SECT[k],),),)
+ motscles['CREA_GROUP_NO'].append(_F( NOM = CAR5[j]+SECT[k],
+ INTERSEC = ('PEAUINT',CAR3[j]+SECT[k],),),)
+# 5/ nommage final des groupes de noeuds representant les ligaments des sections: TU,MI,GV
+ for j in range(8):
+ motscles['CREA_GROUP_NO'].append(_F(OPTION = 'SEGM_DROI_ORDO',
+ NOM = CAR6[j]+SECT[k],
+ GROUP_NO = CAR3[j]+SECT[k],
+ GROUP_NO_ORIG = CAR4[j]+SECT[k],
+ GROUP_NO_EXTR = CAR5[j]+SECT[k],
+ PRECISION = PRECIS,
+ CRITERE = CRITER,),)
+
+
+ nomres=DEFI_GROUP(reuse =nomres,
+ MAILLAGE=nomres,
+ **motscles )
+#
+# DEFI_GROUP 2
+ if FISS_COUDE!=None:
+# creation des groupes petit axe et grand axe fissure par
+# intersection de groupes existants
+ motscles={}
+ motscles['CREA_GROUP_NO']=[]
+ l_peau=[]
+ l_intersec=[]
+ if POSIT == 'DEB_INT':
+ l_peau.append('PEAUINT')
+ else:
+ l_peau.append('PEAUEXT')
+
+ if SYME == 'ENTIER' :
+ l_intersec.append('FACE1')
+ motscles['CREA_GROUP_NO'].append(_F(NOM = 'P_AXE_1',
+ INTERSEC = ('NOLIG1','FACE1'),),)
+ motscles['CREA_GROUP_NO'].append(_F(NOM = 'G_AXE_1',
+ INTERSEC = tuple(l_peau+l_intersec),),)
+ l_intersec=[]
+ l_intersec.append('FACE2')
+ motscles['CREA_GROUP_NO'].append(_F(NOM = 'P_AXE_2',
+ INTERSEC = ('NOLIG2','FACE2'),),)
+ motscles['CREA_GROUP_NO'].append(_F(NOM = 'G_AXE_2',
+ INTERSEC = tuple(l_peau+l_intersec),),)
+
+ nomres=DEFI_GROUP(reuse =nomres,
+ MAILLAGE=nomres,
+ **motscles )
+
+# AFFE_MODELE
+ __MODELE=AFFE_MODELE( MAILLAGE=nomres,
+ AFFE=_F( GROUP_MA = 'COUDE' ,
+ PHENOMENE = 'MECANIQUE' ,
+ MODELISATION = '3D' , )
+ )
+
+# MODI_MAILLAGE 1
+ motscles={}
+ if GEOM == 'COUDE':
+ motscles['TUBE_COUDE']=[]
+ motscles['TUBE_COUDE'].append(_F(ANGLE=ALPHA,
+ R_CINTR=RC,
+ L_TUBE_P1=LTCHAR),)
+ motscles['PLAQ_TUBE']=[]
+ D_PLAQ_TUBE={}
+ D_PLAQ_TUBE['DEXT']=DEXT
+ D_PLAQ_TUBE['EPAIS']=EP1
+ D_PLAQ_TUBE['L_TUBE_P1']=LTCHAR
+ if SYME == 'QUART' : D_PLAQ_TUBE['COUTURE']='NON'
+ if FISS_COUDE!=None:
+ D_PLAQ_TUBE['AZIMUT']=AZIM
+ elif SOUS_EPAIS_COUDE!=None :
+ D_PLAQ_TUBE['AZIMUT']=MCL_SOUS_EPAIS[0].IPHIC
+ else:pass
+ motscles['PLAQ_TUBE'].append(_F(**D_PLAQ_TUBE),)
+ nomres=MODI_MAILLAGE( reuse =nomres,
+ MAILLAGE=nomres,
+ **motscles )
+
+# MODI_MAILLAGE 2
+ motscles={}
+ motscles['ORIE_PEAU_3D']=_F(GROUP_MA=('PEAUINT','EXTUBE'),)
+ if FISS_COUDE!=None:
+ if FISS_COUDE['FISSURE'] == 'DEB_INIT':
+ motscles['ORIE_PEAU_3D']=_F(GROUP_MA=('PEAUINT','EXTUBE','FACE1','FACE2'),)
+ nomres=MODI_MAILLAGE(reuse =nomres,
+ MAILLAGE=nomres,
+ MODELE =__MODELE,
+ **motscles)
+
+# CREA_MAILLAGE
+ if SYME != 'QUART':
+ self.DeclareOut('nomre2',self.sd)
+ motscles={}
+ motscles['CREA_POI1']=[]
+ motscles['CREA_POI1'].append(_F(NOM_GROUP_MA='P1',
+ GROUP_NO='P1'),)
+ if TYPBOL == None :
+ motscles['CREA_POI1'].append(_F(NOM_GROUP_MA='P2',
+ GROUP_NO='P2'),)
+ nomre2=CREA_MAILLAGE( MAILLAGE=nomres,
+ **motscles)
+ else:
+ nomre2=nomres
+
+
+# IMPRESSSION
+ if IMPRESSION!=None:
+ if IMPRESSION.__class__.__name__ !='MCList' : IMPRESSION =[IMPRESSION,]
+ for impr in IMPRESSION :
+#
+ motscles={}
+ if impr['FORMAT']=='IDEAS' : motscles['VERSION'] =impr['VERSION']
+ if impr['FORMAT']=='CASTEM' : motscles['NIVE_GIBI'] =impr['NIVE_GIBI']
+ if impr['UNITE']!=None : motscles['UNITE'] =impr['UNITE']
+ impr_resu = _F( MAILLAGE = nomre2,)
+#
+ IMPR_RESU( RESU = impr_resu,
+ FORMAT= impr['FORMAT'],**motscles)
+
+
+
+ return ier
+
+
--- /dev/null
+#@ MODIF macr_aspic_calc_ops Macro DATE 03/05/2006 AUTEUR CIBHHLV L.VIVAN
+# -*- coding: iso-8859-1 -*-
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+
+
+def macr_aspic_calc_ops(self,TYPE_MAILLAGE,TUBULURE,MAILLAGE,MODELE,CHAM_MATER,CARA_ELEM,
+ FOND_FISS_1,FOND_FISS_2,CHARGE,RESU_THER,AFFE_MATERIAU,EQUILIBRE,
+ PRES_REP,ECHANGE,TORS_CORP,TORS_TUBU,COMP_INCR,COMP_ELAS,
+ THETA_3D,OPTION,SOLVEUR,CONVERGENCE,NEWTON,RECH_LINEAIRE,
+ INCREMENT,PAS_AZIMUT,IMPRESSION,INFO,TITRE,BORNES ,**args):
+ """
+ Ecriture de la macro MACR_ASPIC_CALC
+ """
+ from Accas import _F
+ import types
+ ier=0
+#------------------------------------------------------------------
+ # On recopie le mot cle affe_materiau pour le proteger
+ mc_AFFE_MATERIAU=AFFE_MATERIAU
+#------------------------------------------------------------------
+ # On importe les definitions des commandes a utiliser dans la macro
+ AFFE_MODELE =self.get_cmd('AFFE_MODELE' )
+ AFFE_MATERIAU =self.get_cmd('AFFE_MATERIAU' )
+ AFFE_CARA_ELEM =self.get_cmd('AFFE_CARA_ELEM' )
+ AFFE_CHAR_THER_F =self.get_cmd('AFFE_CHAR_THER_F')
+ THER_LINEAIRE =self.get_cmd('THER_LINEAIRE' )
+ AFFE_CHAR_MECA =self.get_cmd('AFFE_CHAR_MECA' )
+ STAT_NON_LINE =self.get_cmd('STAT_NON_LINE' )
+ CALC_ELEM =self.get_cmd('CALC_ELEM' )
+ POST_RELEVE_T =self.get_cmd('POST_RELEVE_T' )
+ IMPR_TABLE =self.get_cmd('IMPR_TABLE' )
+ POST_RCCM =self.get_cmd('POST_RCCM' )
+ DEFI_FOND_FISS =self.get_cmd('DEFI_FOND_FISS' )
+ CALC_THETA =self.get_cmd('CALC_THETA' )
+ CALC_G_THETA_T =self.get_cmd('CALC_G_THETA_T' )
+ CALC_G_LOCAL_T =self.get_cmd('CALC_G_LOCAL_T' )
+ IMPR_RESU =self.get_cmd('IMPR_RESU' )
+
+ # La macro compte pour 1 dans la numerotation des commandes
+ self.set_icmd(1)
+
+#------------------------------------------------------------------
+# data
+ GRMAIL= ('EQUERRE','PEAUINT','EXCORP1','EXCORP2','EXTUBU','LEVRTUBU','LEVRCORP')
+ NOMNOE= ('P1_CORP','P2_CORP','P_TUBU ')
+ IMPRT1= ('NUME_ORDRE','INTITULE','RESU' ,'NOM_CHAM',
+ 'ABSC_CURV' ,'COOR_X' ,'COOR_Y','COOR_Z' ,
+ 'SIXX' ,'SIXY' ,'SIXZ' )
+ IMPRT2= ('NUME_ORDRE','INTITULE','RESU' ,'NOM_CHAM',
+ 'ABSC_CURV' ,'COOR_X' ,'COOR_Y','COOR_Z' ,
+ 'SIYY' ,'SIXY' ,'SIYZ' )
+ IMPRT3= ('NUME_ORDRE','INTITULE','RESU' ,'NOM_CHAM',
+ 'ABSC_CURV' ,'COOR_X' ,'COOR_Y','COOR_Z' ,
+ 'TEMP' )
+ APPRES= ('PEAUINT ','LEVRTUBU','LEVRCORP')
+#------------------------------------------------------------------
+#
+ i=0
+ for mate in mc_AFFE_MATERIAU:
+ if mate['RCCM']=='OUI' :
+ i=i+1
+ MRCCM=mate['MATER']
+ if i>1 :
+ ier=ier+1
+ self.cr.fatal("""<E> <MACR_ASPIC_CALC> vous affectez plus d un materiau contenant l option rccm""")
+ return ier
+#
+ if (TYPE_MAILLAGE[:4]=='SAIN') and (TUBULURE==None) :
+ ier=ier+1
+ self.cr.fatal("""<E> <MACR_ASPIC_CALC> pour les piquages sains, TUBULURE doit etre renseigne""")
+ return ier
+#
+ if EQUILIBRE['NOEUD'] not in ('P1_CORP','P2_CORP') :
+ ier=ier+1
+ self.cr.fatal("""<E> <MACR_ASPIC_CALC> EQUILIBRE[NOEUD] : on attend 'P1_CORP ' ou 'P2_CORP'""")
+ return ier
+#
+ if PRES_REP['EFFE_FOND']=='OUI' :
+ if PRES_REP['NOEUD']==None :
+ ier=ier+1
+ self.cr.fatal("""<E> <MACR_ASPIC_CALC> il faut preciser un noeud pour EFFE_FOND""")
+ return ier
+ if PRES_REP['NOEUD'] not in ('P1_CORP','P2_CORP') :
+ ier=ier+1
+ self.cr.fatal("""<E> <MACR_ASPIC_CALC> PRES_REP[NOEUD] : on attend 'P1_CORP' ou 'P2_CORP'""")
+ return ier
+ if PRES_REP['NOEUD']==EQUILIBRE['NOEUD'] :
+ ier=ier+1
+ self.cr.fatal("""<E> <MACR_ASPIC_CALC> on ne peut appliquer un EFFE_FOND sur PRES_REP[NOEUD] car ce noeud est bloque""")
+ return ier
+#
+ if TORS_CORP!=None :
+ for tors in TORS_CORP :
+ if tors['NOEUD'] not in ('P1_CORP','P2_CORP') :
+ ier=ier+1
+ self.cr.fatal("""<E> <MACR_ASPIC_CALC> TORS_CORP[NOEUD] : on attend 'P1_CORP' ou 'P2_CORP'""")
+ return ier
+ if tors['NOEUD']==EQUILIBRE['NOEUD'] :
+ ier=ier+1
+ self.cr.fatal("""<E> <MACR_ASPIC_CALC> on ne peut appliquer un torseur sur TORS_CORP[NOEUD] car ce noeud est bloque""")
+ return ier
+#
+ if (TYPE_MAILLAGE[:4]=='SAIN') and (THETA_3D!=None) :
+ ier=ier+1
+ self.cr.fatal("""<E> <MACR_ASPIC_CALC> si TYPE_MAILLAGE SAIN : mecanique de la rupture impossible""")
+ return ier
+#
+ if OPTION in ('CALC_G_MAX','CALC_G_MAX_LOCAL') :
+ if BORNES==None :
+ ier=ier+1
+ self.cr.fatal("""<E> <MACR_ASPIC_CALC> mot-clef <BORNES> obligatoire avec cette option""")
+ return ier
+#
+ if IMPRESSION!=None :
+ if IMPRESSION['FORMAT'] in ('IDEAS','CASTEM') :
+ if IMPRESSION['NOM_CHAM']==None :
+ ier=ier+1
+ self.cr.fatal("""<E> <MACR_ASPIC_CALC> impression de resultats demandée sans preciser le nom des champs
+ cf. la documentation utilisateur : U4.PC.20.""")
+ return ier
+#
+#------------------------------------------------------------------
+#
+# --- commande AFFE_MODELE ---
+#
+ if MODELE!=None : self.DeclareOut('modele',MODELE)
+ mcfact=[]
+ if (PRES_REP['PRES_LEVRE']=='OUI') and (TYPE_MAILLAGE[-4:]=='_DEB') :
+ mcfact.append(_F(GROUP_MA=GRMAIL, PHENOMENE='MECANIQUE',MODELISATION='3D' ))
+ else:
+ mcfact.append(_F(GROUP_MA=GRMAIL[:-2],PHENOMENE='MECANIQUE',MODELISATION='3D' ))
+ mcfact.append( _F(GROUP_MA='P1_CORP' ,PHENOMENE='MECANIQUE',MODELISATION='DIS_TR'))
+ mcfact.append( _F(GROUP_MA='P2_CORP' ,PHENOMENE='MECANIQUE',MODELISATION='DIS_TR'))
+ mcfact.append( _F(GROUP_MA='P_TUBU' ,PHENOMENE='MECANIQUE',MODELISATION='DIS_TR'))
+ modele = AFFE_MODELE( MAILLAGE = MAILLAGE ,
+ AFFE = mcfact )
+ if ECHANGE!=None : # modele thermique
+ __modthe = AFFE_MODELE( MAILLAGE = MAILLAGE ,
+ AFFE = _F(GROUP_MA =GRMAIL[:-2],
+ PHENOMENE ='THERMIQUE',
+ MODELISATION='3D' ) )
+#
+# --- commande AFFE_MATERIAU ---
+#
+ if CHAM_MATER!=None : self.DeclareOut('affmat',CHAM_MATER)
+ mcfact=[]
+ for mater in mc_AFFE_MATERIAU :
+ if mater['TOUT']!=None : mcfact.append(_F(TOUT =mater['TOUT' ],MATER=mater['MATER'],TEMP_REF=mater['TEMP_REF']))
+ else : mcfact.append(_F(GROUP_MA=mater['GROUP_MA'],MATER=mater['MATER'],TEMP_REF=mater['TEMP_REF']))
+ affmat = AFFE_MATERIAU( MAILLAGE = MAILLAGE ,
+ MODELE = modele ,
+ AFFE = mcfact )
+#
+# --- commande AFFE_CARA_ELEM ---
+#
+ if CARA_ELEM!=None : self.DeclareOut('carael',CARA_ELEM)
+ carael = AFFE_CARA_ELEM( MODELE = modele ,
+ DISCRET = ( _F( GROUP_MA='P1_CORP' ,
+ CARA ='K_TR_D_N',
+ VALE = ( 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 ) ),
+ _F( GROUP_MA='P2_CORP' ,
+ CARA ='K_TR_D_N',
+ VALE = ( 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 ) ),
+ _F( GROUP_MA='P_TUBU' ,
+ CARA ='K_TR_D_N',
+ VALE = ( 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 ) ), ) )
+#
+# --- commande AFFE_CHAR_THER_F ---
+# condition aux limites
+#
+ if ECHANGE!=None :
+ __chther = AFFE_CHAR_THER_F( MODELE = __modthe ,
+ ECHANGE=( _F(GROUP_MA='PEAUTUBU',
+ COEF_H =ECHANGE['COEF_H_TUBU'],
+ TEMP_EXT=ECHANGE['TEMP_EXT'],),
+ _F(GROUP_MA='PEAUCORP',
+ COEF_H =ECHANGE['COEF_H_CORP'],
+ TEMP_EXT=ECHANGE['TEMP_EXT'],),))
+#
+# --- calcul thermique ---
+#
+ if RESU_THER!=None : self.DeclareOut('resuth',RESU_THER)
+ mcsimp={}
+ if INCREMENT['NUME_INST_INIT']!=None : mcsimp['NUME_INIT']=INCREMENT['NUME_INST_INIT']
+ if INCREMENT['NUME_INST_FIN' ]!=None : mcsimp['NUME_FIN' ]=INCREMENT['NUME_INST_FIN' ]
+ mcfact=_F(LIST_INST=INCREMENT['LIST_INST'],**mcsimp)
+ resuth = THER_LINEAIRE( MODELE = __modthe ,
+ CHAM_MATER = affmat ,
+ TEMP_INIT = _F(STATIONNAIRE='OUI',),
+ EXCIT = _F(CHARGE=__chther,),
+ INCREMENT = mcfact, )
+#
+ if CHARGE!=None : self.DeclareOut('chmeth',CHARGE)
+ chmeth = AFFE_CHAR_MECA( MODELE = modele ,
+ TEMP_CALCULEE = resuth )
+#
+# --- commande AFFE_CHAR_MECA ---
+# condition aux limites
+#
+ if EQUILIBRE['NOEUD']=='P1_CORP' :
+ NENCAS = EQUILIBRE['NOEUD']
+ AEFOCO = 'EXCORP2'
+ ATORCO = 'P2_CORP'
+ LINTC = 'L_INT_C2'
+ elif EQUILIBRE['NOEUD']=='P2_CORP' :
+ NENCAS = EQUILIBRE['NOEUD']
+ AEFOCO = 'EXCORP1'
+ ATORCO = 'P1_CORP'
+ LINTC = 'L_INT_C1'
+ __conlim = AFFE_CHAR_MECA( MODELE = modele ,
+ LIAISON_ELEM = ( _F( OPTION ='3D_POU' ,
+ GROUP_MA_1='EXCORP1',
+ GROUP_NO_2='P1_CORP'),
+ _F( OPTION ='3D_POU' ,
+ GROUP_MA_1='EXCORP2' ,
+ GROUP_NO_2='P2_CORP'),
+ _F( OPTION ='3D_POU' ,
+ GROUP_MA_1='EXTUBU',
+ GROUP_NO_2='P_TUBU'), ),
+ DDL_IMPO = _F( GROUP_NO = NENCAS ,
+ DX = 0.0 ,
+ DY = 0.0 ,
+ DZ = 0.0 ,
+ DRX = 0.0 ,
+ DRY = 0.0 ,
+ DRZ = 0.0 , ) )
+#
+# --- commande AFFE_CHAR_MECA ---
+# chargement mecanique : pres_rep, effet de fond
+#
+ motscles={}
+ if (PRES_REP['PRES_LEVRE']=='OUI') and (TYPE_MAILLAGE[-4:]=='_DEB') :
+ motscles['PRES_REP' ]= _F(GROUP_MA=APPRES, PRES=PRES_REP['PRES'])
+ else :
+ motscles['PRES_REP' ]= _F(GROUP_MA=APPRES[0],PRES=PRES_REP['PRES'])
+ if PRES_REP['EFFE_FOND' ]!=None :
+ motscles['EFFE_FOND' ]=(_F(GROUP_MA ='EXTUBU ',
+ GROUP_MA_INT='L_INT_TU',
+ PRES =PRES_REP['PRES']),
+ _F(GROUP_MA =AEFOCO,
+ GROUP_MA_INT=LINTC,
+ PRES =PRES_REP['PRES']))
+ __chpres = AFFE_CHAR_MECA( MODELE = modele ,**motscles)
+#
+# --- commande AFFE_CHAR_MECA ---
+# chargement mecanique : torseur sur le corps
+#
+ if TORS_CORP!=None:
+ __chtrc = [None]*6
+ i=0
+ for tors in TORS_CORP :
+ mcsimp={}
+ if tors['FX']!=None : mcsimp['FX']=tors['FX']
+ if tors['FY']!=None : mcsimp['FY']=tors['FY']
+ if tors['FZ']!=None : mcsimp['FZ']=tors['FZ']
+ if tors['MX']!=None : mcsimp['MX']=tors['MX']
+ if tors['MY']!=None : mcsimp['MY']=tors['MY']
+ if tors['MZ']!=None : mcsimp['MZ']=tors['MZ']
+ mcfact=_F(GROUP_NO=ATORCO,**mcsimp)
+ __chtrc[i] = AFFE_CHAR_MECA( MODELE = modele ,
+ FORCE_NODALE = mcfact , )
+ i=i+1
+#
+# --- commande AFFE_CHAR_MECA ---
+# chargement mecanique : torseur sur la tubulure
+#
+ if TORS_TUBU!=None:
+ __chtrt = [None]*6
+ i=0
+ for tors in TORS_TUBU :
+ mcsimp={}
+ if tors['FX']!=None : mcsimp['FX']=tors['FX']
+ if tors['FY']!=None : mcsimp['FY']=tors['FY']
+ if tors['FZ']!=None : mcsimp['FZ']=tors['FZ']
+ if tors['MX']!=None : mcsimp['MX']=tors['MX']
+ if tors['MY']!=None : mcsimp['MY']=tors['MY']
+ if tors['MZ']!=None : mcsimp['MZ']=tors['MZ']
+ mcfact=_F(GROUP_NO='P_TUBU ',**mcsimp)
+ __chtrt[i] = AFFE_CHAR_MECA( MODELE = modele ,
+ FORCE_NODALE = mcfact , )
+ i=i+1
+#
+# --- commande STAT_NON_LINE ---
+#
+ motscles={}
+#
+ mcfex=[] # mot clé facteur EXCIT
+ mcfex.append(_F(CHARGE=__conlim,))
+ if ECHANGE!=None :
+ mcfex.append(_F(CHARGE=chmeth,))
+ if PRES_REP['FONC_MULT']!=None :
+ mcfex.append(_F(CHARGE=__chpres,FONC_MULT=PRES_REP['FONC_MULT']))
+ else :
+ mcfex.append(_F(CHARGE=__chpres,))
+ if TORS_CORP!=None:
+ i=0
+ for tors in TORS_CORP :
+ if tors['FONC_MULT']!=None :
+ mcfex.append(_F(CHARGE=__chtrc[i],FONC_MULT=tors['FONC_MULT']))
+ else :
+ mcfex.append(_F(CHARGE=__chtrc[i],))
+ i=i+1
+ if TORS_TUBU!=None:
+ i=0
+ for tors in TORS_TUBU :
+ if tors['FONC_MULT']!=None :
+ mcfex.append(_F(CHARGE=__chtrt[i],FONC_MULT=tors['FONC_MULT']))
+ else :
+ mcfex.append(_F(CHARGE=__chtrt[i],))
+ i=i+1
+ motscles['EXCIT'] =mcfex
+#
+ mcfci=[] # mot clé facteur COMP_INCR :obligatoire pour les noeuds discrets
+ if COMP_INCR!=None :
+ mcfci.append(_F(TOUT ='OUI' ,RELATION=COMP_INCR['RELATION']))
+ mcfci.append( _F(GROUP_MA=NOMNOE,RELATION='ELAS'))
+ motscles['COMP_INCR'] =mcfci
+#
+ if COMP_ELAS!=None :
+ motscles['COMP_ELAS'] =_F(GROUP_MA=GRMAIL[:-2] ,RELATION=COMP_ELAS['RELATION'])
+#
+ dSolveur=SOLVEUR[0].cree_dict_valeurs(SOLVEUR[0].mc_liste)
+ for i in dSolveur.keys():
+ if dSolveur[i]==None : del dSolveur[i]
+#
+ dConverg=CONVERGENCE[0].cree_dict_valeurs(CONVERGENCE[0].mc_liste)
+ for i in dConverg.keys():
+ if dConverg[i]==None : del dConverg[i]
+#
+ dNewton=NEWTON[0].cree_dict_valeurs(NEWTON[0].mc_liste)
+ for i in dNewton.keys():
+ if dNewton[i]==None : del dNewton[i]
+#
+ dRechlin=RECH_LINEAIRE[0].cree_dict_valeurs(RECH_LINEAIRE[0].mc_liste)
+ for i in dRechlin.keys():
+ if dRechlin[i]==None : del dRechlin[i]
+#
+ dIncrem=INCREMENT[0].cree_dict_valeurs(INCREMENT[0].mc_liste)
+ for i in dIncrem.keys():
+ if dIncrem[i]==None : del dIncrem[i]
+#
+ if TITRE!=None :
+ motscles['TITRE' ] =TITRE
+ motscles ['SOLVEUR' ] =dSolveur
+ motscles ['CONVERGENCE' ] =dConverg
+ motscles ['NEWTON' ] =dNewton
+ motscles ['RECH_LINEAIRE'] =dRechlin
+ motscles ['INCREMENT' ] =dIncrem
+ self.DeclareOut('nomres',self.sd)
+ nomres = STAT_NON_LINE( MODELE = modele ,
+ CHAM_MATER = affmat ,
+ CARA_ELEM = carael ,
+ INFO = INFO , **motscles)
+#
+ nomres = CALC_ELEM( reuse = nomres,
+ RESULTAT = nomres ,
+ TOUT_ORDRE = 'OUI' ,
+ OPTION = ('SIEF_ELNO_ELGA','VARI_ELNO_ELGA','EQUI_ELNO_SIGM') ,
+ INFO = INFO ,)
+#
+#-----------------------------------------------------------------------
+ if TYPE_MAILLAGE[:4]=='SAIN' :
+#-----------------------------------------------------------------------
+#
+# --- post traitement : POST_RELEVE_T --- azimuts droits
+#
+# ---- champs de contrainte SI, SII ET SIII ----
+#
+ if TYPE_MAILLAGE=='SAIN_GROS' : NBAZIM = 40
+ else : NBAZIM = 48
+ mcfact=[]
+ TYPSOU=None
+ if TUBULURE!=None : TYPSOU = TUBULURE['TYPE']
+ for i in range(1,NBAZIM+1,PAS_AZIMUT):
+ if i<10 : NUME = '0'+str(i)
+ else : NUME = str(i)
+ mcsimp={}
+ if TYPSOU=='TYPE_1':
+ mcsimp['REPERE' ]='CYLINDRIQUE',
+ mcsimp['ORIGINE']=( 0.0 , 0.0 , 0.0 )
+ mcsimp['AXE_Z' ]=( 0.0 , 0.0 , 1.0 )
+ INTITD = 'AZI_'+NUME+'_D-REP_CYL'
+ else:
+ mcsimp['REPERE' ]='LOCAL'
+ mcsimp['VECT_Y' ]=( 0.0 , 0.0 , 1.0 )
+ INTITD = 'AZI_'+NUME+'_D-REP_LOC'
+ mcsimp['INTITULE' ]=INTITD
+ mcsimp['GROUP_NO' ]='LD'+str(i)
+ mcfact.append( _F( RESULTAT = nomres,
+ TOUT_ORDRE ='OUI',
+ NOM_CHAM ='SIEF_ELNO_ELGA',
+ PRECISION =55.E-1,
+ TOUT_CMP ='OUI',
+ OPERATION ='EXTRACTION',**mcsimp))
+ __noposd=POST_RELEVE_T(ACTION = mcfact,
+ TITRE = '-- TRAITEMENT DES AZIMUTS DROITS --')
+#
+# --- IMPR_TABLE dans un repere cylindrique ou local
+# des champs de contrainte SI, SII ET SIII
+#
+ if TYPSOU=='TYPE_1' : nompara=IMPRT1
+ else : nompara=IMPRT2
+ IMPR_TABLE(TABLE = __noposd,
+ NOM_PARA = nompara )
+#
+# ---- Pm, Pm+Pb sur les lignes de depouillement ----
+#
+ if mc_AFFE_MATERIAU[0]['RCCM']=='OUI':
+ mcfact=[]
+ for i in range(1,NBAZIM+1,PAS_AZIMUT):
+ if i<10 : NUME = '0'+str(i)
+ else : NUME = str(i)
+ mcsimp={}
+ mcsimp['PRECISION']=55.E-1
+ mcsimp['GROUP_NO' ]='LD'+str(i)
+ mcfact.append( _F(**mcsimp) )
+ __pmpbsd=POST_RCCM(MATER = MRCCM,
+ MAILLAGE = MAILLAGE,
+ TYPE_RESU_MECA = 'EVOLUTION',
+ TYPE_RESU = 'VALE_MAX',
+ OPTION = 'PM_PB',
+ SEGMENT = mcfact,
+ TRANSITOIRE = _F(RESULTAT =nomres,
+ NOM_CHAM ='SIEF_ELNO_ELGA',
+ TOUT_ORDRE='OUI',),
+ TITRE = '-- TRAITEMENT DES AZIMUTS DROITS --',)
+ IMPR_TABLE(TABLE = __pmpbsd, )
+#
+# ---- champ de temperature, si il a ete calcule, sur les lignes de depouillement ----
+#
+ if ECHANGE!=None :
+ mcfact=[]
+ for i in range(1,NBAZIM+1,PAS_AZIMUT):
+ if i<10 : NUME = '0'+str(i)
+ else : NUME = str(i)
+ mcsimp={}
+ mcsimp['GROUP_NO' ]='LD'+str(i)
+ mcsimp['RESULTAT' ]=resuth
+ mcsimp['TOUT_ORDRE' ]='OUI'
+ mcsimp['NOM_CHAM' ]='TEMP'
+ mcsimp['PRECISION' ]=55.E-1
+ mcsimp['TOUT_CMP' ]='OUI'
+ mcsimp['INTITULE' ]='AZI_'+NUME+'_D'
+ mcsimp['OPERATION' ]='EXTRACTION'
+ mcfact.append( _F(**mcsimp) )
+ __rthazd=POST_RELEVE_T(ACTION=mcfact)
+ IMPR_TABLE(TABLE = __rthazd, )
+#
+# ---- parametres caracterisant la distribution de temperature,
+# si elle a ete calculee, dans l epaisseur du ligament ----
+#
+ mcfact=[]
+ for i in range(1,NBAZIM+1,PAS_AZIMUT):
+ if i<10 : NUME = '0'+str(i)
+ else : NUME = str(i)
+ mcsimp={}
+ mcsimp['GROUP_NO' ]='LD'+str(i)
+ mcsimp['RESULTAT' ]=resuth
+ mcsimp['TOUT_ORDRE' ]='OUI'
+ mcsimp['NOM_CHAM' ]='TEMP'
+ mcsimp['PRECISION' ]=55.E-1
+ mcsimp['TOUT_CMP' ]='OUI'
+ mcsimp['INTITULE' ]='AZI_'+NUME+'_D'
+ mcsimp['OPERATION' ]='MOYENNE'
+ mcfact.append( _F(**mcsimp) )
+ __rmothd=POST_RELEVE_T(ACTION=mcfact)
+ IMPR_TABLE(TABLE = __rmothd, )
+#
+#-----------------------------------------------------------------------
+#
+# --- post traitement : POST_RELEVE_T --- azimuts inclines
+# --- champs de contrainte SI, SII ET SIII ----
+#
+ mcfact=[]
+ for i in range(1,NBAZIM+1,PAS_AZIMUT):
+ if i<10 : NUME = '0'+str(i)
+ else : NUME = str(i)
+ mcsimp={}
+ mcsimp['GROUP_NO' ]='LI'+str(i)
+ mcsimp['RESULTAT' ]=nomres
+ mcsimp['TOUT_ORDRE' ]='OUI'
+ mcsimp['NOM_CHAM' ]='SIEF_ELNO_ELGA'
+ mcsimp['PRECISION' ]=55.E-1
+ mcsimp['TOUT_CMP' ]='OUI'
+ mcsimp['REPERE' ]='LOCAL'
+ mcsimp['VECT_Y' ]=( 0.0 , 0.0 , 1.0 )
+ mcsimp['INTITULE' ]='AZI_'+NUME+'_I-REP_LOC'
+ mcsimp['OPERATION' ]='EXTRACTION'
+ mcfact.append( _F(**mcsimp) )
+ __noposi=POST_RELEVE_T(ACTION=mcfact)
+ IMPR_TABLE(TABLE = __noposi, )
+#
+# ---- Pm, Pm+Pb sur les lignes de depouillement ----
+#
+ if mc_AFFE_MATERIAU[0]['RCCM']=='OUI':
+ mcfact=[]
+ for i in range(1,NBAZIM+1,PAS_AZIMUT):
+ if i<10 : NUME = '0'+str(i)
+ else : NUME = str(i)
+ mcsimp={}
+ mcsimp['PRECISION']=55.E-1
+ mcsimp['GROUP_NO' ]='LI'+str(i)
+ mcfact.append( _F(**mcsimp) )
+ __pmpbsi=POST_RCCM(MATER = MRCCM,
+ MAILLAGE = MAILLAGE,
+ TYPE_RESU_MECA = 'EVOLUTION',
+ TYPE_RESU = 'VALE_MAX',
+ OPTION = 'PM_PB',
+ SEGMENT = mcfact,
+ TRANSITOIRE = _F(RESULTAT =nomres,
+ NOM_CHAM ='SIEF_ELNO_ELGA',
+ TOUT_ORDRE='OUI',),
+ TITRE = '-- TRAITEMENT DES AZIMUTS INCLINES --',)
+ IMPR_TABLE(TABLE = __pmpbsi, )
+#
+# ---- champs de temperature,si il a ete calcule, sur les lignes de depouillement ----
+#
+ if ECHANGE!=None :
+ mcfact=[]
+ for i in range(1,NBAZIM+1,PAS_AZIMUT):
+ if i<10 : NUME = '0'+str(i)
+ else : NUME = str(i)
+ mcsimp={}
+ mcsimp['GROUP_NO' ]='LI'+str(i)
+ mcsimp['RESULTAT' ]=resuth
+ mcsimp['TOUT_ORDRE' ]='OUI'
+ mcsimp['NOM_CHAM' ]='TEMP'
+ mcsimp['PRECISION' ]=55.E-1
+ mcsimp['TOUT_CMP' ]='OUI'
+ mcsimp['INTITULE' ]='AZI_'+NUME+'_I'
+ mcsimp['OPERATION' ]='EXTRACTION'
+ mcfact.append( _F(**mcsimp) )
+ __rthazi=POST_RELEVE_T(ACTION=mcfact)
+ IMPR_TABLE(TABLE = __rthazi,
+ NOM_PARA = IMPRT3 )
+#
+# ---- parametres caracterisant la distribution de temperature,
+# si elle a ete calculee, dans l epaisseur du ligament ----
+#
+ mcfact=[]
+ for i in range(1,NBAZIM+1,PAS_AZIMUT):
+ if i<10 : NUME = '0'+str(i)
+ else : NUME = str(i)
+ mcsimp={}
+ mcsimp['GROUP_NO' ]='LI'+str(i)
+ mcsimp['RESULTAT' ]=resuth
+ mcsimp['TOUT_ORDRE' ]='OUI'
+ mcsimp['NOM_CHAM' ]='TEMP'
+ mcsimp['PRECISION' ]=55.E-1
+ mcsimp['TOUT_CMP' ]='OUI'
+ mcsimp['INTITULE' ]='AZI_'+NUME+'_I'
+ mcsimp['OPERATION' ]='MOYENNE'
+ mcfact.append( _F(**mcsimp) )
+ __rmothi=POST_RELEVE_T(ACTION=mcfact)
+ IMPR_TABLE(TABLE = __rmothi, )
+#
+#-----------------------------------------------------------------------
+ elif TYPE_MAILLAGE[:4]=='FISS' :
+#-----------------------------------------------------------------------
+#
+ NOMGRO=[]
+ NOMGRE=[]
+ TABMA8=[]
+ NOMMA =[]
+ if TYPE_MAILLAGE in ('FISS_COUR_DEB','FISS_LONG_DEB','FISS_AXIS_DEB','FISS_COUR_NONDEB') :
+ NBFIS = 1
+ NOMGRO.append(('P_FON1' ,'P_FIS1' ),)
+ NOMGRE.append(('P_FON2' ,'P_FIS2' ),)
+ TABMA8.append('FONDFISS')
+ if TYPE_MAILLAGE in ('FISS_COUR_DEB','FISS_LONG_DEB') : FERME=0
+ else :
+ FERME=1
+ NOMMA.append('MAIL_ORI')
+ elif TYPE_MAILLAGE in ('FISS_LONG_NONDEB','FISS_AXIS_NONDEB') :
+ NBFIS = 2
+ NOMGRO.append(('P_FON1' ,'P_FIS1' ),)
+ NOMGRE.append(('P_FON2' ,'P_FIS2' ),)
+ NOMGRO.append(('PI_FON1','PI_FIS1'),)
+ NOMGRE.append(('PI_FON2','PI_FIS2'),)
+ TABMA8.append('FOND_SUP')
+ TABMA8.append('FOND_INF')
+ if TYPE_MAILLAGE=='FISS_LONG_NONDEB' : FERME=0
+ else :
+ FERME=1
+ NOMMA.append('MA_ORI_S')
+ NOMMA.append('MA_ORI_I')
+#
+ if ECHANGE!=None:
+#
+# ---- champs de temperature en fond de fissure
+# si il a ete calcule, cas 1 fond de fissure ----
+#
+ if NBFIS==1:
+ __rthfis=POST_RELEVE_T(ACTION=_F(GROUP_NO ='FONDFISS',
+ RESULTAT =resuth,
+ TOUT_ORDRE ='OUI',
+ NOM_CHAM ='TEMP',
+ PRECISION =55.E-1,
+ TOUT_CMP ='OUI',
+ INTITULE ='FONDFISS',
+ OPERATION ='EXTRACTION',))
+ IMPR_TABLE(TABLE = __rthfis, )
+#
+# ---- champs de temperature en fond de fissure
+# si il a ete calcule, cas 2 fonds de fissure ----
+#
+ elif NBFIS==2:
+#
+ __rthfis1=POST_RELEVE_T(ACTION=_F(GROUP_NO ='FOND_SUP',
+ RESULTAT =resuth,
+ TOUT_ORDRE ='OUI',
+ NOM_CHAM ='TEMP',
+ PRECISION =55.E-1,
+ TOUT_CMP ='OUI',
+ INTITULE ='FOND_SUP',
+ OPERATION ='EXTRACTION',))
+ IMPR_TABLE(TABLE = __rthfis1, )
+ __rthfis2=POST_RELEVE_T(ACTION=_F(GROUP_NO ='FOND_INF',
+ RESULTAT =resuth,
+ TOUT_ORDRE ='OUI',
+ NOM_CHAM ='TEMP',
+ PRECISION =55.E-1,
+ TOUT_CMP ='OUI',
+ INTITULE ='FOND_INF',
+ OPERATION ='EXTRACTION',))
+ IMPR_TABLE(TABLE = __rthfis2, )
+#
+# boucle sur le nombre de fond de fissure
+#
+ fond3d = [None]*2
+ for j in range(NBFIS):
+ if FOND_FISS_1!=None : self.DeclareOut('fond3d_0',FOND_FISS_1)
+ if FOND_FISS_2!=None : self.DeclareOut('fond3d_1',FOND_FISS_2)
+#
+# --- commande DEFI_FOND_FISS ---
+#
+ motscles={}
+ if not FERME:
+ motscles['FOND_FISS']=_F(GROUP_MA =TABMA8[j],
+ GROUP_NO_ORIG=NOMGRO[j][0],
+ GROUP_NO_EXTR=NOMGRE[j][0],)
+ motscles['VECT_GRNO_ORIG']=NOMGRO[j]
+ motscles['VECT_GRNO_EXTR']=NOMGRE[j]
+ else:
+ if TYPE_MAILLAGE.find('AXIS')!=-1 : grnoorig=NOMGRE[j][0]
+# si AXIS, P_FON1 est remplace par P_FON2 pour
+# fermer le fond de fissure
+ else : grnoorig=NOMGRO[j][0]
+ motscles['FOND_FERME']=_F(GROUP_MA =TABMA8[j],
+ GROUP_NO_ORIG=grnoorig,
+ GROUP_MA_ORIG=NOMMA[j],)
+ fond3d[j]=DEFI_FOND_FISS( MAILLAGE = MAILLAGE,
+ LEVRE_SUP = _F(GROUP_MA='LEVRCORP',),
+ LEVRE_INF = _F(GROUP_MA='LEVRTUBU',),**motscles)
+ if THETA_3D!=None:
+ for tht3d in THETA_3D :
+#
+# --- commande CALC_THETA ---
+#
+ __theta = CALC_THETA( MODELE = modele,
+ FOND_FISS = fond3d[j],
+ THETA_3D = _F( TOUT = 'OUI',
+ MODULE = 1.0 ,
+ R_INF = tht3d['R_INF'],
+ R_SUP = tht3d['R_SUP'], ) )
+#
+# --- commande CALC_G_THETA_T ---
+#
+ montit = 'G_THETA AVEC R_INF = '+str(tht3d['R_INF'])+' ET R_SUP = '+str(tht3d['R_SUP'])
+ motscles={}
+ if COMP_ELAS!=None: motscles['COMP_ELAS']= _F(TOUT = 'OUI',
+ RELATION = COMP_ELAS['RELATION'],)
+ if COMP_INCR!=None: motscles['COMP_INCR']= _F(RELATION = COMP_INCR['RELATION'],)
+ print motscles
+ __gtheta = CALC_G_THETA_T( MODELE = modele,
+ CHAM_MATER = affmat,
+ THETA = __theta,
+ RESULTAT = nomres,
+ TOUT_ORDRE = 'OUI',
+ TITRE = montit,**motscles)
+ IMPR_TABLE(TABLE = __gtheta, )
+#
+# recherche du g max
+#
+ if OPTION=='CALC_G_MAX' :
+ if BORNES!=None:
+ mcfact=[]
+ for born in BORNES :
+ mcfact.append(_F( NUME_ORDRE = born['NUME_ORDRE'] ,
+ VALE_MIN = born['VALE_MIN' ] ,
+ VALE_MAX = born['VALE_MAX' ] ) )
+ __gbil = CALC_G_THETA_T( MODELE = modele,
+ CHAM_MATER = affmat,
+ THETA = __theta,
+ RESULTAT = nomres,
+ TOUT_ORDRE = 'OUI',
+ COMP_ELAS = _F(TOUT = 'OUI',
+ RELATION = COMP_ELAS['RELATION'],),
+ TITRE = montit,
+ OPTION = OPTION,
+ BORNES = mcfact,)
+ IMPR_TABLE(TABLE = __gbil, )
+#
+# --- commande CALC_G_LOCAL_T ---
+#
+ montit = 'G_LOCAL AVEC R_INF = '+str(tht3d['R_INF'])+' ET R_SUP = '+str(tht3d['R_SUP'])
+ motscles={}
+ if COMP_ELAS!=None: motscles['COMP_ELAS' ]= _F(TOUT = 'OUI',
+ RELATION = COMP_ELAS['RELATION'],)
+ if FERME:
+ motscles['LISSAGE_THETA']= 'LAGRANGE'
+ motscles['LISSAGE_G' ]= 'LAGRANGE'
+ __glocal = CALC_G_LOCAL_T( MODELE = modele,
+ CHAM_MATER = affmat,
+ FOND_FISS = fond3d[j],
+ RESULTAT = nomres,
+ TOUT_ORDRE = 'OUI',
+ R_INF = tht3d['R_INF'],
+ R_SUP = tht3d['R_SUP'],
+ TITRE = montit,**motscles)
+ IMPR_TABLE(TABLE = __glocal, )
+#
+# recherche du g max local
+#
+ if OPTION=='CALC_G_MAX_LOCAL' :
+ if BORNES!=None:
+ motscles={}
+ mcfact=[]
+ if FERME:
+ motscles['LISSAGE_THETA']= 'LAGRANGE'
+ motscles['LISSAGE_G' ]= 'LAGRANGE'
+ for born in BORNES :
+ mcfact.append(_F( NUME_ORDRE = born['NUME_ORDRE'] ,
+ VALE_MIN = born['VALE_MIN' ] ,
+ VALE_MAX = born['VALE_MAX' ] ) )
+ motscles['BORNES']=mcfact
+ __glbil = CALC_G_LOCAL_T( MODELE = modele,
+ CHAM_MATER = affmat,
+ FOND_FISS = fond3d[j],
+ RESULTAT = nomres,
+ TOUT_ORDRE = 'OUI',
+ COMP_ELAS = _F(TOUT = 'OUI',
+ RELATION = COMP_ELAS['RELATION'],),
+ TITRE = montit,
+ OPTION = 'CALC_G_MAX',
+ R_INF = tht3d['R_INF'],
+ R_SUP = tht3d['R_SUP'],**motscles)
+ IMPR_TABLE(TABLE = __glbil, )
+#
+# --- commande IMPR_RESU ---
+#
+ if IMPRESSION!=None:
+ mcfresu =[]
+ motscles={}
+ motsclei={}
+ if IMPRESSION['FORMAT'] in ('IDEAS','CASTEM') :
+ ncham =[]
+ if IMPRESSION['NOM_CHAM']!=None :
+ if type(IMPRESSION['NOM_CHAM']) in (types.TupleType,types.ListType) : ncham= IMPRESSION['NOM_CHAM']
+ else : ncham=[IMPRESSION['NOM_CHAM'],]
+ if len(ncham)==3 : motscles['NOM_CHAM' ]=('DEPL','EQUI_ELNO_SIGM')
+ elif (len(ncham)==1) and (ncham[0][:4]!='TEMP') :
+ motscles['NOM_CHAM' ]= ncham[0]
+ elif (len(ncham)==2) and (ncham[0][:4]!='TEMP') and (ncham[1][:4]!='TEMP') :
+ motscles['NOM_CHAM' ]=(ncham[0],ncham[1])
+ elif (len(ncham)==2) and (ncham[0][:4]=='TEMP') :
+ motscles['NOM_CHAM' ]= ncham[1]
+ elif (len(ncham)==2) and (ncham[1][:4]=='TEMP') :
+ motscles['NOM_CHAM' ]= ncham[0]
+ if IMPRESSION['TOUT_ORDRE']!=None :
+ motscles['TOUT_ORDRE']= IMPRESSION['TOUT_ORDRE']
+ elif IMPRESSION['NUME_ORDRE']!=None :
+ motscles['NUME_ORDRE']= IMPRESSION['NUME_ORDRE']
+ elif IMPRESSION['INST']!=None :
+ motscles['INST' ]= IMPRESSION['INST']
+ if IMPRESSION['FORMAT']=='IDEAS' :
+ motsclei['VERSION' ]= IMPRESSION['VERSION']
+ if IMPRESSION['FORMAT']=='CASTEM' :
+ motsclei['NIVE_GIBI' ]= IMPRESSION['NIVE_GIBI']
+ mcfresu.append(_F(MAILLAGE=MAILLAGE,RESULTAT=nomres,**motscles))
+ if ECHANGE!=None:
+ motscles={}
+ if IMPRESSION['FORMAT'] in ('IDEAS','CASTEM') :
+ if len(ncham)==3 : motscles['NOM_CHAM' ]=('TEMP',)
+ elif (len(ncham)==1) and (ncham[0][:4]=='TEMP') :
+ motscles['NOM_CHAM' ]= ncham[0]
+ elif (len(ncham)==2) and (ncham[0][:4]=='TEMP') :
+ motscles['NOM_CHAM' ]= ncham[0]
+ elif (len(ncham)==2) and (ncham[1][:4]=='TEMP') :
+ motscles['NOM_CHAM' ]= ncham[1]
+ if IMPRESSION['TOUT_ORDRE']!=None :
+ motscles['TOUT_ORDRE']= IMPRESSION['TOUT_ORDRE']
+ elif IMPRESSION['NUME_ORDRE']!=None :
+ motscles['NUME_ORDRE']= IMPRESSION['NUME_ORDRE']
+ elif IMPRESSION['INST']!=None :
+ motscles['INST' ]= IMPRESSION['INST']
+ if IMPRESSION['FORMAT']=='IDEAS' :
+ motsclei['VERSION' ]= IMPRESSION['VERSION']
+ if IMPRESSION['FORMAT']=='CASTEM' :
+ motsclei['NIVE_GIBI' ]= IMPRESSION['NIVE_GIBI']
+ mcfresu.append(_F(RESULTAT=resuth,**motscles))
+ IMPR_RESU( MODELE = modele,
+ RESU = mcfresu,
+ FORMAT=IMPRESSION['FORMAT'],**motsclei)
+#
+ return ier
--- /dev/null
+#@ MODIF macr_aspic_mail_ops Macro DATE 31/05/2006 AUTEUR CIBHHLV L.VIVAN
+# -*- coding: iso-8859-1 -*-
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+
+
+import os.path
+from math import sqrt, cos, sin, pi, pow, tan
+
+# Ecriture du fichier GIBI principal (dgib) - ASPID0
+def write_file_dgib_ASPID0(nomFichierDATG,UNITD, EPT1, DET1, D1, D2, EPT2, DET2, ZMAX, H,
+ ALPHA, JEU, EPC, DEC, XMAX, TYPMAI, THETA, TYPELE,
+ ITYPSO, DPENE, NIVMAG, loc_datg) :
+
+ import aster
+# Ouverture du fichier d'entrée de commandes
+ fdgib=open(nomFichierDATG,'w')
+ POIVIR = ' ; \n'
+ texte='****************************************************************\n'
+ texte=texte+'opti echo 0 ; \n'
+ texte=texte+'epT1 = '+str(EPT1) +POIVIR
+ texte=texte+'DeT1 = '+str(DET1) +POIVIR
+ texte=texte+'d1 = '+str(D1) +POIVIR
+ texte=texte+'d2 = '+str(D2) +POIVIR
+ texte=texte+'epT2 = '+str(EPT2) +POIVIR
+ texte=texte+'DeT2 = '+str(DET2) +POIVIR
+ texte=texte+'Zmax = '+str(ZMAX) +POIVIR
+ texte=texte+'type_s = '+str(ITYPSO) +POIVIR
+ texte=texte+'d_pene = '+str(DPENE) +POIVIR
+ texte=texte+'h = '+str(H) +POIVIR
+ texte=texte+'angl_s = '+str(ALPHA) +POIVIR
+ texte=texte+'jeu = '+str(JEU) +POIVIR
+ texte=texte+'epC = '+str(EPC) +POIVIR
+ texte=texte+'DeC = '+str(DEC) +POIVIR
+ texte=texte+'Xmax = '+str(XMAX) +POIVIR
+ texte=texte+'typmai = MOT '+TYPMAI +POIVIR
+ texte=texte+'theta = '+str(THETA) +POIVIR
+ texte=texte+'typele = MOT '+TYPELE +POIVIR
+ texte=texte+'typ_eque = MOT '+'SAINE' +POIVIR
+ texte=texte+'nivmag = '+str(NIVMAG) +POIVIR
+ texte=texte+'* \n'
+ texte = texte + open(os.path.join(loc_datg, 'aspic.datg'), 'r').read()
+ print texte
+ fdgib.write(texte)
+ fdgib.close()
+
+# Ecriture du fichier GIBI principal (dgib) - ASPID1
+def write_file_dgib_ASPID1(nomFichierDATG,UNITD, EPT1, DET1, D1, D2, EPT2, DET2, ZMAX, H,
+ ALPHA, JEU, EPC, DEC, XMAX, TYPMAI,THETA,
+ A,C,EPS, RC0, NS,NC,NT,POSI, NDT,FETIRF,FETIRP,
+ TFISS,ZETA,ITYPSO,DPENE, NIVMAG, loc_datg) :
+
+ import aster
+# Ouverture du fichier d'entrée de commandes
+ fdgib=open(nomFichierDATG,'w')
+ POIVIR = ' ; \n'
+ texte='****************************************************************\n'
+ texte=texte+'opti echo 0 ; \n'
+ texte=texte+'epT1 = '+str(EPT1) +POIVIR
+ texte=texte+'DeT1 = '+str(DET1) +POIVIR
+ texte=texte+'d1 = '+str(D1) +POIVIR
+ texte=texte+'d2 = '+str(D2) +POIVIR
+ texte=texte+'epT2 = '+str(EPT2) +POIVIR
+ texte=texte+'DeT2 = '+str(DET2) +POIVIR
+ texte=texte+'Zmax = '+str(ZMAX) +POIVIR
+ texte=texte+'type_s = '+str(ITYPSO) +POIVIR
+ texte=texte+'d_pene = '+str(DPENE) +POIVIR
+ texte=texte+'h = '+str(H) +POIVIR
+ texte=texte+'angl_s = '+str(ALPHA) +POIVIR
+ texte=texte+'jeu = '+str(JEU) +POIVIR
+ texte=texte+'epC = '+str(EPC) +POIVIR
+ texte=texte+'DeC = '+str(DEC) +POIVIR
+ texte=texte+'Xmax = '+str(XMAX) +POIVIR
+ texte=texte+'typmai = MOT '+TYPMAI +POIVIR
+ texte=texte+'theta = '+str(THETA) +POIVIR
+ texte=texte+'a = '+str(A) +POIVIR
+ texte=texte+'c = '+str(C) +POIVIR
+ texte=texte+'zeta = '+str(ZETA) +POIVIR
+ texte=texte+'eps = '+str(EPS) +POIVIR
+ texte=texte+'rc0 = '+str(RC0) +POIVIR
+ texte=texte+'ns = '+str(NS) +POIVIR
+ texte=texte+'nc = '+str(NC) +POIVIR
+ texte=texte+'nt = '+str(NT) +POIVIR
+ texte=texte+'dir_fiss = MOT '+POSI +POIVIR
+ texte=texte+'pos_fiss = MOT '+TFISS +POIVIR
+ texte=texte+'ndt = '+str(NDT) +POIVIR
+ texte=texte+'f_etir_f = '+str(FETIRF) +POIVIR
+ texte=texte+'f_etir_p = '+str(FETIRP) +POIVIR
+ texte=texte+'typ_eque = MOT '+'FISS_LON' +POIVIR
+ texte=texte+'nivmag = '+str(NIVMAG) +POIVIR
+ texte=texte+'* \n'
+ texte = texte + open(os.path.join(loc_datg, 'aspic_v2.datg'), 'r').read()
+ print texte
+ fdgib.write(texte)
+ fdgib.close()
+
+# Ecriture du fichier GIBI principal (dgib) - ASPID2
+def write_file_dgib_ASPID2(nomFichierDATG,UNITD, EPT1, DET1, D1, D2, EPT2, DET2, ZMAX,
+ H, ALPHA, JEU, EPC, DEC, XMAX, TYPMAI,
+ THETA, A, C, EPS, RC0, RC1, RC2, RC3,
+ ALP,BETA, NS, NC, NT, POSI ,NDT,NSDT,TFISS,
+ ZETA,ITYPSO,DPENE, NIVMAG, loc_datg) :
+#
+ import aster
+ CALPHA = cos(ALPHA*pi/180.)
+ SALPHA = sin(ALPHA*pi/180.)
+ CTHETA = cos(THETA*pi/180.)
+ STHETA = sin(THETA*pi/180.)
+#
+ AOLD = A
+#
+ if (ITYPSO == 1) :
+# PIQUAGE TYPE 1
+ if (POSI == 'DROIT') :
+# PIQUAGE DROIT
+ if (TFISS == 'DEB_INT') :
+# POSITION INTERNE
+ SGAMMA = STHETA * (DET1/2.0)/( (DEC/2.0) -EPC)
+ SGAMME = STHETA * (DET1/2.0)/( (DEC/2.0) )
+ RAPPA = sqrt(1.0 - pow(SGAMMA,2))
+ RAPPE = sqrt(1.0 - pow(SGAMME,2))
+ AP = A - (1.0 - RAPPA)*A
+ RAPP = (AP/EPC*RAPPE) + (1.0-(AP/EPC))*RAPPA
+ XA = (DET1/2.0) * CTHETA
+ YA = (DET1/2.0) * STHETA
+ ZA = ((DEC/2.0) -EPC) * sqrt(1.0 - pow(SGAMMA,2))
+ ZA0 = (DEC/2.0) - EPC
+ XA0 = DET1/2.0
+ XN0 = XA0
+ YN0 = 0.0
+ ZN0 = ZA0 + A
+ XN = XN0 * CTHETA
+ YN = XN0 * STHETA
+ SGAMN = YN / ZN0
+ ZN = ZN0 * sqrt(1.0 - (SGAMN*SGAMN))
+ D0N0 = sqrt( pow((XA0 - XN0),2) + pow((ZA0 - ZN0),2) )
+ DN = sqrt( pow((XA - XN),2) + pow((YA - YN),2) + pow((ZA - ZN),2) )
+ RAPP = D0N0 / DN
+ ECART = (1.0 - RAPP) * D0N0
+ A = A - ECART
+ elif (TFISS == 'DEB_EXT') :
+# POSITION EXTERNE
+ SGAMME = STHETA * (DET1/2.0)/ (DEC/2.0)
+ RAPPE = sqrt(1.0 - pow(SGAMME,2))
+ A = A -(1.0 - RAPPE)*A
+
+ elif (POSI == 'INCLINE') :
+# PIQUAGE INCLINE
+ SGAMMA = STHETA * (DET1/2.0)/ ( (DEC/2.0) -EPC)
+ XA = (DET1/2.0) * CTHETA
+ YA = (DET1/2.0) * STHETA
+ ZA = ((DEC/2.0) - EPC) * sqrt(1.0 - pow(SGAMMA,2))
+ ZA0 = (DEC/2.0) - EPC
+ ZD0 = DEC/2.0
+ XA0 = DET1/2.0
+ XD0 = XA0 + (tan(ALPHA*pi/180.0) * EPC)
+ A0D0 = sqrt( pow((ZD0 - ZA0),2) + pow((XD0 - XA0),2) )
+ EPSIL = STHETA * tan(ALPHA*pi/180.0)
+ PHI = (EPSIL * ZA) - YA
+ DELTA = pow(PHI,2) - ((1 + pow(EPSIL,2))*(pow(PHI,2) - (pow((DEC/2.0),2)*pow(EPSIL,2))))
+ if (STHETA > 0) :
+ YD = ( sqrt(DELTA) - PHI) / (1.0 + pow(EPSIL,2))
+ else :
+ YD = ( -1.0*sqrt(DELTA) - PHI) / (1.0 + pow(EPSIL,2))
+
+ ZD = sqrt(pow((DEC/2.0),2) - pow(YD,2))
+
+ if ( (abs(THETA - 0.0) < 1.e-3) or ((abs(THETA - 180.0)) < 1.e-3) ) :
+ XD = CTHETA * XD0
+ else :
+ XD = YD / tan(THETA*pi/180.0)
+
+ AD = sqrt( pow((XA - XD),2) + pow((YA - YD),2) + pow((ZA - ZD),2) )
+ RAPP = A0D0 / AD
+
+ if (TFISS == 'DEB_EXT') :
+ XN0 = XD0 - A*SALPHA
+ YN0 = 0.0
+ ZN0 = ZD0 - A*CALPHA
+ XN = XN0 * CTHETA
+ YN = XN0 * STHETA
+ DNXY = sqrt(pow(XD,2) + pow(YD,2)) - sqrt(pow(XN,2) + pow(YN,2))
+ DNXY0 = XD0 - XN0
+ RAPP = DNXY/DNXY0
+ # Correction necessaire dans le cas theta et/ou alpha grand
+ if (RAPP < 0.5) :
+ DXY = sqrt(pow(XD,2) + pow(YD,2) )
+ XN = XN * DXY/XD0
+ YN = YN * DXY/XD0
+ SGAMN = YN / ZN0
+ ZN = ZN0 * sqrt(1.0 - pow(SGAMN,2))
+ D0N0 = sqrt( pow((XD0 - XN0),2) + pow((ZD0 - ZN0),2) )
+ DN = sqrt( pow((XD - XN),2) + pow((YD - YN),2) + pow((ZD - ZN),2) )
+ RAPP = D0N0 / DN
+ ECART = (RAPP - 1.0) * D0N0
+ A = A + ECART
+
+ if (TFISS == 'DEB_INT') :
+ XN0 = XA0 + A*SALPHA
+ YN0 = 0.0
+ ZN0 = ZA0 + A*CALPHA
+ XN = XN0 * CTHETA
+ YN = XN0 * STHETA
+ SGAMN = YN / ZN0
+ ZN = ZN0 * sqrt(1.0 - pow(SGAMN,2))
+ D0N0 = sqrt( pow((XA0 - XN0),2) + pow((ZA0 - ZN0),2) )
+ DN = sqrt( pow((XA - XN),2) + pow((YA - YN),2) + pow((ZA - ZN),2) )
+ RAPP = D0N0 / DN
+ ECART = (RAPP - 1.0) * D0N0
+ A = A + ECART
+
+ elif (ITYPSO == 2) :
+# PIQUAGE TYPE 2
+ if (POSI == 'DROIT') :
+# PIQUAGE DROIT
+ SGAMMI = STHETA * ((DET1/2.0) - EPT1)/(DEC/2.0)
+ XI = ((DET1/2.0) - EPT1) * CTHETA
+ YI = ((DET1/2.0) - EPT1) * STHETA
+ ZI = (DEC/2.0) * sqrt(1.0 - pow(SGAMMI,2))
+ XI0 = (DET1/2.0) -EPT1
+ YI0 = 0.0
+ ZI0 = (DEC/2.0)
+
+ SGAMMA = STHETA * (DET1/2.0)/((DEC/2.0) -EPC)
+ YA = (DET1/2.0) * STHETA
+ ZA = ((DEC/2.0) - EPC) * sqrt(1.0 - pow(SGAMMA,2))
+ TGALP = H / EPC
+ EPSIL = STHETA * TGALP
+ PHI = (EPSIL * ZA) - YA
+ DELTA = pow(PHI,2) - (1.0 + pow(EPSIL,2))*(pow(PHI,2) - pow((DEC/2.0),2)*pow(EPSIL,2))
+ if (STHETA > 0) :
+ YD = (sqrt(DELTA) - PHI) / (1.0 + pow(EPSIL,2))
+ else :
+ YD = (-1.0*sqrt(DELTA) - PHI) / (1.0 + pow(EPSIL,2))
+
+ ZD = sqrt( pow((DEC/2.0),2) - pow(YD,2) )
+ if ( (abs(THETA - 0.0) < 1.0e-3) or
+ (abs(THETA - 180.0) < 1.0e-3) or
+ (abs(THETA + 180.0) < 1.0e-3) or
+ (abs(THETA + 90.0) < 1.0e-3) or
+ (abs(THETA - 90.0) < 1.0e-3) ) :
+ XD = CTHETA * ((DET1/2.0) + H)
+ else :
+ XD = YD / (tan(THETA*pi/180.0))
+
+ XD0 = (DET1/2.0) + H
+ YD0 = 0.0
+ ZD0 = (DEC/2.0)
+
+ if (TFISS == 'DEB_EXT') :
+ XN0 = XD0 - A
+ YN0 = 0.0
+ ZN0 = ZI0
+ XN = XN0 * CTHETA
+ YN = XN0 * STHETA
+ DZID = abs(ZI - ZD)
+ DXYID = sqrt( pow((XD - XI),2) + pow((YD - YI),2) )
+ DXYIN = sqrt( pow((XN - XI),2) + pow((YN - YI),2) )
+ DZIN = (DXYIN * DZID) / DXYID
+ ZN = ZI - DZIN
+ D0N0 = sqrt( pow((XD0 - XN0),2) + pow((ZD0 - ZN0),2) )
+ DN = sqrt( pow((XD - XN),2) + pow((YD - YN),2) + pow((ZD - ZN),2) )
+ RAPP = D0N0 / DN
+ ECART = DN - D0N0
+ A = A - ECART
+
+ if (TFISS == 'DEB_INT') :
+ XN0 = XI0 + A
+ YN0 = 0.0
+ ZN0 = ZI0
+ XN = XN0 * CTHETA
+ YN = XN0 * STHETA
+ SGAMN = YN / ZN0
+ ZN = ZN0 * sqrt(1.0 - pow(SGAMN,2))
+ I0N0 = sqrt( pow((XI0 - XN0),2) + pow((ZI0 - ZN0),2) )
+ IN = sqrt( pow((XI - XN),2) + pow((YI - YN),2) + pow((ZI - ZN),2) )
+ RAPP = I0N0 / IN
+ ECART = I0N0 * ( 1.0 - RAPP )
+ A = A - ECART
+
+ elif (POSI == 'INCLINE') :
+# PIQUAGE INCLINE
+ TGALPHA = SALPHA/CALPHA
+ REPB = (DEC/2.0) + JEU + (EPT1*TGALPHA)
+ SGAMB = (STHETA * DET1/2.0 ) / REPB
+ CGAMB = sqrt(1.0 - pow(SGAMB,2))
+ XB = (DET1/2.0) * CTHETA
+ YB = (DET1/2.0) * STHETA
+ ZB = ( (DEC/2.0) + JEU + (EPT1*TGALPHA) ) * CGAMB
+ XB0 = (DET1/2.0)
+ YB0 = 0.0
+ ZB0 = (DEC/2.0) + JEU + (EPT1*TGALPHA)
+#
+ RIT1 = (DET1/2.0) - EPT1
+ REPG = (DEC/2.0) + JEU
+ SGAMG = ((STHETA ) * RIT1) / REPG
+ CGAMG = sqrt(1.0 - pow(SGAMG,2))
+ XG = RIT1 * CTHETA
+ YG = RIT1 * STHETA
+ ZG = ((DEC/2.0) + JEU) * CGAMG
+ XG0 = RIT1
+ YG0 = 0.0
+ ZG0 = (DEC/2.0) + JEU
+#
+ if (TFISS == 'DEB_INT') :
+ XN0 = XG0 + A*CALPHA
+ YN0 = 0.0
+ ZN0 = ZG0 + A*SALPHA
+ XN = XN0 * CTHETA
+ YN = XN0 * STHETA
+ SGAMN = YN / ZN0
+ ZN = ZN0 * sqrt(1.0 - pow(SGAMN,2))
+ G0N0 = sqrt( pow((XG0 - XN0),2) + pow((ZG0 - ZN0),2) )
+ GN = sqrt( pow((XG - XN),2) + pow((YG - YN),2) + pow((ZG - ZN),2) )
+ RAPP = G0N0 / GN
+ ECART = (RAPP - 1.0) * G0N0
+ A = A + ECART
+
+ if (TFISS == 'DEB_EXT') :
+ XN0 = XB0 - A*CALPHA
+ YN0 = 0.0
+ ZN0 = ZB0 - A*SALPHA
+ XN = XN0 * CTHETA
+ YN = XN0 * STHETA
+ SGAMN = YN / ZN0
+ ZN = ZN0 * sqrt(1.0 - pow(SGAMN,2))
+ B0N0 = sqrt( pow((XB0 - XN0),2) + pow((ZB0 - ZN0),2) )
+ BN = sqrt( pow((XB - XN),2) + pow((YB - YN),2) + pow((ZB - ZN),2) )
+ RAPP = B0N0 / BN
+ ECART = (RAPP - 1.0) * B0N0
+ A = A + ECART
+
+ print ' <MACR_ASPIC_MAIL> CORRECTION PROFONDEUR DEFAUT'
+ print ' PROFONDEUR SUR PIQUAGE : ', AOLD
+ print ' PROFONDEUR SUR EQUERRE : ', A
+
+# Ouverture du fichier d'entrée de commandes
+
+ fdgib=open(nomFichierDATG,'w')
+ POIVIR = ' ; \n'
+ texte='****************************************************************\n'
+ texte=texte+'opti echo 0 ; \n'
+ texte=texte+'epT1 = '+str(EPT1) +POIVIR
+ texte=texte+'DeT1 = '+str(DET1) +POIVIR
+ texte=texte+'d1 = '+str(D1) +POIVIR
+ texte=texte+'d2 = '+str(D2) +POIVIR
+ texte=texte+'epT2 = '+str(EPT2) +POIVIR
+ texte=texte+'DeT2 = '+str(DET2) +POIVIR
+ texte=texte+'Zmax = '+str(ZMAX) +POIVIR
+ texte=texte+'type_s = '+str(ITYPSO) +POIVIR
+ texte=texte+'d_pene = '+str(DPENE) +POIVIR
+ texte=texte+'h = '+str(H) +POIVIR
+ texte=texte+'angl_s = '+str(ALPHA) +POIVIR
+ texte=texte+'jeu = '+str(JEU) +POIVIR
+ texte=texte+'epC = '+str(EPC) +POIVIR
+ texte=texte+'DeC = '+str(DEC) +POIVIR
+ texte=texte+'Xmax = '+str(XMAX) +POIVIR
+ texte=texte+'typmai = MOT '+TYPMAI +POIVIR
+ texte=texte+'theta = '+str(THETA) +POIVIR
+ texte=texte+'a = '+str(A) +POIVIR
+ texte=texte+'c = '+str(C) +POIVIR
+ texte=texte+'zeta = '+str(ZETA) +POIVIR
+ texte=texte+'eps = '+str(EPS) +POIVIR
+ texte=texte+'rc0 = '+str(RC0) +POIVIR
+ texte=texte+'rc1 = '+str(RC1) +POIVIR
+ texte=texte+'rc2 = '+str(RC2) +POIVIR
+ texte=texte+'rc3 = '+str(RC3) +POIVIR
+ texte=texte+'alpha = '+str(ALP) +POIVIR
+ texte=texte+'beta = '+str(BETA) +POIVIR
+ texte=texte+'ns = '+str(NS) +POIVIR
+ texte=texte+'nc = '+str(NC) +POIVIR
+ texte=texte+'nt = '+str(NT) +POIVIR
+ texte=texte+'dir_fiss = MOT '+POSI +POIVIR
+ texte=texte+'pos_fiss = MOT '+TFISS +POIVIR
+ texte=texte+'ndt = '+str(NDT) +POIVIR
+ texte=texte+'nsdt = '+str(NSDT) +POIVIR
+ texte=texte+'typ_eque = MOT '+'FISS_COU' +POIVIR
+ texte=texte+'nivmag = '+str(NIVMAG) +POIVIR
+ texte=texte+'* \n'
+ texte=texte+'list epc ;\n'
+ texte = texte + open(os.path.join(loc_datg, 'aspic.datg'), 'r').read()
+ print texte
+ fdgib.write(texte)
+ fdgib.close()
+
+def macr_aspic_mail_ops(self,EXEC_MAILLAGE,TYPE_ELEM,RAFF_MAIL,TUBULURE,
+ SOUDURE,CORPS,FISS_SOUDURE,IMPRESSION,INFO,
+ **args):
+ """
+ Ecriture de la macro MACR_ASPIC_MAIL
+ """
+ from Accas import _F
+ import types
+ import aster
+ ier=0
+
+# On importe les definitions des commandes a utiliser dans la macro
+ EXEC_LOGICIEL =self.get_cmd('EXEC_LOGICIEL')
+ PRE_GIBI =self.get_cmd('PRE_GIBI')
+ LIRE_MAILLAGE =self.get_cmd('LIRE_MAILLAGE')
+ DEFI_GROUP =self.get_cmd('DEFI_GROUP')
+ MODI_MAILLAGE =self.get_cmd('MODI_MAILLAGE')
+ AFFE_MODELE =self.get_cmd('AFFE_MODELE')
+ CREA_MAILLAGE =self.get_cmd('CREA_MAILLAGE')
+ IMPR_RESU =self.get_cmd('IMPR_RESU')
+
+# La macro compte pour 1 dans la numerotation des commandes
+ self.set_icmd(1)
+
+ TYPELE = TYPE_ELEM
+ NIVMAG = EXEC_MAILLAGE['NIVE_GIBI']
+#
+# --- raffinement maillage ---
+#
+ TYPMAI = RAFF_MAIL
+ GROS = (TYPMAI=='GROS')
+ if GROS : NBAZIT = 40
+ else : NBAZIT = 48
+#
+# --- caracteristiques de la tubulure ---
+#
+ EPT1 = TUBULURE['E_BASE' ]
+ DET1 = TUBULURE['DEXT_BASE']
+ D1 = TUBULURE['L_BASE' ]
+ D2 = TUBULURE['L_CHANF' ]
+ EPT2 = TUBULURE['E_TUBU' ]
+ DET2 = TUBULURE['DEXT_TUBU']
+ ZMAX = TUBULURE['Z_MAX' ]
+ TYPSOU= TUBULURE['TYPE' ]
+ DPENE = TUBULURE['L_PENETR' ]
+ if TYPSOU=='TYPE_2' and DPENE>0.0 :
+ self.cr.fatal("<F> <MACR_ASPIC_MAIL> les piquages penetrants sont autorises uniquement avec les soudures de type 1")
+ ier = ier+1
+ return ier
+ if TYPSOU=='TYPE_2' :
+ ITYPSO = 2
+ else :
+ ITYPSO = 1
+#
+# --- caracteristiques de la soudure ---
+#
+ H = SOUDURE['H_SOUD' ]
+ ALPHA = SOUDURE['ANGL_SOUD']
+ JEU = SOUDURE['JEU_SOUD' ]
+#
+# --- caracteristiques du corps ---
+#
+ EPC = CORPS ['E_CORP' ]
+ DEC = CORPS ['DEXT_CORP']
+ XMAX = CORPS ['X_MAX' ]
+ EPSI = 1.E-03
+ RMB = ( DET1 - EPT1 ) / 2.0
+ VAL1 = 1.5 * sqrt( RMB**3 / EPT1 )
+ VAL3 = 3.0 * sqrt( RMB * EPT1 )
+ RMT = ( DET2 - EPT2 ) / 2.0
+ VAL2 = 1.5 * sqrt( RMT**3 / EPT2 )
+ VAL4 = 3.0 * sqrt( RMT * EPT2 )
+ LZMAX = max ( VAL1 , VAL2, VAL3, VAL4 )
+ ZMAXC = LZMAX + ( DEC/2.0 ) + D1 + D2
+ LOK = ( abs(ZMAX-ZMAXC) <= EPSI * abs(ZMAXC) )
+ if not LOK :
+ print ' <MACR_ASPIC_MAIL> erreur donnees'
+ print ' <MACR_ASPIC_MAIL> Z_MAX FOURNIE : ', ZMAX
+ print ' <MACR_ASPIC_MAIL> Z_MAX CALCULEE : ', ZMAXC
+ self.cr.fatal("<F> <MACR_ASPIC_MAIL> erreur donnees ")
+ ier = ier+1
+ return ier
+ RMC = ( DEC - EPC ) / 2.0
+ VAL1 = 1.5 * sqrt( RMC**3 / EPC )
+ VAL2 = 3.0 * sqrt( RMC * EPC )
+ LXMAX = max( VAL1 , VAL2 )
+ XMAXC = LXMAX + ( DET1 / 2.0 )
+ LOK = ( abs(XMAX-XMAXC) <= EPSI * abs(XMAXC) )
+ if not LOK :
+ print ' <MACR_ASPIC_MAIL> erreur donnees'
+ print ' <MACR_ASPIC_MAIL> Z_MAX FOURNIE : ', ZMAX
+ print ' <MACR_ASPIC_MAIL> Z_MAX CALCULEE : ', ZMAXC
+ self.cr.fatal("<F> <MACR_ASPIC_MAIL> erreur donnees ")
+ ier = ier+1
+ return ier
+ print ' MACR_ASPIC_MAIL / X_MAX CALCULEE : ',XMAX
+ print ' MACR_ASPIC_MAIL / Z_MAX CALCULEE : ',XMAXC
+#
+# --- caracteristiques de la fissure ---
+#
+ SAIN = 0
+ FISLON = 0
+ FISCOU = 0
+ THETA = 0.0
+ TFISS = None
+ if FISS_SOUDURE==None :
+ SAIN = 1
+ else :
+ if FISS_SOUDURE['TYPE']=='LONGUE' : FISLON = 1
+ elif FISS_SOUDURE['TYPE']=='COURTE' : FISCOU = 1
+ THETA = FISS_SOUDURE['AZIMUT' ]
+ EPS = FISS_SOUDURE['ANGL_OUVERTURE']
+ AXIS = FISS_SOUDURE['AXIS' ]
+ POSI = FISS_SOUDURE['POSITION' ]
+ TFISS = FISS_SOUDURE['FISSURE' ]
+ A = FISS_SOUDURE['PROFONDEUR' ]
+ if FISS_SOUDURE['LONGUEUR' ]!=None :
+ C = FISS_SOUDURE['LONGUEUR' ]
+ N1 = 1
+ else : N1 = 0
+ if (TFISS=='DEB_INT') and (POSI=='INCLINE') and (DPENE>0.0) and (JEU>0.0) :
+ print ' <MACR_ASPIC_MAIL> erreur donnees'
+ print ' <MACR_ASPIC_MAIL> dans le cas de fissures'
+ print ' <MACR_ASPIC_MAIL> inclinees debouchant en peau interne avec'
+ print ' <MACR_ASPIC_MAIL> piquage penetrant le jeu doit etre nul'
+ self.cr.fatal("<F> <MACR_ASPIC_MAIL> erreur donnees ")
+ ier = ier+1
+ return ier
+ ZETA = 0.5
+ if TFISS not in ('DEB_INT','DEB_EXT') :
+ if FISS_SOUDURE['LIGA_INT']==None :
+ print ' <MACR_ASPIC_MAIL> erreur donnees'
+ print ' <MACR_ASPIC_MAIL> dans le cas de fissures internes'
+ print ' <MACR_ASPIC_MAIL> (NON_DEB) le ligament inferieur est obligatoire'
+ self.cr.fatal("<F> <MACR_ASPIC_MAIL> erreur donnees ")
+ ier = ier+1
+ return ier
+ LIGA = FISS_SOUDURE['LIGA_INT']
+ if POSI=='DROIT' :
+ if ITYPSO==1 : ZETA = (A+LIGA)/(EPC+H)
+ else : ZETA = (A+LIGA)/(EPT1+H)
+ else :
+ if ITYPSO==1 : ZETA = (A+LIGA)*cos(ALPHA*pi/180.0)/EPC
+ else : ZETA = (A+LIGA)*cos(ALPHA*pi/180.0)/EPT1
+ if ZETA < 0.1 :
+ self.cr.fatal("<F> <MACR_ASPIC_MAIL> dans le cas de fissures internes (NON_DEB) le ligament est trop petit ")
+ ier = ier+1
+ return ier
+ if ZETA > 0.9 :
+ self.cr.fatal("<F> <MACR_ASPIC_MAIL> dans le cas de fissures internes (NON_DEB) le ligament est trop grand ")
+ ier = ier+1
+ return ier
+ if LIGA < 0.1*EPC :
+ self.cr.fatal("<F> <MACR_ASPIC_MAIL> dans le cas de fissures internes (NON_DEB) le ligament est trop petit ")
+ ier = ier+1
+ return ier
+ if (LIGA + 2.0*A) > 0.9*EPC :
+ self.cr.fatal("<F> <MACR_ASPIC_MAIL> dans le cas de fissures internes (NON_DEB) le ligament est trop grand ")
+ ier = ier+1
+ return ier
+ if N1==0 :
+ if FISCOU :
+ self.cr.fatal("<F> <MACR_ASPIC_MAIL> dans le cas de fissures courte il faut preciser la longueur ")
+ ier = ier+1
+ return ier
+ if AXIS=='NON' :
+ self.cr.fatal("<F> <MACR_ASPIC_MAIL> dans le cas de la fissure longue il faut preciser la longueur ou axis=oui ")
+ ier = ier+1
+ return ier
+ C = 0.0
+ else :
+ if AXIS=='OUI' : print '<A> <MACR_ASPIC_MAIL> fissure axisymetrique : le mot clef <LONGUEUR> ne doit pas etre renseigne'
+ C = 0.5 * C
+ LEQU=2.*(pi*(DEC-EPC)-DET1+2.*EPT1)
+#
+# LPIQ est une valeur qui depend theoriquement de la fissure. la valeur
+# ci-dessous est approchee car elle ne sert qu'a calculer les facteurs d'etirement
+#
+ LPIQ=pi*(DET1)
+ if AXIS=='OUI' : C=100.0*LPIQ
+ RAPL=LEQU/LPIQ
+ if FISCOU :
+ RAP=A/C
+ CAS1=RAP<0.3499
+ CAS3=RAP>0.4999
+ CAS2= not (CAS1 or CAS3)
+ if CAS1 : ALP=0.8
+ if CAS2 : ALP=0.4
+ if CAS3 : ALP=0.0
+ BETA=1.0
+ if GROS and not CAS1 :
+ NDT=1
+ NSDT=2
+ else :
+ NDT=2
+ NSDT=4
+#
+ if FISLON :
+ if GROS :
+ NDT=2
+ FETIRF=30.*RAPL
+ FETIRP=60.*RAPL
+ else :
+ NDT=3
+ FETIRF=15.*RAPL
+ FETIRP=30.*RAPL
+#
+ RC0 = FISS_SOUDURE['RAYON_TORE']
+ if (FISCOU and RC0==None) :
+ if GROS : RC0=0.12
+ else : RC0=0.10
+ if CAS1 : RC0=0.08
+ RC0=RC0*A
+ if (FISLON and RC0==None) : RC0=A/(NDT+1)
+#
+ RC1 = FISS_SOUDURE['COEF_MULT_RC1']
+ if (FISCOU and RC1==None) :
+ if GROS : RC1=1.2
+ else : RC1=1.0
+#
+ RC2 = FISS_SOUDURE['COEF_MULT_RC2']
+ if (FISCOU and RC2==None) :
+ if GROS : RC2=1.4
+ else : RC2=1.2
+#
+ RC3 = FISS_SOUDURE['COEF_MULT_RC3']
+ if (FISCOU and RC3==None) :
+ if GROS :
+ if CAS1 : RC3=2.5
+ else : RC3=1.0 # valeur non utilisee
+ else :
+ if CAS3 : RC3=2.2
+ else : RC3=2.0
+#
+ NT = FISS_SOUDURE['NB_TRANCHE']
+ if (FISCOU and NT==None) :
+ if GROS : NT = 8
+ else : NT = 16
+ if CAS1 : NT = NT*2
+ if (FISLON and NT==None) : NT=0
+#
+ NS = FISS_SOUDURE['NB_SECTEUR']
+ if (FISCOU and NS==None) :
+ if GROS : NS = 2
+ else : NS = 4
+ if (FISLON and NS==None) :
+ if GROS : NS = 2
+ else : NS = 4
+#
+ NC = FISS_SOUDURE['NB_COURONNE']
+ if (FISCOU and NC==None) :
+ if GROS : NC = 3
+ else : NC = 4
+ if (FISLON and NC==None) :
+ if GROS : NC = 3
+ else : NC = 4
+#
+ loc_gibi=aster.repout()
+ logiel = EXEC_MAILLAGE['LOGICIEL' ]
+ UNITD = EXEC_MAILLAGE['UNITE_DATG']
+ UNITS = EXEC_MAILLAGE['UNITE_MGIB']
+ if logiel=='GIBI98' : logiel = loc_gibi+'gibi98'
+ elif logiel=='GIBI2000': logiel = loc_gibi+'gibi2000'
+ else :
+ self.cr.fatal("<F> <MACR_ASPIC_MAIL> seuls gibi98 et gibi2000 sont appelableS")
+ ier = ier+1
+ return ier
+#
+# --- ecriture sur le fichier .datg de la procedure ---
+#
+# Nom du fichier de commandes pour GIBI
+ nomFichierDATG = 'fort.'+str(UNITD)
+# Nom du fichier de maillage GIBI
+ nomFichierGIBI = 'fort.'+str(UNITS)
+ loc_datg = aster.repdex()
+ if SAIN : write_file_dgib_ASPID0(nomFichierDATG,UNITD, EPT1, DET1, D1, D2, EPT2, DET2, ZMAX, H,
+ ALPHA, JEU, EPC, DEC, XMAX, TYPMAI, THETA, TYPELE,
+ ITYPSO, DPENE, NIVMAG,loc_datg)
+ if FISLON : write_file_dgib_ASPID1(nomFichierDATG,UNITD, EPT1, DET1, D1, D2, EPT2, DET2, ZMAX, H,
+ ALPHA, JEU, EPC, DEC, XMAX, TYPMAI,THETA,
+ A,C,EPS, RC0,NS,NC,NT,POSI, NDT,FETIRF,FETIRP,
+ TFISS,ZETA,ITYPSO,DPENE, NIVMAG,loc_datg)
+ if FISCOU : write_file_dgib_ASPID2(nomFichierDATG,UNITD, EPT1, DET1, D1, D2, EPT2, DET2, ZMAX,
+ H, ALPHA, JEU, EPC, DEC, XMAX, TYPMAI,
+ THETA, A, C, EPS, RC0, RC1, RC2, RC3,
+ ALP,BETA, NS, NC, NT, POSI ,NDT,NSDT,TFISS,
+ ZETA,ITYPSO,DPENE, NIVMAG,loc_datg)
+#
+ EXEC_LOGICIEL( LOGICIEL = logiel ,
+ ARGUMENT = ( _F(NOM_PARA=nomFichierDATG),
+ _F(NOM_PARA=nomFichierGIBI), ), )
+#
+ PRE_GIBI()
+#
+ __MAPROV=LIRE_MAILLAGE(INFO=INFO)
+#
+ motscles={}
+ motscles['CREA_GROUP_MA']=[]
+ l_CREA_GROUP_NO=[]
+ if SAIN :
+ l_CREA_GROUP_NO.append('S_LAT1')
+ l_CREA_GROUP_NO.append('S_LAT2')
+ else :
+ l_CREA_GROUP_NO.append('S_LAT1_C')
+ l_CREA_GROUP_NO.append('S_LAT2_C')
+ l_CREA_GROUP_NO.append('S_LAT1_T')
+ l_CREA_GROUP_NO.append('S_LAT2_T')
+ if (TFISS=='NON_DEB') and (FISS_SOUDURE['TYPE']=='LONGUE') :
+ l_CREA_GROUP_NO.append('PFONDINF')
+ l_CREA_GROUP_NO.append('PFONDSUP')
+ else :
+ l_CREA_GROUP_NO.append('PFONDFIS')
+ if (TFISS=='NON_DEB') and (FISS_SOUDURE['TYPE']=='COURTE') :
+ motscles['CREA_GROUP_MA'].append(_F(GROUP_MA = 'FONDFISS',
+ NOM = 'MAIL_ORI',
+ POSITION = 'INIT' ))
+ if (TFISS[:4]=='DEB_') and (AXIS=='OUI') :
+ motscles['CREA_GROUP_MA'].append(_F(GROUP_MA = 'FONDFISS',
+ NOM = 'MAIL_ORI',
+ POSITION = 'INIT' ))
+ if (TFISS=='NON_DEB') and (FISS_SOUDURE['TYPE']=='LONGUE') :
+ motscles['CREA_GROUP_MA'].append(_F(GROUP_MA = 'FOND_SUP',
+ NOM = 'MA_ORI_S',
+ POSITION = 'INIT' ))
+ motscles['CREA_GROUP_MA'].append(_F(GROUP_MA = 'FOND_INF',
+ NOM = 'MA_ORI_I',
+ POSITION = 'INIT' ))
+ l_CREA_GROUP_NO.append('S_FOND1')
+ l_CREA_GROUP_NO.append('S_FOND2')
+ l_CREA_GROUP_NO.append('EQUERRE')
+ motscles['CREA_GROUP_NO']=_F(GROUP_MA=l_CREA_GROUP_NO)
+#
+ __MAPROV=DEFI_GROUP(reuse =__MAPROV,
+ MAILLAGE=__MAPROV,
+ **motscles )
+#
+ if not SAIN :
+ motscles={}
+ motscles['CREA_GROUP_NO']=[]
+ if not (TFISS=='NON_DEB') :
+ motscles['CREA_GROUP_NO'].append(_F(GROUP_MA = 'FONDFISS',))
+ if (TFISS=='NON_DEB') and (FISS_SOUDURE['TYPE']=='LONGUE') :
+ motscles['CREA_GROUP_NO'].append(_F(GROUP_MA = ('FOND_SUP','FOND_INF',),))
+ __MAPROV=DEFI_GROUP(reuse =__MAPROV,
+ MAILLAGE=__MAPROV,
+ **motscles )
+#
+ __MAPROV=MODI_MAILLAGE(reuse =__MAPROV,
+ MAILLAGE=__MAPROV,
+ EQUE_PIQUA=_F( GROUP_NO = 'EQUERRE' ,
+ E_BASE = EPT1 ,
+ DEXT_BASE = DET1 ,
+ L_BASE = D1 ,
+ L_CHANF = D2 ,
+ TYPE = TYPSOU,
+ H_SOUD = H ,
+ ANGL_SOUD = ALPHA ,
+ JEU_SOUD = JEU ,
+ E_CORP = EPC ,
+ DEXT_CORP = DEC ,
+ AZIMUT = THETA ,
+ RAFF_MAIL = TYPMAI,
+ X_MAX = XMAX , )
+ )
+#
+ __MODELE=AFFE_MODELE( MAILLAGE=__MAPROV,
+ AFFE=_F( GROUP_MA = ('EQUERRE','PEAUINT','EXCORP1','EXCORP2','EXTUBU'),
+ PHENOMENE = 'MECANIQUE' ,
+ MODELISATION = '3D' , )
+ )
+#
+ motscles={}
+ if TFISS=='DEB_INT' :
+ motscles['ORIE_PEAU_3D']=_F(GROUP_MA=('PEAUINT','EXCORP1','EXCORP2','EXTUBU','LEVRTUBU','LEVRCORP'),)
+ else :
+ motscles['ORIE_PEAU_3D']=_F(GROUP_MA=('PEAUINT','EXCORP1','EXCORP2','EXTUBU',),)
+ __MAPROV=MODI_MAILLAGE(reuse =__MAPROV,
+ MAILLAGE=__MAPROV,
+ MODELE =__MODELE,
+ **motscles
+ )
+#
+ if SAIN :
+ __MAPROV=DEFI_GROUP(reuse = __MAPROV,
+ MAILLAGE = __MAPROV,
+ CREA_GROUP_NO = _F(GROUP_MA=('NIDXT','NEDXT','NIIXT','NEIXT')) )
+#
+ for i in range(1,NBAZIT+1):
+ prec = EPC / 5.0
+ __MAPROV=DEFI_GROUP(reuse = __MAPROV,
+ MAILLAGE = __MAPROV,
+ CREA_GROUP_NO = ( _F( NOM = 'NID'+str(i) ,
+ GROUP_NO = 'NIDXT' ,
+ NUME_INIT = i ,
+ NUME_FIN = i ,),
+ _F( NOM = 'NED'+str(i) ,
+ GROUP_NO = 'NEDXT' ,
+ NUME_INIT = i ,
+ NUME_FIN = i ,),
+ _F( NOM = 'NII'+str(i) ,
+ GROUP_NO = 'NIIXT' ,
+ NUME_INIT = i ,
+ NUME_FIN = i ,),
+ _F( NOM = 'NEI'+str(i) ,
+ GROUP_NO = 'NEIXT' ,
+ NUME_INIT = i ,
+ NUME_FIN = i ,),
+ _F( NOM = 'LDN'+str(i) ,
+ GROUP_MA = 'LD' +str(i) ,),
+ _F( NOM = 'LD' +str(i) ,
+ GROUP_NO = 'LDN'+str(i) ,
+ OPTION = 'SEGM_DROI_ORDO',
+ PRECISION = prec ,
+ CRITERE = 'ABSOLU' ,
+ GROUP_NO_ORIG = 'NID'+str(i),
+ GROUP_NO_EXTR = 'NED'+str(i),),
+ _F( NOM = 'LIN'+str(i) ,
+ GROUP_MA = 'LI' +str(i) ,),
+ _F( NOM = 'LI' +str(i) ,
+ GROUP_NO = 'LIN'+str(i) ,
+ OPTION = 'SEGM_DROI_ORDO',
+ PRECISION = prec ,
+ CRITERE = 'ABSOLU' ,
+ GROUP_NO_ORIG = 'NII'+str(i),
+ GROUP_NO_EXTR = 'NEI'+str(i),),))
+#
+#
+# --- commande CREA_MAILLAGE ---
+#
+ self.DeclareOut('nomres',self.sd)
+ nomres=CREA_MAILLAGE( MAILLAGE=__MAPROV,
+ CREA_POI1 = ( _F( NOM_GROUP_MA = 'P1_CORP ' ,
+ GROUP_NO = 'P1_CORP ' , ),
+ _F( NOM_GROUP_MA = 'P2_CORP ' ,
+ GROUP_NO = 'P2_CORP ' , ),
+ _F( NOM_GROUP_MA = 'P_TUBU ' ,
+ GROUP_NO = 'P_TUBU ' , ),)
+ )
+#
+ if IMPRESSION!=None:
+ for impr in IMPRESSION :
+#
+ motscles={}
+ if impr['FORMAT']=='IDEAS' : motscles['VERSION'] =impr['VERSION']
+ if impr['FORMAT']=='CASTEM' : motscles['NIVE_GIBI']=impr['NIVE_GIBI']
+ if impr['UNITE']!=None : motscles['UNITE'] =impr['UNITE']
+ impr_resu = _F( MAILLAGE = nomres,)
+#
+ IMPR_RESU( RESU = impr_resu,
+ FORMAT = impr['FORMAT'],**motscles )
+#
+#
+# --- Verification profondeur fissure (courte debouchante) ---
+#
+ if FISCOU and not (TFISS=='NON_DEB') :
+ nomres=DEFI_GROUP( reuse=nomres,
+ MAILLAGE=nomres,
+ CREA_GROUP_NO=(_F( GROUP_MA = 'LEVRTUBU',),
+ _F( NOM = 'FONDORDO',
+ GROUP_MA = 'FONDFISS',
+ OPTION = 'NOEUD_ORDO',),),);
+
+ nommail=nomres.nom
+ coord =aster.getvectjev(nommail.ljust(8)+'.COORDO .VALE')
+ collgrno=aster.getcolljev(nommail.ljust(8)+'.GROUPENO')
+
+ grfo=collgrno['FONDORDO']
+ Nbno = len(grfo)
+ listx = [None]*Nbno
+ listy = [None]*Nbno
+ listz = [None]*Nbno
+ k = 0
+ for node in grfo:
+ listx[k] = coord[3*(node-1)]
+ listy[k] = coord[3*(node-1)+1]
+ listz[k] = coord[3*(node-1)+2]
+ k = k+1
+
+ XAB = listx[Nbno-1] - listx[0]
+ YAB = listy[Nbno-1] - listy[0]
+ ZAB = listz[Nbno-1] - listz[0]
+ AB = sqrt(XAB*XAB + YAB*YAB +ZAB*ZAB)
+ d = 0
+ for k in range(0,Nbno) :
+ XAM = listx[k] - listx[0]
+ YAM = listy[k] - listy[0]
+ ZAM = listz[k] - listz[0]
+ Xvect = YAB*ZAM-ZAB*YAM
+ Yvect = ZAB*XAM-XAB*ZAM
+ Zvect = XAB*YAM-YAB*XAM
+ AM = sqrt(Xvect*Xvect+ Yvect*Yvect +Zvect*Zvect)
+ dk = AM/AB
+ if dk > d :
+ XC = listx[k]
+ YC = listy[k]
+ ZC = listz[k]
+ d = max(dk, d)
+
+ grlev=collgrno['LEVRTUBU']
+ Nbnol = len(grlev)
+ listxl = [None]*Nbnol
+ listyl = [None]*Nbnol
+ listzl = [None]*Nbnol
+ k = 0
+ for node in grlev:
+ listxl[k] = coord[3*(node-1)]
+ listyl[k] = coord[3*(node-1)+1]
+ listzl[k] = coord[3*(node-1)+2]
+ k = k+1
+ dist = 0
+ for k in range(0,Nbnol) :
+ XAM = listxl[k] - listx[0]
+ YAM = listyl[k] - listy[0]
+ ZAM = listzl[k] - listz[0]
+ Scal = (XAB*XAM + YAB*YAM + ZAB*ZAM)/(AB*AB)
+ if (abs(Scal) < 0.51) and (abs(Scal) > 0.49) :
+ Xk = listxl[k] -XC
+ Yk = listyl[k] -YC
+ Zk = listzl[k] -ZC
+ dk = sqrt(Xk**2+ Yk**2 +Zk**2)
+ dist = max(dk, dist)
+
+ print '\n<MACR_ASPIC_MAIL> PROFONDEUR DE LA FISSURE DANS LE MAILLAGE : ', dist
+ print ' \n'
+#
+ return ier
+
--- /dev/null
+#@ MODIF macr_cabri_calc_ops Macro DATE 14/09/2004 AUTEUR MCOURTOI M.COURTOIS
+# -*- coding: iso-8859-1 -*-
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2003 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+
+
+
+
+def macr_cabri_calc_ops(self,MAILLAGE,MODELE_MECA,MODELE_THER,CHAR_THER,
+ CHAR_MECA,RESU_THER,
+ AFFE_MATERIAU,DEFI_CHAR_THER,DEFI_CHAR_MECA,RELATION,SOLVEUR,CONVERGENCE,NEWTON,
+ INCREMENT,CHAM_MATER,**args):
+ """
+ Ecriture de la macro MACR_CABRI_CALC
+ """
+
+ #################################################################
+ ########## PREPARATION MACRO
+ #################################################################
+
+ from Accas import _F
+
+ ier =0
+
+ # On met certains mots-clefs dans des variables locales pour les proteger
+ affemateriau = AFFE_MATERIAU
+ mail = MAILLAGE
+
+
+ # On importe les definitions des commandes a utiliser dans la macro
+ # Le nom de la variable doit etre obligatoirement le nom de la commande
+ DEFI_GROUP = self.get_cmd('DEFI_GROUP')
+ AFFE_MATERIAU = self.get_cmd('AFFE_MATERIAU')
+ AFFE_MODELE = self.get_cmd('AFFE_MODELE')
+ MODI_MAILLAGE = self.get_cmd('MODI_MAILLAGE')
+ AFFE_CHAR_THER_F = self.get_cmd('AFFE_CHAR_THER_F')
+ AFFE_CHAR_THER = self.get_cmd('AFFE_CHAR_THER')
+ AFFE_CHAR_MECA_F = self.get_cmd('AFFE_CHAR_MECA_F')
+ AFFE_CHAR_MECA = self.get_cmd('AFFE_CHAR_MECA')
+ DEFI_FONCTION = self.get_cmd('DEFI_FONCTION')
+ DEFI_LIST_REEL = self.get_cmd('DEFI_LIST_REEL')
+ THER_LINEAIRE = self.get_cmd('THER_LINEAIRE')
+ STAT_NON_LINE = self.get_cmd('STAT_NON_LINE')
+
+ # La macro compte pour 1 dans la numerotation des commandes
+ self.set_icmd(1)
+
+ # Le concept sortant (de type evol_noli) est nomme 'resumeca' dans
+ # le contexte de la macro
+ self.DeclareOut('resumeca',self.sd)
+ self.DeclareOut('mail',MAILLAGE)
+
+ #################################################################
+ ########## PREPARATION DES MODELES
+ #################################################################
+
+ # Definition des groupes
+ mail=DEFI_GROUP(reuse =mail,MAILLAGE=mail,
+ CREA_GROUP_NO=(
+ _F(GROUP_MA='M_GOU',NOM='N_M_GOU',),
+ _F(GROUP_MA='M_JOI',NOM='N_M_JOI',),
+ _F(GROUP_MA='SCBJ',NOM='N_SCBJ',),
+ _F(GROUP_MA='SCJB',NOM='N_SCJB',),
+ _F(GROUP_MA='M_L_AA',NOM='N_M_L_AA',),
+ _F(GROUP_MA='SCEG',NOM='N_SCEG',),
+ _F(GROUP_MA='SCGE',NOM='N_SCGE',),),)
+
+ # Creation du modele thermique
+ if MODELE_THER != None:
+ self.DeclareOut('modther',MODELE_THER)
+
+ modther=AFFE_MODELE(MAILLAGE=mail,
+ AFFE=_F(GROUP_MA=('VTOT','M_GOU','M_TUB','M_JOI','SCBJ','SCJB',
+ 'M_L_AA','M_INT','M_L_SA','M_EXT','SCEG','SCGE',),
+ PHENOMENE='THERMIQUE',
+ MODELISATION='3D_DIAG',),
+ );
+
+ # Creation du modele mecanique
+ if MODELE_MECA != None:
+ self.DeclareOut('modmeca',MODELE_MECA)
+
+ modmeca = AFFE_MODELE(MAILLAGE=mail,
+ AFFE=_F(GROUP_MA=('VTOT','M_GOU','M_TUB','M_JOI','SCBJ','SCJB',
+ 'M_L_AA','M_L_SA','SCEG','SCGE','M_INT','M_EXT',),
+ PHENOMENE='MECANIQUE',
+ MODELISATION='3D',),
+ );
+
+ # Orientation des mailles
+ mail=MODI_MAILLAGE(reuse =mail,
+ MAILLAGE=mail,
+ ORIE_PEAU_3D=(_F(GROUP_MA=('M_INT','M_TUB',),),
+ _F(GROUP_MA=('M_L_AA','M_JOI','M_L_SA',),),),
+ MODELE=modmeca,);
+
+
+
+ # Affectation des materiaux
+ if CHAM_MATER != None:
+ self.DeclareOut('_cham',CHAM_MATER)
+ motscles={}
+ motscles['AFFE']=[]
+ for mat in affemateriau:
+ if mat['TOUT'] == None:
+ # Creation de mots-cles pour les AFFE_CHAR_MECA
+ motscles['AFFE'].append(_F(GROUP_MA=mat['GROUP_MA'],
+ MATER = mat['MATER'],
+ TEMP_REF = mat['TEMP_REF'],) )
+ else:
+ # Creation de mots-cles pour les AFFE_CHAR_MECA
+ motscles['AFFE'].append(_F(TOUT='OUI',
+ MATER = mat['MATER'],
+ TEMP_REF = mat['TEMP_REF'],) )
+
+ _cham = AFFE_MATERIAU(MAILLAGE=mail,
+ MODELE=modther,
+ AFFE=motscles['AFFE'],
+ )
+
+ #################################################################
+ ########## CONDITIONS AUX LIMITES THERMIQUES
+ #################################################################
+ # Recuperation des parametres thermiques
+
+ if DEFI_CHAR_THER != None:
+ temp_ini = DEFI_CHAR_THER['TEMP_INIT']
+ if DEFI_CHAR_THER['COEF_H_FLUI']!=None:
+ coef_int = DEFI_CHAR_THER['COEF_H_FLUI']
+ else:
+ coef_int = DEFI_FONCTION(NOM_PARA='INST',
+ VALE=(0.0,0.016,
+ 7200.0,0.016,),
+ PROL_DROITE='CONSTANT',
+ PROL_GAUCHE='CONSTANT',);
+ if DEFI_CHAR_THER['TEMP_EXT_FLUI']!=None:
+ temp_int = DEFI_CHAR_THER['TEMP_EXT_FLUI']
+ else:
+ temp_int = DEFI_FONCTION(NOM_PARA='INST',
+ VALE=(0.0,temp_ini,1.0,temp_ini,11.0,60.0,
+ 600.0,60.0,610.0,280.0,1800.0,280.0,7200.0,280.0,),
+ PROL_DROITE='CONSTANT',
+ PROL_GAUCHE='CONSTANT',);
+ if DEFI_CHAR_THER['COEF_H_AIR']!=None:
+ coef_ext = DEFI_CHAR_THER['COEF_H_AIR']
+ else:
+ coef_ext = DEFI_FONCTION(NOM_PARA='INST',
+ VALE=(0.0,1e-05,7200.0,1e-05,),
+ PROL_DROITE='CONSTANT',
+ PROL_GAUCHE='CONSTANT',);
+
+ if DEFI_CHAR_THER['TEMP_EXT_AIR']!=None:
+ temp_ext = DEFI_CHAR_THER['TEMP_EXT_AIR']
+ else:
+ temp_ext = DEFI_FONCTION(NOM_PARA='INST',
+ VALE=(0.0,20.0,7200.0,20.0,),
+ PROL_DROITE='CONSTANT',
+ PROL_GAUCHE='CONSTANT',);
+ if DEFI_CHAR_THER['LIST_INST']!=None:
+ transi1 = DEFI_CHAR_THER['LIST_INST']
+ else:
+ transi1 = DEFI_LIST_REEL(DEBUT=0.0,
+ INTERVALLE=(_F(JUSQU_A=1.0,
+ NOMBRE=1,),
+ _F(JUSQU_A=11.0,
+ NOMBRE=10,),
+ _F(JUSQU_A=600.0,
+ NOMBRE=10,),
+ _F(JUSQU_A=610.0,
+ NOMBRE=30,),
+ _F(JUSQU_A=1800.0,
+ NOMBRE=30,),
+ _F(JUSQU_A=7200.0,
+ NOMBRE=10,),),);
+ else:
+ temp_ini = DEFI_CHAR_THER['TEMP_INIT']
+ coef_int = DEFI_FONCTION(NOM_PARA='INST',
+ VALE=(0.0,0.016,
+ 7200.0,0.016,),
+ PROL_DROITE='CONSTANT',
+ PROL_GAUCHE='CONSTANT',);
+ temp_int = DEFI_FONCTION(NOM_PARA='INST',
+ VALE=(0.0,temp_ini,1.0,temp_ini,11.0,60.0,
+ 600.0,60.0,610.0,280.0,1800.0,280.0,7200.0,280.0,),
+ PROL_DROITE='CONSTANT',
+ PROL_GAUCHE='CONSTANT',);
+ coef_ext = DEFI_FONCTION(NOM_PARA='INST',
+ VALE=(0.0,1e-05,7200.0,1e-05,),
+ PROL_DROITE='CONSTANT',
+ PROL_GAUCHE='CONSTANT',);
+ temp_ext = DEFI_FONCTION(NOM_PARA='INST',
+ VALE=(0.0,20.0,7200.0,20.0,),
+ PROL_DROITE='CONSTANT',
+ PROL_GAUCHE='CONSTANT',);
+ transi1 = DEFI_LIST_REEL(DEBUT=0.0,
+ INTERVALLE=(_F(JUSQU_A=1.0,
+ NOMBRE=1,),
+ _F(JUSQU_A=11.0,
+ NOMBRE=10,),
+ _F(JUSQU_A=600.0,
+ NOMBRE=10,),
+ _F(JUSQU_A=610.0,
+ NOMBRE=30,),
+ _F(JUSQU_A=1800.0,
+ NOMBRE=30,),
+ _F(JUSQU_A=7200.0,
+ NOMBRE=10,),),);
+ # Que sauver ?
+ if CHAR_THER != None:
+ for m in CHAR_THER:
+ if m['TYPE']=="BRIDE_FLUIDE":
+ self.DeclareOut('cl_th1',m['CHARGE'])
+ if m['TYPE']=="BRIDE_AIR":
+ self.DeclareOut('cl_th2',m['CHARGE'])
+ if m['TYPE']=="ECROU_GOUJON":
+ self.DeclareOut('cl_th3',m['CHARGE'])
+ if m['TYPE']=="BRIDE_JOINT":
+ self.DeclareOut('cl_th4',m['CHARGE'])
+
+ # Echanges thermiques internes entre le fluide et la bride
+ cl_th1=AFFE_CHAR_THER_F(MODELE=modther,
+ ECHANGE=_F(GROUP_MA = 'M_INT',
+ COEF_H = coef_int,
+ TEMP_EXT = temp_int,),);
+
+ # Echanges thermiques externes entre bride et air ambiant
+ cl_th2=AFFE_CHAR_THER_F(MODELE=modther,
+ ECHANGE=_F(GROUP_MA='M_EXT',
+ COEF_H=coef_ext,
+ TEMP_EXT=temp_ext,),);
+
+ # Echanges thermiques entre ecrou et goujon
+ cl_th3=AFFE_CHAR_THER(MODELE=modther,
+ LIAISON_GROUP=_F(GROUP_NO_1='N_SCEG',
+ GROUP_NO_2='N_SCGE',
+ DDL_1='TEMP',
+ COEF_MULT_1=1.0,
+ DDL_2='TEMP',
+ COEF_MULT_2=-1.0,
+ COEF_IMPO=0.0,),);
+
+ # Echanges thermiques entre bride et joint
+ cl_th4=AFFE_CHAR_THER(MODELE=modther,
+ LIAISON_GROUP=_F(GROUP_NO_1='N_SCBJ',
+ GROUP_NO_2='N_SCJB',
+ DDL_1='TEMP',
+ COEF_MULT_1=1.0,
+ DDL_2='TEMP',
+ COEF_MULT_2=-1.0,
+ COEF_IMPO=0.0,),);
+
+
+
+ #################################################################
+ ########## CALCUL THERMIQUE
+ #################################################################
+ if RESU_THER != None:
+ self.DeclareOut('resuther',RESU_THER)
+
+ resuther=THER_LINEAIRE(MODELE=modther,
+ CHAM_MATER=_cham,
+ EXCIT=(_F(CHARGE=cl_th1,),
+ _F(CHARGE=cl_th2,),
+ _F(CHARGE=cl_th3,),
+ _F(CHARGE=cl_th4,),),
+ INCREMENT=_F(LIST_INST=transi1,),
+ TEMP_INIT=_F(VALE=temp_ini,),
+ TITRE='CABRI THERMIQUE &DATE &HEURE',);
+
+ #################################################################
+ ########## CONDITIONS AUX LIMITES MECANIQUES
+ #################################################################
+ # Recuperation des parametres mecaniques
+ if DEFI_CHAR_MECA != None:
+ if DEFI_CHAR_MECA['PRETENS']!=None:
+ f_pret = DEFI_CHAR_MECA['PRETENS']
+ else:
+ f_pret=DEFI_FONCTION(NOM_PARA='INST',
+ VALE=(0.0,0.0,1.0,-0.02,),
+ PROL_DROITE='CONSTANT',
+ PROL_GAUCHE='CONSTANT',);
+ if DEFI_CHAR_MECA['PRES_REP']!=None:
+ pre_int = DEFI_CHAR_MECA['PRES_REP']
+ else:
+ pre_int = DEFI_FONCTION(NOM_PARA='INST',
+ VALE=(0.0,0.0,1.0,0.0,11.0,16.0,),
+ PROL_DROITE='CONSTANT',
+ PROL_GAUCHE='CONSTANT',);
+ if DEFI_CHAR_MECA['EFFE_FOND']!=None:
+ eff_fond = DEFI_CHAR_MECA['EFFE_FOND']
+ else:
+ eff_fond=DEFI_FONCTION(NOM_PARA='INST',
+ VALE=(0.0,-0.0,1.0,-0.0,11.0,-20.607059,),
+ PROL_DROITE='CONSTANT',
+ PROL_GAUCHE='CONSTANT',);
+ else:
+ f_pret=DEFI_FONCTION(NOM_PARA='INST',
+ VALE=(0.0,0.0,1.0,-0.02,),
+ PROL_DROITE='CONSTANT',
+ PROL_GAUCHE='CONSTANT',);
+
+ pre_int = DEFI_FONCTION(NOM_PARA='INST',
+ VALE=(0.0,0.0,1.0,0.0,11.0,16.0,),
+ PROL_DROITE='CONSTANT',
+ PROL_GAUCHE='CONSTANT',);
+
+ eff_fond=DEFI_FONCTION(NOM_PARA='INST',
+ VALE=(0.0,-0.0,1.0,-0.0,11.0,-20.607059,),
+ PROL_DROITE='CONSTANT',
+ PROL_GAUCHE='CONSTANT',);
+ # Que sauver ?
+ if CHAR_MECA != None:
+ for m in CHAR_MECA:
+ if m['TYPE']=="BLOC_BAS_GOUJ":
+ self.DeclareOut('cl_me1',m['CHARGE'])
+ if m['TYPE']=="BLOC_BAS_JOINT":
+ self.DeclareOut('cl_me2',m['CHARGE'])
+ if m['TYPE']=="BLOC_LAT_ALES":
+ self.DeclareOut('cl_me3',m['CHARGE'])
+ if m['TYPE']=="BLOC_LAT_NALES":
+ self.DeclareOut('cl_me4',m['CHARGE'])
+ if m['TYPE']=="PLAN_TUBE":
+ self.DeclareOut('cl_me5',m['CHARGE'])
+ if m['TYPE']=="PRES_FLU":
+ self.DeclareOut('cl_me6',m['CHARGE'])
+ if m['TYPE']=="EFFET_FOND":
+ self.DeclareOut('cl_me7',m['CHARGE'])
+ if m['TYPE']=="CONT_JOINT":
+ self.DeclareOut('cl_me8',m['CHARGE'])
+ if m['TYPE']=="DEFO_THER":
+ self.DeclareOut('cl_me9',m['CHARGE'])
+ if m['TYPE']=="SERR_ECROU_1":
+ self.DeclareOut('cl_me10',m['CHARGE'])
+ if m['TYPE']=="SERR_ECROU_2":
+ self.DeclareOut('cl_me11',m['CHARGE'])
+
+
+ # Blocage bas du goujon
+ cl_me1=AFFE_CHAR_MECA(MODELE=modmeca,
+ DDL_IMPO=_F(GROUP_NO='N_M_GOU',
+ DZ=0.0,),
+ INFO=2,);
+ # Blocage bas du joint
+ cl_me2=AFFE_CHAR_MECA(MODELE=modmeca,
+ DDL_IMPO=_F(GROUP_NO='N_M_JOI',
+ DZ=0.0,),
+ INFO=2,);
+
+ # Blocage lateral, face laterale avec alesage
+ cl_me3=AFFE_CHAR_MECA(MODELE=modmeca,
+ DDL_IMPO=_F(GROUP_NO='N_M_L_AA',
+ DY=0.0,),
+ INFO=2,);
+
+ # Face laterale sans alesage
+ cl_me4=AFFE_CHAR_MECA(MODELE=modmeca,
+ FACE_IMPO=_F(GROUP_MA='M_L_SA',
+ DNOR=0.0,),
+ INFO=2,);
+
+ # Condition de planeite de la face de coupe du tube
+ cl_me5=AFFE_CHAR_MECA(MODELE=modmeca,
+ LIAISON_UNIF=_F(GROUP_MA='M_TUB',
+ DDL='DZ',),
+ INFO=2,);
+ # Pression due au fluide
+ cl_me6=AFFE_CHAR_MECA_F(MODELE=modmeca,
+ PRES_REP=_F(GROUP_MA='M_INT',
+ PRES=pre_int,),
+ INFO=2,);
+
+ # Effet de fond
+ cl_me7=AFFE_CHAR_MECA_F(MODELE=modmeca,
+ PRES_REP=_F(GROUP_MA='M_TUB',
+ PRES=eff_fond,),
+ INFO=2,);
+
+ # Contact zone de joint
+ cl_me8=AFFE_CHAR_MECA(MODELE=modmeca,
+ CONTACT=_F(GROUP_MA_MAIT='SCBJ',
+ GROUP_MA_ESCL='SCJB',),
+ INFO=2,);
+ # Deformation thermique
+ cl_me9=AFFE_CHAR_MECA( MODELE=modmeca,
+ TEMP_CALCULEE=resuther,
+ INFO=2,);
+
+ # Serrage ecrou/goujon (pre-tensionnement)
+ cl_me10=AFFE_CHAR_MECA_F(MODELE=modmeca,
+ LIAISON_GROUP=_F(GROUP_NO_1='N_SCEG',
+ GROUP_NO_2='N_SCGE',
+ DDL_1='DZ',
+ COEF_MULT_1=1.0,
+ DDL_2='DZ',
+ COEF_MULT_2=-1.0,
+ COEF_IMPO=f_pret,),
+ INFO=2,);
+
+ cl_me11=AFFE_CHAR_MECA(MODELE=modmeca,
+ LIAISON_GROUP=_F(GROUP_NO_1='N_SCEG',
+ GROUP_NO_2='N_SCGE',
+ DDL_1='DX',
+ COEF_MULT_1=1.0,
+ DDL_2='DX',
+ COEF_MULT_2=-1.0,
+ COEF_IMPO=0.0,),
+ INFO=2,);
+
+
+ #################################################################
+ ########## CALCUL MECANIQUE
+ #################################################################
+ # Options de convergence
+ solveur=SOLVEUR[0].cree_dict_valeurs(SOLVEUR[0].mc_liste)
+
+ # Elimination des valeurs "None"
+ for i in solveur.keys():
+ if solveur[i]==None : del solveur[i]
+
+
+ transi2 = DEFI_LIST_REEL(DEBUT=0.0,
+ INTERVALLE=(_F(JUSQU_A=1.0,
+ NOMBRE=2,),
+ _F(JUSQU_A=11.0,
+ NOMBRE=20,),
+ _F(JUSQU_A=600.0,
+ NOMBRE=20,),
+ _F(JUSQU_A=610.0,
+ NOMBRE=20,),
+ _F(JUSQU_A=1800.0,
+ NOMBRE=20,),
+ _F(JUSQU_A=7200.0,
+ NOMBRE=20,),),);
+
+ # Options d'incrementation
+ if INCREMENT != None:
+ if INCREMENT['LIST_INST'] != None:
+ listinst = INCREMENT['LIST_INST']
+ else:
+ listinst = transi2
+
+ increment=INCREMENT[0].cree_dict_valeurs(INCREMENT[0].mc_liste)
+
+ # Elimination des valeurs "None"
+ for i in increment.keys():
+ if increment[i]==None : del increment[i]
+
+ increment['LIST_INST'] = listinst
+
+ else:
+ listinst = transi2
+ increment =_F(
+ LIST_INST = listinst,
+ ),
+
+ # Options de Newton
+ newton=NEWTON[0].cree_dict_valeurs(NEWTON[0].mc_liste)
+ # Elimination des valeurs "None"
+ for i in newton.keys():
+ if newton[i]==None : del newton[i]
+
+ # Options de convergence
+ convergence=CONVERGENCE[0].cree_dict_valeurs(CONVERGENCE[0].mc_liste)
+ # Elimination des valeurs "None"
+ for i in convergence.keys():
+ if convergence[i]==None : del convergence[i]
+
+ # Options de comportement
+ # Type incremental (=1) ou elastique (=0)
+ comp_incr = 0
+ if RELATION:
+ relation=RELATION
+ if relation == 'VMIS_ISOT_TRAC':
+ comp_incr = 1
+ else:
+ comp_incr = 0
+ else:
+ relation = 'ELAS'
+ comp_incr = 0
+
+
+ # Parametres du calcul
+ if comp_incr == 1:
+ resumeca=STAT_NON_LINE(MODELE=modmeca,
+ CHAM_MATER=_cham,
+ EXCIT=(_F(CHARGE=cl_me1,),
+ _F(CHARGE=cl_me2,),
+ _F(CHARGE=cl_me3,),
+ _F(CHARGE=cl_me4,),
+ _F(CHARGE=cl_me5,),
+ _F(CHARGE=cl_me6,),
+ _F(CHARGE=cl_me7,),
+ _F(CHARGE=cl_me8,),
+ _F(CHARGE=cl_me9,),
+ _F(CHARGE=cl_me10,),
+ _F(CHARGE=cl_me11,),
+ ),
+ SOLVEUR = solveur,
+ COMP_INCR =_F(RELATION=relation,),
+ NEWTON = newton,
+ INCREMENT = increment,
+ CONVERGENCE = convergence,
+ TITRE='CABRI THERMOM\xe9CANIQUE &DATE &HEURE',);
+ else:
+ resumeca=STAT_NON_LINE(MODELE=modmeca,
+ CHAM_MATER=_cham,
+ EXCIT=(_F(CHARGE=cl_me1,),
+ _F(CHARGE=cl_me2,),
+ _F(CHARGE=cl_me3,),
+ _F(CHARGE=cl_me4,),
+ _F(CHARGE=cl_me5,),
+ _F(CHARGE=cl_me6,),
+ _F(CHARGE=cl_me7,),
+ _F(CHARGE=cl_me8,),
+ _F(CHARGE=cl_me9,),
+ _F(CHARGE=cl_me10,),
+ _F(CHARGE=cl_me11,),
+ ),
+ SOLVEUR = solveur,
+ COMP_ELAS =_F(RELATION=relation,),
+ NEWTON = newton,
+ INCREMENT = increment,
+ CONVERGENCE = convergence,
+ TITRE='CABRI THERMOM\xe9CANIQUE &DATE &HEURE',);
+
+ return ier
+
--- /dev/null
+#@ MODIF macr_cabri_mail_dat Macro DATE 14/09/2004 AUTEUR MCOURTOI M.COURTOIS
+# -*- coding: iso-8859-1 -*-
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2003 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+
+
+
+# Données pour les brides standards
+
+
+
+# Pour ajouter une bride x:
+# Définir un dico_bride_x comme ci-dessous puis ajoutez-le à dico_bride_std
+
+# dictionnaire pour la description des variables
+dico_var_geo = {'nbgouj':'Nombre de goujons de la jonction boulonnée (GOUJ_N_GOUJON)',
+ 'dint':'Diamètre intérieur de la bride (BRID_D_INT)',
+ 'dex1':'Diamétre extérieur de la conduite (TUBU_D_EXT)',
+ 'dex2':'Position (diamètre) du congé de la bride (BRID_D_CONGE)',
+ 'dex3':'Diamètre de l''épaulement de la bride au niveau de l''interface d''étanchéité (BRID_D_EPAUL)',
+ 'dtrou':'Position des alésages de la bride permettant l''introduction des goujons (BRID_P_ALESAG)',
+ 'dext':'Diamètre extérieur de la bride (BRID_D_EXT)',
+ 'dt':'Diamètre des alésages de la bride permettant l''introduction des goujons (BRID_D_ALESAG)',
+ 'drd':'Diamètre de la rondelle (GOUJ_D_RONDEL)',
+ 'dg':'Diamètre des goujons de la jonction boulonnée (GOUJ_D_GOUJON)',
+ 'dec':'Diamètre de l''écrou (GOUJ_D_ECROU)',
+ 'rcong':'Rayon du congé de la bride (BRID_R_CONGE)',
+ 'he':'Epaisseur de la rondelle (GOUJ_E_RONDEL)',
+ 'e':'Epaisseur de l''écrou (GOUJ_E_ECROU)',
+ 'hc1':'Hauteur de la bride (BRID_H)',
+ 'hcg1':'Hauteur de conduite (TUBU_H)',
+ 'hb':'Hauteur de l''épaulement de la bride au niveau de l''interface d''étanchéité (BRID_H_EPAUL)',
+ 'htrou':'Hauteur des alésages de la bride permettant l''introduction des goujons (BRID_H_ALESAG)',
+ 'pf':'Profondeur (épaisseur) des filets des goujons (GOUJ_E_FILET)',
+ 'j':'Epaisseur du joint au niveau de l''interface d''étanchéité (ETAN_E_JOINT)'}
+
+dico_var_msh = {'nrad':'Nombre d''éléments radiaux (NBR_RAD)',
+ 'ncir':'Nombre d''éléments circonférentiels (NBR_CIR)',
+ 'nver':'Nombre d''éléments verticaux (NBR_VER)',
+ 'nsect':'Nombre d''éléments de l''alésage (NBR_ALE)',
+ 'temps':'Temps d''analyse'}
+
+# dictionnaires des brides standards
+dico_bride_A = {'nbgouj': 4,
+ 'dint': 15.76,
+ 'dex1': 21.3,
+ 'dex2': 38.,
+ 'dex3': 48.,
+ 'dtrou': 67.,
+ 'dext': 95.,
+ 'dt': 14.,
+ 'drd': 25.,
+ 'dg': 12.,
+ 'dec': 18.,
+ 'rcong': 3.,
+ 'he': 12.,
+ 'e': 2.5,
+ 'hc1': 46.5,
+ 'hcg1': 20,
+ 'hb': 1.5,
+ 'htrou': 20.,
+ 'pf': 1.5,
+ 'j': 2}
+
+dico_bride_AA = {'nbgouj': 32,
+ 'dint': 336.5,
+ 'dex1': 355.6,
+ 'dex2': 395.,
+ 'dex3': 415.,
+ 'dtrou': 460.,
+ 'dext': 515.,
+ 'dt': 22.,
+ 'drd': 36.,
+ 'dg': 20.,
+ 'dec': 30.,
+ 'rcong': 5.,
+ 'he': 20.,
+ 'e': 3.,
+ 'hc1': 115.,
+ 'hcg1': 115./2.,
+ 'hb': 3.,
+ 'htrou': 47.,
+ 'pf': 2.2,
+ 'j': 2}
+
+dico_bride_B = {'nbgouj': 4,
+ 'dint': 26.64,
+ 'dex1': 33.4,
+ 'dex2': 53.,
+ 'dex3': 63.,
+ 'dtrou': 88.,
+ 'dext': 123.,
+ 'dt': 16.,
+ 'drd': 27.,
+ 'dg': 14.,
+ 'dec': 21.,
+ 'rcong': 4.,
+ 'he': 14.,
+ 'e': 2.5,
+ 'hc1': 59.,
+ 'hcg1': 59./2.,
+ 'hb': 1.5,
+ 'htrou': 27.5,
+ 'pf': 1.7,
+ 'j': 2}
+dico_bride_B1 = {'nbgouj': 4,
+ 'dint': 24.3,
+ 'dex1': 33.4,
+ 'dex2': 53.,
+ 'dex3': 63.,
+ 'dtrou': 88.,
+ 'dext': 123.,
+ 'dt': 16.,
+ 'drd': 27.,
+ 'dg': 14.,
+ 'dec': 21.,
+ 'rcong': 4.,
+ 'he': 14.,
+ 'e': 2.5,
+ 'hc1': 59.,
+ 'hcg1': 59./2.,
+ 'hb': 1.5,
+ 'htrou': 27.5,
+ 'pf': 1.7,
+ 'j': 2}
+dico_bride_C = {'nbgouj': 8,
+ 'dint': 52.48,
+ 'dex1': 60.3,
+ 'dex2': 84.,
+ 'dex3': 100.,
+ 'dtrou': 127.,
+ 'dext': 165.,
+ 'dt': 18.,
+ 'drd': 30,
+ 'dg': 16.,
+ 'dec': 24.,
+ 'rcong': 4.,
+ 'he': 16.,
+ 'e': 3,
+ 'hc1': 70.,
+ 'hcg1': 70./2.,
+ 'hb': 1.5,
+ 'htrou': 21.,
+ 'pf': 1.7,
+ 'j': 2}
+dico_bride_D = {'nbgouj': 8,
+ 'dint': 42.9,
+ 'dex1': 60.3,
+ 'dex2': 84.,
+ 'dex3': 100.,
+ 'dtrou': 127.,
+ 'dext': 165.,
+ 'dt': 18.,
+ 'drd': 30,
+ 'dg': 16.,
+ 'dec': 24.,
+ 'rcong': 5.,
+ 'he': 16.,
+ 'e': 3.,
+ 'hc1': 87.6,
+ 'hcg1': 87.6/2.,
+ 'hb': 1.5,
+ 'htrou': 38.5,
+ 'pf': 1.7,
+ 'j': 2}
+dico_bride_D1 = {'nbgouj': 8,
+ 'dint': 49.22,
+ 'dex1': 60.3,
+ 'dex2': 84.,
+ 'dex3': 100.,
+ 'dtrou': 127.,
+ 'dext': 165.,
+ 'dt': 18.,
+ 'drd': 30,
+ 'dg': 16.,
+ 'dec': 24.,
+ 'rcong': 5.,
+ 'he': 16.,
+ 'e': 3.,
+ 'hc1': 87.6,
+ 'hcg1': 87.6/2.,
+ 'hb': 1.5,
+ 'htrou': 38.5,
+ 'pf': 1.7,
+ 'j': 2}
+dico_bride_E = {'nbgouj': 8,
+ 'dint': 83.1,
+ 'dex1': 88.9,
+ 'dex2': 117.5,
+ 'dex3': 135.,
+ 'dtrou': 165.,
+ 'dext': 209.,
+ 'dt': 18.,
+ 'drd': 30.,
+ 'dg': 16.,
+ 'dec': 24.,
+ 'rcong': 5.,
+ 'he': 16.,
+ 'e': 3.,
+ 'hc1': 80.,
+ 'hcg1': 80./2.,
+ 'hb': 2.,
+ 'htrou': 27.,
+ 'pf': 1.7,
+ 'j': 2}
+dico_bride_F = {'nbgouj': 8,
+ 'dint': 73.66,
+ 'dex1': 88.9,
+ 'dex2': 117.5,
+ 'dex3': 135.,
+ 'dtrou': 165.,
+ 'dext': 209.,
+ 'dt': 18.,
+ 'drd': 30.,
+ 'dg': 16.,
+ 'dec': 24.,
+ 'rcong': 5.,
+ 'he': 16.,
+ 'e': 3.,
+ 'hc1': 89.,
+ 'hcg1': 89./2.,
+ 'hb': 2.,
+ 'htrou': 36.,
+ 'pf': 1.7,
+ 'j': 2}
+dico_bride_FF = {'nbgouj': 32,
+ 'dint': 396.99,
+ 'dex1': 406.4,
+ 'dex2': 440.,
+ 'dex3': 455.,
+ 'dtrou': 485.,
+ 'dext': 535.,
+ 'dt': 18.,
+ 'drd': 30.,
+ 'dg': 16.,
+ 'dec': 24.,
+ 'rcong': 5.,
+ 'he': 16.,
+ 'e': 3.,
+ 'hc1': 99.,
+ 'hcg1': 99./2.,
+ 'hb': 3.,
+ 'htrou': 40.,
+ 'pf': 1.7,
+ 'j': 2}
+dico_bride_G = {'nbgouj': 12,
+ 'dint': 66.7,
+ 'dex1': 88.9,
+ 'dex2': 117.5,
+ 'dex3': 135.,
+ 'dtrou': 165.,
+ 'dext': 209.,
+ 'dt': 18.,
+ 'drd': 30.,
+ 'dg': 16.,
+ 'dec': 24.,
+ 'rcong': 5.,
+ 'he': 16.,
+ 'e': 3.,
+ 'hc1': 98.,
+ 'hcg1': 98./2.,
+ 'hb': 2.,
+ 'htrou': 45.,
+ 'pf': 1.7,
+ 'j': 2}
+dico_bride_GG = {'nbgouj': 36,
+ 'dint': 381.,
+ 'dex1': 406.4,
+ 'dex2': 445.,
+ 'dex3': 460.,
+ 'dtrou': 495.,
+ 'dext': 545.,
+ 'dt': 22.,
+ 'drd': 36,
+ 'dg': 20.,
+ 'dec': 30.,
+ 'rcong': 5.,
+ 'he': 20.,
+ 'e': 3.,
+ 'hc1': 129.,
+ 'hcg1': 129./2.,
+ 'hb': 3.,
+ 'htrou': 63.,
+ 'pf': 2.2,
+ 'j': 2}
+dico_bride_H = {'nbgouj': 12,
+ 'dint': 108.2,
+ 'dex1': 114.3,
+ 'dex2': 146.,
+ 'dex3': 157.,
+ 'dtrou': 190.,
+ 'dext': 225.,
+ 'dt': 18.,
+ 'drd': 30.,
+ 'dg': 16.,
+ 'dec': 24.,
+ 'rcong': 5.,
+ 'he': 16.,
+ 'e': 3.,
+ 'hc1': 89.,
+ 'hcg1': 89./2.,
+ 'hb': 2.,
+ 'htrou': 33.,
+ 'pf': 1.7,
+ 'j': 2}
+dico_bride_H1 = {'nbgouj': 12,
+ 'dint': 102.6,
+ 'dex1': 114.3,
+ 'dex2': 146.,
+ 'dex3': 157.,
+ 'dtrou': 190.,
+ 'dext': 225.,
+ 'dt': 18.,
+ 'drd': 30.,
+ 'dg': 16.,
+ 'dec': 24.,
+ 'rcong': 5.,
+ 'he': 16.,
+ 'e': 3.,
+ 'hc1': 89.,
+ 'hcg1': 89./2.,
+ 'hb': 2.,
+ 'htrou': 33.,
+ 'pf': 1.7,
+ 'j': 2}
+dico_bride_I = {'nbgouj': 18,
+ 'dint': 92.1,
+ 'dex1': 114.3,
+ 'dex2': 146.,
+ 'dex3': 160.,
+ 'dtrou': 200.,
+ 'dext': 255.,
+ 'dt': 20.,
+ 'drd': 32.,
+ 'dg': 18.,
+ 'dec': 27.,
+ 'rcong': 5.,
+ 'he': 18.,
+ 'e': 3.,
+ 'hc1': 99.,
+ 'hcg1': 99./2.,
+ 'hb': 2.,
+ 'htrou': 43.,
+ 'pf': 2.2,
+ 'j': 2}
+dico_bride_J = {'nbgouj': 18,
+ 'dint': 87.34,
+ 'dex1': 114.3,
+ 'dex2': 146.,
+ 'dex3': 160.,
+ 'dtrou': 200.,
+ 'dext': 255.,
+ 'dt': 20.,
+ 'drd': 32.,
+ 'dg': 18.,
+ 'dec': 27.,
+ 'rcong': 5.,
+ 'he': 18.,
+ 'e': 3.,
+ 'hc1': 111.,
+ 'hcg1': 111./2.,
+ 'hb': 2.,
+ 'htrou': 55.,
+ 'pf': 2.2,
+ 'j': 2}
+dico_bride_J1 = {'nbgouj': 18,
+ 'dint': 87.3,
+ 'dex1': 114.3,
+ 'dex2': 146.,
+ 'dex3': 160.,
+ 'dtrou': 200.,
+ 'dext': 255.,
+ 'dt': 22.,
+ 'drd': 36.,
+ 'dg': 20.,
+ 'dec': 30.,
+ 'rcong': 5.,
+ 'he': 20.,
+ 'e': 3.,
+ 'hc1': 111.,
+ 'hcg1': 111./2.,
+ 'hb': 2.,
+ 'htrou': 55.,
+ 'pf': 2.2,
+ 'j': 2}
+dico_bride_K = {'nbgouj': 8,
+ 'dint': 161.5,
+ 'dex1': 168.3,
+ 'dex2': 192.,
+ 'dex3': 210.,
+ 'dtrou': 235.,
+ 'dext': 280.,
+ 'dt': 18.,
+ 'drd': 30.,
+ 'dg': 16.,
+ 'dec': 24.,
+ 'rcong': 5.,
+ 'he': 16.,
+ 'e': 3.,
+ 'hc1': 84.,
+ 'hcg1': 84./2.,
+ 'hb': 2.,
+ 'htrou': 28.,
+ 'pf': 1.7,
+ 'j': 2}
+dico_bride_L = {'nbgouj': 16,
+ 'dint': 154.8,
+ 'dex1': 168.3,
+ 'dex2': 206.,
+ 'dex3': 220.,
+ 'dtrou': 255.,
+ 'dext': 317.,
+ 'dt': 18.,
+ 'drd': 30.,
+ 'dg': 16.,
+ 'dec': 24.,
+ 'rcong': 5.,
+ 'he': 16.,
+ 'e': 3.,
+ 'hc1': 96.,
+ 'hcg1': 96./2.,
+ 'hb': 2.,
+ 'htrou': 40.,
+ 'pf': 1.7,
+ 'j': 2}
+dico_bride_L1 = {'nbgouj': 16,
+ 'dint': 154.8,
+ 'dex1': 168.3,
+ 'dex2': 206.,
+ 'dex3': 220.,
+ 'dtrou': 255.,
+ 'dext': 317.,
+ 'dt': 20.,
+ 'drd': 32.,
+ 'dg': 18.,
+ 'dec': 27.,
+ 'rcong': 5.,
+ 'he': 18.,
+ 'e': 3.,
+ 'hc1': 96.,
+ 'hcg1': 96./2.,
+ 'hb': 2.,
+ 'htrou': 40.,
+ 'pf': 2.2,
+ 'j': 2}
+dico_bride_M = {'nbgouj': 16,
+ 'dint': 139.7,
+ 'dex1': 168.3,
+ 'dex2': 206.,
+ 'dex3': 220.,
+ 'dtrou': 250.,
+ 'dext': 290.,
+ 'dt': 24.,
+ 'drd': 40.,
+ 'dg': 22.,
+ 'dec': 32.,
+ 'rcong': 5.,
+ 'he': 22.,
+ 'e': 3.,
+ 'hc1': 135.,
+ 'hcg1': 135./2.,
+ 'hb': 3.,
+ 'htrou': 62.,
+ 'pf': 2.2,
+ 'j': 2}
+dico_bride_N = {'nbgouj': 12,
+ 'dint': 131.9,
+ 'dex1': 168.3,
+ 'dex2': 220.,
+ 'dex3': 240.,
+ 'dtrou': 290.,
+ 'dext': 365.,
+ 'dt': 30.,
+ 'drd': 48.,
+ 'dg': 27.,
+ 'dec': 41.,
+ 'rcong': 5.,
+ 'he': 27.,
+ 'e': 4.,
+ 'hc1': 148.,
+ 'hcg1': 148./2.,
+ 'hb': 3.,
+ 'htrou': 75.,
+ 'pf': 2.6,
+ 'j': 2}
+dico_bride_O = {'nbgouj': 12,
+ 'dint': 211.58,
+ 'dex1': 219.1,
+ 'dex2': 248.,
+ 'dex3': 260.,
+ 'dtrou': 292.,
+ 'dext': 335.,
+ 'dt': 20.,
+ 'drd': 32.,
+ 'dg': 18.,
+ 'dec': 27.,
+ 'rcong': 5.,
+ 'he': 18.,
+ 'e': 3.,
+ 'hc1': 87.,
+ 'hcg1': 87./2.,
+ 'hb': 3.,
+ 'htrou': 30.,
+ 'pf': 2.2,
+ 'j': 2}
+dico_bride_P = {'nbgouj': 16,
+ 'dint': 202.74,
+ 'dex1': 219.1,
+ 'dex2': 248.,
+ 'dex3': 260.,
+ 'dtrou': 292.,
+ 'dext': 335.,
+ 'dt': 20.,
+ 'drd': 32,
+ 'dg': 18.,
+ 'dec': 27.,
+ 'rcong': 5.,
+ 'he': 18.,
+ 'e': 3.,
+ 'hc1': 99.,
+ 'hcg1': 99./2.,
+ 'hb': 3.,
+ 'htrou': 42.,
+ 'pf': 2.2,
+ 'j': 2}
+dico_bride_S = {'nbgouj': 16,
+ 'dint': 264.62,
+ 'dex1': 273.,
+ 'dex2': 305.,
+ 'dex3': 315.,
+ 'dtrou': 350.,
+ 'dext': 390.,
+ 'dt': 18.,
+ 'drd': 30.,
+ 'dg': 16.,
+ 'dec': 24.,
+ 'rcong': 5.,
+ 'he': 16.,
+ 'e': 3.,
+ 'hc1': 89.,
+ 'hcg1': 89./2.,
+ 'hb': 3.,
+ 'htrou': 32.,
+ 'pf': 1.7,
+ 'j': 2}
+dico_bride_T = {'nbgouj': 16,
+ 'dint': 254.56,
+ 'dex1': 273.,
+ 'dex2': 320.,
+ 'dex3': 340.,
+ 'dtrou': 385.,
+ 'dext': 444.,
+ 'dt': 27.,
+ 'drd': 45.,
+ 'dg': 24.,
+ 'dec': 36.,
+ 'rcong': 5.,
+ 'he': 24.,
+ 'e': 4.,
+ 'hc1': 128.,
+ 'hcg1': 128./2.,
+ 'hb': 3.,
+ 'htrou': 55.,
+ 'pf': 2.6,
+ 'j': 2}
+dico_bride_W = {'nbgouj': 28,
+ 'dint': 314.76,
+ 'dex1': 323.9,
+ 'dex2': 360.,
+ 'dex3': 385.,
+ 'dtrou': 415.,
+ 'dext': 460.,
+ 'dt': 18.,
+ 'drd': 30.,
+ 'dg': 16.,
+ 'dec': 24.,
+ 'rcong': 5.,
+ 'he': 16.,
+ 'e': 3.,
+ 'hc1': 96.,
+ 'hcg1': 96./2.,
+ 'hb': 3.,
+ 'htrou': 37.,
+ 'pf': 1.7,
+ 'j': 2}
+
+
+# dictionnaire pour faire le lien entre l'option de bride et les valeurs normalisées
+dico_bride_std = {'AA':dico_bride_AA,
+ 'A':dico_bride_A,
+ 'B':dico_bride_B,
+ 'B1':dico_bride_B1,
+ 'C':dico_bride_C,
+ 'D':dico_bride_D,
+ 'D1':dico_bride_D1,
+ 'E':dico_bride_E,
+ 'F':dico_bride_F,
+ 'FF':dico_bride_FF,
+ 'G':dico_bride_G,
+ 'GG':dico_bride_GG,
+ 'H':dico_bride_H,
+ 'H1':dico_bride_H1,
+ 'I':dico_bride_I,
+ 'J':dico_bride_J,
+ 'J1':dico_bride_J1,
+ 'K':dico_bride_K,
+ 'L':dico_bride_L,
+ 'L1':dico_bride_L1,
+ 'M':dico_bride_M,
+ 'N':dico_bride_N,
+ 'O':dico_bride_O,
+ 'P':dico_bride_P,
+ 'S':dico_bride_S,
+ 'T':dico_bride_T,
+ 'W':dico_bride_W}
--- /dev/null
+#@ MODIF macr_cabri_mail_ops Macro DATE 01/03/2005 AUTEUR MABBAS M.ABBAS
+# -*- coding: iso-8859-1 -*-
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2003 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+
+import os
+
+def macr_cabri_mail_ops(self,EXEC_MAILLAGE,RAFF_MAILLAGE,VERI_MAIL,GEOM_BRID,
+ IMPRESSION,**args):
+ """
+ Ecriture de la macro MACR_CABRI_MAIL
+ """
+ import types
+ from Accas import _F
+
+ ier=0
+
+ # On importe les definitions des commandes a utiliser dans la macro
+ # Le nom de la variable doit etre obligatoirement le nom de la commande
+ EXEC_LOGICIEL = self.get_cmd('EXEC_LOGICIEL')
+ LIRE_MAILLAGE = self.get_cmd('LIRE_MAILLAGE')
+ PRE_GIBI = self.get_cmd('PRE_GIBI')
+ IMPR_RESU = self.get_cmd('IMPR_RESU')
+
+ # La macro compte pour 1 dans la numerotation des commandes
+ self.set_icmd(1)
+
+ # Le concept sortant (de type mail) est nommé 'nomres' dans
+ # le contexte de la macro
+
+ self.DeclareOut('nomres',self.sd)
+
+ # Chemin de Gibi
+ import aster
+ loc_gibi=aster.repout()
+ gibi2000=loc_gibi+'gibi'
+
+ # Unité pour le fichier maillage produit (format GIBI)
+ unite_mgib = EXEC_MAILLAGE['UNITE_MGIB']
+ # Unité pour le fichier de commandes GIBI
+ unite_datg = EXEC_MAILLAGE['UNITE_DATG']
+ # Niveau gibi
+ niveau_gibi = EXEC_MAILLAGE['NIVE_GIBI']
+
+ # Verif mail
+ ver_apla = VERI_MAIL['APLAT']
+ ver_veri = VERI_MAIL['VERIF']
+
+ # Impression
+ if IMPRESSION['UNITE']!=None:
+ imp_unit = IMPRESSION['UNITE']
+ imp_unitF = 1
+ else:
+ imp_unitF = 0
+ if IMPRESSION['FORMAT']!=None:
+ imp_form = IMPRESSION['FORMAT']
+ imp_formF = 1
+ else:
+ imp_formF = 0
+# if IMPRESSION['FICHIER']!=None:
+# imp_fich = IMPRESSION['FICHIER']
+# imp_fichF = 1
+# else:
+# imp_fichF = 0
+
+ # Maillage
+ nrad = RAFF_MAILLAGE['NB_RADIAL']
+ ncir = RAFF_MAILLAGE['NB_CIRCONF']
+ nver = RAFF_MAILLAGE['NB_VERTICAL']
+ nsect = RAFF_MAILLAGE['NB_ALESAGE']
+ temps = 5.
+
+ maillage = {'nrad': nrad,
+ 'ncir': ncir,
+ 'nver': nver,
+ 'nsect': nsect,
+ 'temps' : temps,}
+
+ # Création du fichier datg
+
+ if GEOM_BRID['NORME'] == 'OUI':
+ # Bride standard
+ type_bride = GEOM_BRID['TYPE']
+ ### Ecriture du fichier GIBI principal (dgib) - Bride STANDARD
+ write_file_dgib_STD(unite_mgib,unite_datg,maillage,type_bride)
+ else:
+ # Bride quelconque
+ geo_bride_qqe = {'nbgouj': GEOM_BRID['GOUJ_N_GOUJON'],
+ 'dint': GEOM_BRID['BRID_D_INT'],
+ 'dex1': GEOM_BRID['TUBU_D_EXT'],
+ 'dex2': GEOM_BRID['BRID_D_CONGE'],
+ 'dex3': GEOM_BRID['BRID_D_EPAUL'],
+ 'dtrou': GEOM_BRID['BRID_P_ALESAG'],
+ 'dext': GEOM_BRID['BRID_D_EXT'],
+ 'dt': GEOM_BRID['BRID_D_ALESAG'],
+ 'drd': GEOM_BRID['GOUJ_D_RONDEL'],
+ 'dg': GEOM_BRID['GOUJ_D_GOUJON'],
+ 'dec': GEOM_BRID['GOUJ_D_ECROU'],
+ 'rcong': GEOM_BRID['BRID_R_CONGE'],
+ 'he': GEOM_BRID['GOUJ_E_ECROU'],
+ 'e': GEOM_BRID['GOUJ_E_RONDEL'],
+ 'hc1': GEOM_BRID['BRID_H'],
+ 'hcg1': GEOM_BRID['TUBU_H'],
+ 'hb': GEOM_BRID['BRID_H_EPAUL'],
+ 'htrou': GEOM_BRID['BRID_H_ALESAG'],
+ 'pf': GEOM_BRID['GOUJ_E_FILET'],
+ 'j': GEOM_BRID['ETAN_E_JOINT']}
+ ### Ecriture du fichier GIBI principal (dgib) - Bride QUELCONQUE
+ write_file_dgib_QQE(unite_mgib,unite_datg,maillage,geo_bride_qqe)
+
+ fichier_datg = 'fort.'+str(unite_datg)
+ fichier_mgib = 'fort.'+str(unite_mgib)
+
+ # Lancement de GIBI
+ EXEC_LOGICIEL(
+ LOGICIEL=gibi2000,
+ ARGUMENT=(_F(NOM_PARA=fichier_datg),
+ _F(NOM_PARA=fichier_mgib),
+ )
+ )
+ # Lecture du maillage GIBI dans ASTER
+ PRE_GIBI(
+ UNITE_GIBI = unite_mgib,
+ )
+
+ nomres = LIRE_MAILLAGE(VERI_MAIL=_F(APLAT = ver_apla,
+ VERIF = ver_veri ),)
+
+# if (imp_fichF == 1):
+# print imp_fich
+ if (imp_formF == 1):
+ print imp_form
+ if (imp_unitF == 1):
+ print imp_unit
+ # Impression du fichier maillage
+ if (imp_formF == 1):
+ if (imp_form == 'CASTEM'):
+ imp_ngib = IMPRESSION['NIVE_GIBI']
+ IMPR_RESU( RESU = _F(MAILLAGE=nomres, ),
+ FORMAT = 'CASTEM', NIVE_GIBI = imp_ngib )
+ if (imp_form == 'IDEAS'):
+ imp_nver = IMPRESSION['VERSION']
+ IMPR_RESU(RESU = _F(MAILLAGE=nomres,),
+ FORMAT = 'IDEAS', VERSION = imp_nver )
+
+ return ier
+
+
+##############################################################################################
+# Liste des fonctions
+##############################################################################################
+
+#############
+## EXTERNES (appelables depuis l'extérieur)
+#############
+
+### Ecriture du fichier GIBI principal (dgib) - Bride STANDARD
+# null = write_file_dgib_STD(unite_mgib,unite_datg,msh_bride,geo_bride)
+
+### Ecriture du fichier GIBI principal (dgib) - Bride QUELCONQUE
+# null = write_file_dgib_QQE(unite_mgib,unite_datg,msh_bride,geo_bride)
+
+### Imprime tout le catalogue des brides standards disponibles dans un fichier texte
+# null = print_bride_std(nom_fichier)
+
+### Catalogue complet des brides standards disponibles
+# txt = bride_std()
+
+#############
+## INTERNES (réservées au travail interne)
+#############
+
+### Génération du nom du fichier pour le fichier maillage résultant (format GIBI)
+# NomFichier(txt) = name_file_mgib(unite_mgib):
+
+### Génération du nom du fichier pour le fichier générant le maillage (commandes GIBI)
+# NomFichier(txt) = name_file_datg(unite_datg):
+
+### Récupère un fichier texte DATG
+# Txt = text_datg(fichier_datg):
+
+### Génération du texte pour les variables
+# Txt = para_text(dico_var,var):
+
+
+
+#=============================================================================================
+# Importation des modules Python
+#=============================================================================================
+
+from Macro.macr_cabri_mail_dat import dico_var_geo,dico_var_msh,dico_bride_std
+
+#=============================================================================================
+# Fonctions principales
+#=============================================================================================
+# Ecriture du fichier GIBI principal (dgib) - Bride STANDARD
+def write_file_dgib_STD(unite_mgib,unite_datg,msh_bride,geo_bride):
+
+ # Nom du fichier maillage produit par GIBI
+ nomFichierMGIB = name_file_mgib(unite_mgib)
+
+ # Nom du fichier de commandes pour GIBI
+ nomFichierDATG = name_file_datg(unite_datg)
+
+ # Ouverture du fichier d'entrée de commandes
+ fdgib=open(nomFichierDATG,'w')
+
+ # En-tete
+ text = "**************************************************************\n"
+ text = text + "* Fichier GIBI pour le maillage d'une bride \n"
+ text = text + "**************************************************************\n"
+ text = text + "\n"
+ text = text + "* Ce fichier a été généré automatiquement par la macro ASTER MACR_CABRI_MAIL \n"
+ text = text + "* Ne pas modifier\n"
+ text = text + "\n"
+ text = text + "**************************************************************\n"
+ text = text + "* Type bride: Bride standard \n"
+ text = text + "**************************************************************\n"
+ text = text + "titre '"+"Bride standard"+"';\n"
+ text = text + "** Type bride standard: "+geo_bride+"\n"
+
+ text = text + "\n"
+ text = text + "nomfich = CHAINE \n"
+ if len(nomFichierMGIB)>72:
+ raise Exception, 'Nom de fichier trop long (limité à 72 caractères ' \
+ 'pour GIBI) :\n',nomFichierMGIB
+ elif len(nomFichierMGIB)<=69:
+ text = text + "'"+nomFichierMGIB+"';\n"
+ else:
+ text = text + "'"+nomFichierMGIB[:69]+"'\n" \
+ + "'"+nomFichierMGIB[69:]+"';\n"
+ text = text + "opti dime 3 elem cub8 SAUV FORM nomfich;\n"
+ text = text + "dens 1;\n"
+ text = text + "\n"
+ fdgib.write(text)
+
+ # Procédures internes supplémentaires
+ text = "**************************************************************\n"
+ text = text + "* Procédures supplémentaires \n"
+ text = text + "**************************************************************\n"
+ text = text + text_datg_pro()
+ fdgib.write(text)
+
+ # Début de procédure de création du maillage
+ text = "**************************************************************\n"
+ text = text + "**************************************************************\n"
+ text = text + "********* Début de procédure de création du maillage *********\n"
+ text = text + "**************************************************************\n"
+ text = text + "**************************************************************\n"
+ text = text + "\n debproc constru;\n"
+ fdgib.write(text)
+
+ # Paramètres géométriques
+ car_bride = dico_bride_std[geo_bride]
+ text = "**************************************************************\n"
+ text = text + "* Paramètres géométriques \n"
+ text = text + "**************************************************************\n"
+ text = text + para_text(dico_var_geo,car_bride)
+ fdgib.write(text)
+
+ # Paramètres du maillage
+ text = "**************************************************************\n"
+ text = text + "* Paramètres physiques \n"
+ text = text + "**************************************************************\n"
+ text = text + para_text(dico_var_msh,msh_bride)
+ fdgib.write(text)
+
+ # Algorithme du maillage
+ text = "**************************************************************\n"
+ text = text + "* Algorithme de maillage \n"
+ text = text + "**************************************************************\n"
+ text = text + text_datg_std()
+ fdgib.write(text)
+
+ # Fermeture du fichier maillage
+ fdgib.close()
+
+
+# Ecriture du fichier GIBI principal (dgib) - Bride QUELCONQUE
+def write_file_dgib_QQE(unite_mgib,unite_datg,msh_bride,geo_bride):
+
+ # Nom du fichier maillage produit par GIBI
+ nomFichierMGIB = name_file_mgib(unite_mgib)
+
+ # Nom du fichier de commandes pour GIBI
+ nomFichierDATG = name_file_datg(unite_datg)
+
+ # Ouverture du fichier d'entree de commandes
+ fdgib=open(nomFichierDATG,'w')
+
+ # En-tete
+ text = "**************************************************************\n"
+ text = text + "* Fichier GIBI pour le maillage d'une bride \n"
+ text = text + "**************************************************************\n"
+ text = text + "\n"
+ text = text + "* Ce fichier a été généré automatiquement par la macro ASTER MACR_CABRI_MAIL \n"
+ text = text + "* Ne pas modifier\n"
+ text = text + "\n"
+ text = text + "**************************************************************\n"
+ text = text + "* Type bride: Bride quelconque\n"
+ text = text + "**************************************************************\n"
+ text = text + "titre '"+"Bride Quelconque"+"';\n"
+ text = text + "\n"
+ text = text + "nomfich = CHAINE \n"
+ if len(nomFichierMGIB)>72:
+ raise Exception, 'Nom de fichier trop long (limité à 72 caractères ' \
+ 'pour GIBI) :\n',nomFichierMGIB
+ elif len(nomFichierMGIB)<=69:
+ text = text + "'"+nomFichierMGIB+"';\n"
+ else:
+ text = text + "'"+nomFichierMGIB[:69]+"'\n" \
+ + "'"+nomFichierMGIB[69:]+"';\n"
+ text = text + "opti dime 3 elem cub8 SAUV FORM nomfich;\n"
+ text = text + "dens 1;\n"
+ text = text + "\n"
+ fdgib.write(text)
+
+ # Procédures internes supplémentaires
+ text = "**************************************************************\n"
+ text = text + "* Procédures supplémentaires \n"
+ text = text + "**************************************************************\n"
+ text = text + text_datg_pro()
+ fdgib.write(text)
+
+ # Début de procédure de création du maillage
+ text = "**************************************************************\n"
+ text = text + "**************************************************************\n"
+ text = text + "********* Début de procédure de création du maillage *********\n"
+ text = text + "**************************************************************\n"
+ text = text + "**************************************************************\n"
+ text = text + "\n debproc constru;\n"
+ fdgib.write(text)
+
+ # Paramètres géométriques
+ text = "**************************************************************\n"
+ text = text + "* Paramètres géométriques \n"
+ text = text + "**************************************************************\n"
+ text = text + para_text(dico_var_geo,geo_bride)
+ fdgib.write(text)
+
+ # Paramètres du maillage
+ text = "**************************************************************\n"
+ text = text + "* Paramètres physiques \n"
+ text = text + "**************************************************************\n"
+ text = text + para_text(dico_var_msh,msh_bride)
+ fdgib.write(text)
+
+ # Algorithme du maillage
+ text = "**************************************************************\n"
+ text = text + "* Algorithme de maillage \n"
+ text = text + "**************************************************************\n"
+ text = text + text_datg_qqe()
+ fdgib.write(text)
+
+ # Fermeture du fichier maillage
+ fdgib.close()
+
+# Génération du nom du fichier pour le fichier maillage résultant (format GIBI)
+def name_file_mgib(unite_mgib):
+ cur_dir = os.getcwd()
+ nomFichier = cur_dir+'/fort.'+str(unite_mgib)
+ return nomFichier
+
+
+# Génération du nom du fichier pour le fichier générant le maillage (commandes GIBI)
+def name_file_datg(unite_datg):
+ cur_dir = os.getcwd()
+ nomFichier = cur_dir+'/fort.'+str(unite_datg)
+ return nomFichier
+
+# Récupère un fichier texte DATG: texte GIBI pour procédures
+def text_datg_pro():
+ import aster
+ loc_datg = aster.repdex()
+ datg_bridePro = loc_datg+"macr_cabri_mail_proc.datg"
+ fproc=open(datg_bridePro,'r')
+ procText = fproc.read()
+ fproc.close()
+
+ return procText
+
+# Récupère un fichier texte DATG: texte GIBI pour bride quelconque
+def text_datg_qqe():
+ import aster
+ loc_datg = aster.repdex()
+ datg_brideQqe = loc_datg+"macr_cabri_mail_qqe.datg"
+ fproc=open(datg_brideQqe,'r')
+ procText = fproc.read()
+ fproc.close()
+
+ return procText
+
+# Récupère un fichier texte DATG: texte GIBI pour bride standard
+def text_datg_std():
+ import aster
+ loc_datg = aster.repdex()
+ datg_brideStd = loc_datg+"macr_cabri_mail_std.datg"
+ fproc=open(datg_brideStd,'r')
+ procText = fproc.read()
+ fproc.close()
+
+ return procText
+
+# Génération du texte pour les variables
+def para_text(dico_var,var):
+ text = '\n'
+ for nom_var in var.keys():
+ text = text+"* "+dico_var[nom_var]+"\n"
+ text = text+nom_var+" = "+`var[nom_var]`+";\n"
+ return text
+
+#=============================================================================================
+# Accès au catalogue des brides standards
+# (les brides standards sont décrites dans le fichier Data_Brides.py)
+#=============================================================================================
+
+
+
+# Imprime tout le catalogue des brides standards disponibles dans un fichier texte
+def print_bride_std(nom_fichier):
+ text = bride_std()
+ # Ouverture du fichier
+ finfo=open(nom_fichier,'w')
+ # Ecriture des infos
+ finfo.write(text)
+ # Fermeture du fichier
+ finfo.close()
+
+# Catalogue complet des brides standards disponibles
+def bride_std():
+ # Ligne d'info
+ text = "Liste des brides standards avec leurs dimensions\n"
+ # Première ligne
+ text = text+"\t"
+ for nom_variable in dico_var_geo.keys():
+ text = text + nom_variable+"\t\t"
+ text = text + "\n"
+ # Lignes suivantes
+ for nom_bride in dico_bride_std.keys():
+ bride = dico_bride_std[nom_bride]
+ text = text + nom_bride + '\t'
+ for nom_var in dico_var_geo.keys():
+ chaine = "%f" % (bride[nom_var])
+ text = text+chaine+"\t"
+ text = text + "\n"
+ return text
--- /dev/null
+#@ MODIF macr_cara_poutre_ops Macro DATE 05/07/2005 AUTEUR DURAND C.DURAND
+# -*- coding: iso-8859-1 -*-
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2003 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE JMBHH01 J.M.PROIX
+
+def macr_cara_poutre_ops(self,UNITE_MAILLAGE,SYME_X,SYME_Y,GROUP_MA_BORD,
+ GROUP_MA,ORIG_INER,**args):
+ """
+ Ecriture de la macro MACR_CARA_POUTRE
+ """
+ import types
+ from Accas import _F
+ ier=0
+ # On importe les definitions des commandes a utiliser dans la macro
+ # Le nom de la variable doit etre obligatoirement le nom de la commande
+ LIRE_MAILLAGE =self.get_cmd('LIRE_MAILLAGE')
+ DEFI_GROUP =self.get_cmd('DEFI_GROUP')
+ CREA_MAILLAGE =self.get_cmd('CREA_MAILLAGE')
+ AFFE_MODELE =self.get_cmd('AFFE_MODELE')
+ DEFI_MATERIAU =self.get_cmd('DEFI_MATERIAU')
+ AFFE_MATERIAU =self.get_cmd('AFFE_MATERIAU')
+ DEFI_FONCTION =self.get_cmd('DEFI_FONCTION')
+ DEFI_CONSTANTE =self.get_cmd('DEFI_CONSTANTE')
+ AFFE_CHAR_THER =self.get_cmd('AFFE_CHAR_THER')
+ AFFE_CHAR_THER_F=self.get_cmd('AFFE_CHAR_THER_F')
+ THER_LINEAIRE =self.get_cmd('THER_LINEAIRE')
+ CALC_VECT_ELEM =self.get_cmd('CALC_VECT_ELEM')
+ CALC_MATR_ELEM =self.get_cmd('CALC_MATR_ELEM')
+ NUME_DDL =self.get_cmd('NUME_DDL')
+ ASSE_VECTEUR =self.get_cmd('ASSE_VECTEUR')
+ POST_ELEM =self.get_cmd('POST_ELEM')
+ CALC_ELEM =self.get_cmd('CALC_ELEM')
+ INTE_MAIL_2D =self.get_cmd('INTE_MAIL_2D')
+ POST_RELEVE_T =self.get_cmd('POST_RELEVE_T')
+ IMPR_TABLE =self.get_cmd('IMPR_TABLE')
+ IMPR_CO =self.get_cmd('IMPR_CO')
+ # La macro compte pour 1 dans la numerotation des commandes
+ self.set_icmd(1)
+
+ # Le concept sortant (de type tabl_cara_geom) est nommé 'nomres' dans
+ # le contexte de la macro
+
+ self.DeclareOut('nomres',self.sd)
+
+# if GROUP_MA_BORD and GROUP_MA:
+# if not LIAISON:
+# ier=ier+1
+# self.cr.fatal("<F> <MACR_CARA_POUTRE> Avec GROUP_MA, il faut obligatoirement preciser LIAISON, LONGUEUR ET MATERIAU")
+# return ier
+#
+ __nomlma=LIRE_MAILLAGE(UNITE=UNITE_MAILLAGE,)
+
+ __nomamo=AFFE_MODELE(MAILLAGE=__nomlma,
+ AFFE=_F(TOUT='OUI',
+ PHENOMENE='MECANIQUE',
+ MODELISATION='D_PLAN',), )
+
+ __nomdma=DEFI_MATERIAU(ELAS=_F(E=1.0,NU=0.,RHO=1.0),)
+
+
+ __nomama=AFFE_MATERIAU(MAILLAGE=__nomlma,
+ AFFE=_F(TOUT='OUI',
+ MATER=__nomdma,), )
+
+# --- CALCUL DES CARACTERISTIQUES GEOMETRIQUES DE LA SECTION :
+# ------------------------------------------------------
+
+ motsimps={}
+ if GROUP_MA : motsimps['GROUP_MA'] = GROUP_MA
+ if SYME_X : motsimps['SYME_X'] = SYME_X
+ if SYME_Y : motsimps['SYME_Y'] = SYME_Y
+ motsimps['ORIG_INER'] = ORIG_INER
+ mfact=_F(TOUT='OUI',**motsimps)
+ nomres=POST_ELEM(MODELE=__nomamo,
+ CHAM_MATER=__nomama,
+ CARA_GEOM=mfact )
+
+# nb : si GROUP_MA n existe pas : le mot clé est ignoré
+
+#
+# ==================================================================
+# --- = CALCUL DE LA CONSTANTE DE TORSION SUR TOUT LE MAILLAGE =
+# --- = OU DU CENTRE DE TORSION/CISAILLEMENT =
+# --- = DES COEFFICIENTS DE CISAILLEMENT =
+# --- = ET DE L INERTIE DE GAUCHISSEMENT =
+# --- = DU RAYON DE TORSION SUR TOUT LE MAILLAGE
+# --- = ON CREE UN MODELE PLAN 2D THERMIQUE REPRESENTANT LA SECTION =
+# --- = DE LA POUTRE CAR ON A A RESOUDRE DES E.D.P. AVEC DES LAPLACIENS=
+# ==================================================================
+
+ if GROUP_MA_BORD and not GROUP_MA:
+# --- TRANSFORMATION DES GROUP_MA EN GROUP_NO SUR-LESQUELS
+# --- ON POURRA APPLIQUER DES CONDITIONS DE TEMPERATURE IMPOSEE :
+# ---------------------------------------------------------
+ motscles={}
+ if type(GROUP_MA_BORD)==types.StringType:
+ motscles['CREA_GROUP_NO']=_F(GROUP_MA=GROUP_MA_BORD,)
+ else:
+ motscles['CREA_GROUP_NO']=[]
+ for grma in GROUP_MA_BORD:
+ motscles['CREA_GROUP_NO'].append(_F(GROUP_MA=grma,))
+ __nomlma=DEFI_GROUP(reuse=__nomlma,
+ MAILLAGE=__nomlma,
+ **motscles)
+
+
+
+# --- CREATION D UN MAILLAGE IDENTIQUE AU PREMIER A CECI PRES
+# --- QUE LES COORDONNEES SONT EXPRIMEES DANS LE REPERE PRINCIPAL
+# --- D INERTIE DONT L ORIGINE EST LE CENTRE DE GRAVITE DE LA SECTION :
+# ---------------------------------------------------------------
+
+ __nomapi=CREA_MAILLAGE(MAILLAGE=__nomlma,
+ REPERE=_F(TABLE=nomres,
+ NOM_ORIG='CDG', ), )
+
+# --- AFFECTATION DU PHENOMENE 'THERMIQUE' AU MODELE EN VUE DE
+# --- LA CONSTRUCTION D UN OPERATEUR LAPLACIEN SUR CE MODELE :
+# ------------------------------------------------------
+
+ __nomoth=AFFE_MODELE(MAILLAGE=__nomapi,
+ AFFE=_F(TOUT='OUI',
+ PHENOMENE='THERMIQUE',
+ MODELISATION='PLAN',), )
+
+# --- POUR LA CONSTRUCTION DU LAPLACIEN, ON DEFINIT UN
+# --- PSEUDO-MATERIAU DONT LES CARACTERISTIQUES THERMIQUES SONT :
+# --- LAMBDA = 1, RHO*CP = 0 :
+# ----------------------
+
+ __nomath=DEFI_MATERIAU(THER=_F(LAMBDA=1.0,RHO_CP=0.,),)
+
+# --- DEFINITION D UN CHAM_MATER A PARTIR DU MATERIAU PRECEDENT :
+# ---------------------------------------------------------
+
+ __chmath=AFFE_MATERIAU(MAILLAGE=__nomapi,
+ AFFE=_F(TOUT='OUI',
+ MATER=__nomath,), )
+
+#
+# ------------------------------------------------------------
+# --- - CALCUL DE LA CONSTANTE DE TORSION PAR RESOLUTION -
+# --- - D UN LAPLACIEN AVEC UN TERME SOURCE EGAL A -2 -
+# --- - L INCONNUE ETANT NULLE SUR LE CONTOUR DE LA SECTION : -
+# --- - LAPLACIEN(PHI) = -2 DANS LA SECTION -
+# --- - PHI = 0 SUR LE CONTOUR : -
+# ------------------------------------------------------------
+#
+# --- ON IMPOSE LA VALEUR 0 A L INCONNUE SCALAIRE SUR LE CONTOUR
+# --- DE LA SECTION
+# --- ET ON A UN TERME SOURCE EGAL A -2 DANS TOUTE LA SECTION :
+# -------------------------------------------------------
+
+ motscles={}
+ if args.has_key('GROUP_MA_INTE'):
+ if args['GROUP_MA_INTE'] != None :
+ motscles['LIAISON_UNIF']=_F(GROUP_MA=args['GROUP_MA_INTE'],DDL='TEMP'),
+ __chart1=AFFE_CHAR_THER(MODELE=__nomoth,
+ TEMP_IMPO =_F(GROUP_NO=GROUP_MA_BORD,
+ TEMP=0. ),
+ SOURCE =_F(TOUT='OUI',
+ SOUR=2.0),
+ **motscles )
+
+# --- POUR CHAQUE TROU DE LA SECTION :
+# --- .ON A IMPOSE QUE PHI EST CONSTANT SUR LE CONTOUR INTERIEUR
+# --- EN FAISANT LE LIAISON_UNIF DANS LE AFFE_CHAR_THER PRECEDENT
+# --- .ON IMPOSE EN PLUS D(PHI)/DN = 2*AIRE(TROU)/L(TROU)
+# --- OU D/DN DESIGNE LA DERIVEE PAR RAPPORT A LA
+# --- NORMALE ET L DESIGNE LA LONGUEUR DU BORD DU TROU :
+# -------------------------------------------------------
+
+ if args.has_key('GROUP_MA_INTE'):
+ lgmaint=args['GROUP_MA_INTE']
+ if lgmaint != None :
+ __tbaire=POST_ELEM(MODELE=__nomoth,
+ AIRE_INTERNE=_F(GROUP_MA_BORD=args['GROUP_MA_INTE'],), )
+
+ motscles={}
+ motscles['FLUX_REP']=[]
+
+ if type(lgmaint)==types.StringType:
+ motscles['FLUX_REP']=_F(GROUP_MA=args['GROUP_MA_INTE'],CARA_TORSION=__tbaire)
+ else:
+ motscles['FLUX_REP']=[]
+ for grma in lgmaint:
+ motscles['FLUX_REP'].append(_F(GROUP_MA=grma,CARA_TORSION=__tbaire),)
+ __chart2=AFFE_CHAR_THER(MODELE=__nomoth,**motscles)
+
+# --- RESOLUTION DE LAPLACIEN(PHI) = -2
+# --- AVEC PHI = 0 SUR LE CONTOUR :
+# ----------------------------------------
+
+ motscles={}
+ motscles['EXCIT']=[_F(CHARGE=__chart1,),]
+ if args.has_key('GROUP_MA_INTE'):
+ if lgmaint != None :
+ motscles['EXCIT'].append(_F(CHARGE=__chart2,))
+ __tempe1=THER_LINEAIRE(MODELE=__nomoth,
+ CHAM_MATER=__chmath,
+ SOLVEUR=_F(STOP_SINGULIER='NON',),
+ **motscles )
+
+#
+# ----------------------------------------------
+# --- - CALCUL DU CENTRE DE TORSION/CISAILLEMENT -
+# --- - ET DES COEFFICIENTS DE CISAILLEMENT : -
+# ----------------------------------------------
+#
+# --- POUR LE CALCUL DES CONSTANTES DE CISAILLEMENT, ON VA DEFINIR
+# --- UN PREMIER TERME SOURCE, SECOND MEMBRE DE L EQUATION DE LAPLACE
+# --- PAR UNE FONCTION EGALE A Y :
+# --------------------------
+
+ __fnsec1=DEFI_FONCTION(NOM_PARA='X',
+ VALE=(0.,0.,10.,10.),
+ PROL_DROITE='LINEAIRE',
+ PROL_GAUCHE='LINEAIRE',
+ )
+
+ __fnsec0=DEFI_CONSTANTE(VALE=0.,)
+
+# --- LE TERME SOURCE CONSTITUANT LE SECOND MEMBRE DE L EQUATION
+# --- DE LAPLACE EST PRIS EGAL A Y DANS TOUTE LA SECTION :
+# --------------------------------------------------
+
+
+ motscles={}
+ if args.has_key('NOEUD'):
+ motscles['TEMP_IMPO']=(_F(NOEUD=args['NOEUD'],TEMP=__fnsec0))
+ __chart2=AFFE_CHAR_THER_F(MODELE=__nomoth,
+ SOURCE=_F(TOUT='OUI',
+ SOUR=__fnsec1,),
+ **motscles )
+
+# --- RESOLUTION DE LAPLACIEN(PHI) = -Y
+# --- AVEC D(PHI)/D(N) = 0 SUR LE CONTOUR :
+# ------------------------------------------------
+
+ __tempe2=THER_LINEAIRE(MODELE=__nomoth,
+ CHAM_MATER=__chmath,
+ EXCIT=_F(CHARGE=__chart2,),
+ SOLVEUR=_F(STOP_SINGULIER='NON',),
+ )
+
+# --- POUR LE CALCUL DES CONSTANTES DE CISAILLEMENT, ON VA DEFINIR
+# --- UN PREMIER TERME SOURCE, SECOND MEMBRE DE L EQUATION DE LAPLACE
+# --- PAR UNE FONCTION EGALE A Z :
+# --------------------------
+
+ __fnsec2=DEFI_FONCTION(NOM_PARA='Y',
+ VALE=(0.,0.,10.,10.),
+ PROL_DROITE='LINEAIRE',
+ PROL_GAUCHE='LINEAIRE',
+ )
+
+# --- LE TERME SOURCE CONSTITUANT LE SECOND MEMBRE DE L EQUATION
+# --- DE LAPLACE EST PRIS EGAL A Z DANS TOUTE LA SECTION :
+# --------------------------------------------------
+
+ motscles={}
+ if args.has_key('NOEUD'):
+ motscles['TEMP_IMPO']=_F(NOEUD=args['NOEUD'],TEMP=__fnsec0)
+ __chart3=AFFE_CHAR_THER_F(MODELE=__nomoth,
+ SOURCE=_F(TOUT='OUI',
+ SOUR=__fnsec2,),
+ **motscles)
+
+# --- RESOLUTION DE LAPLACIEN(PHI) = -Z
+# --- AVEC D(PHI)/D(N) = 0 SUR LE CONTOUR :
+# ------------------------------------------------
+
+ __tempe3=THER_LINEAIRE(MODELE=__nomoth,
+ CHAM_MATER=__chmath,
+ EXCIT=_F(CHARGE=__chart3,),
+ SOLVEUR=_F(STOP_SINGULIER='NON',),
+ )
+
+# --- CALCUL DU RAYON DE TORSION :
+# --------------------------
+
+# CALCUL DU RAYON DE TORSION EXTERNE : rtext
+
+ __tempe1=CALC_ELEM(reuse=__tempe1,
+ RESULTAT=__tempe1,
+ MODELE=__nomoth,
+ CHAM_MATER=__chmath,
+ TOUT_ORDRE='OUI',
+ OPTION='FLUX_ELNO_TEMP',
+ )
+
+ __chem=INTE_MAIL_2D(MAILLAGE=__nomapi,
+ DEFI_CHEMIN=_F(GROUP_MA=GROUP_MA_BORD),
+ INFO=2,)
+
+ __flun=POST_RELEVE_T(ACTION=_F(INTITULE='FLUX_NORM',
+ CHEMIN=__chem,
+ RESULTAT=__tempe1,
+ NOM_CHAM='FLUX_ELNO_TEMP',
+ TRAC_NOR='OUI',
+ NOM_CMP=('FLUX','FLUY'),
+ OPERATION='MOYENNE'))
+
+ __m1=abs(__flun['TRAC_NOR',3])
+ __m2=abs(__flun['TRAC_NOR',4])
+ __rtext=max(__m1,__m2)
+
+ # CALCUL DU RAYON DE TORSION : rt
+ # rt = max ( rtext , 2*AIRE(TROU)/L(TROU) )
+
+ if args.has_key('GROUP_MA_INTE'):
+ if args['GROUP_MA_INTE'] != None :
+ if type(args['GROUP_MA_INTE'])==types.StringType :
+ l_group_ma_inte=[args['GROUP_MA_INTE'],]
+ else:
+ l_group_ma_inte=args['GROUP_MA_INTE']
+ for i in range(0,len(l_group_ma_inte)):
+ __chem=INTE_MAIL_2D(MAILLAGE=__nomapi,
+ DEFI_CHEMIN=_F(GROUP_MA=l_group_ma_inte[i]),
+ INFO=2,)
+ __flun=POST_RELEVE_T(ACTION=_F(INTITULE='FLUX_NORM',
+ CHEMIN=__chem,
+ RESULTAT=__tempe1,
+ NOM_CHAM='FLUX_ELNO_TEMP',
+ TRAC_NOR='OUI',
+ NOM_CMP=('FLUX','FLUY'),
+ OPERATION='MOYENNE'))
+ __m1=(abs(__flun['TRAC_NOR',3])+abs(__flun['TRAC_NOR',4]))/2.
+ if __m1 > __rtext :
+ __rtext=__m1
+
+ __rt=__rtext
+
+# --- CALCUL DE LA CONSTANTE DE TORSION :
+# ---------------------------------
+
+ motscles={}
+ if args.has_key('GROUP_MA_INTE'):
+ lgmaint=args['GROUP_MA_INTE']
+ if lgmaint != None :
+ motscles['CARA_POUTRE']=_F(CARA_GEOM=nomres,
+ LAPL_PHI=__tempe1,
+ RT=__rt,
+ TOUT='OUI',
+ OPTION='CARA_TORSION',
+ GROUP_MA_INTE=args['GROUP_MA_INTE'],)
+ else:
+ motscles['CARA_POUTRE']=_F(CARA_GEOM=nomres,
+ LAPL_PHI=__tempe1,
+ RT=__rt,
+ TOUT='OUI',
+ OPTION='CARA_TORSION', )
+ nomres=POST_ELEM(reuse=nomres,
+ MODELE=__nomoth,
+ CHAM_MATER=__chmath,
+ **motscles )
+
+
+# --- CALCUL DES COEFFICIENTS DE CISAILLEMENT ET DES COORDONNEES DU
+# --- CENTRE DE CISAILLEMENT/TORSION :
+# ------------------------------
+
+ nomres=POST_ELEM(reuse=nomres,
+ MODELE=__nomoth,
+ CHAM_MATER=__chmath,
+ CARA_POUTRE=_F(CARA_GEOM=nomres,
+ LAPL_PHI_Y=__tempe2,
+ LAPL_PHI_Z=__tempe3,
+ TOUT='OUI',
+ OPTION='CARA_CISAILLEMENT',), )
+
+
+#
+# ------------------------------------------------------------
+# --- - CALCUL DE L INERTIE DE GAUCHISSEMENT PAR RESOLUTION DE -
+# --- - LAPLACIEN(OMEGA) = 0 DANS LA SECTION -
+# --- - AVEC D(OMEGA)/D(N) = Z*NY-Y*NZ SUR LE -
+# --- - CONTOUR DE LA SECTION -
+# --- - NY ET NZ SONT LES COMPOSANTES DU VECTEUR N NORMAL -
+# --- - A CE CONTOUR -
+# --- - ET SOMME_S(OMEGA.DS) = 0 -
+# --- - OMEGA EST LA FONCTION DE GAUCHISSEMENT -
+# --- - L INERTIE DE GAUCHISSEMENT EST SOMME_S(OMEGA**2.DS) -
+# ------------------------------------------------------------
+#
+# --- CREATION D UN MAILLAGE DONT LES COORDONNEES SONT EXPRIMEES
+# --- DANS LE REPERE PRINCIPAL D INERTIE MAIS AVEC COMME ORIGINE
+# --- LE CENTRE DE TORSION DE LA SECTION, ON VA DONC UTILISER
+# --- LE MAILLAGE DE NOM NOMAPI DONT LES COORDONNEES SONT
+# --- EXPRIMEES DANS LE REPERE PRINCIPAL D'INERTIE, L'ORIGINE
+# --- ETANT LE CENTRE DE GRAVITE DE LA SECTION (QUI EST DONC
+# --- A CHANGER) :
+# ----------
+
+ __nomapt=CREA_MAILLAGE(MAILLAGE=__nomapi,
+ REPERE=_F(TABLE=nomres,
+ NOM_ORIG='TORSION',) )
+
+# --- AFFECTATION DU PHENOMENE 'THERMIQUE' AU MODELE EN VUE DE
+# --- LA CONSTRUCTION D UN OPERATEUR LAPLACIEN SUR CE MODELE :
+# ------------------------------------------------------
+
+ __nomot2=AFFE_MODELE(MAILLAGE=__nomapt,
+ AFFE=_F(TOUT='OUI',
+ PHENOMENE='THERMIQUE',
+ MODELISATION='PLAN', ) )
+
+# --- DEFINITION D UN CHAM_MATER A PARTIR DU MATERIAU PRECEDENT :
+# ---------------------------------------------------------
+
+ __chmat2=AFFE_MATERIAU(MAILLAGE=__nomapt,
+ AFFE=_F(TOUT='OUI',
+ MATER=__nomath, ), )
+
+# --- POUR LE CALCUL DE L INERTIE DE GAUCHISSEMENT, ON VA DEFINIR
+# --- LA COMPOSANTE SELON Y DU FLUX A IMPOSER SUR LE CONTOUR
+# --- PAR UNE FONCTION EGALE A -X :
+# ---------------------------
+
+ __fnsec3=DEFI_FONCTION(NOM_PARA='X',
+ VALE=(0.,0.,10.,-10.),
+ PROL_DROITE='LINEAIRE',
+ PROL_GAUCHE='LINEAIRE',
+ )
+
+# --- POUR LE CALCUL DE L INERTIE DE GAUCHISSEMENT, ON VA DEFINIR
+# --- LA COMPOSANTE SELON X DU FLUX A IMPOSER SUR LE CONTOUR
+# --- PAR UNE FONCTION EGALE A Y :
+# --------------------------
+
+ __fnsec4=DEFI_FONCTION(NOM_PARA='Y',
+ VALE=(0.,0.,10.,10.),
+ PROL_DROITE='LINEAIRE',
+ PROL_GAUCHE='LINEAIRE',
+ )
+
+# --- DANS LE BUT D IMPOSER LA RELATION LINEAIRE ENTRE DDLS
+# --- SOMME_SECTION(OMEGA.DS) = 0 ( CETTE CONDITION
+# --- VENANT DE L EQUATION D EQUILIBRE SELON L AXE DE LA POUTRE
+# --- N = 0, N ETANT L EFFORT NORMAL)
+# --- ON CALCULE LE VECTEUR DE CHARGEMENT DU A UN TERME SOURCE EGAL
+# --- A 1., LES TERMES DE CE VECTEUR SONT EGAUX A
+# --- SOMME_SECTION(NI.DS) ET SONT DONC LES COEFFICIENTS DE
+# --- LA RELATION LINEAIRE A IMPOSER.
+# --- ON DEFINIT DONC UN CHARGEMENT DU A UN TERME SOURCE EGAL A 1 :
+# -----------------------------------------------------------
+
+ __chart4=AFFE_CHAR_THER(MODELE=__nomot2,
+ SOURCE=_F(TOUT='OUI',
+ SOUR=1.0), )
+
+# --- ON CALCULE LE VECT_ELEM DU AU CHARGEMENT PRECEDENT
+# --- IL S AGIT DES VECTEURS ELEMENTAIRES DONT LE TERME
+# --- AU NOEUD COURANT I EST EGAL A SOMME_SECTION(NI.DS) :
+# --------------------------------------------------
+
+ __vecel=CALC_VECT_ELEM(CHARGE=__chart4,
+ OPTION='CHAR_THER'
+ )
+
+# --- ON CALCULE LE MATR_ELEM DES MATRICES ELEMENTAIRES
+# --- DE CONDUCTIVITE UNIQUEMENT POUR GENERER LE NUME_DDL
+# --- SUR-LEQUEL S APPUIERA LE CHAMNO UTILISE POUR ECRIRE LA
+# --- RELATION LINEAIRE ENTRE DDLS :
+# ----------------------------
+
+ __matel=CALC_MATR_ELEM(MODELE=__nomot2,
+ CHAM_MATER=__chmat2,
+ CHARGE=__chart4,
+ OPTION='RIGI_THER',)
+
+# --- ON DEFINIT LE NUME_DDL ASSOCIE AU MATR_ELEM DEFINI
+# --- PRECEDEMMENT POUR CONSTRUIRE LE CHAMNO UTILISE POUR ECRIRE LA
+# --- RELATION LINEAIRE ENTRE DDLS :
+# ----------------------------
+
+ __numddl=NUME_DDL(MATR_RIGI=__matel,
+ METHODE='LDLT', )
+
+# --- ON CONSTRUIT LE CHAMNO QUI VA ETRE UTILISE POUR ECRIRE LA
+# --- RELATION LINEAIRE ENTRE DDLS :
+# ----------------------------
+
+ __chamno=ASSE_VECTEUR(VECT_ELEM=__vecel,
+ NUME_DDL=__numddl, )
+
+# --- ON IMPOSE LA RELATION LINEAIRE ENTRE DDLS
+# --- SOMME_SECTION(OMEGA.DS) = 0 ( CETTE CONDITION
+# --- VENANT DE L EQUATION D EQUILIBRE SELON L AXE DE LA POUTRE
+# --- N = 0, N ETANT L EFFORT NORMAL)
+# --- POUR IMPOSER CETTE RELATION ON PASSE PAR LIAISON_CHAMNO,
+# --- LES TERMES DU CHAMNO (I.E. SOMME_SECTION(NI.DS))
+# --- SONT LES COEFFICIENTS DE LA RELATION LINEAIRE :
+# ---------------------------------------------
+
+ __chart5=AFFE_CHAR_THER(MODELE=__nomot2,
+ LIAISON_CHAMNO=_F(CHAM_NO=__chamno,
+ COEF_IMPO=0.), )
+
+# --- LE CHARGEMENT EST UN FLUX REPARTI NORMAL AU CONTOUR
+# --- DONT LES COMPOSANTES SONT +Z (I.E. +Y) ET -Y (I.E. -X)
+# --- SELON LA DIRECTION NORMALE AU CONTOUR :
+# -------------------------------------
+
+ __chart6=AFFE_CHAR_THER_F(MODELE=__nomot2,
+ FLUX_REP=_F(GROUP_MA=GROUP_MA_BORD,
+ FLUX_X =__fnsec4,
+ FLUX_Y =__fnsec3,), )
+
+# --- RESOLUTION DE LAPLACIEN(OMEGA) = 0
+# --- AVEC D(OMEGA)/D(N) = Z*NY-Y*NZ SUR LE CONTOUR DE LA SECTION
+# --- ET SOMME_SECTION(OMEGA.DS) = 0 ( CETTE CONDITION
+# --- VENANT DE L EQUATION D EQUILIBRE SELON L AXE DE LA POUTRE
+# --- N = 0, N ETANT L EFFORT NORMAL) :
+# -------------------------------
+
+ __tempe4=THER_LINEAIRE(MODELE=__nomot2,
+ CHAM_MATER=__chmat2,
+ EXCIT=(_F(CHARGE=__chart5,),
+ _F(CHARGE=__chart6,),),
+ SOLVEUR=_F(METHODE='LDLT',
+ RENUM='SANS',
+ STOP_SINGULIER='NON',), )
+
+# --- CALCUL DE L INERTIE DE GAUCHISSEMENT :
+# -------------------------------------
+
+ nomres=POST_ELEM(reuse=nomres,
+ MODELE=__nomot2,
+ CHAM_MATER=__chmat2,
+ CARA_POUTRE=_F(CARA_GEOM=nomres,
+ LAPL_PHI=__tempe4,
+ TOUT='OUI',
+ OPTION='CARA_GAUCHI'), )
+
+
+#
+# ==================================================================
+# --- = CALCUL DE LA CONSTANTE DE TORSION SUR CHAQUE GROUPE =
+# --- = ET DU RAYON DE TORSION SUR CHAQUE GROUPE =
+# --- = DU CENTRE DE TORSION/CISAILLEMENT =
+# --- = DES COEFFICIENTS DE CISAILLEMENT =
+# ==================================================================
+
+
+#
+
+
+ if GROUP_MA_BORD and GROUP_MA:
+
+ if type(GROUP_MA_BORD)==types.StringType :
+ l_group_ma_bord=[GROUP_MA_BORD,]
+ else:
+ l_group_ma_bord= GROUP_MA_BORD
+ if type(GROUP_MA)==types.StringType :
+ l_group_ma=[GROUP_MA,]
+ else:
+ l_group_ma= GROUP_MA
+
+ if args.has_key('NOEUD'):
+ if type(args['NOEUD'])==types.StringType :
+ l_noeud=[args['NOEUD'],]
+ else:
+ l_noeud= args['NOEUD']
+
+ if len(l_group_ma)!=len(l_group_ma_bord):
+ ier=ier+1
+ self.cr.fatal("<F> <MACR_CARA_POUTRE> GROUP_MA et GROUP_MA_BORD incoherents")
+ return ier
+ if args.has_key('NOEUD') and (len(l_group_ma)!=len(l_noeud)):
+ ier=ier+1
+ self.cr.fatal("<F> <MACR_CARA_POUTRE> GROUP_MA et NOEUD incoherents")
+ return ier
+
+ for i in range(0,len(l_group_ma_bord)):
+
+# --- TRANSFORMATION DES GROUP_MA EN GROUP_NO SUR-LESQUELS
+# --- ON POURRA APPLIQUER DES CONDITIONS DE TEMPERATURE IMPOSEE :
+# ---------------------------------------------------------
+
+ __nomlma=DEFI_GROUP(reuse=__nomlma,
+ MAILLAGE=__nomlma,
+ CREA_GROUP_NO=_F(GROUP_MA=l_group_ma_bord[i],) )
+
+
+# --- CREATION D UN MAILLAGE IDENTIQUE AU PREMIER A CECI PRES
+# --- QUE LES COORDONNEES SONT EXPRIMEES DANS LE REPERE PRINCIPAL
+# --- D INERTIE DONT L ORIGINE EST LE CENTRE DE GRAVITE DE LA SECTION :
+# ---------------------------------------------------------------
+
+ __nomapi=CREA_MAILLAGE(MAILLAGE=__nomlma,
+ REPERE=_F(TABLE=nomres,
+ NOM_ORIG='CDG',
+ GROUP_MA=l_group_ma[i], ), )
+
+# --- AFFECTATION DU PHENOMENE 'THERMIQUE' AU MODELE EN VUE DE
+# --- LA CONSTRUCTION D UN OPERATEUR LAPLACIEN SUR CE MODELE :
+# ------------------------------------------------------
+
+ __nomoth=AFFE_MODELE(MAILLAGE=__nomapi,
+ AFFE=_F(GROUP_MA=l_group_ma[i],
+ PHENOMENE='THERMIQUE',
+ MODELISATION='PLAN', ) )
+
+# --- POUR LA CONSTRUCTION DU LAPLACIEN, ON DEFINIT UN
+# --- PSEUDO-MATERIAU DONT LES CARACTERISTIQUES THERMIQUES SONT :
+# --- LAMBDA = 1, RHO*CP = 0 :
+# ----------------------
+
+ __nomath=DEFI_MATERIAU(THER=_F(LAMBDA=1.0,
+ RHO_CP=0.0, ), )
+
+# --- DEFINITION D UN CHAM_MATER A PARTIR DU MATERIAU PRECEDENT :
+# ---------------------------------------------------------
+
+ __chmath=AFFE_MATERIAU(MAILLAGE=__nomapi,
+ AFFE=_F(TOUT='OUI',
+ MATER=__nomath ), )
+
+#
+# ------------------------------------------------------------
+# --- - CALCUL DE LA CONSTANTE DE TORSION PAR RESOLUTION -
+# --- - D UN LAPLACIEN AVEC UN TERME SOURCE EGAL A -2 -
+# --- - L INCONNUE ETANT NULLE SUR LE CONTOUR DE LA SECTION : -
+# --- - LAPLACIEN(PHI) = -2 DANS LA SECTION -
+# --- - PHI = 0 SUR LE CONTOUR : -
+# ------------------------------------------------------------
+#
+# --- ON IMPOSE LA VALEUR 0 A L INCONNUE SCALAIRE SUR LE CONTOUR
+# --- DE LA SECTION
+# --- ET ON A UN TERME SOURCE EGAL A -2 DANS TOUTE LA SECTION :
+# -------------------------------------------------------
+
+ __chart1=AFFE_CHAR_THER(MODELE=__nomoth,
+ TEMP_IMPO=_F(GROUP_NO=l_group_ma_bord[i],
+ TEMP=0.0 ),
+ SOURCE=_F(TOUT='OUI',
+ SOUR=2.0 ) )
+
+# --- RESOLUTION DE LAPLACIEN(PHI) = -2
+# --- AVEC PHI = 0 SUR LE CONTOUR :
+# ----------------------------------------
+
+ __tempe1=THER_LINEAIRE(MODELE=__nomoth,
+ CHAM_MATER=__chmath,
+ EXCIT=_F(CHARGE=__chart1, ),
+ SOLVEUR=_F(STOP_SINGULIER='NON',) )
+
+#
+# ----------------------------------------------
+# --- - CALCUL DU CENTRE DE TORSION/CISAILLEMENT -
+# --- - ET DES COEFFICIENTS DE CISAILLEMENT : -
+# ----------------------------------------------
+#
+# --- POUR LE CALCUL DES CONSTANTES DE CISAILLEMENT, ON VA DEFINIR
+# --- UN PREMIER TERME SOURCE, SECOND MEMBRE DE L EQUATION DE LAPLACE
+# --- PAR UNE FONCTION EGALE A Y :
+# --------------------------
+
+ __fnsec1=DEFI_FONCTION(NOM_PARA='X',
+ VALE=(0.,0.,10.,10.),
+ PROL_DROITE='LINEAIRE',
+ PROL_GAUCHE='LINEAIRE', )
+
+ __fnsec0=DEFI_CONSTANTE(VALE=0.,)
+
+# --- LE TERME SOURCE CONSTITUANT LE SECOND MEMBRE DE L EQUATION
+# --- DE LAPLACE EST PRIS EGAL A Y DANS TOUTE LA SECTION :
+# --------------------------------------------------
+
+ __chart2=AFFE_CHAR_THER_F(MODELE=__nomoth,
+ TEMP_IMPO=_F(NOEUD=l_noeud[i],
+ TEMP=__fnsec0),
+ SOURCE=_F(TOUT='OUI',
+ SOUR=__fnsec1) )
+
+# --- RESOLUTION DE LAPLACIEN(PHI) = -Y
+# --- AVEC D(PHI)/D(N) = 0 SUR LE CONTOUR :
+# ------------------------------------------------
+
+ __tempe2=THER_LINEAIRE(MODELE=__nomoth,
+ CHAM_MATER=__chmath,
+ EXCIT=_F(CHARGE=__chart2, ),
+ SOLVEUR=_F(STOP_SINGULIER='NON',) )
+
+# --- POUR LE CALCUL DES CONSTANTES DE CISAILLEMENT, ON VA DEFINIR
+# --- UN PREMIER TERME SOURCE, SECOND MEMBRE DE L EQUATION DE LAPLACE
+# --- PAR UNE FONCTION EGALE A Z :
+# --------------------------
+
+ __fnsec2=DEFI_FONCTION(NOM_PARA='Y',
+ VALE=(0.,0.,10.,10.),
+ PROL_DROITE='LINEAIRE',
+ PROL_GAUCHE='LINEAIRE', )
+
+# --- LE TERME SOURCE CONSTITUANT LE SECOND MEMBRE DE L EQUATION
+# --- DE LAPLACE EST PRIS EGAL A Z DANS TOUTE LA SECTION :
+# --------------------------------------------------
+
+ __chart3=AFFE_CHAR_THER_F(MODELE=__nomoth,
+ TEMP_IMPO=_F(NOEUD=l_noeud[i],
+ TEMP=__fnsec0),
+ SOURCE=_F(TOUT='OUI',
+ SOUR=__fnsec2) )
+
+# --- RESOLUTION DE LAPLACIEN(PHI) = -Z
+# --- AVEC D(PHI)/D(N) = 0 SUR LE CONTOUR :
+# ------------------------------------------------
+
+ __tempe3=THER_LINEAIRE(MODELE=__nomoth,
+ CHAM_MATER=__chmath,
+ EXCIT=_F(CHARGE=__chart3, ),
+ SOLVEUR=_F(STOP_SINGULIER='NON',) )
+
+# --- CALCUL DU RAYON DE TORSION :
+# --------------------------
+
+# CALCUL DU RAYON DE TORSION EXTERNE : rtext
+
+ __tempe1=CALC_ELEM(reuse=__tempe1,
+ RESULTAT=__tempe1,
+ MODELE=__nomoth,
+ CHAM_MATER=__chmath,
+ TOUT_ORDRE='OUI',
+ OPTION='FLUX_ELNO_TEMP',
+ )
+
+ __chem=INTE_MAIL_2D(MAILLAGE=__nomapi,
+ DEFI_CHEMIN=_F(GROUP_MA=l_group_ma_bord[i]),
+ INFO=2,)
+
+ __flun=POST_RELEVE_T(ACTION=_F(INTITULE='FLUX_NORM',
+ CHEMIN=__chem,
+ RESULTAT=__tempe1,
+ NOM_CHAM='FLUX_ELNO_TEMP',
+ TRAC_NOR='OUI',
+ NOM_CMP=('FLUX','FLUY'),
+ OPERATION='MOYENNE'))
+
+ __m1=abs(__flun['TRAC_NOR',3])
+ __m2=abs(__flun['TRAC_NOR',4])
+ __rtext=max(__m1,__m2)
+
+# CALCUL DU RAYON DE TORSION : rt
+# rt = max ( rtext , 2*AIRE(TROU)/L(TROU) )
+
+ if args.has_key('GROUP_MA_INTE'):
+ if args['GROUP_MA_INTE'] != None :
+ if type(args['GROUP_MA_INTE'])==types.StringType :
+ l_group_ma_inte=[args['GROUP_MA_INTE'],]
+ else:
+ l_group_ma_inte=args['GROUP_MA_INTE']
+ for j in range(0,len(l_group_ma_inte)):
+ __chem=INTE_MAIL_2D(MAILLAGE=__nomapi,
+ DEFI_CHEMIN=_F(GROUP_MA=l_group_ma_inte[j]),
+ INFO=2,)
+ __flun=POST_RELEVE_T(ACTION=_F(INTITULE='FLUX_NORM',
+ CHEMIN=__chem,
+ RESULTAT=__tempe1,
+ NOM_CHAM='FLUX_ELNO_TEMP',
+ TRAC_NOR='OUI',
+ NOM_CMP=('FLUX','FLUY'),
+ OPERATION='MOYENNE'))
+ __m1=(abs(__flun['TRAC_NOR',3])+abs(__flun['TRAC_NOR',4]))/2.
+ if __m1 > __rtext :
+ __rtext=__m1
+
+ __rt=__rtext
+
+# --- CALCUL DE LA CONSTANTE DE TORSION :
+# ---------------------------------
+
+ nomres=POST_ELEM(reuse=nomres,
+ MODELE=__nomoth,
+ CHAM_MATER=__chmath,
+ CARA_POUTRE=_F(CARA_GEOM=nomres,
+ LAPL_PHI=__tempe1,
+ RT=__rt,
+ GROUP_MA=l_group_ma[i],
+ OPTION='CARA_TORSION' ), )
+
+# --- CALCUL DES COEFFICIENTS DE CISAILLEMENT ET DES COORDONNEES DU
+# --- CENTRE DE CISAILLEMENT/TORSION :
+# ------------------------------
+
+ nomres=POST_ELEM(reuse=nomres,
+ MODELE=__nomoth,
+ CHAM_MATER=__chmath,
+ CARA_POUTRE=_F(CARA_GEOM=nomres,
+ LAPL_PHI_Y=__tempe2,
+ LAPL_PHI_Z=__tempe3,
+ GROUP_MA=l_group_ma[i],
+ LONGUEUR=args['LONGUEUR'],
+ MATERIAU=args['MATERIAU'],
+ LIAISON =args['LIAISON'],
+ OPTION='CARA_CISAILLEMENT' ), )
+ IMPR_TABLE(TABLE=nomres)
+
+ return ier
--- /dev/null
+#@ MODIF macr_ecla_pg_ops Macro DATE 09/11/2004 AUTEUR VABHHTS J.PELLET
+# -*- coding: iso-8859-1 -*-
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+
+########################################################################
+def macr_ecla_pg_ops(self,RESULTAT,MAILLAGE,RESU_INIT,MODELE_INIT,
+ TOUT, GROUP_MA, MAILLE,
+ SHRINK, TAILLE_MIN,
+ NOM_CHAM, TOUT_ORDRE, NUME_ORDRE, LIST_ORDRE, INST, LIST_INST, PRECISION, CRITERE,
+ **args):
+ """
+ Ecriture de la macro macr_ecla_pg
+ """
+ import os, string
+ from Accas import _F
+ from Noyau.N_utils import AsType
+ ier=0
+
+ # On importe les definitions des commandes a utiliser dans la macro
+ CREA_MAILLAGE =self.get_cmd('CREA_MAILLAGE')
+ CREA_RESU =self.get_cmd('CREA_RESU')
+
+
+ # La macro compte pour 1 dans la numerotation des commandes
+ self.set_icmd(1)
+
+
+ # Appel à CREA_MAILLAGE :
+ motscles={}
+ if TOUT : motscles['TOUT'] =TOUT
+ if GROUP_MA : motscles['GROUP_MA'] =GROUP_MA
+ if MAILLE : motscles['MAILLE'] =MAILLE
+
+ self.DeclareOut('ma2',MAILLAGE)
+ ma2=CREA_MAILLAGE(ECLA_PG=_F( MODELE = MODELE_INIT, NOM_CHAM=NOM_CHAM,
+ SHRINK = SHRINK, TAILLE_MIN=TAILLE_MIN, **motscles ));
+
+
+
+ # Appel à CREA_RESU :
+ typ2=AsType(RESU_INIT).__name__
+ if TOUT_ORDRE : motscles['TOUT_ORDRE'] =TOUT_ORDRE
+ if NUME_ORDRE : motscles['NUME_ORDRE'] =NUME_ORDRE
+ if LIST_ORDRE : motscles['LIST_ORDRE'] =LIST_ORDRE
+ if LIST_INST : motscles['LIST_INST'] =LIST_INST
+ if INST : motscles['INST'] =INST
+ if TOUT_ORDRE : motscles['TOUT_ORDRE'] =TOUT_ORDRE
+
+ self.DeclareOut('resu2',RESULTAT)
+ resu2=CREA_RESU( OPERATION='ECLA_PG', TYPE_RESU=string.upper(typ2),
+ ECLA_PG=_F( MODELE_INIT= MODELE_INIT, RESU_INIT=RESU_INIT, NOM_CHAM=NOM_CHAM,
+ MAILLAGE= ma2, **motscles ));
+ return ier
+############################################################################################
+
--- /dev/null
+#@ MODIF macr_fiab_impr_ops Macro DATE 24/01/2005 AUTEUR DURAND C.DURAND
+# -*- coding: iso-8859-1 -*-
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE GNICOLAS G.NICOLAS
+#
+def macr_fiab_impr_ops(self, INFO,
+ TABLE_CIBLE, NOM_PARA_CIBLE, GRADIENTS, **args):
+#
+#
+# 1. args est le dictionnaire des arguments
+# args.keys() est la liste des mots-clés
+# args.keys()[0] est la premiere valeur de cette liste
+# args.keys()[1:] est la liste des valeurs suivantes dans cette liste
+# args.keys(mot_cle) représente le contenu de la variable mot_cle dans la macro appelante.
+#
+ """ Macro-commande réalisant l'impression des valeurs pour le logiciel de fiabilite. """
+#
+# On charge les modules nécessaires
+ from Accas import _F
+#
+#____________________________________________________________________
+#
+# 1. Préalables
+#____________________________________________________________________
+#
+ erreur = 0
+#
+# 1.1 ==> La macro compte pour 1 dans l'exécution des commandes
+#
+ self.set_icmd(1)
+#
+# 1.2 ==> On importe les définitions des commandes Aster utilisées
+# dans la macro
+#
+ DEFI_FICHIER = self.get_cmd("DEFI_FICHIER")
+ IMPR_TABLE = self.get_cmd("IMPR_TABLE")
+#
+# 1.3. ==> Des constantes
+# Atention : le numéro d'unité utilisé ici et celui
+# utlisé dans le python d'échange lance_aster_5
+# doivent correspondre.
+#
+ Unite_Fichier_ASTER_vers_FIABILITE = 91
+ Nom_Symbolique_Fichier_ASTER_vers_FIABILITE = "ASTER_vers_FIABILITE"
+ FORMAT_R="1PE17.10"
+#____________________________________________________________________
+#
+# 2. Définition d'un fichier d'échange
+#____________________________________________________________________
+#
+ DEFI_FICHIER ( ACTION= "ASSOCIER",
+# FICHIER = Nom_Symbolique_Fichier_ASTER_vers_FIABILITE,
+ UNITE = Unite_Fichier_ASTER_vers_FIABILITE,
+ TYPE = "ASCII",
+ INFO = INFO )
+#____________________________________________________________________
+#
+# 4. Ecriture de la valeur cible
+#____________________________________________________________________
+#
+ IMPR_TABLE ( TABLE = TABLE_CIBLE,
+ NOM_PARA = NOM_PARA_CIBLE,
+ UNITE = Unite_Fichier_ASTER_vers_FIABILITE,
+ FORMAT_R = FORMAT_R,
+ INFO = INFO )
+#____________________________________________________________________
+#
+# 5. Ecritures des gradients
+#____________________________________________________________________
+#
+ if GRADIENTS is not None :
+#
+ for val in GRADIENTS :
+#
+ IMPR_TABLE ( TABLE = val["TABLE"],
+ SENSIBILITE = val["PARA_SENSI"],
+ NOM_PARA = (val["NOM_PARA"]),
+ UNITE = Unite_Fichier_ASTER_vers_FIABILITE,
+ FORMAT_R = FORMAT_R,
+ INFO = INFO )
+#____________________________________________________________________
+#
+# 6. Libération du fichier d'échange
+#____________________________________________________________________
+#
+ DEFI_FICHIER ( ACTION= "LIBERER",
+ UNITE = Unite_Fichier_ASTER_vers_FIABILITE,
+ INFO = INFO )
+#
+#--------------------------------------------------------------------
+# 7. C'est fini !
+#--------------------------------------------------------------------
+#
+ return erreur
--- /dev/null
+#@ MODIF macr_fiabilite_ops Macro DATE 14/09/2004 AUTEUR MCOURTOI M.COURTOIS
+# -*- coding: iso-8859-1 -*-
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+
+
+# RESPONSABLE GNICOLAS G.NICOLAS
+#
+def macr_fiabilite_ops(self, INFO,
+ LOGICIEL, VERSION,
+ UNITE_ESCL, MESS_ASTER,
+ SEUIL, SEUIL_TYPE,
+ VARIABLE,
+ **args ) :
+#
+# args est le dictionnaire des arguments optionnels
+# args.keys() est la liste des mots-clés
+# args.keys()[0] est la premiere valeur de cette liste
+# args.keys()[1:] est la liste des valeurs suivantes dans cette liste
+# args.keys(mot_cle) représente le contenu de la variable mot_cle dans la macro appelante.
+### print args
+### print args.keys()
+### if len (args.keys())>0 : print args.keys()[0]
+#
+ """ Macro-commande réalisant le pilotage du logiciel de fiabilite. """
+#
+# On charge les modules nécessaires
+ from Accas import _F
+ from Macro import fiabilite_mefisto
+ import aster
+ import os
+ import string
+ import sys
+ import Numeric
+#
+#____________________________________________________________________
+#
+# 1. Préalables
+#____________________________________________________________________
+#
+# 1.1 ==> La macro compte pour 1 dans l'exécution des commandes
+#
+ self.set_icmd(1)
+#
+# 1.2 ==> On importe les définitions des commandes Aster utilisées
+# dans la macro
+#
+ EXEC_LOGICIEL = self.get_cmd("EXEC_LOGICIEL")
+ DEFI_LIST_REEL = self.get_cmd("DEFI_LIST_REEL")
+#
+# 1.3 ==> Le nom du programme de fiabilite à lancer
+#
+ repertoire_outils = aster.repout()
+ fiabilite = repertoire_outils + "fiabilite"
+#
+# 1.4 ==> Initialisations
+#
+ erreur = 0
+ erreur_partiel = [0]
+ Rep_Calc_ASTER = os.getcwd()
+ Nom_Exec_ASTER = sys.executable
+#
+ messages_erreur = { 0 : "Tout va bien",
+ 1 : "Impossible de créer le répertoire de travail pour le logiciel de fiabilité.",
+ 2 : "Probleme d'ouverture du fichier.",
+ 10 : "Erreur dans le choix du logiciel de fiabilité.",
+ 11 : "Erreur dans la création des données pour le logiciel de fiabilité.",
+ 100 : "Erreur." }
+#
+ while not erreur :
+#
+#____________________________________________________________________
+#
+# 2. Répertoires et fichiers
+#____________________________________________________________________
+#
+# 2.1. ==> Création du répertoire pour l'exécution du logiciel de fiabilité
+#
+ Nom_Rep_local = "tmp_fiabilite"
+ Rep_Calc_LOGICIEL_local = os.path.join(".",Nom_Rep_local)
+ Rep_Calc_LOGICIEL_global = os.path.join(Rep_Calc_ASTER,Nom_Rep_local)
+#
+ try :
+ os.mkdir(Rep_Calc_LOGICIEL_global)
+ except os.error,erreur_partiel :
+ self.cr.warn("Code d'erreur de mkdir : " + str(erreur_partiel[0]) + " : " + erreur_partiel[1])
+ self.cr.fatal("Impossible de créer le répertoire de travail pour le logiciel de fiabilité : "+Rep_Calc_LOGICIEL_global)
+ erreur = erreur + 1
+ break
+#
+# 2.2. ==> On crée un fichier annexe pour transmettre des données à la procédure
+# de lancement des calculs ASTER par le LOGICIEL.
+# Ce fichier est créé dans le répertoire d'exécution du logiciel de fiabilité.
+# On fait ainsi car les arguments passés ont du mal à transiter via l'exécutable.
+# On stocke :
+# 1. Le niveau d'information
+# 2. L'unité logique associée au jeu de commandes déterministes
+# 3. La gestion des sorties ASTER
+# 4. Le nom de l'exécutable ASTER
+# 5. Le type de seuil du problème (maximum ou minimum)
+#
+ fic_Info_ASTER = os.path.join(Rep_Calc_LOGICIEL_global,"InfoExecASTER")
+ try :
+ f_execAster = open(fic_Info_ASTER, "w")
+ except os.error,erreur_partiel :
+ self.cr.warn("Fichier : "+fic_Info_ASTER)
+ self.cr.warn("Code d'erreur de open : " + str(erreur_partiel[0]) + " : " + erreur_partiel[1])
+ erreur = 2
+ break
+#
+ f_execAster.write(str(INFO)+"\n")
+ f_execAster.write(str(UNITE_ESCL)+"\n")
+ f_execAster.write(str(MESS_ASTER)+"\n")
+ f_execAster.write(str(Nom_Exec_ASTER)+"\n")
+ f_execAster.write(str(SEUIL_TYPE))
+ f_execAster.close()
+ fichier = open (fic_Info_ASTER,"r")
+#
+ if INFO >= 2 :
+ print "\nContenu du fichier " + fic_Info_ASTER," :"
+ les_lignes = fichier.readlines()
+ fichier.close()
+ print les_lignes, "\n"
+#
+#____________________________________________________________________
+#
+# 3. Les variables par defaut
+#____________________________________________________________________
+#
+# 3.1. ==> Dictionnaire des valeurs physiques et liées à la loi
+#
+ valeurs_lois = { }
+#
+ for m in VARIABLE :
+#
+ v_moy_physique = None
+ v_moy_loi = None
+ v_min_loi = None
+ v_max_loi = None
+ sigma_loi = None
+#
+# 3.1.1. ==> loi uniforme : transfert des min et max
+# on définit une moyennne comme étant la médiane des extremes.
+#
+ if m["LOI"] == "UNIFORME" :
+ v_moy_physique = 0.5 * ( m["VALE_MIN"] + m["VALE_MAX"] )
+ v_min_loi = m["VALE_MIN"]
+ v_max_loi = m["VALE_MAX"]
+#
+# 3.1.2. ==> loi normale : transfert des moyennne et écart-type.
+#
+ elif m["LOI"] == "NORMALE" :
+ v_moy_loi = m["VALE_MOY"]
+ v_moy_physique = v_moy_loi
+ sigma_loi = m["ECART_TYPE"]
+#
+# 3.1.3. ==> loi lognormale : identité du min, conversion pour le reste
+#
+ elif m["LOI"] == "LOGNORMALE" :
+ v_min_loi = m["VALE_MIN"]
+ if m["VALE_MOY_PHY"] is None :
+ v_moy_loi = m["VALE_MOY"]
+ sigma_loi = m["ECART_TYPE"]
+ aux = Numeric.exp(0.5*sigma_loi*sigma_loi+v_moy_loi)
+ v_moy_physique = v_min_loi + aux
+ else :
+ v_moy_physique = m["VALE_MOY_PHY"]
+ aux = m["ECART_TYPE_PHY"]/(m["VALE_MOY_PHY"]-m["VALE_MIN"])
+ aux1 = 1. + aux*aux
+ aux2 = Numeric.sqrt(aux1)
+ v_moy_loi = Numeric.log((m["VALE_MOY_PHY"]-m["VALE_MIN"])/aux2)
+ aux2 = Numeric.log(aux1)
+ sigma_loi = Numeric.sqrt(aux2)
+#
+# 3.1.4. ==> loi normale tronquée : transfert des moyenne, mini/maxi et écart-type
+# on définit une moyennne comme étant la médiane des extremes.
+#
+ else :
+ v_moy_loi = m["VALE_MOY"]
+ v_min_loi = m["VALE_MIN"]
+ v_max_loi = m["VALE_MAX"]
+ sigma_loi = m["ECART_TYPE"]
+ v_moy_physique = 0.5 * ( m["VALE_MIN"] + m["VALE_MAX"] )
+#
+ d = { }
+ d["v_moy_physique"] = v_moy_physique
+ d["v_moy_loi"] = v_moy_loi
+ d["v_min_loi"] = v_min_loi
+ d["v_max_loi"] = v_max_loi
+ d["sigma_loi"] = sigma_loi
+ valeurs_lois[m] = d
+#
+#____________________________________________________________________
+#
+# 4. Création des fichiers pour le logiciel de fiabilite
+#____________________________________________________________________
+#
+ if ( LOGICIEL == "MEFISTO" ) :
+#
+# 4.1. ==> MEFISTO
+#
+ erreur = fiabilite_mefisto.fiabilite_mefisto ( self, Rep_Calc_LOGICIEL_global,
+ INFO, VERSION,
+ SEUIL, SEUIL_TYPE,
+ VARIABLE,
+ valeurs_lois,
+ **args )
+#
+# 4.2. ==> Erreur si autre logiciel
+#
+ else :
+#
+ self.cr.warn("Logiciel de fiabilité : "+LOGICIEL)
+ erreur = 10
+#
+# 4.3. ==> Arret en cas d'erreur
+#
+ if erreur :
+ break
+#
+#____________________________________________________________________
+#
+# 5. Ecriture de la commande d"exécution du logiciel de fiabilité
+#
+# Remarque : dans la donnée de la version du logiciel de fiabilité, il faut remplacer
+# le _ de la donnée par un ., qui
+# est interdit dans la syntaxe du langage de commandes ASTER
+# Remarque : il faut remplacer le N majuscule de la donnee par
+# un n minuscule, qui est interdit dans la syntaxe du langage
+# de commandes ASTER
+#____________________________________________________________________
+#
+#
+ VERSION=string.replace(VERSION,"_",".")
+ VERSION=string.replace(VERSION,"N","n")
+#
+ EXEC_LOGICIEL ( ARGUMENT = (_F(NOM_PARA=Rep_Calc_LOGICIEL_global), # nom du repertoire
+ _F(NOM_PARA=LOGICIEL), # nom du logiciel de fiabilité
+ _F(NOM_PARA=VERSION), # version du logiciel de fiabilité
+ ),
+ LOGICIEL = fiabilite
+ )
+#
+#--------------------------------------------------------------------
+# 6. C'est fini !
+#--------------------------------------------------------------------
+#
+ break
+#
+# 6.1. ==> Arret en cas d'erreur
+#
+ if erreur :
+ if not messages_erreur.has_key(erreur) :
+ erreur = 100
+ self.cr.fatal(messages_erreur[erreur])
+#
+# 6.2. ==> Si tout va bien, on crée une liste de réels pour le retour
+# A terme, il serait intéressant d'y mettre les résultats
+# de l'analyse fiabiliste. Pour le moment, on se contente de
+# mettre une valeur nulle qui permet de faire un test dans
+# les commandes appelantes.
+#
+ aux = [float(erreur)]
+#
+ self.DeclareOut("nomres",self.sd)
+ nomres = DEFI_LIST_REEL( VALE = aux , INFO = 1 )
+#
+ return
+#
+########################## Fin de la fonction##################################
+#
+########################## Auto-test##################################
+#
+if __name__ == "__main__" :
+#
+ import os
+ import sys
+ import tempfile
+#
+ Rep_Calc_LOGICIEL_global = tempfile.mktemp()
+ os.mkdir(Rep_Calc_LOGICIEL_global)
+#
+ classe = None
+ INFO = 2
+ LOGICIEL = "MEFISTO"
+ VERSION = "V3_2"
+ UNITE_ESCL = 38
+ MESS_ASTER = "DERNIER"
+ SEUIL = 1789.
+ SEUIL_TYPE = "MAXIMUM"
+ VARIABLE = []
+ args = {}
+#
+ lr8 = macr_fiabilite_ops(classe, INFO,
+ LOGICIEL, VERSION,
+ UNITE_ESCL, MESS_ASTER,
+ SEUIL, SEUIL_TYPE,
+ VARIABLE,
+ **args )
+### print "lr8 = ", lr8
+ Liste = os.listdir(Rep_Calc_LOGICIEL_global)
+#
+ for nomfic in Liste :
+ fic_total = os.path.join(Rep_Calc_LOGICIEL_global,nomfic)
+ os.chmod (fic_total,0755)
+ os.remove (fic_total)
+ os.rmdir (Rep_Calc_LOGICIEL_global)
+#
+ sys.exit("blabla")
--- /dev/null
+#@ MODIF macr_lign_coupe_ops Macro DATE 05/07/2005 AUTEUR DURAND C.DURAND
+# -*- coding: iso-8859-1 -*-
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+
+
+
+########################################################################
+# script PYTHON de creation d un maillage de ligne de coupe
+
+def crea_mail_lig_coup(lignes):
+
+ import os,sys,copy
+
+ try:
+# construction du maillage au format Aster des segments de lignes de coupe
+
+ nblig=len(lignes)
+ dimension=len(lignes[0][0])
+
+ resu='TITRE\n'
+ titre='Maillage ligne de coupe'+'\n'
+ resu=resu+'FINSF\n'
+ resu=resu+'COOR_'+str(dimension)+'D\n'
+
+# creation des noeuds
+ nbno=0
+ for i in range(nblig):
+ pt1 = lignes[i][0]
+ pt2 = lignes[i][1]
+ nbp_lig_coupe = lignes[i][2]
+ for j in range(nbp_lig_coupe):
+ if dimension==2:
+ x=pt1[0]+j*(pt2[0]-pt1[0])/(nbp_lig_coupe-1)
+ y=pt1[1]+j*(pt2[1]-pt1[1])/(nbp_lig_coupe-1)
+ nbno=nbno+1
+ noeud=' N'+str(nbno)+' '+str(x)+' '+str(y)+'\n'
+ resu=resu+noeud
+ elif dimension==3:
+ x=pt1[0]+j*(pt2[0]-pt1[0])/(nbp_lig_coupe-1)
+ y=pt1[1]+j*(pt2[1]-pt1[1])/(nbp_lig_coupe-1)
+ z=pt1[2]+j*(pt2[2]-pt1[2])/(nbp_lig_coupe-1)
+ nbno=nbno+1
+ noeud=' N'+str(nbno)+' '+str(x)+' '+str(y)+' '+str(z)+'\n'
+ resu=resu+noeud
+ resu=resu+'FINSF\n'
+
+# creation des mailles
+ nbma=0
+ for i in range(nblig):
+ nbp_lig_coupe = lignes[i][2]
+ resu=resu+'SEG2\n'
+ for j in range(nbp_lig_coupe-1):
+ nbma=nbma+1
+ maille=' M'+str(nbma)+' N'+str(nbma+i)+' N'+str(nbma+1+i)+'\n'
+ resu=resu+maille
+ resu=resu+'FINSF\n'
+
+# creation des groupes de mailles (1 par ligne de coupe)
+ nbma=0
+ for i in range(nblig):
+ resu=resu+'GROUP_MA\n'
+ resu=resu+' LICOU'+str(i+1)
+ nbp_lig_coupe = lignes[i][2]
+ for j in range(nbp_lig_coupe-1):
+ nbma=nbma+1
+ resu=resu+' M'+str(nbma)+'\n'
+ resu=resu+'\n'
+ resu=resu+'FINSF\n'
+ resu=resu+'FIN\n'
+
+ return resu
+
+ except :
+ return 0
+
+########################################################################
+def macr_lign_coupe_ops(self,RESULTAT,UNITE_MAILLAGE,LIGN_COUPE,MODELE,
+ NOM_CHAM,**args):
+ """
+ Ecriture de la macro MACR_LIGN_COUPE
+ """
+ import os
+ from Accas import _F
+ from Noyau.N_utils import AsType
+ from Utilitai.UniteAster import UniteAster
+ ier=0
+
+ # On importe les definitions des commandes a utiliser dans la macro
+ LIRE_MAILLAGE =self.get_cmd('LIRE_MAILLAGE')
+ DEFI_GROUP =self.get_cmd('DEFI_GROUP')
+ AFFE_MODELE =self.get_cmd('AFFE_MODELE')
+ PROJ_CHAMP =self.get_cmd('PROJ_CHAMP')
+ POST_RELEVE_T =self.get_cmd('POST_RELEVE_T')
+
+ # La macro compte pour 1 dans la numerotation des commandes
+ self.set_icmd(1)
+
+ lignes=[]
+ for m in LIGN_COUPE :
+ lignes.append((m['COOR_ORIG'],m['COOR_EXTR'],m['NB_POINTS']))
+
+ # Création du maillage des NB_POINTS segments entre COOR_ORIG et COOR_EXTR
+ # par appel au script python crea_mail_lig_coup
+ # le maillage est ensuite recopié dans l unité logique UNITE_MAILLAGE
+
+ resu_mail=crea_mail_lig_coup(lignes)
+ UL = UniteAster()
+ nomFichierSortie = UL.Nom(UNITE_MAILLAGE)
+ fproc=open(nomFichierSortie,'w')
+ fproc.write(resu_mail)
+ fproc.close()
+ UL.EtatInit(UNITE_MAILLAGE)
+
+ # Lecture du maillage de seg2 contenant toutes les lignes de coupe
+
+ __macou=LIRE_MAILLAGE(UNITE=UNITE_MAILLAGE,);
+
+ motscles={}
+ iocc=1
+ motscles['CREA_GROUP_NO']=[]
+ for m in LIGN_COUPE :
+ motscles['CREA_GROUP_NO'].append(_F(GROUP_MA='LICOU'+str(iocc),) )
+ iocc=iocc+1
+ __macou=DEFI_GROUP( reuse =__macou , MAILLAGE=__macou , **motscles );
+
+ if AsType(RESULTAT).__name__ in ('evol_elas','evol_noli') :
+ __mocou=AFFE_MODELE(MAILLAGE=__macou,
+ AFFE=_F(TOUT='OUI',
+ PHENOMENE='MECANIQUE',
+ MODELISATION='BARRE',),);
+ elif AsType(RESULTAT).__name__ in ('evol_ther',) :
+ __mocou=AFFE_MODELE(MAILLAGE=__macou,
+ AFFE=_F(TOUT='OUI',
+ PHENOMENE='THERMIQUE',
+ MODELISATION='PLAN',),);
+
+ __recou=PROJ_CHAMP(METHODE='ELEM',
+ RESULTAT=RESULTAT,
+ MODELE_1=MODELE,
+ MODELE_2=__mocou,
+ NOM_CHAM=NOM_CHAM,);
+
+ # Production d'une table par ligne de coupe
+ # Toutes les tables sont des concepts sortant de la macro définies
+ # dans chaque occurence du mcfact lign_coupe
+
+ iocc=1
+ for m in LIGN_COUPE :
+ self.DeclareOut('tt',m['TABLE'])
+ tt=POST_RELEVE_T(ACTION=_F(INTITULE = 'lig.coupe'+str(iocc),
+ RESULTAT = __recou,
+ GROUP_NO = 'LICOU'+str(iocc),
+ NOM_CHAM = NOM_CHAM,
+ TOUT_CMP = 'OUI',
+ OPERATION = 'EXTRACTION', ),);
+ iocc=iocc+1
+
+ return ier
--- /dev/null
+#@ MODIF macr_recal_ops Macro DATE 05/07/2005 AUTEUR DURAND C.DURAND
+# -*- coding: iso-8859-1 -*-
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+
+
+
+def macr_recal_ops(self,UNITE_ESCL, RESU_EXP, POIDS, LIST_PARA, RESU_CALC,
+ ITER_MAXI, RESI_GLOB_RELA,UNITE_RESU,PARA_DIFF_FINI,
+ GRAPHIQUE, **args ):
+ """Macro commande réalisant le recalage de modèles Aster""",
+ # Initialisation du compteur d'erreurs
+ ier=0
+ # On essaie d'importer Numeric -> ERREUR FATALE
+ try:
+ import Numeric
+ except ImportError:
+ ier=ier+1
+ self.cr.fatal("<F> <MACR_RECAL> Le module Numeric de Python n'a pu etre chargé")
+ return ier
+ # On essaie d'importer Gnuplot -> PAS DE GRAPHIQUE
+ try:
+ import Gnuplot
+ gnuplot=1
+ except ImportError:
+ gnuplot=0
+ import string
+ import copy
+ import types
+ import Macro
+ from Cata import cata
+ from Cata.cata import DEFI_LIST_REEL
+ from Macro.recal import gestion,transforme_list_Num,EXTRACT,calcul_F,graphique
+ from Macro import reca_message
+ from Macro import reca_algo
+ from Macro import reca_interp
+ # La macro compte pour 1 dans l'execution des commandes
+ self.set_icmd(1)
+
+ self.DeclareOut('nomres',self.sd)
+
+ #_______________________________________________
+ #
+ # GESTION DE L'OPTION FACULTATIVE POUR LES POIDS
+ #_______________________________________________
+ if( POIDS == None):
+ POIDS=Numeric.ones(len(RESU_EXP))
+
+ #_____________________________________________
+ #
+ # GESTION DES ERREURS DE SYNTAXE
+ #_____________________________________________
+ texte_erreur = gestion(UNITE_ESCL,LIST_PARA,RESU_CALC,RESU_EXP,POIDS,GRAPHIQUE,UNITE_RESU)
+ if (texte_erreur != ""):
+ ier=ier+1
+ texte_erreur='<F> <MACR_RECAL>'+texte_erreur
+ self.cr.fatal(texte_erreur)
+ return ier
+
+ #_____________________________________________
+ #
+ # DECLARATION DE TOUTES LES COMMANDES ASTER
+ #_____________________________________________
+ for k,v in cata.__dict__.items() :
+ if type(v)==types.InstanceType:
+ if v.__class__.__name__ in ('OPER','MACRO'):
+ self.current_context[k]= v
+ self.current_context['_F']=cata.__dict__['_F']
+ self.g_context['EXTRACT']=EXTRACT
+
+ #_____________________________________________
+ #
+ # INITIALISATIONS
+ #_____________________________________________
+ iter = 0
+ restant,temps_iter=0.,0.
+ restant,temps_iter,err=reca_algo.temps_CPU(self,restant,temps_iter)
+ para,val,borne_inf,borne_sup = transforme_list_Num(LIST_PARA,RESU_EXP)
+ val_init = copy.copy(val)
+ L_init = calcul_F(self,UNITE_ESCL,para,val,RESU_CALC)
+ #instance de la classe gérant l'affichage des resultats du calcul de l'optimisation
+ Mess = reca_message.Message(para,RESU_EXP,copy.copy(val_init),UNITE_RESU)
+ #instances des classes pour le calcul de l'erreur et le dimensionnemnt/adim
+ Simul = reca_interp.Sim_exp(RESU_EXP,POIDS)
+ Dim = reca_algo.Dimension(copy.copy(val_init),para)
+ L_J_init,erreur = Simul.multi_interpole(L_init, RESU_CALC)
+ J_init = Simul.norme_J(copy.copy(L_J_init),copy.copy(L_J_init),UNITE_RESU)
+ J = J_init
+ A = Simul.sensibilite(self,UNITE_ESCL,L_init,val,para,RESU_CALC,PARA_DIFF_FINI,UNITE_RESU)
+ A = Dim.adim_sensi(A)
+ l = reca_algo.lambda_init(Numeric.matrixmultiply(Numeric.transpose(A),A))
+ gradient_init =reca_algo.calcul_gradient(A,erreur) #utile pour le test de convergence, on prend les valeurs dimensionnées
+ residu = reca_algo.test_convergence(gradient_init,erreur,A,Numeric.zeros(len(gradient_init),Numeric.Float))
+ Mess.affiche_result_iter(iter,J,val,residu,Numeric.array([]),UNITE_RESU)
+ # On teste un manque de temps CPU
+ restant,temps_iter,err=reca_algo.temps_CPU(self,restant,temps_iter)
+ if (err==1):
+ ier=ier+1
+ return ier
+
+ #_____________________________________________
+ #
+ # BOUCLE PRINCIPALE DE L'ALGORITHME
+ #_____________________________________________
+ epsilon = 10.*RESI_GLOB_RELA
+ while((residu > RESI_GLOB_RELA) & (iter<ITER_MAXI)):
+ iter = iter +1
+ new_val, s, l, Act = reca_algo.Levenberg_bornes(self,val,Dim,val_init,borne_inf,borne_sup,A,erreur,l,UNITE_RESU)
+ L_F = calcul_F(self,UNITE_ESCL,para,new_val,RESU_CALC)
+ new_L_J,new_erreur = Simul.multi_interpole(L_F, RESU_CALC)
+ new_J = Simul.norme_J(L_J_init,new_L_J,UNITE_RESU)
+ l = reca_algo.actualise_lambda(l,Dim.adim(val),Dim.adim(new_val),A,erreur,new_J,J)
+ val = copy.copy(new_val)
+ erreur = copy.copy(new_erreur)
+ J = new_J
+ A = Simul.sensibilite(self,UNITE_ESCL,L_F,val,para,RESU_CALC,PARA_DIFF_FINI,UNITE_RESU)
+ A = Dim.adim_sensi(A)
+ residu = reca_algo.test_convergence(gradient_init,erreur,A,s)
+ Mess.affiche_result_iter(iter,J,val,residu,Act,UNITE_RESU)
+ if (gnuplot):
+ if (GRAPHIQUE):
+ GRAPHE_UL_OUT=GRAPHIQUE['UNITE']
+ interactif=(GRAPHIQUE['INTERACTIF']=='OUI')
+ graphique(L_F,RESU_EXP,RESU_CALC,iter,GRAPHE_UL_OUT,interactif)
+ # On teste un manque de temps CPU
+ restant,temps_iter,err=reca_algo.temps_CPU(self,restant,temps_iter)
+ if (err==1):
+ ier=ier+1
+ return ier
+ #_____________________________________________
+ #
+ # FIN DES ITERATIONS
+ # CONVERGENCE OU ECHEC
+ #_____________________________________________
+ Mess.affiche_etat_final_convergence(iter,ITER_MAXI,RESI_GLOB_RELA,residu,Act,UNITE_RESU)
+ reca_algo.calcul_etat_final(para,A,iter,ITER_MAXI,RESI_GLOB_RELA,residu,Mess,UNITE_RESU)
+ #_____________________________________________
+ #
+ # CREATIONS DE LA LISTE DE REELS CONTENANT
+ # LES VALEURS DES PARAMETRES A CONVERGENCE
+ #_____________________________________________
+ lival=[]
+ for i in range(len(val)):
+ lival.append(val[i])
+ nomres=DEFI_LIST_REEL(VALE=lival)
+ return
--- /dev/null
+#@ MODIF macro_elas_mult_ops Macro DATE 05/07/2005 AUTEUR DURAND C.DURAND
+# -*- coding: iso-8859-1 -*-
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+
+
+
+def macro_elas_mult_ops(self,MODELE,CHAM_MATER,CARA_ELEM,NUME_DDL,
+ CHAR_MECA_GLOBAL,CHAR_CINE_GLOBAL,LIAISON_DISCRET,
+ CAS_CHARGE,SOLVEUR,**args):
+ """
+ Ecriture de la macro MACRO_ELAS_MULT
+ """
+ ier=0
+ import types
+ from Accas import _F
+
+ # On met le mot cle NUME_DDL dans une variable locale pour le proteger
+ numeddl=NUME_DDL
+ # On importe les definitions des commandes a utiliser dans la macro
+ CALC_MATR_ELEM =self.get_cmd('CALC_MATR_ELEM')
+ NUME_DDL =self.get_cmd('NUME_DDL')
+ ASSE_MATRICE =self.get_cmd('ASSE_MATRICE')
+ FACT_LDLT =self.get_cmd('FACT_LDLT')
+ CALC_VECT_ELEM =self.get_cmd('CALC_VECT_ELEM')
+ ASSE_VECTEUR =self.get_cmd('ASSE_VECTEUR')
+ RESO_LDLT =self.get_cmd('RESO_LDLT')
+ CREA_RESU =self.get_cmd('CREA_RESU')
+ CALC_ELEM =self.get_cmd('CALC_ELEM')
+ CALC_NO =self.get_cmd('CALC_NO')
+ # La macro compte pour 1 dans la numerotation des commandes
+ self.set_icmd(1)
+
+ # Le concept sortant (de type mult_elas ou fourier_elas) est nommé
+ # 'nomres' dans le contexte de la macro
+
+ self.DeclareOut('nomres',self.sd)
+
+ ielas = 0
+ ifour = 0
+ for m in CAS_CHARGE:
+ if m['NOM_CAS']:
+ ielas=1 # mot clé NOM_CAS présent sous CAS_CHARGE
+ tyresu = 'MULT_ELAS'
+ else:
+ ifour=1 # mot clé MODE_FOURIER présent sous CAS_CHARGE
+ tyresu = 'FOURIER_ELAS'
+ if ielas==1 and ifour==1:
+ ier=ier+1
+ self.cr.fatal("""<F> <MACRO_ELAS_MULT> On ne peut avoir a la fois NOM_CAS et MODE_FOURIER""")
+ return ier
+
+ if (numeddl in self.sdprods) or (numeddl==None):
+ # Si le concept numeddl est dans self.sdprods ou n est pas nommé
+ # il doit etre produit par la macro
+ # il faudra donc appeler la commande NUME_DDL
+ lnume = 1
+ else:
+ lnume = 0
+
+ if ielas==1 :
+ motscles={}
+ if CHAR_MECA_GLOBAL: motscles['CHARGE'] =CHAR_MECA_GLOBAL
+ elif CHAR_CINE_GLOBAL: motscles['CHARGE'] =CHAR_CINE_GLOBAL
+ if CHAM_MATER : motscles['CHAM_MATER']=CHAM_MATER
+ if CARA_ELEM : motscles['CARA_ELEM'] =CARA_ELEM
+ __nomrig=CALC_MATR_ELEM(OPTION='RIGI_MECA',MODELE=MODELE,**motscles)
+
+ if lnume:
+ # On peut passer des mots cles egaux a None. Ils sont ignores
+ motscles={}
+ if SOLVEUR:
+ motscles['METHODE'] =SOLVEUR['METHODE']
+ motscles['RENUM'] =SOLVEUR['RENUM']
+ else:
+ motscles['METHODE'] ='MULT_FRONT'
+ motscles['RENUM'] ='METIS'
+ if numeddl!=None:
+ self.DeclareOut('num',numeddl)
+ num=NUME_DDL(MATR_RIGI=__nomrig,**motscles)
+ else:
+ _num=NUME_DDL(MATR_RIGI=__nomrig,**motscles)
+ num=_num
+ else:
+ num=numeddl
+
+ __nomras=ASSE_MATRICE(MATR_ELEM=__nomrig,NUME_DDL=num)
+
+ __nomraf=FACT_LDLT(MATR_ASSE=__nomras,NPREC=SOLVEUR['NPREC'],STOP_SINGULIER=SOLVEUR['STOP_SINGULIER'])
+
+#####################################################################
+# boucle sur les items de CAS_CHARGE
+
+ nomchn=[]
+ iocc=0
+ for m in CAS_CHARGE:
+ iocc=iocc+1
+
+ if ifour:
+ motscles={}
+ if CHAR_MECA_GLOBAL: motscles['CHARGE'] =CHAR_MECA_GLOBAL
+ elif CHAR_CINE_GLOBAL: motscles['CHARGE'] =CHAR_CINE_GLOBAL
+ if CHAM_MATER : motscles['CHAM_MATER'] =CHAM_MATER
+ if CARA_ELEM : motscles['CARA_ELEM'] =CARA_ELEM
+ motscles['MODE_FOURIER'] =m['MODE_FOURIER']
+ __nomrig=CALC_MATR_ELEM(OPTION='RIGI_MECA',MODELE=MODELE,**motscles)
+
+ if lnume:
+ _num=NUME_DDL(MATR_RIGI=__nomrig,METHODE=SOLVEUR['METHODE'],RENUM=SOLVEUR['RENUM'])
+ num=_num
+ lnume=0
+
+ __nomras=ASSE_MATRICE(MATR_ELEM=__nomrig,NUME_DDL=num)
+
+ __nomraf=FACT_LDLT(MATR_ASSE=__nomras,NPREC=SOLVEUR['NPREC'],STOP_SINGULIER=SOLVEUR['STOP_SINGULIER'])
+
+
+ if m['VECT_ASSE']==None :
+ motscles={}
+ if CHAM_MATER : motscles['CHAM_MATER'] =CHAM_MATER
+ if CARA_ELEM : motscles['CARA_ELEM'] =CARA_ELEM
+ if ifour : motscles['MODE_FOURIER'] =m['MODE_FOURIER']
+ if m['CHAR_MECA'] : motscles['CHARGE'] =m['CHAR_MECA']
+ elif m['CHAR_CINE'] : motscles['CHARGE'] =m['CHAR_CINE']
+ __nomvel=CALC_VECT_ELEM(OPTION='CHAR_MECA',**motscles)
+ __nomasv=ASSE_VECTEUR(VECT_ELEM=__nomvel,NUME_DDL=num)
+ else :
+ __nomasv=m['VECT_ASSE']
+
+
+ __nomchn=RESO_LDLT(MATR_FACT=__nomraf,CHAM_NO=__nomasv,TITRE=m['SOUS_TITRE'])
+ nomchn.append(__nomchn)
+
+# fin de la boucle sur les items de CAS_CHARGE
+#####################################################################
+
+ motscles={}
+ iocc=0
+ motscle2={}
+ if CHAM_MATER : motscle2['CHAM_MATER']=CHAM_MATER
+ if CARA_ELEM : motscle2['CARA_ELEM']=CARA_ELEM
+ if CHAM_MATER or CARA_ELEM :
+ if ielas :
+ motscles['AFFE']=[]
+ for m in CAS_CHARGE:
+ motscles['AFFE'].append(_F(MODELE=MODELE,
+ CHAM_GD=nomchn[iocc],
+ NOM_CAS=m['NOM_CAS'],
+ **motscle2) )
+ iocc=iocc+1
+ else :
+ motscles['AFFE']=[]
+ for m in CAS_CHARGE:
+ motscles['AFFE'].append(_F(MODELE=MODELE,
+ CHAM_GD=nomchn[iocc],
+ NUME_MODE=m['MODE_FOURIER'],
+ TYPE_MODE=m['TYPE_MODE'],
+ **motscle2) )
+ iocc=iocc+1
+ else:
+ if ielas :
+ motscles['AFFE']=[]
+ for m in CAS_CHARGE:
+ motscles['AFFE'].append(_F(MODELE=MODELE,
+ CHAM_GD=nomchn[iocc],
+ NOM_CAS=m['NOM_CAS'],) )
+ iocc=iocc+1
+ else :
+ motscles['AFFE']=[]
+ for m in CAS_CHARGE:
+ motscles['AFFE'].append(_F(MODELE=MODELE,
+ CHAM_GD=nomchn[iocc],
+ NUME_MODE=m['MODE_FOURIER'],
+ TYPE_MODE=m['TYPE_MODE'],) )
+ iocc=iocc+1
+
+
+ nomres=CREA_RESU(OPERATION='AFFE',TYPE_RESU=tyresu,NOM_CHAM='DEPL',**motscles)
+
+#####################################################################
+# boucle sur les items de CAS_CHARGE pour CALC_ELEM ete CALC_NO
+
+ iocc=0
+ for m in CAS_CHARGE:
+ iocc=iocc+1
+
+ if m['OPTION']:
+ nbel=0
+ nbno=0
+ liste_el=[]
+ liste_no=[]
+ if type(m['OPTION'])==types.StringType:
+ if m['OPTION'] in ('FORC_NODA','REAC_NODA',
+ 'EPSI_NOEU_DEPL','SIGM_NOEU_DEPL','EFGE_NOEU_DEPL',
+ 'EQUI_NOEU_SIGM','EQUI_NOEU_EPSI','FLUX_NOEU_TEMP',):
+ nbno=nbno+1
+ liste_no.append(m['OPTION'])
+ else:
+ nbel=nbel+1
+ liste_el.append(m['OPTION'])
+ else:
+ for opt in m['OPTION']:
+ if opt in ('FORC_NODA','REAC_NODA',
+ 'EPSI_NOEU_DEPL','SIGM_NOEU_DEPL','EFGE_NOEU_DEPL',
+ 'EQUI_NOEU_SIGM','EQUI_NOEU_EPSI','FLUX_NOEU_TEMP',):
+ nbno=nbno+1
+ liste_no.append(opt)
+ else:
+ nbel=nbel+1
+ liste_el.append(opt)
+
+ lreac=0
+ if nbel:
+ motscles={}
+ if CHAM_MATER : motscles['CHAM_MATER'] =CHAM_MATER
+ if CARA_ELEM : motscles['CARA_ELEM'] =CARA_ELEM
+ if ielas:
+ motscles['NOM_CAS']=m['NOM_CAS']
+ else:
+ motscles['NUME_MODE']=m['MODE_FOURIER']
+ motscles['EXCIT']=[]
+ if m['CHAR_MECA'] :
+ for chargt in m['CHAR_MECA'] : motscles['EXCIT'].append(_F(CHARGE=chargt))
+ elif m['CHAR_CINE'] :
+ for chargt in m['CHAR_CINE'] : motscles['EXCIT'].append(_F(CHARGE=chargt))
+ if CHAR_MECA_GLOBAL: motscles['EXCIT'].append(_F(CHARGE=CHAR_MECA_GLOBAL))
+ elif CHAR_CINE_GLOBAL: motscles['EXCIT'].append(_F(CHARGE=CHAR_CINE_GLOBAL))
+ CALC_ELEM(reuse=nomres,
+ RESULTAT=nomres,
+ MODELE=MODELE,
+ NIVE_COUCHE=m['NIVE_COUCHE'],
+ NUME_COUCHE=m['NUME_COUCHE'],
+ OPTION=tuple(liste_el),
+ **motscles)
+ if nbno:
+ motscles={}
+ if CHAM_MATER : motscles['CHAM_MATER'] =CHAM_MATER
+ if CARA_ELEM : motscles['CARA_ELEM'] =CARA_ELEM
+ if ielas:
+ motscles['NOM_CAS']=m['NOM_CAS']
+ else:
+ motscles['NUME_MODE']=m['MODE_FOURIER']
+ motscles['EXCIT']=[]
+ if m['CHAR_MECA'] :
+ for chargt in m['CHAR_MECA'] : motscles['EXCIT'].append(_F(CHARGE=chargt))
+ elif m['CHAR_CINE'] :
+ for chargt in m['CHAR_CINE'] : motscles['EXCIT'].append(_F(CHARGE=chargt))
+ if CHAR_MECA_GLOBAL: motscles['EXCIT'].append(_F(CHARGE=CHAR_MECA_GLOBAL))
+ elif CHAR_CINE_GLOBAL: motscles['EXCIT'].append(_F(CHARGE=CHAR_CINE_GLOBAL))
+ CALC_NO(reuse=nomres,
+ RESULTAT=nomres,
+ MODELE=MODELE,
+ OPTION=tuple(liste_no),
+ **motscles)
+
+# fin de la boucle sur les items de CAS_CHARGE
+#####################################################################
+ return ier
+
--- /dev/null
+#@ MODIF macro_matr_ajou_ops Macro DATE 14/09/2004 AUTEUR MCOURTOI M.COURTOIS
+# -*- coding: iso-8859-1 -*-
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+
+
+def macro_matr_ajou_ops(self,MAILLAGE,GROUP_MA_FLUIDE,GROUP_MA_INTERF,MODELISATION,MODE_MECA,DEPL_IMPO,
+ NUME_DDL_GENE,MODELE_GENE,MATR_MASS_AJOU,MATR_AMOR_AJOU,MATR_RIGI_AJOU,
+ NOEUD_DOUBLE,FLUIDE,DDL_IMPO,DIST_REFE,SOLVEUR,INFO,AVEC_MODE_STAT,
+ MODE_STAT,MONO_APPUI,
+ FORC_AJOU,ECOULEMENT,**args):
+ """
+ Ecriture de la macro MACRO_MATR_AJOU
+ """
+ from Accas import _F
+ import types
+ ier=0
+
+ # On importe les definitions des commandes a utiliser dans la macro
+ DEFI_MATERIAU =self.get_cmd('DEFI_MATERIAU')
+ AFFE_MATERIAU =self.get_cmd('AFFE_MATERIAU')
+ AFFE_MODELE =self.get_cmd('AFFE_MODELE')
+ AFFE_CHAR_THER =self.get_cmd('AFFE_CHAR_THER')
+ CALC_MATR_AJOU =self.get_cmd('CALC_MATR_AJOU')
+ THER_LINEAIRE =self.get_cmd('THER_LINEAIRE')
+ CALC_FORC_AJOU =self.get_cmd('CALC_FORC_AJOU')
+
+ # La macro compte pour 1 dans la numerotation des commandes
+ self.set_icmd(1)
+
+ if len(FLUIDE)==1 :
+ print '<I> <MACRO_MATR_AJOU> tout le domaine fluide specifie dans GROUP_MA_INTERF et GROUP_MA_FLUIDE'
+ print ' sera affecte par la masse volumique RHO = ',FLUIDE['RHO']
+ if FLUIDE['GROUP_MA']!=None :
+ print '<I> <MACRO_MATR_AJOU> cas fluide simple : le group_ma dans lequel vous affectez la masse'
+ print 'volumique RHO doit etre la reunion de GROUP_MA_INTERF et GROUP_MA_FLUIDE.'
+ else :
+ for flu in FLUIDE :
+ if flu['GROUP_MA']==None :
+ self.cr.fatal("<F> <MACRO_MATR_AJOU> cas fluides multiples : precisez le GROUP_MA dans lequel vous affectez la masse volumique RHO.")
+ ier=ier+1
+ return ier
+
+ IOCFLU=len(FLUIDE)
+
+# ---------------------------------------------------------------
+# definition du materiau fluide par caracteristique
+# thermique equivalente
+
+# CAS FLUIDE SIMPLE
+ if IOCFLU==1 :
+ __NOMMAT=DEFI_MATERIAU( THER = _F( LAMBDA = 1.0,
+ RHO_CP = FLUIDE[0]['RHO']))
+ __NOMCMA=AFFE_MATERIAU( MAILLAGE = MAILLAGE,
+ AFFE = _F( GROUP_MA = (GROUP_MA_FLUIDE,GROUP_MA_INTERF),
+ MATER = __NOMMAT), )
+
+# ---------------------------------------------------------------
+# cas fluides multiples
+ else :
+ affmat=[]
+ for flu in FLUIDE:
+ __NOMMAT=DEFI_MATERIAU( THER = _F( LAMBDA = 1.0,
+ RHO_CP = flu['RHO']))
+ mfact=_F(GROUP_MA=flu['GROUP_MA'],MATER=__NOMMAT)
+ affmat.append(mfact)
+
+ __NOMCMA=AFFE_MATERIAU( MAILLAGE = MAILLAGE,
+ AFFE = affmat )
+
+# ---------------------------------------------------------------
+# commande AFFE_MODELE modele fluide
+ __NOMFLU=AFFE_MODELE( MAILLAGE = MAILLAGE,
+ AFFE = _F( GROUP_MA = (GROUP_MA_FLUIDE,GROUP_MA_INTERF),
+ MODELISATION = MODELISATION,
+ PHENOMENE = 'THERMIQUE' ), )
+
+# ---------------------------------------------------------------
+# commande AFFE_MODELE modele interface
+ __NOMINT=AFFE_MODELE( MAILLAGE = MAILLAGE,
+ AFFE = _F( GROUP_MA = GROUP_MA_INTERF,
+ MODELISATION = MODELISATION,
+ PHENOMENE = 'THERMIQUE' ), )
+
+# ---------------------------------------------------------------
+# commande AFFE_CHAR_THER condition de pression imposee
+# en un point ou un groupe du fluide
+ affimp=[]
+ nflui=0
+ for DDL in DDL_IMPO :
+ if DDL['PRES_FLUIDE']!=None :
+ nflui=nflui+1
+ if DDL['NOEUD'] !=None : mfact=_F(NOEUD =DDL['NOEUD'], TEMP=DDL['PRES_FLUIDE'])
+ if DDL['GROUP_NO']!=None : mfact=_F(GROUP_NO=DDL['GROUP_NO'],TEMP=DDL['PRES_FLUIDE'])
+ affimp.append(mfact)
+ if nflui==0:
+ self.cr.fatal("<F> <MACRO_MATR_AJOU> PRES_FLUIDE obligatoire une fois")
+ ier=ier+1
+ return ier
+
+ __CHARGE=AFFE_CHAR_THER( MODELE = __NOMFLU,
+ TEMP_IMPO = affimp )
+
+# ---------------------------------------------------------------
+# calcul des masses, rigidites et amortissements ajoutes en theorie
+# potentielle
+# commande CALC_MATR_AJOU, calcul de la masse ajoutee
+
+ if MATR_MASS_AJOU!=None :
+ self.DeclareOut('MASSAJ',MATR_MASS_AJOU)
+ solveur=SOLVEUR[0].cree_dict_valeurs(SOLVEUR[0].mc_liste)
+ mostcles={}
+ if NUME_DDL_GENE!=None : mostcles['NUME_DDL_GENE'] =NUME_DDL_GENE
+ if INFO !=None : mostcles['INFO'] =INFO
+ if MODE_MECA !=None : mostcles['MODE_MECA'] =MODE_MECA
+ elif DEPL_IMPO !=None : mostcles['CHAM_NO'] =DEPL_IMPO
+ elif MODELE_GENE !=None :
+ mostcles['MODELE_GENE'] =MODELE_GENE
+ mostcles['AVEC_MODE_STAT']=AVEC_MODE_STAT
+ mostcles['DIST_REFE'] =DIST_REFE
+ if NOEUD_DOUBLE !=None : mostcles['NOEUD_DOUBLE'] =NOEUD_DOUBLE
+
+ MASSAJ = CALC_MATR_AJOU(MODELE_FLUIDE = __NOMFLU,
+ MODELE_INTERFACE = __NOMINT,
+ CHARGE = __CHARGE,
+ CHAM_MATER = __NOMCMA,
+ OPTION = 'MASS_AJOU',
+ SOLVEUR = solveur,
+ **mostcles)
+
+# ---------------------------------------------------------------
+# calcul de l amortissement ajoute
+ if (MATR_AMOR_AJOU!=None ) or (MATR_RIGI_AJOU!=None ):
+
+# ---------------------------------------------------------------
+# on definit un nouveau modele fluide pour calculer
+# le potentiel stationnaire - AFFE_MODELE
+ grma=[GROUP_MA_FLUIDE,]
+ if ECOULEMENT!=None :
+ grma.append(ECOULEMENT['GROUP_MA_1'])
+ grma.append(ECOULEMENT['GROUP_MA_2'])
+ __NOFLUI=AFFE_MODELE( MAILLAGE = MAILLAGE,
+ AFFE = _F( GROUP_MA = grma,
+ MODELISATION = MODELISATION,
+ PHENOMENE = 'THERMIQUE' ), )
+ affimp=[]
+ for DDL in DDL_IMPO :
+ if DDL['PRES_SORTIE']!=None :
+ if DDL['NOEUD'] !=None : mfact=_F(NOEUD =DDL['NOEUD'], TEMP=DDL['PRES_SORTIE'])
+ if DDL['GROUP_NO']!=None : mfact=_F(GROUP_NO=DDL['GROUP_NO'],TEMP=DDL['PRES_SORTIE'])
+ affimp.append(mfact)
+
+ affecl=[]
+ for ECL in ECOULEMENT :
+ mfact=_F(GROUP_MA=ECL['GROUP_MA_1'],FLUN=ECL['VNOR_1'])
+ affecl.append(mfact)
+ mfact=_F(GROUP_MA=ECL['GROUP_MA_2'],FLUN=ECL['VNOR_2'])
+ affecl.append(mfact)
+ __CHARG2=AFFE_CHAR_THER( MODELE = __NOFLUI,
+ TEMP_IMPO = affimp ,
+ FLUX_REP = affecl )
+
+ __POTEN = THER_LINEAIRE( MODELE = __NOFLUI,
+ CHAM_MATER = __NOMCMA ,
+ EXCIT = _F( CHARGE = __CHARG2 ) )
+
+# ---------------------------------------------------------------
+# calcul amortissement proprement dit
+ if MATR_AMOR_AJOU!=None :
+ self.DeclareOut('AMORAJ',MATR_AMOR_AJOU)
+ solveur=SOLVEUR[0].cree_dict_valeurs(SOLVEUR[0].mc_liste)
+ mostcles={}
+ if NUME_DDL_GENE!=None : mostcles['NUME_DDL_GENE'] =NUME_DDL_GENE
+ if INFO !=None : mostcles['INFO'] =INFO
+ if MODE_MECA !=None : mostcles['MODE_MECA'] =MODE_MECA
+ elif DEPL_IMPO !=None : mostcles['CHAM_NO'] =DEPL_IMPO
+ else :
+ self.cr.fatal("<F> <MACRO_MATR_AJOU> amortissement ajoute sur modele generalise non encore implante")
+ ier=ier+1
+ return ier
+
+ AMORAJ = CALC_MATR_AJOU(MODELE_FLUIDE = __NOMFLU,
+ MODELE_INTERFACE = __NOMINT,
+ CHARGE = __CHARGE,
+ CHAM_MATER = __NOMCMA,
+ OPTION = 'AMOR_AJOU',
+ SOLVEUR = solveur,
+ POTENTIEL = __POTEN,
+ **mostcles)
+
+# ---------------------------------------------------------------
+# calcul de la rigidite ajoutee
+ if MATR_RIGI_AJOU!=None :
+ self.DeclareOut('RIGIAJ',MATR_RIGI_AJOU)
+ solveur=SOLVEUR[0].cree_dict_valeurs(SOLVEUR[0].mc_liste)
+ mostcles={}
+ if NUME_DDL_GENE!=None : mostcles['NUME_DDL_GENE'] =NUME_DDL_GENE
+ if INFO !=None : mostcles['INFO'] =INFO
+ if MODE_MECA !=None : mostcles['MODE_MECA'] =MODE_MECA
+ elif DEPL_IMPO !=None : mostcles['CHAM_NO'] =DEPL_IMPO
+ else :
+ self.cr.fatal("<F> <MACRO_MATR_AJOU> rigidite ajoutee sur modele generalise non encore implante")
+ ier=ier+1
+ return ier
+
+ RIGIAJ = CALC_MATR_AJOU(MODELE_FLUIDE = __NOMFLU,
+ MODELE_INTERFACE = __NOMINT,
+ CHARGE = __CHARGE,
+ CHAM_MATER = __NOMCMA,
+ OPTION = 'RIGI_AJOU',
+ SOLVEUR = solveur,
+ POTENTIEL = __POTEN,
+ **mostcles)
+
+# ---------------------------------------------------------------
+# boucle sur le nombre de vecteurs a projeter, commande CALC_FORC_AJOU
+ if FORC_AJOU!=None :
+ for FORCAJ in FORC_AJOU:
+ self.DeclareOut('VECTAJ',FORCAJ['VECTEUR'])
+ solveur=SOLVEUR[0].cree_dict_valeurs(SOLVEUR[0].mc_liste)
+ mostcles={}
+ if NUME_DDL_GENE!=None : mostcles['NUME_DDL_GENE'] =NUME_DDL_GENE
+ if MODE_MECA !=None : mostcles['MODE_MECA'] =MODE_MECA
+ elif MODELE_GENE !=None :
+ mostcles['MODELE_GENE'] =MODELE_GENE
+ mostcles['AVEC_MODE_STAT']=AVEC_MODE_STAT
+ mostcles['DIST_REFE'] =DIST_REFE
+ if NOEUD_DOUBLE !=None : mostcles['NOEUD_DOUBLE'] =NOEUD_DOUBLE
+ if MODE_STAT !=None :
+ mostcles['MODE_STAT'] =MODE_STAT
+ if FORCAJ['NOEUD'] !=None : mostcles['NOEUD'] =FORCAJ['NOEUD']
+ if FORCAJ['GROUP_NO'] !=None : mostcles['GROUP_NO'] =FORCAJ['GROUP_NO']
+ else :
+ mostcles['MONO_APPUI'] =MONO_APPUI
+
+ VECTAJ = CALC_FORC_AJOU(DIRECTION = FORCAJ['DIRECTION'],
+ MODELE_FLUIDE = __NOMFLU,
+ MODELE_INTERFACE = __NOMINT,
+ CHARGE = __CHARGE,
+ CHAM_MATER = __NOMCMA,
+ SOLVEUR = solveur,
+ **mostcles)
+
+
+ return ier
--- /dev/null
+#@ MODIF macro_matr_asse_ops Macro DATE 05/07/2005 AUTEUR DURAND C.DURAND
+# -*- coding: iso-8859-1 -*-
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+
+
+
+def macro_matr_asse_ops(self,MODELE,CHAM_MATER,CARA_ELEM,MATR_ASSE,
+ SOLVEUR,NUME_DDL,CHARGE,INST,**args):
+ """
+ Ecriture de la macro MACRO_MATR_ASSE
+ """
+ ier=0
+
+ # On met le mot cle NUME_DDL dans une variable locale pour le proteger
+ numeddl=NUME_DDL
+ # On importe les definitions des commandes a utiliser dans la macro
+ # Le nom de la variable doit etre obligatoirement le nom de la commande
+ CALC_MATR_ELEM=self.get_cmd('CALC_MATR_ELEM')
+ NUME_DDL =self.get_cmd('NUME_DDL')
+ ASSE_MATRICE =self.get_cmd('ASSE_MATRICE')
+ # La macro compte pour 1 dans la numerotation des commandes
+ self.set_icmd(1)
+
+ if SOLVEUR:
+ methode=SOLVEUR['METHODE']
+ if methode=='LDLT':
+ if SOLVEUR['RENUM']:
+ renum=SOLVEUR['RENUM']
+ else:
+ renum='RCMK'
+ if renum not in ('SANS','RCMK'):
+ ier=ier+1
+ self.cr.fatal("<F> <MACRO_MATR_ASSE> Avec methode LDLT, RENUM doit etre SANS ou RCMK.")
+ return ier
+ elif methode=='MULT_FRONT':
+ if SOLVEUR['RENUM']:
+ renum=SOLVEUR['RENUM']
+ else:
+ renum='MDA'
+ if renum not in ('MDA','MD','METIS'):
+ ier=ier+1
+ self.cr.fatal("<F> <MACRO_MATR_ASSE> Avec methode MULT_FRONT, RENUM doit etre MDA, MD ou RCMK.")
+ return ier
+ elif methode=='GCPC':
+ if SOLVEUR['RENUM']:
+ renum=SOLVEUR['RENUM']
+ else:
+ renum='SANS'
+ if renum not in ('SANS','RCMK'):
+ ier=ier+1
+ self.cr.fatal("<F> <MACRO_MATR_ASSE> Avec methode GCPC, RENUM doit etre SANS ou RCMK.")
+ return ier
+ else:
+ methode='MULT_FRONT'
+ renum ='MDA'
+
+ if numeddl in self.sdprods:
+ # Si le concept numeddl est dans self.sdprods
+ # il doit etre produit par la macro
+ # il faudra donc appeler la commande NUME_DDL
+ lnume = 1
+ else:
+ lnume = 0
+ lrigel = 0
+ lmasel = 0
+
+# decalage eventuel en premiere position dans la liste de l occurence de MATR_ASSE contenant
+# l option de rigidite
+ try :
+ for m in MATR_ASSE:
+ option=m['OPTION']
+ if option in ('RIGI_MECA','RIGI_MECA_LAGR','RIGI_THER','RIGI_ACOU') :
+ decal=m
+ MATR_ASSE.remove(decal)
+ MATR_ASSE.insert(0,decal)
+ break
+ except: pass
+
+ iocc=0
+ for m in MATR_ASSE:
+ iocc=iocc+1
+ option=m['OPTION']
+ if iocc == 1 and lnume == 1 and option not in ('RIGI_MECA','RIGI_MECA_LAGR',
+ 'RIGI_THER','RIGI_ACOU') :
+ ier=ier+1
+ self.cr.fatal("<F> <MACRO_MATR_ASSE> UNE DES OPTIONS DOIT ETRE RIGI_MECA OU RIGI_THER OU RIGI_ACOU OU RIGI_MECA_LAGR")
+ return ier
+
+
+ motscles={'OPTION':option}
+ if option == 'AMOR_MECA':
+ if (not lrigel or not lmasel):
+ ier=ier+1
+ self.cr.fatal("""<F> <MACRO_MATR_ASSE> POUR CALCULER AMOR_MECA, IL FAUT AVOIR CALCULE
+ RIGI_MECA ET MASS_MECA AUPARAVANT (DANS LE MEME APPEL)""")
+ return ier
+ if CHAM_MATER != None:
+ motscles['RIGI_MECA'] =rigel
+ motscles['MASS_MECA'] =masel
+ if CHARGE != None:
+ if option[0:9] not in ('MASS_THER','RIGI_GEOM','MASS_ID_M'):
+ motscles['CHARGE'] =CHARGE
+ if CHAM_MATER != None: motscles['CHAM_MATER'] =CHAM_MATER
+ if CARA_ELEM != None: motscles['CARA_ELEM'] =CARA_ELEM
+ if INST != None: motscles['INST'] =INST
+
+ try : motscles['SIEF_ELGA'] =m['SIEF_ELGA']
+ except IndexError : pass
+
+ try : motscles['MODE_FOURIER'] =m['MODE_FOURIER']
+ except IndexError : pass
+
+ try : motscles['THETA'] =m['THETA']
+ except IndexError : pass
+
+ try : motscles['PROPAGATION'] =m['PROPAGATION']
+ except IndexError : pass
+ print motscles
+ __a=CALC_MATR_ELEM(MODELE=MODELE,**motscles)
+
+ if option == 'RIGI_MECA':
+ rigel = __a
+ lrigel = 1
+ if option == 'MASS_MECA':
+ masel = __a
+ lmasel = 1
+
+ if lnume and option in ('RIGI_MECA','RIGI_THER','RIGI_ACOU','RIGI_MECA_LAGR'):
+ self.DeclareOut('num',numeddl)
+ # On peut passer des mots cles egaux a None. Ils sont ignores
+ num=NUME_DDL(MATR_RIGI=__a,METHODE=methode,RENUM=renum)
+ else:
+ num=numeddl
+
+ self.DeclareOut('mm',m['MATRICE'])
+ mm=ASSE_MATRICE(MATR_ELEM=__a,NUME_DDL=num)
+ return ier
--- /dev/null
+#@ MODIF macro_miss_3d_ops Macro DATE 05/07/2005 AUTEUR DURAND C.DURAND
+# -*- coding: iso-8859-1 -*-
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+
+
+
+def macro_miss_3d_ops(self,UNITE_IMPR_ASTER,UNITE_OPTI_MISS,
+ UNITE_MODELE_SOL,UNITE_RESU_IMPE,
+ PROJET,REPERTOIRE,OPTION,VERSION,**args):
+ """
+ Ecriture de la macro MACRO_MISS_3D
+ """
+ import types
+ from Accas import _F
+
+ ier=0
+ # On importe les definitions des commandes a utiliser dans la macro
+ # Le nom de la variable doit etre obligatoirement le nom de la commande
+ DEFI_FICHIER =self.get_cmd('DEFI_FICHIER')
+ EXEC_LOGICIEL =self.get_cmd('EXEC_LOGICIEL')
+ # La macro compte pour 1 dans la numerotation des commandes
+ self.set_icmd(1)
+
+ DEFI_FICHIER(ACTION='LIBERER',UNITE=UNITE_IMPR_ASTER)
+
+ import aster
+ loc_fic=aster.repout()
+ miss3d=loc_fic+'miss3d'
+ #miss3d='/home/acbhhcd/MISS3D/V6.4/miss3d.csh'
+
+ if OPTION['TOUT']!=None:
+ MODUL2='COMPLET'
+ elif OPTION['MODULE']=='MISS_IMPE':
+ MODUL2='CALC_IMPE'
+ elif OPTION['MODULE']=='MISS_EVOL':
+ MODUL2='MISS_PTAS'
+ elif OPTION['MODULE']=='PRE_MISS':
+ MODUL2='GTASTER'
+
+ ETUDE = PROJET
+ BASE = REPERTOIRE
+ paste = 'fort.'+str(UNITE_IMPR_ASTER)
+ popti = 'fort.'+str(UNITE_OPTI_MISS)
+ pdsol = 'fort.'+str(UNITE_MODELE_SOL)
+ primp = 'fort.'+str(UNITE_RESU_IMPE)
+
+ EXEC_LOGICIEL(
+ LOGICIEL=miss3d,
+ ARGUMENT=(_F(NOM_PARA=MODUL2),
+ _F(NOM_PARA=ETUDE),
+ _F(NOM_PARA=BASE),
+ _F(NOM_PARA=paste),
+ _F(NOM_PARA=popti),
+ _F(NOM_PARA=pdsol),
+ _F(NOM_PARA=primp),
+ _F(NOM_PARA=VERSION), ),
+ )
+
+ return ier
--- /dev/null
+#@ MODIF macro_mode_meca_ops Macro DATE 05/07/2005 AUTEUR DURAND C.DURAND
+# -*- coding: iso-8859-1 -*-
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+
+
+
+def macro_mode_meca_ops(self,MATR_A,MATR_B,INFO,METHODE,OPTION,CALC_FREQ,
+ VERI_MODE,NORM_MODE,FILTRE_MODE,IMPRESSION,**args):
+ """
+ Ecriture de la macro MACRO_MODE_MECA
+ """
+ from Accas import _F
+ ier=0
+
+ # on protege le contenu du mot cle NORM_MODE pour eviter les confusions
+ # avec la commande du meme nom
+
+ normode=NORM_MODE
+
+ # On importe les definitions des commandes a utiliser dans la macro
+ MODE_ITER_SIMULT =self.get_cmd('MODE_ITER_SIMULT')
+ NORM_MODE =self.get_cmd('NORM_MODE')
+ IMPR_RESU =self.get_cmd('IMPR_RESU')
+ EXTR_MODE =self.get_cmd('EXTR_MODE')
+ DETRUIRE =self.get_cmd('DETRUIRE')
+ # La macro compte pour 1 dans la numerotation des commandes
+ self.set_icmd(1)
+
+ nompro=None
+ iocc=0
+ if CALC_FREQ['FREQ']:
+ nnfreq=len(CALC_FREQ['FREQ'])
+ else:
+ lborne=[]
+ nnfreq= CALC_FREQ['NB_BLOC_FREQ']+1
+ zlborn=(CALC_FREQ['FREQ_MAX']-CALC_FREQ['FREQ_MIN'])/(nnfreq-1)
+ for i in range(0,nnfreq):
+ lborne.append(CALC_FREQ['FREQ_MIN']+i*zlborn)
+
+ motscles={}
+ motscles['FILTRE_MODE']=[]
+ for i in range(0,nnfreq-1):
+ motscit={}
+ motscfa={}
+ if CALC_FREQ['DIM_SOUS_ESPACE']: motscfa['DIM_SOUS_ESPACE']=CALC_FREQ['DIM_SOUS_ESPACE']
+ if CALC_FREQ['COEF_DIM_ESPACE']: motscfa['COEF_DIM_ESPACE']=CALC_FREQ['COEF_DIM_ESPACE']
+ if CALC_FREQ['FREQ']:
+ motscfa['FREQ']=(CALC_FREQ['FREQ'][i],CALC_FREQ['FREQ'][i+1])
+ else:
+ motscfa['FREQ']=(lborne[i],lborne[i+1])
+ motscit['CALC_FREQ']=_F(OPTION ='BANDE',
+ SEUIL_FREQ =CALC_FREQ['SEUIL_FREQ'],
+ NPREC_SOLVEUR =CALC_FREQ['NPREC_SOLVEUR'],
+ NMAX_ITER_SHIFT =CALC_FREQ['NMAX_ITER_SHIFT'],
+ PREC_SHIFT =CALC_FREQ['PREC_SHIFT'],
+ **motscfa)
+ motscit['VERI_MODE']=_F(STOP_ERREUR=VERI_MODE['STOP_ERREUR'],
+ SEUIL =VERI_MODE['SEUIL'],
+ STURM =VERI_MODE['STURM'],
+ PREC_SHIFT =VERI_MODE['PREC_SHIFT'])
+ motscit['STOP_FREQ_VIDE']=CALC_FREQ['STOP_FREQ_VIDE']
+
+ if METHODE=='TRI_DIAG':
+ if args.has_key('NMAX_ITER_ORTHO'):
+ motscit['NMAX_ITER_ORTHO'] =args['NMAX_ITER_ORTHO']
+ if args.has_key('PREC_ORTHO'):
+ motscit['PREC_ORTHO'] =args['PREC_ORTHO']
+ if args.has_key('PREC_LANCZOS'):
+ motscit['PREC_LANCZOS'] =args['PREC_LANCZOS']
+ if args.has_key('MAX_ITER_QR'):
+ motscit['NMAX_ITER_QR'] =args['NMAX_ITER_QR']
+ elif METHODE=='JACOBI':
+ if args.has_key('NMAX_ITER_BATHE'):
+ motscit['NMAX_ITER_BATHE'] =args['NMAX_ITER_BATHE']
+ if args.has_key('PREC_BATHE'):
+ motscit['PREC_BATHE'] =args['PREC_BATHE']
+ if args.has_key('NMAX_ITER_JACOBI'):
+ motscit['NMAX_ITER_JACOBI']=args['NMAX_ITER_JACOBI']
+ if args.has_key('PREC_JACOBI'):
+ motscit['PREC_JACOBI'] =args['PREC_JACOBI']
+ elif METHODE=='SORENSEN':
+ if args.has_key('NMAX_ITER_SOREN'):
+ motscit['NMAX_ITER_SOREN'] =args['NMAX_ITER_SOREN']
+ if args.has_key('PARA_ORTHO_SOREN'):
+ motscit['PARA_ORTHO_SOREN']=args['PARA_ORTHO_SOREN']
+ if args.has_key('PREC_SOREN'):
+ motscit['PREC_SOREN'] =args['PREC_SOREN']
+
+ __nomre0=MODE_ITER_SIMULT(MATR_A =MATR_A,
+ MATR_B =MATR_B,
+ INFO =INFO,
+ METHODE =METHODE,
+ OPTION =OPTION,
+ **motscit)
+
+ __nomre0=NORM_MODE(reuse =__nomre0,
+ MASS_INER =normode['MASS_INER'],
+ MODE =__nomre0,
+ NORME =normode['NORME'],
+ INFO =normode['INFO'],)
+
+ if IMPRESSION['TOUT_PARA']=='OUI':
+ IMPR_RESU(RESU=_F(RESULTAT=__nomre0,
+ TOUT_ORDRE='OUI',
+ TOUT_CHAM ='NON',
+ TOUT_PARA ='OUI',) )
+
+ if FILTRE_MODE :
+ motscles['FILTRE_MODE'].append(_F(MODE =__nomre0,
+ CRIT_EXTR =FILTRE_MODE['CRIT_EXTR'],
+ SEUIL =FILTRE_MODE['SEUIL'], ))
+ else:
+ motscles['FILTRE_MODE'].append(_F(MODE =__nomre0,
+ TOUT_ORDRE='OUI',) )
+
+
+ motscles['IMPRESSION']=_F(CUMUL =IMPRESSION['CUMUL'],
+ CRIT_EXTR=IMPRESSION['CRIT_EXTR'],)
+ self.DeclareOut('nomres',self.sd)
+ nomres=EXTR_MODE(**motscles)
+ DETRUIRE(CONCEPT=_F(NOM='__nomre0',),ALARME='NON')
+ return ier
--- /dev/null
+#@ MODIF macro_proj_base_ops Macro DATE 05/07/2005 AUTEUR DURAND C.DURAND
+# -*- coding: iso-8859-1 -*-
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+
+
+
+def macro_proj_base_ops(self,BASE,NB_VECT,MATR_ASSE_GENE,VECT_ASSE_GENE,PROFIL,**args):
+ """
+ Ecriture de la macro MACRO_PROJ_BASE
+ """
+ ier=0
+ # On importe les definitions des commandes a utiliser dans la macro
+ NUME_DDL_GENE =self.get_cmd('NUME_DDL_GENE')
+ PROJ_MATR_BASE =self.get_cmd('PROJ_MATR_BASE')
+ PROJ_VECT_BASE =self.get_cmd('PROJ_VECT_BASE')
+ # La macro compte pour 1 dans la numerotation des commandes
+ self.set_icmd(1)
+
+ _num=NUME_DDL_GENE(BASE=BASE,NB_VECT=NB_VECT,STOCKAGE=PROFIL)
+ if MATR_ASSE_GENE:
+ for m in MATR_ASSE_GENE:
+ motscles={}
+ if m['MATR_ASSE'] : motscles['MATR_ASSE'] =m['MATR_ASSE']
+ elif m['MATR_ASSE_GENE']: motscles['MATR_ASSE_GENE']=m['MATR_ASSE_GENE']
+ else:
+ ier=ier+1
+ self.cr.fatal("<F> <MACRO_PROJ_BASE> MATR_ASSE et MATR_ASSE_GENE absents")
+ return ier
+ self.DeclareOut('mm',m['MATRICE'])
+ mm=PROJ_MATR_BASE(BASE=BASE,NUME_DDL_GENE=_num,**motscles)
+
+ if VECT_ASSE_GENE:
+ _num=NUME_DDL_GENE(BASE=BASE,NB_VECT=NB_VECT,STOCKAGE=PROFIL)
+ for v in VECT_ASSE_GENE:
+ motscles={}
+ if v['VECT_ASSE'] : motscles['VECT_ASSE'] =v['VECT_ASSE']
+ elif v['VECT_ASSE_GENE']: motscles['VECT_ASSE_GENE']=v['VECT_ASSE_GENE']
+ else:
+ ier=ier+1
+ self.cr.fatal("<F> <MACRO_PROJ_BASE>MATR_ASSE et MATR_ASSE_GENE absents")
+ return ier
+ motscles['TYPE_VECT']=v['TYPE_VECT']
+ self.DeclareOut('vv',v['VECTEUR'])
+ vv=PROJ_VECT_BASE(BASE=BASE,NUME_DDL_GENE=_num,**motscles)
+
+ return ier
--- /dev/null
+#@ MODIF reca_algo Macro DATE 31/01/2006 AUTEUR MCOURTOI M.COURTOIS
+# -*- coding: iso-8859-1 -*-
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+
+
+
+import Numeric
+from Numeric import take, size
+import copy,os
+import LinearAlgebra
+from Cata.cata import INFO_EXEC_ASTER
+from Cata.cata import DETRUIRE
+from Macro.recal import EXTRACT
+from Accas import _F
+
+
+def calcul_gradient(A,erreur):
+ grad = Numeric.dot(Numeric.transpose(A),erreur)
+ return grad
+
+
+#-------------------------------------------
+#classe gérant l'adimensionnement et le dimensionnemnt
+class Dimension:
+ #le constructeur calcul la matrice D et son inverse
+ def __init__(self,val_initiales,para):
+ self.val_init = val_initiales
+ dim =len(self.val_init)
+ self.D = Numeric.zeros((dim,dim),Numeric.Float)
+ for i in range(dim):
+ self.D[i][i] = self.val_init[i]
+ self.inv_D=LinearAlgebra.inverse(self.D)
+
+
+ def adim_sensi(self,A):
+ for i in range(A.shape[0]):
+ for j in range(A.shape[1]):
+ A[i,j] = A[i,j] * self.val_init[j]
+ return A
+
+
+
+ def redim_sensi(self,A):
+ for i in range(A.shape[0]):
+ for j in range(A.shape[1]):
+ A[i,j] = A[i,j] / self.val_init[j]
+ return A
+
+
+ def adim(self,tab):
+ tab_adim = Numeric.dot(self.inv_D,copy.copy(tab))
+ return tab_adim
+
+
+ def redim(self,tab_adim):
+ tab = Numeric.dot(self.D,tab_adim)
+ return tab
+
+#------------------------------------------
+def cond(matrix):
+ e1=LinearAlgebra.eigenvalues(matrix)
+ e=map(abs,e1)
+ size=len(e)
+ e=Numeric.sort(e)
+ try:
+ condi=e[size-1]/e[0]
+ except ZeroDivisionError:
+ condi=0.0
+ return condi,e[size-1],e[0]
+
+#-----------------------------------------
+def norm(matrix):
+ e=LinearAlgebra.Heigenvalues(matrix)
+ size=len(e)
+ e=Numeric.sort(e)
+ norm=e[size-1]
+ return norm
+
+#-----------------------------------------
+def lambda_init(matrix):
+# Routine qui calcule la valeur initial du parametre
+# de regularisation l.
+ condi,emax,emin=cond(matrix)
+ id=Numeric.identity(matrix.shape[0])
+ if (condi==0.0):
+ l=1.e-3*norm(matrix)
+ elif (condi<=10000):
+ l=1.e-16*norm(matrix)
+ elif (condi>10000):
+ l=abs(10000.*emin-emax)/10001.
+ return l
+
+#-----------------------------------------
+
+
+def temps_CPU(self,restant_old,temps_iter_old):
+ # Fonction controlant le temps CPU restant
+ CPU=INFO_EXEC_ASTER(LISTE_INFO = ("CPU_RESTANT",))
+ TEMPS=CPU['CPU_RESTANT',1]
+ DETRUIRE(CONCEPT=_F(NOM='CPU'),INFO=1)
+ err=0
+ # Indique une execution interactive
+ if (TEMPS>1.E+9):
+ return 0.,0.,0
+ # Indique une execution en batch
+ else:
+ restant=TEMPS
+ # Initialisation
+ if (restant_old==0.):
+ temps_iter=-1.
+ else:
+ # Première mesure
+ if (temps_iter_old==-1.):
+ temps_iter=(restant_old-restant)
+ # Mesure courante
+ else:
+ temps_iter=(temps_iter_old + (restant_old-restant))/2.
+ if ((temps_iter>0.96*restant)or(restant<0.)):
+ err=1
+ self.cr.fatal("<F> <MACR_RECAL> Arret de MACR_RECAL par manque de temps CPU")
+ return restant,temps_iter,err
+
+
+
+
+def Levenberg_bornes(self,val,Dim,val_init,borne_inf,borne_sup,A,erreur,l,ul_out):
+ # on resoud le système par contraintes actives:
+ # Q.dval + s + d =0
+ # soumis à :
+ # borne_inf < dval < borne_sup
+ # 0 < s
+ # s.(borne_inf - dval)=0
+ # s.(borne_sup - dval)=0
+ dim = len(val)
+ id = Numeric.identity(dim)
+ # Matrice du système
+ Q=Numeric.matrixmultiply(Numeric.transpose(A),A) +l*id
+ # Second membre du système
+ d=Numeric.matrixmultiply(Numeric.transpose(A),erreur)
+ # Ens. de liaisons actives
+ Act=Numeric.array([])
+ k=0
+ done=0
+ # Increment des parametres
+ dval=Numeric.zeros(dim,Numeric.Float)
+ while done <1 :
+ k=k+1
+ I=Numeric.ones(dim)
+ for i in Act:
+ I[i]=0
+ I=Numeric.nonzero(Numeric.greater(I,0))
+ s=Numeric.zeros(dim,Numeric.Float)
+ for i in Act:
+ # test sur les bornes (on stocke si on est en butée haute ou basse)
+ if (val[i]+dval[i]>=borne_sup[i]):
+ dval[i]=borne_sup[i]-val[i]
+ s[i]=1.
+ if (val[i]+dval[i]<=borne_inf[i]):
+ dval[i]=borne_inf[i]-val[i]
+ s[i]=-1.
+ if (len(I)!=0):
+ # xi=-Q(I)-1.(d(I)+Q(I,Act).dval(Act))
+ t_QI = take(Q, I)
+ t_tQI_Act = take(t_QI, Act, 1)
+ t_adim_Act = take(Dim.adim(dval), Act)
+ if size(t_tQI_Act) > 0 and size(t_adim_Act) > 0:
+ smemb = take(d, I) + Numeric.dot(t_tQI_Act, t_adim_Act)
+ else:
+ smemb = take(d, I)
+ xi=-LinearAlgebra.solve_linear_equations(take(t_QI, I, 1), smemb)
+ for i in Numeric.arange(len(I)):
+ dval[I[i]]=xi[i]*val_init[I[i]]
+ if (len(Act)!=0):
+ # s(Av)=-d(Act)-Q(Act,:).dval
+ sa=-take(d,Act)-Numeric.dot(take(Q,Act),Dim.adim(dval))
+ for i in range(len(Act)):
+ if (s[Act[i]]==-1.):
+ s[Act[i]]=-sa[i]
+ else:
+ s[Act[i]]=sa[i]
+ # Nouvel ens. de liaisons actives
+ Act=Numeric.concatenate((Numeric.nonzero(Numeric.greater(dval,borne_sup-val)),Numeric.nonzero(Numeric.less(dval,borne_inf-val)),Numeric.nonzero(Numeric.greater(s,0.))))
+ done=(max(val+dval-borne_sup)<=0)&(min(val+dval-borne_inf)>=0)&(min(s)>=0.0)
+ # Pour éviter le cyclage
+ if (k>50):
+ try:
+ l=l*2
+ Q=Numeric.matrixmultiply(Numeric.transpose(A),A) +l*id
+ k=0
+ except:
+ res=open(os.getcwd()+'/fort.'+str(ul_out),'a')
+ res.write('\n\nQ = \n'+Numeric.array2string(Q-l*id,array_output=1,separator=','))
+ res.write('\n\nd = '+Numeric.array2string(d,array_output=1,separator=','))
+ res.write('\n\nval = '+Numeric.array2string(val,array_output=1,separator=','))
+ res.write('\n\nval_ini= '+Numeric.array2string(val_init,array_output=1,separator=','))
+ res.write('\n\nborne_inf= '+Numeric.array2string(borne_inf,array_output=1,separator=','))
+ res.write('\n\nborne_sup= '+Numeric.array2string(borne_sup,array_output=1,separator=','))
+ self.cr.fatal("<F> <MACR_RECAL> Erreur dans l'algorithme de bornes de MACR_RECAL")
+ return
+ newval=copy.copy(val+dval)
+ return newval,s,l,Act
+
+
+def actualise_lambda(l,val,new_val,A,erreur,new_J,old_J):
+ dim = len(val)
+ id = Numeric.identity(dim)
+ # Matrice du système
+ Q=Numeric.matrixmultiply(Numeric.transpose(A),A) +l*id
+ # Second membre du système
+ d=Numeric.matrixmultiply(Numeric.transpose(A),erreur)
+ old_Q=old_J
+ new_Q=old_J+0.5*Numeric.dot(Numeric.transpose(new_val-val),Numeric.dot(Q,new_val-val))+Numeric.dot(Numeric.transpose(new_val-val),d)
+ # Ratio de la décroissance réelle et de l'approx. quad.
+ try:
+ R=(old_J-new_J)/(old_Q-new_Q)
+ if (R<0.25):
+ l = l*10.
+ elif (R>0.75):
+ l = l/15.
+ except ZeroDivisionError:
+ if (old_J>new_J):
+ l = l*10.
+ else:
+ l = l/10.
+ return l
+
+
+def test_convergence(gradient_init,erreur,A,s):
+ gradient = calcul_gradient(A,erreur)+s
+ epsilon = Numeric.dot(gradient,gradient)/Numeric.dot(gradient_init,gradient_init)
+ epsilon = epsilon**0.5
+ return epsilon
+
+
+# fonction appellée quand la convergence est atteinte
+# on calcule le Hessien et les valeurs propres et vecteurs
+# propre associés au Hessien
+# A = sensibilite
+# At*A = hessien
+def calcul_etat_final(para,A,iter,max_iter,prec,residu,Messg,ul_out):
+ if ((iter < max_iter) or (residu < prec)):
+ Hessien = Numeric.matrixmultiply(Numeric.transpose(A),A)
+ valeurs_propres,vecteurs_propres = LinearAlgebra.eigenvectors(Hessien)
+ sensible=Numeric.nonzero(Numeric.greater(abs(valeurs_propres/max(abs(valeurs_propres))),1.E-1))
+ insensible=Numeric.nonzero(Numeric.less(abs(valeurs_propres/max(abs(valeurs_propres))),1.E-2))
+ Messg.affiche_calcul_etat_final(para,Hessien,valeurs_propres,vecteurs_propres,sensible,insensible,ul_out)
+
+
+
+
+
--- /dev/null
+#@ MODIF reca_interp Macro DATE 14/09/2004 AUTEUR MCOURTOI M.COURTOIS
+# -*- coding: iso-8859-1 -*-
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+
+import os
+import Numeric
+import Macro
+from Macro.recal import calcul_F
+
+#===========================================================================================
+
+
+# INTERPOLATION, CALCUL DE SENSIBILITE, ETC....
+
+#--------------------------------------
+class Sim_exp :
+
+ def __init__ (self,result_exp,poids) :
+ self.resu_exp = result_exp
+ self.poids = poids
+
+# Distance verticale d'un point M à une ligne brisée composée de n points
+
+ def DistVertAdimPointLigneBrisee (self, M, points) :
+ # M = Point (2 colonnes, 1 ligne)
+ # points = Tableau de n points (2 colonnes, n lignes)
+ # on suppose qu'il existe au moins 2 points,
+ # et que les points sont classés selon les abscisses croissantes
+ n = len(points)
+ if ( M[0] < points[0][0] ) or ( M[0] > points[n-1][0] ) :
+ return 0.
+ i = 1
+ while M[0] > points[i][0] :
+ i = i+1
+ y_proj_vert = (M[0]-points[i-1][0]) * (points[i][1]-points[i-1][1]) / (points[i][0]-points[i-1][0]) + points[i-1][1]
+ d = (M[1] - y_proj_vert)
+ # Attention: la distance n'est pas normalisée
+ # Attention: problème si points[0][0] = points[1][0] = M[0]
+ # Attention: problème si M[1] = 0
+ return d
+
+
+# La Fonction Interpole ,interpole une et une seule F_calc sur F_exp et renvoie l'erreur seulement
+ def Interpole (self, F_calc,experience,poids) : #ici on passe en argument "une" experience
+ n = 0
+ resu_num = F_calc
+ n_exp = len(experience) # nombre de points sur la courbe expérimentale num.i
+ stockage = Numeric.ones(n_exp, Numeric.Float) # matrice de stockage des erreurs en chaque point
+ for j in xrange(n_exp) :
+ d = self.DistVertAdimPointLigneBrisee(experience[j], resu_num)
+ try:
+ stockage[n] = d/experience[j][1]
+ except ZeroDivisionError:
+ stockage[n] = d
+ n = n + 1 # on totalise le nombre de points valables
+ err = Numeric.ones(n, Numeric.Float)
+ for i in xrange(n) :
+ err[i] = poids*stockage[i]
+ return err
+
+ #cette fonction appelle la fonction interpole et retourne les sous fonctionnelle J et l'erreur
+ def multi_interpole(self,L_F, reponses): #on interpole toutes les reponses une à une en appelent la methode interpole
+ L_erreur=[]
+ for i in range(len(reponses)):
+ err = self.Interpole(L_F[i],self.resu_exp[i],self.poids[i])
+ L_erreur.append(err)
+ #on transforme L_erreur en tab num
+ dim=[]
+ J=[]
+ for i in range(len(L_erreur)):
+ dim.append(len(L_erreur[i]))
+ dim_totale = Numeric.sum(dim)
+ L_J = self.calcul_J(L_erreur)
+ a=0
+ erreur = Numeric.zeros((dim_totale),Numeric.Float)
+ for n in range(len(L_erreur)):
+ for i in range(dim[n]):
+ erreur[i+a] = L_erreur[n][i]
+ a = dim[n]
+ del(L_erreur) #on vide la liste puisqu'on n'en a plus besoin
+ return L_J,erreur
+
+ #cette fonction retourne seulement l'erreur ,je l'appelle dans la methode sensibilité
+ #on interpole toutes les reponses une à une en appelent la methode interpole
+ def multi_interpole_sensib(self,L_F,reponses):
+ L_erreur=[]
+ for i in range(len(reponses)):
+ err = self.Interpole(L_F[i],self.resu_exp[i],self.poids[i])
+ L_erreur.append(err)
+ #on transforme L_erreur en tab num
+ return L_erreur
+
+ def calcul_J(self,L_erreur):
+ L_J = []
+ for i in range(len(L_erreur)):
+ total = 0
+ for j in range(len(L_erreur[i])):
+ total = total + L_erreur[i][j]**2
+ L_J.append(total)
+ return L_J
+
+ def norme_J(self,L_J_init,L_J,unite_resu):
+ #cette fonction calcul une valeur normée de J
+ for i in range(len(L_J)):
+ try:
+ L_J[i] = L_J[i]/L_J_init[i]
+ except ZeroDivisionError:
+ fic=open(os.getcwd()+'/fort.'+str(unite_resu),'a')
+ fic.write('\n Problème de division par zéro dans la normalisation de la fonctionnelle.')
+ fic.write('\n Une des valeurs de la fonctionnelle initiale est nulle ou inférieure à la précision machine :'+ str(L_J_init))
+ fic.close()
+ self.cr.fatal("<F> <MACR_RECAL> Problème de division par zéro dans la normalisation de la fonctionnelle.\nUne des valeurs de la fonctionnelle initiale est nulle ou inférieure à la précision machine :"+ str(L_J_init))
+ return
+
+ J = Numeric.sum(L_J)
+ J = J/len(L_J)
+ return J
+
+ def sensibilite(self,objet,UL,F,val,para,reponses,pas,unite_resu):
+ F_interp=self.multi_interpole_sensib(F, reponses) #F_interp est une liste contenant des tab num des reponses interpolés
+ L_A=[] #creation de la liste des matrices de sensibilités
+ for i in range(len(reponses)):
+ L_A.append(Numeric.zeros((len(self.resu_exp[i]),len(val)),Numeric.Float) )
+ #calcul de la sensibilité
+ fic=open(os.getcwd()+'/fort.'+str(unite_resu),'a')
+ fic.write('\nCalcul de la sensibilité par rapport à :')
+ fic.close()
+ for k in range(len(val)): #pour une colone de A
+ h = val[k]*pas
+ val[k] = val[k] + h
+ F_perturbe = calcul_F(objet,UL,para,val,reponses)
+ fic=open(os.getcwd()+'/fort.'+str(unite_resu),'a')
+ fic.write(' '+para[k])
+ fic.close()
+ F_perturbe_interp =self.multi_interpole_sensib(F_perturbe, reponses)
+ val[k] = val[k] - h
+ for j in range(len(reponses)):
+ for i in range(len(self.resu_exp[j])):
+ try:
+ L_A[j][i,k] = -1*(F_interp[j][i] - F_perturbe_interp[j][i])/h
+ except ZeroDivisionError:
+ fic=open(os.getcwd()+'/fort.'+str(unite_resu),'a')
+ fic.write('\n Probleme de division par zéro dans le calcul de la matrice de sensiblité')
+ fic.write('\n Le parametre '+para[k]+'est nul ou plus petit que la précision machine')
+ fic.close()
+ self.cr.fatal("<F> <MACR_RECAL> Probleme de division par zéro dans le calcul de la matrice de sensiblité.\n Le parametre "+para[k]+"est nul ou plus petit que la précision machine")
+ return
+ #on construit la matrice de sensiblité sous forme d'un tab num
+ dim =[]
+ for i in range(len(L_A)):
+ dim.append(len(L_A[i]))
+ dim_totale = Numeric.sum(dim)
+ a=0
+ A = Numeric.zeros((dim_totale,len(val)),Numeric.Float)
+ for n in range(len(L_A)):
+ for k in range(len(val)):
+ for i in range(dim[n]):
+ A[i+a][k] = L_A[n][i,k]
+ a=dim[n]
+ del(L_A) #on ecrase tout ce qu'il y a dans L_A puisqu'on n'en a plus besoin
+ return A
+
+
+
--- /dev/null
+#@ MODIF reca_message Macro DATE 14/09/2004 AUTEUR MCOURTOI M.COURTOIS
+# -*- coding: iso-8859-1 -*-
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+
+import os,Numeric
+
+#===========================================================================================
+
+
+# AFFICHAGE DES MESSAGES
+
+class Message :
+ """classe gérant l'affichage des messages concernant le déroulement de l'optmisation """
+ #Constructeur de la classe
+ def __init__(self,para,val_init,resu_exp,ul_out):
+ self.nom_para = para
+ self.res_exp = resu_exp
+ res=open(os.getcwd()+'/fort.'+str(ul_out),'a')
+ res.write(' <INFO> MACR_RECAL V1.1 \n\n\n')
+ res.close()
+
+
+ def affiche_result_iter(self,iter,J,val,residu,Act,ul_out):
+ res=open(os.getcwd()+'/fort.'+str(ul_out),'a')
+ res.write('\n=======================================================\n')
+ res.write('Iteration '+str(iter)+' :\n')
+ res.write('\n=> Fonctionnelle = '+str(J))
+ res.write('\n=> Résidu = '+str(residu))
+ res.write('\n=> Paramètres = ')
+ for i in range(len(val)):
+ res.write('\n '+ self.nom_para[i]+' = '+str(val[i]) )
+ if (len(Act)!=0):
+ if (len(Act)==1):
+ res.write('\n\n Le paramètre ')
+ else:
+ res.write('\n\n Les paramètres ')
+ for i in Act:
+ res.write(self.nom_para[i]+' ')
+ if (len(Act)==1):
+ res.write('\n est en butée sur un bord de leur domaine admissible.')
+ else:
+ res.write('\n sont en butée sur un bord de leur domaine admissible.')
+ res.write('\n=======================================================\n\n')
+ res.close()
+
+ def affiche_etat_final_convergence(self,iter,max_iter,prec,residu,Act,ul_out):
+ res=open(os.getcwd()+'/fort.'+str(ul_out),'a')
+ if ((iter < max_iter) or (residu < prec)):
+ res.write('\n=======================================================\n')
+ res.write(' CONVERGENCE ATTEINTE ')
+ if (len(Act)!=0):
+ res.write("\n\n ATTENTION : L'OPTIMUM EST ATTEINT AVEC ")
+ res.write("\n DES PARAMETRES EN BUTEE SUR LE BORD ")
+ res.write("\n DU DOMAINE ADMISSIBLE ")
+ res.write('\n=======================================================\n')
+ res.close()
+ else:
+ res.write("\n=======================================================\n")
+ res.write(' CONVERGENCE NON ATTEINTE ')
+ res.write("\n Le nombre maximal d'itération ("+str(max_iter)+") a été dépassé")
+ res.write('\n=======================================================\n')
+ res.close()
+
+ def affiche_calcul_etat_final(self,para,Hessien,valeurs_propres,vecteurs_propres,sensible,insensible,ul_out):
+ res=open(os.getcwd()+'/fort.'+str(ul_out),'a')
+ res.write('\n\nValeurs propres du Hessien:\n')
+ res.write(str( valeurs_propres))
+ res.write('\n\nVecteurs propres associés:\n')
+ res.write(str( vecteurs_propres))
+ res.write('\n\n --------')
+ res.write('\n\nOn peut en déduire que :')
+ # Paramètres sensibles
+ if (len(sensible)!=0):
+ res.write('\n\nLes combinaisons suivantes de paramètres sont prépondérantes pour votre calcul :\n')
+ k=0
+ for i in sensible:
+ k=k+1
+ colonne=vecteurs_propres[:,i]
+ numero=Numeric.nonzero(Numeric.greater(abs(colonne/max(abs(colonne))),1.E-1))
+ res.write('\n '+str(k)+') ')
+ for j in numero:
+ res.write('%+3.1E ' %colonne[j]+'* '+para[j]+' ')
+ res.write('\n associée à la valeur propre %3.1E \n' %valeurs_propres[i])
+ # Paramètres insensibles
+ if (len(insensible)!=0):
+ res.write('\n\nLes combinaisons suivantes de paramètres sont insensibles pour votre calcul :\n')
+ k=0
+ for i in insensible:
+ k=k+1
+ colonne=vecteurs_propres[:,i]
+ numero=Numeric.nonzero(Numeric.greater(abs(colonne/max(abs(colonne))),1.E-1))
+ res.write('\n '+str(k)+') ')
+ for j in numero:
+ res.write('%+3.1E ' %colonne[j]+'* '+para[j]+' ')
+ res.write('\n associée à la valeur propre %3.1E \n' %valeurs_propres[i])
+ res.close()
+
+
+
--- /dev/null
+#@ MODIF recal Macro DATE 11/07/2005 AUTEUR PABHHHH N.TARDIEU
+# -*- coding: iso-8859-1 -*-
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+
+
+
+
+import string
+import copy
+import Numeric
+import types
+import Gnuplot
+import Cata
+from Cata.cata import INCLUDE,DETRUIRE
+from Accas import _F
+from Utilitai.extract import EXTRACT
+
+import os
+
+
+#_____________________________________________
+#
+# DIVERS UTILITAIRES POUR LA MACRO
+#_____________________________________________
+
+
+# Transforme les donneés entrées par l'utilsateur en tableau Numeric
+def transforme_list_Num(parametres,res_exp):
+ dim_para = len(parametres) #donne le nb de parametres
+ val_para = Numeric.zeros(dim_para,Numeric.Float)
+ borne_inf = Numeric.zeros(dim_para,Numeric.Float)
+ borne_sup = Numeric.zeros(dim_para,Numeric.Float)
+ para = []
+ for i in range(dim_para):
+ para.append(parametres[i][0])
+ val_para[i] = parametres[i][1]
+ borne_inf[i] = parametres[i][2]
+ borne_sup[i] = parametres[i][3]
+ return para,val_para,borne_inf,borne_sup
+
+def mes_concepts(list_concepts=[],base=None):
+ # Fonction qui liste les concepts créés
+ for e in base.etapes:
+ if e.nom in ('INCLUDE','MACR_RECAL',) :
+ list_concepts=list(mes_concepts(list_concepts=list_concepts,base=e))
+ elif (e.sd != None) and (e.parent.nom=='INCLUDE') :
+ nom_concept=e.sd.get_name()
+ if not(nom_concept in list_concepts):
+ list_concepts.append( nom_concept )
+ return tuple(list_concepts)
+
+
+def detr_concepts(self):
+ liste_concepts=mes_concepts(base=self.parent)
+ for e in liste_concepts:
+ nom = string.strip(e)
+ DETRUIRE( CONCEPT =self.g_context['_F'](NOM = nom),INFO=1)
+ if self.jdc.g_context.has_key(nom) : del self.jdc.g_context[nom]
+ del(liste_concepts)
+
+
+def calcul_F(self,UL,para,val,reponses):
+ fic = open('fort.'+str(UL),'r')
+ #On stocke le contenu de fort.UL dans la variable fichier qui est un string
+ fichier=fic.read()
+ #On stocke le contenu initial de fort.UL dans la variable fichiersauv
+ fichiersauv=copy.copy(fichier)
+ fic.close()
+
+ #Fichier_Resu est une liste ou l'on va stocker le fichier modifié
+ #idée générale :on délimite des 'blocs' dans fichier
+ #on modifie ou non ces blocs suivant les besoins
+ #on ajoute ces blocs dans la liste Fichier_Resu
+ Fichier_Resu=[]
+
+ try:
+ #cherche l'indice de DEBUT()
+ index_deb=string.index(fichier,'DEBUT(')
+ while( fichier[index_deb]!='\n'):
+ index_deb=index_deb+1
+ #on restreind fichier en enlevant 'DEBUT();'
+ fichier = fichier[index_deb+1:]
+ except :
+ #on va dans l'except si on a modifié le fichier au moins une fois
+ pass
+
+ try:
+ #cherche l'indice de FIN()
+ index_fin = string.index(fichier,'FIN(')
+ #on restreind fichier en enlevant 'FIN();'
+ fichier = fichier[:index_fin]
+ except : pass
+ #--------------------------------------------------------------------------------
+ #on cherche à délimiter le bloc des parametres dans le fichier
+ #Tout d'abord on cherche les indices d'apparition des paras dans le fichier
+ #en effet l'utilisateur n'est pas obligé de rentrer les paras dans optimise
+ #avec le meme ordre de son fichier de commande
+ index_para = Numeric.zeros(len(para))
+ for i in range(len(para)):
+ index_para[i] = string.index(fichier,para[i])
+ #On range les indices par ordre croissant afin de déterminer
+ #les indice_max et indice_min
+ index_para = Numeric.sort(index_para)
+ index_first_para = index_para[0]
+ index_last_para = index_para[len(index_para)-1]
+
+
+ #on va délimiter les blocs intermédiaires entre chaque para "utiles" à l'optimsation
+ bloc_inter ='\n'
+ for i in range(len(para)-1):
+ j = index_para[i]
+ k = index_para[i+1]
+ while(fichier[j]!= '\n'):
+ j=j+1
+ bloc_inter=bloc_inter + fichier[j:k] + '\n'
+
+ #on veut se placer sur le premier retour chariot que l'on trouve sur la ligne du dernier para
+ i = index_last_para
+ while(fichier[i] != '\n'):
+ i = i + 1
+ index_last_para = i
+ #on délimite les blocs suivants:
+ pre_bloc = fichier[:index_first_para] #fichier avant premier parametre
+ post_bloc = fichier[ index_last_para+ 1:] #fichier après dernier parametre
+
+ #on ajoute dans L tous ce qui est avant le premier paramètre
+ Fichier_Resu.append(pre_bloc)
+ Fichier_Resu.append('\n')
+ #On ajoute la nouvelle valeur des parametres
+ dim_para=len(para)
+ for j in range(dim_para):
+ Fichier_Resu.append(para[j]+'='+str(val[j]) + ';' + '\n')
+ #On ajoute à Fichier_Resu tous ce qui est entre les parametres
+ Fichier_Resu.append(bloc_inter)
+
+ Fichier_Resu.append(post_bloc)
+ #--------------------------------------------------------------------------------
+ #on va ajouter la fonction EXTRACT
+ #et on stocke les réponses calculées dans la liste Lrep
+ #qui va etre retournée par la fonction calcul_F
+ self.g_context['Lrep'] = []
+ Fichier_Resu.append('Lrep=[]'+'\n')
+ for i in range(len(reponses)):
+ Fichier_Resu.append('_F_ = EXTRACT('+str(reponses[i][0])+','+"'"+str(reponses[i][1])+"'"+','+"'"+str(reponses[i][2])+"'"+')'+'\n')
+ Fichier_Resu.append('Lrep.append(_F_)'+'\n')
+
+ #ouverture du fichier fort.3 et mise a jour de celui ci
+ x=open('fort.'+str(UL),'w')
+ x.writelines('from Accas import _F \nfrom Cata.cata import * \n')
+ x.writelines(Fichier_Resu)
+ x.close()
+ del(Fichier_Resu)
+ del(pre_bloc)
+ del(post_bloc)
+ del(fichier)
+
+ INCLUDE(UNITE = UL)
+ detr_concepts(self)
+ # on remet le fichier dans son etat initial
+ x=open('fort.'+str(UL),'w')
+ x.writelines(fichiersauv)
+ x.close()
+ return self.g_context['Lrep']
+
+#_____________________________________________
+#
+# IMPRESSIONS GRAPHIQUES
+#_____________________________________________
+
+def graphique(L_F,res_exp,reponses,iter,UL_out,interactif):
+ graphe=[]
+ impr=Gnuplot.Gnuplot()
+ Gnuplot.GnuplotOpts.prefer_inline_data=1
+ impr('set data style linespoints')
+ impr('set grid')
+ impr('set pointsize 2.')
+ impr('set terminal postscript color')
+ impr('set output "fort.'+str(UL_out)+'"')
+ for i in range(len(L_F)):
+ if interactif:
+ graphe.append(Gnuplot.Gnuplot(persist=0))
+ graphe[i]('set data style linespoints')
+ graphe[i]('set grid')
+ graphe[i]('set pointsize 2.')
+ graphe[i].xlabel(reponses[i][1])
+ graphe[i].ylabel(reponses[i][2])
+ graphe[i].title(reponses[i][0]+' Iteration '+str(iter))
+ graphe[i].plot(Gnuplot.Data(L_F[i],title='Calcul'),Gnuplot.Data(res_exp[i],title='Experimental'))
+ graphe[i]('pause 5')
+#
+ impr.xlabel(reponses[i][1])
+ impr.ylabel(reponses[i][2])
+ impr.title(reponses[i][0]+' Iteration '+str(iter))
+ impr.plot(Gnuplot.Data(L_F[i],title='Calcul'),Gnuplot.Data(res_exp[i],title='Experimental'))
+
+
+#_____________________________________________
+#
+# CONTROLE DES ENTREES UTILISATEUR
+#_____________________________________________
+
+def erreur_de_type(code_erreur,X):
+ #code_erreur ==0 --> X est une liste
+ #code erreur ==1 --> X est un char
+ #code erreur ==2 --> X est un float
+ #test est un boolean (test = 0 défaut et 1 si un test if est verifier
+ txt=""
+ if(code_erreur == 0 ):
+ if type(X) is not types.ListType:
+ txt="\nCette entrée: " +str(X)+" n'est pas une liste valide"
+ if(code_erreur == 1 ):
+ if type(X) is not types.StringType:
+ txt="\nCette entrée: " +str(X)+" n'est pas une chaine de caractère valide ; Veuillez la ressaisir en lui appliquant le type char de python"
+ if(code_erreur == 2 ):
+ if type(X) is not types.FloatType:
+ txt="\nCette entrée: " +str(X)+" n'est pas une valeur float valide ; Veuillez la ressaisir en lui appliquant le type float de python"
+ return txt
+
+
+def erreur_dimension(PARAMETRES,REPONSES):
+#On verifie que la dimension de chaque sous_liste de parametre est 4
+#et que la dimension de chaque sous_liste de REPONSES est 3
+ txt=""
+ for i in range(len(PARAMETRES)):
+ if (len(PARAMETRES[i]) != 4):
+ txt=txt + "\nLa sous-liste de la variable paramètre numéro " + str(i+1)+" n'est pas de longueur 4"
+ for i in range(len(REPONSES)):
+ if (len(REPONSES[i]) != 3):
+ txt=txt + "\nLa sous-liste de la variable réponse numéro " + str(i+1)+" n'est pas de longueur 3"
+ return txt
+
+
+def compare__dim_rep__dim_RESU_EXP(REPONSES,RESU_EXP):
+ # X et Y sont deux arguments qui doivent avoir la meme dimension
+ # pour éviter l'arret du programme
+ txt=""
+ if( len(REPONSES) != len(RESU_EXP)):
+ txt="\nVous avez entré " +str(len(REPONSES))+ " réponses et "+str(len(RESU_EXP))+ " expériences ; On doit avoir autant de réponses que de résultats expérimentaux"
+ return txt
+
+def compare__dim_poids__dim_RESU_EXP(POIDS,RESU_EXP):
+ # POIDS et Y sont deux arguments qui doivent avoir la meme dimension
+ # pour éviter l'arret du programme
+ txt=""
+ if( len(POIDS) != len(RESU_EXP)):
+ txt="\nVous avez entré " +str(len(POIDS))+ " poids et "+str(len(RESU_EXP))+ " expériences ; On doit avoir autant de poids que de résultats expérimentaux"
+ return txt
+
+
+def verif_fichier(UL,PARAMETRES,REPONSES):
+#On verifie les occurences des noms des PARAMETRES et REPONSES
+#dans le fichier de commande ASTER
+ txt=""
+ fichier = open('fort.'+str(UL),'r')
+ fic=fichier.read()
+ for i in range(len(PARAMETRES)):
+ if((string.find(fic,PARAMETRES[i][0])==-1) or ((string.find(fic,PARAMETRES[i][0]+'=')==-1) and (string.find(fic,PARAMETRES[i][0]+' ')==-1))):
+ txt=txt + "\nLe paramètre "+PARAMETRES[i][0]+" que vous avez entré pour la phase d'optimisation n'a pas été trouvé dans votre fichier de commandes ASTER"
+ for i in range(len(REPONSES)):
+ if((string.find(fic,REPONSES[i][0])==-1) or ((string.find(fic,REPONSES[i][0]+'=')==-1) and (string.find(fic,REPONSES[i][0]+' ')==-1))):
+ txt=txt + "\nLa réponse "+REPONSES[i][0]+" que vous avez entrée pour la phase d'optimisation n'a pas été trouvée dans votre fichier de commandes ASTER"
+ return txt
+
+
+def verif_valeurs_des_PARAMETRES(PARAMETRES):
+#On verifie que pour chaque PARAMETRES de l'optimisation
+# les valeurs entrées par l'utilisateur sont telles que :
+# val_inf<val_sup
+# val_init appartient à [borne_inf, borne_sup]
+# val_init!=0
+# borne_sup!=0
+# borne_inf!=0
+ txt=""
+ #verification des bornes
+ for i in range(len(PARAMETRES)):
+ if( PARAMETRES[i][2] >PARAMETRES[i][3]):
+ txt=txt + "\nLa borne inférieure "+str(PARAMETRES[i][2])+" de "+PARAMETRES[i][0]+ "est plus grande que sa borne supérieure"+str(PARAMETRES[i][3])
+ #verification de l'encadrement de val_init
+ for i in range(len(PARAMETRES)):
+ if( (PARAMETRES[i][1] < PARAMETRES[i][2]) or (PARAMETRES[i][1] > PARAMETRES[i][3])):
+ txt=txt + "\nLa valeur initiale "+str(PARAMETRES[i][1])+" de "+PARAMETRES[i][0]+ " n'est pas dans l'intervalle [borne_inf,born_inf]=["+str(PARAMETRES[i][2])+" , "+str(PARAMETRES[i][3])+"]"
+ #verification que val_init !=0
+ for i in range(len(PARAMETRES)):
+ if (PARAMETRES[i][1] == 0. ):
+ txt=txt + "\nProblème de valeurs initiales pour le paramètre "+PARAMETRES[i][0]+" : ne pas donner de valeur initiale nulle mais un ordre de grandeur."
+ #verification que borne_sup !=0
+ for i in range(len(PARAMETRES)):
+ if (PARAMETRES[i][3] == 0. ):
+ txt=txt + "\nProblème de borne supérieure pour le paramètre "+PARAMETRES[i][0]+" : ne pas donner de valeur strictement nulle."
+ #verification que borne_inf !=0
+ for i in range(len(PARAMETRES)):
+ if (PARAMETRES[i][2] == 0. ):
+ txt=txt + "\nProblème de borne inférieure pour le paramètre "+PARAMETRES[i][0]+" : ne pas donner de valeur strictement nulle."
+ return txt
+
+
+def verif_UNITE(GRAPHIQUE,UNITE_RESU):
+ # On vérifie que les unités de résultat et
+ # de graphique sont différentes
+ txt=""
+ GRAPHE_UL_OUT=GRAPHIQUE['UNITE']
+ if (GRAPHE_UL_OUT==UNITE_RESU):
+ txt=txt + "\nLes unités logiques des fichiers de résultats graphiques et de résultats d'optimisation sont les memes."
+ return txt
+
+
+
+def gestion(UL,PARAMETRES,REPONSES,RESU_EXP,POIDS,GRAPHIQUE,UNITE_RESU):
+ #Cette methode va utiliser les methodes de cette classe declarée ci_dessus
+ #test est un boolean: test=0 -> pas d'erreur
+ # test=1 -> erreur détectée
+
+ texte=""
+ #On vérifie d'abord si PARAMETRES, REPONSES, RESU_EXP sont bien des listes au sens python
+ #test de PARAMETRES
+ texte = texte + erreur_de_type(0,PARAMETRES)
+ #test de REPONSES
+ texte = texte + erreur_de_type(0,REPONSES)
+ #test de RESU_EXP
+ texte = texte + erreur_de_type(0,RESU_EXP)
+
+ #On vérifie si chaque sous liste de PARAMETRES, REPONSES, possède le type adéquat
+ #test des sous_listes de PARAMETRES
+ for i in range(len(PARAMETRES)):
+ texte = texte + erreur_de_type(0,PARAMETRES[i])
+ #test des sous_listes de REPONSES
+ for i in range(len(REPONSES)):
+ texte = texte + erreur_de_type(0,REPONSES[i])
+
+ #On verifie si la dimension de chaque sous-liste de : PARAMETRES, REPONSES
+ #il faut que:la dimension d'une sous-liste de PARAMETRES = 4
+ #et que la dimension d'une sous liste de REPONSES = 3
+ texte = texte + erreur_dimension(PARAMETRES,REPONSES)
+
+ #on verifie que l'on a autant de réponses que de résultats expérimentaux
+ texte = texte + compare__dim_rep__dim_RESU_EXP(REPONSES,RESU_EXP)
+ #on verifie que l'on a autant de poids que de résultats expérimentaux
+ texte = texte + compare__dim_poids__dim_RESU_EXP(POIDS,RESU_EXP)
+
+ #on verifie les types des arguments de chaque sous liste de PARAMETRES et REPONSES
+ #verification du type stringet type float des arguments de PARAMETRES
+ for i in range(len(PARAMETRES)):
+ texte = texte + erreur_de_type(1,PARAMETRES[i][0])
+ for k in [1,2,3]:
+ texte = texte + erreur_de_type(2,PARAMETRES[i][k])
+
+ #verification du type string pour les arguments de REPONSES
+ for i in range(len(REPONSES)):
+ for j in range(len(REPONSES[i])):
+ texte = texte + erreur_de_type(1,REPONSES[i][j])
+
+ #verification du fichier de commndes ASTER
+ texte = texte + verif_fichier(UL,PARAMETRES,REPONSES)
+
+ #verifiaction des valeurs des PARAMETRES entrées par l'utilisteur
+ texte = texte + verif_valeurs_des_PARAMETRES(PARAMETRES)
+
+ #verifiaction des unités logiques renseignées par l'utilisateur
+ texte = texte + verif_UNITE(GRAPHIQUE,UNITE_RESU)
+
+ return texte
+
+
--- /dev/null
+#@ MODIF stanley_ops Macro DATE 09/11/2005 AUTEUR ASSIRE A.ASSIRE
+# -*- coding: iso-8859-1 -*-
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+
+
+
+def stanley_ops(self,RESULTAT,MODELE,CHAM_MATER,CARA_ELEM,DISPLAY,**args):
+
+ """
+ Importation et lancement de Stanley
+ """
+
+ import os,string
+ import aster
+ from Accas import _F
+ from Noyau.N_utils import AsType
+ from Utilitai.Utmess import UTMESS
+
+ ier=0
+
+ # La macro compte pour 1 dans la numerotation des commandes
+ self.set_icmd(1)
+
+ # Redefinition eventuelle du DISPLAY
+ if DISPLAY:
+ UTMESS('I','STANLEY', 'Redefinition du DISPLAY vers : ' + DISPLAY)
+ os.environ['DISPLAY'] = DISPLAY
+
+ # On ne lance Stanley que si la variable DISPLAY est définie
+ if os.environ.has_key('DISPLAY'):
+
+ import Stanley
+ from Stanley import stanley
+
+ if (RESULTAT and MODELE and CHAM_MATER):
+ _MAIL = aster.getvectjev( string.ljust(MODELE.nom,8) + '.MODELE .NOMA ' )
+ _MAIL = string.strip(_MAIL[0])
+ MAILLAGE = self.jdc.g_context[_MAIL]
+ if CARA_ELEM:
+ stanley.STANLEY(RESULTAT,MAILLAGE,MODELE,CHAM_MATER,CARA_ELEM)
+ else:
+ stanley.STANLEY(RESULTAT,MAILLAGE,MODELE,CHAM_MATER,None)
+ else:
+ stanley.PRE_STANLEY()
+
+ else:
+ UTMESS('A','STANLEY',
+ """Aucune variable d'environnement DISPLAY définie !
+ STANLEY ne pourra pas fonctionner. On l'ignore.
+
+ Si vous etes en Interactif, cochez le bouton Suivi Interactif
+ dans ASTK.
+
+ Vous pouvez également préciser votre DISPLAY dans les arguments
+ de la commande STANLEY :
+
+ STANLEY(DISPLAY='adresse_ip:0.0');""")
+
+ return ier
--- /dev/null
+#@ MODIF test_fichier_ops Macro DATE 24/05/2006 AUTEUR CIBHHLV L.VIVAN
+# -*- coding: iso-8859-1 -*-
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+
+import sys
+import os.path
+import re
+from math import floor, log10
+from types import StringType
+import md5
+
+#-------------------------------------------------------------------------------
+def test_fichier_ops(self, UNITE, FICHIER, NB_CHIFFRE, EPSILON, VALE_K, INFO, **args):
+ """
+ Macro TEST_FICHIER permettant de tester la non-regression d'un fichier
+ 'a une tolerance' pres pour les nombres reels en calculant
+ le md5sum.
+ """
+ ier = 0
+ # La macro compte pour 1 dans la numerotation des commandes
+ self.set_icmd(1)
+
+ # On importe les definitions des commandes a utiliser dans la macro
+ # Le nom de la variable doit etre obligatoirement le nom de la commande
+ INFO_EXEC_ASTER = self.get_cmd('INFO_EXEC_ASTER')
+ DETRUIRE = self.get_cmd('DETRUIRE')
+ CREA_TABLE = self.get_cmd('CREA_TABLE')
+ TEST_TABLE = self.get_cmd('TEST_TABLE')
+
+ import aster
+ from Accas import _F
+ from Macro.test_fichier_ops import md5file
+ from Utilitai.Utmess import UTMESS
+
+ # vérifie la syntaxe des expressions régulières fournies
+ l_regexp = []
+ if args['EXPR_IGNORE']:
+ if type(args['EXPR_IGNORE']) is StringType:
+ lexp = [args['EXPR_IGNORE']]
+ else:
+ lexp = args['EXPR_IGNORE']
+ for exp in lexp:
+ try:
+ obj = re.compile(exp)
+ except re.error, s:
+ UTMESS('F', 'TEST_FICHIER',
+ '<INVALID_REGEXP> %s pour %s' % (str(s), repr(exp)))
+ else:
+ l_regexp.append(exp)
+
+ is_ok = 0
+
+ # vérifier que le fichier a été fermé
+ tinfo__ = INFO_EXEC_ASTER(LISTE_INFO='ETAT_UNITE', FICHIER=FICHIER)
+
+ if tinfo__['ETAT_UNITE', 1].find('OUVERT')>-1:
+ UTMESS('A', 'TEST_FICHIER',
+ "LE FICHIER N'A PAS ETE FERME :\n%s" % FICHIER)
+
+ # fichier correctement fermé
+ else:
+ # calcule le md5sum du fichier
+ ier, mdsum = md5file(FICHIER, NB_CHIFFRE, EPSILON, l_regexp, INFO)
+ if ier != 0:
+ if ier == 4:
+ texte_erreur = 'Fichier inexistant : '+FICHIER
+ else:
+ texte_erreur = 'Erreur dans md5file, code retour = '+str(ier)
+ texte_erreur = '<S> <TEST_FICHIER> '+texte_erreur
+ # aujourd'hui, je ne sais pas déclencher autre chose que <F>...
+ self.cr.fatal(texte_erreur)
+ return ier
+
+ # comparaison a la reference
+ if INFO > 0 :
+ # aster.affiche('MESSAGE', ' %-20s : %32s\n' % ('REFERENCE', VALE_K))
+ print ' %-20s : %32s' % ('REFERENCE',VALE_K)
+ print
+
+ if mdsum == VALE_K:
+ is_ok = 1
+
+ # produit le TEST_TABLE
+ tab1__ = CREA_TABLE(LISTE=(_F(PARA='TEST',
+ TYPE_K='K8',
+ LISTE_K='VALEUR ',),
+ _F(PARA='BOOLEEN',
+ LISTE_I=is_ok,),),)
+ if args['REFERENCE'] == 'NON_REGRESSION':
+ TEST_TABLE(TABLE=tab1__,
+ FILTRE=_F(NOM_PARA='TEST',
+ VALE_K='VALEUR ',),
+ NOM_PARA='BOOLEEN',
+ VALE_I=1,
+ PRECISION=1.e-3,
+ CRITERE='ABSOLU',
+ REFERENCE=args['REFERENCE'],
+ VERSION=args['VERSION'],)
+ else:
+ TEST_TABLE(TABLE=tab1__,
+ FILTRE=_F(NOM_PARA='TEST',
+ VALE_K='VALEUR ',),
+ NOM_PARA='BOOLEEN',
+ VALE_I=1,
+ PRECISION=1.e-3,
+ CRITERE='ABSOLU',
+ REFERENCE=args['REFERENCE'],)
+
+ DETRUIRE(CONCEPT=_F(NOM=('tinfo__','tab1__'),),
+ ALARME='NON',INFO=1,)
+ return ier
+
+
+#-------------------------------------------------------------------------------
+def sign(x):
+ return int(x/abs(x))
+
+def _round(x, n, exp):
+ v = x * 10**(-exp+n)
+ val = int(v + sign(x)*0.4999)
+ return val
+
+def entier_ini(x, nbch, exp=None):
+ #if exp is None:
+ #exp = int(floor(log10(abs(x))))
+ val = _round(x, nbch-1, exp)
+ return val, exp-nbch+1
+
+def entier_triple(x, nbch, exp_epsi):
+ #if abs(x) <= 10**exp_epsi:
+ #return '0'
+ y = _round(x * 10**(-exp_epsi), 0, 0) * 10**exp_epsi
+ exp = int(floor(log10(abs(y))))
+ z1, e1 = entier_ini(y, nbch+2, exp)
+ z2, e2 = entier_ini(z1 * 10**e1, nbch+1, exp)
+ z3, e3 = entier_ini(z2 * 10**e2, nbch, exp)
+ return '%sE%d' % (z3, e3)
+
+#-------------------------------------------------------------------------------
+def md5file(fich, nbch, epsi,
+ regexp_ignore=[], info=0, output=None, format_func=entier_triple):
+ """
+ Cette methode retourne le md5sum d'un fichier en arrondissant les nombres
+ reels a la valeur significative.
+ IN :
+ fich : nom du fichier
+ nbch : nombre de decimales significatives
+ epsi : valeur en deca de laquelle on prend 0
+ regexp_ignore : liste d'expressions régulières permettant d'ignorer
+ certaines lignes
+ output : pour rediriger l'interprétation du fichier (INFO=2)
+ dans le fichier de nom `output`,
+ info : on affiche le résumé si info>0
+ format_func : on peut préciser une autre fonction pour formatter
+ les réels...
+ OUT :
+ code retour : 0 si ok, >0 sinon
+ md5sum
+
+ NE PAS AJOUTER D'IMPORT QUI RENDRAIT CETTE FONCTION
+ INUTILISABLE EN DEHORS DE CODE_ASTER.
+ """
+ if output != None:
+ try:
+ sys.stdout = open(output, 'w')
+ except IOError, msg:
+ print "Erreur d'écriture sur %s : %s" % (output, msg)
+
+ # 1 Mo 10 Mo 100 Mo
+ # v0 2.6 s 20.4 s 196.6 s
+ # v1 2.0 s 10.3 s 94.9 s (pas de distinction entier/reel)
+ # remplacer le try/except par if re.search(...), 80% plus lent
+ # v2 10.7 s
+ if not os.path.isfile(fich):
+ return 4, ''
+ f = open(fich,'r')
+ m = md5.new()
+ exp_epsi = int(floor(log10(abs(epsi))))
+ i = 0
+ for ligne in f:
+ i = i+1
+ if info >= 2:
+ print 'LIGNE', i,
+ keep = True
+ for exp in regexp_ignore:
+ if re.search(exp, ligne):
+ keep = False
+ if info >= 2:
+ print ' >>>>>>>>>> IGNOREE <<<<<<<<<<',
+ break
+ if keep:
+ # découpe des nombres collés : 1.34E-142-1.233D+09
+ ligne = re.sub('([0-9]+)\-', '\g<1> -', ligne)
+ # conversion des DOUBLE fortran en 'E'
+ ligne = re.sub('([0-9]+)[dD]([\-\+]{0,1}[0-9]+)', '\g<1>E\g<2>', ligne)
+ r = ligne.split()
+ for x in r:
+ try:
+ xv = float(x)
+ if abs(xv)<epsi:
+ s = '0'
+ else:
+ #s = format_float % float(x)
+ s = format_func(xv, nbch, exp_epsi)
+ except ValueError:
+ s = x
+ if info >= 2:
+ print (' %'+str(nbch+7)+'s') % s,
+ m.update(s)
+ if info >= 2:
+ print
+ f.close()
+ md5sum = m.hexdigest()
+
+ affich_resu = True
+ if info >= 1:
+ while affich_resu:
+ form = ' %-20s : %32s'
+ print form % ('Fichier', fich)
+ print form % ('Nombre de lignes', str(i))
+ #print form % ('Format des reels',format_float)
+ print form % ('Nombre de chiffres', str(nbch))
+ print form % ('Epsilon', str(epsi))
+ print form % ('md5sum', md5sum)
+ if output == None:
+ affich_resu = False
+ else:
+ sys.stdout = sys.__stdout__
+ output = None
+ return 0, md5sum
+
+
+#-------------------------------------------------------------------------------
+if __name__ == '__main__':
+ from optparse import OptionParser, OptionGroup
+
+ p = OptionParser(usage='usage: %s a_tester [options]' % sys.argv[0])
+ p.add_option('-n', '--nbch',
+ action='store', dest='nbch', type='int', default=6,
+ help='nombre de chiffres significatifs')
+ p.add_option('-e', '--epsilon',
+ action='store', dest='epsi', type='float', default=1.e-14,
+ help='epsilon en dessous duquel on considère les nombres nuls')
+ p.add_option('--expr_ignore',
+ action='store', dest='exp', type='string',
+ help='expression régulière à ignorer')
+ p.add_option('-o', '--output',
+ action='store', dest='output', type='string', default='output.txt',
+ help='fichier de sortie')
+ opts, args = p.parse_args()
+
+ if len(args)<1:
+ p.print_usage()
+ sys.exit(1)
+ if opts.exp is None:
+ exp = []
+ else:
+ exp = [opts.exp]
+
+ print 'Lignes retenues dans %s' % opts.output
+ iret = md5file(args[0], opts.nbch, opts.epsi,
+ regexp_ignore=exp, info=2, output=opts.output)
+
--- /dev/null
+import os,sys
+import prefs
+import sys
+rep_macro = os.path.join(prefs.REPINI,'Cata/cataSTA7')
+sys.path.insert(0,rep_macro)
+from cata import *
--- /dev/null
+#& MODIF ENTETE DATE 31/01/2006 AUTEUR MCOURTOI M.COURTOIS
+# -*- coding: iso-8859-1 -*-
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+
+import Accas
+from Accas import *
+from Accas import _F
+import string
+import types
+import Numeric
+from math import sin,cos,tan,asin,acos,atan2,atan,sinh,cosh,tanh,exp,log,log10
+from math import sqrt,pi
+import ops
+
+try:
+ import aster
+except:
+ pass
+
+#
+__version__="$Name: BR_dev_mars_06 $"
+__Id__="$Id: cata.py,v 1.1.2.1 2006/06/20 12:13:41 pnoyret Exp $"
+#
+JdC = JDC_CATA(code='ASTER',
+ execmodul=None,
+ regles = (AU_MOINS_UN('DEBUT','POURSUITE'),
+ AU_MOINS_UN('FIN'),
+ A_CLASSER(('DEBUT','POURSUITE'),'FIN')))
+# Type le plus general
+class entier (ASSD):
+ def __init__(self,valeur=None,**args):
+ ASSD.__init__(self,**args)
+ self.valeur=valeur
+
+# Type geometriques
+class no (GEOM):pass
+class grno(GEOM):pass
+class ma (GEOM):pass
+class grma(GEOM):pass
+
+
+
+# Autres
+
+class cabl_precont (ASSD):pass
+class cara_elem (ASSD):pass
+class cham_mater (ASSD):pass
+class char_acou (ASSD):pass
+class char_cine_acou (ASSD):pass
+class char_cine_meca (ASSD):pass
+class char_cine_ther (ASSD):pass
+class char_meca (ASSD):pass
+class char_ther (ASSD):pass
+class compor_sdaster (ASSD):pass
+class courbe_sdaster (ASSD):pass
+class fiss_xfem (ASSD):pass
+class fond_fiss (ASSD):pass
+class interf_dyna_clas(ASSD):pass
+class interspfact (ASSD):pass
+class listis_sdaster (ASSD):pass
+class macr_elem_dyna (ASSD):pass
+class macr_elem_stat (ASSD):pass
+class mater_sdaster (ASSD):pass
+class melasflu_sdaster(ASSD):pass
+class modele_sdaster (ASSD):pass
+class modele_gene (ASSD):pass
+class nume_ddl_sdaster(ASSD):pass
+class nume_ddl_gene (ASSD):pass
+class obstacle_sdaster(ASSD):pass
+class sd_feti_sdaster (ASSD):pass
+class spectre_sdaster (ASSD):pass
+class surface_sdaster (ASSD):pass
+class tran_gene (ASSD):pass
+class type_flui_stru (ASSD):pass
+
+
+# liste :
+#--------------------------------
+class listr8_sdaster (ASSD):
+ def Valeurs(self) :
+ """
+ Retourne la liste des valeurs : [val1, ..., valN]
+ """
+ if not self.par_lot():
+ vale='%-19s.VALE' % self.get_name()
+ return list(aster.getvectjev(vale))
+ else:
+ raise Accas.AsException("Erreur dans listr8.Valeurs en PAR_LOT='OUI'")
+
+
+# post-traitement :
+#--------------------------------
+class post_comp_cham_el :
+ def __init__(self,valeurs,maille=None,point=None,sous_point=None) :
+ self.valeurs=valeurs
+ self.maille=maille
+ self.point=point
+ self.sous_point=sous_point
+
+class post_comp_cham_no :
+ def __init__(self,valeurs,noeud=None) :
+ self.valeurs=valeurs
+ self.noeud=noeud
+
+# maillage :
+#--------------------------------
+class maillage_sdaster(ASSD):
+ def LIST_GROUP_NO(self) :
+ """ retourne la liste des groupes de noeuds sous la forme :
+ [ (gno1, nb noeuds gno1), ...] """
+ if self.par_lot() :
+ raise Accas.AsException("Erreur dans maillage.LIST_GROUP_NO en PAR_LOT='OUI'")
+ nommail=self.get_name()
+ dic_gpno=aster.getcolljev(nommail.ljust(8)+".GROUPENO")
+ return [(gpno.strip(),len(dic_gpno[gpno])) for gpno in dic_gpno]
+ def LIST_GROUP_MA(self) :
+ """ retourne la liste des groupes de mailles sous la forme :
+ [ (gma1, nb mailles gma1, dime max des mailles gma1), ...] """
+ if self.par_lot() :
+ raise Accas.AsException("Erreur dans maillage.LIST_GROUP_MA en PAR_LOT='OUI'")
+ nommail=self.get_name()
+ nommail=nommail.ljust(8)
+ ngpma=[]
+ ltyma =aster.getvectjev("&CATA.TM.NOMTM")
+ catama=aster.getcolljev("&CATA.TM.TMDIM")
+ dic_gpma=aster.getcolljev(nommail+".GROUPEMA")
+ dimama=[catama[ltyma[ma-1]][0] for ma in aster.getvectjev(nommail+".TYPMAIL")]
+ for grp in dic_gpma.keys():
+ dim=max([dimama[ma-1] for ma in dic_gpma[grp]])
+ ngpma.append((grp.strip(),len(dic_gpma[grp]),dim))
+ return ngpma
+
+
+class squelette (maillage_sdaster):pass
+
+
+# cham_gd_sdaster (carte_sdaster,cham_no_sdaster,cham_elem_sdaster)
+#--------------------------------
+
+class cham_gd_sdaster(ASSD):pass
+
+# cham_gd_sdaster/carte_sdaster :
+#--------------------------------
+class carte_sdaster (cham_gd_sdaster):pass
+class carte_dbel_r (carte_sdaster):pass
+class carte_depl_c (carte_sdaster):pass
+class carte_depl_f (carte_sdaster):pass
+class carte_depl_r (carte_sdaster):pass
+class carte_durt_r (carte_sdaster):pass
+class carte_ener_r (carte_sdaster):pass
+class carte_epsi_r (carte_sdaster):pass
+class carte_erreur (carte_sdaster):pass
+class carte_flux_r (carte_sdaster):pass
+class carte_g_depl_r (carte_sdaster):pass
+class carte_geom_r (carte_sdaster):pass
+class carte_hydr_r (carte_sdaster):pass
+class carte_inst_r (carte_sdaster):pass
+class carte_inte_r (carte_sdaster):pass
+class carte_irra_r (carte_sdaster):pass
+class carte_neut_f (carte_sdaster):pass
+class carte_neut_r (carte_sdaster):pass
+class carte_pres_r (carte_sdaster):pass
+class carte_sief_r (carte_sdaster):pass
+class carte_sour_r (carte_sdaster):pass
+class carte_temp_f (carte_sdaster):pass
+class carte_temp_r (carte_sdaster):pass
+class carte_var2_r (carte_sdaster):pass
+class carte_vnor_c (carte_sdaster):pass
+class carte_corr_r (carte_sdaster):pass
+
+
+# cham_gd_sdaster/cham_elem_sdaster :
+#--------------------------------
+class cham_elem_sdaster(cham_gd_sdaster):
+
+ def EXTR_COMP(self,comp,lgma,topo=0) :
+ """ retourne les valeurs de la composante comp du champ sur la liste
+ de groupes de mailles lgma avec eventuellement l'info de la
+ topologie si topo>0. Si lgma est une liste vide, c'est equivalent
+ a un TOUT='OUI' dans les commandes aster
+ Attributs retourne
+ - self.valeurs : Numeric.array contenant les valeurs
+ Si on a demande la topo :
+ - self.maille : numero de mailles
+ - self.point : numero du point dans la maille
+ - self.sous_point : numero du sous point dans la maille """
+ if self.par_lot() :
+ raise Accas.AsException("Erreur dans cham_elem.EXTR_COMP en PAR_LOT='OUI'")
+
+ ncham=self.get_name()
+ ncham=ncham+(8-len(ncham))*' '
+ nchams=ncham[0:7]+'S'
+ ncmp=comp+(8-len(comp))*' '
+
+ aster.prepcompcham(ncham,nchams,ncmp,"EL ",topo,lgma)
+
+ valeurs=Numeric.array(aster.getvectjev(nchams+(19-len(ncham))*' '+'.V'))
+
+ if (topo>0) :
+ maille=(aster.getvectjev(nchams+(19-len(ncham))*' '+'.M'))
+ point=(aster.getvectjev(nchams+(19-len(ncham))*' '+'.P'))
+ sous_point=(aster.getvectjev(nchams+(19-len(ncham))*' '+'.SP'))
+ else :
+ maille=None
+ point=None
+ sous_point=None
+
+ aster.prepcompcham("__DETR__",nchams,ncmp,"EL ",topo,lgma)
+
+ return post_comp_cham_el(valeurs,maille,point,sous_point)
+
+class cham_elem_crit_r(cham_elem_sdaster):pass
+class cham_elem_dbel_r(cham_elem_sdaster):pass
+class cham_elem_depl_c(cham_elem_sdaster):pass
+class cham_elem_depl_f(cham_elem_sdaster):pass
+class cham_elem_depl_r(cham_elem_sdaster):pass
+class cham_elem_dommag(cham_elem_sdaster):pass
+class cham_elem_durt_r(cham_elem_sdaster):pass
+class cham_elem_ener_r(cham_elem_sdaster):pass
+class cham_elem_epsi_c(cham_elem_sdaster):pass
+class cham_elem_epsi_r(cham_elem_sdaster):pass
+class cham_elem_erreur(cham_elem_sdaster):pass
+class cham_elem_facy_r(cham_elem_sdaster):pass
+class cham_elem_flux_r(cham_elem_sdaster):pass
+class cham_elem_g_depl(cham_elem_sdaster):pass
+class cham_elem_geom_r(cham_elem_sdaster):pass
+class cham_elem_hydr_r(cham_elem_sdaster):pass
+class cham_elem_inst_r(cham_elem_sdaster):pass
+class cham_elem_inte_r(cham_elem_sdaster):pass
+class cham_elem_irra_r(cham_elem_sdaster):pass
+class cham_elem_neut_f(cham_elem_sdaster):pass
+class cham_elem_neut_r(cham_elem_sdaster):pass
+class cham_elem_pres_r(cham_elem_sdaster):pass
+class cham_elem_sief_c(cham_elem_sdaster):pass
+class cham_elem_sief_r(cham_elem_sdaster):pass
+class cham_elem_sour_r(cham_elem_sdaster):pass
+class cham_elem_spma_r(cham_elem_sdaster):pass
+class cham_elem_temp_f(cham_elem_sdaster):pass
+class cham_elem_temp_r(cham_elem_sdaster):pass
+class cham_elem_vari_r(cham_elem_sdaster):pass
+class cham_elem_vnor_c(cham_elem_sdaster):pass
+
+
+# cham_gd/cham_no :
+#--------------------------------
+class cham_no_sdaster(cham_gd_sdaster):
+
+ def EXTR_COMP(self,comp,lgno,topo=0) :
+ """ retourne les valeurs de la composante comp du champ sur la liste
+ de groupes de noeuds lgno avec eventuellement l'info de la
+ topologie si topo>0. Si lgno est une liste vide, c'est equivalent
+ a un TOUT='OUI' dans les commandes aster
+ Attributs retourne
+ - self.valeurs : Numeric.array contenant les valeurs
+ Si on a demande la topo (i.e. self.topo = 1) :
+ - self.noeud : numero de noeud """
+ if self.par_lot() :
+ raise Accas.AsException("Erreur dans cham_no.EXTR_COMP en PAR_LOT='OUI'")
+
+ ncham=self.get_name()
+ ncham=ncham+(8-len(ncham))*' '
+ nchams=ncham[0:7]+'S'
+ ncmp=comp+(8-len(comp))*' '
+
+ aster.prepcompcham(ncham,nchams,ncmp,"NO ",topo,lgno)
+
+ valeurs=Numeric.array(aster.getvectjev(nchams+(19-len(ncham))*' '+'.V'))
+
+ if (topo>0) :
+ noeud=(aster.getvectjev(nchams+(19-len(ncham))*' '+'.N'))
+ else :
+ noeud=None
+
+ aster.prepcompcham("__DETR__",nchams,ncmp,"NO ",topo,lgno)
+
+ return post_comp_cham_no(valeurs,noeud)
+
+class cham_no_dbel_r (cham_no_sdaster):pass
+class cham_no_depl_c (cham_no_sdaster):pass
+class cham_no_depl_f (cham_no_sdaster):pass
+class cham_no_depl_r (cham_no_sdaster):pass
+class cham_no_durt_r (cham_no_sdaster):pass
+class cham_no_ener_r (cham_no_sdaster):pass
+class cham_no_epsi_r (cham_no_sdaster):pass
+class cham_no_erreur (cham_no_sdaster):pass
+class cham_no_facy_r (cham_no_sdaster):pass
+class cham_no_flux_r (cham_no_sdaster):pass
+class cham_no_g_depl_r (cham_no_sdaster):pass
+class cham_no_geom_r (cham_no_sdaster):pass
+class cham_no_hydr_r (cham_no_sdaster):pass
+class cham_no_inst_r (cham_no_sdaster):pass
+class cham_no_inte_r (cham_no_sdaster):pass
+class cham_no_irra_r (cham_no_sdaster):pass
+class cham_no_neut_f (cham_no_sdaster):pass
+class cham_no_neut_r (cham_no_sdaster):pass
+class cham_no_pres_c (cham_no_sdaster):pass
+class cham_no_pres_r (cham_no_sdaster):pass
+class cham_no_sief_r (cham_no_sdaster):pass
+class cham_no_sour_r (cham_no_sdaster):pass
+class cham_no_spma_r (cham_no_sdaster):pass
+class cham_no_temp_c (cham_no_sdaster):pass
+class cham_no_temp_f (cham_no_sdaster):pass
+class cham_no_temp_r (cham_no_sdaster):pass
+class cham_no_vanl_r (cham_no_sdaster):pass
+class cham_no_var2_r (cham_no_sdaster):pass
+class cham_no_vnor_c (cham_no_sdaster):pass
+
+
+# resultat_sdaster : (evol_sdaster,mode_stat,mode_meca)
+#--------------------------------------
+
+class resultat_sdaster(ASSD):
+ def LIST_CHAMPS (self) :
+ if self.par_lot() :
+ raise Accas.AsException("Erreur dans resultat.LIST_CHAMPS en PAR_LOT='OUI'")
+ return aster.GetResu(self.get_name(), "CHAMPS")
+ def LIST_NOM_CMP (self) :
+ if self.par_lot() :
+ raise Accas.AsException("Erreur dans resultat.LIST_NOM_CMP en PAR_LOT='OUI'")
+ return aster.GetResu(self.get_name(), "COMPOSANTES")
+ def LIST_VARI_ACCES (self) :
+ if self.par_lot() :
+ raise Accas.AsException("Erreur dans resultat.LIST_VARI_ACCES en PAR_LOT='OUI'")
+ return aster.GetResu(self.get_name(), "VARI_ACCES")
+ def LIST_PARA (self) :
+ if self.par_lot() :
+ raise Accas.AsException("Erreur dans resultat.LIST_PARA en PAR_LOT='OUI'")
+ return aster.GetResu(self.get_name(), "PARAMETRES")
+
+class acou_harmo (resultat_sdaster):pass
+class base_modale (resultat_sdaster):pass
+class comb_fourier (resultat_sdaster):pass
+class dyna_harmo (resultat_sdaster):pass
+class dyna_trans (resultat_sdaster):pass
+class fourier_elas (resultat_sdaster):pass
+class harm_gene (resultat_sdaster):pass
+class mode_acou (resultat_sdaster):pass
+class mode_cycl (resultat_sdaster):pass
+class mode_flamb (resultat_sdaster):pass
+class mode_gene (resultat_sdaster):pass
+class mult_elas (resultat_sdaster):pass
+class theta_geom (resultat_sdaster):pass
+
+# resultat_sdaster/evol_sdaster :
+#--------------------------------
+class evol_sdaster(resultat_sdaster):pass
+class evol_char(evol_sdaster):pass
+class evol_elas(evol_sdaster):pass
+class evol_noli(evol_sdaster):pass
+class evol_ther(evol_sdaster):pass
+class evol_varc(evol_sdaster):pass
+
+# resultat_sdaster/mode_stat :
+#--------------------------------
+class mode_stat(resultat_sdaster):pass
+class mode_stat_depl(mode_stat):pass
+class mode_stat_acce(mode_stat):pass
+class mode_stat_forc(mode_stat):pass
+
+
+# resultat_sdaster/mode_meca :
+#--------------------------------
+class mode_meca(resultat_sdaster):pass
+class mode_meca_c(mode_meca):pass
+
+
+# types 'fonction' :
+#--------------------------------
+class fonction_class(ASSD):
+ def Valeurs(self):pass
+ def Parametres(self):
+ """
+ Retourne un dictionnaire contenant les parametres de la fonction ;
+ le type jeveux (FONCTION, FONCT_C, NAPPE) n'est pas retourne,
+ le dictionnaire peut ainsi etre fourni a CALC_FONC_INTERP tel quel.
+ """
+ if not self.par_lot() :
+ TypeProl={'E':'EXCLU', 'L':'LINEAIRE', 'C':'CONSTANT' }
+ prol=aster.getvectjev(string.ljust(self.get_name(),19)+'.PROL')
+ dico={
+ 'INTERPOL' : [prol[1][0:3],prol[1][4:7]],
+ 'NOM_PARA' : string.strip(prol[2][0:16]),
+ 'NOM_RESU' : string.strip(prol[3][0:16]),
+ 'PROL_DROITE' : TypeProl[prol[4][1]],
+ 'PROL_GAUCHE' : TypeProl[prol[4][0]],
+ }
+ elif hasattr(self,'etape') and self.etape.nom=='DEFI_FONCTION' :
+ dico={
+ 'INTERPOL' : self.etape['INTERPOL'],
+ 'NOM_PARA' : self.etape['NOM_PARA'],
+ 'NOM_RESU' : self.etape['NOM_RESU'],
+ 'PROL_DROITE' : self.etape['PROL_DROITE'],
+ 'PROL_GAUCHE' : self.etape['PROL_GAUCHE'],
+ }
+ if type(dico['INTERPOL'])==types.TupleType :
+ dico['INTERPOL']=list(dico['INTERPOL'])
+ elif type(dico['INTERPOL'])==types.StringType :
+ dico['INTERPOL']=[dico['INTERPOL'],]
+ if len(dico['INTERPOL'])==1 :
+ dico['INTERPOL']=dico['INTERPOL']*2
+ else:
+ raise Accas.AsException("Erreur dans fonction.Parametres en PAR_LOT='OUI'")
+ return dico
+ def Trace(self,FORMAT='TABLEAU',**kargs):
+ """Tracé d'une fonction"""
+ if self.par_lot() :
+ raise Accas.AsException("Erreur dans fonction.Trace en PAR_LOT='OUI'")
+ from Utilitai.Graph import Graph
+ gr=Graph()
+ gr.AjoutCourbe(Val=self.Valeurs(),
+ Lab=[self.Parametres()['NOM_PARA'],self.Parametres()['NOM_RESU']])
+ gr.Trace(FORMAT=FORMAT,**kargs)
+class fonction_sdaster(fonction_class):
+ def Valeurs(self) :
+ """
+ Retourne deux listes de valeurs : abscisses et ordonnees
+ """
+ if not self.par_lot():
+ vale=string.ljust(self.get_name(),19)+'.VALE'
+ lbl=list(aster.getvectjev(vale))
+ dim=len(lbl)/2
+ lx=lbl[0:dim]
+ ly=lbl[dim:2*dim]
+ return [lx,ly]
+ elif hasattr(self,'etape') and self.etape.nom=='DEFI_FONCTION' :
+ if self.etape['VALE']!=None:
+ lbl=list(self.etape['VALE'])
+ dim=len(lbl)
+ lx=[lbl[i] for i in range(0,dim,2)]
+ ly=[lbl[i] for i in range(1,dim,2)]
+ return [lx,ly]
+ elif self.etape['VALE_PARA']!=None:
+ return [self.etape['VALE_PARA'].Valeurs(),self.etape['VALE_FONC'].Valeurs()]
+ else :
+ raise Accas.AsException("Erreur dans fonction.Valeurs en PAR_LOT='OUI'")
+ def Absc(self):
+ """Retourne la liste des abscisses"""
+ return self.Valeurs()[0]
+ def Ordo(self):
+ """Retourne la liste des ordonnées"""
+ return self.Valeurs()[1]
+ def __call__(self,val):
+ ### Pour EFICAS : substitution de l'instance de classe
+ ### parametre par sa valeur
+ import types
+ if type(val)==types.InstanceType : val=val.valeur
+ ###
+ lx,ly=self.Valeurs()
+ n=len(lx)
+ if val in lx : return ly[lx.index(val)]
+ lx.append(val)
+ lx.sort()
+ indic=lx.index(val)
+ if indic==0 :
+ if self.etape['PROL_GAUCHE']=='CONSTANT':return ly[0]
+ if indic==n :
+ if self.etape['PROL_DROITE']=='CONSTANT':return ly[n-1]
+ return (ly[indic-1]+(ly[indic]-ly[indic-1])*(val-lx[indic-1])/(lx[indic+1]-lx[indic-1]))
+class para_sensi(fonction_sdaster): pass
+class fonction_c(fonction_class):
+ def Valeurs(self) :
+ """
+ Retourne trois listes de valeurs : abscisses, parties reelles et imaginaires.
+ """
+ if not self.par_lot():
+ vale=string.ljust(self.get_name(),19)+'.VALE'
+ lbl=list(aster.getvectjev(vale))
+ dim=len(lbl)/3
+ lx=lbl[0:dim]
+ lr=[]
+ li=[]
+ for i in range(dim):
+ lr.append(lbl[dim+2*i])
+ li.append(lbl[dim+2*i+1])
+ return [lx,lr,li]
+ if self.etape.nom=='DEFI_FONCTION' :
+ lbl=list(self.etape['VALE_C'])
+ dim=len(lbl)
+ lx=[lbl[i] for i in range(0,dim,3)]
+ lr=[lbl[i] for i in range(1,dim,3)]
+ li=[lbl[i] for i in range(2,dim,3)]
+ return [lx,lr,li]
+ else :
+ raise Accas.AsException("Erreur dans fonction_c.Valeurs en PAR_LOT='OUI'")
+ def Absc(self):
+ """Retourne la liste des abscisses"""
+ return self.Valeurs()[0]
+ def Ordo(self):
+ """Retourne la liste des parties réelles des ordonnées"""
+ return self.Valeurs()[1]
+ def OrdoImg(self):
+ """Retourne la liste des parties imaginaires des ordonnées"""
+ return self.Valeurs()[2]
+ def Trace(self,FORMAT='TABLEAU',**kargs):
+ """Tracé d'une fonction complexe"""
+ if self.par_lot() :
+ raise Accas.AsException("Erreur dans fonction_c.Trace en PAR_LOT='OUI'")
+ from Utilitai.Graph import Graph
+ gr=Graph()
+ gr.AjoutCourbe(Val=self.Valeurs(),
+ Lab=[self.Parametres()['NOM_PARA'],self.Parametres()['NOM_RESU'],'IMAG'])
+ gr.Trace(FORMAT=FORMAT,**kargs)
+class nappe_sdaster(fonction_class):
+ def Valeurs(self):
+ """
+ Retourne la liste des valeurs du parametre,
+ et une liste de couples (abscisses,ordonnees) de chaque fonction.
+ """
+ if self.par_lot():
+ raise Accas.AsException("Erreur dans nappe.Valeurs en PAR_LOT='OUI'")
+ nsd=string.ljust(self.get_name(),19)
+ dicv=aster.getcolljev(nsd+'.VALE')
+ # les cles de dicv sont 1,...,N (indice du parametre)
+ lpar=aster.getvectjev(nsd+'.PARA')
+ lval=[]
+ for k in range(len(dicv)):
+ lbl=dicv[k+1]
+ dim=len(lbl)/2
+ lval.append([lbl[0:dim],lbl[dim:2*dim]])
+ return [lpar,lval]
+ def Parametres(self):
+ """
+ Retourne un dictionnaire contenant les parametres de la nappe,
+ le type jeveux (NAPPE) n'est pas retourne,
+ le dictionnaire peut ainsi etre fourni a CALC_FONC_INTERP tel quel,
+ et une liste de dictionnaire des parametres de chaque fonction.
+ """
+ if self.par_lot():
+ raise Accas.AsException("Erreur dans nappe.Parametres en PAR_LOT='OUI'")
+ TypeProl={'E':'EXCLU', 'L':'LINEAIRE', 'C':'CONSTANT' }
+ prol=aster.getvectjev(string.ljust(self.get_name(),19)+'.PROL')
+ dico={
+ 'INTERPOL' : [prol[1][0:3],prol[1][4:7]],
+ 'NOM_PARA' : prol[2][0:16],
+ 'NOM_RESU' : prol[3][0:16],
+ 'PROL_DROITE' : TypeProl[prol[4][0]],
+ 'PROL_GAUCHE' : TypeProl[prol[4][1]],
+ 'NOM_PARA_FONC' : prol[5][0:4],
+ }
+ lparf=[]
+ nbf=(len(prol)-6)/2
+ for i in range(nbf):
+ dicf={
+ 'INTERPOL_FONC' : [prol[6+i*2][0:3],prol[6+i*2][4:7]],
+ 'PROL_DROITE_FONC' : TypeProl[prol[7+i*2][0]],
+ 'PROL_GAUCHE_FONC' : TypeProl[prol[7+i*2][1]],
+ }
+ lparf.append(dicf)
+ return [dico,lparf]
+ def Trace(self,FORMAT='TABLEAU',**kargs):
+ """Tracé d'une nappe"""
+ if self.par_lot():
+ raise Accas.AsException("Erreur dans nappe.Trace en PAR_LOT='OUI'")
+ from Utilitai.Graph import Graph
+ gr=Graph()
+ lv=self.Valeurs()[1]
+ dp=self.Parametres()[0]
+ for lx,ly in lv:
+ gr.AjoutCourbe(Val=[lx,ly], Lab=[dp['NOM_PARA_FONC'],dp['NOM_RESU']])
+ gr.Trace(FORMAT=FORMAT,**kargs)
+
+# matr_asse :
+#--------------------------------
+class matr_asse(ASSD):pass
+
+class matr_asse_gene(matr_asse):pass
+class matr_asse_gene_r(matr_asse_gene):pass
+class matr_asse_gene_c(matr_asse_gene):pass
+
+class matr_asse_gd(matr_asse):pass
+class matr_asse_depl_c(matr_asse_gd):pass
+class matr_asse_depl_r(matr_asse_gd):pass
+class matr_asse_pres_c(matr_asse_gd):pass
+class matr_asse_pres_r(matr_asse_gd):pass
+class matr_asse_temp_c(matr_asse_gd):pass
+class matr_asse_temp_r(matr_asse_gd):pass
+
+# matr_elem :
+#--------------------------------
+class matr_elem(ASSD):pass
+class matr_elem_depl_c(matr_elem):pass
+class matr_elem_depl_r(matr_elem):pass
+class matr_elem_pres_c(matr_elem):pass
+class matr_elem_temp_r(matr_elem):pass
+
+
+
+
+# table :
+#--------------------------------
+class table_sdaster(ASSD):
+ def __getitem__(self,key):
+ if self.par_lot():
+ raise Accas.AsException("Erreur dans table.__getitem__ en PAR_LOT='OUI'")
+ requete = '%-24s' % key[0]
+ tblp = '%-19s.TBLP' % self.get_name()
+ tabnom=list(aster.getvectjev(tblp))
+ for i in range(len(tabnom)) :
+ if tabnom[i]==requete: break
+ resu=aster.getvectjev(tabnom[i+2])
+ exist=aster.getvectjev(tabnom[i+3])
+ if key[1]>len(resu) or exist[key[1]-1]==0:
+ raise KeyError
+ else:
+ return resu[key[1]-1]
+ def Nonefy(self,l1,l2) :
+ if l2==0 : return None
+ else : return l1
+ def EXTR_TABLE(self) :
+ """Produit un objet Table à partir du contenu d'une table Aster
+ """
+ if self.par_lot():
+ raise Accas.AsException("Erreur dans table.EXTR_TABLE en PAR_LOT='OUI'")
+ from Utilitai.Table import Table
+ tblp=string.ljust(self.get_name(),19)+'.TBLP'
+ tabnom=list(aster.getvectjev(tblp))
+ nparam=len(tabnom)/4
+ lparam=[tabnom[4*i:4*i+4] for i in range(nparam)]
+ dval={}
+ # liste des paramètres et des types
+ lpar=[]
+ ltyp=[]
+ for i in lparam :
+ value=list(aster.getvectjev(i[2]))
+ exist=aster.getvectjev(i[3])
+ dval[string.strip(i[0])]=map(self.Nonefy,value,exist)
+ lpar.append(string.strip(i[0]))
+ ltyp.append(string.strip(i[1]))
+ n=len(dval[lpar[0]])
+ # contenu : liste de dict
+ lisdic=[]
+ for i in range(n) :
+ d={}
+ for p in lpar : d[p]=dval[p][i]
+ lisdic.append(d)
+ # titre
+ titj=aster.getvectjev(self.get_name().ljust(19)+'.TITR')
+ if titj<>None:
+ titr='\n'.join(titj)
+ else:
+ titr=''
+ return Table(lisdic, lpar, ltyp, titr)
+
+class table_jeveux(table_sdaster):
+ """Classe permettant d'accéder à une table jeveux qui n'a pas d'ASSD associée,
+ c'est le cas des concepts résultats (table, evol_xxxx) dérivés."""
+ def __init__(self,nom_jeveux):
+ self.nom=nom_jeveux
+
+class tabl_aire_int (table_sdaster):pass
+class tabl_calc_g_loca(table_sdaster):pass
+class tabl_calc_g_th (table_sdaster):pass
+class tabl_cara_geom (table_sdaster):pass
+class tabl_char_limite(table_sdaster):pass
+class tabl_ener_elas (table_sdaster):pass
+class tabl_ener_pot (table_sdaster):pass
+class tabl_ener_cin (table_sdaster):pass
+class tabl_trav_ext (table_sdaster):pass
+class tabl_ener_totale(table_sdaster):pass
+class tabl_indic_ener (table_sdaster):pass
+class tabl_indic_seuil(table_sdaster):pass
+class tabl_intsp (table_sdaster):pass
+class tabl_mass_iner (table_sdaster):pass
+class tabl_post_alea (table_sdaster):pass
+class tabl_post_beta (table_sdaster):pass
+class tabl_post_dyna (table_sdaster):pass
+class tabl_post_f_alea(table_sdaster):pass
+class tabl_post_fatig (table_sdaster):pass
+class tabl_post_gouj2e(table_sdaster):pass
+class tabl_post_k (table_sdaster):pass
+class tabl_post_rccm (table_sdaster):pass
+class tabl_post_rele (table_sdaster):pass
+class tabl_post_simpli(table_sdaster):pass
+class tabl_post_usur (table_sdaster):pass
+class tabl_reca_weib (table_sdaster):pass
+class tabl_rice_tracey(table_sdaster):pass
+class tabl_texture (table_sdaster):pass
+class tabl_trc (table_sdaster):pass
+class tabl_weibull (table_sdaster):pass
+
+
+# vect_asse :
+#--------------------------------
+class vect_asse(ASSD):pass
+class vect_asse_gene(vect_asse):pass
+
+
+# vect_elem :
+#--------------------------------
+class vect_elem(ASSD):pass
+class vect_elem_depl_r(vect_elem):pass
+class vect_elem_pres_c(vect_elem):pass
+class vect_elem_pres_r(vect_elem):pass
+class vect_elem_temp_r(vect_elem):pass
+
+#& MODIF COMMUN DATE 11/10/2004 AUTEUR DURAND C.DURAND
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2003 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+def C_COMP_INCR() : return FACT(statut='f',min=1,max='**', #COMMUN#
+ RELATION =SIMP(statut='o',typ='TXM',defaut="VMIS_ISOT_TRAC",
+ into=( "ELAS",
+ "VMIS_ISOT_TRAC",
+ "VISC_ISOT_TRAC",
+ "VMIS_ISOT_LINE",
+ "VISC_ISOT_LINE",
+ "VMIS_ECMI_TRAC",
+ "VMIS_ECMI_LINE",
+ "LABORD_1D",
+ "ENDO_FRAGILE",
+ "ENDO_ISOT_BETON",
+ "ENDO_ORTH_BETON",
+ "MAZARS",
+ "JOINT_BA",
+ "RUPT_FRAG",
+ "BARENBLATT",
+ "META_P_IL",
+ "META_P_IL_PT",
+ "META_P_IL_RE",
+ "META_P_IL_PT_RE",
+ "META_V_IL",
+ "META_V_IL_PT",
+ "META_V_IL_RE",
+ "META_V_IL_PT_RE",
+ "META_P_INL",
+ "META_P_INL_PT",
+ "META_P_INL_RE",
+ "META_P_INL_PT_RE",
+ "META_V_INL",
+ "META_V_INL_PT",
+ "META_V_INL_RE",
+ "META_V_INL_PT_RE",
+ "META_P_CL",
+ "META_P_CL_PT",
+ "META_P_CL_RE",
+ "META_P_CL_PT_RE",
+ "META_V_CL",
+ "META_V_CL_PT",
+ "META_V_CL_RE",
+ "META_V_CL_PT_RE",
+ "VMIS_CINE_LINE",
+ "VISC_TAHERI",
+ "CHABOCHE",
+ "VISCOCHAB",
+ "VISC_CIN1_CHAB",
+ "VISC_CIN2_CHAB",
+ "POLY_CFC",
+ "LMARC",
+ "ROUSSELIER",
+ "ROUSS_PR",
+ "ROUSS_VISC",
+ "VMIS_POU_LINE",
+ "VMIS_POU_FLEJOU",
+ "COULOMB",
+ "ARME",
+ "ASSE_CORN",
+ "NORTON_HOFF",
+ "LEMAITRE",
+ "ZIRC_CYRA2",
+ "VISC_IRRA_LOG",
+ "ZIRC_EPRI",
+ "ASSE_COMBU",
+ "VENDOCHAB",
+ "NADAI_B",
+ "DIS_CONTACT",
+ "DIS_CHOC",
+ "DIS_GOUJ2E_PLAS",
+ "DIS_GOUJ2E_ELAS",
+ "GRILLE_ISOT_LINE",
+ "GRILLE_CINE_LINE",
+ "GRILLE_PINTO_MEN",
+ "PINTO_MENEGOTTO",
+ "CJS",
+ "CAM_CLAY",
+ "BARCELONE",
+ "LAIGLE",
+ "DRUCKER_PRAGER",
+ "OHNO",
+ "GRANGER_FP",
+ "GRANGER_FP_INDT",
+ "GRANGER_FP_V",
+ "BAZANT_FD",
+ "BETON_UMLV_FP",
+ "BETON_DOUBLE_DP",
+ "KIT_HM",
+ "KIT_HHM",
+ "KIT_THH",
+ "KIT_THV",
+ "KIT_THM",
+ "KIT_THHM",
+ "VMIS_ASYM_LINE",
+ "ELAS_THM",
+ "SURF_ETAT_NSAT",
+ "SURF_ETAT_SATU",
+ "CAM_CLAY_THM",
+ "KIT_DDI",
+ "GLRC",
+ "SANS",
+ "CORR_ACIER",
+ "MONOCRISTAL",
+ "POLYCRISTAL",
+ ) ),
+ ELAS =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
+ SANS =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
+ CORR_ACIER =SIMP(statut='c',typ='I',defaut=3,into=(3,)),
+ VMIS_ISOT_TRAC =SIMP(statut='c',typ='I',defaut=2,into=(2,)),
+ VISC_ISOT_TRAC =SIMP(statut='c',typ='I',defaut=3,into=(3,)),
+ VMIS_ISOT_LINE =SIMP(statut='c',typ='I',defaut=2,into=(2,)),
+ VISC_ISOT_LINE =SIMP(statut='c',typ='I',defaut=3,into=(3,)),
+ VMIS_ECMI_TRAC =SIMP(statut='c',typ='I',defaut=8,into=(8,)),
+ VMIS_ECMI_LINE =SIMP(statut='c',typ='I',defaut=8,into=(8,)),
+ LABORD_1D =SIMP(statut='c',typ='I',defaut=5,into=(5,)),
+ ENDO_FRAGILE =SIMP(statut='c',typ='I',defaut=2,into=(2,)),
+ ENDO_ISOT_BETON =SIMP(statut='c',typ='I',defaut=2,into=(2,)),
+ ENDO_ORTH_BETON =SIMP(statut='c',typ='I',defaut=7,into=(7,)),
+ MAZARS =SIMP(statut='c',typ='I',defaut=3,into=(3,)),
+ JOINT_BA =SIMP(statut='c',typ='I',defaut=6,into=(6,)),
+ RUPT_FRAG =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
+ BARENBLATT =SIMP(statut='c',typ='I',defaut=3,into=(3,)),
+ META_P_IL =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
+ META_P_IL_PT =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
+ META_P_IL_RE =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
+ META_P_IL_PT_RE =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
+ META_V_IL =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
+ META_V_IL_PT =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
+ META_V_IL_RE =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
+ META_V_IL_PT_RE =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
+ META_P_INL =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
+ META_P_INL_PT =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
+ META_P_INL_RE =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
+ META_P_INL_PT_RE =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
+ META_V_INL =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
+ META_V_INL_PT =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
+ META_V_INL_RE =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
+ META_V_INL_PT_RE =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
+ META_P_CL =SIMP(statut='c',typ='I',defaut=6,into=(6,)),
+ META_P_CL_PT =SIMP(statut='c',typ='I',defaut=6,into=(6,)),
+ META_P_CL_RE =SIMP(statut='c',typ='I',defaut=6,into=(6,)),
+ META_P_CL_PT_RE =SIMP(statut='c',typ='I',defaut=6,into=(6,)),
+ META_V_CL =SIMP(statut='c',typ='I',defaut=6,into=(6,)),
+ META_V_CL_PT =SIMP(statut='c',typ='I',defaut=6,into=(6,)),
+ META_V_CL_RE =SIMP(statut='c',typ='I',defaut=6,into=(6,)),
+ META_V_CL_PT_RE =SIMP(statut='c',typ='I',defaut=6,into=(6,)),
+ VMIS_CINE_LINE =SIMP(statut='c',typ='I',defaut=7,into=(7,)),
+ CHABOCHE =SIMP(statut='c',typ='I',defaut=14,into=(14,)),
+ VISCOCHAB =SIMP(statut='c',typ='I',defaut=28,into=(28,)),
+ VISC_CIN1_CHAB =SIMP(statut='c',typ='I',defaut=8,into=(8,)),
+ VISC_CIN2_CHAB =SIMP(statut='c',typ='I',defaut=14,into=(14,)),
+ POLY_CFC =SIMP(statut='c',typ='I',defaut=1688,into=(1688,)),
+ LMARC =SIMP(statut='c',typ='I',defaut=20,into=(20,)),
+ VISC_TAHERI =SIMP(statut='c',typ='I',defaut=9,into=(9,)),
+ ROUSSELIER =SIMP(statut='c',typ='I',defaut=9,into=(9,)),
+ ROUSS_PR =SIMP(statut='c',typ='I',defaut=3,into=(3,)),
+ ROUSS_VISC =SIMP(statut='c',typ='I',defaut=3,into=(3,)),
+ VMIS_POU_LINE =SIMP(statut='c',typ='I',defaut=9,into=(9,)),
+ VMIS_POU_FLEJOU =SIMP(statut='c',typ='I',defaut=9 ,into=(9,)),
+ COULOMB =SIMP(statut='c',typ='I',defaut=4,into=(4,)),
+ ASSE_CORN =SIMP(statut='c',typ='I',defaut=4,into=(4,)),
+ ARME =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
+ NORTON_HOFF =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
+ LEMAITRE =SIMP(statut='c',typ='I',defaut=2,into=(2,)),
+ ZIRC_CYRA2 =SIMP(statut='c',typ='I',defaut=2,into=(2,)),
+ ZIRC_EPRI =SIMP(statut='c',typ='I',defaut=2,into=(2,)),
+ VISC_IRRA_LOG =SIMP(statut='c',typ='I',defaut=2,into=(2,)),
+ ASSE_COMBU =SIMP(statut='c',typ='I',defaut=5,into=(5,)),
+ NADAI_B =SIMP(statut='c',typ='I',defaut=34,into=(34,)),
+ VENDOCHAB =SIMP(statut='c',typ='I',defaut=10,into=(10,)),
+ GRILLE_ISOT_LINE=SIMP(statut='c',typ='I',defaut=4,into=(4,)),
+ GRILLE_CINE_LINE=SIMP(statut='c',typ='I',defaut=4,into=(4,)),
+ GRILLE_PINTO_MEN=SIMP(statut='c',typ='I',defaut=16,into=(16,)),
+ DIS_CONTACT =SIMP(statut='c',typ='I',defaut=6,into=(6,)),
+ DIS_CHOC =SIMP(statut='c',typ='I',defaut=7,into=(7,)),
+ DIS_GOUJ2E_PLAS =SIMP(statut='c',typ='I',defaut=2,into=(2,)),
+ DIS_GOUJ2E_ELAS =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
+ PINTO_MENEGOTTO =SIMP(statut='c',typ='I',defaut=8,into=(8,)),
+ CJS =SIMP(statut='c',typ='I',defaut=16,into=(16,)),
+ CAM_CLAY =SIMP(statut='c',typ='I',defaut=2,into=(2,)),
+ BARCELONE =SIMP(statut='c',typ='I',defaut=5,into=(5,)),
+ LAIGLE =SIMP(statut='c',typ='I',defaut=4,into=(4,)),
+ DRUCKER_PRAGER =SIMP(statut='c',typ='I',defaut=3,into=(3,)),
+ OHNO =SIMP(statut='c',typ='I',defaut=32,into=(32,)),
+ GRANGER_FP =SIMP(statut='c',typ='I',defaut=55,into=(55,)),
+ GRANGER_FP_INDT =SIMP(statut='c',typ='I',defaut=55,into=(55,)),
+ GRANGER_FP_V =SIMP(statut='c',typ='I',defaut=55,into=(55,)),
+ BAZANT_FD =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
+ BETON_DOUBLE_DP =SIMP(statut='c',typ='I',defaut=4,into=(4,)),
+ KIT_HM =SIMP(statut='c',typ='I',defaut=0,into=(0,)),
+ KIT_HHM =SIMP(statut='c',typ='I',defaut=0,into=(0,)),
+ KIT_THH =SIMP(statut='c',typ='I',defaut=0,into=(0,)),
+ KIT_THV =SIMP(statut='c',typ='I',defaut=0,into=(0,)),
+ KIT_THM =SIMP(statut='c',typ='I',defaut=0,into=(0,)),
+ KIT_THHM =SIMP(statut='c',typ='I',defaut=0,into=(0,)),
+ VMIS_ASYM_LINE =SIMP(statut='c',typ='I',defaut=4,into=(4,)),
+ BETON_UMLV_FP =SIMP(statut='c',typ='I',defaut=21,into=(21,)),
+ GLRC =SIMP(statut='c',typ='I',defaut=7,into=(7,)),
+
+ b_monox = BLOC(condition = "RELATION == 'MONOCRISTAL' ",
+ fr="SD issue de DEFI_COMPOR",
+ COMPOR =SIMP(statut='o',typ=compor_sdaster,max=1),),
+#
+ b_polyx = BLOC(condition = "RELATION == 'POLYCRISTAL' ",
+ fr="SD issue de DEFI_COMPOR",
+ COMPOR =SIMP(statut='o',typ=compor_sdaster,max=1),),
+#
+
+
+
+ RELATION_KIT =SIMP(statut='f',typ='TXM',max='**',validators=NoRepeat(),
+ into=(
+# MECA
+ "ELAS",
+ "CJS",
+ "CAM_CLAY",
+ "BARCELONE",
+ "LAIGLE",
+ "DRUCKER_PRAGER",
+ "ELAS_THM",
+ "SURF_ETAT_NSAT",
+ "SURF_ETAT_SATU",
+ "CAM_CLAY_THM",
+ "MAZARS",
+ "ENDO_ISOT_BETON",
+# THMC
+ "GAZ",
+ "LIQU_SATU",
+ "LIQU_SATU_GAT",
+ "LIQU_GAZ_ATM",
+ "LIQU_VAPE_GAZ",
+ "LIQU_AD_GAZ_VAPE",
+ "LIQU_VAPE",
+ "LIQU_NSAT_GAT",
+ "LIQU_GAZ",
+# HYDR
+ "HYDR_UTIL",
+ "HYDR",
+ "HYDR_ENDO",
+# MECA_META
+ "ACIER",
+ "ZIRC",
+# MECA KIT_DDI
+ "VMIS_ISOT_TRAC",
+ "VMIS_ISOT_LINE",
+ "VMIS_ISOT_CINE",
+ "GRANGER_FP",
+ "GRANGER_FP_INDT",
+ "GRANGER_FP_V",
+ "BETON_UMLV_FP",
+ "ROUSS_PR",
+ "CHABOCHE",
+ "OHNO",
+ "NADAI_B",
+ "BETON_DOUBLE_DP",
+ ),),
+
+
+ ELAS_THM =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
+ SURF_ETAT_NSAT =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
+ SURF_ETAT_SATU =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
+ CAM_CLAY_THM =SIMP(statut='c',typ='I',defaut=6,into=(6,)),
+ GAZ =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
+ LIQU_SATU =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
+ LIQU_SATU_GAT =SIMP(statut='c',typ='I',defaut=2,into=(2,)),
+ LIQU_GAZ_ATM =SIMP(statut='c',typ='I',defaut=2,into=(2,)),
+ LIQU_VAPE_GAZ =SIMP(statut='c',typ='I',defaut=3,into=(3,)),
+ LIQU_AD_GAZ_VAPE=SIMP(statut='c',typ='I',defaut=3,into=(3,)),
+ LIQU_VAPE =SIMP(statut='c',typ='I',defaut=3,into=(3,)),
+ LIQU_NSAT_GAT =SIMP(statut='c',typ='I',defaut=3,into=(3,)),
+ LIQU_GAZ =SIMP(statut='c',typ='I',defaut=2,into=(2,)),
+ HYDR_UTIL =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
+ HYDR =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
+ HYDR_ENDO =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
+ ACIER =SIMP(statut='c',typ='I',defaut=5,into=(5,)),
+ ZIRC =SIMP(statut='c',typ='I',defaut=3,into=(3,)),
+
+ DEFORMATION =SIMP(statut='f',typ='TXM',defaut="PETIT",into=("PETIT","PETIT_REAC","SIMO_MIEHE","GREEN_GR","GREEN",)),
+ ALGO_C_PLAN =SIMP(statut='f',typ='TXM',defaut="ANALYTIQUE",into=("DEBORST","ANALYTIQUE",)),
+ ALGO_1D =SIMP(statut='f',typ='TXM',defaut="ANALYTIQUE",into=("DEBORST","ANALYTIQUE",)),
+ regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ ) ;
+#& MODIF COMMUN DATE 06/04/2004 AUTEUR DURAND C.DURAND
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2003 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE VABHHTS J.PELLET
+# ce fichier contient la liste des "into" possibles pour le mot cle NOM_CHAM
+# c'est a dire les noms de champs des SD RESULTAT (DATA de la routine RSCRSD)
+def C_NOM_CHAM_INTO() : return ("ACCE", #COMMUN#
+ "ACCE_ABSOLU",
+ "ALPH0_ELGA_EPSP",
+ "ALPHP_ELGA_ALPH0",
+ "COMPORTEMENT",
+ "COMPORTHER",
+ "CRIT_ELNO_RUPT",
+ "DCHA_ELGA_SIGM",
+ "DCHA_ELNO_SIGM",
+ "DCHA_NOEU_SIGM",
+ "DEDE_ELNO_DLDE",
+ "DEDE_NOEU_DLDE",
+ "DEGE_ELNO_DEPL",
+ "DEGE_NOEU_DEPL",
+ "DEPL",
+ "DEPL_ABSOLU",
+ "DESI_ELNO_DLSI",
+ "DESI_NOEU_DLSI",
+ "DETE_ELNO_DLTE",
+ "DETE_NOEU_DLTE",
+ "DURT_ELGA_META",
+ "DURT_ELNO_META",
+ "DURT_NOEU_META",
+ "ECIN_ELEM_DEPL",
+ "EFGE_ELNO_CART",
+ "EFGE_ELNO_DEPL",
+ "EFGE_NOEU_CART",
+ "EFGE_NOEU_DEPL",
+ "ENDO_ELGA",
+ "ENDO_ELNO_ELGA",
+ "ENDO_ELNO_SIGA",
+ "ENDO_ELNO_SINO",
+ "ENDO_NOEU_SINO",
+ "ENEL_ELGA",
+ "ENEL_ELNO_ELGA",
+ "ENEL_NOEU_ELGA",
+ "EPEQ_ELNO_TUYO",
+ "EPGR_ELGA",
+ "EPGR_ELNO",
+ "EPME_ELGA_DEPL",
+ "EPME_ELNO_DEPL",
+ "EPMG_ELGA_DEPL",
+ "EPMG_ELNO_DEPL",
+ "EPMG_NOEU_DEPL",
+ "EPOT_ELEM_DEPL",
+ "EPSA_ELNO",
+ "EPSA_NOEU",
+ "EPSG_ELGA_DEPL",
+ "EPSG_ELNO_DEPL",
+ "EPSG_NOEU_DEPL",
+ "EPSI_ELGA_DEPL",
+ "EPSI_ELNO_DEPL",
+ "EPSI_ELNO_TUYO",
+ "EPSI_NOEU_DEPL",
+ "EPSP_ELGA",
+ "EPSP_ELNO",
+ "EPSP_ELNO_ZAC",
+ "EPSP_NOEU",
+ "EPSP_NOEU_ZAC",
+ "EQUI_ELGA_EPME",
+ "EQUI_ELGA_EPSI",
+ "EQUI_ELGA_SIGM",
+ "EQUI_ELNO_EPME",
+ "EQUI_ELNO_EPSI",
+ "EQUI_ELNO_SIGM",
+ "EQUI_NOEU_EPME",
+ "EQUI_NOEU_EPSI",
+ "EQUI_NOEU_SIGM",
+ "ERRE_ELEM_NOZ1",
+ "ERRE_ELEM_NOZ2",
+ "ERRE_ELGA_NORE",
+ "ERRE_ELNO_ELGA",
+ "ERRE_NOEU_ELGA",
+ "ERTH_ELEM_TEMP",
+ "ERTH_ELNO_ELEM",
+ "ETOT_ELEM",
+ "ETOT_ELGA",
+ "ETOT_ELNO_ELGA",
+ "FLUX_ELGA_TEMP",
+ "FLUX_ELNO_TEMP",
+ "FLUX_NOEU_TEMP",
+ "FORC_NODA",
+ "FSUR_2D",
+ "FSUR_3D",
+ "FVOL_2D",
+ "FVOL_3D",
+ "GRAD_NOEU_THETA",
+ "HYDR_ELGA",
+ "HYDR_ELNO_ELGA",
+ "HYDR_NOEU_ELGA",
+ "INDI_LOCA_ELGA",
+ "INTE_ELNO_ACTI",
+ "INTE_ELNO_REAC",
+ "INTE_NOEU_ACTI",
+ "INTE_NOEU_REAC",
+ "IRRA",
+ "LANL_ELGA",
+ "META_ELGA_TEMP",
+ "META_ELNO_TEMP",
+ "META_NOEU_TEMP",
+ "MODE_FLAMB",
+ "PMPB_ELGA_SIEF",
+ "PMPB_ELNO_SIEF",
+ "PMPB_NOEU_SIEF",
+ "PRES",
+ "PRES_DBEL_DEPL",
+ "PRES_ELNO_DBEL",
+ "PRES_ELNO_IMAG",
+ "PRES_ELNO_REEL",
+ "PRES_NOEU_DBEL",
+ "PRES_NOEU_IMAG",
+ "PRES_NOEU_REEL",
+ "RADI_ELGA_SIGM",
+ "RADI_ELNO_SIGM",
+ "RADI_NOEU_SIGM",
+ "REAC_NODA",
+ "SIEF_ELGA",
+ "SIEF_ELGA_DEPL",
+ "SIEF_ELNO",
+ "SIEF_ELNO_ELGA",
+ "SIEF_NOEU",
+ "SIEF_NOEU_ELGA",
+ "SIEQ_ELNO_TUYO",
+ "SIGM_ELNO_CART",
+ "SIGM_ELNO_COQU",
+ "SIGM_ELNO_DEPL",
+ "SIGM_ELNO_SIEF",
+ "SIGM_ELNO_TUYO",
+ "SIGM_ELNO_ZAC",
+ "SIGM_NOEU_CART",
+ "SIGM_NOEU_COQU",
+ "SIGM_NOEU_DEPL",
+ "SIGM_NOEU_SIEF",
+ "SIGM_NOEU_ZAC",
+ "SIGM_NOZ1_ELGA",
+ "SIGM_NOZ2_ELGA",
+ "SIPO_ELNO_DEPL",
+ "SIPO_ELNO_SIEF",
+ "SIPO_NOEU_DEPL",
+ "SIPO_NOEU_SIEF",
+ "SIRE_ELNO_DEPL",
+ "SIRE_NOEU_DEPL",
+ "SOUR_ELGA_ELEC",
+ "TEMP",
+ "THETA",
+ "VALE_CONT",
+ "VALE_NCOU_MAXI",
+ "VARI_ELGA",
+ "VARI_ELGA_ZAC",
+ "VARI_ELNO",
+ "VARI_ELNO_COQU",
+ "VARI_ELNO_ELGA",
+ "VARI_ELNO_TUYO",
+ "VARI_NOEU",
+ "VARI_NOEU_ELGA",
+ "VARI_NON_LOCAL",
+ "VITE",
+ "VITE_ABSOLU",
+ "VITE_VENT",
+ )
+#& MODIF COMMUN DATE 16/06/2004 AUTEUR DURAND C.DURAND
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# ce fichier contient la liste des PARA possibles pour les fonctions et les nappes
+def C_PARA_FONCTION() : return ( #COMMUN#
+ "DX","DY","DZ","DRX","DRY","DRZ","TEMP","TSEC",
+ "INST","X","Y","Z","EPSI","META","FREQ","PULS","DSP",
+ "AMOR","ABSC","SIGM","HYDR","SECH","PORO","SAT",
+ "PGAZ","PCAP","VITE","ENDO","NORM","EPAIS",)
+#& MODIF COMMUN DATE 03/11/2004 AUTEUR CIBHHPD L.SALMONA
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+#
+# ce fichier contient la liste des "into" possibles pour le mot cle TYPE_CHAM
+# c'est a dire les noms des types de champ des SD RESULTAT (DATA de la routine RSCRSD)
+def C_TYPE_CHAM_INTO() : return ("ACCE", #COMMUN#
+ "CART_CORR_R",
+ "NOEU_DBEL_R", "ELEM_DBEL_R", "ELNO_DBEL_R", "ELGA_DBEL_R",
+ "NOEU_DEPL_C", "ELEM_DEPL_C", "ELNO_DEPL_C", "ELGA_DEPL_C",
+ "CART_DEPL_F", "NOEU_DEPL_F", "ELEM_DEPL_F", "ELNO_DEPL_F", "ELGA_DEPL_F",
+ "CART_DEPL_R", "NOEU_DEPL_R", "ELEM_DEPL_R", "ELNO_DEPL_R", "ELGA_DEPL_R",
+ "NOEU_DURT_R", "ELEM_DURT_R", "ELNO_DURT_R", "ELGA_DURT_R",
+ "CART_ENER_R", "NOEU_ENER_R", "ELEM_ENER_R", "ELNO_ENER_R", "ELGA_ENER_R",
+ "NOEU_EPSI_R", "ELEM_EPSI_R", "ELNO_EPSI_R", "ELGA_EPSI_R",
+ "NOEU_ERREUR", "ELEM_ERREUR", "ELNO_ERREUR", "ELGA_ERREUR",
+ "NOEU_FLUX_R", "ELEM_FLUX_R", "ELNO_FLUX_R", "ELGA_FLUX_R",
+ "CART_GEOM_R", "NOEU_GEOM_R", "ELEM_GEOM_R", "ELNO_GEOM_R", "ELGA_GEOM_R",
+ "NOEU_G_DEPL_R","ELEM_G_DEPL_R","ELNO_G_DEPL_R","ELGA_G_DEPL_R",
+ "NOEU_HYDR_R", "ELEM_HYDR_R", "ELNO_HYDR_R", "ELGA_HYDR_R",
+ "NOEU_INST_R", "ELEM_INST_R", "ELNO_INST_R", "ELGA_INST_R",
+ "NOEU_INTE_R", "ELEM_INTE_R", "ELNO_INTE_R", "ELGA_INTE_R",
+ "CART_IRRA_R", "NOEU_IRRA_R", "ELEM_IRRA_R", "ELNO_IRRA_R", "ELGA_IRRA_R",
+ "NOEU_META_R", "ELEM_META_R", "ELNO_META_R", "ELGA_META_R",
+ "NOEU_NEUT_F", "ELEM_NEUT_F", "ELNO_NEUT_F", "ELGA_NEUT_F",
+ "CART_NEUT_R", "NOEU_NEUT_R", "ELEM_NEUT_R", "ELNO_NEUT_R", "ELGA_NEUT_R",
+ "NOEU_PRES_R", "ELEM_PRES_R", "ELNO_PRES_R", "ELGA_PRES_R",
+ "CART_SIEF_R", "NOEU_SIEF_R", "ELEM_SIEF_R", "ELNO_SIEF_R", "ELGA_SIEF_R",
+ "NOEU_SOUR_R", "ELEM_SOUR_R", "ELNO_SOUR_R", "ELGA_SOUR_R",
+ "CART_TEMP_F", "NOEU_TEMP_F", "ELEM_SPMA_R", "ELNO_TEMP_F", "ELGA_TEMP_F",
+ "CART_TEMP_R", "NOEU_TEMP_R", "ELEM_TEMP_F", "ELNO_TEMP_R", "ELGA_TEMP_R",
+ "CART_VAR2_R", "NOEU_VAR2_R", "ELEM_TEMP_R", "ELNO_VARI_R", "ELGA_VARI_R",
+ "NOEU_VNOR_C", "ELEM_VARI_R", "ELNO_VNOR_C", "ELGA_VNOR_C",
+ "ELEM_VNOR_C",
+ )
+#& MODIF COMMANDE DATE 04/04/2006 AUTEUR CIBHHLV L.VIVAN
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE JMBHH01 J.M.PROIX
+AFFE_CARA_ELEM=OPER(nom="AFFE_CARA_ELEM",op= 19,sd_prod=cara_elem,
+ fr="Affectation de caractéristiques à des éléments de structure",
+ reentrant='n',
+ UIinfo={"groupes":("Modélisation",)},
+ regles=(AU_MOINS_UN('POUTRE','BARRE','COQUE','CABLE','DISCRET','DISCRET_2D','MASSIF',
+ 'ASSE_GRIL','GRILLE','AFFE_SECT','AFFE_FIBRE'),),
+ MODELE =SIMP(statut='o',typ=modele_sdaster ),
+ INFO =SIMP(statut='f',typ='I', defaut= 1 ,into=(1,2) ),
+ VERIF =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',into=("MAILLE","NOEUD") ),
+
+#============================================================================
+ POUTRE =FACT(statut='f',max='**',
+ regles=(UN_PARMI('MAILLE','GROUP_MA'),),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ SECTION =SIMP(statut='o',typ='TXM' ,into=("GENERALE","RECTANGLE","CERCLE") ),
+ PREC_AIRE =SIMP(statut='f',typ='R',defaut=0.01),
+ PREC_INERTIE =SIMP(statut='f',typ='R',defaut=0.1),
+ b_generale =BLOC( condition = "SECTION=='GENERALE'",
+ VARI_SECT =SIMP(statut='f',typ='TXM',into=("CONSTANT","HOMOTHETIQUE"),defaut="CONSTANT"),
+ b_constant =BLOC( condition = "VARI_SECT=='CONSTANT'",
+ CARA =SIMP(statut='o',typ='TXM',validators=NoRepeat(),min=4 ,max=15,
+ fr="A,IY,IZ,JX sont des paramètres obligatoires",
+ into=("A","IY","IZ","AY","AZ","EY","EZ","JX","RY","RZ","RT",
+ "JG","IYR2","IZR2","AI") ),
+ VALE =SIMP(statut='o',typ='R',min=4 ,max=15),
+ ),
+ b_homothetique =BLOC( condition = "VARI_SECT=='HOMOTHETIQUE'",
+ CARA =SIMP(statut='o',typ='TXM',validators=NoRepeat(),min=8 ,max=30,
+ fr="A1,A2,IY1,IY2,IZ1,IZ2,JX1,JX2 sont des paramètres obligatoires",
+ into=("A1","IY1","IZ1","AY1","AZ1","EY1","EZ1","JX1","RY1",
+ "RZ1","RT1","JG1","IYR21","IZR21","AI1",
+ "A2","IY2","IZ2","AY2","AZ2","EY2","EZ2","JX2","RY2",
+ "RZ2","RT2","JG2","IYR22","IZR22","AI2") ),
+ VALE =SIMP(statut='o',typ='R',min=8 ,max=30),
+ ),
+ ),
+ b_rectangle =BLOC( condition = "SECTION=='RECTANGLE'",
+ VARI_SECT =SIMP(statut='f',typ='TXM',into=("CONSTANT","HOMOTHETIQUE","AFFINE"),defaut="CONSTANT"),
+ b_constant =BLOC( condition = "VARI_SECT=='CONSTANT'",
+ CARA =SIMP(statut='o',typ='TXM',validators=NoRepeat(),min=1 ,max=4,
+ into=("H","EP", "HY","HZ","EPY","EPZ") ),
+ VALE =SIMP(statut='o',typ='R',min=1 ,max=4),
+ ),
+ b_homothetique =BLOC( condition = "VARI_SECT=='HOMOTHETIQUE'",
+ CARA =SIMP(statut='o',typ='TXM',validators=NoRepeat(),min=2 ,max=8,
+ into=("H1","HZ1","HY1","EP1","EPY1","EPZ1",
+ "H2","HZ2","HY2","EP2","EPY2","EPZ2") ),
+ VALE =SIMP(statut='o',typ='R',min=2 ,max=8),
+ ),
+ b_affine =BLOC( condition = "VARI_SECT=='AFFINE'",
+ CARA =SIMP(statut='o',typ='TXM',validators=NoRepeat(),min=3 ,max=6,
+ into=("HY","EPY", "HZ1","EPZ1","HZ2","EPZ2") ),
+ VALE =SIMP(statut='o',typ='R',min=3 ,max=6),
+ ),
+ ),
+ b_cercle =BLOC( condition = "SECTION=='CERCLE'",
+ VARI_SECT =SIMP(statut='f',typ='TXM',into=("CONSTANT","HOMOTHETIQUE"),defaut="CONSTANT"),
+ b_constant =BLOC( condition = "VARI_SECT=='CONSTANT'",
+ CARA =SIMP(statut='o',typ='TXM',validators=NoRepeat(),min=1 ,max=2,
+ fr="R est un paramètre obligatoire",
+ into=("R","EP") ),
+ VALE =SIMP(statut='o',typ='R',min=1 ,max=2),
+ ),
+ b_homothetique =BLOC( condition = "VARI_SECT=='HOMOTHETIQUE'",
+ CARA =SIMP(statut='o',typ='TXM',validators=NoRepeat(),min=2 ,max=4,
+ fr="R1, R2 sont des paramètres obligatoires",
+ into=("R1","R2","EP1","EP2") ),
+ VALE =SIMP(statut='o',typ='R',min=2 ,max=4),
+ ),
+ MODI_METRIQUE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
+ FCX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ TUYAU_NSEC =SIMP(statut='f',typ='I',val_max=32,defaut=16),
+ TUYAU_NCOU =SIMP(statut='f',typ='I',val_max=10,defaut=3),
+ ),
+ ),
+
+#============================================================================
+ BARRE =FACT(statut='f',max='**',
+ regles=(UN_PARMI('MAILLE','GROUP_MA'),),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ SECTION =SIMP(statut='o',typ='TXM',into=("GENERALE","RECTANGLE","CERCLE") ),
+ b_generale =BLOC( condition = "SECTION=='GENERALE'",
+ CARA =SIMP(statut='o',typ='TXM',into=("A",) ),
+ VALE =SIMP(statut='o',typ='R',min=1,max=1 ),
+ ),
+ b_rectangle =BLOC( condition = "SECTION=='RECTANGLE'",
+ CARA =SIMP(statut='o',typ='TXM',into=("H","EP",
+ "HZ","HY","EPY","EPZ"),
+ validators=NoRepeat(),min=1,max=4 ),
+ VALE =SIMP(statut='o',typ='R',min=1,max=4 ),
+ ),
+ b_cercle =BLOC( condition = "SECTION=='CERCLE'",
+ CARA =SIMP(statut='o',typ='TXM',validators=NoRepeat(),min=1,max=2,into=("R","EP") ),
+ VALE =SIMP(statut='o',typ='R',min=1,max=2 ),
+ ),
+ FCX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ ),
+
+#============================================================================
+ COQUE =FACT(statut='f',max='**',
+ regles=(UN_PARMI('MAILLE','GROUP_MA' ),
+ PRESENT_PRESENT( 'EXCENTREMENT','INER_ROTA' ),),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ EPAIS =SIMP(statut='o',typ='R' ),
+ ANGL_REP =SIMP(statut='f',typ='R',min=2,max=2),
+ A_CIS =SIMP(statut='c',typ='R',defaut= 0.8333333E0),
+ COEF_RIGI_DRZ =SIMP(statut='f',typ='R',defaut= 1.0E-5 ),
+ COQUE_NCOU =SIMP(statut='f',typ='I',defaut= 1 ),
+ EXCENTREMENT =SIMP(statut='f',typ='R' ),
+ INER_ROTA =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ MODI_METRIQUE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
+ ),
+
+#============================================================================
+ CABLE =FACT(statut='f',max='**',
+ regles=(UN_PARMI('MAILLE','GROUP_MA'),),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ N_INIT =SIMP(statut='f',typ='R',defaut= 5000. ),
+ SECTION =SIMP(statut='f',typ='R' ),
+ FCX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ ),
+
+#============================================================================
+ DISCRET =FACT(statut='f',max='**',
+ REPERE =SIMP(statut='f',typ='TXM',into=("LOCAL","GLOBAL") ),
+ AMOR_HYST =SIMP(statut='f',typ='R' ),
+ CARA =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=1,
+ fr="Affectation de matrices de rigidité, de masse ou d'amortissement à des mailles ou noeuds",
+ into=("K_T_D_N","K_T_D_L","K_TR_D_N","K_TR_D_L",
+ "K_T_N", "K_T_L", "K_TR_N", "K_TR_L",
+ "M_T_D_N","M_TR_D_N","M_T_N",
+ "M_T_L", "M_TR_N", "M_TR_L",
+ "A_T_D_N","A_TR_D_N","A_T_D_L","A_TR_D_L",
+ "A_T_N", "A_T_L", "A_TR_N", "A_TR_L") ),
+
+# affection des caractéristiques de RIGIDITE/AMORTISSEMENT
+ b_K_T_D_N =BLOC(condition = "(CARA=='K_T_D_N')or(CARA=='A_T_D_N')",
+ regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ VALE =SIMP(statut='o',typ='R',min=3 ,max=3 ),),
+ b_K_T_D_L =BLOC(condition = "(CARA=='K_T_D_L')or(CARA=='A_T_D_L')",
+ regles=(UN_PARMI('MAILLE','GROUP_MA'),),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ VALE =SIMP(statut='o',typ='R',min=3 ,max=3 ),),
+ b_K_TR_D_N =BLOC(condition = "(CARA=='K_TR_D_N')or(CARA=='A_TR_D_N')",
+ regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ VALE =SIMP(statut='o',typ='R',min=6 ,max=6 ),),
+ b_K_TR_D_L =BLOC(condition = "(CARA=='K_TR_D_L')or(CARA=='A_TR_D_L')",
+ regles=(UN_PARMI('MAILLE','GROUP_MA'),),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ VALE =SIMP(statut='o',typ='R',min=6 ,max=6 ),),
+ b_K_T_N =BLOC(condition = "(CARA=='K_T_N')or(CARA=='A_T_N')",
+ regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ VALE =SIMP(statut='o',typ='R',min=6 ,max=6 ),),
+ b_K_T_L =BLOC(condition = "(CARA=='K_T_L')or(CARA=='A_T_L')",
+ regles=(UN_PARMI('MAILLE','GROUP_MA'),),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ VALE =SIMP(statut='o',typ='R',min=21,max=21),),
+ b_K_TR_N =BLOC(condition = "(CARA=='K_TR_N')or(CARA=='A_TR_N')",
+ regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ VALE =SIMP(statut='o',typ='R',min=21,max=21),),
+ b_K_TR_L =BLOC(condition = "(CARA=='K_TR_L')or(CARA=='A_TR_L')",
+ regles=(UN_PARMI('MAILLE','GROUP_MA'),),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ VALE =SIMP(statut='o',typ='R',min=78,max=78),),
+
+# affection des caractéristiques de MASSE
+ b_M_T_D_N =BLOC(condition = "CARA=='M_T_D_N'",
+ fr="NOEUD: 1 valeur de masse",
+ regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ VALE =SIMP(statut='o',typ='R',min=1 ,max=1 ),),
+ b_M_TR_D_N =BLOC(condition = "CARA=='M_TR_D_N'",
+ fr="NOEUD: 1 valeur de masse, 6 valeurs du tenseur d'inertie, 3 composantes du vecteur d'excentricité",
+ regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ VALE =SIMP(statut='o',typ='R',min=10,max=10),),
+ b_M_T_N =BLOC(condition = "CARA=='M_T_N'",
+ fr="NOEUD: 6 valeurs de masse (triangulaire supérieure par colonne)",
+ regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ VALE =SIMP(statut='o',typ='R',min=6 ,max=6 ),),
+ b_M_T_L =BLOC(condition = "CARA=='M_T_L'",
+ fr="SEGMENT: 21 valeurs de masse (triangulaire supérieure par colonne)",
+ regles=(UN_PARMI('MAILLE','GROUP_MA'),),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ VALE =SIMP(statut='o',typ='R',min=21,max=21),),
+ b_M_TR_N =BLOC(condition = "CARA=='M_TR_N'",
+ fr="NOEUD: 21 valeurs de masse (triangulaire supérieure par colonne)",
+ regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ VALE =SIMP(statut='o',typ='R',min=21,max=21),),
+ b_M_TR_L =BLOC(condition = "CARA=='M_TR_L'",
+ fr="SEGMENT: 78 valeurs de masse (triangulaire supérieure par colonne)",
+ regles=(UN_PARMI('MAILLE','GROUP_MA'),),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ VALE =SIMP(statut='o',typ='R',min=78,max=78),),
+ ),
+
+#============================================================================
+ DISCRET_2D =FACT(statut='f',max='**',
+ REPERE =SIMP(statut='f',typ='TXM',into=("LOCAL","GLOBAL") ),
+ AMOR_HYST =SIMP(statut='f',typ='R' ),
+ CARA =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=1,
+ fr="Affectation de matrices de rigidité, de masse ou d'amortissement à des mailles ou noeuds",
+ into=("K_T_D_N","K_T_D_L","K_TR_D_N","K_TR_D_L",
+ "K_T_N", "K_T_L", "K_TR_N", "K_TR_L",
+ "M_T_D_N","M_T_N", "M_TR_D_N",
+ "M_T_L", "M_TR_N", "M_TR_L",
+ "A_T_D_N","A_TR_D_N","A_T_D_L","A_TR_D_L",
+ "A_T_N", "A_T_L", "A_TR_N", "A_TR_L") ),
+
+# affection des caractéristiques de RIGIDITE/AMORTISSEMENT
+ b_K_T_D_N =BLOC(condition = "(CARA=='K_T_D_N')or(CARA=='A_T_D_N')",
+ regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ VALE =SIMP(statut='o',typ='R',min=2 ,max=2 ),),
+ b_K_T_D_L =BLOC(condition = "(CARA=='K_T_D_L')or(CARA=='A_T_D_L')",
+ regles=(UN_PARMI('MAILLE','GROUP_MA'),),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ VALE =SIMP(statut='o',typ='R',min=2 ,max=2 ),),
+ b_K_TR_D_N =BLOC(condition = "(CARA=='K_TR_D_N')or(CARA=='A_TR_D_N')",
+ regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ VALE =SIMP(statut='o',typ='R',min=3 ,max=3 ),),
+ b_K_TR_D_L =BLOC(condition = "(CARA=='K_TR_D_L')or(CARA=='A_TR_D_L')",
+ regles=(UN_PARMI('MAILLE','GROUP_MA'),),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ VALE =SIMP(statut='o',typ='R',min=3 ,max=3 ),),
+ b_K_T_N =BLOC(condition = "(CARA=='K_T_N')or(CARA=='A_T_N')",
+ regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ VALE =SIMP(statut='o',typ='R',min=3 ,max=3 ),),
+ b_K_T_L =BLOC(condition = "(CARA=='K_T_L')or(CARA=='A_T_L')",
+ regles=(UN_PARMI('MAILLE','GROUP_MA'),),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ VALE =SIMP(statut='o',typ='R',min=10,max=10),),
+ b_K_TR_N =BLOC(condition = "(CARA=='K_TR_N')or(CARA=='A_TR_N')",
+ regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ VALE =SIMP(statut='o',typ='R',min=6 ,max=6),),
+ b_K_TR_L =BLOC(condition = "(CARA=='K_TR_L')or(CARA=='A_TR_L')",
+ regles=(UN_PARMI('MAILLE','GROUP_MA'),),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ VALE =SIMP(statut='o',typ='R',min=21,max=21),),
+
+# affection des caractéristiques de MASSE
+ b_M_T_D_N =BLOC(condition = "CARA=='M_T_D_N'",
+ fr="NOEUD: 1 valeur de masse",
+ regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ VALE =SIMP(statut='o',typ='R',min=1 ,max=1 ),),
+ b_M_TR_D_N =BLOC(condition = "CARA=='M_TR_D_N'",
+ fr="NOEUD: 1 valeur de masse(m), 1 valeur d'inertie(Izz), 2 composantes du vecteur d'excentricité(ex,ey) ",
+ regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ VALE =SIMP(statut='o',typ='R',min=4 ,max=4 ),),
+ b_M_T_N =BLOC(condition = "CARA=='M_T_N'",
+ fr="NOEUD: 3 valeurs de masse (triangulaire supérieure par colonne)",
+ regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ VALE =SIMP(statut='o',typ='R',min=3 ,max=3 ),),
+ b_M_T_L =BLOC(condition = "CARA=='M_T_L'",
+ fr="SEGMENT: 10 valeurs de masse (triangulaire supérieure par colonne)",
+ regles=(UN_PARMI('MAILLE','GROUP_MA'),),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ VALE =SIMP(statut='o',typ='R',min=10,max=10),),
+ b_M_TR_N =BLOC(condition = "CARA=='M_TR_N'",
+ fr="NOEUD: 6 valeurs de masse (triangulaire supérieure par colonne)",
+ regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ VALE =SIMP(statut='o',typ='R',min=6 ,max=6 ),),
+ b_M_TR_L =BLOC(condition = "CARA=='M_TR_L'",
+ fr="SEGMENT: 21 valeurs de masse (triangulaire supérieure par colonne)",
+ regles=(UN_PARMI('MAILLE','GROUP_MA'),),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ VALE =SIMP(statut='o',typ='R',min=21,max=21),),
+ ),
+
+#============================================================================
+ ORIENTATION =FACT(statut='f',max='**',
+ regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO' ),),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ CARA =SIMP(statut='o',typ='TXM',
+ into=("VECT_Y","ANGL_VRIL","VECT_X_Y","ANGL_NAUT","GENE_TUYAU") ),
+ VALE =SIMP(statut='o',typ='R',max='**'),
+ PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-4 ),
+ CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
+ ),
+
+#============================================================================
+ DEFI_ARC =FACT(statut='f',max='**',
+ regles=(UN_PARMI('MAILLE','GROUP_MA'),
+ UN_PARMI('ORIE_ARC','CENTRE','NOEUD_CENTRE','GROUP_NO_CENTRE',
+ 'POIN_TANG','NOEUD_POIN_TANG','GROUP_NO_POIN_TG'),
+ PRESENT_PRESENT('ORIE_ARC','RAYON'),
+ EXCLUS('COEF_FLEX','COEF_FLEX_XY'),
+ EXCLUS('COEF_FLEX','COEF_FLEX_XZ'),
+ EXCLUS('INDI_SIGM','INDI_SIGM_XY'),
+ EXCLUS('INDI_SIGM','INDI_SIGM_XZ'),
+ PRESENT_PRESENT('COEF_FLEX_XY','COEF_FLEX_XZ'),
+ PRESENT_PRESENT('INDI_SIGM_XY','INDI_SIGM_XZ'),),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ ORIE_ARC =SIMP(statut='f',typ='R'),
+ CENTRE =SIMP(statut='f',typ='R',max='**'),
+ NOEUD_CENTRE =SIMP(statut='f',typ=no),
+ GROUP_NO_CENTRE =SIMP(statut='f',typ=grno),
+ POIN_TANG =SIMP(statut='f',typ='R',max='**'),
+ NOEUD_POIN_TANG =SIMP(statut='f',typ=no),
+ GROUP_NO_POIN_TG=SIMP(statut='f',typ=grno),
+ RAYON =SIMP(statut='f',typ='R'),
+ COEF_FLEX =SIMP(statut='f',typ='R'),
+ INDI_SIGM =SIMP(statut='f',typ='R'),
+ COEF_FLEX_XY =SIMP(statut='f',typ='R'),
+ INDI_SIGM_XY =SIMP(statut='f',typ='R'),
+ COEF_FLEX_XZ =SIMP(statut='f',typ='R'),
+ INDI_SIGM_XZ =SIMP(statut='f',typ='R'),
+ PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3),
+ CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
+ ),
+
+#============================================================================
+ MASSIF =FACT(statut='f',max='**',
+ regles=(UN_PARMI('MAILLE','GROUP_MA'),
+ UN_PARMI('ANGL_REP','ANGL_AXE'),
+ EXCLUS('ANGL_REP','ANGL_AXE'),
+ EXCLUS('ANGL_REP','ORIG_AXE'),
+ PRESENT_PRESENT('ANGL_AXE','ORIG_AXE'), ),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ ANGL_REP =SIMP(statut='f',typ='R',max=3),
+ ANGL_AXE =SIMP(statut='f',typ='R',max=2),
+ ORIG_AXE =SIMP(statut='f',typ='R',max=3),
+ ),
+
+#============================================================================
+ POUTRE_FLUI =FACT(statut='f',max='**',
+ regles=(UN_PARMI('MAILLE','GROUP_MA'),),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ B_T =SIMP(statut='o',typ='R'),
+ B_N =SIMP(statut='o',typ='R'),
+ B_TN =SIMP(statut='o',typ='R',defaut= 0.E+0 ),
+ A_FLUI =SIMP(statut='o',typ='R'),
+ A_CELL =SIMP(statut='o',typ='R'),
+ COEF_ECHELLE =SIMP(statut='o',typ='R'),
+ ),
+
+#============================================================================
+ GRILLE =FACT(statut='f',max='**',
+ regles=(UN_PARMI('MAILLE','GROUP_MA'),
+ EXCLUS('ANGL_REP','ORIG_AXE'),
+ ENSEMBLE('ORIG_AXE','AXE')),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ SECTION =SIMP(statut='o',typ='R'),
+ ANGL_REP =SIMP(statut='f',typ='R',max=2),
+ EXCENTREMENT =SIMP(statut='f',typ='R'),
+ ORIG_AXE =SIMP(statut='f',typ='R',max='**'),
+ AXE =SIMP(statut='f',typ='R',max='**'),
+ COEF_RIGI_DRZ =SIMP(statut='f',typ='R',defaut= 1.0E-10 ),
+ GRILLE_NCOU =SIMP(statut='f',typ='I',defaut= 1,),
+ ),
+
+#============================================================================
+ RIGI_PARASOL =FACT(statut='f',max='**',
+ regles=(UN_PARMI('COEF_GROUP','FONC_GROUP'),
+ UN_PARMI('COOR_CENTRE','NOEUD_CENTRE','GROUP_NO_CENTRE'),),
+ GROUP_MA =SIMP(statut='o',typ=ma,validators=NoRepeat(),max='**'),
+ GROUP_MA_POI1 =SIMP(statut='f',typ=ma),
+ FONC_GROUP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ COEF_GROUP =SIMP(statut='f',typ='R',max='**'),
+ REPERE =SIMP(statut='f',typ='TXM',into=("LOCAL","GLOBAL") ),
+ CARA =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=2,
+ into=("K_TR_D_N","A_TR_D_N",
+ "K_T_D_N", "A_T_D_N") ),
+ VALE =SIMP(statut='o',typ='R',max='**'),
+ GROUP_NO_CENTRE =SIMP(statut='f',typ=grno),
+ NOEUD_CENTRE =SIMP(statut='f',typ=no),
+ COOR_CENTRE =SIMP(statut='f',typ='R',max='**'),
+ ),
+
+#============================================================================
+ RIGI_MISS_3D =FACT(statut='f',max='**',
+ GROUP_MA_POI1 =SIMP(statut='o',typ=ma,max=1),
+ GROUP_MA_SEG2 =SIMP(statut='f',typ=ma,max=1),
+ FREQ_EXTR =SIMP(statut='o',typ='R',max=1),
+ UNITE_RESU_IMPE =SIMP(statut='f',typ='I',defaut=30),
+ ),
+
+#============================================================================
+ ASSE_GRIL =FACT(statut='f',max='**',
+ regles=(UN_PARMI('MAILLE','GROUP_MA'),),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ CARA =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',
+ into=("K_TR_D_N","K_TR_D_L_T","K_TR_D_L_N",) ),
+ VALE =SIMP(statut='o',typ='R',max='**'),
+ PAS_T =SIMP(statut='o',typ='R'),
+ PAS_N =SIMP(statut='o',typ='R'),
+ ANGL_REP =SIMP(statut='o',typ='R',max='**'),
+ COEF_ECHELLE =SIMP(statut='o',typ='R'),
+ ),
+
+
+#============================================================================
+ AFFE_SECT =FACT(statut='f',max='**',
+ regles=(AU_MOINS_UN('GROUP_MA','MAILLE'),
+ AU_MOINS_UN('TOUT_SECT','GROUP_MA_SECT','MAILLE_SECT'),
+ PRESENT_ABSENT('TOUT_SECT','GROUP_MA_SECT','MAILLE_SECT'),),
+
+ NOM =SIMP(statut='f',typ='TXM'),
+
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+
+ TOUT_SECT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA_SECT =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE_SECT =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+
+ MAILLAGE_SECT =SIMP(statut='o',typ=maillage_sdaster),
+ COOR_AXE_POUTRE =SIMP(statut='o',typ='R',min=2,max=2),
+ ),
+
+
+#============================================================================
+ AFFE_FIBRE =FACT(statut='f',max='**',
+ regles=(AU_MOINS_UN('GROUP_MA','MAILLE'),),
+
+ NOM =SIMP(statut='f',typ='TXM'),
+
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+
+ CARA =SIMP(statut='f',typ='TXM',defaut='SURFACE',into=('SURFACE','DIAMETRE',)),
+ VALE =SIMP(statut='o',typ='R',max='**'),
+ COOR_AXE_POUTRE =SIMP(statut='o',typ='R',min=2,max=2),
+ ),
+
+
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+AFFE_CHAR_ACOU=OPER(nom="AFFE_CHAR_ACOU",op= 68,sd_prod=char_acou,
+ fr="Affectation de charges et conditions aux limites acoustiques constantes",
+ reentrant='n',
+ UIinfo={"groupes":("Modélisation",)},
+ regles=(AU_MOINS_UN('PRES_IMPO','VITE_FACE','IMPE_FACE','LIAISON_UNIF' ),),
+ MODELE =SIMP(statut='o',typ=modele_sdaster ),
+ VERI_DDL =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+ PRES_IMPO =FACT(statut='f',max='**',
+ regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD'),),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ PRES =SIMP(statut='o',typ='C' ),
+ ),
+ VITE_FACE =FACT(statut='f',max='**',
+ regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
+ PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ VNOR =SIMP(statut='o',typ='C' ),
+ ),
+ IMPE_FACE =FACT(statut='f',max='**',
+ regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
+ PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ IMPE =SIMP(statut='o',typ='C' ),
+ ),
+ LIAISON_UNIF =FACT(statut='f',max='**',
+ regles=(UN_PARMI('GROUP_NO','NOEUD','GROUP_MA','MAILLE' ),),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ DDL =SIMP(statut='o',typ='TXM',max='**'),
+ ),
+) ;
+#& MODIF COMMANDE DATE 23/05/2006 AUTEUR CIBHHPD L.SALMONA
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE VABHHTS J.PELLET
+def affe_char_cine_prod(MECA_IMPO,THER_IMPO,**args):
+ if MECA_IMPO != None : return char_cine_meca
+ if THER_IMPO != None : return char_cine_ther
+ raise AsException("type de concept resultat non prevu")
+
+AFFE_CHAR_CINE=OPER(nom="AFFE_CHAR_CINE",op= 101,sd_prod=affe_char_cine_prod
+ ,fr="Affectation de conditions aux limites cinématiques pour traitement sans dualisation",
+ reentrant='n',
+ UIinfo={"groupes":("Modélisation",)},
+ regles=(AU_MOINS_UN('MECA_IMPO','THER_IMPO'),
+ EXCLUS('MECA_IMPO','THER_IMPO'),),
+ MODELE =SIMP(statut='o',typ=modele_sdaster ),
+ MECA_IMPO =FACT(statut='f',max='**',
+ regles=(UN_PARMI('TOUT','GROUP_NO','NOEUD'),
+ AU_MOINS_UN('DX','DY','DZ','DRX','DRY','DRZ','GRX','PRES','TEMP','PHI'),),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ DX =SIMP(statut='f',typ='R' ),
+ DY =SIMP(statut='f',typ='R' ),
+ DZ =SIMP(statut='f',typ='R' ),
+ DRX =SIMP(statut='f',typ='R' ),
+ DRY =SIMP(statut='f',typ='R' ),
+ DRZ =SIMP(statut='f',typ='R' ),
+ GRX =SIMP(statut='f',typ='R' ),
+ PRES =SIMP(statut='f',typ='R' ),
+ TEMP =SIMP(statut='f',typ='R' ),
+ PHI =SIMP(statut='f',typ='R' ),
+ ),
+ THER_IMPO =FACT(statut='f',max='**',
+ regles=(UN_PARMI('TOUT','GROUP_NO','NOEUD'),
+ AU_MOINS_UN('TEMP','TEMP_INF','TEMP_SUP'),),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ TEMP_SUP =SIMP(statut='f',typ='R' ),
+ TEMP =SIMP(statut='f',typ='R' ),
+ TEMP_INF =SIMP(statut='f',typ='R' ),
+ ),
+ INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
+) ;
+#& MODIF COMMANDE DATE 30/06/2004 AUTEUR MCOURTOI M.COURTOIS
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#fon
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+def affe_char_cine_f_prod(MECA_IMPO,THER_IMPO,**args):
+ if MECA_IMPO != None : return char_cine_meca
+ if THER_IMPO != None : return char_cine_ther
+ raise AsException("type de concept resultat non prevu")
+
+AFFE_CHAR_CINE_F=OPER(nom="AFFE_CHAR_CINE_F",op= 108,sd_prod=affe_char_cine_f_prod
+ ,fr="Affectation de conditions aux limites cinématiques pour traitement sans dualisation",
+ reentrant='n',
+ UIinfo={"groupes":("Modélisation",)},
+ regles=(AU_MOINS_UN('MECA_IMPO','THER_IMPO'),
+ EXCLUS('MECA_IMPO','THER_IMPO'),),
+ MODELE =SIMP(statut='o',typ=modele_sdaster ),
+ MECA_IMPO =FACT(statut='f',max='**',
+ regles=(UN_PARMI('TOUT','GROUP_NO','NOEUD'),
+ AU_MOINS_UN('DX','DY','DZ','DRX','DRY','DRZ','GRX','PRES','TEMP','PHI'),),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ DX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ DY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ DZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ DRX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ DRY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ DRZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ GRX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ PRES =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ PHI =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ ),
+ THER_IMPO =FACT(statut='f',max='**',
+ regles=(UN_PARMI('TOUT','GROUP_NO','NOEUD'),
+ AU_MOINS_UN('TEMP','TEMP_INF','TEMP_SUP' ),),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ TEMP_SUP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ TEMP_INF =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ ),
+ INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
+) ;
+#& MODIF COMMANDE DATE 08/03/2005 AUTEUR LAMARCHE S.LAMARCHE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE G8BHHXD X.DESROCHES
+
+AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op= 7,sd_prod=char_meca
+ ,fr="Affectation de charges et conditions aux limites mécaniques constantes",
+ reentrant='n',
+ UIinfo={"groupes":("Modélisation",)},
+ regles=(AU_MOINS_UN('DDL_IMPO','FACE_IMPO','LIAISON_DDL','LIAISON_XFEM','FORCE_NODALE',
+ 'FORCE_FACE','FORCE_ARETE','FORCE_CONTOUR','FORCE_INTERNE',
+ 'PRES_REP','FORCE_POUTRE','FORCE_COQUE','LIAISON_OBLIQUE',
+ 'FORCE_ELEC','INTE_ELEC','PESANTEUR','ROTATION','IMPE_FACE',
+ 'VITE_FACE','TEMP_CALCULEE','RELA_CINE_BP','EPSI_INIT','CONTACT',
+ 'LIAISON_GROUP','LIAISON_UNIF','FLUX_THM_REP',
+ 'LIAISON_SOLIDE','LIAISON_ELEM','ONDE_FLUI','PRES_CALCULEE',
+ 'EPSA_CALCULEE','LIAISON_CHAMNO','VECT_ASSE','LIAISON_COQUE',
+ 'LIAISON_MAIL','FORCE_TUYAU','SECH_CALCULEE','HYDR_CALCULEE',
+ 'EFFE_FOND','EVOL_CHAR','ARLEQUIN','DDL_POUTRE','GRAPPE_FLUIDE'),
+ EXCLUS('PRES_CALCULEE','EVOL_CHAR'),),
+ VERI_DDL =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+ VERI_NORM =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+ MODELE =SIMP(statut='o',typ=(modele_sdaster) ),
+ TEMP_CALCULEE =SIMP(statut='f',fr="Champ de température issu d'un autre calcul",
+ typ=(evol_ther,cham_no_temp_r,carte_temp_r,carte_temp_f ) ),
+ HYDR_CALCULEE =SIMP(statut='f',fr="Champ d hydratation issu d'un autre calcul",
+ typ=evol_ther ),
+ SECH_CALCULEE =SIMP(statut='f',fr="Champ de séchage issu d'un autre calcul",
+ typ=(evol_ther,cham_no_temp_r,carte_temp_r,carte_temp_f ) ),
+ EPSA_CALCULEE =SIMP(statut='f',fr="Champ de déformation anélastique issu d'un autre calcul",
+ typ=evol_noli ),
+# A TERME PRES_CALCULEE N'EXISTERA PLUS
+ EVOL_CHAR =SIMP(statut='f',fr="Champ de pression issu d'un autre calcul",
+ typ=evol_char ),
+ PRES_CALCULEE =SIMP(statut='f',fr="Champ de pression issu d'un autre calcul",
+ typ=evol_char ),
+
+ PESANTEUR =SIMP(statut='f',typ='R',fr="Champ de pesanteur",min=4,max=4),
+ ROTATION =SIMP(statut='f',typ='R',fr="Champ de rotation", min=4,max=4),
+ b_rotation =BLOC ( condition = "ROTATION != None",
+ CENTRE =SIMP(statut='f',typ='R',defaut=(0.,0.,0.),max=3),),
+
+ DDL_IMPO =FACT(statut='f',max='**',
+ regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD'),
+ AU_MOINS_UN('DX','DY','DZ','DRX','DRY','DRZ','GRX','PRES','PHI',
+ 'TEMP','PRE1','PRE2','UI2','UI3','VI2','VI3','WI2','WI3','UO2',
+ 'UO3','VO2','VO3','WO2','WO3','UI4','UI5','VI4','VI5','WI4',
+ 'WI5','UO4','UO5','VO4','VO5','WO4','WO5','UI6','UO6','VI6',
+ 'VO6','WI6','WO6','WO','WI1','WO1','GONF','LIAISON'),),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ LIAISON =SIMP(statut='f',typ='TXM',into=('ENCASTRE',)),
+ DX =SIMP(statut='f',typ='R' ),
+ DY =SIMP(statut='f',typ='R' ),
+ DZ =SIMP(statut='f',typ='R' ),
+ DRX =SIMP(statut='f',typ='R' ),
+ DRY =SIMP(statut='f',typ='R' ),
+ DRZ =SIMP(statut='f',typ='R' ),
+ GRX =SIMP(statut='f',typ='R' ),
+ PRES =SIMP(statut='f',typ='R' ),
+ PHI =SIMP(statut='f',typ='R' ),
+ TEMP =SIMP(statut='f',typ='R' ),
+ PRE1 =SIMP(statut='f',typ='R' ),
+ PRE2 =SIMP(statut='f',typ='R' ),
+ UI2 =SIMP(statut='f',typ='R' ),
+ UI3 =SIMP(statut='f',typ='R' ),
+ UI4 =SIMP(statut='f',typ='R' ),
+ UI5 =SIMP(statut='f',typ='R' ),
+ UI6 =SIMP(statut='f',typ='R' ),
+ UO2 =SIMP(statut='f',typ='R' ),
+ UO3 =SIMP(statut='f',typ='R' ),
+ UO4 =SIMP(statut='f',typ='R' ),
+ UO5 =SIMP(statut='f',typ='R' ),
+ UO6 =SIMP(statut='f',typ='R' ),
+ VI2 =SIMP(statut='f',typ='R' ),
+ VI3 =SIMP(statut='f',typ='R' ),
+ VI4 =SIMP(statut='f',typ='R' ),
+ VI5 =SIMP(statut='f',typ='R' ),
+ VI6 =SIMP(statut='f',typ='R' ),
+ VO2 =SIMP(statut='f',typ='R' ),
+ VO3 =SIMP(statut='f',typ='R' ),
+ VO4 =SIMP(statut='f',typ='R' ),
+ VO5 =SIMP(statut='f',typ='R' ),
+ VO6 =SIMP(statut='f',typ='R' ),
+ WI2 =SIMP(statut='f',typ='R' ),
+ WI3 =SIMP(statut='f',typ='R' ),
+ WI4 =SIMP(statut='f',typ='R' ),
+ WI5 =SIMP(statut='f',typ='R' ),
+ WI6 =SIMP(statut='f',typ='R' ),
+ WO2 =SIMP(statut='f',typ='R' ),
+ WO3 =SIMP(statut='f',typ='R' ),
+ WO4 =SIMP(statut='f',typ='R' ),
+ WO5 =SIMP(statut='f',typ='R' ),
+ WO6 =SIMP(statut='f',typ='R' ),
+ WO =SIMP(statut='f',typ='R' ),
+ WI1 =SIMP(statut='f',typ='R' ),
+ WO1 =SIMP(statut='f',typ='R' ),
+ GONF =SIMP(statut='f',typ='R' ),
+ ),
+
+
+
+ DDL_POUTRE =FACT(statut='f',max='**',
+ regles=(AU_MOINS_UN('GROUP_NO','NOEUD'),
+ AU_MOINS_UN('DX','DY','DZ','DRX','DRY','DRZ'),
+ UN_PARMI('VECT_Y','ANGL_VRIL'),),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ DX =SIMP(statut='f',typ='R' ),
+ DY =SIMP(statut='f',typ='R' ),
+ DZ =SIMP(statut='f',typ='R' ),
+ DRX =SIMP(statut='f',typ='R' ),
+ DRY =SIMP(statut='f',typ='R' ),
+ DRZ =SIMP(statut='f',typ='R' ),
+# définition du repère local
+ VECT_Y =SIMP(statut='f',typ='R',min=3,max=3),
+ ANGL_VRIL =SIMP(statut='f',typ='R',),
+# restriction sur les mailles servant à définir le repère local
+ GROUP_MA =SIMP(statut='f',typ=grma,),
+ MAILLE =SIMP(statut='f',typ=ma,),
+ ),
+
+
+
+ FACE_IMPO =FACT(statut='f',max='**',
+ regles=(UN_PARMI('GROUP_MA','MAILLE',),
+ AU_MOINS_UN('DX','DY','DZ','DRX','DRY','DRZ','GRX','PRES','PHI',
+ 'TEMP','PRE1','PRE2','DNOR','DTAN'),
+ EXCLUS('DNOR','DX'),
+ EXCLUS('DNOR','DY'),
+ EXCLUS('DNOR','DZ'),
+ EXCLUS('DNOR','DRX'),
+ EXCLUS('DNOR','DRY'),
+ EXCLUS('DNOR','DRZ'),
+ EXCLUS('DTAN','DX'),
+ EXCLUS('DTAN','DY'),
+ EXCLUS('DTAN','DZ'),
+ EXCLUS('DTAN','DRX'),
+ EXCLUS('DTAN','DRY'),
+ EXCLUS('DTAN','DRZ'),),
+# rajout d'un mot clé REPERE :/ LOCAL /GLOBAL
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ DX =SIMP(statut='f',typ='R' ),
+ DY =SIMP(statut='f',typ='R' ),
+ DZ =SIMP(statut='f',typ='R' ),
+ DRX =SIMP(statut='f',typ='R' ),
+ DRY =SIMP(statut='f',typ='R' ),
+ DRZ =SIMP(statut='f',typ='R' ),
+ DNOR =SIMP(statut='f',typ='R' ),
+ DTAN =SIMP(statut='f',typ='R' ),
+ GRX =SIMP(statut='f',typ='R' ),
+ PRES =SIMP(statut='f',typ='R' ),
+ PHI =SIMP(statut='f',typ='R' ),
+ TEMP =SIMP(statut='f',typ='R' ),
+ PRE1 =SIMP(statut='f',typ='R' ),
+ PRE2 =SIMP(statut='f',typ='R' ),
+ ),
+
+ LIAISON_DDL =FACT(statut='f',max='**',
+ fr="Définir une relation linéaire entre des ddls de deux ou plusieurs noeuds",
+ regles=(UN_PARMI('GROUP_NO','NOEUD'),),
+ GROUP_NO =SIMP(statut='f',typ=grno ,max='**'),
+ NOEUD =SIMP(statut='f',typ=no ,max='**'),
+ DDL =SIMP(statut='o',typ='TXM',max='**'),
+ COEF_MULT =SIMP(statut='o',typ='R' ,max='**'),
+ COEF_IMPO =SIMP(statut='o',typ='R' ),
+ ),
+
+ LIAISON_OBLIQUE =FACT(statut='f',max='**',
+ fr="Appliquer à des noeuds une valeur de déplacement dans un repere oblique",
+ regles=(UN_PARMI('GROUP_NO','NOEUD'),
+ UN_PARMI('DX','DY','DZ','DRX','DRY','DRZ'),),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ ANGL_NAUT =SIMP(statut='o',typ='R',max=3),
+ DX =SIMP(statut='f',typ='R' ),
+ DY =SIMP(statut='f',typ='R' ),
+ DZ =SIMP(statut='f',typ='R' ),
+ DRX =SIMP(statut='f',typ='R' ),
+ DRY =SIMP(statut='f',typ='R' ),
+ DRZ =SIMP(statut='f',typ='R' ),
+ ),
+
+ LIAISON_GROUP =FACT(statut='f',max='**',
+ fr="Définir des relations linéaires entre certains ddls de couples de noeuds",
+ regles=(UN_PARMI('GROUP_MA_1','MAILLE_1','GROUP_NO_1','NOEUD_1'),
+ UN_PARMI('GROUP_MA_2','MAILLE_2','GROUP_NO_2','NOEUD_2'),
+ EXCLUS('GROUP_MA_1','GROUP_NO_2'),
+ EXCLUS('GROUP_MA_1','NOEUD_2'),
+ EXCLUS('GROUP_NO_1','GROUP_MA_2'),
+ EXCLUS('GROUP_NO_1','MAILLE_2'),
+ EXCLUS('MAILLE_1','GROUP_NO_2'),
+ EXCLUS('MAILLE_1','NOEUD_2'),
+ EXCLUS('NOEUD_1','GROUP_MA_2'),
+ EXCLUS('NOEUD_1','MAILLE_2'),
+ EXCLUS('SANS_NOEUD','SANS_GROUP_NO'),),
+
+ GROUP_MA_1 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE_1 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA_2 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE_2 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_NO_1 =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ NOEUD_1 =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ GROUP_NO_2 =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ NOEUD_2 =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+
+ SANS_NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ SANS_GROUP_NO =SIMP(statut='f',typ=grno ,validators=NoRepeat(),max='**'),
+ DDL_1 =SIMP(statut='o',typ='TXM',max='**'),
+ COEF_MULT_1 =SIMP(statut='o',typ='R' ,max='**'),
+ DDL_2 =SIMP(statut='o',typ='TXM',max='**'),
+ COEF_MULT_2 =SIMP(statut='o',typ='R' ,max='**'),
+ COEF_IMPO =SIMP(statut='o',typ='R' ),
+ SOMMET =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ TRAN =SIMP(statut='f',typ='R',max=3),
+ ANGL_NAUT =SIMP(statut='f',typ='R',max=3),
+ CENTRE =SIMP(statut='f',typ='R',max=3),
+ ),
+
+ LIAISON_MAIL =FACT(statut='f',max='**',
+ regles=(AU_MOINS_UN('GROUP_MA_MAIT','MAILLE_MAIT'),
+ AU_MOINS_UN('GROUP_MA_ESCL','MAILLE_ESCL','GROUP_NO_ESCL','NOEUD_ESCL'),
+ PRESENT_PRESENT('DDL_MAIT','DDL_ESCL'),),
+ GROUP_MA_MAIT =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE_MAIT =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA_ESCL =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE_ESCL =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_NO_ESCL =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ NOEUD_ESCL =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ TRAN =SIMP(statut='f',typ='R',max=3 ),
+ ANGL_NAUT =SIMP(statut='f',typ='R',max=3 ),
+ CENTRE =SIMP(statut='f',typ='R',max=3 ),
+ DDL_MAIT =SIMP(statut='f',typ='TXM',into=("DNOR",) ),
+ DDL_ESCL =SIMP(statut='f',typ='TXM',into=("DNOR",) ),
+ ),
+
+
+ LIAISON_SOLIDE =FACT(statut='f',fr="Modéliser une partie indéformable d'une structure",max='**',
+ regles=(UN_PARMI('GROUP_NO','NOEUD','GROUP_MA','MAILLE'),),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ NUME_LAGR =SIMP(statut='f',typ='TXM',defaut="NORMAL",into=("NORMAL","APRES") ),
+ ),
+
+ LIAISON_ELEM =FACT(statut='f',fr="Raccorder une poutre à une partie massive 3D ou une coque",max='**',
+ regles=(UN_PARMI('GROUP_MA_1','MAILLE_1'),
+ UN_PARMI('GROUP_NO_2','NOEUD_2'),),
+ OPTION =SIMP(statut='o',typ='TXM',into=("3D_TUYAU","3D_POU","COQ_POU","COQ_TUYAU") ),
+ GROUP_MA_1 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE_1 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_NO_2 =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ NOEUD_2 =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ NUME_LAGR =SIMP(statut='f',typ='TXM',defaut="NORMAL",into=("NORMAL","APRES") ),
+ CARA_ELEM =SIMP(statut='f',typ=(cara_elem) ),
+ AXE_POUTRE =SIMP(statut='f',typ='R',max=3),
+ ANGL_MAX =SIMP(statut='f',typ='R',defaut= 1. ),
+ ),
+
+ LIAISON_UNIF =FACT(statut='f',max='**',
+ fr="Imposer une meme valeur (inconnue) à des ddls d'un emsemble de noeuds",
+ regles=(UN_PARMI('GROUP_NO','NOEUD','GROUP_MA','MAILLE'),),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ DDL =SIMP(statut='o',typ='TXM',max='**'),
+ ),
+
+ LIAISON_CHAMNO =FACT(statut='f',max='**',
+ fr="définir une relation linéaire entre tous les ddls d'un concept cham_no_sdaster",
+# type de cham_no_sdaster CO()
+ CHAM_NO =SIMP(statut='o',typ=cham_no_sdaster), #CO()
+ COEF_IMPO =SIMP(statut='o',typ='R' ),
+ NUME_LAGR =SIMP(statut='f',typ='TXM',defaut="NORMAL",into=("NORMAL","APRES") ),
+ ),
+
+ LIAISON_XFEM =SIMP(statut='f',typ='TXM',into=("OUI","NON"),defaut="NON" ),
+
+ VECT_ASSE =SIMP(statut='f',typ=cham_no_depl_r ),
+
+ CONTACT =FACT(statut='f',fr="Imposer du contact avec ou sans frottement",max='**',
+ regles=(UN_PARMI('GROUP_MA_ESCL','MAILLE_ESCL'),),
+ APPARIEMENT =SIMP(statut='f',typ='TXM',defaut="MAIT_ESCL",
+ into=("NON","NODAL","MAIT_ESCL","MAIT_ESCL_SYME")),
+ RECHERCHE =SIMP(statut='f',typ='TXM',defaut="NOEUD_VOISIN",into=("NOEUD_BOUCLE","NOEUD_VOISIN")),
+ LISSAGE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
+ NORMALE =SIMP(statut='f',typ='TXM',defaut="MAIT",into=("MAIT","MAIT_ESCL")),
+ METHODE =SIMP(statut='f',typ='TXM',defaut="CONTRAINTE",
+ into=("CONTRAINTE","LAGRANGIEN","PENALISATION","CONTINUE") ),
+ PROJECTION =SIMP(statut='f',typ='TXM',defaut="LINEAIRE",into=("LINEAIRE","QUADRATIQUE") ),
+ GROUP_MA_MAIT =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE_MAIT =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA_ESCL =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE_ESCL =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ TOLE_PROJ_EXT =SIMP(statut='f',typ='R',defaut=0.50),
+ TOLE_PROJ_INT =SIMP(statut='f',typ='R',defaut=0.001),
+ ITER_MULT_MAXI =SIMP(statut='f',typ='I',defaut=4),
+
+ b_active =BLOC(condition = "METHODE == 'CONTRAINTE' ",
+ fr="Paramètres de la méthode des contraintes actives (contact uniquement)",
+ regles=(EXCLUS('DIST_ESCL','COEF_IMPO'),
+ EXCLUS('DIST_MAIT','COEF_IMPO'),),
+ NOM_CHAM =SIMP(statut='f',typ='TXM',defaut="DEPL",into=("DEPL","PRES","TEMP","PRE1","PRE2")),
+ FROTTEMENT =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS",) ),
+ NB_RESOL =SIMP(statut='f',typ='I', defaut=10 ),
+ REAC_GEOM =SIMP(statut='f',typ='TXM',defaut="AUTOMATIQUE",into=("AUTOMATIQUE","CONTROLE","SANS")),
+ b_reac_geom =BLOC(condition = "REAC_GEOM == 'CONTROLE' ",
+ fr="Paramètre de la réactualisation géométrique",
+ NB_REAC_GEOM =SIMP(statut='o',typ='I'),),
+ SANS_NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ SANS_GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ SANS_NOEUD_QUAD =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
+ COEF_IMPO =SIMP(statut='f',typ='R'),
+ COEF_MULT_ESCL =SIMP(statut='f',typ='R'),
+ VECT_NORM_ESCL =SIMP(statut='f',typ='R',max=3),
+ VECT_Y =SIMP(statut='f',typ='R',min=3,max=3),
+ DIST_MAIT =SIMP(statut='f',typ='R'),
+ DIST_ESCL =SIMP(statut='f',typ='R'),
+ STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")),),
+ b_lagrangien =BLOC(condition = "METHODE == 'LAGRANGIEN' ",
+ fr="Paramètres de la méthode Lagrangienne (contact avec ou sans frottement)",
+ NOM_CHAM =SIMP(statut='f',typ='TXM',defaut="DEPL",into=("DEPL",)),
+ FROTTEMENT =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","COULOMB",) ),
+ NB_RESOL =SIMP(statut='f',typ='I', defaut=10 ),
+ REAC_GEOM =SIMP(statut='f',typ='TXM',defaut="AUTOMATIQUE",into=("AUTOMATIQUE","CONTROLE","SANS")),
+ b_reac_geom =BLOC(condition = "REAC_GEOM == 'CONTROLE' ",
+ fr="Paramètre de la réactualisation géométrique",
+ NB_REAC_GEOM =SIMP(statut='o',typ='I'),),
+ SANS_NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ SANS_GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ SANS_NOEUD_QUAD =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
+ DIST_MAIT =SIMP(statut='f',typ='R'),
+ DIST_ESCL =SIMP(statut='f',typ='R'),
+ VECT_Y =SIMP(statut='f',typ='R',min=3,max=3),
+ STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")),
+ b_frottement =BLOC(condition = "FROTTEMENT == 'COULOMB' ",fr="Paramètres du frottement de Coulomb",
+ COULOMB =SIMP(statut='o',typ='R',),
+ COEF_MATR_FROT =SIMP(statut='f',typ='R',defaut=0.E+0),
+ ),),
+ b_penalisation =BLOC(condition = "METHODE == 'PENALISATION' ",
+ fr="Paramètres de la méthode pénalisée (contact avec ou sans frottement)",
+ NOM_CHAM =SIMP(statut='f',typ='TXM',defaut="DEPL",into=("DEPL",)),
+ E_N =SIMP(statut='f',typ='R'),
+ FROTTEMENT =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","COULOMB",) ),
+ NB_RESOL =SIMP(statut='f',typ='I', defaut=10 ),
+ REAC_GEOM =SIMP(statut='f',typ='TXM',defaut="AUTOMATIQUE",into=("AUTOMATIQUE","CONTROLE","SANS")),
+ b_reac_geom =BLOC(condition = "REAC_GEOM == 'CONTROLE' ",
+ fr="Paramètre de la réactualisation géométrique",
+ NB_REAC_GEOM =SIMP(statut='o',typ='I'),),
+ SANS_NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ SANS_GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ SANS_NOEUD_QUAD =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
+ DIST_MAIT =SIMP(statut='f',typ='R'),
+ DIST_ESCL =SIMP(statut='f',typ='R'),
+ VECT_Y =SIMP(statut='f',typ='R',min=3,max=3),
+ STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")),
+ b_frottement =BLOC(condition = "FROTTEMENT == 'COULOMB' ",fr="Paramètres du frottement de Coulomb",
+ COULOMB =SIMP(statut='o',typ='R',),
+ E_T =SIMP(statut='f',typ='R',
+ fr="Active la pénalisation sur le frottement et définit le coefficient de pénalisation"),
+ COEF_MATR_FROT =SIMP(statut='f',typ='R',defaut=0.E+0),
+ ),),
+ b_continue =BLOC(condition = "METHODE == 'CONTINUE' ",
+ fr="Paramètres de la méthode continue (contact avec ou sans frottement)",
+ NOM_CHAM =SIMP(statut='f',typ='TXM',defaut="DEPL",into=("DEPL","VITE")),
+ FROTTEMENT =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","COULOMB",) ),
+ INTEGRATION =SIMP(statut='f',typ='TXM',defaut="NOEUD",into=("GAUSS","NOEUD","SIMPSON","SIMPSON1","SIMPSON2")),
+ COEF_REGU_CONT =SIMP(statut='f',typ='R',defaut=100.E+0),
+ MODL_AXIS =SIMP(statut='o',typ='TXM',into=("OUI","NON")),
+ FORMULATION =SIMP(statut='f',typ='TXM',defaut="DEPL",into=("DEPL","VITE")),
+ DIRE_APPA =SIMP(statut='f',typ='R',max=3,defaut=(0.,0.,0.,)),
+ ITER_GEOM_MAXI =SIMP(statut='f',typ='I',defaut=2),
+ ITER_CONT_MAXI =SIMP(statut='f',typ='I',defaut=30),
+ b_frottement =BLOC(condition = "FROTTEMENT == 'COULOMB' ",fr="Paramètres du frottement de Coulomb",
+ COULOMB =SIMP(statut='o',typ='R',),
+ ITER_FROT_MAXI =SIMP(statut='f',typ='I',defaut=2),
+ COEF_REGU_FROT =SIMP(statut='f',typ='R',defaut=100.E+0),
+ SEUIL_INIT =SIMP(statut='f',typ='R',defaut=0.E+0),),),
+ ),
+
+ FORCE_NODALE =FACT(statut='f',fr="Imposer des forces nodales en des noeuds",max='**',
+ regles=(AU_MOINS_UN('GROUP_NO','NOEUD'),
+ AU_MOINS_UN('FX','FY','FZ','MX','MY','MZ' ),),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ FX =SIMP(statut='f',typ='R' ),
+ FY =SIMP(statut='f',typ='R' ),
+ FZ =SIMP(statut='f',typ='R' ),
+ MX =SIMP(statut='f',typ='R' ),
+ MY =SIMP(statut='f',typ='R' ),
+ MZ =SIMP(statut='f',typ='R' ),
+ ANGL_NAUT =SIMP(statut='f',typ='R',max=3),
+ ),
+
+ FORCE_FACE =FACT(statut='f',max='**',
+ fr="Appliquer des forces surfaciques sur une face d'éléments volumiques",
+ regles=(AU_MOINS_UN('GROUP_MA','MAILLE'),
+ AU_MOINS_UN('FX','FY','FZ'),),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ FX =SIMP(statut='f',typ='R' ),
+ FY =SIMP(statut='f',typ='R' ),
+ FZ =SIMP(statut='f',typ='R' ),
+ ),
+
+ FORCE_ARETE =FACT(statut='f',max='**',
+ fr="Appliquer des forces linéiques à une arete d élément volumique ou de coque",
+ regles=(AU_MOINS_UN('GROUP_MA','MAILLE',),
+ AU_MOINS_UN('FX','FY','FZ','MX','MY','MZ' ),),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ FX =SIMP(statut='f',typ='R' ),
+ FY =SIMP(statut='f',typ='R' ),
+ FZ =SIMP(statut='f',typ='R' ),
+ MX =SIMP(statut='f',typ='R' ),
+ MY =SIMP(statut='f',typ='R' ),
+ MZ =SIMP(statut='f',typ='R' ),
+ ),
+
+ FORCE_CONTOUR =FACT(statut='f',max='**',
+ fr="Appliquer des forces linéiques au bord d'un domaine 2D ou AXIS_FOURIER",
+ regles=(AU_MOINS_UN('GROUP_MA','MAILLE'),
+ AU_MOINS_UN('FX','FY','FZ','MX','MY','MZ'),),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ FX =SIMP(statut='f',typ='R' ),
+ FY =SIMP(statut='f',typ='R' ),
+ FZ =SIMP(statut='f',typ='R' ),
+ MX =SIMP(statut='f',typ='R' ),
+ MY =SIMP(statut='f',typ='R' ),
+ MZ =SIMP(statut='f',typ='R' ),
+ ),
+
+ FORCE_INTERNE =FACT(statut='f',max='**',
+ fr="Appliquer des forces volumiques (2D ou 3D) à un domaine volumique",
+ regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
+ PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
+ AU_MOINS_UN('FX','FY','FZ' ),),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ FX =SIMP(statut='f',typ='R' ),
+ FY =SIMP(statut='f',typ='R' ),
+ FZ =SIMP(statut='f',typ='R' ),
+ ),
+
+ PRES_REP =FACT(statut='f',max='**',
+ fr="Appliquer une pression à un domaine de milieu continu 2D ou 3D",
+ regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
+ PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
+ AU_MOINS_UN('PRES','CISA_2D' ),),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ PRES =SIMP(statut='f',typ='R' ),
+ CISA_2D =SIMP(statut='f',typ='R' ),
+ ),
+
+ EFFE_FOND =FACT(statut='f',fr="Imposer un effet de fond",max='**',
+ regles=(AU_MOINS_UN('GROUP_MA','MAILLE'),),
+ GROUP_MA_INT =SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ PRES =SIMP(statut='o',typ='R' ),
+ ),
+
+ EPSI_INIT =FACT(statut='f',max='**',
+ fr="Appliquer un chargement de déformation initiale à un volume 3D ou 2D",
+ regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
+ PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
+ AU_MOINS_UN('EPXX','EPYY','EPZZ','EPXY','EPXZ','EPYZ','EPX',
+ 'KY','KZ','EXX','EYY','EXY','KXX','KYY','KXY'),),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ EPXX =SIMP(statut='f',typ='R' ),
+ EPYY =SIMP(statut='f',typ='R' ),
+ EPZZ =SIMP(statut='f',typ='R' ),
+ EPXY =SIMP(statut='f',typ='R' ),
+ EPXZ =SIMP(statut='f',typ='R' ),
+ EPYZ =SIMP(statut='f',typ='R' ),
+ EPX =SIMP(statut='f',typ='R' ),
+ KY =SIMP(statut='f',typ='R' ),
+ KZ =SIMP(statut='f',typ='R' ),
+ EXX =SIMP(statut='f',typ='R' ),
+ EYY =SIMP(statut='f',typ='R' ),
+ EXY =SIMP(statut='f',typ='R' ),
+ KXX =SIMP(statut='f',typ='R' ),
+ KYY =SIMP(statut='f',typ='R' ),
+ KXY =SIMP(statut='f',typ='R' ),
+ ),
+
+ ARLEQUIN =FACT(statut='f',min=1,max='**',
+ GROUP_MA_1 =SIMP(statut='o',typ=grma,max='**'),
+ GROUP_MA_2 =SIMP(statut='o',typ=grma,max='**'),
+ GROUP_MA_COLL =SIMP(statut='f',typ=grma,max='**'),
+ CARA_ELEM =SIMP(statut='f',typ=cara_elem ),
+ COND_LIM =SIMP(statut='f',typ=char_meca ),
+ COLLAGE =SIMP(statut='f',typ='TXM',defaut="GROSSIER",into=("GROSSIER","FIN","GROUP_MA_1","GROUP_MA_2"),),
+ regles =(UN_PARMI('POIDS_1','POIDS_2','POIDS_GROSSIER','POIDS_FIN',),),
+ POIDS_1 =SIMP(statut='f',typ='R'),
+ POIDS_2 =SIMP(statut='f',typ='R'),
+ POIDS_GROSSIER =SIMP(statut='f',typ='R'),
+ POIDS_FIN =SIMP(statut='f',typ='R'),),
+
+ FORCE_POUTRE =FACT(statut='f',fr="Appliquer des forces linéiques sur des poutres",max='**',
+ regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
+ PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
+ AU_MOINS_UN('FX','FY','FZ','N','VY','VZ'),
+ PRESENT_ABSENT('FX','N','VY','VZ'),
+ PRESENT_ABSENT('FY','N','VY','VZ'),
+ PRESENT_ABSENT('FZ','N','VY','VZ'),
+ PRESENT_ABSENT('N','FX','FY','FZ'),
+ PRESENT_ABSENT('VY','FX','FY','FZ'),
+ PRESENT_ABSENT('VZ','FX','FY','FZ'),),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ TYPE_CHARGE =SIMP(statut='f',typ='TXM',defaut="FORCE",into=("VENT","FORCE",) ),
+# rajour d'un mot clé REPERE :/ LOCAL /GLOBAL
+ FX =SIMP(statut='f',typ='R' ),
+ FY =SIMP(statut='f',typ='R' ),
+ FZ =SIMP(statut='f',typ='R' ),
+
+ N =SIMP(statut='f',typ='R' ),
+ VY =SIMP(statut='f',typ='R' ),
+ VZ =SIMP(statut='f',typ='R' ),
+
+ ),
+
+ FORCE_TUYAU =FACT(statut='f',fr="imposer une pression dans un élément TUYAU",max='**',
+ regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
+ PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ PRES =SIMP(statut='f',typ='R' ),
+ ),
+
+ FORCE_COQUE =FACT(statut='f',fr="Appliquer des forces surfaciques sur des coques",max='**',
+ regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
+ PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
+ AU_MOINS_UN('FX','FY','FZ','MX','MY','MZ','PRES','F1','F2','F3','MF1','MF2'),
+ PRESENT_ABSENT('FX','PRES','F1','F2','F3','MF1','MF2'),
+ PRESENT_ABSENT('FY','PRES','F1','F2','F3','MF1','MF2'),
+ PRESENT_ABSENT('FZ','PRES','F1','F2','F3','MF1','MF2'),
+ PRESENT_ABSENT('MX','PRES','F1','F2','F3','MF1','MF2'),
+ PRESENT_ABSENT('MY','PRES','F1','F2','F3','MF1','MF2'),
+ PRESENT_ABSENT('MZ','PRES','F1','F2','F3','MF1','MF2'),
+ PRESENT_ABSENT('F1','FX','FY','FZ','MX','MY','MZ','PRES'),
+ PRESENT_ABSENT('F2','FX','FY','FZ','MX','MY','MZ','PRES'),
+ PRESENT_ABSENT('F3','FX','FY','FZ','MX','MY','MZ','PRES'),
+ PRESENT_ABSENT('MF1','FX','FY','FZ','MX','MY','MZ','PRES'),
+ PRESENT_ABSENT('MF2','FX','FY','FZ','MX','MY','MZ','PRES'),
+ PRESENT_ABSENT('PRES','FX','FY','FZ','MX','MY','MZ','F1','F2','F3','MF1','MF2'),),
+# rajour d'un mot clé REPERE :/ LOCAL /GLOBAL
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+
+ FX =SIMP(statut='f',typ='R' ),
+ FY =SIMP(statut='f',typ='R' ),
+ FZ =SIMP(statut='f',typ='R' ),
+ MX =SIMP(statut='f',typ='R' ),
+ MY =SIMP(statut='f',typ='R' ),
+ MZ =SIMP(statut='f',typ='R' ),
+
+ F1 =SIMP(statut='f',typ='R' ),
+ F2 =SIMP(statut='f',typ='R' ),
+ F3 =SIMP(statut='f',typ='R' ),
+ MF1 =SIMP(statut='f',typ='R' ),
+ MF2 =SIMP(statut='f',typ='R' ),
+
+ PRES =SIMP(statut='f',typ='R' ),
+ PLAN =SIMP(statut='f',typ='TXM',defaut="MAIL",into=("SUP","INF","MOY","MAIL",) ),
+ ),
+
+
+ GRAPPE_FLUIDE =FACT(statut='f',max='**',
+ regles=(EXCLUS('GROUP_NO_EXTR','NOEUD_EXTR'),
+ EXCLUS('GROUP_NO_ORIG','NOEUD_ORIG'),
+ PRESENT_PRESENT('CARA_HYDR','VALE_HYDR'),
+ PRESENT_PRESENT('CARA_GRAPPE','VALE_GRAPPE'),
+ PRESENT_PRESENT('CARA_COMMANDE','VALE_COMMANDE'),
+ PRESENT_PRESENT('CARA_MANCHETTE','VALE_MANCHETTE'),
+ PRESENT_PRESENT('CARA_GUIDE','VALE_GUIDE'),
+ PRESENT_PRESENT('CARA_ASSEMBLAGE','VALE_ASSEMBLAGE'),
+ PRESENT_PRESENT('CARA_PDC','VALE_PDC'),),
+ GROUP_MA =SIMP(statut='f',typ=grma,max=1),
+ GROUP_NO_EXTR =SIMP(statut='f',typ=grno,max=1),
+ NOEUD_EXTR =SIMP(statut='f',typ=no,max=1),
+ GROUP_NO_ORIG =SIMP(statut='f',typ=grno,max=1),
+ NOEUD_ORIG =SIMP(statut='f',typ=no,max=1),
+ Z0 =SIMP(statut='f',typ='R' ),
+ CARA_HYDR =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',
+ fr="définition des données hydrauliques",
+ into=("Q","ROC","ROD","ROP","ROM","ROML","ROG","NUC","NUM",
+ "NUML","NUG","P2","P3","P4","CGG","G") ),
+ VALE_HYDR =SIMP(statut='f',typ='R',max='**',
+ fr="valeurs des données hydrauliques",),
+ CARA_GRAPPE =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',
+ fr="définition des données géométriques de la grappe",
+ into=("M","DTIGE","DTMOY","ROTIGE","LTIGE","LLT","LCT",
+ "VARAI","RORAI","DCRAY","ROCRAY","LCRAY","LCHUT",
+ "CFCM","CFCI","CFCG","HRUGC","HRUGTC","NCA") ),
+ VALE_GRAPPE =SIMP(statut='f',typ='R',max='**',
+ fr="valeurs des données géométriques de la grappe",),
+ CARA_COMMANDE =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',
+ fr="définition des données géométriques du mécanisme de commande",
+ into=("LI","LML","LG","LIG","DIML","DEML","DCSP",
+ "DG","HRUGML","HRUGCSP","HRUGG") ),
+ VALE_COMMANDE =SIMP(statut='f',typ='R',max='**',
+ fr="valeurs des données géométriques du mécanisme de commande",),
+ CARA_MANCHETTE =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',
+ fr="définition des données géométriques de la manchette et son adaptateur",
+ into=("LM","LA","LIM","DIMT","DEMT","DCMT","VMT",
+ "ROMT","DA","HRUGM","HRUGA") ),
+ VALE_MANCHETTE =SIMP(statut='f',typ='R',max='**',
+ fr="valeurs des données géométriques de la manchette et son adaptateur",),
+ CARA_GUIDE =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',
+ fr="définition des données géométriques des tubes guides",
+ into=("NRET","L0","L1","L2","L3","L4","DTG","DR",
+ "DOR","D0","D00","HRUGTG") ),
+ VALE_GUIDE =SIMP(statut='f',typ='R',max='**',
+ fr="valeurs des données géométriques des tubes guides",),
+ CARA_ASSEMBLAGE =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',
+ fr="définition des données géométriques des assemblages",
+ into=("SASS","DCC","DTI","NGM","NGMDP","KM","KS","KI",
+ "KES","KEI","KF") ),
+ VALE_ASSEMBLAGE =SIMP(statut='f',typ='R',max='**',
+ fr="valeurs des données géométriques des assemblages",),
+ CARA_PDC =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',
+ fr="définition des coefficients de perte de charge singulière",
+ into=("CD0","CD1","CD2","CDELARG","CDRET","CDM","CDA","CDML",
+ "CDI","CDG") ),
+ VALE_PDC =SIMP(statut='f',typ='R',max='**',
+ fr="valeurs des coefficients de perte de charge singulière",),
+ APPL_FORC_ARCHI =SIMP(statut='f',typ='TXM',defaut="REPARTIE" ,
+ fr="application de la force d'archimède",
+ into=("REPARTIE","CDG") ),
+ APPL_FORC_FPLAQ =SIMP(statut='f',typ='TXM',defaut="REPARTIE" ,
+ fr="application de la force de plaquage dans le guidage continu",
+ into=("REPARTIE","CDG","ZONE","MILIEU","DISTRI") ),
+ APPL_FORC_FMEC =SIMP(statut='f',typ='TXM',defaut="REPARTIE" ,
+ fr="application de la force dans le mécanisme de levée",
+ into=("REPARTIE","CDG","ZONE","PTREP") ),
+ APPL_FORC_FTG =SIMP(statut='f',typ='TXM',defaut="REPARTIE" ,
+ fr="application de la force tube_guide",
+ into=("REPARTIE","CDG","ZONE","PTREP") ),
+ DIRE_FORC_FPLAQ =SIMP(statut='f',typ='R',min=3,max=3,
+ fr="direction d'application de la force de plaquage",),
+ b_CDG =BLOC(condition = "(APPL_FORC_ARCHI == 'CDG') or (APPL_FORC_FPLAQ == 'CDG') or \
+ (APPL_FORC_FMEC == 'CDG') or (APPL_FORC_FTG == 'CDG')",
+ MASS_INER =SIMP(statut='o',typ=tabl_mass_iner ),
+ ),
+ UNITE_IMPR_FORCE =SIMP(statut='f',typ='I',
+ fr="unité d'impression des forces",),
+ UNITE_IMPR_NOEUD =SIMP(statut='f',typ='I',
+ fr="unité d'impression des noeuds par zone",),
+ ),
+
+ LIAISON_COQUE =FACT(statut='f',max='**',
+ GROUP_MA_1 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE_1 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_NO_1 =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ NOEUD_1 =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ GROUP_MA_2 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE_2 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_NO_2 =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ NOEUD_2 =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ NUME_LAGR =SIMP(statut='f',typ='TXM',defaut="NORMAL",into=("NORMAL","APRES") ),
+ ),
+
+ RELA_CINE_BP =FACT(statut='f',max='**',
+ CABLE_BP =SIMP(statut='o',typ=cabl_precont ),
+ SIGM_BPEL =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
+ RELA_CINE =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+ ),
+
+ FORCE_ELEC =FACT(statut='f',max='**',
+ fr="Force de Laplace due à la présence d'un conducteur rectiligne secondaire non maillé",
+ regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
+ PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),),
+
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+
+ POSITION =SIMP(statut='f',typ='TXM',fr="Direction prédéfinie",into=("PARA","INFI","FINI",) ),
+ b_fxyz =BLOC ( condition = "POSITION == None",
+ FX =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ FY =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ FZ =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ ),
+
+ b_para =BLOC ( condition = "POSITION == 'PARA'",
+ regles=(UN_PARMI('TRANS','DIST'),),
+ TRANS =SIMP(statut='f',typ='R',max=3),
+ DIST =SIMP(statut='f',typ='R' ),
+ b_point2 =BLOC ( condition = "DIST != None",
+ POINT2 =SIMP(statut='o',typ='R',max=3),
+ ),
+ ),
+ b_fini_infi =BLOC ( condition = "(POSITION == 'FINI') or (POSITION == 'INFI')",
+ POINT1 =SIMP(statut='o',typ='R',max=3),
+ POINT2 =SIMP(statut='o',typ='R',max=3),
+ ),
+ ),
+
+
+
+
+ INTE_ELEC =FACT(statut='f',max='**',
+ fr="Force de Laplace due à la présence d'un conducteur non rectiligne secondaire",
+ regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
+ PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
+ AU_MOINS_UN('GROUP_MA_2','MAILLE_2','TRANS','SYME'),
+ EXCLUS('TRANS','SYME'),),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA_2 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE_2 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ TRANS =SIMP(statut='f',typ='R' ,max='**'),
+ SYME =SIMP(statut='f',typ='R' ,max='**'),
+ ),
+
+
+ IMPE_FACE =FACT(statut='f',fr="Appliquer une impédance acoustique à une face",max='**',
+ regles=(AU_MOINS_UN('GROUP_MA','MAILLE' ),),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ IMPE =SIMP(statut='o',typ='R' ),
+ ),
+
+ VITE_FACE =FACT(statut='f',fr="Imposer des vitesses acoustiquesnormales à une face",max='**',
+ regles=(AU_MOINS_UN('GROUP_MA','MAILLE'),),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ VNOR =SIMP(statut='o',typ='R' ),
+ ),
+
+
+
+ ONDE_FLUI =FACT(statut='f',fr="Appliquer une amplitude de pression d onde incidente",max='**',
+ regles=(AU_MOINS_UN('GROUP_MA','MAILLE'),),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ PRES =SIMP(statut='o',typ='R' ),
+ ),
+
+ FLUX_THM_REP =FACT(statut='f',max='**',
+ regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
+ PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
+ AU_MOINS_UN('FLUN','FLUN_HYDR1','FLUN_HYDR2'),),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ FLUN =SIMP(statut='f',typ='R' ),
+ FLUN_HYDR1 =SIMP(statut='f',typ='R' ),
+ FLUN_HYDR2 =SIMP(statut='f',typ='R' ),
+ ),
+
+ INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
+) ;
+
+
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE G8BHHXD X.DESROCHES
+AFFE_CHAR_MECA_C=OPER(nom="AFFE_CHAR_MECA_C",op= 7,sd_prod=char_meca,
+ fr="Affectation de charges et conditions aux limites mécaniques complexes",
+ reentrant='n',
+ UIinfo={"groupes":("Modélisation",)},
+ regles=(AU_MOINS_UN('DDL_IMPO','FORCE_POUTRE','LIAISON_DDL', ),),
+ MODELE =SIMP(statut='o',typ=modele_sdaster ),
+ VERI_DDL =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+ DDL_IMPO =FACT(statut='f',max='**',
+ regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD',),
+ AU_MOINS_UN('DX','DY','DZ','DRX','DRY','DRZ','GRX','PRES','PHI','LIAISON', ),),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ LIAISON =SIMP(statut='f',typ='TXM',into=('ENCASTRE',)),
+ DX =SIMP(statut='f',typ='C' ),
+ DY =SIMP(statut='f',typ='C' ),
+ DZ =SIMP(statut='f',typ='C' ),
+ DRX =SIMP(statut='f',typ='C' ),
+ DRY =SIMP(statut='f',typ='C' ),
+ DRZ =SIMP(statut='f',typ='C' ),
+ GRX =SIMP(statut='f',typ='C' ),
+ PRES =SIMP(statut='f',typ='C' ),
+ PHI =SIMP(statut='f',typ='C' ),
+ ),
+ FORCE_POUTRE =FACT(statut='f',max='**',
+ regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
+ PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
+ AU_MOINS_UN('FX','FY','FZ','N','VY','VZ',),
+ PRESENT_ABSENT('FX','N','VY','VZ',),
+ PRESENT_ABSENT('FY','N','VY','VZ',),
+ PRESENT_ABSENT('FZ','N','VY','VZ',),
+ PRESENT_ABSENT('N','FX','FY','FZ',),
+ PRESENT_ABSENT('VY', 'FX','FY','FZ',),
+ PRESENT_ABSENT('VZ','FX','FY','FZ', ),),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ TYPE_CHARGE =SIMP(statut='f',typ='TXM',defaut="FORCE",into=("VENT","FORCE") ),
+ FX =SIMP(statut='f',typ='C' ),
+ FY =SIMP(statut='f',typ='C' ),
+ FZ =SIMP(statut='f',typ='C' ),
+ N =SIMP(statut='f',typ='C' ),
+ VY =SIMP(statut='f',typ='C' ),
+ VZ =SIMP(statut='f',typ='C' ),
+ ),
+ LIAISON_DDL =FACT(statut='f',max='**',
+ regles=(UN_PARMI('GROUP_NO','NOEUD', ),),
+ GROUP_NO =SIMP(statut='f',typ=grno,max='**'),
+ NOEUD =SIMP(statut='f',typ=no ,max='**'),
+ DDL =SIMP(statut='o',typ='TXM',max='**'),
+ COEF_MULT =SIMP(statut='o',typ='R' ,max='**'),
+ COEF_IMPO =SIMP(statut='o',typ='C' ),
+ ),
+ INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
+) ;
+#& MODIF COMMANDE DATE 02/11/2004 AUTEUR MABBAS M.ABBAS
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE G8BHHXD X.DESROCHES
+AFFE_CHAR_MECA_F=OPER(nom="AFFE_CHAR_MECA_F",op=7,sd_prod=char_meca,
+ fr="Affectation de charges et conditions aux limites mécaniques fonction d une grandeur",
+ reentrant='n',
+ UIinfo={"groupes":("Modélisation",)},
+ regles=(AU_MOINS_UN('DDL_IMPO','FACE_IMPO','LIAISON_DDL','FORCE_NODALE',
+ 'FORCE_FACE','FORCE_ARETE','FORCE_CONTOUR','FORCE_INTERNE',
+ 'PRES_REP','FORCE_POUTRE','VITE_FACE','IMPE_FACE','ONDE_PLANE',
+ 'LIAISON_OBLIQUE','EPSI_INIT','LIAISON_GROUP','LIAISON_UNIF',
+ 'LIAISON_SOLIDE','FORCE_COQUE','LIAISON_COQUE','FORCE_TUYAU',
+ 'CONTACT','EFFE_FOND','FLUX_THM_REP'),),
+ VERI_DDL =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+ VERI_NORM =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+ MODELE =SIMP(statut='o',typ=modele_sdaster),
+
+ DDL_IMPO =FACT(statut='f',max='**',
+ regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD'),
+ AU_MOINS_UN('DX','DY','DZ','DRX','DRY','DRZ','GRX','PRES','PHI',
+ 'TEMP','PRE1','PRE2','LIAISON',),),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ LIAISON =SIMP(statut='f',typ='TXM',into=('ENCASTRE',)),
+ DX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ DY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ DZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ DRX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ DRY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ DRZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ GRX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ PRES =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ PHI =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ PRE1 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ PRE2 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ ),
+
+ FACE_IMPO =FACT(statut='f',max='**',
+ regles=(UN_PARMI('GROUP_MA','MAILLE'),
+ AU_MOINS_UN('DX','DY','DZ','DRX','DRY','DRZ','GRX','PRES','PHI','TEMP','PRE1','PRE2','DNOR','DTAN'),
+ EXCLUS('DNOR','DX'),
+ EXCLUS('DNOR','DY'),
+ EXCLUS('DNOR','DZ'),
+ EXCLUS('DNOR','DRX'),
+ EXCLUS('DNOR','DRY'),
+ EXCLUS('DNOR','DRZ'),
+ EXCLUS('DTAN','DX'),
+ EXCLUS('DTAN','DY'),
+ EXCLUS('DTAN','DZ'),
+ EXCLUS('DTAN','DRX'),
+ EXCLUS('DTAN','DRY'),
+ EXCLUS('DTAN','DRZ'),),
+# rajout d un mot cle REPERE : / GLOBAL / LOCAL
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ DX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ DY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ DZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ DRX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ DRY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ DRZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ GRX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ PRES =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ PHI =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ PRE1 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ PRE2 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ DNOR =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ DTAN =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ ),
+
+ LIAISON_DDL =FACT(statut='f',max='**',
+ fr="Définir une relation linéaire entre des ddls de deux ou plusieurs noeuds",
+ regles=(UN_PARMI('GROUP_NO','NOEUD'),),
+ GROUP_NO =SIMP(statut='f',typ=grno,max='**'),
+ NOEUD =SIMP(statut='f',typ=no ,max='**'),
+ DDL =SIMP(statut='o',typ='TXM',max='**'),
+ COEF_MULT =SIMP(statut='o',typ='R',max='**'),
+ COEF_IMPO =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ ),
+
+ LIAISON_OBLIQUE =FACT(statut='f',max='**',
+ fr="Définir des relations linéaires entre certains ddls de couples de noeuds",
+ regles=(UN_PARMI('GROUP_NO','NOEUD'),
+ UN_PARMI('DX','DY','DZ','DRX','DRY','DRZ'),),
+ GROUP_NO =SIMP(statut='f',typ=grno,max='**'),
+ NOEUD =SIMP(statut='f',typ=no ,max='**'),
+ ANGL_NAUT =SIMP(statut='o',typ='R',max=3),
+ DX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ DY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ DZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ DRX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ DRY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ DRZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ ),
+
+ LIAISON_GROUP =FACT(statut='f',max='**',
+ fr="Définir des relations linéaires entre certains ddls de couples de noeuds",
+ regles=(UN_PARMI('GROUP_MA_1','MAILLE_1','GROUP_NO_1','NOEUD_1'),
+ UN_PARMI('GROUP_MA_2','MAILLE_2','GROUP_NO_2','NOEUD_2'),
+ EXCLUS('GROUP_MA_1','GROUP_NO_2'),
+ EXCLUS('GROUP_MA_1','NOEUD_2'),
+ EXCLUS('GROUP_NO_1','GROUP_MA_2'),
+ EXCLUS('GROUP_NO_1','MAILLE_2'),
+ EXCLUS('MAILLE_1','GROUP_NO_2'),
+ EXCLUS('MAILLE_1','NOEUD_2'),
+ EXCLUS('NOEUD_1','GROUP_MA_2'),
+ EXCLUS('NOEUD_1','MAILLE_2'),
+ EXCLUS('SANS_NOEUD','SANS_GROUP_NO'),),
+ GROUP_MA_1 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE_1 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_NO_1 =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ NOEUD_1 =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ GROUP_MA_2 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE_2 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_NO_2 =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ NOEUD_2 =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ SANS_NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ SANS_GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ DDL_1 =SIMP(statut='o',typ='TXM',max='**'),
+ COEF_MULT_1 =SIMP(statut='o',typ='R',max='**'),
+ DDL_2 =SIMP(statut='o',typ='TXM',max='**'),
+ COEF_MULT_2 =SIMP(statut='o',typ='R',max='**'),
+ COEF_IMPO =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ SOMMET =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ TRAN =SIMP(statut='f',typ='R',max=3),
+ ANGL_NAUT =SIMP(statut='f',typ='R',max=3),
+ CENTRE =SIMP(statut='f',typ='R',max=3),
+ ),
+
+ CONTACT =FACT(statut='f',fr="Imposer du contact avec ou sans frottement",max='**',
+ regles=(UN_PARMI('GROUP_MA_ESCL','MAILLE_ESCL'),),
+ APPARIEMENT =SIMP(statut='f',typ='TXM',defaut="MAIT_ESCL",
+ into=("NON","NODAL","MAIT_ESCL","MAIT_ESCL_SYME")),
+ RECHERCHE =SIMP(statut='f',typ='TXM',defaut="NOEUD_VOISIN",into=("NOEUD_BOUCLE","NOEUD_VOISIN")),
+ LISSAGE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
+ NORMALE =SIMP(statut='f',typ='TXM',defaut="MAIT",into=("MAIT","MAIT_ESCL")),
+ METHODE =SIMP(statut='f',typ='TXM',defaut="CONTRAINTE",
+ into=("CONTRAINTE","LAGRANGIEN","PENALISATION","CONTINUE") ),
+ PROJECTION =SIMP(statut='f',typ='TXM',defaut="LINEAIRE",into=("LINEAIRE","QUADRATIQUE") ),
+ GROUP_MA_MAIT =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE_MAIT =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA_ESCL =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE_ESCL =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ TOLE_PROJ_EXT =SIMP(statut='f',typ='R',defaut=0.50),
+ TOLE_PROJ_INT =SIMP(statut='f',typ='R',defaut=0.001),
+ ITER_MULT_MAXI =SIMP(statut='f',typ='I',defaut=4),
+ b_active =BLOC(condition = "METHODE == 'CONTRAINTE' ",
+ fr="Paramètres de la méthode des contraintes actives (contact uniquement)",
+ regles=(EXCLUS('DIST_ESCL','COEF_IMPO'),
+ EXCLUS('DIST_MAIT','COEF_IMPO'),),
+ NOM_CHAM =SIMP(statut='f',typ='TXM',defaut="DEPL",into=("DEPL","PRES","TEMP","PRE1","PRE2")),
+ FROTTEMENT =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS",) ),
+ NB_RESOL =SIMP(statut='f',typ='I', defaut=10 ),
+ REAC_GEOM =SIMP(statut='f',typ='TXM',defaut="AUTOMATIQUE",into=("AUTOMATIQUE","CONTROLE","SANS")),
+ b_reac_geom =BLOC(condition = "REAC_GEOM == 'CONTROLE' ",
+ fr="Paramètre de la réactualisation géométrique",
+ NB_REAC_GEOM =SIMP(statut='o',typ='I'),),
+ SANS_NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ SANS_GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ SANS_NOEUD_QUAD =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
+ COEF_IMPO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ COEF_MULT_ESCL =SIMP(statut='f',typ='R'),
+ VECT_NORM_ESCL =SIMP(statut='f',typ='R',max=3),
+ VECT_Y =SIMP(statut='f',typ='R',min=3,max=3),
+ DIST_MAIT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ DIST_ESCL =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")),),
+ b_lagrangien =BLOC(condition = "METHODE == 'LAGRANGIEN' ",
+ fr="Paramètres de la méthode Lagrangienne (contact avec ou sans frottement)",
+ NOM_CHAM =SIMP(statut='f',typ='TXM',defaut="DEPL",into=("DEPL",)),
+ FROTTEMENT =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","COULOMB",) ),
+ NB_RESOL =SIMP(statut='f',typ='I', defaut=10 ),
+ REAC_GEOM =SIMP(statut='f',typ='TXM',defaut="AUTOMATIQUE",into=("AUTOMATIQUE","CONTROLE","SANS")),
+ b_reac_geom =BLOC(condition = "REAC_GEOM == 'CONTROLE' ",
+ fr="Paramètre de la réactualisation géométrique",
+ NB_REAC_GEOM =SIMP(statut='o',typ='I'),),
+ SANS_NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ SANS_GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ SANS_NOEUD_QUAD =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
+ DIST_MAIT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ DIST_ESCL =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ VECT_Y =SIMP(statut='f',typ='R',min=3,max=3),
+ STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")),
+ b_frottement =BLOC(condition = "FROTTEMENT == 'COULOMB' ",fr="Paramètres du frottement de Coulomb",
+ COULOMB =SIMP(statut='o',typ='R',),
+ COEF_MATR_FROT =SIMP(statut='f',typ='R',defaut=0.E+0),
+ ),),
+ b_penalisation =BLOC(condition = "METHODE == 'PENALISATION' ",
+ fr="Paramètres de la méthode pénalisée (contact avec ou sans frottement)",
+ NOM_CHAM =SIMP(statut='f',typ='TXM',defaut="DEPL",into=("DEPL",)),
+ E_N =SIMP(statut='f',typ='R'),
+ FROTTEMENT =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","COULOMB",) ),
+ NB_RESOL =SIMP(statut='f',typ='I', defaut=10 ),
+ REAC_GEOM =SIMP(statut='f',typ='TXM',defaut="AUTOMATIQUE",into=("AUTOMATIQUE","CONTROLE","SANS")),
+ b_reac_geom =BLOC(condition = "REAC_GEOM == 'CONTROLE' ",
+ fr="Paramètre de la réactualisation géométrique",
+ NB_REAC_GEOM =SIMP(statut='o',typ='I'),),
+ SANS_NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ SANS_GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ SANS_NOEUD_QUAD =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
+ DIST_MAIT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ DIST_ESCL =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ VECT_Y =SIMP(statut='f',typ='R',min=3,max=3),
+ STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")),
+ b_frottement =BLOC(condition = "FROTTEMENT == 'COULOMB' ",fr="Paramètres du frottement de Coulomb",
+ COULOMB =SIMP(statut='o',typ='R',),
+ E_T =SIMP(statut='f',typ='R',
+ fr="Active la pénalisation sur le frottement et définit le coefficient de pénalisation"),
+ COEF_MATR_FROT =SIMP(statut='f',typ='R',defaut=0.E+0),
+ ),),
+ b_continue =BLOC(condition = "METHODE == 'CONTINUE' ",
+ fr="Paramètres de la méthode continue (contact avec ou sans frottement)",
+ NOM_CHAM =SIMP(statut='f',typ='TXM',defaut="DEPL",into=("DEPL",)),
+ FROTTEMENT =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","COULOMB",) ),
+ INTEGRATION =SIMP(statut='f',typ='TXM',defaut="NOEUD",into=("GAUSS","NOEUD","SIMPSON","SIMPSON1","SIMPSON2")),
+ COEF_REGU_CONT =SIMP(statut='f',typ='R',defaut=100.E+0),
+ FORMULATION =SIMP(statut='f',typ='TXM',defaut="DEPL",into=("DEPL","VITE")),
+ MODL_AXIS =SIMP(statut='o',typ='TXM',into=("OUI","NON")),
+ DIRE_APPA =SIMP(statut='f',typ='R',max=3),
+ ITER_GEOM_MAXI =SIMP(statut='f',typ='I',defaut=2),
+ ITER_CONT_MAXI =SIMP(statut='f',typ='I',defaut=30),
+ b_frottement =BLOC(condition = "FROTTEMENT == 'COULOMB' ",fr="Paramètres du frottement de Coulomb",
+ COULOMB =SIMP(statut='o',typ='R',),
+ ITER_FROT_MAXI =SIMP(statut='f',typ='I',defaut=2),
+ COEF_REGU_FROT =SIMP(statut='f',typ='R',defaut=100.E+0),
+ SEUIL_INIT =SIMP(statut='f',typ='I',defaut=0),),),
+ ),
+
+ LIAISON_UNIF =FACT(statut='f',max='**',
+ fr="Imposer une meme valeur (inconnue) a des ddls d un emsemble de noeuds",
+ regles=(UN_PARMI('GROUP_NO','NOEUD','GROUP_MA','MAILLE'),),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ DDL =SIMP(statut='o',typ='TXM',max='**'),
+ ),
+
+ LIAISON_SOLIDE =FACT(statut='f',max='**',
+ fr="Modéliser une partie indéformable d une structure",
+ regles=(UN_PARMI('GROUP_NO','NOEUD','GROUP_MA','MAILLE'),),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ NUME_LAGR =SIMP(statut='f',typ='TXM',defaut="NORMAL",into=("NORMAL","APRES",) ),
+ ),
+
+
+
+ FORCE_NODALE =FACT(statut='f',max='**',
+ regles=(UN_PARMI('GROUP_NO','NOEUD'),
+ AU_MOINS_UN('FX','FY','FZ','MX','MY','MZ'),),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ FX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ FY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ FZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ MX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ MY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ MZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ ANGL_NAUT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),max=3 ),
+ ),
+
+ FORCE_FACE =FACT(statut='f',max='**',
+ regles=(AU_MOINS_UN('GROUP_MA','MAILLE'),
+ AU_MOINS_UN('FX','FY','FZ'),),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ FX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ FY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ FZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ ),
+ FORCE_ARETE =FACT(statut='f',max='**',
+ regles=(AU_MOINS_UN('GROUP_MA','MAILLE'),
+ AU_MOINS_UN('FX','FY','FZ','MX','MY','MZ'),),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ FX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ FY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ FZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ MX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ MY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ MZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ ),
+ FORCE_CONTOUR =FACT(statut='f',max='**',
+ regles=(AU_MOINS_UN('GROUP_MA','MAILLE'),
+ AU_MOINS_UN('FX','FY','FZ','MX','MY','MZ'),),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ FX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ FY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ FZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ MX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ MY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ MZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ ),
+
+ FORCE_INTERNE =FACT(statut='f',max='**',
+ regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
+ PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
+ AU_MOINS_UN('FX','FY','FZ'),),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ FX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ FY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ FZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ ),
+
+ PRES_REP =FACT(statut='f',max='**',
+ regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
+ PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
+ AU_MOINS_UN('PRES','CISA_2D'),),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ PRES =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ CISA_2D =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ ),
+
+ EFFE_FOND =FACT(statut='f',fr="Imposer un effet de fond",max='**',
+ regles=(AU_MOINS_UN('GROUP_MA','MAILLE'),),
+ GROUP_MA_INT =SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ PRES =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ ),
+
+ EPSI_INIT =FACT(statut='f',max='**',
+ regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
+ PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
+ AU_MOINS_UN('EPXX','EPYY','EPZZ','EPXY','EPXZ','EPYZ'),),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ EPXX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ EPYY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ EPZZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ EPXY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ EPXZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ EPYZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ ),
+
+ FORCE_POUTRE =FACT(statut='f',max='**',
+ regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
+ PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
+ AU_MOINS_UN('FX','FY','FZ','N','VY','VZ'),
+ PRESENT_ABSENT('FX','N','VY','VZ'),
+ PRESENT_ABSENT('FY','N','VY','VZ'),
+ PRESENT_ABSENT('FZ','N','VY','VZ'),
+ PRESENT_ABSENT('N','FX','FY','FZ'),
+ PRESENT_ABSENT('VY','FX','FY','FZ'),
+ PRESENT_ABSENT('VZ','FX','FY','FZ'),),
+# rajout d un mot cle REPERE : / GLOBAL / LOCAL
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ TYPE_CHARGE =SIMP(statut='f',typ='TXM',defaut="FORCE",into=("VENT","FORCE") ),
+ FX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ FY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ FZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ N =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ VY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ VZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ ),
+
+ FORCE_TUYAU =FACT(statut='f',max='**',
+ regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
+ PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ PRES =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ ),
+
+ FORCE_COQUE =FACT(statut='f',max='**',
+ regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
+ PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
+ AU_MOINS_UN('FX','FY','FZ','MX','MY','MZ','PRES','F1','F2','F3','MF1','MF2'),
+ PRESENT_ABSENT('FX','PRES','F1','F2','F3','MF1','MF2'),
+ PRESENT_ABSENT('FY','PRES','F1','F2','F3','MF1','MF2'),
+ PRESENT_ABSENT('FZ','PRES','F1','F2','F3','MF1','MF2'),
+ PRESENT_ABSENT('MX','PRES','F1','F2','F3','MF1','MF2'),
+ PRESENT_ABSENT('MY','PRES','F1','F2','F3','MF1','MF2'),
+ PRESENT_ABSENT('MZ','PRES','F1','F2','F3','MF1','MF2'),
+ PRESENT_ABSENT('F1','PRES','FX','FY','FZ','MX','MY','MZ'),
+ PRESENT_ABSENT('F2','PRES','FX','FY','FZ','MX','MY','MZ'),
+ PRESENT_ABSENT('F3','PRES','FX','FY','FZ','MX','MY','MZ'),
+ PRESENT_ABSENT('MF1','PRES','FX','FY','FZ','MX','MY','MZ'),
+ PRESENT_ABSENT('MF2','PRES','FX','FY','FZ','MX','MY','MZ'),
+ PRESENT_ABSENT('PRES','FX','FY','FZ','MX','MY','MZ','F1','F2','F3','MF1','MF2'),),
+# rajout d un mot cle REPERE : / GLOBAL / LOCAL
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ FX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ FY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ FZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ MX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ MY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ MZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ F1 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ F2 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ F3 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ MF1 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ MF2 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ PRES =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ PLAN =SIMP(statut='f',typ='TXM',defaut="MAIL",
+ into=("SUP","INF","MOY","MAIL") ),
+ ),
+
+ LIAISON_COQUE =FACT(statut='f',max='**',
+ GROUP_MA_1 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE_1 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_NO_1 =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ NOEUD_1 =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ GROUP_MA_2 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE_2 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_NO_2 =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ NOEUD_2 =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ NUME_LAGR =SIMP(statut='f',typ='TXM',defaut="NORMAL",into=("NORMAL","APRES",) ),
+ ),
+
+
+ VITE_FACE =FACT(statut='f',max='**',
+ regles=(AU_MOINS_UN('GROUP_MA','MAILLE'),
+ PRESENT_ABSENT('GROUP_MA','MAILLE'),),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ VNOR =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ ),
+ IMPE_FACE =FACT(statut='f',max='**',
+ regles=(AU_MOINS_UN('GROUP_MA','MAILLE'),
+ PRESENT_ABSENT('GROUP_MA','MAILLE'),),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ IMPE =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ ),
+ ONDE_PLANE =FACT(statut='f',max='**',
+ DIRECTION =SIMP(statut='o',typ='R',max='**'),
+ TYPE_ONDE =SIMP(statut='o',typ='TXM' ),
+ FONC_SIGNAL =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ DIST_ORIG =SIMP(statut='o',typ='R' ),
+ ),
+
+
+
+ FLUX_THM_REP =FACT(statut='f',max='**',
+ regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
+ PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
+ AU_MOINS_UN('FLUN','FLUN_HYDR1','FLUN_HYDR2'),),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ FLUN =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ FLUN_HYDR1 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ FLUN_HYDR2 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ ),
+
+ INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
+) ;
+
+
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+AFFE_CHAR_OPS011=OPER(nom="AFFE_CHAR_OPS011",op= 190,sd_prod=char_ther,
+ fr=" ",
+ reentrant='n',
+ UIinfo={"groupes":("Outils métier",)},
+ regles=(AU_MOINS_UN('CARA_TORSION', ),),
+ MODELE =SIMP(statut='o',typ=modele_sdaster ),
+ VERI_DDL =SIMP(statut='f',typ='TXM',defaut="OUI",
+ into=("OUI","NON") ),
+ CARA_TORSION =FACT(statut='f',max='**',
+ regles=(UN_PARMI('TOUT','GROUP_MA'),),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ ),
+ INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+AFFE_CHAR_THER=OPER(nom="AFFE_CHAR_THER",op=34,sd_prod=char_ther
+ ,fr="Affectation de charges et conditions aux limites thermiques constantes",
+ reentrant='n',
+ UIinfo={"groupes":("Modélisation",)},
+ regles=(AU_MOINS_UN('TEMP_IMPO','SOURCE','FLUX_REP','ECHANGE',
+ 'ECHANGE_PAROI','GRAD_TEMP_INIT','LIAISON_DDL','LIAISON_GROUP',
+ 'LIAISON_UNIF','LIAISON_CHAMNO','RAYONNEMENT','LIAISON_MAIL' ),),
+ VERI_DDL =SIMP(statut='f',typ='TXM',into=("OUI","NON"),defaut="OUI"),
+ MODELE =SIMP(statut='o',typ=(modele_sdaster) ),
+
+ TEMP_IMPO =FACT(statut='f',max='**',
+ regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD'),
+ AU_MOINS_UN('TEMP_SUP','TEMP','TEMP_INF'),),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ TEMP =SIMP(statut='f',typ='R'),
+ TEMP_INF =SIMP(statut='f',typ='R'),
+ TEMP_SUP =SIMP(statut='f',typ='R'), ),
+
+ FLUX_REP =FACT(statut='f',max='**',
+ regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
+ PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
+ PRESENT_PRESENT('CARA_TORSION','GROUP_MA'),
+ AU_MOINS_UN('FLUN','FLUN_INF','FLUN_SUP','CARA_TORSION') ),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ FLUN =SIMP(statut='f',typ='R'),
+ FLUN_INF =SIMP(statut='f',typ='R'),
+ FLUN_SUP =SIMP(statut='f',typ='R'),
+ CARA_TORSION =SIMP(statut='f',typ=tabl_aire_int ),
+ ),
+
+
+ RAYONNEMENT =FACT(statut='f',max='**',
+ fr="Attention, exprimer les températures en Celsius si rayonnement",
+ regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
+ PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ SIGMA =SIMP(statut='o',typ='R'),
+ EPSILON =SIMP(statut='o',typ='R'),
+ TEMP_EXT =SIMP(statut='o',typ='R'),
+ ),
+
+ ECHANGE =FACT(statut='f',max='**',
+ regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
+ PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
+ AU_MOINS_UN('COEF_H','COEF_H_INF','COEF_H_SUP'),
+ ENSEMBLE('COEF_H','TEMP_EXT',),
+ ENSEMBLE('COEF_H_INF','TEMP_EXT_INF'),
+ ENSEMBLE('COEF_H_SUP','TEMP_EXT_SUP'),),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ COEF_H =SIMP(statut='f',typ='R'),
+ TEMP_EXT =SIMP(statut='f',typ='R'),
+ COEF_H_INF =SIMP(statut='f',typ='R'),
+ TEMP_EXT_INF =SIMP(statut='f',typ='R'),
+ COEF_H_SUP =SIMP(statut='f',typ='R'),
+ TEMP_EXT_SUP =SIMP(statut='f',typ='R'),
+ ),
+
+ SOURCE =FACT(statut='f',max='**',
+ regles=(UN_PARMI('SOUR','SOUR_CALCULEE',),
+ PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
+ PRESENT_ABSENT('SOUR_CALCULEE','TOUT','GROUP_MA','MAILLE'),),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ SOUR =SIMP(statut='f',typ='R'),
+ SOUR_CALCULEE =SIMP(statut='f',typ=(cham_elem_sour_r) ),
+ ),
+
+ GRAD_TEMP_INIT =FACT(statut='f',max='**',
+ regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
+ PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
+ AU_MOINS_UN('FLUX_X','FLUX_Y','FLUX_Z'),),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ FLUX_X =SIMP(statut='f',typ='R' ),
+ FLUX_Y =SIMP(statut='f',typ='R' ),
+ FLUX_Z =SIMP(statut='f',typ='R' ),
+ ),
+
+ LIAISON_DDL =FACT(statut='f',max='**',
+ regles=(UN_PARMI('GROUP_NO','NOEUD', ),),
+ GROUP_NO =SIMP(statut='f',typ=grno,max='**'),
+ NOEUD =SIMP(statut='f',typ=no ,max='**'),
+ DDL =SIMP(statut='f',typ='TXM',max='**',
+ into=("TEMP","TEMP_INF","TEMP_SUP") ),
+ COEF_MULT =SIMP(statut='o',typ='R',max='**'),
+ COEF_IMPO =SIMP(statut='o',typ='R' ),
+ ),
+
+ LIAISON_GROUP =FACT(statut='f',max='**',
+ regles=(UN_PARMI('GROUP_MA_1','MAILLE_1','GROUP_NO_1','NOEUD_1'),
+ UN_PARMI('GROUP_MA_2','MAILLE_2','GROUP_NO_2','NOEUD_2'),
+ EXCLUS('GROUP_MA_1','GROUP_NO_2'),
+ EXCLUS('GROUP_MA_1','NOEUD_2'),
+ EXCLUS('GROUP_NO_1','GROUP_MA_2'),
+ EXCLUS('GROUP_NO_1','MAILLE_2'),
+ EXCLUS('MAILLE_1','GROUP_NO_2'),
+ EXCLUS('MAILLE_1','NOEUD_2'),
+ EXCLUS('NOEUD_1','GROUP_MA_2'),
+ EXCLUS('NOEUD_1','MAILLE_2'),
+ EXCLUS('SANS_NOEUD','SANS_GROUP_NO'),),
+ GROUP_MA_1 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE_1 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_NO_1 =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ NOEUD_1 =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ GROUP_MA_2 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE_2 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_NO_2 =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ NOEUD_2 =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ SANS_NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ SANS_GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ DDL_1 =SIMP(statut='f',typ='TXM',max='**',defaut="TEMP",
+ into=("TEMP","TEMP_INF","TEMP_SUP") ),
+ COEF_MULT_1 =SIMP(statut='o',typ='R',max='**'),
+ DDL_2 =SIMP(statut='f',typ='TXM',max='**',defaut="TEMP",
+ into=("TEMP","TEMP_INF","TEMP_SUP",) ),
+ COEF_MULT_2 =SIMP(statut='o',typ='R',max='**'),
+ COEF_IMPO =SIMP(statut='o',typ='R' ),
+ SOMMET =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ TRAN =SIMP(statut='f',typ='R',max='**'),
+ ANGL_NAUT =SIMP(statut='f',typ='R',max='**'),
+ CENTRE =SIMP(statut='f',typ='R',max='**'),
+ ),
+
+ LIAISON_MAIL =FACT(statut='f',max='**',
+ regles=(AU_MOINS_UN('GROUP_MA_MAIT','MAILLE_MAIT'),
+ AU_MOINS_UN('GROUP_MA_ESCL','MAILLE_ESCL','GROUP_NO_ESCL',
+ 'NOEUD_ESCL'),),
+ GROUP_MA_MAIT =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE_MAIT =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA_ESCL =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE_ESCL =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_NO_ESCL =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ NOEUD_ESCL =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ TRAN =SIMP(statut='f',typ='R',max='**' ),
+ ANGL_NAUT =SIMP(statut='f',typ='R',max='**' ),
+ CENTRE =SIMP(statut='f',typ='R',max='**' ),
+ ),
+
+ ECHANGE_PAROI =FACT(statut='f',max='**',
+ regles=(UN_PARMI('GROUP_MA_1','MAILLE_1'),
+ UN_PARMI('GROUP_MA_2','MAILLE_2'),),
+ GROUP_MA_1 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE_1 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA_2 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE_2 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ COEF_H =SIMP(statut='f',typ='R'),
+ TRAN =SIMP(statut='f',typ='R',min=2,max=3),
+ ANGL_NAUT =SIMP(statut='f',typ='R',max=3),
+ CENTRE =SIMP(statut='f',typ='R',min=2,max=3),
+ ),
+
+ LIAISON_UNIF =FACT(statut='f',max='**',
+ regles=(UN_PARMI('GROUP_NO','NOEUD','GROUP_MA','MAILLE'),),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ DDL =SIMP(statut='f',typ='TXM',max='**',defaut="TEMP",
+ into=("TEMP","TEMP_INF","TEMP_SUP") ),
+ ),
+
+ LIAISON_CHAMNO =FACT(statut='f',max='**',
+ CHAM_NO =SIMP(statut='o',typ=cham_no_sdaster),# CO()# "il faut definir une structure de donnee generique chamno"
+ COEF_IMPO =SIMP(statut='o',typ='R' ),
+ NUME_LAGR =SIMP(statut='f',typ='TXM',defaut="NORMAL",into=("NORMAL","APRES") ),
+ ),
+
+ CONVECTION =FACT(statut='f',max='**',
+ VITESSE =SIMP(statut='o',typ=(cham_no_depl_r) ),
+ ),
+
+
+ INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ),
+) ;
+#& MODIF COMMANDE DATE 30/06/2004 AUTEUR MCOURTOI M.COURTOIS
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+AFFE_CHAR_THER_F=OPER(nom="AFFE_CHAR_THER_F",op=33,sd_prod=char_ther,
+ fr="Affectation de charges et conditions aux limites thermiques fonction dune grandeur (temps, ...)",
+ reentrant='n',
+ UIinfo={"groupes":("Modélisation",)},
+ regles=(AU_MOINS_UN('TEMP_IMPO','SOURCE','FLUX_REP','FLUX_NL','ECHANGE',
+ 'ECHANGE_PAROI','LIAISON_DDL','LIAISON_GROUP','LIAISON_UNIF',
+ 'GRAD_TEMP_INIT','RAYONNEMENT'),),
+ VERI_DDL =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+ MODELE =SIMP(statut='o',typ=(modele_sdaster) ),
+
+ TEMP_IMPO =FACT(statut='f',max='**',
+ regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD'),
+ AU_MOINS_UN('TEMP_SUP','TEMP','TEMP_INF','EVOL_THER'),
+ PRESENT_ABSENT('EVOL_THER','TEMP','TEMP_INF','TEMP_SUP'),),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ EVOL_THER =SIMP(statut='f',typ=(evol_ther) ),
+ DDL =SIMP(statut='f',typ='TXM',into=("TEMP",) ),
+ TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ TEMP_INF =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ TEMP_SUP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ ),
+
+ FLUX_REP =FACT(statut='f',max='**',
+ regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
+ PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
+ AU_MOINS_UN('FLUN','FLUN_INF','FLUN_SUP','FLUX_X','FLUX_Y','FLUX_Z'),),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ FLUN =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ FLUN_INF =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ FLUN_SUP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ FLUX_X =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ FLUX_Y =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ FLUX_Z =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ ),
+
+ FLUX_NL =FACT(statut='f',max='**',
+ regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
+ PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ FLUN =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ ),
+
+
+ RAYONNEMENT =FACT(statut='f',max='**',
+ fr="Attention, exprimer les températures en Celsius si rayonnement",
+ regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
+ PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ SIGMA =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ EPSILON =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ TEMP_EXT =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ ),
+
+
+
+ ECHANGE =FACT(statut='f',max='**',
+ regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
+ PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
+ AU_MOINS_UN('COEF_H','COEF_H_INF','COEF_H_SUP'),
+ ENSEMBLE('COEF_H','TEMP_EXT'),
+ ENSEMBLE('COEF_H_INF','TEMP_EXT_INF'),
+ ENSEMBLE('COEF_H_SUP','TEMP_EXT_SUP'),),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ COEF_H =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ TEMP_EXT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ COEF_H_INF =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ TEMP_EXT_INF =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ COEF_H_SUP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ TEMP_EXT_SUP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ ),
+
+
+ SOURCE =FACT(statut='f',max='**',
+ regles=(UN_PARMI('TOUT','GROUP_MA','MAILLE'),),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ SOUR =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ ),
+
+ GRAD_TEMP_INIT =FACT(statut='f',max='**',
+ regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
+ PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
+ AU_MOINS_UN('FLUX_X','FLUX_Y','FLUX_Z'),),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ FLUX_X =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ FLUX_Y =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ FLUX_Z =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ ),
+
+ ECHANGE_PAROI =FACT(statut='f',max='**',
+ regles=(UN_PARMI('GROUP_MA_1','MAILLE_1'),
+ UN_PARMI('GROUP_MA_2','MAILLE_2'),),
+ GROUP_MA_1 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE_1 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA_2 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE_2 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ COEF_H =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ TRAN =SIMP(statut='f',typ='R',min=2,max=3),
+ ANGL_NAUT =SIMP(statut='f',typ='R',max=3),
+ CENTRE =SIMP(statut='f',typ='R',min=2,max=3),
+ ),
+
+ LIAISON_DDL =FACT(statut='f',max='**',
+ regles=(UN_PARMI('GROUP_NO','NOEUD'),),
+ GROUP_NO =SIMP(statut='f',typ=grno,max='**'),
+ NOEUD =SIMP(statut='f',typ=no ,max='**'),
+ DDL =SIMP(statut='f',typ='TXM',max='**',into=("TEMP","TEMP_INF","TEMP_SUP") ),
+ COEF_MULT =SIMP(statut='o',typ='R',max='**'),
+ COEF_IMPO =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ ),
+
+ LIAISON_GROUP =FACT(statut='f',max='**',
+ regles=(UN_PARMI('GROUP_MA_1','MAILLE_1','GROUP_NO_1','NOEUD_1'),
+ UN_PARMI('GROUP_MA_2','MAILLE_2','GROUP_NO_2','NOEUD_2'),
+ EXCLUS('GROUP_MA_1','GROUP_NO_2'),
+ EXCLUS('GROUP_MA_1','NOEUD_2'),
+ EXCLUS('GROUP_NO_1','GROUP_MA_2'),
+ EXCLUS('GROUP_NO_1','MAILLE_2'),
+ EXCLUS('MAILLE_1','GROUP_NO_2'),
+ EXCLUS('MAILLE_1','NOEUD_2'),
+ EXCLUS('NOEUD_1','GROUP_MA_2'),
+ EXCLUS('NOEUD_1','MAILLE_2'),
+ EXCLUS('SANS_NOEUD','SANS_GROUP_NO'),),
+ GROUP_MA_1 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE_1 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_NO_1 =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ NOEUD_1 =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ GROUP_MA_2 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE_2 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_NO_2 =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ NOEUD_2 =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ SANS_NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ SANS_GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ DDL_1 =SIMP(statut='f',typ='TXM',max='**',defaut="TEMP",
+ into=("TEMP","TEMP_INF","TEMP_SUP") ),
+ COEF_MULT_1 =SIMP(statut='o',typ='R',max='**'),
+ DDL_2 =SIMP(statut='f',typ='TXM',max='**',defaut="TEMP",
+ into=("TEMP","TEMP_INF","TEMP_SUP") ),
+ COEF_MULT_2 =SIMP(statut='o',typ='R',max='**'),
+ COEF_IMPO =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ SOMMET =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ TRAN =SIMP(statut='f',typ='R',max='**'),
+ ANGL_NAUT =SIMP(statut='f',typ='R',max='**'),
+ CENTRE =SIMP(statut='f',typ='R',max='**'),
+ ),
+
+ LIAISON_UNIF =FACT(statut='f',max='**',
+ regles=(UN_PARMI('GROUP_NO','NOEUD','GROUP_MA','MAILLE'),),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ DDL =SIMP(statut='f',typ='TXM',defaut="TEMP",
+ into=("TEMP","TEMP_INF","TEMP_SUP") ),
+ ),
+
+ CONVECTION =FACT(statut='f',max='**',
+ VITESSE =SIMP(statut='o',typ=(cham_no_depl_r) ),
+ ),
+
+ INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE VABHHTS J.PELLET
+AFFE_MATERIAU=OPER(nom="AFFE_MATERIAU",op=6,sd_prod=cham_mater,
+ fr="Affectation de caractéristiques de matériaux à un maillage",
+ reentrant='n',
+ UIinfo={"groupes":("Modélisation",)},
+ MAILLAGE =SIMP(statut='o',typ=maillage_sdaster),
+ MODELE =SIMP(statut='f',typ=modele_sdaster),
+ AFFE =FACT(statut='o',max='**',
+ regles=(UN_PARMI('TOUT','GROUP_MA','MAILLE'),),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ MATER =SIMP(statut='o',typ=mater_sdaster,max=30),
+ TEMP_REF =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ SECH_REF =SIMP(statut='f',typ='R',val_min=0.E+0),
+ ),
+) ;
+#& MODIF COMMANDE DATE 12/04/2005 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE JMBHH01 J.M.PROIX
+AFFE_MODELE=OPER(nom="AFFE_MODELE",op=18,sd_prod=modele_sdaster,
+ UIinfo={"groupes":("Modélisation",)},
+ fr="Affectation des éléments finis sur le maillage",reentrant='n',
+ regles=(AU_MOINS_UN('AFFE','AFFE_SOUS_STRUC'),),
+ MAILLAGE =SIMP(statut='o',typ=(maillage_sdaster) ),
+ INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
+ VERIF =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=2,into=("MAILLE","NOEUD") ),
+ AFFE_SOUS_STRUC =FACT(statut='f',
+ regles=(UN_PARMI('TOUT','MAILLE'),),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ MAILLE =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**'),
+ PHENOMENE =SIMP(statut='f',typ='TXM',defaut="MECANIQUE",into=("MECANIQUE",) ),
+ ),
+ AFFE =FACT(statut='f',max='**',
+ regles=(UN_PARMI('TOUT','GROUP_MA','GROUP_NO','MAILLE','NOEUD'),),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ PHENOMENE =SIMP(statut='o',typ='TXM',
+ into=("MECANIQUE","THERMIQUE","ACOUSTIQUE") ),
+ b_mecanique =BLOC( condition = "PHENOMENE=='MECANIQUE'",
+ fr="modelisations mécaniques",
+ MODELISATION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',into=(
+ "2D_DIS_T",
+ "2D_DIS_TR",
+ "2D_FLUI_ABSO",
+ "2D_FLUI_PESA",
+ "2D_FLUI_STRU",
+ "2D_FLUIDE",
+ "3D",
+ "3D_ABSO",
+ "3D_FAISCEAU",
+ "3D_FLUI_ABSO",
+ "3D_FLUIDE",
+ "3D_HHM" ,
+ "3D_HM",
+ "3D_INCO",
+ "3D_JOINT_CT",
+ "3D_SI",
+ "3D_THH",
+ "3D_THHM",
+ "3D_THM",
+ "3D_GRAD_EPSI",
+ "3D_GRAD_VARI",
+ "APPUI_REP",
+ "ASSE_GRIL",
+ "AXIS",
+ "AXIS_FLUI_STRU",
+ "AXIS_FLUIDE",
+ "AXIS_FOURIER",
+ "AXIS_HHM",
+ "AXIS_HM",
+ "AXIS_INCO",
+ "AXIS_NS",
+ "AXIS_SI",
+ "AXIS_THH",
+ "AXIS_THHM",
+ "AXIS_THM",
+ "AXIS_GRAD_VARI",
+ "AXIS_FISSURE",
+ "BARRE",
+ "2D_BARRE",
+ "C_PLAN",
+ "C_PLAN_NS",
+ "C_PLAN_SI",
+ "C_PLAN_GRAD_EPSI",
+ "C_PLAN_GRAD_VARI",
+ "CABLE",
+ "CABLE_POULIE",
+ "COQUE_3D",
+ "COQUE_AXIS",
+ "COQUE_C_PLAN",
+ "COQUE_D_PLAN",
+ "D_PLAN",
+ "D_PLAN_GRAD_EPSI",
+ "D_PLAN_GRAD_VARI",
+ "D_PLAN_NS",
+ "PLAN_FISSURE",
+ "D_PLAN_ABSO",
+ "D_PLAN_HHM",
+ "D_PLAN_HM",
+ "D_PLAN_INCO",
+ "D_PLAN_SI",
+ "D_PLAN_THH",
+ "D_PLAN_THHM",
+ "D_PLAN_THM",
+ "3D_HHMD",
+ "3D_HMD",
+ "3D_THHD",
+ "3D_THVD",
+ "3D_THHMD",
+ "3D_THMD",
+ "AXIS_HH2MD",
+ "AXIS_HHMD",
+ "AXIS_HMD",
+ "AXIS_THHD",
+ "AXIS_THH2D",
+ "AXIS_THVD",
+ "AXIS_THHMD",
+ "AXIS_THH2MD",
+ "AXIS_THMD",
+ "D_PLAN_HHMD",
+ "D_PLAN_HH2MD",
+ "D_PLAN_HMD",
+ "D_PLAN_THHD",
+ "D_PLAN_THH2D",
+ "D_PLAN_THVD",
+ "D_PLAN_THH2MD",
+ "D_PLAN_THHMD",
+ "D_PLAN_THMD",
+ "DIS_T",
+ "DIS_TR",
+ "DKT",
+ "DKTG",
+ "DST",
+ "FLUI_STRU",
+ "GRILLE",
+ "GRILLE_MEMBRANE",
+ "POU_C_T",
+ "POU_D_E",
+ "POU_D_EM",
+ "POU_D_T",
+ "POU_D_T_GD",
+ "POU_D_TG",
+ "POU_D_TGM",
+ "Q4G",
+ "TUYAU_3M",
+ "TUYAU_6M",
+ "SHB8"
+ ) ) ),
+
+ b_thermique =BLOC( condition = "PHENOMENE=='THERMIQUE'",
+ fr="modelisations thermiques",
+ MODELISATION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',into=(
+ "3D",
+ "3D_DIAG",
+ "AXIS",
+ "AXIS_DIAG",
+ "AXIS_FOURIER",
+ "COQUE",
+ "COQUE_AXIS",
+ "COQUE_PLAN",
+ "PLAN",
+ "PLAN_DIAG",
+ ),),),
+
+ b_acoustique =BLOC( condition = "PHENOMENE=='ACOUSTIQUE'",
+ fr="modelisations acoustiques",
+ MODELISATION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',into=(
+ "3D",
+ "PLAN"
+ ), ),),
+
+ ),
+) ;
+#& MODIF COMMANDE DATE 23/08/2004 AUTEUR CIBHHLV L.VIVAN
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+AIDE=PROC(nom="AIDE",op=42,
+ UIinfo={"groupes":("Modélisation",)},
+ fr="Interrogation sur le catalogue des commandes et les concepts produits",
+ regles=(AU_MOINS_UN('CONCEPT','TYPE_ELEM', ),),
+ UNITE =SIMP(statut='f',typ='I',defaut=8),
+ TYPE_ELEM =FACT(fr="couple type_elem option",statut='f',
+ INITEL =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON",) ),
+ ),
+ CONCEPT =FACT(statut='f',max='**',
+ NOM =SIMP(fr="liste des noms de concept",statut='f',typ='TXM',validators=NoRepeat(),max='**',defaut="*"),
+ OPTION =SIMP(fr="option d'édition de concept",statut='f',typ='TXM',defaut="TOUT_TYPE",
+ into=("TOUT_TYPE","CREER","A_CREER",) ),
+ ),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE VABHHTS J.PELLET
+ASSE_MAILLAGE=OPER(nom="ASSE_MAILLAGE",op= 105,sd_prod=maillage_sdaster,
+ fr="Assembler deux maillages sous un seul nom",
+ reentrant='n',
+ UIinfo={"groupes":("Maillage",)},
+ MAILLAGE_1 = SIMP(statut='o',typ=maillage_sdaster,),
+ MAILLAGE_2 = SIMP(statut='o',typ=maillage_sdaster,),
+ OPERATION = SIMP(statut='o',typ='TXM',into=("SOUS_STR","SUPERPOSE","COLLAGE"),),
+ b_collage = BLOC(condition = "OPERATION == 'COLLAGE'",
+ COLLAGE = FACT(statut='o',
+ GROUP_MA_1 =SIMP(statut='o',typ=grma),
+ GROUP_MA_2 =SIMP(statut='o',typ=grma),
+ ),
+ ),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+ASSE_MATR_GENE=OPER(nom="ASSE_MATR_GENE",op= 128,sd_prod=matr_asse_gene_r,
+ fr="Assemblage des matrices généralisées de macro éléments pour construction de la matrice globale généralisée",
+ reentrant='n',
+ UIinfo={"groupes":("Matrices/vecteurs",)},
+ NUME_DDL_GENE =SIMP(statut='o',typ=nume_ddl_gene ),
+ OPTION =SIMP(statut='o',typ='TXM',into=("RIGI_GENE","MASS_GENE","AMOR_GENE") ),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE VABHHTS J.PELLET
+def asse_matrice_prod(MATR_ELEM,**args):
+ if AsType(MATR_ELEM) == matr_elem_depl_r : return matr_asse_depl_r
+ if AsType(MATR_ELEM) == matr_elem_depl_c : return matr_asse_depl_c
+ if AsType(MATR_ELEM) == matr_elem_temp_r : return matr_asse_temp_r
+ if AsType(MATR_ELEM) == matr_elem_pres_c : return matr_asse_pres_c
+ raise AsException("type de concept resultat non prevu")
+
+ASSE_MATRICE=OPER(nom="ASSE_MATRICE",op=12,sd_prod=asse_matrice_prod,
+ fr="Construction d une matrice assemblée",reentrant='n',
+ UIinfo={"groupes":("Matrices/vecteurs",)},
+ MATR_ELEM =SIMP(statut='o',
+ typ=(matr_elem_depl_r,matr_elem_depl_c,matr_elem_temp_r,matr_elem_pres_c) ),
+ NUME_DDL =SIMP(statut='o',typ=nume_ddl_sdaster),
+ CHAR_CINE =SIMP(statut='f',typ=(char_cine_meca,char_cine_ther,char_cine_acou) ),
+ INFO =SIMP(statut='f',typ='I',into=(1,2) ),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+ASSE_VECT_GENE=OPER(nom="ASSE_VECT_GENE",op= 140,sd_prod=vect_asse_gene,
+ fr="Assemblage de vecteurs de chargement en coordonnées généralisées",
+ reentrant='n',
+ UIinfo={"groupes":("Matrices/vecteurs",)},
+ NUME_DDL_GENE =SIMP(statut='o',typ=nume_ddl_gene ),
+ CHAR_SOUS_STRUC =FACT(statut='o',max='**',
+ SOUS_STRUC =SIMP(statut='o',typ='TXM' ),
+ VECT_ASSE =SIMP(statut='o',typ=cham_no_depl_r ),
+ ),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE VABHHTS J.PELLET
+def asse_vecteur_prod(VECT_ELEM,**args):
+ if AsType(VECT_ELEM) == vect_elem_depl_r : return cham_no_depl_r
+ if AsType(VECT_ELEM) == vect_elem_temp_r : return cham_no_temp_r
+ if AsType(VECT_ELEM) == vect_elem_pres_r : return cham_no_pres_r
+ if AsType(VECT_ELEM) == vect_elem_pres_c : return cham_no_pres_c
+ raise AsException("type de concept resultat non prevu ")
+
+ASSE_VECTEUR=OPER(nom="ASSE_VECTEUR",op=13,sd_prod=asse_vecteur_prod,
+ fr="Assemblage d un second membre",reentrant='n',
+ UIinfo={"groupes":("Matrices/vecteurs",)},
+ VECT_ELEM =SIMP(statut='o',typ=vect_elem,max='**'),
+ NUME_DDL =SIMP(statut='o',typ=nume_ddl_sdaster ),
+ INFO =SIMP(statut='f',typ='I',into=(1,2,) ),
+) ;
+#& MODIF COMMANDE DATE 30/06/2004 AUTEUR MCOURTOI M.COURTOIS
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+CALC_AMOR_MODAL=OPER(nom="CALC_AMOR_MODAL",op= 172,sd_prod=listr8_sdaster,
+ fr="Création d'une liste d'amortissements modaux calculés selon la règle du RCC-G",
+ reentrant='n',
+ UIinfo={"groupes":("Résolution",)},
+ ENER_SOL =FACT(statut='o',
+ regles=(UN_PARMI('GROUP_NO_RADIER','GROUP_MA_RADIER'),
+ PRESENT_ABSENT('COEF_GROUP','FONC_GROUP'),
+# Peut-on remplacer les deux règles suivantes par un ENSEMBLE_('KRX','KRY','KRZ')
+ PRESENT_PRESENT('KRX','KRY'),
+ PRESENT_PRESENT('KRX','KRZ'),
+ PRESENT_ABSENT('COOR_CENTRE','NOEUD_CENTRE'),
+ PRESENT_ABSENT('GROUP_NO_CENTRE','NOEUD_CENTRE'),
+ PRESENT_ABSENT('GROUP_NO_CENTRE','COOR_CENTRE'),),
+ METHODE =SIMP(statut='f',typ='TXM',defaut="DEPL",into=("DEPL","RIGI_PARASOL") ),
+ MODE_MECA =SIMP(statut='o',typ=mode_meca ),
+ GROUP_NO_RADIER =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ GROUP_MA_RADIER =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ FONC_GROUP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ COEF_GROUP =SIMP(statut='f',typ='R',max='**'),
+ KX =SIMP(statut='o',typ='R' ),
+ KY =SIMP(statut='o',typ='R' ),
+ KZ =SIMP(statut='o',typ='R' ),
+ KRX =SIMP(statut='f',typ='R' ),
+ KRY =SIMP(statut='f',typ='R' ),
+ KRZ =SIMP(statut='f',typ='R' ),
+ GROUP_NO_CENTRE =SIMP(statut='f',typ=grno),
+ NOEUD_CENTRE =SIMP(statut='f',typ=no),
+ COOR_CENTRE =SIMP(statut='f',typ='R',max=3),
+ ),
+ AMOR_INTERNE =FACT(statut='o',
+ ENER_POT =SIMP(statut='o',typ=tabl_ener_pot ),
+ GROUP_MA =SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**'),
+ AMOR_REDUIT =SIMP(statut='o',typ='R',max='**'),
+ ),
+ AMOR_SOL =FACT(statut='o',
+ AMOR_REDUIT =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ FONC_AMOR_GEO =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule),max='**' ),
+ HOMOGENE =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+ SEUIL =SIMP(statut='f',typ='R',defaut= 0.3 ),
+ ),
+) ;
+#& MODIF COMMANDE DATE 30/06/2004 AUTEUR MCOURTOI M.COURTOIS
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE JMBHH01 J.M.PROIX
+def calc_cham_elem_prod(OPTION,**args):
+
+
+# options thermiques
+
+ if OPTION == "FLUX_ELGA_TEMP" : return cham_elem_flux_r
+ if OPTION == "FLUX_ELNO_TEMP" : return cham_elem_flux_r
+ if OPTION == "SOUR_ELGA_ELEC" : return cham_elem_sour_r
+
+# options acoustiques
+
+ if OPTION == "PRES_ELNO_DBEL" : return cham_elem_dbel_r
+ if OPTION == "PRES_ELNO_REEL" : return cham_elem_pres_r
+ if OPTION == "PRES_ELNO_IMAG" : return cham_elem_pres_r
+
+# autres options
+
+ if OPTION == "COOR_ELGA" : return cham_elem_geom_r
+
+ raise AsException("type de concept resultat non prevu")
+
+CALC_CHAM_ELEM=OPER(nom="CALC_CHAM_ELEM",op=38,sd_prod=calc_cham_elem_prod,
+ fr="Calcul de champs par éléments à partir de champs solution ou de champs par éléments",
+ reentrant='n',
+ UIinfo={"groupes":("Post traitements",)},
+ MODELE =SIMP(statut='o',typ=modele_sdaster),
+ CHAM_MATER =SIMP(statut='o',typ=cham_mater),
+ CARA_ELEM =SIMP(statut='f',typ=cara_elem),
+
+ regles=(EXCLUS('TOUT','GROUP_MA',),EXCLUS('TOUT','MAILLE',),),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+
+#
+#
+# introduire un mot cle de type modelisation : mécanique,thermique,...
+#
+
+ OPTION =SIMP(statut='o',typ='TXM',
+ into=("FLUX_ELGA_TEMP","FLUX_ELNO_TEMP","SOUR_ELGA_ELEC",
+ "PRES_ELNO_DBEL","PRES_ELNO_REEL","PRES_ELNO_IMAG",
+ "COOR_ELGA"), ),
+
+ b_thermique =BLOC(condition="OPTION in ('FLUX_ELNO_TEMP','FLUX_ELGA_TEMP','SOUR_ELGA_ELEC',)",
+ TEMP =SIMP(statut='o',typ=(cham_no_temp_r,)),
+ ),
+
+ b_acoustique =BLOC(condition="OPTION in ('PRES_ELNO_DBEL','PRES_ELNO_REEL','PRES_ELNO_IMAG',)",
+ PRES =SIMP(statut='o',typ=(cham_no_pres_c,)),
+ ),
+
+
+
+ EXCIT =FACT(statut='f',max='**',
+ regles=(EXCLUS('FONC_MULT','COEF_MULT', ),),
+ CHARGE =SIMP(statut='o',typ=(char_meca,char_ther,char_acou)),
+ FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ COEF_MULT =SIMP(statut='f',typ='R'), ),
+
+ INST =SIMP(statut='f',typ='R',defaut= 0.E+0),
+ ACCE =SIMP(statut='f',typ=cham_no_depl_r),
+ NUME_COUCHE =SIMP(statut='f',typ='I',defaut= 1),
+ NIVE_COUCHE =SIMP(statut='f',typ='TXM',defaut="MOY",into=("SUP","INF","MOY") ),
+ MODE_FOURIER =SIMP(statut='f',typ='I',defaut= 0 ),
+ ANGLE =SIMP(statut='f',typ='I',defaut= 0),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE VABHHTS J.PELLET
+def calc_char_cine_prod(CHAR_CINE,**args):
+ if AsType(CHAR_CINE) == char_cine_meca : return cham_no_depl_r
+ if AsType(CHAR_CINE) == char_cine_ther : return cham_no_temp_r
+ if AsType(CHAR_CINE) == char_cine_acou : return cham_no_pres_c
+ raise AsException("type de concept resultat non prevu")
+
+CALC_CHAR_CINE=OPER(nom="CALC_CHAR_CINE",op= 102,sd_prod=calc_char_cine_prod,
+ fr="Calcul des seconds membres associés à des charges cinématiques (conditions aux limites non dualisées)",
+ reentrant='n',
+ UIinfo={"groupes":("Matrices/vecteurs",)},
+ NUME_DDL =SIMP(statut='o',typ=nume_ddl_sdaster ),
+ CHAR_CINE =SIMP(statut='o',typ=(char_cine_meca,char_cine_ther,char_cine_acou ) ),
+ INST =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2 ) ),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+def calc_char_seisme_prod(MATR_MASS,**args ):
+ if AsType(MATR_MASS) == matr_asse_depl_r : return cham_no_depl_r
+ raise AsException("type de concept resultat non prevu")
+
+CALC_CHAR_SEISME=OPER(nom="CALC_CHAR_SEISME",op= 92,sd_prod=calc_char_seisme_prod,
+ reentrant='n',
+ UIinfo={"groupes":("Matrices/vecteurs",)},
+ regles=(UN_PARMI('MONO_APPUI','MODE_STAT' ),),
+ MATR_MASS =SIMP(statut='o',typ=matr_asse_depl_r,fr="Matrice de masse" ),
+ DIRECTION =SIMP(statut='o',typ='R',max=6,fr="Directions du séisme imposé"),
+ MONO_APPUI =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ MODE_STAT =SIMP(statut='f',typ=(mode_stat_depl,mode_stat_acce,mode_stat_forc,) ),
+ b_mode_stat =BLOC ( condition = "MODE_STAT != None",
+ regles=(UN_PARMI('NOEUD','GROUP_NO' ),),
+ NOEUD =SIMP(statut='f',typ=no,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ ),
+ TITRE =SIMP(statut='f',typ='TXM',max='**'),
+) ;
+#& MODIF COMMANDE DATE 23/11/2004 AUTEUR ASSIRE A.ASSIRE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE JMBHH01 J.M.PROIX
+def calc_elem_prod(RESULTAT,**args):
+ if AsType(RESULTAT) != None : return AsType(RESULTAT)
+ raise AsException("type de concept resultat non prevu")
+
+CALC_ELEM=OPER(nom="CALC_ELEM",op=58,sd_prod=calc_elem_prod,reentrant='f',
+ UIinfo={"groupes":("Post traitements",)},
+ fr="Compléter ou créer un résultat en calculant des champs par éléments (contraintes, déformations,... )",
+ MODELE =SIMP(statut='f',typ=modele_sdaster),
+ CHAM_MATER =SIMP(statut='f',typ=cham_mater),
+ CARA_ELEM =SIMP(statut='f',typ=cara_elem),
+
+ RESULTAT =SIMP(statut='o',typ=(evol_elas,dyna_trans,dyna_harmo,mode_meca,
+ mode_stat,mode_stat_depl,mode_stat_acce,mode_stat_forc,
+ evol_noli,mult_elas,fourier_elas,
+ evol_ther,base_modale,
+ acou_harmo,mode_acou,mode_flamb) ,
+ fr="Résultat d'une commande globale"),
+
+ regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','FREQ','NUME_MODE',
+ 'NOEUD_CMP','LIST_INST','LIST_FREQ','LIST_ORDRE','NOM_CAS'),),
+ TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
+ NUME_MODE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
+ NOEUD_CMP =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'),
+ NOM_CAS =SIMP(statut='f',typ='TXM' ),
+
+ INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
+ FREQ =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
+ LIST_INST =SIMP(statut='f',typ=listr8_sdaster),
+ LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster),
+ PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3 ),
+ CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",) ),
+ LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster),
+
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**',
+ fr="le calcul ne sera effectué que sur ces mailles là"),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**',
+ fr="le calcul ne sera effectué que sur ces mailles là"),
+
+# options pour des resultats lineaire
+
+ b_lineaire =BLOC( condition = "AsType(RESULTAT) in (evol_elas,dyna_trans,dyna_harmo,mode_meca,\
+ mode_stat,mode_stat_depl,mode_stat_acce,mode_stat_forc,\
+ mult_elas,fourier_elas,base_modale,mode_flamb)",
+ fr="options mecaniques lineaires",
+ TYPE_OPTION =SIMP(statut='f',typ='TXM',defaut='TOUTES',fr="type d'options mecaniques lineaires",
+ into=("SIGM_MASSIF","SIGM_STRUCT","EPSI","ENER","CRIT","DERIVEES",
+ "INDI_ERRE","AUTRES","TOUTES"),
+ ),
+ b_toutes=BLOC( condition = "TYPE_OPTION == 'TOUTES'",fr="toutes les options evol elas",
+ OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',defaut="SIEF_ELNO_ELGA",
+ # contraintes
+ into=( "SIEF_ELNO_ELGA","SIGM_ELNO_DEPL","SIEF_ELGA_DEPL",
+ "SIPO_ELNO_DEPL","EFGE_ELNO_DEPL","EFGE_ELNO_CART","SIGM_ELNO_CART",
+ "SIGM_ELNO_SIEF","SIPO_ELNO_SIEF","SIGM_ELNO_TUYO",
+ # déformations
+ "EPSI_ELNO_DEPL","EPSI_ELGA_DEPL","EPSG_ELGA_DEPL","EPSG_ELNO_DEPL",
+ "EPME_ELNO_DEPL","EPME_ELGA_DEPL","DEGE_ELNO_DEPL","EPSI_ELNO_TUYO",
+ # ENER
+ "EPOT_ELEM_DEPL","ECIN_ELEM_DEPL","ENEL_ELGA","ENEL_ELNO_ELGA",
+ "ETOT_ELGA","ETOT_ELNO_ELGA","ETOT_ELEM",
+ # estimateurs erreur
+ "SIGM_NOZ1_ELGA","ERRE_ELEM_NOZ1","SIGM_NOZ2_ELGA","ERRE_ELEM_NOZ2",
+ "SIRE_ELNO_DEPL","ERRE_ELGA_NORE","ERRE_ELNO_ELGA",
+ # CRIT
+ "EQUI_ELNO_SIGM","EQUI_ELGA_SIGM","CRIT_ELNO_RUPT",
+ "EQUI_ELNO_EPSI","EQUI_ELGA_EPSI","EQUI_ELNO_EPME","EQUI_ELGA_EPME",
+ "ENDO_ELGA","ENDO_ELNO_ELGA",
+ "ENDO_ELNO_SIGA","ENDO_ELNO_SINO","SIEQ_ELNO_TUYO","EPEQ_ELNO_TUYO",
+ # derivees
+ "DEUL_ELGA_DEPL","DEDE_ELNO_DLDE","DESI_ELNO_DLSI",
+ # autres
+ "VNOR_ELEM_DEPL","VALE_NCOU_MAXI","PRES_DBEL_DEPL"),),
+
+ NUME_COUCHE =SIMP(statut='f',typ='I',defaut= 1,
+ fr="numero de couche dans l'épaisseur de la coque ou du tuyau" ),
+ NIVE_COUCHE =SIMP(statut='f',typ='TXM',defaut="MOY",into=("SUP","INF","MOY"),
+ fr="position dans l'épaisseur de la coque, ou de la couche" ),
+ ANGLE =SIMP(statut='f',typ='I',defaut= 0,fr="angle en degres à partir de la génératrice"),
+ NOM_CHAM =SIMP(statut='f',typ='TXM',fr="nom du champ pour VALE_NCOU_MAXI", ),
+ NOM_CMP =SIMP(statut='f',typ='TXM',fr="nom de la composante pour VALE_NCOU_MAXI", ),
+ PLAN = SIMP(statut='f',typ='TXM',defaut="MAIL",into=("SUP","INF","MOY","MAIL"),
+ fr="Plan de calcul pour les plaques excentrées" ),
+
+
+ EXCIT =FACT(statut='f',max='**',
+ fr="Charges contenant les températures, les efforts répartis pour les poutres...",
+ regles=(EXCLUS('FONC_MULT','FONC_MULT_C','COEF_MULT','COEF_MULT_C'),),
+ CHARGE =SIMP(statut='o',typ=char_meca ),
+ FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FONC_MULT_C =SIMP(statut='f',typ=fonction_c),
+ COEF_MULT =SIMP(statut='f',typ='R'),
+ COEF_MULT_C =SIMP(statut='f',typ='C'),
+ PHAS_DEG =SIMP(statut='f',typ='R'),
+ PUIS_PULS =SIMP(statut='f',typ='I'),
+ TYPE_CHARGE =SIMP(statut='f',typ='TXM',defaut="FIXE",into=("FIXE",),),),
+
+
+ ),
+# fin bloc b_toutes
+
+ b_sigm_massif =BLOC( condition = "TYPE_OPTION == 'SIGM_MASSIF'",
+ fr="options de contraintes elasticite 2D et 3D",
+ OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',defaut='SIEF_ELNO_ELGA',
+ fr="option de calcul des contraintes",
+ into=( "SIEF_ELNO_ELGA","SIGM_ELNO_DEPL","SIEF_ELGA_DEPL",),),
+
+ b_charge =BLOC( condition = "OPTION in ('SIGM_ELNO_DEPL','SIEF_ELGA_DEPL',) or \
+ (type(OPTION)==type(()) and 'SIGM_ELNO_DEPL' in OPTION ) or \
+ (type(OPTION)==type(()) and 'SIEF_ELGA_DEPL' in OPTION ) ",
+ fr="charge contenant les temperatures ou autre charge",
+ EXCIT =FACT(statut='f',max='**',
+ CHARGE =SIMP(statut='o',typ=char_meca ),),
+ ),
+ ),
+
+ b_sigm_struct =BLOC( condition = "TYPE_OPTION == 'SIGM_STRUCT'",
+ fr="options de contraintes elasticite poutres, coques, tuyaux",
+ OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',defaut='SIEF_ELNO_ELGA',
+ fr="option de calcul des contraintes ou efforts generalises",
+ into=( "SIEF_ELNO_ELGA","SIGM_ELNO_DEPL","SIEF_ELGA_DEPL","SIGM_ELNO_TUYO",
+ "SIPO_ELNO_DEPL","EFGE_ELNO_DEPL","EFGE_ELNO_CART","SIGM_ELNO_CART",
+ "SIGM_ELNO_SIEF","SIPO_ELNO_SIEF"),),
+
+ b_charge =BLOC( condition = "OPTION in ('SIGM_ELNO_DEPL','SIEF_ELGA_DEPL',\
+ 'SIPO_ELNO_DEPL','EFGE_ELNO_DEPL',) or \
+ (type(OPTION)==type(()) and 'SIGM_ELNO_DEPL' in OPTION ) or \
+ (type(OPTION)==type(()) and 'SIEF_ELGA_DEPL' in OPTION ) or \
+ (type(OPTION)==type(()) and 'SIPO_ELNO_DEPL' in OPTION ) or \
+ (type(OPTION)==type(()) and 'EFGE_ELNO_DEPL' in OPTION ) ",
+ fr="charge contenant les temperatures ou les efforts répartis (poutres) ou autre",
+ EXCIT =FACT(statut='f',max='**',
+ regles=(EXCLUS('FONC_MULT','FONC_MULT_C','COEF_MULT','COEF_MULT_C'),),
+ CHARGE =SIMP(statut='f',typ=char_meca ),
+ FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FONC_MULT_C =SIMP(statut='f',typ=fonction_c),
+ COEF_MULT =SIMP(statut='f',typ='R'),
+ COEF_MULT_C =SIMP(statut='f',typ='C'),
+ PHAS_DEG =SIMP(statut='f',typ='R'),
+ PUIS_PULS =SIMP(statut='f',typ='I'),
+ TYPE_CHARGE =SIMP(statut='f',typ='TXM',defaut="FIXE",into=("FIXE",),),),
+ ),
+
+ b_niv_couche = BLOC( condition = "OPTION in ('SIGM_ELNO_DEPL',) or \
+ (type(OPTION)==type(()) and 'SIGM_ELNO_DEPL' in OPTION) ",
+
+ NUME_COUCHE =SIMP(statut='f',typ='I',defaut= 1,
+ fr="numero de couche dans l'épaisseur de la coque (coques multicouches)" ),
+ NIVE_COUCHE =SIMP(statut='f',typ='TXM',defaut="MOY",into=("SUP","INF","MOY"),
+ fr="position dans l'épaisseur de la coque, ou de la couche" ),
+ ),
+
+ b_sigtuyo = BLOC( condition = "OPTION == 'SIGM_ELNO_TUYO' or \
+ (type(OPTION)==type(()) and 'SIGM_ELNO_TUYO' in OPTION) ",
+ NUME_COUCHE =SIMP(statut='f',typ='I',defaut= 1 ,
+ fr="numero de couche dans l'épaisseur du tuyau" ),
+ ANGLE =SIMP(statut='f',typ='I',defaut= 0,fr="angle en degres à partir de la génératrice" ),
+ NIVE_COUCHE =SIMP(statut='f',typ='TXM',defaut="MOY",into=("SUP","INF","MOY"),
+ fr="position dans l'épaisseur de la couche" ),
+ ),
+ b_plan_excentrement =BLOC( condition = "OPTION=='EFGE_ELNO_DEPL' or \
+ (type(OPTION)==type(()) and 'EFGE_ELNO_DEPL' in OPTION)",
+ fr="Plan de calcul des efforts pour les plaques avec excentrement",
+ PLAN = SIMP(statut='f',typ='TXM',defaut="MAIL",into=("SUP","INF","MOY","MAIL"),
+ fr="Plan de calcul des efforts pour les plaques avec excentrement",),
+
+ ),
+ ),
+# fin bloc contraintes struct
+
+ b_epsi =BLOC( condition = "TYPE_OPTION=='EPSI'",
+ OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',
+ into=("EPSI_ELNO_DEPL","EPSI_ELGA_DEPL","EPME_ELNO_DEPL","EPME_ELGA_DEPL",
+ "DEGE_ELNO_DEPL","EPSI_ELNO_TUYO",),
+ ),
+ b_niv_couche = BLOC( condition = "OPTION =='EPSI_ELNO_DEPL' or \
+ (type(OPTION)==type(()) and 'EPSI_ELNO_DEPL' in OPTION) ",
+ NUME_COUCHE =SIMP(statut='f',typ='I',defaut= 1,
+ fr="numero de couche dans l'épaisseur de la coque (coques multicouches)" ),
+ NIVE_COUCHE =SIMP(statut='f',typ='TXM',defaut="MOY",into=("SUP","INF","MOY"),
+ fr="position dans l'épaisseur de la coque, ou de la couche" ),
+ ) ,
+ b_epstuyo = BLOC( condition = "OPTION == 'EPSI_ELNO_TUYO' or \
+ (type(OPTION)==type(()) and 'EPSI_ELNO_TUYO' in OPTION) ",
+ NUME_COUCHE =SIMP(statut='f',typ='I',defaut= 1 ,
+ fr="numero de couche dans l'épaisseur du tuyau" ),
+ ANGLE =SIMP(statut='f',typ='I',defaut= 0,fr="angle en degres à partir de la génératrice" ),
+ NIVE_COUCHE =SIMP(statut='f',typ='TXM',defaut="MOY",into=("SUP","INF","MOY"),
+ fr="position dans l'épaisseur de la couche" ),
+ ),
+b_charge =BLOC( condition = "OPTION in ('EPME_ELNO_DEPL','EPSI_ELGA_DEPL','EPME_ELGA_DEPL','EPSI_ELNO_DEPL','EPSI_ELNO_TUYO' ) or \
+ (type(OPTION)==type(()) and 'EPSI_ELNO_DEPL' in OPTION ) or \
+ (type(OPTION)==type(()) and 'EPSI_ELNO_TUYO' in OPTION ) or \
+ (type(OPTION)==type(()) and 'EPSI_ELGA_DEPL' in OPTION ) or \
+ (type(OPTION)==type(()) and 'EPME_ELNO_DEPL' in OPTION ) or \
+ (type(OPTION)==type(()) and 'EPME_ELGA_DEPL' in OPTION ) ",
+ fr="charge contenant les temperatures",
+ EXCIT =FACT(statut='f',max='**',
+ CHARGE =SIMP(statut='o',typ=(char_meca,char_ther,char_acou) ),),
+ ),
+ ),
+ b_ener =BLOC( condition = "TYPE_OPTION=='ENER'",
+ OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',
+ into=("EPOT_ELEM_DEPL","ECIN_ELEM_DEPL","ENEL_ELGA","ENEL_ELNO_ELGA",
+ "ETOT_ELGA","ETOT_ELNO_ELGA","ETOT_ELEM",),
+ ),
+ b_charge =BLOC( condition = "OPTION in ('EPOT_ELEM_DEPL','ECIN_ELEM_DEPL','ENEL_ELGA','ENEL_ELNO_ELGA',) or \
+ (type(OPTION)==type(()) and 'EPOT_ELEM_DEPL' in OPTION ) or \
+ (type(OPTION)==type(()) and 'ENEL_ELGA' in OPTION ) or \
+ (type(OPTION)==type(()) and 'ENEL_ELNO_ELGA' in OPTION ) or \
+ (type(OPTION)==type(()) and 'ECIN_ELEM_DEPL' in OPTION ) ",
+ fr="charge contenant les temperatures",
+ EXCIT =FACT(statut='f',max='**',
+ CHARGE =SIMP(statut='f',typ=(char_meca,char_ther,char_acou) ),),
+ ),
+ ),
+
+ b_crit =BLOC( condition = "TYPE_OPTION=='CRIT'",
+ OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',
+ into=("EQUI_ELNO_SIGM","EQUI_ELGA_SIGM",
+ "EQUI_ELNO_EPSI","EQUI_ELGA_EPSI","EQUI_ELNO_EPME","EQUI_ELGA_EPME",
+ "ENDO_ELGA","ENDO_ELNO_ELGA",
+ "ENDO_ELNO_SIGA","ENDO_ELNO_SINO","CRIT_ELNO_RUPT","SIEQ_ELNO_TUYO","EPEQ_ELNO_TUYO",
+ ) ),
+ b_niv_couche = BLOC( condition = "OPTION in ('CRIT_ELNO_RUPT','EQUI_ELNO_SIGM') or \
+ (type(OPTION)==type(()) and 'EQUI_ELNO_SIGM' in OPTION) or \
+ (type(OPTION)==type(()) and 'SIEQ_ELNO_TUYO' in OPTION) or \
+ (type(OPTION)==type(()) and 'CRIT_ELNO_RUPT' in OPTION) ",
+ NUME_COUCHE =SIMP(statut='f',typ='I',defaut= 1,
+ fr="numero de couche dans l'épaisseur de la coque (coques multicouches)" ),
+ NIVE_COUCHE =SIMP(statut='f',typ='TXM',defaut="MOY",into=("SUP","INF","MOY"),
+ fr="position dans l'épaisseur de la coque, ou de la couche" ),
+ ),
+ EXCIT =FACT(statut='f',max='**',fr="charge contenant les temperatures",
+ CHARGE =SIMP(statut='o',typ=(char_meca,char_ther,char_acou) ),),
+ ),
+
+ b_derivees =BLOC( condition = "TYPE_OPTION=='DERIVEES'",
+ OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',
+ into=("DEUL_ELGA_DEPL","DEDE_ELNO_DLDE","DESI_ELNO_DLSI",
+ ) ),),
+
+ b_autres =BLOC( condition = "TYPE_OPTION=='AUTRES'",
+ OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',
+ into=("VALE_NCOU_MAXI","PRES_DBEL_DEPL","VNOR_ELEM_DEPL",
+ ) ),
+ b_maxi =BLOC( condition = "OPTION=='VALE_NCOU_MAXI' or \
+ (type(OPTION)==type(()) and 'VALE_NCOU_MAXI' in OPTION)",
+ NOM_CHAM =SIMP(statut='o',typ='TXM',fr="Nom du champ pour VALE_NCOU_MAXI" ),
+ NOM_CMP =SIMP(statut='o',typ='TXM',fr="Nom de la composante pour VALE_NCOU_MAXI"),),
+ ),
+
+ b_indi_erre =BLOC( condition = "TYPE_OPTION=='INDI_ERRE'",
+ OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',defaut="ERRE_ELGA_NORE",
+ into=("SIGM_NOZ1_ELGA","ERRE_ELEM_NOZ1","SIGM_NOZ2_ELGA","ERRE_ELEM_NOZ2",
+ "SIRE_ELNO_DEPL","ERRE_ELGA_NORE","ERRE_ELNO_ELGA",
+ ) ),
+ EXCIT =FACT(statut='f',max='**',fr="charge contenant les temperatures",
+ CHARGE =SIMP(statut='o',typ=(char_meca,char_ther,char_acou) ),),
+ ),
+ ),
+# fin bloc lineaire
+
+
+# statique ou dynamique non lineaire : evol_noli
+ b_noli =BLOC( condition = "AsType(RESULTAT) == evol_noli",fr="options evol noli",
+ TYPE_OPTION =SIMP(statut='f',typ='TXM',defaut='TOUTES',
+ into=("SIGM_MASSIF","SIGM_STRUCT","EPSI","ENER","CRIT",
+ "VARI","INDI_ERRE","TOUTES","AUTRES"),
+ ),
+ b_toutes =BLOC( condition = "TYPE_OPTION == 'TOUTES'",fr="toutes les options evol elas",
+ OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',
+ into=( "SIEF_ELNO_ELGA",
+ "SIGM_ELNO_TUYO","SIGM_ELNO_COQU",
+ "SIGM_ELNO_SIEF","SIPO_ELNO_SIEF","EFGE_ELNO_CART",
+ # EPSI
+ "EPSI_ELNO_DEPL","EPSI_ELGA_DEPL","EPSG_ELNO_DEPL","EPSG_ELGA_DEPL",
+ "EPME_ELNO_DEPL","EPME_ELGA_DEPL","EPMG_ELNO_DEPL","EPMG_ELGA_DEPL",
+ "DEGE_ELNO_DEPL","EPSI_ELNO_TUYO",
+ "EPSP_ELNO","EPSP_ELGA",
+ "EPGR_ELNO","EPGR_ELGA",
+ "VARI_ELNO_ELGA","VARI_ELNO_TUYO","VARI_ELNO_COQU","CRIT_ELNO_RUPT",
+ # CRIT
+ "EQUI_ELNO_SIGM","EQUI_ELGA_SIGM","SIEQ_ELNO_TUYO","EPEQ_ELNO_TUYO",
+ "ERRE_ELGA_NORE","ERRE_ELNO_ELGA","ERRE_ELEM_NOZ1","ERRE_ELEM_NOZ2",
+ "EQUI_ELNO_EPSI","EQUI_ELGA_EPSI","EQUI_ELNO_EPME","EQUI_ELGA_EPME",
+ "DCHA_ELNO_SIGM","DCHA_ELGA_SIGM","RADI_ELNO_SIGM","RADI_ELGA_SIGM",
+ "ENDO_ELGA","ENDO_ELNO_ELGA","INDI_LOCA_ELGA",
+ "ENDO_ELNO_SIGA","ENDO_ELNO_SINO",
+ "PMPB_ELNO_SIEF","PMPB_ELGA_SIEF","ENEL_ELGA","ENEL_ELNO_ELGA",
+ "ETOT_ELGA","ETOT_ELNO_ELGA","ETOT_ELEM","VALE_NCOU_MAXI"),
+ ),
+ NORME =SIMP(statut='f',typ='TXM',defaut="VMIS",
+ into=("VMIS","TOTAL","VMIS_CINE","TOTAL_CINE"),
+ fr="Type de norme pour les options RADI_ et DCHA_"),
+
+ NUME_COUCHE =SIMP(statut='f',typ='I',defaut= 1,fr="numéro de couche pour coques et tuyaux" ),
+ NIVE_COUCHE =SIMP(statut='f',typ='TXM',defaut="MOY",into=("SUP","INF","MOY"),
+ fr="choix du point d'intégration dans la couche" ),
+ ANGLE =SIMP(statut='f',typ='I',defaut= 0 ,fr="angle de dépouillement pour les tuyaux"),
+ NOM_CHAM =SIMP(statut='f',typ='TXM',fr="Nom du champ pour VALE_NCOU_MAXI"),
+ NOM_CMP =SIMP(statut='f',typ='TXM',fr="Nom de la composante pour VALE_NCOU_MAXI"),
+ PLAN = SIMP(statut='f',typ='TXM',defaut="MAIL",into=("SUP","INF","MOY","MAIL") ),
+
+ EXCIT =FACT(statut='f',max='**',
+ regles=(EXCLUS('FONC_MULT','FONC_MULT_C','COEF_MULT','COEF_MULT_C'),),
+ CHARGE =SIMP(statut='o',typ=char_meca ),
+ FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FONC_MULT_C =SIMP(statut='f',typ=fonction_c),
+ COEF_MULT =SIMP(statut='f',typ='R'),
+ COEF_MULT_C =SIMP(statut='f',typ='C'),
+ PHAS_DEG =SIMP(statut='f',typ='R'),
+ PUIS_PULS =SIMP(statut='f',typ='I'),
+ TYPE_CHARGE =SIMP(statut='f',typ='TXM',defaut="FIXE",into=("FIXE",),),),
+ ),
+
+ b_sigm_massif =BLOC( condition = "TYPE_OPTION == 'SIGM_MASSIF'",
+ fr="options de contraintes non lin 2D et 3D",
+ OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',
+ # contraintes
+ into=( "SIEF_ELNO_ELGA",),),
+ ),
+
+ b_sigm_struct =BLOC( condition = "TYPE_OPTION == 'SIGM_STRUCT'",
+ fr="options de contraintes non lin poutres, coques",
+ OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',
+ # contraintes
+ into=( "SIEF_ELNO_ELGA","EFGE_ELNO_CART","SIGM_ELNO_TUYO","SIGM_ELNO_COQU",
+ "SIGM_ELNO_SIEF","SIPO_ELNO_SIEF",),),
+ b_sigcoqu = BLOC( condition = "OPTION in ('SIGM_ELNO_COQU',) or \
+ (type(OPTION)==type(()) and 'SIGM_ELNO_COQU' in OPTION) ",
+ NUME_COUCHE =SIMP(statut='f',typ='I',defaut= 1,
+ fr="numéro de couche dans l'épaisseur de la coque" ),
+ NIVE_COUCHE =SIMP(statut='f',typ='TXM',defaut="MOY",into=("SUP","INF","MOY"),
+ fr="choix du point d'intégration dans la couche" ),
+ ),
+ b_sigtuyo = BLOC( condition = "OPTION in ('SIGM_ELNO_TUYO',) or \
+ (type(OPTION)==type(()) and 'SIGM_ELNO_TUYO' in OPTION)",
+ NUME_COUCHE =SIMP(statut='f',typ='I',defaut= 1,
+ fr="numéro de couche dans l'épaisseur du tuyau" ),
+ ANGLE =SIMP(statut='f',typ='I',defaut= 0,
+ fr="angle de dépouillement pour les tuyaux, en degres" ),
+ NIVE_COUCHE =SIMP(statut='f',typ='TXM',defaut="MOY",into=("SUP","INF","MOY"),
+ fr="choix du point d'intégration dans la couche"),
+ ),
+ ),
+
+ b_epsi =BLOC( condition = "TYPE_OPTION=='EPSI'",
+ OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',
+ into=( "EPSI_ELNO_DEPL","EPSI_ELGA_DEPL","EPSG_ELNO_DEPL","EPSG_ELGA_DEPL",
+ "EPME_ELNO_DEPL","EPME_ELGA_DEPL","EPMG_ELNO_DEPL","EPMG_ELGA_DEPL",
+ "EPSP_ELNO","EPSP_ELGA","EPGR_ELNO","EPGR_ELGA",
+ "DEGE_ELNO_DEPL",),
+ ),
+ b_niv_couche = BLOC( condition = "OPTION =='EPSI_ELNO_DEPL' or \
+ (type(OPTION)==type(()) and 'EPSI_ELNO_DEPL' in OPTION) ",
+ NUME_COUCHE =SIMP(statut='f',typ='I',defaut= 1,
+ fr="numero de couche dans l'épaisseur de la coque (coques multicouches)" ),
+ NIVE_COUCHE =SIMP(statut='f',typ='TXM',defaut="MOY",into=("SUP","INF","MOY"),
+ fr="position dans l'épaisseur de la coque, ou de la couche" ),
+ ) ,
+ EXCIT =FACT(statut='f',max='**',fr="charge contenant les temperatures",
+ CHARGE =SIMP(statut='o',typ=(char_meca,char_ther,char_acou) ),),
+ ),
+ b_epstuyo = BLOC( condition = "OPTION == 'EPSI_ELNO_TUYO' or \
+ (type(OPTION)==type(()) and 'EPSI_ELNO_TUYO' in OPTION) ",
+ NUME_COUCHE =SIMP(statut='f',typ='I',defaut= 1 ,
+ fr="numero de couche dans l'épaisseur du tuyau" ),
+ ANGLE =SIMP(statut='f',typ='I',defaut= 0,fr="angle en degres à partir de la génératrice" ),
+ NIVE_COUCHE =SIMP(statut='f',typ='TXM',defaut="MOY",into=("SUP","INF","MOY"),
+ fr="position dans l'épaisseur de la couche" ),
+ EXCIT =FACT(statut='f',max='**',fr="charge contenant les temperatures",
+ CHARGE =SIMP(statut='o',typ=(char_meca,char_ther,char_acou) ),),
+ ),
+
+ b_vari =BLOC( condition = "TYPE_OPTION=='VARI'",
+ fr="Calcul et extraction des variables internes",
+ OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',
+ into=("VARI_ELNO_ELGA","VARI_ELNO_TUYO","VARI_ELNO_COQU",),
+ ),
+ b_varcoqu = BLOC( condition = "OPTION in ('VARI_ELNO_COQU',) or \
+ (type(OPTION)==type(()) and 'VARI_ELNO_COQU' in OPTION) ",
+ NUME_COUCHE =SIMP(statut='f',typ='I',defaut= 1,
+ fr="numéro de couche dans l'épaisseur de la coque"),
+ NIVE_COUCHE =SIMP(statut='f',typ='TXM',defaut="MOY",into=("SUP","INF","MOY"),
+ fr="choix du point d'intégration dans la couche" ),
+ ),
+ b_vartuyo = BLOC( condition = "OPTION in ('VARI_ELNO_TUYO',) or \
+ (type(OPTION)==type(()) and 'VARI_ELNO_TUYO' in OPTION) ",
+ NUME_COUCHE =SIMP(statut='f',typ='I',defaut= 1,
+ fr="numéro de couche dans l'épaisseur de tuyau" ),
+ ANGLE =SIMP(statut='f',typ='I',defaut= 0,
+ fr="angle de dépouillement pour les tuyaux, en degres"),
+ NIVE_COUCHE =SIMP(statut='f',typ='TXM',defaut="MOY",into=("SUP","INF","MOY"),
+ fr="choix du point d'intégration dans la couche" ),
+ ),
+ ),
+
+ b_ener =BLOC( condition = "TYPE_OPTION=='ENER'",
+ OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',
+ into=("ETOT_ELGA","ETOT_ELNO_ELGA","ETOT_ELEM","ENEL_ELGA","ENEL_ELNO_ELGA",),
+ ),
+ EXCIT =FACT(statut='f',max='**',fr="charge contenant les temperatures",
+ CHARGE =SIMP(statut='o',typ=(char_meca,char_ther,char_acou) ),),
+ ),
+
+ b_crit =BLOC( condition = "TYPE_OPTION=='CRIT'",
+ OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',
+ into=("EQUI_ELNO_SIGM","EQUI_ELGA_SIGM",
+ "EQUI_ELNO_EPSI","EQUI_ELGA_EPSI","EQUI_ELNO_EPME","EQUI_ELGA_EPME",
+ "ENDO_ELNO_SIGA","ENDO_ELNO_SINO","CRIT_ELNO_RUPT",
+ "ENDO_ELGA","ENDO_ELNO_ELGA",
+ "PMPB_ELNO_SIEF","PMPB_ELGA_SIEF","SIEQ_ELNO_TUYO","EPEQ_ELNO_TUYO",
+ ) ),
+ NUME_COUCHE =SIMP(statut='f',typ='I',defaut= 1,fr="numéro de couche dans l'épaisseur de la coque"),
+ NIVE_COUCHE =SIMP(statut='f',typ='TXM',defaut="MOY",into=("SUP","INF","MOY"),
+ fr="choix du point d'intégration dans la couche" ),
+ ),
+
+ b_autres =BLOC( condition = "TYPE_OPTION=='AUTRES'",
+ OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',
+ into=("VALE_NCOU_MAXI",) ),
+ b_maxi =BLOC( condition = "OPTION=='VALE_NCOU_MAXI' or \
+ (type(OPTION)==type(()) and 'VALE_NCOU_MAXI' in OPTION)",
+ NOM_CHAM =SIMP(statut='o',typ='TXM',fr="Nom du champ pour VALE_NCOU_MAXI" ),
+ NOM_CMP =SIMP(statut='o',typ='TXM',fr="Nom de la composante pour VALE_NCOU_MAXI"),),
+ ),
+
+
+ b_indi_erre =BLOC( condition = "TYPE_OPTION=='INDI_ERRE'",
+ OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',defaut="ERRE_ELGA_NORE",
+ into=("ERRE_ELGA_NORE","ERRE_ELNO_ELGA","ERRE_ELEM_NOZ1","ERRE_ELEM_NOZ2",
+ "DCHA_ELNO_SIGM","DCHA_ELGA_SIGM","RADI_ELNO_SIGM","RADI_ELGA_SIGM",
+ ) ),
+ b_indic = BLOC( condition ="OPTION in ('DCHA_ELNO_SIGM','DCHA_ELGA_SIGM','RADI_ELNO_SIGM','RADI_ELGA_SIGM') or\
+ (type(OPTION)==type(()) and 'DCHA_ELNO_SIGM' in OPTION) or\
+ (type(OPTION)==type(()) and 'DCHA_ELGA_SIGM' in OPTION) or\
+ (type(OPTION)==type(()) and 'RADI_ELNO_SIGM' in OPTION) or\
+ (type(OPTION)==type(()) and 'RADI_ELGA_SIGM' in OPTION) ",
+ NORME =SIMP(statut='f',typ='TXM',defaut="VMIS",
+ into=("VMIS","TOTAL","VMIS_CINE","TOTAL_CINE") ),
+ ),
+ ),
+ ),
+# fin bloc evol_noli
+
+# thermique : evol_ther
+ b_ther =BLOC( condition = "AsType(RESULTAT) == evol_ther",fr="options thermiques",
+ OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',
+ into=("DEUL_ELGA_TEMP","DETE_ELNO_DLTE","FLUX_ELGA_TEMP","FLUX_ELNO_TEMP",
+ "HYDR_ELNO_ELGA","DURT_ELGA_META","DURT_ELNO_META",
+ "SOUR_ELGA_ELEC","ERTH_ELEM_TEMP","ERTH_ELNO_ELEM",),),
+ EXCIT =FACT(statut='f',max='**',
+ regles=(EXCLUS('FONC_MULT','FONC_MULT_C','COEF_MULT','COEF_MULT_C'),),
+ CHARGE =SIMP(statut='o',typ=char_ther ),
+ FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FONC_MULT_C =SIMP(statut='f',typ=fonction_c),
+ COEF_MULT =SIMP(statut='f',typ='R'),
+ COEF_MULT_C =SIMP(statut='f',typ='C'),
+ PHAS_DEG =SIMP(statut='f',typ='R'),
+ PUIS_PULS =SIMP(statut='f',typ='I'),
+ TYPE_CHARGE =SIMP(statut='f',typ='TXM',defaut="FIXE",into=("FIXE",),),
+ ),
+ NIVE_COUCHE =SIMP(statut='f',typ='TXM',defaut="MOY",into=("SUP","INF","MOY"),
+ fr="choix du point de calcul dans l'épaisseur des coques" ),
+
+ ),
+
+# acoustique
+ b_acou =BLOC( condition = "AsType(RESULTAT) in (acou_harmo,mode_acou,)",fr="options acoustiques",
+ OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',
+ into=("PRES_ELNO_DBEL","PRES_ELNO_REEL","PRES_ELNO_IMAG",
+ "INTE_ELNO_ACTI","INTE_ELNO_REAC",
+ ),),
+ EXCIT =FACT(statut='f',max='**',
+ regles=(EXCLUS('FONC_MULT','FONC_MULT_C','COEF_MULT','COEF_MULT_C'),),
+ CHARGE =SIMP(statut='o',typ=char_acou ),
+ FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FONC_MULT_C =SIMP(statut='f',typ=fonction_c),
+ COEF_MULT =SIMP(statut='f',typ='R'),
+ COEF_MULT_C =SIMP(statut='f',typ='C'),
+ PHAS_DEG =SIMP(statut='f',typ='R'),
+ PUIS_PULS =SIMP(statut='f',typ='I'),
+ TYPE_CHARGE =SIMP(statut='f',typ='TXM',defaut="FIXE",into=("FIXE",),),),
+ ),
+
+ SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**',
+ fr="Liste des paramètres de sensibilité.",
+ ang="List of sensitivity parameters"),
+ INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
+ TITRE =SIMP(statut='f',typ='TXM',max='**'),
+) ;
+#& MODIF COMMANDE DATE 10/01/2005 AUTEUR F1BHHAJ J.ANGLES
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+def calc_fatigue_prod(TYPE_CALCUL,OPTION,**args):
+ if TYPE_CALCUL == "CUMUL_DOMMAGE" : return cham_elem_dommag
+ if TYPE_CALCUL == "FATIGUE_MULTI" and OPTION == "DOMA_ELGA": return cham_elem_facy_r
+ if TYPE_CALCUL == "FATIGUE_MULTI" and OPTION == "DOMA_NOEUD": return cham_no_facy_r
+ raise AsException("type de calcul non prevu")
+
+CALC_FATIGUE=OPER(nom="CALC_FATIGUE",op= 151,sd_prod=calc_fatigue_prod,reentrant='n',
+ fr="Calcul d un cham de dommage ou d un cisaillement maximal dans le plan critique.",
+ UIinfo={"groupes":("Post traitements",)},
+
+ TYPE_CALCUL = SIMP(statut='o',typ='TXM',
+ into=("CUMUL_DOMMAGE","FATIGUE_MULTI",) ),
+
+ b_cumul_domma =BLOC(condition = "TYPE_CALCUL == 'CUMUL_DOMMAGE'",
+ fr="Calcul d un champ de dommage subi par une structure.",
+ regles=(PRESENT_PRESENT('DOMMAGE','MATER', ),),
+ OPTION =SIMP(statut='o',typ='TXM',
+ into=("DOMA_ELNO_SIGM","DOMA_ELGA_SIGM",
+ "DOMA_ELNO_EPSI","DOMA_ELGA_EPSI",
+ "DOMA_ELNO_EPME","DOMA_ELGA_EPME") ),
+ HISTOIRE =FACT(statut='o',
+ RESULTAT =SIMP(statut='o',typ=(evol_elas,dyna_trans,
+ evol_noli) ),
+ EQUI_GD =SIMP(statut='f',typ='TXM',defaut="VMIS_SG",
+ into=("VMIS_SG","INVA_2_SG") ),
+ ),
+ DOMMAGE =SIMP(statut='o',typ='TXM',
+ into=("WOHLER","MANSON_COFFIN","TAHERI_MANSON",
+ "TAHERI_MIXTE",) ),
+ MATER =SIMP(statut='o',typ=(mater_sdaster) ),
+ TAHERI_NAPPE =SIMP(statut='f',typ=(nappe_sdaster,formule) ),
+ TAHERI_FONC =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ ),
+
+ b_fatigue_multi =BLOC(condition = "TYPE_CALCUL == 'FATIGUE_MULTI'",
+ fr="Plan critique dans le cas de la fatigue multiaxiale à grand nombre de cycles.",
+ TYPE_CHARGE =SIMP(statut='o',typ='TXM',into=("PERIODIQUE","NON_PERIODIQUE") ),
+ OPTION =SIMP(statut='o',typ='TXM',into=("DOMA_ELGA","DOMA_NOEUD") ),
+ RESULTAT =SIMP(statut='o',typ=(evol_elas, evol_noli) ),
+ CHAM_MATER =SIMP(statut='o',typ=(cham_mater) ),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**' ),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**' ),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**' ),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**' ),
+ COEF_PREECROU =SIMP(statut='f',typ='R',defaut= 1.0E+0),
+ b_period =BLOC(condition = "TYPE_CHARGE == 'PERIODIQUE'",
+ CRITERE =SIMP(statut='o',typ='TXM',into=("MATAKE","DANG_VAN_MODI_AC") ),
+ METHODE =SIMP(statut='o',typ='TXM',into=("CERCLE_EXACT",) ),
+ ),
+ b_non_period =BLOC(condition = "TYPE_CHARGE == 'NON_PERIODIQUE'",
+ CRITERE =SIMP(statut='o',typ='TXM',into=("DOMM_MAXI","DANG_VAN_MODI_AV") ),
+ PROJECTION =SIMP(statut='o',typ='TXM',into=("UN_AXE", "DEUX_AXES") ),
+ DELTA_OSCI = SIMP(statut='f',typ='R',defaut= 0.0E+0),
+ ),
+ b_fati_grmano =BLOC(condition = "(GROUP_MA != None or MAILLE != None or GROUP_NO != None or NOEUD != None)",
+ MAILLAGE =SIMP(statut='o',typ=maillage_sdaster ),
+ ),
+ ),
+
+ INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+CALC_FLUI_STRU=OPER(nom="CALC_FLUI_STRU",op= 144,sd_prod=melasflu_sdaster,
+ reentrant='n',
+ UIinfo={"groupes":("Matrices/vecteurs",)},
+ VITE_FLUI =FACT(statut='o',
+ fr="Définir la plage de vitesse fluide étudiée",
+ VITE_MIN =SIMP(statut='o',typ='R' ),
+ VITE_MAX =SIMP(statut='o',typ='R' ),
+ NB_POIN =SIMP(statut='o',typ='I' ),
+ ),
+ BASE_MODALE =FACT(statut='o',
+
+ regles=(UN_PARMI('AMOR_REDUIT','AMOR_UNIF'),),
+ MODE_MECA =SIMP(statut='o',typ=mode_meca ),
+ NUME_ORDRE =SIMP(statut='f',typ='I',max='**'),
+ AMOR_REDUIT =SIMP(statut='f',typ='R',max='**'),
+ AMOR_UNIF =SIMP(statut='f',typ='R' ),
+ ),
+ TYPE_FLUI_STRU =SIMP(statut='o',typ=type_flui_stru ),
+ IMPRESSION =FACT(statut='f',
+ fr="Choix des informations à imprimer dans le fichier RESULTAT",
+ PARA_COUPLAGE =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+ DEFORMEE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
+ ),
+) ;
+#& MODIF COMMANDE DATE 23/05/2006 AUTEUR CIBHHPD L.SALMONA
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+def calc_fonc_interp_prod(FONCTION, NOM_PARA_FONC, **args):
+ if AsType(FONCTION) ==nappe_sdaster : return nappe_sdaster
+ elif AsType(FONCTION)==fonction_sdaster : return fonction_sdaster
+ elif AsType(FONCTION)==fonction_c : return fonction_c
+ elif AsType(FONCTION)==formule :
+ if NOM_PARA_FONC != None:
+ return nappe_sdaster
+ return fonction_sdaster
+ elif AsType(FONCTION)==para_sensi : return para_sensi
+ raise AsException("type de concept resultat non prevu")
+
+CALC_FONC_INTERP=OPER(nom="CALC_FONC_INTERP",op= 134,sd_prod=calc_fonc_interp_prod,
+ docu="U4.32.01-e",reentrant='n',
+ UIinfo={"groupes":("Fonction",)},
+ regles=(UN_PARMI('VALE_PARA','LIST_PARA'),),
+ FONCTION =SIMP(statut='o',typ=(formule,fonction_sdaster,nappe_sdaster,fonction_c) ),
+ VALE_PARA =SIMP(statut='f',typ='R',max='**'),
+ LIST_PARA =SIMP(statut='f',typ=listr8_sdaster ),
+ NOM_RESU =SIMP(statut='f',typ='TXM'),
+ NOM_PARA =SIMP(statut='f',typ='TXM'),
+ INTERPOL =SIMP(statut='f',typ='TXM',max=2,into=("NON","LIN","LOG") ),
+ PROL_DROITE =SIMP(statut='f',typ='TXM',into=("EXCLU","CONSTANT","LINEAIRE") ),
+ PROL_GAUCHE =SIMP(statut='f',typ='TXM',into=("EXCLU","CONSTANT","LINEAIRE") ),
+ NOM_PARA_FONC =SIMP(statut='f',typ='TXM'),
+ b_eval_nappe =BLOC(condition = "NOM_PARA_FONC != None",
+ regles=(UN_PARMI('VALE_PARA_FONC','LIST_PARA_FONC'),),
+ VALE_PARA_FONC =SIMP(statut='f',typ='R',max='**'),
+ LIST_PARA_FONC =SIMP(statut='f',typ=listr8_sdaster ),
+ INTERPOL_FONC =SIMP(statut='f',typ='TXM',max=2,into=("NON","LIN","LOG")),
+ PROL_DROITE_FONC=SIMP(statut='f',typ='TXM',into=("EXCLU","CONSTANT","LINEAIRE") ),
+ PROL_GAUCHE_FONC=SIMP(statut='f',typ='TXM',into=("EXCLU","CONSTANT","LINEAIRE") ),
+ ),
+ TITRE =SIMP(statut='f',typ='TXM',max='**'),
+ INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2 ) ),
+) ;
+#& MODIF COMMANDE DATE 10/10/2005 AUTEUR MCOURTOI M.COURTOIS
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE MCOURTOI M.COURTOIS
+def calc_fonction_prod(DERIVE,EXTRACTION,INTEGRE,ECART_TYPE,INVERSE,RMS,NOCI_SEISME,MAX,COMB,COMB_C,ENVELOPPE,
+ SPEC_OSCI,ASSE,FFT,COMPOSE,CORR_ACCE,PUISSANCE,LISS_ENVELOP,NORME,ABS, **args):
+ if (RMS != None): return table_sdaster
+ if (MAX != None): return table_sdaster
+ if (NOCI_SEISME != None): return table_sdaster
+ if (ECART_TYPE != None): return table_sdaster
+ if (INTEGRE != None): return fonction_sdaster
+ if (DERIVE != None): return fonction_sdaster
+ if (INVERSE != None): return fonction_sdaster
+ if (COMB != None): return AsType(COMB[0]['FONCTION'])
+ if (COMB_C != None):
+ vale=COMB_C[0]['FONCTION']
+ if(AsType(vale) == nappe_sdaster):
+ return nappe_sdaster
+ else:
+ return fonction_c
+ if (ENVELOPPE != None): return AsType(ENVELOPPE[0]['FONCTION'])
+ if (EXTRACTION != None): return fonction_sdaster
+ if (SPEC_OSCI != None): return nappe_sdaster
+ if (COMPOSE != None): return fonction_sdaster
+ if (ASSE != None): return fonction_sdaster
+ if (FFT != None):
+ vale=FFT[0]['FONCTION']
+ if (AsType(vale) == fonction_sdaster ) : return fonction_c
+ if (AsType(vale) == fonction_c) : return fonction_sdaster
+ if (CORR_ACCE != None): return fonction_sdaster
+ if (LISS_ENVELOP!= None): return AsType(LISS_ENVELOP[0]['FONCTION'])
+ if (PUISSANCE != None): return AsType(PUISSANCE[0]['FONCTION'])
+ if (ABS != None): return fonction_sdaster
+ if (NORME != None): return table_sdaster
+ raise AsException("type de concept resultat non prevu")
+
+CALC_FONCTION=OPER(nom="CALC_FONCTION",op= 91,sd_prod=calc_fonction_prod
+ ,fr="Opérations mathématiques sur des concepts de type fonction, fonction_c ou nappe",
+ reentrant='n',
+ UIinfo={"groupes":("Fonction",)},
+ regles=(UN_PARMI('DERIVE','INTEGRE','SPEC_OSCI','MAX','COMB','COMB_C','ENVELOPPE','RMS',
+ 'NOCI_SEISME','COMPOSE','EXTRACTION','ASSE','FFT','CORR_ACCE', 'PUISSANCE',
+ 'NORME','LISS_ENVELOP','ECART_TYPE','INVERSE','ABS'),),
+ FFT =FACT(statut='f',fr="Calcul de la transformee de Fourier ou de son inverse",
+ FONCTION =SIMP(statut='o',typ=(fonction_sdaster,fonction_c) ),
+ METHODE =SIMP(statut='f',typ='TXM',defaut="PROL_ZERO",into=("PROL_ZERO","TRONCATURE") ),
+ ),
+ DERIVE =FACT(statut='f',fr="Calcul de la dérivée d une fonction",
+ METHODE =SIMP(statut='f',typ='TXM',defaut="DIFF_CENTREE",into=("DIFF_CENTREE",) ),
+ FONCTION =SIMP(statut='o',typ=fonction_sdaster ),
+ ),
+ INTEGRE =FACT(statut='f',fr="Calcul de l intégrale d une fonction",
+ METHODE =SIMP(statut='f',typ='TXM',defaut="TRAPEZE",into=("SIMPSON","TRAPEZE") ),
+ FONCTION =SIMP(statut='o',typ=fonction_sdaster),
+ COEF =SIMP(statut='f',typ='R',defaut= 0.E+0,fr="Valeur de la constante d intégration" ),
+ ),
+ RMS =FACT(statut='f',fr="Calcul de la valeur RMS d une fonction",max='**',
+ METHODE =SIMP(statut='f',typ='TXM',defaut="TRAPEZE",into=("SIMPSON","TRAPEZE") ),
+ FONCTION =SIMP(statut='o',typ=fonction_sdaster ),
+ INST_INIT =SIMP(statut='f',typ='R',fr="Instant initial définissant le début du signal" ),
+ INST_FIN =SIMP(statut='f',typ='R',fr="Instant final définissant la fin du signal" ),
+ CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
+ PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ),
+ ),
+ NOCI_SEISME =FACT(statut='f',
+ FONCTION =SIMP(statut='f',typ=fonction_sdaster ),
+ SPEC_OSCI =SIMP(statut='f',typ=nappe_sdaster ),
+ OPTION =SIMP(statut='f',typ='TXM',defaut="TOUT",validators=NoRepeat(),max='**',
+ into=("INTE_ARIAS","POUV_DEST","INTE_SPEC","VITE_ABSO_CUMU",
+ "DUREE_PHAS_FORT","MAXI","ACCE_SUR_VITE","TOUT",) ),
+ INST_INIT =SIMP(statut='f',typ='R'),
+ INST_FIN =SIMP(statut='f',typ='R'),
+ NATURE =SIMP(statut='f',typ='TXM',into=("DEPL","VITE","ACCE") ),
+ COEF =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ PESANTEUR =SIMP(statut='f',typ='R',defaut= 9.81E+0 ),
+ FREQ_INIT =SIMP(statut='f',typ='R',defaut= 4.E-1 ),
+ FREQ_FIN =SIMP(statut='f',typ='R',defaut= 10.E+0 ),
+ AMOR_REDUIT =SIMP(statut='f',typ='R'),
+ LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster ),
+ FREQ =SIMP(statut='f',typ='R',max='**'),
+ NORME =SIMP(statut='f',typ='R',defaut= 1.E+0 ),
+ BORNE_INF =SIMP(statut='f',typ='R',defaut= 0.05E+0 ),
+ BORNE_SUP =SIMP(statut='f',typ='R',defaut= 0.95E+0 ),
+ b_acce_reel =BLOC(condition="(INST_INIT != None)or(INST_FIN != None)or(FREQ_INIT != None)or(FREQ_FIN != None)",
+ PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3),
+ CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
+ ),
+ ),
+ LISS_ENVELOP = FACT(statut='f',fr="Lissage d une enveloppe",
+ FONCTION =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster) ),
+ AMOR =SIMP(statut='f',typ='R',max='**'),
+ FREQ_MIN =SIMP(statut='f',typ='R'),
+ FREQ_MAX =SIMP(statut='f',typ='R'),
+ FREQ_CREUX =SIMP(statut='f',typ='R',max='**'),
+ ELARG =SIMP(statut='f',typ='TXM',defaut="GLOBAL",into=("GLOBAL","LOCAL") ),
+ b_elarg_glob = BLOC ( condition = " (ELARG=='GLOBAL') ",
+ GAUCHE =SIMP(statut='f',typ='R',defaut =10.0E0 ),
+ DROITE =SIMP(statut='f',typ='R',defaut =10.0E0 ),
+ ),
+ b_elarg_loc = BLOC ( condition = " (ELARG=='LOCAL') ",
+ FREQ_1 =SIMP(statut='o',typ='R'),
+ FREQ_2 =SIMP(statut='o',typ='R' ),
+ GAUCHE =SIMP(statut='f',typ='R',defaut =10.0E0 ),
+ DROITE =SIMP(statut='f',typ='R',defaut =10.0E0 ),
+ ),
+ TOLE_LISS =SIMP(statut='f',typ='R',defaut=25.0E0),
+ ECH_FREQ_REF = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
+ b_oui =BLOC ( condition = "(ECH_FREQ_REF=='OUI') ",
+ regles=(UN_PARMI("LIST_FREQ", "AMOR_ECH"),),
+ LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster ),
+ AMOR_ECH =SIMP(statut='f',typ='R',max='**'),
+ ),
+ ),
+ SPEC_OSCI =FACT(statut='f',fr="Calcul du spectre d oscillateur",
+ METHODE =SIMP(statut='f',typ='TXM',defaut="NIGAM",into=("NIGAM",) ),
+ FONCTION =SIMP(statut='o',typ=fonction_sdaster ),
+ AMOR_REDUIT =SIMP(statut='f',typ='R',max='**'),
+ LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster ),
+ FREQ =SIMP(statut='f',typ='R',max='**'),
+ NORME =SIMP(statut='o',typ='R',defaut= 9.81E+0,fr="Valeur de la norme du spectre d oscillateur" ),
+ NATURE =SIMP(statut='f',typ='TXM',defaut="ACCE",into=("DEPL","VITE","ACCE") ),
+ NATURE_FONC =SIMP(statut='f',typ='TXM',defaut="ACCE",into=("DEPL","VITE","ACCE") ),
+ ),
+ MAX =FACT(statut='f',fr="Calcul des extrémas locaux d une fonction",
+ FONCTION =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster) ),
+ ),
+ ABS =FACT(statut='f',fr="Calcul de la valeur absolue d une fonction",
+ FONCTION =SIMP(statut='o',typ=fonction_sdaster,),
+ ),
+ COMB =FACT(statut='f',max='**',fr="Calcul d une combinaison linéaire réelle de fonctions",
+ FONCTION =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster) ),
+ COEF =SIMP(statut='o',typ='R',fr="Coefficient réel de la combinaison linéaire associée à la fonction" ),
+ ),
+ COMB_C =FACT(statut='f',max='**',fr="Calcul d une combinaison linéaire complexe de fonctions",
+ regles=(UN_PARMI('COEF_R','COEF_C'),),
+ FONCTION =SIMP(statut='o',typ=(fonction_sdaster,fonction_c,nappe_sdaster) ),
+ COEF_R =SIMP(statut='f',typ='R',fr="Coefficient réel de la combinaison linéaire associée à la fonction" ),
+ COEF_C =SIMP(statut='f',typ='C',fr="Coefficient complexe de la combinaison linéaire associée à la fonction" ),
+ ),
+ b_comb =BLOC ( condition = " (COMB != None) or (COMB_C != None)",
+ LIST_PARA =SIMP(statut='f',typ=listr8_sdaster ),
+ ),
+ COMPOSE =FACT(statut='f',fr="Calcul de la composition de deux fonctions FONC_RESU(FONC_PARA)",
+ FONC_RESU =SIMP(statut='o',typ=fonction_sdaster),
+ FONC_PARA =SIMP(statut='o',typ=fonction_sdaster),
+ ),
+ EXTRACTION =FACT(statut='f',fr="Opération d extraction sur une fonction complexe",
+ FONCTION =SIMP(statut='o',typ=fonction_c),
+ PARTIE =SIMP(statut='o',typ='TXM',into=("REEL","IMAG","MODULE","PHASE"),fr="Partie à extraire"),
+ ),
+ ENVELOPPE =FACT(statut='f',fr="Calcul de l enveloppe d une famille de fonctions",
+ FONCTION =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster),max='**' ),
+ CRITERE =SIMP(statut='f',typ='TXM',defaut="SUP",into=("SUP","INF"),fr="Type de l enveloppe" ),
+ ),
+ ASSE =FACT(statut='f',fr="Création à partir de la concatenation de fonctions",
+ FONCTION =SIMP(statut='o',typ=fonction_sdaster,max='**' ),
+ SURCHARGE =SIMP(statut='f',typ='TXM',defaut="DROITE",into=("DROITE","GAUCHE")),
+ ),
+ CORR_ACCE =FACT(statut='f',fr="Correction d un accelerogramme reel",
+ CORR_DEPL =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
+ FONCTION =SIMP(statut='o',typ=fonction_sdaster ),
+ ),
+ PUISSANCE =FACT(statut='f',fr="Cacul du carré d'une fonction",
+ FONCTION =SIMP(statut='o', typ=(fonction_sdaster,nappe_sdaster) ),
+ EXPOSANT =SIMP(statut='f', typ='I', defaut=1 ),
+ ),
+ NORME =FACT(statut='f',fr="Cacul de la norme L2 d'une fonction",
+ FONCTION =SIMP(statut='o', typ=nappe_sdaster),
+ ),
+ INVERSE =FACT(statut='f',fr="Cacul de l inverse d une fonction",
+ FONCTION =SIMP(statut='o', typ=fonction_sdaster),
+ ),
+ ECART_TYPE =FACT(statut='f',fr="Cacul de l ecart-type d une fonction",
+ METHODE =SIMP(statut='f',typ='TXM',defaut="TRAPEZE",into=("SIMPSON","TRAPEZE") ),
+ FONCTION =SIMP(statut='o',typ=fonction_sdaster),
+ INST_INIT =SIMP(statut='f',typ='R',fr="Instant initial définissant le début du signal" ),
+ INST_FIN =SIMP(statut='f',typ='R',fr="Instant final définissant la fin du signal" ),
+ CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
+ PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ),
+ ),
+ NOM_PARA =SIMP(statut='f',typ='TXM',),
+ NOM_RESU =SIMP(statut='f',typ='TXM' ),
+ INTERPOL =SIMP(statut='f',typ='TXM',max=2,into=("NON","LIN","LOG") ),
+ PROL_DROITE =SIMP(statut='f',typ='TXM',into=("CONSTANT","LINEAIRE","EXCLU") ),
+ PROL_GAUCHE =SIMP(statut='f',typ='TXM',into=("CONSTANT","LINEAIRE","EXCLU") ),
+ NOM_PARA_FONC =SIMP(statut='f',typ='TXM',),
+ INTERPOL_FONC =SIMP(statut='f',typ='TXM',max=2,into=("NON","LIN","LOG") ),
+ PROL_DROITE_FONC=SIMP(statut='f',typ='TXM',into=("CONSTANT","LINEAIRE","EXCLU") ),
+ PROL_GAUCHE_FONC=SIMP(statut='f',typ='TXM',into=("CONSTANT","LINEAIRE","EXCLU") ),
+ INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2 ) ),
+ TITRE =SIMP(statut='f',typ='TXM',max='**'),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+CALC_FORC_AJOU=OPER(nom="CALC_FORC_AJOU",op=199,sd_prod=vect_asse_gene,
+ fr="calcul de la force ajoutee ",
+ reentrant ='n',
+ UIinfo={"groupes":("Matrices/vecteurs",)},
+
+ regles=(EXCLUS('MODE_MECA','MODELE_GENE'),
+ PRESENT_PRESENT( 'MODELE_GENE','NUME_DDL_GENE'),
+ UN_PARMI('MONO_APPUI', 'NOEUD','GROUP_NO'),
+ UN_PARMI('MONO_APPUI','MODE_STAT')),
+
+ MODELE_FLUIDE =SIMP(statut='o',typ=modele_sdaster ),
+ MODELE_INTERFACE=SIMP(statut='o',typ=modele_sdaster ),
+ CHAM_MATER =SIMP(statut='o',typ=cham_mater ),
+ CHARGE =SIMP(statut='o',typ=char_ther ),
+ MODE_MECA =SIMP(statut='f',typ=mode_meca ),
+ MODELE_GENE =SIMP(statut='f',typ=modele_gene ),
+ NUME_DDL_GENE =SIMP(statut='f',typ=nume_ddl_gene ),
+ DIST_REFE =SIMP(statut='f',typ='R',defaut= 1.E-2 ),
+ AVEC_MODE_STAT =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+ NUME_MODE_MECA =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
+ POTENTIEL =SIMP(statut='f',typ=evol_ther ),
+ NOEUD_DOUBLE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
+
+ DIRECTION =SIMP(statut='o',typ='R',max=3),
+ MONO_APPUI =SIMP(statut='f',typ='TXM',into=("OUI",),),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ MODE_STAT =SIMP(statut='f',typ=(mode_stat_depl,mode_stat_acce,mode_stat_forc,),),
+
+ INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2 ) ),
+
+ SOLVEUR =FACT(statut='d',
+ METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC") ),
+ b_mult_front = BLOC ( condition = "METHODE == 'MULT_FRONT' ",fr="Paramètres de la méthode multi frontale",
+ RENUM =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ),
+ ),
+ b_ldlt =BLOC( condition = "METHODE == 'LDLT' ",fr="Paramètres de la méthode LDLT",
+ RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("RCMK","SANS") ),
+ ),
+ b_ldlt_mult =BLOC( condition = "METHODE == 'LDLT' or METHODE == 'MULT_FRONT' ",
+ fr="Paramètres relatifs à la non iversibilité de la matrice à factorise",
+ NPREC =SIMP(statut='f',typ='I',defaut= 8 ),
+ STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+ ),
+ b_gcpc =BLOC (condition = "METHODE == 'GCPC' ", fr="Paramètres de la méthode du gradient conjugué",
+ PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC",),defaut="LDLT_INC" ),
+ NIVE_REMPLISSAGE=SIMP(statut='f',typ='I',defaut=0),
+ RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ),
+ RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ),
+ NMAX_ITER =SIMP(statut='f',typ='I',defaut= 0 ),
+ ),
+ ),
+
+ ) ;
+#& MODIF COMMANDE DATE 11/10/2004 AUTEUR LEBOUVIE F.LEBOUVIER
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+CALC_G_LOCAL_T=OPER(nom="CALC_G_LOCAL_T",op=77,sd_prod=tabl_calc_g_loca,
+ fr="Calcul du taux de restitution local d énergie",reentrant='n',
+ UIinfo={"groupes":("Post traitements",)},
+ MODELE =SIMP(statut='f',typ=modele_sdaster),
+ CHAM_MATER =SIMP(statut='f',typ=cham_mater),
+ regles=(UN_PARMI('RESULTAT','DEPL'),
+ PRESENT_PRESENT('VITE','ACCE'),
+ UN_PARMI('R_INF','R_INF_FO'),
+ PRESENT_PRESENT('R_INF','R_SUP'),
+ PRESENT_PRESENT('R_INF_FO','R_SUP_FO'), ),
+ FOND_FISS =SIMP(statut='f',typ=fond_fiss),
+ DEPL =SIMP(statut='f',typ=cham_no_depl_r),
+ VITE =SIMP(statut='f',typ=cham_no_depl_r),
+ ACCE =SIMP(statut='f',typ=cham_no_depl_r),
+ RESULTAT =SIMP(statut='f',typ=(evol_elas,evol_noli,dyna_trans),),
+ b_extrac =BLOC(condition="RESULTAT != None",fr="extraction d un champ",
+ regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','INST','LIST_INST'),),
+ TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
+ LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster),
+ INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
+ LIST_INST =SIMP(statut='f',typ=listr8_sdaster),
+
+ b_acce_reel =BLOC(condition="(INST != None)or(LIST_INST != None)",
+ PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-6),
+ CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
+ ),
+ ),
+ EXCIT =FACT(statut='f',max='**',
+ CHARGE =SIMP(statut='o',typ=(char_meca,char_cine_meca)),
+ FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ TYPE_CHARGE =SIMP(statut='f',typ='TXM',defaut="FIXE",into=("FIXE",) ),
+ ),
+ SYME_CHAR =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SYME","ANTI","SANS") ),
+
+ COMP_ELAS =FACT(statut='f',
+ RELATION =SIMP(statut='f',typ='TXM',defaut="ELAS",
+ into=("ELAS","ELAS_VMIS_LINE","ELAS_VMIS_TRAC") ),
+ ELAS =SIMP(statut='f',typ='I',defaut=1,into=(1,) ),
+ ELAS_VMIS_LINE =SIMP(statut='f',typ='I',defaut=1,into=(1,) ),
+ ELAS_VMIS_TRAC =SIMP(statut='f',typ='I',defaut=1,into=(1,) ),
+ DEFORMATION =SIMP(statut='f',typ='TXM',defaut="PETIT",into=("PETIT","GREEN") ),
+ regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**'),
+ ),
+
+ COMP_INCR =FACT(statut='f',
+ RELATION =SIMP(statut='f',typ='TXM',defaut="ELAS",
+ into=("ELAS","VMIS_ISOT_TRAC","VMIS_ISOT_LINE","VMIS_CINE_LINE") ),
+ ELAS =SIMP(statut='f',typ='I',defaut=1,into=(1,) ),
+ VMIS_ISOT_TRAC =SIMP(statut='f',typ='I',defaut=2,into=(2,) ),
+ VMIS_ISOT_LINE =SIMP(statut='f',typ='I',defaut=2,into=(2,) ),
+ DEFORMATION =SIMP(statut='f',typ='TXM',defaut="PETIT",into=("PETIT","PETIT_REAC") ),
+ regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**'),
+ ),
+
+ ETAT_INIT =FACT(statut='f',
+ SIGM =SIMP(statut='f',typ=cham_elem_sief_r),
+ DEPL =SIMP(statut='f',typ=cham_no_depl_r),
+ ),
+
+ OPTION =SIMP(statut='f',typ='TXM',defaut="CALC_G",
+ into=("CALC_G","CALC_K_G","CALC_G_LGLO","G_BILINEAIRE","CALC_G_MAX") ),
+ b_g =BLOC(condition="OPTION=='CALC_G'",
+ LISSAGE_THETA =SIMP(statut='f',typ='TXM',defaut="LEGENDRE",into=("LEGENDRE","LAGRANGE") ),
+ LISSAGE_G =SIMP(statut='f',typ='TXM',defaut="LEGENDRE",into=("LEGENDRE","LAGRANGE","LAGRANGE_NO_NO",) ),
+ ),
+ b_g_lglo =BLOC(condition="OPTION=='CALC_G_LGLO'",
+ PROPAGATION =SIMP(statut='o',typ='R'),
+ THETA =SIMP(statut='o',typ=theta_geom),
+ DIRE_THETA =SIMP(statut='f',typ=cham_no_depl_r),
+ LISSAGE_THETA =SIMP(statut='f',typ='TXM',defaut="LEGENDRE",into=("LEGENDRE","LAGRANGE") ),
+ LISSAGE_G =SIMP(statut='f',typ='TXM',defaut="LEGENDRE",into=("LEGENDRE","LAGRANGE","LAGRANGE_NO_NO",) ),
+ ),
+ b_g_bilin =BLOC(condition="OPTION=='G_BILINEAIRE'",
+ LISSAGE_THETA =SIMP(statut='f',typ='TXM',defaut="LEGENDRE",into=("LEGENDRE","LAGRANGE") ),
+ LISSAGE_G =SIMP(statut='f',typ='TXM',defaut="LEGENDRE",into=("LEGENDRE","LAGRANGE") ),
+ ),
+ b_k_g =BLOC(condition="OPTION=='CALC_K_G'",
+ LISSAGE_THETA =SIMP(statut='f',typ='TXM',defaut="LEGENDRE",into=("LEGENDRE","LAGRANGE") ),
+ LISSAGE_G =SIMP(statut='f',typ='TXM',defaut="LEGENDRE",into=("LEGENDRE","LAGRANGE") ),
+ FISSURE =SIMP(statut='o',typ=fiss_xfem,max=1),
+ ),
+ b_calc_g_max =BLOC(condition="OPTION=='CALC_G_MAX'",
+ BORNES =FACT(statut='o',max='**',
+ NUME_ORDRE =SIMP(statut='o',typ='I'),
+ VALE_MIN =SIMP(statut='o',typ='R'),
+ VALE_MAX =SIMP(statut='o',typ='R'),
+ ),
+ LISSAGE_THETA =SIMP(statut='f',typ='TXM',defaut="LEGENDRE",into=("LEGENDRE","LAGRANGE") ),
+ LISSAGE_G =SIMP(statut='f',typ='TXM',defaut="LEGENDRE",into=("LEGENDRE","LAGRANGE") ),
+ ),
+
+ DEGRE =SIMP(statut='f',typ='I',defaut=5,into=(0,1,2,3,4,5,6,7) ),
+
+ R_INF =SIMP(statut='f',typ='R'),
+ R_SUP =SIMP(statut='f',typ='R'),
+ R_INF_FO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ R_SUP_FO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+
+ TITRE =SIMP(statut='f',typ='TXM',max='**'),
+ INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
+) ;
+#& MODIF COMMANDE DATE 11/10/2004 AUTEUR LEBOUVIE F.LEBOUVIER
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+CALC_G_THETA_T=OPER(nom="CALC_G_THETA_T",op=53,sd_prod=tabl_calc_g_th,
+ fr="Calcul du taux de restitution d énergie par la méthode theta en thermo-élasticité en 2D ou en 3D",
+ reentrant='f',
+ UIinfo={"groupes":("Post traitements",)},
+ regles=(UN_PARMI('RESULTAT','DEPL'),
+ PRESENT_PRESENT('VITE','ACCE'),
+ EXCLUS('COMP_ELAS','COMP_INCR'),),
+ MODELE =SIMP(statut='f',typ=modele_sdaster),
+ CHAM_MATER =SIMP(statut='f',typ=cham_mater),
+ THETA =SIMP(statut='o',typ=(theta_geom,cham_no_depl_r),),
+ DEPL =SIMP(statut='f',typ=cham_no_depl_r),
+ VITE =SIMP(statut='f',typ=cham_no_depl_r),
+ ACCE =SIMP(statut='f',typ=cham_no_depl_r),
+ RESULTAT =SIMP(statut='f',typ=(evol_elas,evol_noli,dyna_trans),),
+
+ b_extrac =BLOC(condition="RESULTAT != None",fr="extraction d un champ",
+ regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','INST','LIST_INST'),),
+ TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
+ LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster),
+ INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
+ LIST_INST =SIMP(statut='f',typ=listr8_sdaster),
+
+ b_acce_reel =BLOC(condition="(INST != None)or(LIST_INST != None)",
+ PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-6),
+ CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
+ ),
+ ),
+ EXCIT =FACT(statut='f',max='**',
+ CHARGE =SIMP(statut='o',typ=(char_meca,char_cine_meca)),
+ FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ TYPE_CHARGE =SIMP(statut='f',typ='TXM',defaut="FIXE",into=("FIXE",) ),
+ ),
+ SYME_CHAR =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SYME","ANTI","SANS") ),
+
+ COMP_ELAS =FACT(statut='f',
+ RELATION =SIMP(statut='f',typ='TXM',defaut="ELAS",
+ into=("ELAS","ELAS_VMIS_LINE","ELAS_VMIS_TRAC") ),
+ ELAS =SIMP(statut='f',typ='I',defaut=1,into=(1,) ),
+ ELAS_VMIS_LINE =SIMP(statut='f',typ='I',defaut=1,into=(1,) ),
+ ELAS_VMIS_TRAC =SIMP(statut='f',typ='I',defaut=1,into=(1,) ),
+ DEFORMATION =SIMP(statut='f',typ='TXM',defaut="PETIT",into=("PETIT","GREEN") ),
+ regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**'),
+ ),
+ COMP_INCR =FACT(statut='f',
+ RELATION =SIMP(statut='f',typ='TXM',defaut="ELAS",
+ into=("ELAS","VMIS_ISOT_TRAC","VMIS_ISOT_LINE","VMIS_CINE_LINE") ),
+ ELAS =SIMP(statut='f',typ='I',defaut=1,into=(1,) ),
+ VMIS_ISOT_TRAC =SIMP(statut='f',typ='I',defaut=2,into=(2,) ),
+ VMIS_ISOT_LINE =SIMP(statut='f',typ='I',defaut=2,into=(2,) ),
+ DEFORMATION =SIMP(statut='f',typ='TXM',defaut="PETIT",into=("PETIT","PETIT_REAC") ),
+ regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**'),
+ ),
+ ETAT_INIT =FACT(statut='f',
+ SIGM =SIMP(statut='f',typ=cham_elem_sief_r),
+ DEPL =SIMP(statut='f',typ=cham_no_depl_r),
+ ),
+ OPTION =SIMP(statut='f',typ='TXM',defaut="CALC_G",
+ into=("CALC_G","CALC_G_LAGR","CALC_K_G","G_BILINEAIRE","CALC_G_MAX",) ),
+ b_calc_g_max =BLOC(condition="OPTION=='CALC_G_MAX'",
+ BORNES =FACT(statut='o',max='**',
+ NUME_ORDRE =SIMP(statut='o',typ='I'),
+ VALE_MIN =SIMP(statut='o',typ='R'),
+ VALE_MAX =SIMP(statut='o',typ='R'),
+ ),
+ ),
+ b_calc_k_g =BLOC(condition="OPTION=='CALC_K_G'",
+ FOND_FISS =SIMP(statut='o',typ=fond_fiss),
+ ),
+ b_calc_g_lagr =BLOC(condition="OPTION=='CALC_G_LAGR'",
+ PROPAGATION =SIMP(statut='o',typ='R'),
+ ),
+
+ SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**',
+ fr="Liste des paramètres de sensibilité.",
+ ang="List of sensitivity parameters"),
+
+ TITRE =SIMP(statut='f',typ='TXM',max='**'),
+ INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
+) ;
+#& MODIF COMMANDE DATE 30/06/2004 AUTEUR MCOURTOI M.COURTOIS
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+CALC_INTE_SPEC=OPER(nom="CALC_INTE_SPEC",op= 120,sd_prod=tabl_intsp,
+ fr="Calcul d une matrice interspectrale d une fonction du temps",
+ reentrant='n',
+ UIinfo={"groupes":("Fonction",)},
+ INST_INIT =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ INST_FIN =SIMP(statut='o',typ='R' ),
+ DUREE_ANALYSE =SIMP(statut='f',typ='R' ),
+ DUREE_DECALAGE =SIMP(statut='f',typ='R' ),
+ NB_POIN =SIMP(statut='o',typ='I' ),
+ FONCTION =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule),max='**' ),
+ TITRE =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'),
+ INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+CALC_MATR_AJOU=OPER(nom="CALC_MATR_AJOU",op= 152,sd_prod=matr_asse_gene_r,
+ fr="Calcul des matrices de masse, d amortissement ou de raideur ajoutées",
+ reentrant='n',
+ UIinfo={"groupes":("Matrices/vecteurs",)},
+ regles=(EXCLUS('MODE_MECA','CHAM_NO','MODELE_GENE'),
+ PRESENT_ABSENT('NUME_DDL_GENE','CHAM_NO'),
+ PRESENT_PRESENT('MODELE_GENE','NUME_DDL_GENE'),),
+ MODELE_FLUIDE =SIMP(statut='o',typ=modele_sdaster ),
+ MODELE_INTERFACE=SIMP(statut='o',typ=modele_sdaster ),
+ CHAM_MATER =SIMP(statut='o',typ=cham_mater ),
+ CHARGE =SIMP(statut='o',typ=char_ther ),
+ MODE_MECA =SIMP(statut='f',typ=mode_meca ),
+ CHAM_NO =SIMP(statut='f',typ=cham_no_depl_r ),
+ MODELE_GENE =SIMP(statut='f',typ=modele_gene ),
+ NUME_DDL_GENE =SIMP(statut='f',typ=nume_ddl_gene ),
+ DIST_REFE =SIMP(statut='f',typ='R',defaut= 1.E-2 ),
+ AVEC_MODE_STAT =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+ NUME_MODE_MECA =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
+ OPTION =SIMP(statut='o',typ='TXM',into=("MASS_AJOU","AMOR_AJOU","RIGI_AJOU") ),
+ POTENTIEL =SIMP(statut='f',typ=evol_ther ),
+ NOEUD_DOUBLE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
+ INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2 ) ),
+
+ SOLVEUR =FACT(statut='d',
+ METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC") ),
+ b_mult_front = BLOC ( condition = "METHODE == 'MULT_FRONT' ",fr="Paramètres de la méthode multi frontale",
+ RENUM =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ),
+ ),
+ b_ldlt =BLOC( condition = "METHODE == 'LDLT' ",fr="Paramètres de la méthode LDLT",
+ RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("RCMK","SANS") ),
+ ),
+ b_ldlt_mult =BLOC( condition = "METHODE == 'LDLT' or METHODE == 'MULT_FRONT' ",
+ fr="Paramètres relatifs à la non iversibilité de la matrice à factorise",
+ NPREC =SIMP(statut='f',typ='I',defaut= 8 ),
+ STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+ ),
+ b_gcpc =BLOC (condition = "METHODE == 'GCPC' ", fr="Paramètres de la méthode du gradient conjugué",
+ PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC",),defaut="LDLT_INC" ),
+ NIVE_REMPLISSAGE=SIMP(statut='f',typ='I',defaut=0),
+ RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ),
+ RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ),
+ NMAX_ITER =SIMP(statut='f',typ='I',defaut= 0 ),
+ ),
+ ),
+) ;
+#& MODIF COMMANDE DATE 31/01/2006 AUTEUR ACBHHCD G.DEVESA
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE VABHHTS J.PELLET
+def calc_matr_elem_prod(OPTION,**args):
+ if OPTION == "RIGI_MECA" : return matr_elem_depl_r
+ if OPTION == "RIGI_FLUI_STRU" : return matr_elem_depl_r
+ if OPTION == "RIGI_MECA_LAGR" : return matr_elem_depl_r
+ if OPTION == "MASS_ID_MDEP_R" : return matr_elem_depl_r
+ if OPTION == "MASS_ID_MDNS_R" : return matr_elem_depl_r
+ if OPTION == "MASS_ID_MTEM_R" : return matr_elem_temp_r
+ if OPTION == "MASS_ID_MTNS_R" : return matr_elem_temp_r
+ if OPTION == "MASS_MECA" : return matr_elem_depl_r
+ if OPTION == "MASS_FLUI_STRU" : return matr_elem_depl_r
+ if OPTION == "RIGI_GEOM" : return matr_elem_depl_r
+ if OPTION == "RIGI_ROTA" : return matr_elem_depl_r
+ if OPTION == "AMOR_MECA" : return matr_elem_depl_r
+ if OPTION == "IMPE_MECA" : return matr_elem_depl_r
+ if OPTION == "ONDE_FLUI" : return matr_elem_depl_r
+ if OPTION == "AMOR_MECA_ABSO" : return matr_elem_depl_r
+ if OPTION == "RIGI_MECA_HYST" : return matr_elem_depl_c
+ if OPTION == "RIGI_THER" : return matr_elem_temp_r
+ if OPTION == "MASS_THER" : return matr_elem_temp_r
+ if OPTION == "MASS_MECA_DIAG" : return matr_elem_depl_r
+ if OPTION == "RIGI_ACOU" : return matr_elem_pres_c
+ if OPTION == "MASS_ACOU" : return matr_elem_pres_c
+ if OPTION == "AMOR_ACOU" : return matr_elem_pres_c
+ raise AsException("type de concept resultat non prevu")
+
+CALC_MATR_ELEM=OPER(nom="CALC_MATR_ELEM",op= 9,sd_prod=calc_matr_elem_prod
+ ,fr="Calcul des matrices élémentaires",reentrant='n',
+ UIinfo={"groupes":("Matrices/vecteurs",)},
+
+ OPTION =SIMP(statut='o',typ='TXM',
+ into=("RIGI_MECA","MASS_MECA","RIGI_GEOM",
+ "AMOR_MECA","RIGI_THER","MASS_THER","IMPE_MECA",
+ "ONDE_FLUI","AMOR_MECA_ABSO","MASS_FLUI_STRU","RIGI_FLUI_STRU",
+ "RIGI_ROTA","MASS_MECA_DIAG","RIGI_ACOU",
+ "MASS_ID_MDEP_R","MASS_ID_MDNS_R","MASS_ID_MTEM_R","MASS_ID_MTNS_R",
+ "MASS_ACOU","AMOR_ACOU","RIGI_MECA_HYST",
+ "RIGI_MECA_LAGR") ),
+
+ # mots clés facultatifs que l'on a du mal à mettre dans les blocs
+ # sans gener MACRO_MATR_ASSE :
+ #------------------------------------------------------------------
+ INST=SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+
+
+ b_rigi_meca = BLOC( condition = "OPTION=='RIGI_MECA'",
+ regles=(AU_MOINS_UN('MODELE','CHARGE' ),),
+ MODELE =SIMP(statut='f',typ=modele_sdaster ),
+ b_modele =BLOC(condition = "MODELE != None",
+ CHAM_MATER =SIMP(statut='f',typ=cham_mater ),
+ CARA_ELEM =SIMP(statut='f',typ=cara_elem ),
+ MODE_FOURIER =SIMP(statut='f',typ='I',defaut= 0 ),
+ ),
+ CHARGE =SIMP(statut='f',typ=char_meca,validators=NoRepeat(),max='**' ),
+ ),
+
+ b_rigi_meca_lagr =BLOC(condition = "OPTION=='RIGI_MECA_LAGR'",
+ MODELE =SIMP(statut='o',typ=modele_sdaster ),
+ CHAM_MATER =SIMP(statut='o',typ=cham_mater ),
+ CHARGE =SIMP(statut='f',typ=char_meca,validators=NoRepeat(),max='**' ),
+ THETA =SIMP(statut='o',typ=theta_geom ),
+ PROPAGATION =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ ),
+
+ b_mass_meca =BLOC(condition = "(OPTION=='MASS_MECA') or (OPTION=='MASS_MECA_DIAG')",
+ regles=(AU_MOINS_UN('MODELE','CHARGE'),),
+ MODELE =SIMP(statut='f',typ=modele_sdaster ),
+ b_modele =BLOC(condition = "MODELE != None",
+ CHAM_MATER =SIMP(statut='f',typ=cham_mater ),
+ CARA_ELEM =SIMP(statut='f',typ=cara_elem ),
+ ),
+ CHARGE =SIMP(statut='f',typ=char_meca,validators=NoRepeat(),max='**'),
+ ),
+
+ b_mass_identite =BLOC(condition = "(OPTION in ('MASS_ID_MDEP_R','MASS_ID_MTEM_R','MASS_ID_MDNS_R','MASS_ID_MTNS_R')) ",
+ MODELE =SIMP(statut='o',typ=modele_sdaster ),
+ # j'ajoute ces 2 mot clés inutiles à cause de l'alarme pas assez subtile de MEDOME
+ CHAM_MATER =SIMP(statut='f',typ=cham_mater ),
+ CARA_ELEM =SIMP(statut='f',typ=cara_elem ),
+ ),
+
+ b_rigi_geom =BLOC(condition = "OPTION=='RIGI_GEOM'",
+ MODELE =SIMP(statut='o',typ=modele_sdaster ),
+ CARA_ELEM =SIMP(statut='f',typ=cara_elem ),
+ SIEF_ELGA =SIMP(statut='o',typ=cham_elem_sief_r ),
+ MODE_FOURIER =SIMP(statut='f',typ='I',defaut= 0 ),
+ ),
+
+ b_rigi_rota =BLOC(condition = "OPTION=='RIGI_ROTA'",
+ MODELE =SIMP(statut='o',typ=modele_sdaster ),
+ CHAM_MATER =SIMP(statut='o',typ=cham_mater ),
+ CHARGE =SIMP(statut='o',typ=char_meca,validators=NoRepeat(),max='**' ),
+ ),
+
+ b_amor_meca =BLOC(condition = "OPTION=='AMOR_MECA'",
+ regles=(AU_MOINS_UN('CARA_ELEM','RIGI_MECA'),
+ ENSEMBLE('RIGI_MECA','MASS_MECA','CHAM_MATER'), ),
+ MODELE =SIMP(statut='o',typ=modele_sdaster ),
+ CARA_ELEM =SIMP(statut='f',typ=cara_elem ),
+ CHAM_MATER =SIMP(statut='f',typ=cham_mater ),
+ RIGI_MECA =SIMP(statut='f',typ=matr_elem_depl_r ),
+ MASS_MECA =SIMP(statut='f',typ=matr_elem_depl_r ),
+ CHARGE =SIMP(statut='f',typ=char_meca,validators=NoRepeat(),max='**'),
+ ),
+
+ b_amor_meca_abso =BLOC(condition = "OPTION=='AMOR_MECA_ABSO'",
+ regles=(AU_MOINS_UN('CARA_ELEM','RIGI_MECA'),
+ ENSEMBLE('RIGI_MECA','MASS_MECA','CHAM_MATER'), ),
+ MODELE =SIMP(statut='o',typ=modele_sdaster ),
+ CARA_ELEM =SIMP(statut='f',typ=cara_elem ),
+ CHAM_MATER =SIMP(statut='o',typ=cham_mater ),
+ RIGI_MECA =SIMP(statut='f',typ=matr_elem_depl_r ),
+ MASS_MECA =SIMP(statut='f',typ=matr_elem_depl_r ),
+ CHARGE =SIMP(statut='f',typ=char_meca,validators=NoRepeat(),max='**'),
+ ),
+
+ b_rigi_meca_hyst =BLOC( condition = "OPTION=='RIGI_MECA_HYST'",
+ MODELE =SIMP(statut='o',typ=modele_sdaster ),
+ CHARGE =SIMP(statut='f',typ=char_meca ,validators=NoRepeat(),max='**' ),
+ CHAM_MATER =SIMP(statut='f',typ=cham_mater ),
+ CARA_ELEM =SIMP(statut='f',typ=cara_elem ),
+ RIGI_MECA =SIMP(statut='o',typ=matr_elem_depl_r ),
+ ),
+
+ b_rigi_ther =BLOC(condition = "OPTION=='RIGI_THER'",
+ regles=(AU_MOINS_UN('MODELE','CHARGE' ),),
+ MODELE =SIMP(statut='f',typ=modele_sdaster ),
+ b_modele =BLOC(condition = "MODELE != None",
+ CHAM_MATER =SIMP(statut='o',typ=cham_mater ),
+ CARA_ELEM =SIMP(statut='f',typ=cara_elem ),
+ MODE_FOURIER =SIMP(statut='f',typ='I',defaut= 0 ),
+ ),
+ CHARGE =SIMP(statut='f',typ=char_ther,validators=NoRepeat(),max='**' ),
+ ),
+
+ b_mass_ther =BLOC(condition = "OPTION=='MASS_THER'",
+ MODELE =SIMP(statut='o',typ=modele_sdaster ),
+ CHAM_MATER =SIMP(statut='o',typ=cham_mater ),
+ CARA_ELEM =SIMP(statut='f',typ=cara_elem ),
+ CHARGE =SIMP(statut='f',typ=char_ther ,validators=NoRepeat(),max='**' ),
+ ),
+
+ b_rigi_acou =BLOC(condition = "OPTION=='RIGI_ACOU'",
+ MODELE =SIMP(statut='o',typ=modele_sdaster ),
+ CHAM_MATER =SIMP(statut='o',typ=cham_mater ),
+ CHARGE =SIMP(statut='f',typ=char_acou ,validators=NoRepeat(),max='**' ),
+ ),
+
+ b_mass_acou =BLOC(condition = "(OPTION=='MASS_ACOU') or (OPTION=='AMOR_ACOU')",
+ MODELE =SIMP(statut='o',typ=modele_sdaster ),
+ CHAM_MATER =SIMP(statut='o',typ=cham_mater ),
+ CHARGE =SIMP(statut='f',typ=char_acou ,validators=NoRepeat(),max='**' ),
+ ),
+
+ b_rigi_flui =BLOC(condition = "OPTION=='RIGI_FLUI_STRU'",
+ MODELE =SIMP(statut='o',typ=modele_sdaster ),
+ CARA_ELEM =SIMP(statut='o',typ=cara_elem ),
+ CHAM_MATER =SIMP(statut='o',typ=cham_mater ),
+ CHARGE =SIMP(statut='o',typ=char_meca ,validators=NoRepeat(),max='**' ),
+ ),
+
+ b_mass_flui =BLOC(condition = "OPTION=='MASS_FLUI_STRU'",
+ MODELE =SIMP(statut='o',typ=modele_sdaster ),
+ CARA_ELEM =SIMP(statut='o',typ=cara_elem ),
+ CHAM_MATER =SIMP(statut='o',typ=cham_mater ),
+ CHARGE =SIMP(statut='o',typ=char_meca ,validators=NoRepeat(),max='**'),
+ ),
+
+ b_impe_meca =BLOC(condition = "(OPTION=='IMPE_MECA') or (OPTION=='ONDE_FLUI')",
+ MODELE =SIMP(statut='o',typ=modele_sdaster ),
+ CHAM_MATER =SIMP(statut='o',typ=cham_mater ),
+ CHARGE =SIMP(statut='o',typ=char_meca,validators=NoRepeat(),max='**' ),
+ ),
+) ;
+#& MODIF COMMANDE DATE 24/10/2005 AUTEUR ADBHHVV V.CANO
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+CALC_META=OPER(nom="CALC_META",op=194,sd_prod=evol_ther,reentrant='o',
+ UIinfo={"groupes":("Post traitements",)},
+ fr="Calcule la métallurgie a partir du résultat du calcul thermique",
+ MODELE =SIMP(statut='o',typ=modele_sdaster ),
+ CHAM_MATER =SIMP(statut='o',typ=cham_mater ),
+ RESULTAT =SIMP(statut='o',typ=evol_ther ),
+ ETAT_INIT =FACT(statut='o',
+ regles=(UN_PARMI('EVOL_THER', 'META_INIT'),),
+ EVOL_THER =SIMP(statut='f',typ=evol_ther ),
+ META_INIT =SIMP(statut='f',typ=carte_var2_r ),
+ b_etat =BLOC(condition="EVOL_THER != None",
+ regles=(UN_PARMI('NUME_INIT', 'INST_INIT',),),
+ NUME_INIT =SIMP(statut='f',typ='I'),
+ INST_INIT =SIMP(statut='f',typ='R'),
+ b_inst =BLOC(condition="INST_INIT != None",
+ PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3),
+ CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") )
+ ),
+ ),
+ ),
+ COMP_INCR =FACT(statut='o',max='**',
+ RELATION =SIMP(statut='o',typ='TXM',into=("ACIER","ZIRC",) ),
+ ACIER =SIMP(statut='c',typ='I',defaut=7,into=(7,) ),
+ ZIRC =SIMP(statut='c',typ='I',defaut=3,into=(3,) ),
+ regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA =SIMP(statut='f',typ=grma),
+ MAILLE =SIMP(statut='f',typ=ma),
+ ),
+ OPTION =SIMP(statut='f',typ='TXM'
+ ,into=("META_ELNO_TEMP",) ),
+) ;
+#& MODIF COMMANDE DATE 30/06/2004 AUTEUR MCOURTOI M.COURTOIS
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE G8BHHXD X.DESROCHES
+def calc_no_prod(RESULTAT,**args):
+ if AsType(RESULTAT) != None : return AsType(RESULTAT)
+ raise AsException("type de concept resultat non prevu")
+
+CALC_NO=OPER(nom="CALC_NO",op= 106,sd_prod=calc_no_prod,reentrant='o',
+ UIinfo={"groupes":("Post traitements",)},
+ RESULTAT =SIMP(statut='o',typ=(evol_elas,dyna_trans,dyna_harmo,acou_harmo,mode_meca,
+ mode_acou,mode_stat,mode_stat_depl,mode_stat_acce,
+ mode_stat_forc,evol_ther,evol_noli,base_modale,
+ mult_elas,fourier_elas,mode_flamb ) ),
+ SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**',
+ fr="Liste des paramètres de sensibilité.",
+ ang="List of sensitivity parameters"),
+
+ regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','FREQ','NUME_MODE',
+ 'NOEUD_CMP','LIST_INST','LIST_FREQ','LIST_ORDRE','NOM_CAS'),),
+ TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
+ NUME_MODE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
+ NOEUD_CMP =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'),
+ NOM_CAS =SIMP(statut='f',typ='TXM' ),
+ INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
+ FREQ =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
+ LIST_INST =SIMP(statut='f',typ=listr8_sdaster),
+ LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster),
+ PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3 ),
+ CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
+ LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster),
+
+ OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',
+ into=("FORC_NODA","REAC_NODA",
+ "DCHA_NOEU_SIGM",
+ "DEGE_NOEU_DEPL",
+ "DETE_NOEU_DLTE",
+ "DEDE_NOEU_DLDE",
+ "DESI_NOEU_DLSI",
+ "DURT_NOEU_META",
+ "EFGE_NOEU_CART","EFGE_NOEU_DEPL",
+ "ENDO_NOEU_SINO",
+ "ENEL_NOEU_ELGA",
+ "EPMG_NOEU_DEPL",
+ "EPSA_NOEU",
+ "EPSG_NOEU_DEPL",
+ "EPSI_NOEU_DEPL",
+ "EPSP_NOEU" ,"EPSP_NOEU_ZAC",
+ "EQUI_NOEU_EPME","EQUI_NOEU_EPSI","EQUI_NOEU_SIGM",
+ "ERRE_NOEU_ELGA",
+ "FLUX_NOEU_TEMP",
+ "HYDR_NOEU_ELGA",
+ "INTE_NOEU_ACTI","INTE_NOEU_REAC",
+ "META_NOEU_TEMP",
+ "PMPB_NOEU_SIEF",
+ "PRES_NOEU_DBEL","PRES_NOEU_IMAG","PRES_NOEU_REEL",
+ "RADI_NOEU_SIGM",
+ "SIEF_NOEU" ,"SIEF_NOEU_ELGA",
+ "SIGM_NOEU_CART","SIGM_NOEU_COQU","SIGM_NOEU_DEPL",
+ "SIGM_NOEU_SIEF","SIGM_NOEU_ZAC",
+ "SIPO_NOEU_DEPL","SIPO_NOEU_SIEF",
+ "SIRE_NOEU_DEPL",
+ "VARI_NOEU" ,"VARI_NOEU_ELGA",) ),
+
+ b_forc_reac =BLOC(condition = """(OPTION == 'FORC_NODA') or (type(OPTION) == type(()) and 'FORC_NODA' in OPTION) or\
+ (OPTION == 'REAC_NODA') or (type(OPTION) == type(()) and 'REAC_NODA' in OPTION)""",
+ MODELE =SIMP(statut='f',typ=modele_sdaster),
+ ),
+
+ CHAM_MATER =SIMP(statut='f',typ=cham_mater),
+ CARA_ELEM =SIMP(statut='f',typ=cara_elem),
+ EXCIT =FACT(statut='f',max='**',
+ CHARGE =SIMP(statut='f',typ=(char_meca,char_ther,char_acou) ),
+ FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ TYPE_CHARGE =SIMP(statut='f',typ='TXM',defaut="FIXE_CSTE",
+ into=("FIXE_CSTE","FIXE_PILO","SUIV") ),
+ ),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**'),
+ GROUP_MA_RESU =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE_RESU =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**'),
+ GROUP_NO_RESU =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ NOEUD_RESU =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**'),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2003 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE ASSIRE A.ASSIRE
+
+from Macro.calc_precont_ops import calc_precont_ops
+
+
+# ===========================================================================
+# CATALOGUE DE LA MACRO "CALC_PRECONT"
+# -----------------------------------------
+# USAGE :
+#
+#
+# ===========================================================================
+
+CALC_PRECONT=MACRO(nom="CALC_PRECONT",op=calc_precont_ops,sd_prod=evol_noli,
+ fr="imposer la tension definie par le BPEL dans les cables",
+ reentrant='f',
+ reuse =SIMP(statut='f',typ='evol_noli'),
+ MODELE =SIMP(statut='o',typ=modele_sdaster),
+ CHAM_MATER =SIMP(statut='o',typ=cham_mater),
+ CARA_ELEM =SIMP(statut='o',typ=cara_elem),
+ CABLE_BP =SIMP(statut='o',typ=cabl_precont,validators=NoRepeat(),max='**'),
+ CABLE_BP_INACTIF =SIMP(statut='f',typ=cabl_precont,validators=NoRepeat(),max='**'),
+ INCREMENT =FACT(statut='o',
+ LIST_INST =SIMP(statut='o',typ=listr8_sdaster),
+ INST_INIT =SIMP(statut='f',typ='R'),
+ INST_FIN =SIMP(statut='f',typ='R'),
+ PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3 ),
+ SUBD_PAS =SIMP(statut='f',typ='I',defaut=1),
+ SUBD_PAS_MINI =SIMP(statut='f',typ='R'),
+ COEF_SUBD_PAS_1 =SIMP(statut='f',typ='R',defaut= 1.0E+0),
+ ),
+
+ NEWTON =FACT(statut='d',
+ REAC_INCR =SIMP(statut='f',typ='I',defaut= 1 ),
+ PREDICTION =SIMP(statut='f',typ='TXM',into=("DEPL_CALCULE","TANGENTE","ELASTIQUE","EXTRAPOL") ),
+ MATRICE =SIMP(statut='f',typ='TXM',defaut="TANGENTE",into=("TANGENTE","ELASTIQUE") ),
+ PAS_MINI_ELAS =SIMP(statut='f',typ='R',defaut=0.0E+0),
+ REAC_ITER =SIMP(statut='f',typ='I',defaut=0),
+ EVOL_NOLI =SIMP(statut='f',typ=evol_noli),
+ ),
+ RECH_LINEAIRE =FACT(statut='f',
+ RESI_LINE_RELA =SIMP(statut='f',typ='R',defaut= 1.0E-1 ),
+ ITER_LINE_MAXI =SIMP(statut='f',typ='I',defaut= 3),
+ ),
+ CONVERGENCE =FACT(statut='d',
+ RESI_GLOB_MAXI =SIMP(statut='f',typ='R'),
+ RESI_GLOB_RELA =SIMP(statut='f',typ='R'),
+ ITER_GLOB_MAXI =SIMP(statut='f',typ='I',defaut=10),
+ ITER_GLOB_ELAS =SIMP(statut='f',typ='I',defaut=25),
+ ARRET =SIMP(statut='f',typ='TXM',defaut="OUI"),
+ RESI_INTE_RELA =SIMP(statut='f',typ='R'
+ ,defaut= 1.0E-6),
+ ITER_INTE_MAXI =SIMP(statut='f',typ='I',defaut= 10 ),
+ ITER_INTE_PAS =SIMP(statut='f',typ='I',defaut= 0 ),
+ RESO_INTE =SIMP(statut='f',typ='TXM',defaut="IMPLICITE",
+ into=("RUNGE_KUTTA_2","RUNGE_KUTTA_4","IMPLICITE")),
+ ),
+ ETAT_INIT =FACT(statut='f',
+ regles=(AU_MOINS_UN('EVOL_NOLI','DEPL','SIGM','VARI','VARI_NON_LOCAL',),
+ EXCLUS('EVOL_NOLI','DEPL',),
+ EXCLUS('EVOL_NOLI','SIGM',),
+ EXCLUS('EVOL_NOLI','VARI',),
+ EXCLUS('EVOL_NOLI','VARI_NON_LOCAL',),
+ EXCLUS('NUME_ORDRE','INST'), ),
+ DEPL =SIMP(statut='f',typ=cham_no_depl_r),
+ SIGM =SIMP(statut='f',typ=(cham_elem_sief_r,carte_sief_r)),
+ VARI =SIMP(statut='f',typ=cham_elem_vari_r),
+ VARI_NON_LOCAL =SIMP(statut='f',typ=cham_no_vanl_r),
+ EVOL_NOLI =SIMP(statut='f',typ=evol_noli),
+ NUME_ORDRE =SIMP(statut='f',typ='I'),
+ INST =SIMP(statut='f',typ='R'),
+ PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3 ),
+ CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
+ NUME_DIDI =SIMP(statut='f',typ='I'),
+ INST_ETAT_INIT =SIMP(statut='f',typ='R'),
+ ),
+ SOLVEUR =FACT(statut='d',
+ METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC") ),
+ b_mult_front =BLOC(condition = "METHODE == 'MULT_FRONT' ",fr="Paramètres de la méthode multi frontale",
+ RENUM =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ),
+ ),
+ b_ldlt =BLOC(condition = "METHODE == 'LDLT' ",fr="Paramètres de la méthode LDLT",
+ RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("RCMK","SANS") ),
+ ),
+ b_ldlt_mult =BLOC(condition = "METHODE == 'LDLT' or METHODE == 'MULT_FRONT' ",
+ fr="Paramètres relatifs à la non inversibilité de la matrice à factorise",
+ NPREC =SIMP(statut='f',typ='I',defaut= 8 ),
+ STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON","DECOUPE") ),
+ ),
+ b_gcpc =BLOC(condition = "METHODE == 'GCPC' ", fr="Paramètres de la méthode du gradient conjugué",
+ PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC",),defaut="LDLT_INC" ),
+ NIVE_REMPLISSAGE=SIMP(statut='f',typ='I',defaut= 0 ),
+ RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ),
+ RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ),
+ NMAX_ITER =SIMP(statut='f',typ='I',defaut= 0 ),
+ ),
+ SYME =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
+ ),
+ SOLV_NON_LOCAL =FACT(statut='f',
+ METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC") ),
+ b_mult_front =BLOC(condition = "METHODE == 'MULT_FRONT' ",fr="Paramètres de la méthode multi frontale",
+ RENUM =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ),
+ ),
+ b_ldlt =BLOC(condition = "METHODE == 'LDLT' ",fr="Paramètres de la méthode LDLT",
+ RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("RCMK","SANS") ),
+ ),
+ b_ldlt_mult =BLOC(condition = "METHODE == 'LDLT' or METHODE == 'MULT_FRONT' ",
+ fr="Paramètres relatifs à la non inversibilité de la matrice à factorise",
+ NPREC =SIMP(statut='f',typ='I',defaut= 8 ),
+ STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+ ),
+ b_gcpc =BLOC(condition = "METHODE == 'GCPC' ", fr="Paramètres de la méthode du gradient conjugué",
+ PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC",),defaut="LDLT_INC" ),
+ NIVE_REMPLISSAGE=SIMP(statut='f',typ='I',defaut= 0 ),
+ RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ),
+ NMAX_ITER =SIMP(statut='f',typ='I',defaut= 0 ),
+ ),
+ EPS =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ ),
+ LAGR_NON_LOCAL =FACT(statut='f',
+ ITER_DUAL_MAXI =SIMP(statut='f',typ='I',defaut= 50),
+ RESI_DUAL_ABSO =SIMP(statut='o',typ='R'),
+ RESI_PRIM_ABSO =SIMP(statut='o',typ='R'),
+ R =SIMP(statut='f',typ='R',defaut= 1000.),
+ ITER_PRIM_MAXI =SIMP(statut='f',typ='I',defaut= 10),
+ ),
+ PARM_THETA =SIMP(statut='f',typ='R'
+ ,defaut= 1. ),
+ INFO =SIMP(statut='f',typ='I',into=(1,2) ),
+ TITRE =SIMP(statut='f',typ='TXM',max='**' ),
+
+ EXCIT =FACT(statut='o',max='**',
+ CHARGE =SIMP(statut='o',typ=char_meca),
+ ),
+
+ COMP_INCR =C_COMP_INCR(),
+ ) ;
+#& MODIF COMMANDE DATE 23/08/2004 AUTEUR CIBHHLV L.VIVAN
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+CALC_THETA=OPER(nom="CALC_THETA",op=54,sd_prod=theta_geom,reentrant='n',
+ UIinfo={"groupes":("Post traitements",)},
+ fr="Affectation d un champ sur le maillage (mécanique de la rupture)",
+ regles=(UN_PARMI('THETA_2D','THETA_3D','THETA_BANDE'),
+ PRESENT_ABSENT('THETA_2D','DIRE_THETA'),
+ EXCLUS('DIRECTION','DIRE_THETA'),),
+ OPTION =SIMP(statut='f',typ='TXM',defaut="COURONNE",into=("COURONNE","BANDE") ),
+ MODELE =SIMP(statut='o',typ=(modele_sdaster) ),
+ THETA_3D =FACT(statut='f',max='**',
+ regles=(UN_PARMI('TOUT','GROUP_NO','NOEUD'),
+ UN_PARMI('MODULE','MODULE_FO'),
+ ENSEMBLE('MODULE','R_INF','R_SUP'),
+ ENSEMBLE('MODULE_FO','R_INF_FO','R_SUP_FO'),),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ MODULE =SIMP(statut='f',typ='R'),
+ R_INF =SIMP(statut='f',typ='R'),
+ R_SUP =SIMP(statut='f',typ='R'),
+ MODULE_FO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ R_INF_FO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ R_SUP_FO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ ),
+ b_theta_3d =BLOC(condition="THETA_3D != None",
+ FOND_FISS =SIMP(statut='f',typ=fond_fiss),),
+ DIRE_THETA =SIMP(statut='f',typ=(cham_no_depl_r) ),
+ DIRECTION =SIMP(statut='f',typ='R',max='**'),
+ THETA_2D =FACT(statut='f',max='**',
+ regles=(UN_PARMI('GROUP_NO','NOEUD'),),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ MODULE =SIMP(statut='o',typ='R'),
+ R_INF =SIMP(statut='o',typ='R'),
+ R_SUP =SIMP(statut='o',typ='R'),
+ ),
+ THETA_BANDE =FACT(statut='f',max='**',
+ MODULE =SIMP(statut='o',typ='R'),
+ R_INF =SIMP(statut='o',typ='R'),
+ R_SUP =SIMP(statut='o',typ='R'),
+ ),
+ GRAD_NOEU_THETA =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
+ IMPRESSION =FACT(statut='f',
+ UNITE =SIMP(statut='f',typ='I',defaut=8),
+ FORMAT =SIMP(statut='f',typ='TXM',defaut="EXCEL",into=("EXCEL","AGRAF") ),
+ ),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE VABHHTS J.PELLET
+def calc_vect_elem_prod(OPTION,**args):
+ if OPTION == "CHAR_MECA" : return vect_elem_depl_r
+ if OPTION == "CHAR_MECA_LAGR" : return vect_elem_depl_r
+ if OPTION == "CHAR_THER" : return vect_elem_temp_r
+ if OPTION == "CHAR_ACOU" : return vect_elem_pres_c
+ if OPTION == "FORC_NODA" : return vect_elem_depl_r
+ raise AsException("type de concept resultat non prevu")
+
+CALC_VECT_ELEM=OPER(nom="CALC_VECT_ELEM",op=8,sd_prod=calc_vect_elem_prod,reentrant='n',
+ UIinfo={"groupes":("Matrices/vecteurs",)},
+ fr="Calcul des seconds membres élémentaires",
+ OPTION =SIMP(statut='o',typ='TXM',into=("CHAR_MECA","CHAR_THER","CHAR_ACOU",
+ "FORC_NODA","CHAR_MECA_LAGR") ),
+ b_char_meca =BLOC(condition = "OPTION=='CHAR_MECA'",
+ regles=(AU_MOINS_UN('CHARGE','MODELE'),),
+ CHARGE =SIMP(statut='f',typ=char_meca,validators=NoRepeat(),max='**'),
+ MODELE =SIMP(statut='f',typ=modele_sdaster),
+ b_charge =BLOC(condition = "CHARGE != None", fr="modèle ne contenant pas de sous-structure",
+ CHAM_MATER =SIMP(statut='f',typ=cham_mater),
+ CARA_ELEM =SIMP(statut='f',typ=cara_elem),
+ INST =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ MODE_FOURIER =SIMP(statut='f',typ='I',defaut= 0 ),
+ ),
+ b_modele =BLOC(condition = "(MODELE != None)",fr="modèle contenant une sous-structure",
+ SOUS_STRUC =FACT(statut='o',min=01,
+ regles=(UN_PARMI('TOUT','MAILLE'),),
+ CAS_CHARGE =SIMP(statut='o',typ='TXM' ),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ MAILLE =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**',),
+ ),
+ ),
+ ),
+ b_char_ther =BLOC(condition = "OPTION=='CHAR_THER'",
+ CARA_ELEM =SIMP(statut='f',typ=cara_elem),
+ CHARGE =SIMP(statut='o',typ=char_ther,validators=NoRepeat(),max='**'),
+ INST =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ ),
+
+ b_char_acou =BLOC(condition = "OPTION=='CHAR_ACOU'",
+ CHAM_MATER =SIMP(statut='o',typ=cham_mater),
+ CHARGE =SIMP(statut='o',typ=char_acou,validators=NoRepeat(),max='**'),
+ ),
+
+ b_forc_noda =BLOC(condition = "OPTION=='FORC_NODA'",
+ SIEF_ELGA =SIMP(statut='o',typ=cham_elem_sief_r),
+ CARA_ELEM =SIMP(statut='f',typ=cara_elem),
+ MODELE =SIMP(statut='f',typ=modele_sdaster),
+ ),
+
+ b_meca_lagr =BLOC(condition = "OPTION=='CHAR_MECA_LAGR'",
+ CHAM_MATER =SIMP(statut='o',typ=cham_mater),
+ THETA =SIMP(statut='o',typ=theta_geom),
+ PROPAGATION =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ CHARGE =SIMP(statut='f',typ=char_meca,validators=NoRepeat(),max='**'),
+ INST =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ ),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE G8BHHXD X.DESROCHES
+def comb_cham_elem_prod(COMB_R=None,COMB_C=None,COMB_FOURIER=None,**args):
+
+ if COMB_R != None:
+ vale=COMB_R[0]['CHAM_ELEM']
+ elif COMB_C != None:
+ vale=COMB_C[0]['CHAM_ELEM']
+ elif COMB_FOURIER != None:
+ vale=COMB_FOURIER[0]['CHAM_ELEM']
+ else :
+ raise AsException("type de concept resultat non prevu")
+
+ if AsType(vale) == cham_elem_sief_r : return cham_elem_sief_r
+ if AsType(vale) == cham_elem_flux_r : return cham_elem_flux_r
+ if AsType(vale) == cham_elem_epsi_r : return cham_elem_epsi_r
+ if AsType(vale) == cham_elem_ener_r : return cham_elem_ener_r
+ if AsType(vale) == cham_elem_crit_r : return cham_elem_crit_r
+ if AsType(vale) == cham_elem_dbel_r : return cham_elem_dbel_r
+ if AsType(vale) == cham_elem_pres_r : return cham_elem_pres_r
+ if AsType(vale) == cham_elem_sief_c : return cham_elem_sief_c
+ raise AsException("type de concept resultat non prevu")
+
+COMB_CHAM_ELEM=OPER(nom="COMB_CHAM_ELEM",op= 139,sd_prod=comb_cham_elem_prod,reentrant='f',
+ fr="Combinaison linéaire de champs par éléments",
+ UIinfo={"groupes":("Résultats et champs",)},
+ regles=(UN_PARMI('COMB_R','COMB_C','COMB_FOURIER'),
+ PRESENT_PRESENT('COMB_FOURIER','ANGL'),),
+ COMB_R =FACT(statut='f',max='**',
+ PARTIE =SIMP(statut='f',typ='TXM',into=("REEL","IMAG") ),
+ COEF_R =SIMP(statut='o',typ='R'),
+ CHAM_ELEM =SIMP(statut='o',
+ typ=(cham_elem_sief_r,cham_elem_flux_r,cham_elem_epsi_r,
+ cham_elem_ener_r,cham_elem_crit_r,cham_elem_dbel_r,
+ cham_elem_pres_r,cham_elem_sief_c ) ),
+ ),
+ COMB_C =FACT(statut='f',max='**',
+ regles=(UN_PARMI('COEF_R','COEF_C', ),),
+ COEF_R =SIMP(statut='f',typ='R'),
+ COEF_C =SIMP(statut='f',typ='C'),
+ CHAM_ELEM =SIMP(statut='o',typ=(cham_elem_sief_r) ),
+ ),
+ COMB_FOURIER =FACT(statut='f',max='**',
+ COEF_R =SIMP(statut='f',typ='R',defaut= 1.),
+ NUME_MODE =SIMP(statut='o',typ='I'),
+ TYPE_MODE =SIMP(statut='o',typ='TXM',into=("SYME","ANTI") ),
+ CHAM_ELEM =SIMP(statut='o',typ=(cham_elem_sief_r,cham_elem_flux_r,cham_elem_epsi_r ) ),
+ ),
+ ANGL =SIMP(statut='f',typ='R' ),
+) ;
+
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE G8BHHXD X.DESROCHES
+def comb_cham_no_prod(COMB_R,COMB_C,COMB_FOURIER,**args):
+ if COMB_C != None:
+ type_mat = AsType(COMB_C[0]['CHAM_NO'])
+ if type_mat in (cham_no_depl_c,cham_no_depl_r) : return cham_no_depl_c
+ if type_mat in (cham_no_temp_c,cham_no_temp_r) : return cham_no_temp_c
+ if type_mat in (cham_no_pres_c,cham_no_pres_r) : return cham_no_pres_c
+ elif COMB_R != None:
+ type_mat = AsType(COMB_R[0]['CHAM_NO'])
+ if type_mat in (cham_no_depl_c,cham_no_depl_r) : return cham_no_depl_r
+ if type_mat in (cham_no_temp_c,cham_no_temp_r) : return cham_no_temp_r
+ if type_mat in (cham_no_pres_c,cham_no_pres_r) : return cham_no_pres_r
+ if type_mat == matr_asse_gene_r : return matr_asse_gene_r
+ elif COMB_FOURIER != None:
+ type_mat = AsType(COMB_FOURIER[0]['CHAM_NO'])
+ if type_mat == cham_no_temp_r : return cham_no_temp_r
+ if type_mat == cham_no_depl_r : return cham_no_depl_r
+ raise AsException("type de concept resultat non prevu")
+
+
+COMB_CHAM_NO=OPER(nom="COMB_CHAM_NO",op= 30,sd_prod=comb_cham_no_prod
+ ,fr="Combinaison linéaire de champs aux noeuds",
+ reentrant='f',
+ UIinfo={"groupes":("Résultats et champs",)},
+ regles=(UN_PARMI('COMB_R','COMB_C','COMB_FOURIER'),),
+ COMB_R =FACT(statut='f',max='**',
+ PARTIE =SIMP(statut='f',typ='TXM',into=("REEL","IMAG",) ),
+ CHAM_NO =SIMP(statut='o',typ=(cham_no_temp_r,cham_no_temp_c,cham_no_depl_r,cham_no_depl_c
+ ,cham_no_pres_r,cham_no_pres_c ) ),
+ COEF_R =SIMP(statut='o',typ='R' ),
+ ),
+ COMB_C =FACT(statut='f',max='**',
+ regles=(UN_PARMI('COEF_R','COEF_C' ),),
+ CHAM_NO =SIMP(statut='o',typ=(cham_no_temp_r,cham_no_depl_r,cham_no_pres_r,cham_no_temp_c
+ ,cham_no_depl_c,cham_no_pres_c ) ),
+ COEF_R =SIMP(statut='f',typ='R' ),
+ COEF_C =SIMP(statut='f',typ='C' ),
+ ),
+ COMB_FOURIER =FACT(statut='f',max='**',
+ CHAM_NO =SIMP(statut='o',typ=(cham_no_temp_r,cham_no_depl_r) ),
+ COEF_R =SIMP(statut='f',typ='R',defaut= 1. ),
+ NUME_MODE =SIMP(statut='o',typ='I' ),
+ TYPE_MODE =SIMP(statut='o',typ='TXM',into=("SYME","ANTI") ),
+ ),
+ b_angl = BLOC ( condition = "COMB_FOURIER != None",
+ ANGL =SIMP(statut='o',typ='R' ),
+ ),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE G8BHHXD X.DESROCHES
+COMB_FOURIER=OPER(nom="COMB_FOURIER",op= 161,sd_prod=comb_fourier,
+ reentrant='n',
+ UIinfo={"groupes":("Post traitements",)},
+ RESULTAT =SIMP(statut='o',typ=fourier_elas ),
+ ANGL =SIMP(statut='o',typ='R',max='**'),
+ NOM_CHAM =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=5,
+ into=("DEPL","REAC_NODA","SIEF_ELGA_DEPL","EPSI_ELNO_DEPL","SIGM_ELNO_DEPL") ),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE VABHHTS J.PELLET
+def comb_matr_asse_prod(COMB_R,COMB_C,CALC_AMOR_GENE,**args):
+ if COMB_C != None:
+ type_mat = AsType(COMB_C[0]['MATR_ASSE'])
+ if type_mat in (matr_asse_depl_c,matr_asse_depl_r) : return matr_asse_depl_c
+ if type_mat in (matr_asse_gene_c,matr_asse_gene_r) : return matr_asse_gene_c
+ if type_mat in (matr_asse_temp_c,matr_asse_temp_r) : return matr_asse_temp_c
+ if type_mat in (matr_asse_pres_c,matr_asse_pres_r) : return matr_asse_pres_c
+ elif COMB_R != None:
+ type_mat = AsType(COMB_R[0]['MATR_ASSE'])
+ if type_mat in (matr_asse_depl_c,matr_asse_depl_r) : return matr_asse_depl_r
+ if type_mat in (matr_asse_temp_c,matr_asse_temp_r) : return matr_asse_temp_r
+ if type_mat in (matr_asse_pres_c,matr_asse_pres_r) : return matr_asse_pres_r
+ if type_mat in (matr_asse_gene_c,matr_asse_gene_r) : return matr_asse_gene_r
+ elif CALC_AMOR_GENE != None: return matr_asse_gene_r
+ raise AsException("type de concept resultat non prevu")
+
+COMB_MATR_ASSE=OPER(nom="COMB_MATR_ASSE",op= 31,sd_prod=comb_matr_asse_prod,
+ fr="Combinaison linéaire de matrices assemblées",
+ reentrant='f',
+ UIinfo={"groupes":("Résultats et champs",)},
+ regles=(UN_PARMI('COMB_R','COMB_C','CALC_AMOR_GENE' ),),
+ COMB_R =FACT(statut='f',max='**',
+ PARTIE =SIMP(statut='f',typ='TXM',into=("REEL","IMAG") ),
+ MATR_ASSE =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_depl_c,matr_asse_temp_r,matr_asse_temp_c
+ ,matr_asse_pres_r,matr_asse_pres_c,matr_asse_gene_r,matr_asse_gene_c ) ),
+ COEF_R =SIMP(statut='o',typ='R' ),
+ ),
+ COMB_C =FACT(statut='f',max='**',
+ regles=(UN_PARMI('COEF_R','COEF_C' ),),
+ MATR_ASSE =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_depl_c,matr_asse_temp_r,matr_asse_temp_c
+ ,matr_asse_pres_r,matr_asse_pres_c,matr_asse_gene_r,matr_asse_gene_c ) ),
+ COEF_R =SIMP(statut='f',typ='R' ),
+ COEF_C =SIMP(statut='f',typ='C' ),
+ ),
+ CALC_AMOR_GENE =FACT(statut='f',
+ regles=(UN_PARMI('AMOR_REDUIT','LIST_AMOR' ),),
+ MASS_GENE = SIMP(statut='f', typ=matr_asse_gene_r),
+ RIGI_GENE = SIMP(statut='f', typ=matr_asse_gene_r),
+ AMOR_REDUIT = SIMP(statut='f',typ='R',max='**'),
+ LIST_AMOR = SIMP(statut='f',typ=listr8_sdaster ),
+ ),
+ SANS_CMP =SIMP(statut='f',typ='TXM',into=("LAGR",) ),
+) ;
+#& MODIF COMMANDE DATE 30/06/2004 AUTEUR MCOURTOI M.COURTOIS
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+COMB_SISM_MODAL=OPER(nom="COMB_SISM_MODAL",op= 109,sd_prod=mode_stat,
+ fr="Réponse sismique par recombinaison modale par une méthode spectrale",
+ reentrant='n',
+ UIinfo={"groupes":("Post traitements",)},
+ regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','FREQ','NUME_MODE','LIST_FREQ','LIST_ORDRE'),
+ UN_PARMI('AMOR_REDUIT','LIST_AMOR','AMOR_GENE' ),),
+ MODE_MECA =SIMP(statut='o',typ=mode_meca ),
+ TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
+ LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster ),
+ NUME_MODE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
+ FREQ =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
+ LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster ),
+ b_freq =BLOC(condition = "FREQ != None or LIST_FREQ != None",
+ PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ),
+ CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
+ ),
+ MODE_CORR =SIMP(statut='f',typ=mode_stat_acce ),
+
+ AMOR_REDUIT =SIMP(statut='f',typ='R',max='**'),
+ LIST_AMOR =SIMP(statut='f',typ=listr8_sdaster ),
+ AMOR_GENE =SIMP(statut='f',typ=matr_asse_gene_r ),
+
+ MASS_INER =SIMP(statut='f',typ=tabl_mass_iner ),
+ CORR_FREQ =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+
+ EXCIT =FACT(statut='o',max='**',
+ regles=(UN_PARMI('MONO_APPUI','NOEUD','GROUP_NO'),
+ UN_PARMI('AXE','TRI_AXE','TRI_SPEC' ),),
+
+ MONO_APPUI =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ AXE =SIMP(statut='f',typ='R',max=3,fr="Excitation suivant un seul axe",),
+ TRI_AXE =SIMP(statut='f',typ='R',max=3,fr="Excitation suivant les trois axes mais avec le meme spectre",),
+ TRI_SPEC =SIMP(statut='f',typ='TXM',into=("OUI",),
+ fr="Excitation suivant les trois axes avec trois spectres"),
+ b_axe =BLOC(condition = "AXE != None",fr="Excitation suivant un seul axe",
+ SPEC_OSCI =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule),),
+ ECHELLE =SIMP(statut='f',typ='R',),
+ ),
+ b_tri_axe =BLOC(condition = "TRI_AXE != None",fr="Excitation suivant les trois axes mais avec le meme spectre",
+ SPEC_OSCI =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule),),
+ ECHELLE =SIMP(statut='f',typ='R',),
+ ),
+ b_tri_spec =BLOC(condition = "TRI_SPEC != None",fr="Excitation suivant les trois axes avec trois spectres",
+ SPEC_OSCI =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule),min=3,max=3 ),
+ ECHELLE =SIMP(statut='f',typ='R',min=3,max=3),
+ ),
+ NATURE =SIMP(statut='f',typ='TXM',defaut="ACCE",into=("ACCE","VITE","DEPL") ),
+ ),
+ COMB_MODE =FACT(statut='o',
+ TYPE =SIMP(statut='o',typ='TXM',into=("SRSS","CQC","DSC","ABS","DPC") ),
+ DUREE =SIMP(statut='f',typ='R' ),
+ ),
+ COMB_DIRECTION =FACT(statut='f',
+ TYPE =SIMP(statut='f',typ='TXM',into=("QUAD","NEWMARK") ),
+ ),
+ COMB_MULT_APPUI =FACT(statut='f',max='**',
+ regles=(UN_PARMI('TOUT','NOEUD','GROUP_NO' ),),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ TYPE_COMBI =SIMP(statut='f',typ='TXM',into=("QUAD","LINE",) ),
+ ),
+ COMB_DEPL_APPUI=FACT(statut='f',max='**',
+ regles=(UN_PARMI('TOUT','LIST_CAS'),),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",)),
+ LIST_CAS =SIMP(statut='f',typ='I',max='**'),
+ TYPE_COMBI =SIMP(statut='f',typ='TXM',into=("QUAD","LINE","ABS") ),
+ ),
+ DEPL_MULT_APPUI =FACT(statut='f',max='**',
+ regles=(UN_PARMI('NOEUD','GROUP_NO'),
+ AU_MOINS_UN('DX','DY','DZ' ),),
+ NOM_CAS =SIMP(statut='o',typ='TXM',max='**'),
+ NUME_CAS =SIMP(statut='o',typ='I',max='**'),
+ MODE_STAT =SIMP(statut='f',typ=(mode_stat_depl,), ),
+ NOEUD_REFE =SIMP(statut='f',typ=no),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ DX =SIMP(statut='f',typ='R' ),
+ DY =SIMP(statut='f',typ='R' ),
+ DZ =SIMP(statut='f',typ='R' ),
+ ),
+ OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=9,
+ into=("DEPL","VITE","ACCE_ABSOLU","SIGM_ELNO_DEPL","SIEF_ELGA_DEPL",
+ "EFGE_ELNO_DEPL","REAC_NODA","FORC_NODA","EFGE_ELNO_CART",
+ "SIPO_ELNO_DEPL") ),
+ INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2 ) ),
+ IMPRESSION =FACT(statut='f',max='**',
+ regles=(EXCLUS('TOUT','NIVEAU'),),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ NIVEAU =SIMP(statut='f',typ='TXM',into=("SPEC_OSCI","MASS_EFFE","MAXI_GENE"),validators=NoRepeat(),max=3 ),
+ ),
+ TITRE =SIMP(statut='f',typ='TXM',max='**'),
+) ;
+#& MODIF COMMANDE DATE 22/11/2005 AUTEUR DURAND C.DURAND
+# RESPONSABLE VABHHTS J.PELLET
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+def crea_champ_prod(TYPE_CHAM,**args):
+ import string
+ grandeur=string.lower(TYPE_CHAM[5:])
+
+ if TYPE_CHAM[0:5] == "CART_" :
+ uu="carte_"+grandeur
+ elif TYPE_CHAM[0:5] == "NOEU_" :
+ uu="cham_no_"+grandeur
+ elif TYPE_CHAM[0:2] == "EL" :
+ uu="cham_elem_"+grandeur
+ else :
+ raise AsException("type de concept resultat_sdaster non prevu")
+
+ try :
+ vv=eval(uu)
+ except :
+ raise AsException("type de concept champ non prevu : %s" % uu)
+ return vv
+
+
+CREA_CHAMP=OPER(nom="CREA_CHAMP",op= 195,sd_prod=crea_champ_prod,
+ fr=" ",reentrant='n',
+ UIinfo={"groupes":("Résultats et champs",)},
+ TYPE_CHAM =SIMP(statut='o',typ='TXM',into=C_TYPE_CHAM_INTO()),
+ # TYPE_CHAM doit etre de la forme : CART_xx, NOEU_xx, ELEM_xx, ELGA_xx ou ELNO_xx
+ # ou xx est le nom d'une grandeur définie dans le catalogue des grandeurs
+
+# SI CREATION D'UN CHAM_NO, POUR IMPOSER LA NUMEROTATION DES DDLS :
+# ------------------------------------------------------------------
+ regles=(EXCLUS('NUME_DDL','CHAM_NO',)),
+ NUME_DDL =SIMP(statut='f',typ=(nume_ddl_sdaster) ),
+ CHAM_NO =SIMP(statut='f',typ=(cham_no_sdaster) ),
+
+# SI CREATION D'UN CHAM_ELEM, POUR aider a l'allocation du champ :
+# (PAR DEFAUT : TOU_INI_ELNO/_ELGA/_ELEM)
+# ------------------------------------------------------------------
+ OPTION =SIMP(statut='f',typ='TXM'),
+
+ OPERATION =SIMP(statut='o',typ='TXM',into=("AFFE","ASSE","EVAL","EXTR","DISC",) ),
+
+ b_affe =BLOC(condition = "OPERATION == 'AFFE'",
+ regles=(UN_PARMI('MAILLAGE','MODELE'),),
+ MAILLAGE =SIMP(statut='f',typ=(maillage_sdaster) ),
+ MODELE =SIMP(statut='f',typ=(modele_sdaster) ),
+ b_affe_modele =BLOC(condition = "MODELE != None",
+ PROL_ZERO =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON",) ), ),
+ AFFE =FACT(statut='o',max='**',
+ regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD',),
+ UN_PARMI('VALE','VALE_I','VALE_C','VALE_F', ),),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA =SIMP(statut='f',typ=grma ,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno ,validators=NoRepeat(),max='**'),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ NOM_CMP =SIMP(statut='o',typ='TXM',max='**'),
+ VALE =SIMP(statut='f',typ='R',max='**' ),
+ VALE_I =SIMP(statut='f',typ='I',max='**' ),
+ VALE_C =SIMP(statut='f',typ='C',max='**' ),
+ VALE_F =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),max='**'),
+ ),
+ ),
+ b_asse =BLOC(condition = "OPERATION == 'ASSE'",
+ regles=(UN_PARMI('MAILLAGE','MODELE'),),
+ MAILLAGE =SIMP(statut='f',typ=(maillage_sdaster) ),
+ MODELE =SIMP(statut='f',typ=(modele_sdaster) ),
+ b_asse_modele =BLOC(condition = "MODELE != None",
+ PROL_ZERO =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON",) ), ),
+ ASSE =FACT(statut='o',max='**',
+ regles=(AU_MOINS_UN('TOUT','GROUP_MA','GROUP_NO','MAILLE','NOEUD',),
+ PRESENT_PRESENT('NOM_CMP_RESU','NOM_CMP', ),),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ CHAM_GD =SIMP(statut='o',typ=(cham_gd_sdaster)),
+ NOM_CMP =SIMP(statut='f',typ='TXM',max='**' ),
+ NOM_CMP_RESU =SIMP(statut='f',typ='TXM',max='**' ),
+ CUMUL =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON",) ),
+ COEF_R =SIMP(statut='f',typ='R',defaut= 1. ),
+ ),
+ ),
+ b_eval =BLOC(condition = "OPERATION == 'EVAL'",
+ CHAM_F =SIMP(statut='o',typ=(cham_gd_sdaster)),
+ CHAM_PARA =SIMP(statut='o',typ=(cham_gd_sdaster),max='**'),
+ ),
+ b_disc =BLOC(condition = "OPERATION == 'DISC'",
+ MODELE =SIMP(statut='f',typ=(modele_sdaster) ),
+ PROL_ZERO =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON",) ),
+ CHAM_GD =SIMP(statut='o',typ=(cham_gd_sdaster)),
+ ),
+ b_extr =BLOC(condition = "OPERATION == 'EXTR'",
+ regles=(UN_PARMI('MAILLAGE','FISSURE','RESULTAT'),),
+ MAILLAGE =SIMP(statut='f',typ=(maillage_sdaster) ),
+ FISSURE =SIMP(statut='f',typ=(fiss_xfem) ),
+ RESULTAT =SIMP(statut='f',typ=(resultat_sdaster) ),
+ b_extr_maillage =BLOC(condition = "MAILLAGE != None",
+ NOM_CHAM =SIMP(statut='o',typ='TXM',into=("GEOMETRIE",)),
+ ),
+ b_extr_fissure =BLOC(condition = "FISSURE != None",
+ NOM_CHAM =SIMP(statut='o',typ='TXM',into=("LTNO","LNNO","GRLTNO","GRLNNO",)),
+ ),
+ b_extr_resultat =BLOC(condition = "RESULTAT != None",
+ regles=(EXCLUS('TYPE_MAXI','NUME_ORDRE','INST','FREQ','NUME_MODE',
+ 'NOEUD_CMP','NOM_CAS','ANGL', ),),
+ SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),
+ fr="Paramètre de sensibilité.",
+ ang="Sensitivity parameter"),
+ NOM_CHAM =SIMP(statut='o',typ='TXM',into=C_NOM_CHAM_INTO()),
+ TYPE_MAXI =SIMP(statut='f',typ='TXM',into=("MAXI","MINI","MAXI_ABS","MINI_ABS","NORM_TRAN",) ),
+ TYPE_RESU =SIMP(statut='f',typ='TXM',defaut="VALE",into=("VALE","INST",) ),
+ TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ LIST_INST =SIMP(statut='f',typ=(listr8_sdaster) ),
+ NUME_ORDRE =SIMP(statut='f',typ='I'),
+ INST =SIMP(statut='f',typ='R'),
+ FREQ =SIMP(statut='f',typ='R'),
+ NUME_MODE =SIMP(statut='f',typ='I'),
+ NOEUD_CMP =SIMP(statut='f',typ='TXM',max='**'),
+ NOM_CAS =SIMP(statut='f',typ='TXM'),
+ ANGL =SIMP(statut='f',typ='R'),
+ PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3),
+ CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",) ),
+ INTERPOL =SIMP(statut='f',typ='TXM',defaut="NON",into=("NON","LIN",) ),
+ ),
+
+ ),
+# FIN DU CATALOGUE : INFO,TITRE ET TYPAGE DU RESULAT :
+#-----------------------------------------------------
+ INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2,) ),
+ TITRE =SIMP(statut='f',typ='TXM',max='**' ),
+) ;
+#& MODIF COMMANDE DATE 09/11/2004 AUTEUR VABHHTS J.PELLET
+# RESPONSABLE MCOURTOI M.COURTOIS
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+CREA_MAILLAGE=OPER(nom="CREA_MAILLAGE",op= 167,sd_prod=maillage_sdaster,
+ reentrant='n',
+ UIinfo={"groupes":("Maillage",)},
+ regles=(EXCLUS('ECLA_PG','CREA_MAILLE'),
+ EXCLUS('ECLA_PG','CREA_GROUP_MA'),
+ EXCLUS('ECLA_PG','DETR_GROUP_MA'),
+ EXCLUS('ECLA_PG','MODI_MAILLE'),
+ EXCLUS('ECLA_PG','LINE_QUAD'),
+ EXCLUS('ECLA_PG','COQU_VOLU'),
+ EXCLUS('LINE_QUAD','MODI_MAILLE'),
+ EXCLUS('LINE_QUAD','CREA_MAILLE'),
+ EXCLUS('LINE_QUAD','CREA_GROUP_MA'),
+ EXCLUS('LINE_QUAD','DETR_GROUP_MA'),
+ EXCLUS('LINE_QUAD','COQU_VOLU'),
+ EXCLUS('COQU_VOLU','MODI_MAILLE'),
+ EXCLUS('COQU_VOLU','CREA_MAILLE'),
+ EXCLUS('COQU_VOLU','CREA_GROUP_MA'),
+ EXCLUS('COQU_VOLU','DETR_GROUP_MA'),
+ ),
+
+ # le MAILLAGE est inutile si ECLA_PG
+ MAILLAGE =SIMP(statut='f',typ=maillage_sdaster ),
+
+ CREA_POI1 =FACT(statut='f',max='**',fr="Création de mailles de type POI1 à partir de noeuds",
+ regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD' ),),
+ NOM_GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ ),
+ CREA_MAILLE =FACT(statut='f',max='**',fr="Duplication de mailles",
+ regles=(AU_MOINS_UN('TOUT','MAILLE','GROUP_MA'),),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ PREF_MAILLE =SIMP(statut='o',typ='TXM' ),
+ PREF_NUME =SIMP(statut='f',typ='I' ),
+ ),
+ CREA_GROUP_MA =FACT(statut='f',max='**',fr="Duplication de mailles et création de groupes de mailles",
+ regles=(AU_MOINS_UN('TOUT','MAILLE','GROUP_MA' ),),
+ NOM =SIMP(statut='o',typ='TXM'),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ PREF_MAILLE =SIMP(statut='o',typ='TXM' ),
+ PREF_NUME =SIMP(statut='f',typ='I' ),
+ ),
+ DETR_GROUP_MA =FACT(statut='f',fr="Destruction de groupes de mailles",
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ NB_MAILLE =SIMP(statut='f',typ='I',defaut= 0,
+ fr="Nombre minimal de mailles que doit contenir le groupe pour etre détruit", ),
+ ),
+ COQU_VOLU =FACT(statut='f',
+ fr="Creation de mailles volumiques à partir de mailles surfaciques",
+ NOM =SIMP(statut='o',typ='TXM'),
+ GROUP_MA =SIMP(statut='o',typ=grma,validators=NoRepeat(),max ='**'),
+ EPAIS =SIMP(statut='o',typ='R' ),
+ PREF_MAILLE =SIMP(statut='f',typ='TXM',defaut="MS" ),
+ PREF_NOEUD =SIMP(statut='f',typ='TXM',defaut="NS" ),
+ PREF_NUME =SIMP(statut='f',typ='I' ,defaut=1 ),
+ PLAN =SIMP(statut='o',typ='TXM',into=("SUP","MOY","INF")),
+ b_MOY =BLOC(condition = "PLAN == 'MOY'",
+ TRANSLATION =SIMP(statut='o',typ='TXM',into=("SUP","INF") ),
+ ),
+ ),
+ MODI_MAILLE =FACT(statut='f',max='**',fr="Modification du type de mailles",
+ regles=(AU_MOINS_UN('TOUT','MAILLE','GROUP_MA' ),),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ MAILLE =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ OPTION =SIMP(statut='o',typ='TXM',into=("TRIA6_7","QUAD8_9","SEG3_4","QUAD_TRIA3"),
+ fr="Choix de la transformation" ),
+ b_NOS =BLOC(condition = "OPTION == 'TRIA6_7' or OPTION == 'QUAD8_9' or OPTION == 'SEG3_4'",
+ PREF_NOEUD =SIMP(statut='f',typ='TXM',defaut="NS"),
+ PREF_NUME =SIMP(statut='f',typ='I',defaut= 1 ),
+ ),
+ b_QTR =BLOC(condition = "OPTION == 'QUAD_TRIA3'",
+ PREF_MAILLE =SIMP(statut='f',typ='TXM',defaut="MS" ),
+ PREF_NUME =SIMP(statut='f',typ='I',defaut= 1 ),
+ ),
+ ),
+ LINE_QUAD =FACT(statut='f',fr="Passage linéaire -> quadratique",
+ regles=(AU_MOINS_UN('TOUT','MAILLE','GROUP_MA' ),),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ MAILLE =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ PREF_NOEUD =SIMP(statut='f',typ='TXM',defaut="NS"),
+ PREF_NUME =SIMP(statut='f',typ='I',defaut= 1 ),
+ ),
+ REPERE =FACT(statut='f',max='**',
+ fr="changement de repère servant à déterminer les caractéristiques d une section de poutre",
+ TABLE =SIMP(statut='o',typ=tabl_cara_geom,
+ fr="Nom de la table contenant les caractéristiques de la section de poutre" ),
+ NOM_ORIG =SIMP(statut='f',typ='TXM',into=("CDG","TORSION"),fr="Origine du nouveau repère" ),
+ NOM_ROTA =SIMP(statut='f',typ='TXM',into=("INERTIE",),fr="Direction du repére" ),
+ b_cdg =BLOC(condition = "NOM_ORIG == 'CDG'",
+ GROUP_MA =SIMP(statut='f',typ=grma,
+ fr="Nom du groupe de mailles dont le centre de gravité sera l origine du nouveau repère"),
+ ),
+ ),
+ ECLA_PG =FACT(statut='f',
+ fr="Eclatement des mailles en petites mailles contenant chacune un seul point de gauss",
+ MODELE =SIMP(statut='o',typ=modele_sdaster ),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ SHRINK =SIMP(statut='f',typ='R',defaut= 0.9, fr="Facteur de réduction" ),
+ TAILLE_MIN =SIMP(statut='f',typ='R',defaut= 0.0, fr="Taille minimale d'un coté" ),
+ NOM_CHAM =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',
+ into=("SIEF_ELGA","VARI_ELGA","SIEF_ELGA_DEPL","FLUX_ELGA_TEMP",) ),
+ ),
+ TITRE =SIMP(statut='f',typ='TXM',max='**'),
+#
+ INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ),
+) ;
+#& MODIF COMMANDE DATE 30/01/2006 AUTEUR D6BHHJP J.P.LEFEBVRE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+def crea_resu_prod(TYPE_RESU,**args):
+ if TYPE_RESU == "EVOL_ELAS" : return evol_elas
+ if TYPE_RESU == "EVOL_NOLI" : return evol_noli
+ if TYPE_RESU == "EVOL_THER" : return evol_ther
+ if TYPE_RESU == "MULT_ELAS" : return mult_elas
+ if TYPE_RESU == "FOURIER_ELAS" : return fourier_elas
+ if TYPE_RESU == "EVOL_VARC" : return evol_varc
+ raise AsException("type de concept resultat non prevu")
+
+CREA_RESU=OPER(nom="CREA_RESU",op=124,sd_prod=crea_resu_prod,reentrant='f',
+ UIinfo={"groupes":("Modélisation",)},
+ fr="Créer ou enrichir une structure de donnees resultat à partir de champs aux noeuds",
+
+ OPERATION =SIMP(statut='o',typ='TXM',into=("AFFE","ECLA_PG","PERM_CHAM","PROL_RTZ",),
+ fr="choix de la fonction a activer",),
+
+ b_affe =BLOC(condition = "OPERATION == 'AFFE'",
+
+ TYPE_RESU =SIMP(statut='o',position='global',typ='TXM',into=("MULT_ELAS","EVOL_ELAS","EVOL_NOLI","FOURIER_ELAS",
+ "EVOL_THER","EVOL_VARC",) ),
+ NOM_CHAM =SIMP(statut='o',typ='TXM',into=C_NOM_CHAM_INTO()),
+
+ AFFE =FACT(statut='o',max='**',
+ CHAM_GD =SIMP(statut='o',typ=(cham_gd_sdaster)),
+ MODELE =SIMP(statut='f',typ=modele_sdaster),
+ CHAM_MATER =SIMP(statut='f',typ=cham_mater),
+ CARA_ELEM =SIMP(statut='f',typ=cara_elem),
+
+ b_mult_elas =BLOC(condition = "TYPE_RESU == 'MULT_ELAS' ",
+ NOM_CAS =SIMP(statut='f',typ='TXM' ),
+ ),
+ b_evol =BLOC(condition = "((TYPE_RESU=='EVOL_ELAS') or (TYPE_RESU=='EVOL_NOLI') or (TYPE_RESU=='EVOL_THER')\
+ or (TYPE_RESU=='EVOL_VARC') )",
+ regles=(UN_PARMI('INST','LIST_INST'),),
+ INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
+ LIST_INST =SIMP(statut='f',typ=listr8_sdaster),
+ NUME_INIT =SIMP(statut='f',typ='I', val_min=1),
+ NUME_FIN =SIMP(statut='f',typ='I', val_min=1),
+ PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3 ),
+ CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
+ ),
+ b_fourier =BLOC(condition = "TYPE_RESU == 'FOURIER_ELAS' ",
+ NUME_MODE =SIMP(statut='f',typ='I'),
+ TYPE_MODE =SIMP(statut='f',typ='TXM',defaut="SYME",into=("SYME","ANTI","TOUS") ),
+ ),
+ ),
+ ),
+
+ b_ecla_pg =BLOC(condition = "OPERATION == 'ECLA_PG'",
+
+ TYPE_RESU =SIMP(statut='o',typ='TXM',into=("EVOL_ELAS","EVOL_NOLI","EVOL_THER"), ),
+
+ ECLA_PG =FACT(statut='o',
+ regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','LIST_INST','LIST_ORDRE'),),
+ NOM_CHAM =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',
+ into=("SIEF_ELGA","VARI_ELGA","SIEF_ELGA_DEPL","FLUX_ELGA_TEMP",) ),
+ MODELE_INIT =SIMP(statut='o',typ=modele_sdaster),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ RESU_INIT =SIMP(statut='o',typ=resultat_sdaster),
+ MAILLAGE =SIMP(statut='o',typ=maillage_sdaster),
+ TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
+ LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster),
+ INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
+ LIST_INST =SIMP(statut='f',typ=listr8_sdaster),
+ PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3),
+ CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",) ),
+ ),
+ ),
+
+ b_perm_cham =BLOC(condition = "OPERATION == 'PERM_CHAM'",
+
+ TYPE_RESU =SIMP(statut='o',typ='TXM',into=("EVOL_NOLI",) ),
+ NOM_CHAM =SIMP(statut='f',typ='TXM',into=("DEPL","SIEF_ELGA","VARI_ELGA",),validators=NoRepeat(),max='**' ),
+ RESU_INIT =SIMP(statut='o',typ=evol_noli),
+ INST_INIT =SIMP(statut='f',typ='R'),
+ PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3),
+ CRITERE =SIMP(statut='f',typ='TXM',into=('RELATIF','ABSOLU'),defaut='RELATIF'),
+ MAILLAGE_INIT =SIMP(statut='o',typ=maillage_sdaster,),
+ RESU_FINAL =SIMP(statut='o',typ=evol_noli,),
+ MAILLAGE_FINAL =SIMP(statut='o',typ=maillage_sdaster,),
+ PERM_CHAM =FACT(statut='o',max='**',
+ GROUP_MA_FINAL =SIMP(statut='o',typ=grma),
+ GROUP_MA_INIT =SIMP(statut='o',typ=grma),
+ TRAN =SIMP(statut='o',typ='R',max='**'),
+ PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3),
+ ),
+ ),
+
+ b_prol_rtz =BLOC(condition = "OPERATION == 'PROL_RTZ'",
+
+ TYPE_RESU =SIMP(statut='o',typ='TXM',into=("EVOL_THER",) ),
+
+ PROL_RTZ =FACT(statut='o',
+ regles=(EXCLUS('INST','LIST_INST'),),
+ MAILLAGE_FINAL =SIMP(statut='o',typ=maillage_sdaster,),
+ TABLE =SIMP(statut='o',typ=table_sdaster,fr="Table issue de post_releve_t"),
+ INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
+ LIST_INST =SIMP(statut='f',typ=listr8_sdaster),
+ b_acce_reel =BLOC(condition="(INST != None)or(LIST_INST != None)",
+ PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-6),
+ CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
+ ),
+ PROL_DROITE =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU",),),
+ PROL_GAUCHE =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU",),),
+ REPERE =SIMP(statut='o',typ='TXM',into=("CYLINDRIQUE",),),
+ ORIGINE =SIMP(statut='o',typ='R',min=3,max=3),
+ AXE_Z =SIMP(statut='o',typ='R',min=3,max=3),
+ ),
+ ),
+
+) ;
+#& MODIF COMMANDE DATE 20/09/2004 AUTEUR DURAND C.DURAND
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2003 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+def crea_table_prod(TYPE_TABLE,**args):
+ if TYPE_TABLE == "TABLE" : return table_sdaster
+ if TYPE_TABLE == "TABL_CARA_GEOM" : return tabl_cara_geom
+ if TYPE_TABLE == "TABL_POST_RELE" : return tabl_post_rele
+ if TYPE_TABLE == "TABL_POST_USUR" : return tabl_post_usur
+ if TYPE_TABLE == "TABL_POST_ALEA" : return tabl_post_alea
+ if TYPE_TABLE == "TABL_INTE_SPEC" : return tabl_intsp
+ raise AsException("type de concept resultat non prevu")
+
+CREA_TABLE=OPER(nom="CREA_TABLE",op= 36,sd_prod=crea_table_prod,
+ fr="Creation d'une table a partir d'une fonction ou de deux listes",
+ reentrant='n',UIinfo={"groupes":("Table",)},
+
+ regles=(EXCLUS('FONCTION','LISTE')),
+
+ TYPE_TABLE=SIMP(statut='f',typ='TXM',defaut="TABLE",
+ into=("TABLE",
+ "TABL_CARA_GEOM",
+ "TABL_POST_RELE",
+ "TABL_POST_USUR",
+ "TABL_POST_ALEA",
+ "TABL_INTE_SPEC" ) ),
+ LISTE=FACT(statut='f',min=2,max='**',
+ fr="Creation d'une table a partir de listes",
+ regles=(UN_PARMI('LISTE_I','LISTE_R','LISTE_K')),
+ PARA=SIMP(statut='o',typ='TXM'),
+ TYPE_K=SIMP(statut='f',typ='TXM',defaut='K8',
+ into=('K8','K16','K24')),
+ NUME_LIGN=SIMP(statut='f',typ='I',max='**'),
+ LISTE_I=SIMP(statut='f',typ='I',max='**'),
+ LISTE_R=SIMP(statut='f',typ='R',max='**'),
+ LISTE_K=SIMP(statut='f',typ='TXM', max='**')),
+ FONCTION=FACT(statut='f',min=1,max=1,
+ fr="Creation d'une table a partir d'une fonction",
+ FONCTION=SIMP(statut='o',typ=fonction_sdaster),
+ PARA=SIMP(statut='f',typ='TXM',min=2,max=2)),
+ TITRE=SIMP(statut='f',typ='TXM',max='**'),
+) ;
+
+
+
+#& MODIF COMMANDE DATE 30/01/2006 AUTEUR D6BHHJP J.P.LEFEBVRE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+DEBUT=MACRO(nom="DEBUT",op=ops.build_debut ,repetable='n',
+ UIinfo={"groupes":("Gestion du travail",)},
+ fr="Ouverture d une étude. Allocation des ressources mémoire et disque",
+ sd_prod=ops.DEBUT,
+
+ PAR_LOT =SIMP(fr="mode de traitement des commandes",statut='f',typ='TXM',
+ into=("OUI","NON"),defaut="OUI"),
+ BASE =FACT(fr="définition des paramètres associés aux bases JEVEUX",
+ statut='f',min=1,max=3,
+ FICHIER =SIMP(fr="nom de la base",statut='o',typ='TXM',
+ into=('GLOBALE','VOLATILE','LOCALE'),),
+ TITRE =SIMP(statut='f',typ='TXM'),
+ CAS =SIMP(statut='f',typ='TXM'),
+ NMAX_ENRE =SIMP(fr="nombre maximum d enregistrements",statut='f',typ='I'),
+ LONG_ENRE =SIMP(fr="longueur des enregistrements",statut='f',typ='I'),
+ LONG_REPE =SIMP(fr="longueur du répertoire",statut='f',typ='I'),
+ ),
+ IMPRESSION =FACT(statut='f',min=1,max=3,
+ FICHIER =SIMP(statut='o',typ='TXM'),
+ UNITE =SIMP(statut='o',typ='I'),
+ ),
+ CATALOGUE =FACT(statut='f',min=1,max=10,
+ FICHIER =SIMP(statut='o',typ='TXM'),
+ TITRE =SIMP(statut='f',typ='TXM'),
+ UNITE =SIMP(statut='f',typ='I'),
+ ),
+ CODE =FACT(fr="définition d un nom pour l'ensemble d'une étude",
+ statut='f',min=1,max=1,
+ NOM =SIMP(statut='o',typ='TXM'),
+ NIV_PUB_WEB =SIMP(statut='o',typ='TXM',into=('INTERNET','INTRANET')),
+ VISU_EFICAS =SIMP(statut='f',typ='TXM',into=('OUI','NON'),defaut='OUI'),
+ UNITE =SIMP(statut='f',typ='I',defaut=15),
+ ),
+ DEBUG =FACT(fr="option de déboggage reservée aux développeurs",
+ statut='f',min=1,max=1,
+ JXVERI =SIMP(fr="vérifie l intégrité de la segmentation mémoire",
+ statut='f',typ='TXM',into=('OUI','NON'),defaut='NON'),
+ JEVEUX =SIMP(fr="force les déchargement sur disque",
+ statut='f',typ='TXM',into=('OUI','NON'),defaut='NON'),
+ ENVIMA =SIMP(fr="imprime les valeurs définies dans ENVIMA",
+ statut='f',typ='TXM',into=('TEST',)),
+ ),
+ MEMOIRE =FACT(fr="mode de gestion mémoire utilisé",statut='f',min=1,max=1,
+ GESTION =SIMP(statut='f',typ='TXM',into=('COMPACTE','RAPIDE'),defaut='RAPIDE'),
+ TYPE_ALLOCATION =SIMP(statut='f',typ='I',into=(1,2,3,4),defaut=1),
+ TAILLE =SIMP(statut='f',typ='I'),
+ TAILLE_BLOC =SIMP(statut='f',typ='R',defaut=800.),
+ PARTITION =SIMP(statut='f',typ='R'),
+ ),
+ );
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+DEFI_BASE_MODALE=OPER(nom="DEFI_BASE_MODALE",op= 99,sd_prod=base_modale,
+ reentrant='f',
+ UIinfo={"groupes":("Matrices/vecteurs",)},
+ regles=(UN_PARMI('CLASSIQUE','RITZ','DIAG_MASS'),),
+ CLASSIQUE =FACT(statut='f',
+ INTERF_DYNA =SIMP(statut='o',typ=interf_dyna_clas ),
+ MODE_MECA =SIMP(statut='o',typ=mode_meca,max='**' ),
+ NMAX_MODE =SIMP(statut='f',typ='I',defaut= 10 ),
+ ),
+ RITZ =FACT(statut='f',max='**',
+ regles=(UN_PARMI('MODE_STAT','MODE_MECA','MULT_ELAS','BASE_MODALE'),),
+ MODE_MECA =SIMP(statut='f',typ=mode_meca,max='**' ),
+ NMAX_MODE =SIMP(statut='f',typ='I',defaut= 999 ),
+ MODE_STAT =SIMP(statut='f',typ=(mode_stat_depl,mode_stat_acce,mode_stat_forc,) ),
+ MULT_ELAS =SIMP(statut='f',typ=mult_elas ),
+ BASE_MODALE =SIMP(statut='f',typ=base_modale ),
+ ),
+ DIAG_MASS =FACT(statut='f',max='**',
+ MODE_MECA =SIMP(statut='o',typ=mode_meca,max='**' ),
+ MODE_STAT =SIMP(statut='o',typ=(mode_stat_depl,mode_stat_acce,mode_stat_forc,) ),
+ ),
+# le bloc conditionnel remplace-t-il PRESENT_PRESENT('RITZ','NUME_REF'),
+# PRESENT_ABSENT('INTERF_DYNA','CLASSIQUE'),
+ b_ritz =BLOC(condition = "RITZ != None",
+ INTERF_DYNA =SIMP(statut='f',typ=interf_dyna_clas ),
+ NUME_REF =SIMP(statut='o',typ=nume_ddl_sdaster ),
+ ),
+ TITRE =SIMP(statut='f',typ='TXM',max='**'),
+ INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
+) ;
+#& MODIF COMMANDE DATE 28/02/2005 AUTEUR DURAND C.DURAND
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2003 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+
+from Macro.defi_cable_bp_ops import defi_cable_bp_ops
+
+# ===========================================================================
+# CATALOGUE DE LA MACRO "DEFI_CABLE_BP"
+# -----------------------------------------
+#
+# USAGE :
+# Entrée :
+# - MAILLAGE
+# - MODELE
+# - CABLE
+# - CHAM_MATER
+# - CARA_ELEM
+# - GROUP_MA_BETON
+# - DEFI_CABLE
+# - TENSION_INIT
+# - RECUL_ANCRAGE
+# - RELAXATION
+# - CONE
+# RAYON
+# LONGUEUR
+# PRESENT OUI ou NON deux fois
+# - TITRE
+# - INFO 1 / 2
+#
+# ===========================================================================
+
+
+def defi_cable_bp_prod(self,MAILLAGE,**args ):
+ if MAILLAGE!= None : self.type_sdprod(MAILLAGE,maillage_sdaster)
+ return cabl_precont
+ raise AsException("type de concept resultat non prevu")
+
+DEFI_CABLE_BP=MACRO(nom="DEFI_CABLE_BP",op=defi_cable_bp_ops,sd_prod=defi_cable_bp_prod,
+ fr=" ",
+ reentrant='n',
+ regles=(ENSEMBLE('MAILLAGE','CONE'),),
+ MAILLAGE =SIMP(statut='f',typ=(maillage_sdaster,CO)),
+ MODELE =SIMP(statut='o',typ=modele_sdaster ),
+ CHAM_MATER =SIMP(statut='o',typ=cham_mater ),
+ CARA_ELEM =SIMP(statut='o',typ=cara_elem ),
+ GROUP_MA_BETON =SIMP(statut='o',typ=grma,max='**'),
+ DEFI_CABLE =FACT(statut='o',max='**',
+ regles=(UN_PARMI('MAILLE','GROUP_MA'),
+ UN_PARMI('NOEUD_ANCRAGE','GROUP_NO_ANCRAGE'),),
+ MAILLE =SIMP(statut='f',typ=ma,min=2,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma),
+ NOEUD_ANCRAGE =SIMP(statut='f',typ=no ,validators=NoRepeat(),max=2),
+ GROUP_NO_ANCRAGE=SIMP(statut='f',typ=grno,validators=NoRepeat(),max=2),
+ ),
+ TYPE_ANCRAGE =SIMP(statut='o',typ='TXM',min=2,max=2,into=("ACTIF","PASSIF") ),
+ TENSION_INIT =SIMP(statut='o',typ='R',val_min=0.E+0 ),
+ RECUL_ANCRAGE =SIMP(statut='o',typ='R',val_min=0.E+0 ),
+ RELAXATION =FACT(statut='f',min=0,
+ R_J =SIMP(statut='o',typ='R',val_min=0.E+0 ),
+ ),
+ CONE =FACT(statut='f',min=0,
+ RAYON =SIMP(statut='o',typ='R',val_min=0.E+0 ),
+ LONGUEUR =SIMP(statut='o',typ='R',val_min=0.E+0 ),
+ PRESENT =SIMP(statut='o',typ='TXM',min=2,max=2,into=("OUI","NON") ),
+ ),
+ TITRE =SIMP(statut='f',typ='TXM',max='**' ),
+ INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
+) ;
+#& MODIF COMMANDE DATE 24/08/2004 AUTEUR CIBHHPD S.VANDENBERGHE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2003 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+
+DEFI_CABLE_OP=OPER(nom="DEFI_CABLE_OP",op= 180,sd_prod=cabl_precont,
+ fr=" ",
+ reentrant='n',
+ UIinfo={"groupes":("Modélisation",)},
+ MODELE =SIMP(statut='o',typ=modele_sdaster ),
+ CHAM_MATER =SIMP(statut='o',typ=cham_mater ),
+ CARA_ELEM =SIMP(statut='o',typ=cara_elem ),
+ GROUP_MA_BETON =SIMP(statut='o',typ=grma,max='**'),
+ DEFI_CABLE =FACT(statut='o',max='**',
+ regles=(UN_PARMI('MAILLE','GROUP_MA'),
+ UN_PARMI('NOEUD_ANCRAGE','GROUP_NO_ANCRAGE'),),
+ MAILLE =SIMP(statut='f',typ=ma,min=2,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma),
+ NOEUD_ANCRAGE =SIMP(statut='f',typ=no ,validators=NoRepeat(),max=2),
+ GROUP_NO_ANCRAGE=SIMP(statut='f',typ=grno,validators=NoRepeat(),max=2),
+ GROUP_NO_FUT =SIMP(statut='f',typ=grno,validators=NoRepeat(),max=2),
+ ),
+ TYPE_ANCRAGE =SIMP(statut='o',typ='TXM',min=2,max=2,into=("ACTIF","PASSIF") ),
+ TENSION_INIT =SIMP(statut='o',typ='R',val_min=0.E+0 ),
+ RECUL_ANCRAGE =SIMP(statut='o',typ='R',val_min=0.E+0 ),
+ RELAXATION =FACT(statut='f',min=0,
+ R_J =SIMP(statut='o',typ='R',val_min=0.E+0 ),
+ ),
+ TITRE =SIMP(statut='f',typ='TXM',max='**' ),
+ INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
+ CONE =FACT(statut='f',min=0,
+ RAYON =SIMP(statut='o',typ='R',val_min=0.E+0 ),
+ LONGUEUR =SIMP(statut='o',typ='R',val_min=0.E+0, defaut=0.E+0 ),
+ PRESENT =SIMP(statut='o',typ='TXM',min=2,max=2,into=("OUI","NON") ),
+ ),
+) ;
+#& MODIF COMMANDE DATE 27/09/2004 AUTEUR JMBHH01 J.M.PROIX
+# RESPONSABLE JMBHH01 J.M.PROIX
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+DEFI_COMPOR=OPER(nom="DEFI_COMPOR",op=59,sd_prod=compor_sdaster,
+ fr="Définition du comportement monocristallin",
+ reentrant='n',
+ UIinfo={"groupes":("Modélisation",)},
+ regles=(EXCLUS('MONOCRISTAL','POLYCRISTAL'),),
+
+ MONOCRISTAL =FACT(statut='f', max='**',
+ MATER =SIMP(statut='o', typ=mater_sdaster, max=1),
+ ECOULEMENT =SIMP(statut='o', typ='TXM', max=1,
+ fr="Donner le nom du mot-clé facteur de DEFI_MATERIAU précisant le type d'écoulement viscoplastique"),
+ ECRO_ISOT =SIMP(statut='o', typ='TXM', max=1,
+ fr="Donner le nom du mot-clé facteur de DEFI_MATERIAU précisant le type d'écrouissage isotrope"),
+ ECRO_CINE =SIMP(statut='o', typ='TXM', max=1,
+ fr="Donner le nom du mot-clé facteur de DEFI_MATERIAU précisant le type d'écrouissage cinématique"),
+ ELAS =SIMP(statut='f', typ='TXM', max=1,
+ fr="Donner le nom du mot-clé facteur de DEFI_MATERIAU précisant le comportement élastique (un et un seul)"),
+ FAMI_SYST_GLIS =SIMP(statut='o',typ='TXM', max=1,
+ into=('BASAL', 'PRISMATIQUE', 'OCTAEDRIQUE', 'PYRAMIDAL1',
+ 'PYRAMIDAL2', 'CUBIQUE1', 'CUBIQUE2', 'MACLAGE', 'JOINT_GRAIN', 'RL', 'UNIAXIAL'),),
+ ),
+
+
+ POLYCRISTAL =FACT(statut='f', max='**',
+ MONOCRISTAL =SIMP(statut='o', typ=compor_sdaster, max=1),
+ FRAC_VOL =SIMP(statut='o', typ='R', max=1,fr="fraction volumique de la phase correspondant au monocristal"),
+ ANGL_REP =SIMP(statut='o',typ='R',max=3,fr="orientation du monocristal : 3 angles d'Euler en degrés"),
+ ),
+
+
+ b_poly =BLOC( condition = "POLYCRISTAL!='None'",
+ LOCALISATION =SIMP(statut='f', typ='TXM', max=1, into=('BZ', 'BETA', 'RL',),
+ fr="Donner le nom de la règle de localisation"),
+
+ b_beta =BLOC( condition = "LOCALISATION=='BETA'",
+ DL =SIMP(statut='o',typ='R',max=1),
+ DA =SIMP(statut='o',typ='R',max=1),
+ ),
+ ),
+
+ );
+
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+DEFI_CONSTANTE=OPER(nom="DEFI_CONSTANTE",op= 2,sd_prod=fonction_sdaster,
+ fr="Définition d une fonction constante",
+ reentrant='n',
+ UIinfo={"groupes":("Fonction",)},
+ NOM_RESU =SIMP(statut='f',typ='TXM',defaut="TOUTRESU"),
+ VALE =SIMP(statut='o',typ='R',),
+ TITRE =SIMP(statut='f',typ='TXM',max='**'),
+) ;
+#& MODIF COMMANDE DATE 23/08/2004 AUTEUR CIBHHLV L.VIVAN
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+DEFI_COQU_MULT=OPER(nom="DEFI_COQU_MULT",op=56,sd_prod=mater_sdaster,reentrant='n',
+ UIinfo={"groupes":("Modélisation",)},
+ fr="Définition d une coque composite couche par couche",
+ COUCHE =FACT(statut='o',max='**',
+ EPAIS =SIMP(statut='o',typ='R',val_min=0.E+0 ),
+ MATER =SIMP(statut='o',typ=(mater_sdaster) ),
+ ORIENTATION =SIMP(statut='f',typ='R',defaut= 0.E+0,
+ val_min=-90.E+0,val_max=90.E+0 ),
+ ),
+ IMPRESSION =FACT(statut='f',
+ UNITE =SIMP(statut='f',typ='I',defaut=8),
+ ),
+) ;
+#& MODIF COMMANDE DATE 11/05/2005 AUTEUR MCOURTOI M.COURTOIS
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2003 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE D6BHHJP J.P.LEFEBVRE
+def DEFIC_prod(self,ACTION,UNITE,**args):
+ if ACTION == "ASSOCIER" or ACTION == "RESERVER":
+ if UNITE != None :
+ return
+ else :
+ return entier
+ elif ACTION == "LIBERER" :
+ return
+ else :
+ raise AsException("ACTION non prevue : %s" % ACTION)
+
+DEFI_FICHIER=MACRO(nom="DEFI_FICHIER",op=ops.build_DEFI_FICHIER,sd_prod=DEFIC_prod,reentrant='n',
+ UIinfo={"groupes":("Gestion du travail",)},
+ fr="Gestion d une unité logique : ajout, suppression",
+
+ ACTION =SIMP(statut='f',typ='TXM',into=("ASSOCIER","LIBERER","RESERVER"),defaut="ASSOCIER"),
+
+ b_associer =BLOC(condition = "ACTION == 'ASSOCIER'",
+ fr="Paramètres pour l'ouverture du fichier",
+ regles=(AU_MOINS_UN('FICHIER','UNITE'),),
+ UNITE =SIMP(statut='f',typ='I' ,val_min=1),
+ FICHIER =SIMP(statut='f',typ='TXM',validators=LongStr(1,255)),
+ TYPE =SIMP(statut='f',typ='TXM',into=("ASCII","BINARY","LIBRE"),defaut="ASCII"),
+
+ b_type_ascii =BLOC(condition = "TYPE == 'ASCII'",fr="Paramètres pour le type ASCII",
+ ACCES =SIMP(statut='f',typ='TXM',into=("NEW","APPEND","OLD"),defaut="NEW"),
+ ),
+ b_type_autre =BLOC(condition = "TYPE != 'ASCII'",fr="Paramètres pour les types BINARY et LIBRE",
+ ACCES =SIMP(statut='f',typ='TXM',into=("NEW","OLD"),defaut="NEW"),
+ ),
+ ),
+
+ b_reserver =BLOC(condition = "ACTION == 'RESERVER'",
+ fr="Paramètres pour la réservation de l'unité du fichier",
+ regles=(AU_MOINS_UN('FICHIER','UNITE'),),
+ UNITE =SIMP(statut='f',typ='I' ,val_min=1),
+ FICHIER =SIMP(statut='f',typ='TXM',validators=LongStr(1,255)),
+ TYPE =SIMP(statut='f',typ='TXM',into=("ASCII",),defaut="ASCII"),
+ ACCES =SIMP(statut='f',typ='TXM',into=("APPEND",),defaut="APPEND"),
+ ),
+
+ b_liberer =BLOC(condition = "ACTION == 'LIBERER'",
+ fr="Paramètres pour la fermeture du fichier",
+ regles=(UN_PARMI('FICHIER','UNITE'),),
+ UNITE =SIMP(statut='f',typ='I' ,val_min=1),
+ FICHIER =SIMP(statut='f',typ='TXM',validators=LongStr(1,255)),
+ ),
+
+ INFO =SIMP(statut='f',typ='I',into=(1,2) ),
+ )
+#& MODIF COMMANDE DATE 30/06/2004 AUTEUR MCOURTOI M.COURTOIS
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+
+DEFI_FISS_XFEM=OPER(nom="DEFI_FISS_XFEM",op= 41,sd_prod=fiss_xfem,reentrant='f',
+ UIinfo={"groupes":("Modélisation",)},
+ fr="Définition des caratéristiques d''une fissure avec XFEM",
+
+ MODELE =SIMP(statut='o',typ=modele_sdaster),
+ DEFI_FISS =FACT(statut='o',max=01,
+ regles =(UN_PARMI('GROUP_MA_FISS','FONC_LT'),
+ ENSEMBLE('FONC_LT','FONC_LN'),
+ ENSEMBLE('GROUP_MA_FISS','GROUP_MA_FOND')),
+ FONC_LT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ FONC_LN =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ GROUP_MA_FISS =SIMP(statut='f',typ=grma,max=01),
+ GROUP_MA_FOND =SIMP(statut='f',typ=grma),
+ ),
+ GROUP_MA_ENRI =SIMP(statut='o',typ=grma,max=01),
+ ORIE_FOND =FACT(statut='o',max=01,
+ PFON_INI =SIMP(statut='o',typ='R',max=03),
+ VECT_ORIE =SIMP(statut='o',typ='R',max=03),
+ PT_ORIGIN =SIMP(statut='o',typ='R',max=03),
+ ),
+ INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2,3,) ),
+
+) ;
+#& MODIF COMMANDE DATE 30/06/2004 AUTEUR MCOURTOI M.COURTOIS
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+DEFI_FLUI_STRU=OPER(nom="DEFI_FLUI_STRU",op= 143,sd_prod=type_flui_stru,
+ reentrant='n',
+ UIinfo={"groupes":("Maillage",)},
+ regles=( UN_PARMI('FAISCEAU_TRANS','GRAPPE','FAISCEAU_AXIAL','COQUE_COAX',),),
+ FAISCEAU_TRANS =FACT(statut='f',max='**',
+ COUPLAGE =SIMP(statut='f',typ='TXM',into=("OUI","NON") ),
+ CARA_ELEM =SIMP(statut='f',typ=cara_elem ),
+ PROF_VITE_FLUI =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ PROF_RHO_F_INT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ PROF_RHO_F_EXT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ NOM_CMP =SIMP(statut='f',typ='TXM',into=("DX","DY","DZ") ),
+ COEF_MASS_AJOU =SIMP(statut='f',typ='R' ),
+ TYPE_PAS =SIMP(statut='f',typ='TXM',into=("CARRE_LIGN","TRIA_LIGN") ),
+ TYPE_RESEAU =SIMP(statut='f',typ='I' ),
+ UNITE_CD =SIMP(statut='f',typ='I',defaut=70),
+ UNITE_CK =SIMP(statut='f',typ='I',defaut=71),
+ PAS =SIMP(statut='f',typ='R' ),
+ ),
+ GRAPPE =FACT(statut='f',
+ regles=(ENSEMBLE('GRAPPE_2','NOEUD','CARA_ELEM','MODELE','RHO_FLUI',),
+ PRESENT_PRESENT('COEF_MASS_AJOU','GRAPPE_2', ),),
+# peut on créer un bloc a partir de la valeur de couplage
+ COUPLAGE =SIMP(statut='o',typ='TXM',into=("OUI","NON") ),
+ GRAPPE_2 =SIMP(statut='f',typ='TXM',
+ into=("ASC_CEN","ASC_EXC","DES_CEN","DES_EXC") ),
+ NOEUD =SIMP(statut='f',typ=no),
+ CARA_ELEM =SIMP(statut='f',typ=cara_elem ),
+ MODELE =SIMP(statut='f',typ=modele_sdaster ),
+ COEF_MASS_AJOU =SIMP(statut='f',typ='R' ),
+ RHO_FLUI =SIMP(statut='f',typ='R' ),
+ UNITE_CA =SIMP(statut='f',typ='I',defaut=70),
+ UNITE_KA =SIMP(statut='f',typ='I',defaut=71),
+ ),
+ FAISCEAU_AXIAL =FACT(statut='f',max='**',
+ regles=(UN_PARMI('GROUP_MA','TRI_GROUP_MA'),
+ UN_PARMI('CARA_ELEM','RAYON_TUBE'),
+ ENSEMBLE('RAYON_TUBE','COOR_TUBE'),
+ PRESENT_ABSENT('RAYON_TUBE','TRI_GROUP_MA'),
+ ENSEMBLE('CARA_PAROI','VALE_PAROI'),
+ ENSEMBLE('LONG_TYPG','LARG_TYPG','EPAI_TYPG','RUGO_TYPG','COEF_TRAI_TYPG','COEF_DPOR_TYPG',
+ 'COOR_GRILLE','TYPE_GRILLE', ),),
+# on doit pouvoir mettre des blocs conditionnels mais pas assez d infos pour le faire
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ TRI_GROUP_MA =SIMP(statut='f',typ='TXM' ),
+ VECT_X =SIMP(statut='f',typ='R',max=3),
+ PROF_RHO_FLUI =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ PROF_VISC_CINE =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ CARA_ELEM =SIMP(statut='f',typ=cara_elem ),
+ RAYON_TUBE =SIMP(statut='f',typ='R' ),
+ COOR_TUBE =SIMP(statut='f',typ='R',max='**'),
+ PESANTEUR =SIMP(statut='f',typ='R',min=4,max=4),
+ RUGO_TUBE =SIMP(statut='f',typ='R' ),
+ CARA_PAROI =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=5,
+ into=("YC","ZC","R","HY","HZ") ),
+ VALE_PAROI =SIMP(statut='f',typ='R',max=5),
+ ANGL_VRIL =SIMP(statut='f',typ='R' ),
+ LONG_TYPG =SIMP(statut='f',typ='R',max='**',val_min=0.E+0),
+ LARG_TYPG =SIMP(statut='f',typ='R',max='**',val_min=0.E+0),
+ EPAI_TYPG =SIMP(statut='f',typ='R',max='**',val_min=0.E+0),
+ RUGO_TYPG =SIMP(statut='f',typ='R',max='**',val_min=0.E+0),
+ COEF_TRAI_TYPG =SIMP(statut='f',typ='R',max='**',val_min=0.E+0),
+ COEF_DPOR_TYPG =SIMP(statut='f',typ='R',max='**'),
+ COOR_GRILLE =SIMP(statut='f',typ='R',max='**'),
+ TYPE_GRILLE =SIMP(statut='f',typ='I',max='**'),
+ ),
+ COQUE_COAX =FACT(statut='f',
+ MASS_AJOU =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+ GROUP_MA_INT =SIMP(statut='o',typ=grma),
+ GROUP_MA_EXT =SIMP(statut='o',typ=grma),
+ VECT_X =SIMP(statut='o',typ='R',max='**'),
+ CARA_ELEM =SIMP(statut='o',typ=cara_elem ),
+ MATER_INT =SIMP(statut='o',typ=mater_sdaster ),
+ MATER_EXT =SIMP(statut='o',typ=mater_sdaster ),
+ RHO_FLUI =SIMP(statut='o',typ='R' ),
+ VISC_CINE =SIMP(statut='o',typ='R' ),
+ RUGOSITE =SIMP(statut='o',typ='R' ),
+ PDC_MOY_1 =SIMP(statut='o',typ='R' ),
+ PDC_DYN_1 =SIMP(statut='o',typ='R' ),
+ PDC_MOY_2 =SIMP(statut='o',typ='R' ),
+ PDC_DYN_2 =SIMP(statut='o',typ='R' ),
+ ),
+ INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+DEFI_FONC_ELEC=OPER(nom="DEFI_FONC_ELEC",op=64,sd_prod=fonction_sdaster,reentrant='n',
+ UIinfo={"groupes":("Outils métier",)},
+ fr="Définition d une fonction du temps pour calculer des forces de LAPLACE",
+ regles=(UN_PARMI('COUR_PRIN','COUR'),
+ EXCLUS('COUR','COUR_SECO'), ),
+ FREQ =SIMP(statut='f',typ='R',defaut= 50.),
+ SIGNAL =SIMP(statut='f',typ='TXM',defaut="COMPLET",into=("COMPLET","CONTINU") ),
+ COUR =FACT(statut='f',max='**',
+ fr="Définition du courant de court-circuit",
+ regles=(UN_PARMI('PHI_CC_1','INTC_CC_1'),
+ UN_PARMI('PHI_CC_2','INTC_CC_2'),),
+ INTE_CC_1 =SIMP(statut='o',typ='R'),
+ TAU_CC_1 =SIMP(statut='o',typ='R'),
+ PHI_CC_1 =SIMP(statut='f',typ='R'),
+ INTC_CC_1 =SIMP(statut='f',typ='R'),
+ INTE_CC_2 =SIMP(statut='o',typ='R'),
+ TAU_CC_2 =SIMP(statut='o',typ='R'),
+ PHI_CC_2 =SIMP(statut='f',typ='R'),
+ INTC_CC_2 =SIMP(statut='f',typ='R'),
+ INST_CC_INIT =SIMP(statut='o',typ='R'),
+ INST_CC_FIN =SIMP(statut='o',typ='R'),
+ ),
+ COUR_PRIN =FACT(statut='f',
+ fr="Définition du courant de court-circuit avec réenclenchement",
+ regles=(UN_PARMI('PHI_CC_1','INTC_CC_1'),),
+ INTE_CC_1 =SIMP(statut='o',typ='R'),
+ TAU_CC_1 =SIMP(statut='o',typ='R'),
+ PHI_CC_1 =SIMP(statut='f',typ='R'),
+ INTC_CC_1 =SIMP(statut='f',typ='R'),
+ INTE_RENC_1 =SIMP(statut='f',typ='R'),
+ TAU_RENC_1 =SIMP(statut='f',typ='R'),
+ PHI_RENC_1 =SIMP(statut='f',typ='R'),
+ INST_CC_INIT =SIMP(statut='o',typ='R'),
+ INST_CC_FIN =SIMP(statut='o',typ='R'),
+ INST_RENC_INIT =SIMP(statut='f',typ='R',defaut= 0.0E+0),
+ INST_RENC_FIN =SIMP(statut='f',typ='R',defaut= 0.0E+0),
+ ),
+ COUR_SECO =FACT(statut='f',max='**',
+ fr="Définition du courant de court-circuit avec un intervalle de temps différent de celui de COUR_PRIN",
+ regles=(UN_PARMI('PHI_CC_2','INTC_CC_2'),),
+ INTE_CC_2 =SIMP(statut='o',typ='R'),
+ TAU_CC_2 =SIMP(statut='o',typ='R'),
+ PHI_CC_2 =SIMP(statut='f',typ='R'),
+ INTC_CC_2 =SIMP(statut='f',typ='R'),
+ INTE_RENC_2 =SIMP(statut='f',typ='R'),
+ TAU_RENC_2 =SIMP(statut='f',typ='R'),
+ PHI_RENC_2 =SIMP(statut='f',typ='R'),
+ DIST =SIMP(statut='f',typ='R',defaut=1.0E+0),
+ ),
+ INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+DEFI_FONC_FLUI=OPER(nom="DEFI_FONC_FLUI",op= 142,sd_prod=fonction_sdaster,
+ reentrant='n',
+ UIinfo={"groupes":("Fonction",)},
+ MAILLAGE =SIMP(statut='o',typ=(maillage_sdaster) ),
+ NOEUD_INIT =SIMP(statut='o',typ=no),
+ NOEUD_FIN =SIMP(statut='o',typ=no),
+ VITE =FACT(statut='o',
+ VALE =SIMP(statut='f',typ='R',defaut= 1. ),
+ PROFIL =SIMP(statut='o',typ='TXM',into=("UNIFORME","LEONARD") ),
+ NB_BAV =SIMP(statut='f',typ='I',defaut= 0,into=( 0 , 2 , 3 ) ),
+ ),
+ INTERPOL =SIMP(statut='f',typ='TXM',max=2,defaut="LIN",
+ into=("NON","LIN","LOG") ),
+ PROL_DROITE =SIMP(statut='f',typ='TXM',defaut="EXCLU",
+ into=("CONSTANT","LINEAIRE","EXCLU") ),
+ PROL_GAUCHE =SIMP(statut='f',typ='TXM' ,defaut="EXCLU",
+ into=("CONSTANT","LINEAIRE","EXCLU") ),
+ INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2 ) ),
+ TITRE =SIMP(statut='f',typ='TXM',max='**'),
+) ;
+#& MODIF COMMANDE DATE 10/10/2005 AUTEUR MCOURTOI M.COURTOIS
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE MCOURTOI M.COURTOIS
+def defi_fonction_prod(VALE,VALE_PARA,VALE_C,NOEUD_PARA,**args):
+ if VALE != None : return fonction_sdaster
+ if VALE_C != None : return fonction_c
+ if VALE_PARA != None : return fonction_sdaster
+ if NOEUD_PARA != None : return fonction_sdaster
+ raise AsException("type de concept resultat non prevu")
+
+DEFI_FONCTION=OPER(nom="DEFI_FONCTION",op=3,sd_prod=defi_fonction_prod
+ ,fr="Définition des valeurs réelles ou complexes d une fonction réelle",
+ reentrant='n',
+ UIinfo={"groupes":("Fonction",)},
+ regles=(UN_PARMI('VALE','VALE_C','VALE_PARA','NOEUD_PARA'),),
+ NOM_PARA =SIMP(statut='o',typ='TXM',),
+ NOM_RESU =SIMP(statut='f',typ='TXM',defaut="TOUTRESU"),
+ VALE =SIMP(statut='f',typ='R',min=2,max='**',
+ fr ="Fonction réelle définie par une liste de couples (abscisse,ordonnée)"),
+ VALE_C =SIMP(statut='f',typ='R',min=2,max='**',
+ fr ="Fonction complexe définie par une liste de couples"),
+ VALE_PARA =SIMP(statut='f',typ=listr8_sdaster,
+ fr ="Fonction réelle définie par deux concepts de type listr8" ),
+ b_vale_para =BLOC(condition = "VALE_PARA != None",
+ VALE_FONC =SIMP(statut='o',typ=listr8_sdaster ),
+ ),
+ NOEUD_PARA =SIMP(statut='f',typ=no,max='**',
+ fr ="Fonction réelle définie par une liste de noeuds et un maillage"),
+ b_noeud_para =BLOC(condition = "NOEUD_PARA != None",
+ MAILLAGE =SIMP(statut='o',typ=maillage_sdaster ),
+ VALE_Y =SIMP(statut='o',typ='R',max='**'),
+ ),
+
+ INTERPOL =SIMP(statut='f',typ='TXM',max=2,defaut="LIN",into=("NON","LIN","LOG") ),
+ PROL_DROITE =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU") ),
+ PROL_GAUCHE =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU") ),
+ VERIF =SIMP(statut='f',typ='TXM',defaut="CROISSANT",into=("CROISSANT","NON") ),
+ INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
+ TITRE =SIMP(statut='f',typ='TXM',max='**'),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+DEFI_FOND_FISS=OPER(nom="DEFI_FOND_FISS",op=55,sd_prod=fond_fiss,reentrant='n',
+ UIinfo={"groupes":("Post traitements",)},
+ fr="Définition de lèvres et d un fond de fissure en 3D",
+ regles=(UN_PARMI('FOND_FISS','FOND_FERME'),
+ EXCLUS('FOND_FERME','DTAN_ORIG'),
+ EXCLUS('FOND_FERME','DTAN_EXTR'),
+ EXCLUS('FOND_FERME','VECT_GRNO_ORIG'),
+ EXCLUS('FOND_FERME','VECT_GRNO_EXTR'),
+ UN_PARMI('LEVRE_SUP','NORMALE'),
+ EXCLUS('LEVRE_INF','NORMALE'),
+ ENSEMBLE('DTAN_ORIG','DTAN_EXTR'),
+ ENSEMBLE('VECT_GRNO_ORIG','VECT_GRNO_EXTR'),
+ EXCLUS('DTAN_ORIG','VECT_GRNO_ORIG'),
+ EXCLUS('DTAN_EXTR','VECT_GRNO_EXTR') ,),
+ MAILLAGE =SIMP(statut='o',typ=maillage_sdaster ),
+ FOND_FISS =FACT(statut='f',
+ regles=(UN_PARMI('GROUP_NO','NOEUD','GROUP_MA','MAILLE'),
+ EXCLUS('NOEUD_ORIG','GROUP_NO_ORIG'),
+ EXCLUS('NOEUD_EXTR','GROUP_NO_EXTR'),),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+# à mettre à jour le max vaut-il 1
+ NOEUD_ORIG =SIMP(statut='f',typ=no,),
+ GROUP_NO_ORIG =SIMP(statut='f',typ=grno,),
+ NOEUD_EXTR =SIMP(statut='f',typ=no,),
+ GROUP_NO_EXTR =SIMP(statut='f',typ=grno,),
+ ),
+ FOND_FERME =FACT(statut='f',
+ regles=(UN_PARMI('GROUP_NO','NOEUD','GROUP_MA','MAILLE'),
+ EXCLUS('NOEUD_ORIG','GROUP_NO_ORIG'),),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ NOEUD_ORIG =SIMP(statut='f',typ=no,),
+ GROUP_NO_ORIG =SIMP(statut='f',typ=grno,),
+ MAILLE_ORIG =SIMP(statut='f',typ=ma,),
+ GROUP_MA_ORIG =SIMP(statut='f',typ=ma,),
+ ),
+ LEVRE_SUP =FACT(statut='f',
+ regles=(UN_PARMI('GROUP_MA','MAILLE'),),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ ),
+ LEVRE_INF =FACT(statut='f',
+ regles=(UN_PARMI('GROUP_MA','MAILLE', ),),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ ),
+ NORMALE =SIMP(statut='f',typ='R',max='**'),
+ DTAN_ORIG =SIMP(statut='f',typ='R',max='**'),
+ DTAN_EXTR =SIMP(statut='f',typ='R',max='**'),
+ VECT_GRNO_ORIG =SIMP(statut='f',typ=grno,validators=NoRepeat(),max=2),
+ VECT_GRNO_EXTR =SIMP(statut='f',typ=grno,validators=NoRepeat(),max=2),
+ INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
+) ;
+#& MODIF COMMANDE DATE 25/10/2004 AUTEUR CIBHHLV L.VIVAN
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE VABHHTS J.PELLET
+def defi_group_prod(MAILLAGE,**args):
+ if AsType(MAILLAGE) == maillage_sdaster : return maillage_sdaster
+ if AsType(MAILLAGE) == squelette : return squelette
+ raise AsException("type de concept resultat non prevu")
+
+DEFI_GROUP=OPER(nom="DEFI_GROUP",op= 104,sd_prod=defi_group_prod,
+ fr="Définition de nouveaux groupes de noeuds et/ou de mailles dans un concept maillage",
+ reentrant='o',
+ UIinfo={"groupes":("Maillage",)},
+ regles=(AU_MOINS_UN('CREA_GROUP_MA','CREA_GROUP_NO'),),
+ MAILLAGE =SIMP(statut='o',typ=(maillage_sdaster,squelette) ),
+
+ CREA_GROUP_MA =FACT(statut='f',max='**',
+
+regles=(UN_PARMI('TOUT','GROUP_MA','MAILLE','INTERSEC','UNION','DIFFE','OPTION'),),
+# quel est le concept attendu deriere NOM
+ NOM =SIMP(statut='o',typ=grma),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA =SIMP(statut='f',typ=grma),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ INTERSEC =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ UNION =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ DIFFE =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ OPTION =SIMP(statut='f',typ='TXM',into=("FACE_NORMALE","SPHERE","CYLINDRE","BANDE","APPUI_LACHE") ),
+ b_group_ma =BLOC(condition = "GROUP_MA != None",
+ regles=(EXCLUS('POSITION','NUME_INIT'),),
+ NUME_INIT =SIMP(statut='f',typ='I'),
+ POSITION =SIMP(statut='f',typ='TXM',into=("INIT","FIN","MILIEU") ),
+ b_nume_init =BLOC(condition = "NUME_INIT != None",
+ NUME_FIN =SIMP(statut='f',typ='I' ),
+ ),
+ ),
+ b_face_normale =BLOC(condition = "OPTION == 'FACE_NORMALE'",
+ regles=(UN_PARMI('ANGL_NAUT','VECT_NORMALE'),),
+ ANGL_NAUT =SIMP(statut='f',typ='R',max=2),
+ VECT_NORMALE =SIMP(statut='f',typ='R',max=3),
+ ANGL_PREC =SIMP(statut='f',typ='R',defaut= 0.5 ),
+ VERI_SIGNE =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+ ),
+ b_sphere =BLOC(condition = "OPTION == 'SPHERE'",
+ regles=(UN_PARMI('POINT','NOEUD_CENTRE','GROUP_NO_CENTRE'),),
+ POINT =SIMP(statut='f',typ='R',max=3),
+ NOEUD_CENTRE =SIMP(statut='f',typ=no),
+ GROUP_NO_CENTRE =SIMP(statut='f',typ=grno),
+ RAYON =SIMP(statut='o',typ='R' ),
+ ),
+ b_cylindre =BLOC(condition = "OPTION == 'CYLINDRE'",
+ regles=(UN_PARMI('POINT','NOEUD_CENTRE','GROUP_NO_CENTRE'),
+ UN_PARMI('ANGL_NAUT','VECT_NORMALE'),),
+ POINT =SIMP(statut='f',typ='R',max=3),
+ NOEUD_CENTRE =SIMP(statut='f',typ=no),
+ GROUP_NO_CENTRE =SIMP(statut='f',typ=grno),
+ RAYON =SIMP(statut='o',typ='R' ),
+ ANGL_NAUT =SIMP(statut='f',typ='R',max=2),
+ VECT_NORMALE =SIMP(statut='f',typ='R',max=3),
+ ),
+ b_bande =BLOC(condition = "OPTION == 'BANDE'",
+ regles=(UN_PARMI('POINT','NOEUD_CENTRE','GROUP_NO_CENTRE'),
+ UN_PARMI('ANGL_NAUT','VECT_NORMALE'),),
+ POINT =SIMP(statut='f',typ='R' ,max=3),
+ NOEUD_CENTRE =SIMP(statut='f',typ=no ,validators=NoRepeat(),max=1),
+ GROUP_NO_CENTRE =SIMP(statut='f',typ=grno,validators=NoRepeat(),max=1),
+ DIST =SIMP(statut='o',typ='R' ),
+ ANGL_NAUT =SIMP(statut='f',typ='R',max=2),
+ VECT_NORMALE =SIMP(statut='f',typ='R',max=3),
+ ),
+ b_app_lache =BLOC(condition = "OPTION == 'APPUI_LACHE'",
+ regles=(UN_PARMI('NOEUD','GROUP_NO'),),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ ),
+ ),
+ CREA_GROUP_NO =FACT(statut='f',max='**',
+ OPTION =SIMP(statut='f',typ='TXM',into=("ENV_SPHERE","ENV_CYLINDRE","PLAN",
+ "SEGM_DROI_ORDO","NOEUD_ORDO","TUNNEL") ),
+
+ b_option =BLOC(condition = "OPTION == None" ,
+ regles=(UN_PARMI('TOUT_GROUP_MA','GROUP_MA','GROUP_NO','NOEUD',
+ 'INTERSEC','UNION','DIFFE'),),
+ TOUT_GROUP_MA =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ INTERSEC =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ UNION =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ DIFFE =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+
+ b_nom_group_ma =BLOC(condition = "GROUP_MA != None",
+ NOM = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ CRIT_NOEUD = SIMP(statut='f',typ='TXM',defaut="TOUS",
+ into=("TOUS","SOMMET","MILIEU","CENTRE"),),
+ ),
+ b_group_no =BLOC(condition = "GROUP_NO != None",
+ regles=(EXCLUS('POSITION','NUME_INIT'),),
+ NUME_INIT =SIMP(statut='f',typ='I'),
+ POSITION =SIMP(statut='f',typ='TXM',into=("INIT","FIN","MILIEU") ),
+ b_nume_init =BLOC(condition = "NUME_INIT != None",
+ NUME_FIN =SIMP(statut='f',typ='I' ),
+ ),
+ ),
+ b_nom =BLOC(condition = "GROUP_MA == None and TOUT_GROUP_MA == None" ,
+ NOM =SIMP(statut='o',typ=geom),
+ ),
+ ),
+
+ b_env_sphere =BLOC(condition = "OPTION == 'ENV_SPHERE'",
+ regles=(UN_PARMI('POINT','NOEUD_CENTRE','GROUP_NO_CENTRE'),),
+ NOM =SIMP(statut='o',typ=geom),
+ POINT =SIMP(statut='f',typ='R' ,max=3),
+ NOEUD_CENTRE =SIMP(statut='f',typ=no ,validators=NoRepeat(),max=1),
+ GROUP_NO_CENTRE =SIMP(statut='f',typ=grno,validators=NoRepeat(),max=1),
+ RAYON =SIMP(statut='o',typ='R' ),
+ PRECISION =SIMP(statut='o',typ='R' ),
+ ),
+ b_env_cylindre =BLOC(condition = "OPTION == 'ENV_CYLINDRE'",
+ regles=(UN_PARMI('POINT','NOEUD_CENTRE','GROUP_NO_CENTRE'),
+ UN_PARMI('ANGL_NAUT','VECT_NORMALE'),),
+ NOM =SIMP(statut='o',typ=geom),
+ POINT =SIMP(statut='f',typ='R' ,max=3),
+ NOEUD_CENTRE =SIMP(statut='f',typ=no ,validators=NoRepeat(),max=1),
+ GROUP_NO_CENTRE =SIMP(statut='f',typ=grno,validators=NoRepeat(),max=1),
+ RAYON =SIMP(statut='o',typ='R' ),
+ ANGL_NAUT =SIMP(statut='f',typ='R',max=3),
+ VECT_NORMALE =SIMP(statut='f',typ='R',max=3),
+ PRECISION =SIMP(statut='o',typ='R' ),
+ ),
+ b_env_plan =BLOC(condition = "OPTION == 'PLAN'",
+ regles=(UN_PARMI('POINT','NOEUD_CENTRE','GROUP_NO_CENTRE'),
+ UN_PARMI('ANGL_NAUT','VECT_NORMALE'),),
+ NOM =SIMP(statut='o',typ=geom),
+ POINT =SIMP(statut='f',typ='R' ,max=3),
+ NOEUD_CENTRE =SIMP(statut='f',typ=no ,validators=NoRepeat(),max=1),
+ GROUP_NO_CENTRE =SIMP(statut='f',typ=grno,validators=NoRepeat(),max=1),
+ ANGL_NAUT =SIMP(statut='f',typ='R' ,max=3),
+ VECT_NORMALE =SIMP(statut='f',typ='R' ,max=3),
+ PRECISION =SIMP(statut='o',typ='R' ),
+ ),
+ b_segm_droi_ordo=BLOC(condition = "OPTION == 'SEGM_DROI_ORDO'",
+ regles=(AU_MOINS_UN('NOEUD','GROUP_NO'),
+ UN_PARMI('NOEUD_ORIG','GROUP_NO_ORIG'),
+ UN_PARMI('NOEUD_EXTR','GROUP_NO_EXTR'),),
+ NOM =SIMP(statut='o',typ=geom),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ NOEUD_ORIG =SIMP(statut='f',typ=no),
+ GROUP_NO_ORIG =SIMP(statut='f',typ=grno),
+ NOEUD_EXTR =SIMP(statut='f',typ=no),
+ GROUP_NO_EXTR =SIMP(statut='f',typ=grno),
+ PRECISION =SIMP(statut='o',typ='R' ),
+ CRITERE =SIMP(statut='o',typ='TXM',into=("ABSOLU","RELATIF") ),
+ ),
+ b_noeud_ordo =BLOC(condition = "OPTION == 'NOEUD_ORDO'",
+ regles=(EXCLUS('NOEUD_ORIG','GROUP_NO_ORIG'),
+ EXCLUS('NOEUD_EXTR','GROUP_NO_EXTR'),),
+ NOM =SIMP(statut='o',typ=geom),
+ GROUP_MA =SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**'),
+ NOEUD_ORIG =SIMP(statut='f',typ=no),
+ GROUP_NO_ORIG =SIMP(statut='f',typ=grno),
+ NOEUD_EXTR =SIMP(statut='f',typ=no),
+ GROUP_NO_EXTR =SIMP(statut='f',typ=grno),
+ ),
+ b_tunnel =BLOC(condition = "OPTION == 'TUNNEL'",
+ regles=(AU_MOINS_UN ('TOUT','GROUP_MA','MAILLE'),
+ EXCLUS('NOEUD_ORIG','GROUP_NO_ORIG'),
+ AU_MOINS_UN ('GROUP_MA_AXE','MAILLE_AXE'),),
+ NOM =SIMP(statut='o',typ=geom),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA_AXE =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE_AXE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ NOEUD_ORIG =SIMP(statut='f',typ=no),
+ GROUP_NO_ORIG =SIMP(statut='f',typ=grno),
+ RAYON =SIMP(statut='o',typ='R'),
+ LONGUEUR =SIMP(statut='f',typ='R'),
+ ),
+ ),
+ ALARME =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+ INFO =SIMP(statut='f',typ='I',into=( 1 , 2 ) ),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+DEFI_INTE_SPEC=OPER(nom="DEFI_INTE_SPEC",op= 115,sd_prod=tabl_intsp,
+ reentrant='n',
+ UIinfo={"groupes":("Fonction",)},
+
+ DIMENSION =SIMP(statut='f',typ='I',defaut= 1 ),
+
+ PAR_FONCTION =FACT(statut='f',max='**',
+ NUME_ORDRE_I =SIMP(statut='o',typ='I' ),
+ NUME_ORDRE_J =SIMP(statut='o',typ='I' ),
+ FONCTION =SIMP(statut='o',typ=fonction_c ),
+ ),
+ KANAI_TAJIMI =FACT(statut='f',max='**',
+ regles=(EXCLUS('VALE_R','VALE_C'),),
+ NUME_ORDRE_I =SIMP(statut='o',typ='I' ),
+ NUME_ORDRE_J =SIMP(statut='o',typ='I' ),
+ FREQ_MIN =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ FREQ_MAX =SIMP(statut='f',typ='R',defaut= 100. ),
+ PAS =SIMP(statut='f',typ='R',defaut= 1. ),
+ AMOR_REDUIT =SIMP(statut='f',typ='R',defaut= 0.6 ),
+ FREQ_MOY =SIMP(statut='f',typ='R',defaut= 5. ),
+ VALE_R =SIMP(statut='f',typ='R' ),
+ VALE_C =SIMP(statut='f',typ='C' ),
+ INTERPOL =SIMP(statut='f',typ='TXM',max=2,defaut="LIN",into=("NON","LIN","LOG") ),
+ PROL_DROITE =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU") ),
+ PROL_GAUCHE =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU") ),
+ ),
+ CONSTANT =FACT(statut='f',max='**',
+ regles=(EXCLUS('VALE_R','VALE_C'),),
+ NUME_ORDRE_I =SIMP(statut='o',typ='I' ),
+ NUME_ORDRE_J =SIMP(statut='o',typ='I' ),
+ FREQ_MIN =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ FREQ_MAX =SIMP(statut='f',typ='R',defaut= 100. ),
+ PAS =SIMP(statut='f',typ='R',defaut= 1. ),
+ VALE_R =SIMP(statut='f',typ='R' ),
+ VALE_C =SIMP(statut='f',typ='C' ),
+ INTERPOL =SIMP(statut='f',typ='TXM',max=2,defaut="LIN",into=("NON","LIN","LOG") ),
+ PROL_DROITE =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU") ),
+ PROL_GAUCHE =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU") ),
+ ),
+ TITRE =SIMP(statut='f',typ='TXM',max='**'),
+ INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+DEFI_INTERF_DYNA=OPER(nom="DEFI_INTERF_DYNA",op= 98,sd_prod=interf_dyna_clas,
+ reentrant='n',
+ UIinfo={"groupes":("Matrices/vecteurs",)},
+ NUME_DDL =SIMP(statut='o',typ=nume_ddl_sdaster ),
+ INTERFACE =FACT(statut='o',max='**',
+ regles=(ENSEMBLE('NOM','TYPE'),
+# erreur doc U sur la condition qui suit
+ UN_PARMI('NOEUD','GROUP_NO'),),
+ NOM =SIMP(statut='f',typ='TXM' ),
+ TYPE =SIMP(statut='f',typ='TXM',into=("MNEAL","CRAIGB","CB_HARMO","AUCUN") ),
+ NOEUD =SIMP(statut='f',typ=no,max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,max='**'),
+ DDL_ACTIF =SIMP(statut='f',typ='TXM',max='**'),
+ MASQUE =SIMP(statut='f',typ='TXM',max='**'),
+ ),
+ FREQ =SIMP(statut='f',typ='R',defaut= 1.),
+ INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE VABHHTS J.PELLET
+DEFI_LIST_ENTI=OPER(nom="DEFI_LIST_ENTI",op=22,sd_prod=listis_sdaster,
+ fr="Définition d une suite croissante d entiers",
+ reentrant='n',
+ UIinfo={"groupes":("Fonction",)},
+ regles=(UN_PARMI('VALE','DEBUT'),
+ EXCLUS('VALE','INTERVALLE'),),
+ VALE =SIMP(statut='f',typ='I',max='**'),
+ DEBUT =SIMP(statut='f',typ='I'),
+ INTERVALLE =FACT(statut='f',max='**',
+ regles=(UN_PARMI('NOMBRE','PAS'),),
+ JUSQU_A =SIMP(statut='o',typ='I'),
+ NOMBRE =SIMP(statut='f',typ='I',val_min=1,),
+ PAS =SIMP(statut='f',typ='I',val_min=1,),
+ ),
+ INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
+ TITRE =SIMP(statut='f',typ='TXM',max='**'),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE VABHHTS J.PELLET
+DEFI_LIST_REEL=OPER(nom="DEFI_LIST_REEL",op=24,sd_prod=listr8_sdaster,
+ fr="Définition d une suite croissante de réels",
+ reentrant='n',
+ UIinfo={"groupes":("Fonction",)},
+ regles=(UN_PARMI('VALE','DEBUT',),
+ EXCLUS('VALE','INTERVALLE'),
+ ENSEMBLE('DEBUT','INTERVALLE')),
+ VALE =SIMP(statut='f',typ='R',max='**'),
+ DEBUT =SIMP(statut='f',typ='R'),
+ INTERVALLE =FACT(statut='f',max='**',
+ regles=(UN_PARMI('NOMBRE','PAS'),),
+ JUSQU_A =SIMP(statut='o',typ='R'),
+ NOMBRE =SIMP(statut='f',typ='I'),
+ PAS =SIMP(statut='f',typ='R'),
+ ),
+ INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
+ TITRE =SIMP(statut='f',typ='TXM',max='**'),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE VABHHTS J.PELLET
+DEFI_MAILLAGE=OPER(nom="DEFI_MAILLAGE",op= 88,sd_prod=maillage_sdaster,
+ fr="Définition d un nouveau maillage à partir de macro éléments",
+ reentrant='n',
+ UIinfo={"groupes":("Maillage",)},
+ DEFI_MAILLE =FACT(statut='o',max='**',
+ MACR_ELEM_STAT =SIMP(statut='o',typ=macr_elem_stat,max='**' ),
+ MAILLE =SIMP(statut='f',typ=ma,max='**'),
+ TRAN =SIMP(statut='f',typ='R',max=3),
+ ANGL_NAUT =SIMP(statut='f',typ='R',max=3),
+ b_angl_naut =BLOC(condition = "ANGL_NAUT != None",
+ CENTRE =SIMP(statut='f',typ='R',max=3),
+ ),
+ ),
+ RECO_GLOBAL =FACT(statut='f',max='**',
+ regles=(UN_PARMI('TOUT','MAILLE'),),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ MAILLE =SIMP(statut='f',typ=ma,max='**'),
+ CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
+ PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ),
+ ),
+ RECO_MAILLE =FACT(statut='f',max='**',
+ MAILLE =SIMP(statut='o',typ=ma,max='**'),
+ GROUP_NO =SIMP(statut='o',typ=grno,max='**'),
+ OPTION =SIMP(statut='f',typ='TXM',defaut="GEOMETRIQUE",into=("GEOMETRIQUE","NOEUD_A_NOEUD","INVERSE") ),
+ geometrique =BLOC(condition = "OPTION == 'GEOMETRIQUE'",
+ CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
+ PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ),
+ ),
+ ),
+ DEFI_NOEUD =FACT(statut='f',max='**',
+ regles=(UN_PARMI('TOUT','NOEUD_INIT'),),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",),
+ fr="Renommage de tous les noeuds" ),
+ NOEUD_INIT =SIMP(statut='f',typ=no,
+ fr="Renommage d un seul noeud"),
+ b_tout =BLOC(condition = "TOUT != None",
+ PREFIXE =SIMP(statut='f',typ='TXM' ),
+ INDEX =SIMP(statut='o',typ='I',max='**'),
+ ),
+ b_noeud_init =BLOC(condition = "NOEUD_INIT != None",
+ MAILLE =SIMP(statut='o',typ=ma),
+ NOEUD_FIN =SIMP(statut='o',typ=no),
+ ),
+ ),
+ DEFI_GROUP_NO =FACT(statut='f',max='**',
+ regles=(UN_PARMI('TOUT','MAILLE'),
+ AU_MOINS_UN('INDEX','GROUP_NO_FIN'),
+ ENSEMBLE('GROUP_NO_INIT','GROUP_NO_FIN'),),
+# la regle ancien catalogue AU_MOINS_UN__: ( INDEX , GROUP_NO_FIN ) incoherente avec doc U
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",),
+ fr="Création de plusieurs groupes de noeuds" ),
+ MAILLE =SIMP(statut='f',typ=ma,
+ fr="Création de plusieurs groupes de noeuds"),
+ GROUP_NO_INIT =SIMP(statut='f',typ=grno,
+ fr="Création d un seul groupe de noeuds"),
+ PREFIXE =SIMP(statut='f',typ='TXM' ),
+ INDEX =SIMP(statut='f',typ='I',max='**'),
+ GROUP_NO_FIN =SIMP(statut='f',typ=grno),
+ ),
+) ;
+#& MODIF COMMANDE DATE 22/11/2004 AUTEUR NDOMING N.DOMINGUEZ
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster,
+ fr="Définition des paramètres décrivant le comportement d un matériau",
+ reentrant='n',
+ UIinfo={"groupes":("Modélisation",)},
+ regles=(EXCLUS('ELAS','ELAS_FO','ELAS_FLUI','ELAS_ISTR','ELAS_ISTR_FO','ELAS_ORTH',
+ 'ELAS_ORTH_FO','ELAS_COQUE','ELAS_COQUE_FO',
+ 'SURF_ETAT_SATU','CAM_CLAY_THM','SURF_ETAT_NSAT'),
+ EXCLUS('THER','THER_FO','THER_ORTH','THER_NL'),
+ EXCLUS('ECRO_LINE','ECRO_LINE_FO'),
+ EXCLUS('TAHERI','TAHERI_FO'),
+ EXCLUS('ROUSSELIER','ROUSSELIER_FO'),
+ PRESENT_PRESENT('ROUSSELIER','TRACTION'),
+ PRESENT_PRESENT('ROUSSELIER_FO','TRACTION'),
+ EXCLUS('CIN1_CHAB','CIN1_CHAB_FO'),
+ EXCLUS('CIN2_CHAB','CIN2_CHAB_FO'),
+ EXCLUS('VISCOCHAB','VISCOCHAB_FO'),
+ EXCLUS('POLY_CFC','POLY_CFC_FO'),
+ EXCLUS('LEMAITRE','LEMAITRE_FO','ZIRC_CYRA2','ZIRC_EPRI','VISC_IRRA_LOG',
+ 'LEMA_SEUIL','LEMA_SEUIL_FO'),
+ EXCLUS('OHNO','OHNO_FO'),
+ EXCLUS('LMARC','LMARC_FO'),
+ EXCLUS('VMIS_POUTRE','VMIS_POUTRE_FO'),
+ EXCLUS('VENDOCHAB','VENDOCHAB_FO'),
+ PRESENT_PRESENT('BPEL_ACIER','ELAS'),
+ EXCLUS('RCCM','RCCM_FO'),
+ EXCLUS('WEIBULL','WEIBULL_FO'),
+ PRESENT_PRESENT('BARCELONE','CAM_CLAY','ELAS'),
+ PRESENT_PRESENT('CAM_CLAY','ELAS'),
+ PRESENT_PRESENT('LAIGLE','ELAS'),
+ PRESENT_PRESENT('DRUCK_PRAGER','ELAS'),
+ EXCLUS('MAZARS','MAZARS_FO'),
+ PRESENT_PRESENT('BAZANT_FD','ELAS_FO'),
+ EXCLUS('GLRC','GLRC_FO'),
+ PRESENT_PRESENT('JOINT_BA','ELAS'),
+ ),
+#
+# comportement élastique
+#
+ ELAS =FACT(statut='f',
+ E =SIMP(statut='o',typ='R',val_min=0.E+0),
+ NU =SIMP(statut='o',typ='R',val_min=-1.E+0,val_max=0.5E+0),
+ RHO =SIMP(statut='f',typ='R'),
+ ALPHA =SIMP(statut='f',typ='R'),
+ AMOR_ALPHA =SIMP(statut='f',typ='R'),
+ AMOR_BETA =SIMP(statut='f',typ='R'),
+ AMOR_HYST =SIMP(statut='f',typ='R'),
+ ),
+ ELAS_FO =FACT(statut='f',
+ regles=(PRESENT_PRESENT('ALPHA','TEMP_DEF_ALPHA'),),
+ E =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ NU =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ RHO =SIMP(statut='f',typ='R'),
+ TEMP_DEF_ALPHA =SIMP(statut='f',typ='R'),
+ PRECISION =SIMP(statut='f',typ='R',defaut= 1.),
+ ALPHA =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ AMOR_ALPHA =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ AMOR_BETA =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ AMOR_HYST =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ K_DESSIC =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ B_ENDOGE =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ FONC_DESORP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP","INST","HYDR","SECH",) ),
+ ),
+ ELAS_FLUI =FACT(statut='f',
+ E =SIMP(statut='o',typ='R'),
+ NU =SIMP(statut='o',typ='R'),
+ RHO =SIMP(statut='o',typ='R'),
+ PROF_RHO_F_INT =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ PROF_RHO_F_EXT =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ COEF_MASS_AJOU =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("ABSC",) ),
+ ),
+ ELAS_ISTR =FACT(statut='f',
+ E_L =SIMP(statut='o',typ='R'),
+ E_N =SIMP(statut='o',typ='R'),
+ NU_LT =SIMP(statut='o',typ='R'),
+ NU_LN =SIMP(statut='o',typ='R'),
+ G_LN =SIMP(statut='o',typ='R'),
+ RHO =SIMP(statut='f',typ='R'),
+ ALPHA_L =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ ALPHA_N =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ ),
+ ELAS_ISTR_FO =FACT(statut='f',
+ regles=(
+ PRESENT_PRESENT('ALPHA_L','TEMP_DEF_ALPHA'),
+ PRESENT_PRESENT('ALPHA_N','TEMP_DEF_ALPHA'),
+ ),
+ E_L =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ E_N =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ NU_LT =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ NU_LN =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ G_LN =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ RHO =SIMP(statut='f',typ='R'),
+ TEMP_DEF_ALPHA =SIMP(statut='f',typ='R'),
+ PRECISION =SIMP(statut='f',typ='R',defaut= 1.),
+ ALPHA_L =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ ALPHA_N =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP","INST")),
+ ),
+ ELAS_ORTH =FACT(statut='f',
+ E_L =SIMP(statut='o',typ='R'),
+ E_T =SIMP(statut='o',typ='R'),
+ E_N =SIMP(statut='f',typ='R'),
+ NU_LT =SIMP(statut='o',typ='R'),
+ NU_LN =SIMP(statut='f',typ='R'),
+ NU_TN =SIMP(statut='f',typ='R'),
+ G_LT =SIMP(statut='o',typ='R'),
+ G_LN =SIMP(statut='f',typ='R'),
+ G_TN =SIMP(statut='f',typ='R'),
+ RHO =SIMP(statut='f',typ='R'),
+ ALPHA_L =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ ALPHA_T =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ ALPHA_N =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ XT =SIMP(statut='f',typ='R',defaut= 1. ),
+ XC =SIMP(statut='f',typ='R',defaut= 1. ),
+ YT =SIMP(statut='f',typ='R',defaut= 1. ),
+ YC =SIMP(statut='f',typ='R',defaut= 1. ),
+ S_LT =SIMP(statut='f',typ='R',defaut= 1. ),
+ ),
+ ELAS_ORTH_FO =FACT(statut='f',
+ regles=(
+ PRESENT_PRESENT('ALPHA_L','TEMP_DEF_ALPHA'),
+ PRESENT_PRESENT('ALPHA_N','TEMP_DEF_ALPHA'),
+ PRESENT_PRESENT('ALPHA_T','TEMP_DEF_ALPHA'),
+ ),
+ E_L =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ E_T =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ E_N =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ NU_LT =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ NU_LN =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ NU_TN =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ G_LT =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ G_LN =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ G_TN =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ RHO =SIMP(statut='f',typ='R'),
+ TEMP_DEF_ALPHA =SIMP(statut='f',typ='R'),
+ PRECISION =SIMP(statut='f',typ='R',defaut= 1. ),
+ ALPHA_L =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ ALPHA_T =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ ALPHA_N =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP","INST",) ),
+ ),
+ ELAS_THM =FACT(statut='f',
+ RHO_S =SIMP(statut='o',typ='R'),
+ UN_SUR_KS =SIMP(statut='o',typ='R'),
+ E =SIMP(statut='f',typ='R'),
+ KB =SIMP(statut='f',typ='R'),
+ D_KB_T =SIMP(statut='f',typ='R'),
+ ALPHA_S =SIMP(statut='f',typ='R'),
+ ALPHA_D =SIMP(statut='f',typ='R'),
+ ),
+ SURF_ETAT_SATU =FACT(statut='f',
+ E_CHAR =SIMP(statut='o',typ='R'),
+ E_DECHAR =SIMP(statut='o',typ='R'),
+ XN =SIMP(statut='f',typ='R'),
+ RF =SIMP(statut='f',typ='R'),
+ EV_KB =SIMP(statut='f',typ='R'),
+ EV_XM =SIMP(statut='f',typ='R'),
+ D_E_T =SIMP(statut='f',typ='R'),
+ ALPHA0 =SIMP(statut='f',typ='R'),
+ ALPHA1 =SIMP(statut='f',typ='R'),
+ ALPHA2 =SIMP(statut='f',typ='R'),
+ ALPHA3 =SIMP(statut='f',typ='R'),
+ ALPHA_S =SIMP(statut='f',typ='R'),
+ ANG_FRT =SIMP(statut='o',typ='R'),
+ COHE =SIMP(statut='o',typ='R'),
+ RESI_TRAC =SIMP(statut='o',typ='R'),
+ ),
+ CAM_CLAY_THM =FACT(statut='f',
+ NU =SIMP(statut='f',typ='R'),
+ LAMBDA =SIMP(statut='o',typ='R'),
+ KAPA =SIMP(statut='o',typ='R'),
+ M =SIMP(statut='f',typ='R'),
+ PRES_CRIT =SIMP(statut='f',typ='R'),
+ GAMA =SIMP(statut='o',typ='R'),
+ A0_PC =SIMP(statut='o',typ='R'),
+ A1_PC =SIMP(statut='f',typ='R'),
+ A2_PC =SIMP(statut='f',typ='R'),
+ ALPHA0_PC =SIMP(statut='f',typ='R'),
+ ALPHA1_PC =SIMP(statut='f',typ='R'),
+ ALPHA2_PC =SIMP(statut='f',typ='R'),
+ ALPHA3_PC =SIMP(statut='f',typ='R'),
+ ALPHA_S =SIMP(statut='f',typ='R'),
+ ),
+ SURF_ETAT_NSAT =FACT(statut='f',
+ E_CHAR =SIMP(statut='o',typ='R'),
+ E_DECHAR =SIMP(statut='o',typ='R'),
+ XN =SIMP(statut='f',typ='R'),
+ RF =SIMP(statut='f',typ='R'),
+ EV_KB =SIMP(statut='f',typ='R'),
+ EV_XM =SIMP(statut='f',typ='R'),
+ EV_A =SIMP(statut='f',typ='R'),
+ EV_B =SIMP(statut='f',typ='R'),
+ EV_CT =SIMP(statut='f',typ='R'),
+ EV_SIGB =SIMP(statut='f',typ='R'),
+ D_E_T =SIMP(statut='f',typ='R'),
+ D_E_SUCC =SIMP(statut='f',typ='R'),
+ ANG_FRT =SIMP(statut='o',typ='R'),
+ COHE =SIMP(statut='o',typ='R'),
+ D_COEH_SUCC =SIMP(statut='f',typ='R'),
+ ANG_FRT_ULT =SIMP(statut='f',typ='R'),
+ SUCC_ULTM =SIMP(statut='f',typ='R'),
+ RESI_TRAC =SIMP(statut='f',typ='R'),
+ A_SURF_SATU =SIMP(statut='f',typ='R'),
+ B_SURF_SATU =SIMP(statut='f',typ='R'),
+ C_SURF_SATU =SIMP(statut='f',typ='R'),
+ D_SURF_SATU =SIMP(statut='f',typ='R'),
+ ),
+ ELAS_COQUE =FACT(statut='f',
+ regles=(EXCLUS('MEMB_L','M_LLLL',),
+ PRESENT_PRESENT('MEMB_L','MEMB_LT', 'MEMB_T','MEMB_G_LT','FLEX_L','FLEX_LT',
+ 'FLEX_T','FLEX_G_LT','CISA_L','CISA_T',),
+ PRESENT_PRESENT('M_LLLL','M_LLTT','M_LLLT','M_TTTT','M_TTLT','M_LTLT','F_LLLL',
+ 'F_LLTT','F_LLLT','F_TTTT','F_TTLT','F_LTLT','MF_LLLL',
+ 'MF_LLTT','MF_LLLT','MF_TTTT','MF_TTLT','MF_LTLT','MC_LLLZ',
+ 'MC_LLTZ','MC_TTLZ','MC_TTTZ','MC_LTLZ','MC_LTTZ','FC_LLLZ',
+ 'FC_LLTZ','FC_TTLZ','FC_TTTZ','FC_LTLZ','FC_LTTZ','C_LZLZ',
+ 'C_LZTZ','C_TZTZ'),),
+ MEMB_L =SIMP(statut='f',typ='R'),
+ MEMB_LT =SIMP(statut='f',typ='R'),
+ MEMB_T =SIMP(statut='f',typ='R'),
+ MEMB_G_LT =SIMP(statut='f',typ='R'),
+ FLEX_L =SIMP(statut='f',typ='R'),
+ FLEX_LT =SIMP(statut='f',typ='R'),
+ FLEX_T =SIMP(statut='f',typ='R'),
+ FLEX_G_LT =SIMP(statut='f',typ='R'),
+ CISA_L =SIMP(statut='f',typ='R'),
+ CISA_T =SIMP(statut='f',typ='R'),
+ M_LLLL =SIMP(statut='f',typ='R'),
+ M_LLTT =SIMP(statut='f',typ='R'),
+ M_LLLT =SIMP(statut='f',typ='R'),
+ M_TTTT =SIMP(statut='f',typ='R'),
+ M_TTLT =SIMP(statut='f',typ='R'),
+ M_LTLT =SIMP(statut='f',typ='R'),
+ F_LLLL =SIMP(statut='f',typ='R'),
+ F_LLTT =SIMP(statut='f',typ='R'),
+ F_LLLT =SIMP(statut='f',typ='R'),
+ F_TTTT =SIMP(statut='f',typ='R'),
+ F_TTLT =SIMP(statut='f',typ='R'),
+ F_LTLT =SIMP(statut='f',typ='R'),
+ MF_LLLL =SIMP(statut='f',typ='R'),
+ MF_LLTT =SIMP(statut='f',typ='R'),
+ MF_LLLT =SIMP(statut='f',typ='R'),
+ MF_TTTT =SIMP(statut='f',typ='R'),
+ MF_TTLT =SIMP(statut='f',typ='R'),
+ MF_LTLT =SIMP(statut='f',typ='R'),
+ MC_LLLZ =SIMP(statut='f',typ='R'),
+ MC_LLTZ =SIMP(statut='f',typ='R'),
+ MC_TTLZ =SIMP(statut='f',typ='R'),
+ MC_TTTZ =SIMP(statut='f',typ='R'),
+ MC_LTLZ =SIMP(statut='f',typ='R'),
+ MC_LTTZ =SIMP(statut='f',typ='R'),
+ FC_LLLZ =SIMP(statut='f',typ='R'),
+ FC_LLTZ =SIMP(statut='f',typ='R'),
+ FC_TTLZ =SIMP(statut='f',typ='R'),
+ FC_TTTZ =SIMP(statut='f',typ='R'),
+ FC_LTLZ =SIMP(statut='f',typ='R'),
+ FC_LTTZ =SIMP(statut='f',typ='R'),
+ C_LZLZ =SIMP(statut='f',typ='R'),
+ C_LZTZ =SIMP(statut='f',typ='R'),
+ C_TZTZ =SIMP(statut='f',typ='R'),
+ RHO =SIMP(statut='f',typ='R'),
+ ALPHA =SIMP(statut='f',typ='R'),
+ ),
+ ELAS_COQUE_FO =FACT(statut='f',
+ regles=(EXCLUS('MEMB_L','M_LLLL',),
+ PRESENT_PRESENT('MEMB_L','MEMB_LT','MEMB_T','MEMB_G_LT','FLEX_L','FLEX_LT',
+ 'FLEX_T','FLEX_G_LT','CISA_L','CISA_T',),
+ PRESENT_PRESENT('M_LLLL','M_LLTT','M_LLLT','M_TTTT','M_TTLT','M_LTLT','F_LLLL',
+ 'F_LLTT','F_LLLT','F_TTTT','F_TTLT','F_LTLT','MF_LLLL','MF_LLTT',
+ 'MF_LLLT','MF_TTTT','MF_TTLT','MF_LTLT','MC_LLLZ','MC_LLTZ',
+ 'MC_TTLZ','MC_TTTZ','MC_LTLZ','MC_LTTZ','FC_LLLZ','FC_LLTZ',
+ 'FC_TTLZ','FC_TTTZ','FC_LTLZ','FC_LTTZ','C_LZLZ','C_LZTZ','C_TZTZ'),),
+ MEMB_L =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ MEMB_LT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ MEMB_T =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ MEMB_G_LT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FLEX_L =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FLEX_LT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FLEX_T =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FLEX_G_LT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ CISA_L =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ CISA_T =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ M_LLLL =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ M_LLTT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ M_LLLT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ M_TTTT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ M_TTLT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ M_LTLT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ F_LLLL =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ F_LLTT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ F_LLLT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ F_TTTT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ F_TTLT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ F_LTLT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ MF_LLLL =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ MF_LLTT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ MF_LLLT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ MF_TTTT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ MF_TTLT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ MF_LTLT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ MC_LLLZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ MC_LLTZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ MC_TTLZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ MC_TTTZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ MC_LTLZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ MC_LTTZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FC_LLLZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FC_LLTZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FC_TTLZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FC_TTTZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FC_LTLZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FC_LTTZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ C_LZLZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ C_LZTZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ C_TZTZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ RHO =SIMP(statut='f',typ='R'),
+ ALPHA =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP","INST") ),
+ ),
+ APPUI_ELAS =FACT(statut='f',
+ E_N =SIMP(statut='o',typ='R'),
+ E_TAN =SIMP(statut='f',typ='R',defaut= 0.E+0),
+ ),
+ CABLE =FACT(statut='f',
+ E =SIMP(statut='o',typ='R'),
+ EC_SUR_E =SIMP(statut='f',typ='R',defaut= 1.E-4 ),
+ RHO =SIMP(statut='f',typ='R'),
+ ALPHA =SIMP(statut='f',typ='R'),
+ AMOR_ALPHA =SIMP(statut='f',typ='R'),
+ AMOR_BETA =SIMP(statut='f',typ='R'),
+ ),
+#
+# comportement mécanique non linéaire
+#
+ TRACTION =FACT(statut='f',
+ SIGM =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("EPSI","TEMP","HYDR","SECH",) ),
+ ),
+ ECRO_LINE =FACT(statut='f',
+ D_SIGM_EPSI =SIMP(statut='o',typ='R',),
+ SY =SIMP(statut='o',typ='R',),
+ ),
+ ECRO_LINE_FO =FACT(statut='f',
+ D_SIGM_EPSI =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ SY =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP",) ),
+ ),
+ BETON_ECRO_LINE =FACT(statut='f',
+ D_SIGM_EPSI =SIMP(statut='o',typ='R'),
+ SYT =SIMP(statut='o',typ='R'),
+ SYC =SIMP(statut='f',typ='R'),
+ ),
+ ENDO_ORTH_BETON =FACT(statut='f',
+ ALPHA =SIMP(statut='f',typ='R',defaut=0.9),
+ K0 =SIMP(statut='o',typ='R'),
+ K1 =SIMP(statut='o',typ='R'),
+ K2 =SIMP(statut='f',typ='R',defaut=7.E-4),
+ ECROB =SIMP(statut='o',typ='R'),
+ ECROD =SIMP(statut='o',typ='R'),
+ ),
+ PRAGER =FACT(statut='f',
+ C =SIMP(statut='o',typ='R'),
+ ),
+ PRAGER_FO =FACT(statut='f',
+ C =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP",) ),
+ ),
+ ECRO_FLEJOU =FACT(statut='f',
+ EP =SIMP(statut='o',typ='R'),
+ SY =SIMP(statut='o',typ='R'),
+ SU =SIMP(statut='o',typ='R'),
+ PUISS =SIMP(statut='o',typ='R'),
+ ),
+ TAHERI =FACT(statut='f',
+ R_0 =SIMP(statut='o',typ='R'),
+ ALPHA =SIMP(statut='o',typ='R'),
+ M =SIMP(statut='o',typ='R'),
+ A =SIMP(statut='o',typ='R'),
+ B =SIMP(statut='o',typ='R'),
+ C1 =SIMP(statut='o',typ='R'),
+ C_INF =SIMP(statut='o',typ='R'),
+ S =SIMP(statut='o',typ='R'),
+ ),
+ TAHERI_FO =FACT(statut='f',
+ R_0 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ ALPHA =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ M =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ A =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ B =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ C1 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ C_INF =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ S =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP",) ),
+ ),
+ ROUSSELIER =FACT(statut='f',
+ D =SIMP(statut='o',typ='R'),
+ SIGM_1 =SIMP(statut='o',typ='R'),
+ PORO_INIT =SIMP(statut='o',typ='R'),
+ PORO_CRIT =SIMP(statut='f',typ='R',defaut= 1. ),
+ PORO_ACCE =SIMP(statut='f',typ='R',defaut= 1. ),
+ PORO_LIMI =SIMP(statut='f',typ='R',defaut= 0.999 ),
+ D_SIGM_EPSI_NORM=SIMP(statut='f',typ='R',defaut= 1. ),
+ AN =SIMP(statut='f',typ='R',defaut= 0. ),
+ ),
+ ROUSSELIER_FO =FACT(statut='f',
+ D =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ SIGM_1 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ PORO_INIT =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ PORO_CRIT =SIMP(statut='f',typ='R',defaut= 1. ),
+ PORO_ACCE =SIMP(statut='f',typ='R',defaut= 1. ),
+ PORO_LIMI =SIMP(statut='f',typ='R',defaut= 0.999 ),
+ D_SIGM_EPSI_NORM=SIMP(statut='f',typ='R',defaut= 1. ),
+ AN =SIMP(statut='f',typ='R',defaut= 0. ),
+ VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP",) ),
+ ),
+ VISC_SINH =FACT(statut='f',
+ SIGM_0 =SIMP(statut='o',typ='R'),
+ EPSI_0 =SIMP(statut='o',typ='R'),
+ M =SIMP(statut='o',typ='R'),
+ ),
+ CHABOCHE =FACT(statut='f',
+ R_I =SIMP(statut='o',typ='R'),
+ R_0 =SIMP(statut='o',typ='R'),
+ B =SIMP(statut='o',typ='R'),
+ K =SIMP(statut='o',typ='R'),
+ W =SIMP(statut='o',typ='R'),
+ A1 =SIMP(statut='o',typ='R'),
+ A2 =SIMP(statut='o',typ='R'),
+ C1 =SIMP(statut='o',typ='R'),
+ C2 =SIMP(statut='o',typ='R'),
+ ),
+ CIN1_CHAB =FACT(statut='f',
+ R_0 =SIMP(statut='o',typ='R'),
+ R_I =SIMP(statut='f',typ='R'),
+ B =SIMP(statut='f',typ='R',defaut= 0.0E+0),
+ C_I =SIMP(statut='o',typ='R'),
+ K =SIMP(statut='f',typ='R',defaut= 1.0E+0),
+ W =SIMP(statut='f',typ='R',defaut= 0.0E+0),
+ G_0 =SIMP(statut='o',typ='R'),
+ A_I =SIMP(statut='f',typ='R',defaut= 1.0E+0),
+ ),
+ CIN1_CHAB_FO =FACT(statut='f',
+ R_0 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ R_I =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ B =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ C_I =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ K =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ W =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ G_0 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ A_I =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP",)),
+ ),
+ CIN2_CHAB =FACT(statut='f',
+ R_0 =SIMP(statut='o',typ='R'),
+ R_I =SIMP(statut='f',typ='R'),
+ B =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ C1_I =SIMP(statut='o',typ='R'),
+ C2_I =SIMP(statut='o',typ='R'),
+ K =SIMP(statut='f',typ='R',defaut= 1.),
+ W =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ G1_0 =SIMP(statut='o',typ='R'),
+ G2_0 =SIMP(statut='o',typ='R'),
+ A_I =SIMP(statut='f',typ='R',defaut= 1.E+0 ),
+ ),
+ CIN2_CHAB_FO =FACT(statut='f',
+ R_0 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ R_I =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ B =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ C1_I =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ C2_I =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ K =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ W =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ G1_0 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ G2_0 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ A_I =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP",) ),
+ ),
+ VISCOCHAB =FACT(statut='f',
+ K_0 =SIMP(statut='o',typ='R'),
+ A_K =SIMP(statut='o',typ='R'),
+ A_R =SIMP(statut='o',typ='R'),
+ K =SIMP(statut='o',typ='R'),
+ N =SIMP(statut='o',typ='R'),
+ ALP =SIMP(statut='o',typ='R'),
+ B =SIMP(statut='o',typ='R'),
+ M_R =SIMP(statut='o',typ='R'),
+ G_R =SIMP(statut='o',typ='R'),
+ MU =SIMP(statut='o',typ='R'),
+ Q_M =SIMP(statut='o',typ='R'),
+ Q_0 =SIMP(statut='o',typ='R'),
+ QR_0 =SIMP(statut='o',typ='R'),
+ ETA =SIMP(statut='o',typ='R'),
+ C1 =SIMP(statut='o',typ='R'),
+ M_1 =SIMP(statut='o',typ='R'),
+ D1 =SIMP(statut='o',typ='R'),
+ G_X1 =SIMP(statut='o',typ='R'),
+ G1_0 =SIMP(statut='o',typ='R'),
+ C2 =SIMP(statut='o',typ='R'),
+ M_2 =SIMP(statut='o',typ='R'),
+ D2 =SIMP(statut='o',typ='R'),
+ G_X2 =SIMP(statut='o',typ='R'),
+ G2_0 =SIMP(statut='o',typ='R'),
+ A_I =SIMP(statut='o',typ='R'),
+ ),
+ VISCOCHAB_FO =FACT(statut='f',
+ K_0 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ A_K =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ A_R =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ K =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ N =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ ALP =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ B =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ M_R =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ G_R =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ MU =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ Q_M =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ Q_0 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ QR_0 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ ETA =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ C1 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ M_1 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D1 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ G_X1 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ G1_0 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ C2 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ M_2 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D2 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ G_X2 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ G2_0 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ A_I =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP",) ),
+ ),
+ POLY_CFC =FACT(statut='f',
+ TEXTURE =SIMP(statut='o',typ=(tabl_texture) ),
+ DL =SIMP(statut='f',typ='R'),
+ DA =SIMP(statut='f',typ='R'),
+ N =SIMP(statut='o',typ='R'),
+ K =SIMP(statut='o',typ='R'),
+ TAU_0 =SIMP(statut='o',typ='R'),
+ Q1 =SIMP(statut='o',typ='R'),
+ B1 =SIMP(statut='o',typ='R'),
+ HL =SIMP(statut='o',typ='R'),
+ Q2 =SIMP(statut='o',typ='R'),
+ B2 =SIMP(statut='o',typ='R'),
+ C1 =SIMP(statut='o',typ='R'),
+ D1 =SIMP(statut='o',typ='R'),
+ C2 =SIMP(statut='o',typ='R'),
+ ),
+ POLY_CFC_FO =FACT(statut='f',
+ TEXTURE =SIMP(statut='o',typ=(tabl_texture) ),
+ DL =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ DA =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ N =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ K =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ TAU_0 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ Q1 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ B1 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ HL =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ Q2 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ B2 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ C1 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D1 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ C2 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP",) ),
+ ),
+ LEMAITRE =FACT(statut='f',
+ N =SIMP(statut='o',typ='R'),
+ UN_SUR_K =SIMP(statut='o',typ='R'),
+ UN_SUR_M =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ ),
+ ZIRC_CYRA2 =FACT(statut='f',
+ EPSI_FAB =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ TEMP_RECUIT =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FLUX_PHI =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("INST",) ),
+ ),
+ VISC_IRRA_LOG =FACT(statut='f',
+ A =SIMP(statut='f',typ='R',defaut= 1.28E-1),
+ B =SIMP(statut='f',typ='R',defaut= 0.01159),
+ CSTE_TPS =SIMP(statut='f',typ='R',defaut= 0.3540),
+ ENER_ACT =SIMP(statut='f',typ='R',defaut= 5000.),
+ FLUX_PHI =SIMP(statut='o',typ='R',),
+ ),
+ LEMA_SEUIL =FACT(statut='f',
+ A =SIMP(statut='o',typ='R',),
+ S =SIMP(statut='o',typ='R',),
+ ),
+ LEMA_SEUIL_FO=FACT(statut='f',
+ A =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ S =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP",) ),
+ ),
+ ZIRC_EPRI =FACT(statut='f',
+ FLUX_PHI =SIMP(statut='o',typ='R'),
+ R_P =SIMP(statut='o',typ='R'),
+ THETA_MAX =SIMP(statut='o',typ='R'),
+ ),
+ LEMAITRE_FO =FACT(statut='f',
+ N =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ UN_SUR_K =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ UN_SUR_M =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP",) ),
+ ),
+ GRAN_IRRA =FACT(statut='f',
+ A =SIMP(statut='f',typ='R',defaut= 0.E+0),
+ B =SIMP(statut='f',typ='R',defaut= 0.E+0),
+ S =SIMP(statut='f',typ='R',defaut= 0.E+0),
+ ),
+ FLU_IRRA =FACT(statut='f',
+ QSR_K =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ BETA =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ PHI_ZERO =SIMP(statut='f',typ='R',defaut= 1.E+20),
+ L =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ ),
+ OHNO =FACT(statut='f',
+ R_I =SIMP(statut='o',typ='R'),
+ R_0 =SIMP(statut='o',typ='R'),
+ B =SIMP(statut='o',typ='R'),
+ PHI =SIMP(statut='o',typ='R'),
+ A1 =SIMP(statut='o',typ='R'),
+ A2 =SIMP(statut='o',typ='R'),
+ A3 =SIMP(statut='o',typ='R'),
+ A4 =SIMP(statut='o',typ='R'),
+ A5 =SIMP(statut='o',typ='R'),
+ GAMMA1 =SIMP(statut='o',typ='R'),
+ GAMMA2 =SIMP(statut='o',typ='R'),
+ GAMMA3 =SIMP(statut='o',typ='R'),
+ GAMMA4 =SIMP(statut='o',typ='R'),
+ GAMMA5 =SIMP(statut='o',typ='R'),
+ M1 =SIMP(statut='o',typ='R'),
+ M2 =SIMP(statut='o',typ='R'),
+ M3 =SIMP(statut='o',typ='R'),
+ M4 =SIMP(statut='o',typ='R'),
+ M5 =SIMP(statut='o',typ='R'),
+ ),
+ OHNO_FO =FACT(statut='f',
+ R_I =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ R_0 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ B =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ PHI =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ A1 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ A2 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ A3 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ A4 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ A5 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ GAMMA1 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ GAMMA2 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ GAMMA3 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ GAMMA4 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ GAMMA5 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ M1 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ M2 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ M3 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ M4 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ M5 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP",) ),
+ ),
+ LMARC =FACT(statut='f',
+ DE_0 =SIMP(statut='o',typ='R'),
+ R_0 =SIMP(statut='o',typ='R'),
+ N =SIMP(statut='o',typ='R'),
+ K =SIMP(statut='o',typ='R'),
+ Y_I =SIMP(statut='o',typ='R'),
+ Y_0 =SIMP(statut='o',typ='R'),
+ B =SIMP(statut='o',typ='R'),
+ A_0 =SIMP(statut='o',typ='R'),
+ RM =SIMP(statut='o',typ='R'),
+ M =SIMP(statut='o',typ='R'),
+ P =SIMP(statut='o',typ='R'),
+ P1 =SIMP(statut='o',typ='R'),
+ P2 =SIMP(statut='o',typ='R'),
+ M11 =SIMP(statut='o',typ='R'),
+ M22 =SIMP(statut='o',typ='R'),
+ M33 =SIMP(statut='o',typ='R'),
+ M66 =SIMP(statut='o',typ='R'),
+ N11 =SIMP(statut='o',typ='R'),
+ N22 =SIMP(statut='o',typ='R'),
+ N33 =SIMP(statut='o',typ='R'),
+ N66 =SIMP(statut='o',typ='R'),
+ Q11 =SIMP(statut='o',typ='R'),
+ Q22 =SIMP(statut='o',typ='R'),
+ Q33 =SIMP(statut='o',typ='R'),
+ Q66 =SIMP(statut='o',typ='R'),
+ R11 =SIMP(statut='o',typ='R'),
+ R22 =SIMP(statut='o',typ='R'),
+ R33 =SIMP(statut='o',typ='R'),
+ R66 =SIMP(statut='o',typ='R'),
+ ),
+ LMARC_FO =FACT(statut='f',
+ DE_0 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ R_0 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ N =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ K =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ Y_I =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ Y_0 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ B =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ A_0 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ RM =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ M =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ P =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ P1 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ P2 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ M11 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ M22 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ M33 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ M66 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ N11 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ N22 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ N33 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ N66 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ Q11 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ Q22 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ Q33 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ Q66 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ R11 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ R22 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ R33 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ R66 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP",) ),
+ ),
+ VMIS_POUTRE =FACT(statut='f',
+ NP =SIMP(statut='o',typ='R'),
+ MEY =SIMP(statut='o',typ='R'),
+ MPY =SIMP(statut='o',typ='R'),
+ CAY =SIMP(statut='o',typ='R'),
+ CBY =SIMP(statut='o',typ='R'),
+ MEZ =SIMP(statut='o',typ='R'),
+ MPZ =SIMP(statut='o',typ='R'),
+ CAZ =SIMP(statut='o',typ='R'),
+ CBZ =SIMP(statut='o',typ='R'),
+ MPX =SIMP(statut='o',typ='R'),
+ ),
+ VMIS_POUTRE_FO =FACT(statut='f',
+ NP =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ MEY =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ MPY =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ CAY =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ CBY =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ MEZ =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ MPZ =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ CAZ =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ CBZ =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ MPX =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP",) ),
+ ),
+ ARME =FACT(statut='f',
+ KYE =SIMP(statut='o',typ='R'),
+ DLE =SIMP(statut='o',typ='R'),
+ KYP =SIMP(statut='o',typ='R'),
+ DLP =SIMP(statut='o',typ='R'),
+ KYG =SIMP(statut='o',typ='R'),
+ ),
+ ASSE_CORN =FACT(statut='f',
+ NU_1 =SIMP(statut='o',typ='R'),
+ MU_1 =SIMP(statut='o',typ='R'),
+ DXU_1 =SIMP(statut='o',typ='R'),
+ DRYU_1 =SIMP(statut='o',typ='R'),
+ C_1 =SIMP(statut='o',typ='R'),
+ NU_2 =SIMP(statut='o',typ='R'),
+ MU_2 =SIMP(statut='o',typ='R'),
+ DXU_2 =SIMP(statut='o',typ='R'),
+ DRYU_2 =SIMP(statut='o',typ='R'),
+ C_2 =SIMP(statut='o',typ='R'),
+ KY =SIMP(statut='o',typ='R'),
+ KZ =SIMP(statut='o',typ='R'),
+ KRX =SIMP(statut='o',typ='R'),
+ KRZ =SIMP(statut='o',typ='R'),
+ ),
+ DIS_CONTACT =FACT(statut='f',
+ RIGI_NOR =SIMP(statut='f',typ='R' ),
+ DIST_1 =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ DIST_2 =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ RIGI_TAN =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ AMOR_NOR =SIMP(statut='f',typ='R' ),
+ AMOR_TAN =SIMP(statut='f',typ='R' ),
+ COULOMB =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ JEU =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ KT_ULTM =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ EFFO_N_INIT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ regles=(EXCLUS('RIGI_N_FO','RIGI_N_IRRA',),
+ EXCLUS('RELA_MZ','ANGLE_1'),
+ PRESENT_PRESENT('ANGLE_1','ANGLE_2','ANGLE_3','ANGLE_4',
+ 'MOMENT_1','MOMENT_2','MOMENT_3','MOMENT_4'),),
+ RIGI_N_IRRA =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ RIGI_N_FO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ RELA_MZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ ANGLE_1 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ ANGLE_2 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ ANGLE_3 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ ANGLE_4 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ MOMENT_1 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ MOMENT_2 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ MOMENT_3 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ MOMENT_4 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ C_PRAGER_MZ =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("DRZ","INST","TEMP",) ),
+ ),
+ NADAI_B =FACT(statut='f',
+ F_C =SIMP(statut='o',typ='R'),
+ F_T =SIMP(statut='o',typ='R'),
+ CRIT_E_C =SIMP(statut='o',typ='R'),
+ EPSP_P_C =SIMP(statut='o',typ='R'),
+ EPSP_R_C =SIMP(statut='o',typ='R'),
+ EPSI_R_T =SIMP(statut='o',typ='R'),
+ FAC_T_C =SIMP(statut='o',typ='R'),
+ ),
+ BETON_DOUBLE_DP =FACT(statut='f',
+ F_C =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ F_T =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ COEF_BIAX =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ ENER_COMP_RUPT =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ ENER_TRAC_RUPT =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ COEF_ELAS_COMP =SIMP(statut='o',typ='R'),
+ LONG_CARA =SIMP(statut='f',typ='R'),
+ ECRO_COMP_P_PIC =SIMP(statut='f',typ='TXM',defaut="LINEAIRE",into=("LINEAIRE","PARABOLE") ),
+ ECRO_TRAC_P_PIC =SIMP(statut='f',typ='TXM',defaut="LINEAIRE",into=("LINEAIRE","EXPONENT") ),
+ VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP","INST","HYDR","SECH",) ),
+ ),
+ LABORD_1D=FACT(statut='f',min=0 ,
+ Y01 =SIMP(statut='o',typ='R'),
+ Y02 =SIMP(statut='o',typ='R'),
+ A1 =SIMP(statut='o',typ='R'),
+ A2 =SIMP(statut='o',typ='R'),
+ B1 =SIMP(statut='o',typ='R'),
+ B2 =SIMP(statut='o',typ='R'),
+ BETA1 =SIMP(statut='o',typ='R'),
+ BETA2 =SIMP(statut='o',typ='R'),
+ SIGF =SIMP(statut='o',typ='R'),
+ ),
+ MAZARS=FACT(statut='f',min=0 ,
+ EPSD0 =SIMP(statut='o',typ='R'),
+ BETA =SIMP(statut='o',typ='R'),
+ AC =SIMP(statut='o',typ='R'),
+ BC =SIMP(statut='o',typ='R'),
+ AT =SIMP(statut='o',typ='R'),
+ BT =SIMP(statut='o',typ='R'),
+ ),
+ MAZARS_FO=FACT(statut='f',min=0 ,
+ EPSD0 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ BETA =SIMP(statut='o',typ='R'),
+ AC =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ BC =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ AT =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ BT =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP","SECH","HYDR") ),
+ ),
+ JOINT_BA=FACT(statut='f',min=0 ,max=1,
+ HPEN =SIMP(statut='o',typ='R',defaut= 1.E+0,val_min=0.E+0),
+ GTT =SIMP(statut='o',typ='R',val_min=0.E+0),
+ GAMD0 =SIMP(statut='o',typ='R',val_min=1.E-4,val_max=1.E-1),
+ AD1 =SIMP(statut='o',typ='R',val_min=0.E+0),
+ BD1 =SIMP(statut='o',typ='R',defaut= 5.E-1,val_min=1.E-1),
+ GAMD2 =SIMP(statut='o',typ='R',val_min=1.E-4,val_max=1.E+0),
+ AD2 =SIMP(statut='o',typ='R',val_min=0.E+0),
+ BD2 =SIMP(statut='o',typ='R',defaut= 1.E+0,val_min=1.E-1),
+ VIFROT =SIMP(statut='o',typ='R',val_min=0.E+0),
+ FA =SIMP(statut='o',typ='R',val_min=0.E+0),
+ FC =SIMP(statut='o',typ='R',val_min=0.E+0),
+ EPSTR0 =SIMP(statut='o',typ='R',val_min=1.E-4,val_max=1.E+0),
+ ADN =SIMP(statut='o',typ='R',val_min=0.E+0),
+ BDN =SIMP(statut='o',typ='R',defaut= 1.E+0,val_min=1.E-1),
+ ),
+ VENDOCHAB =FACT(statut='f',
+ S_VP =SIMP(statut='o',typ='R'),
+ SEDVP1 =SIMP(statut='o',typ='R'),
+ SEDVP2 =SIMP(statut='o',typ='R'),
+ N_VP =SIMP(statut='o',typ='R'),
+ M_VP =SIMP(statut='o',typ='R'),
+ K_VP =SIMP(statut='o',typ='R'),
+ R_D =SIMP(statut='o',typ='R'),
+ A_D =SIMP(statut='o',typ='R'),
+ K_D =SIMP(statut='o',typ='R'),
+ ),
+ VENDOCHAB_FO =FACT(statut='f',
+ S_VP =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ SEDVP1 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ SEDVP2 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ N_VP =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ M_VP =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ K_VP =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ R_D =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ A_D =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ K_D =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP","X",) ),
+ ),
+ PINTO_MENEGOTTO =FACT(statut='f',
+ SY =SIMP(statut='o',typ='R'),
+ EPSI_ULTM =SIMP(statut='o',typ='R'),
+ SIGM_ULTM =SIMP(statut='o',typ='R'),
+ ELAN =SIMP(statut='f',typ='R',defaut= 4. ),
+ EPSP_HARD =SIMP(statut='o',typ='R'),
+ R_PM =SIMP(statut='f',typ='R',defaut= 20. ),
+ EP_SUR_E =SIMP(statut='f',typ='R'),
+ A1_PM =SIMP(statut='f',typ='R',defaut= 18.5 ),
+ A2_PM =SIMP(statut='f',typ='R',defaut= 0.15 ),
+ A6_PM =SIMP(statut='f',typ='R',defaut= 620. ),
+ C_PM =SIMP(statut='f',typ='R',defaut= 0.5 ),
+ A_PM =SIMP(statut='f',typ='R',defaut= 6.0E-3 ),
+ ),
+ BPEL_BETON =FACT(statut='f',
+ PERT_FLUA =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ PERT_RETR =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ ),
+ BPEL_ACIER =FACT(statut='f',
+ regles=(PRESENT_PRESENT('RELAX_1000','F_PRG',),
+ PRESENT_PRESENT('MU0_RELAX','F_PRG',),),
+ RELAX_1000 =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ MU0_RELAX =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ F_PRG =SIMP(statut='f',typ='R'),
+ FROT_COURB =SIMP(statut='f',typ='R',defaut=0.E+0),
+ FROT_LINE =SIMP(statut='f',typ='R',defaut=0.E+0),
+ ),
+ CAM_CLAY =FACT(statut='f',
+ PORO =SIMP(statut='o',typ='R'),
+ LAMBDA =SIMP(statut='o',typ='R'),
+ KAPA =SIMP(statut='o',typ='R'),
+ M =SIMP(statut='o',typ='R'),
+ PRES_CRIT =SIMP(statut='o',typ='R'),
+ PA =SIMP(statut='o',typ='R'),
+ ),
+ BARCELONE =FACT(statut='f',
+ R =SIMP(statut='o',typ='R'),
+ BETA =SIMP(statut='o',typ='R'),
+ KC =SIMP(statut='o',typ='R'),
+ PC0_INIT =SIMP(statut='o',typ='R'),
+ KAPAS =SIMP(statut='o',typ='R'),
+ LAMBDAS =SIMP(statut='o',typ='R'),
+ ALPHAB =SIMP(statut='f',typ='R'),
+ ),
+ CJS =FACT(statut='f',
+ BETA_CJS =SIMP(statut='o',typ='R'),
+ RM =SIMP(statut='o',typ='R'),
+ N_CJS =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ KP =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ RC =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ A_CJS =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ B_CJS =SIMP(statut='f',typ='R',defaut= 1.0E+25 ),
+ C_CJS =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ GAMMA_CJS =SIMP(statut='o',typ='R'),
+ MU_CJS =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ PCO =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ PA =SIMP(statut='o',typ='R'),
+ Q_INIT =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ R_INIT =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ ),
+ ECRO_ASYM_LINE =FACT(statut='f',
+ DC_SIGM_EPSI =SIMP(statut='o',typ='R'),
+ SY_C =SIMP(statut='o',typ='R'),
+ DT_SIGM_EPSI =SIMP(statut='o',typ='R'),
+ SY_T =SIMP(statut='o',typ='R'),
+ ),
+ GRANGER_FP =FACT(statut='f',
+ J1 =SIMP(statut='f',typ='R'),
+ J2 =SIMP(statut='f',typ='R'),
+ J3 =SIMP(statut='f',typ='R'),
+ J4 =SIMP(statut='f',typ='R'),
+ J5 =SIMP(statut='f',typ='R'),
+ J6 =SIMP(statut='f',typ='R'),
+ J7 =SIMP(statut='f',typ='R'),
+ J8 =SIMP(statut='f',typ='R'),
+ TAUX_1 =SIMP(statut='f',typ='R'),
+ TAUX_2 =SIMP(statut='f',typ='R'),
+ TAUX_3 =SIMP(statut='f',typ='R'),
+ TAUX_4 =SIMP(statut='f',typ='R'),
+ TAUX_5 =SIMP(statut='f',typ='R'),
+ TAUX_6 =SIMP(statut='f',typ='R'),
+ TAUX_7 =SIMP(statut='f',typ='R'),
+ TAUX_8 =SIMP(statut='f',typ='R'),
+ QSR_K =SIMP(statut='f',typ='R'),
+ ),
+ GRANGER_FP_INDT =FACT(statut='f',
+ J1 =SIMP(statut='f',typ='R'),
+ J2 =SIMP(statut='f',typ='R'),
+ J3 =SIMP(statut='f',typ='R'),
+ J4 =SIMP(statut='f',typ='R'),
+ J5 =SIMP(statut='f',typ='R'),
+ J6 =SIMP(statut='f',typ='R'),
+ J7 =SIMP(statut='f',typ='R'),
+ J8 =SIMP(statut='f',typ='R'),
+ TAUX_1 =SIMP(statut='f',typ='R'),
+ TAUX_2 =SIMP(statut='f',typ='R'),
+ TAUX_3 =SIMP(statut='f',typ='R'),
+ TAUX_4 =SIMP(statut='f',typ='R'),
+ TAUX_5 =SIMP(statut='f',typ='R'),
+ TAUX_6 =SIMP(statut='f',typ='R'),
+ TAUX_7 =SIMP(statut='f',typ='R'),
+ TAUX_8 =SIMP(statut='f',typ='R'),
+ ),
+ V_GRANGER_FP =FACT(statut='f',
+ QSR_VEIL =SIMP(statut='f',typ='R'),
+ FONC_V =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("INST",) ),
+ ),
+ BAZANT_FD =FACT(statut='f',
+ LAM_VISC =SIMP(statut='o',typ='R'),
+ ),
+ BETON_UMLV_FP =FACT(statut='f',min=0 ,
+ K_RS =SIMP(statut='o',typ='R'),
+ ETA_RS =SIMP(statut='o',typ='R'),
+ K_IS =SIMP(statut='o',typ='R'),
+ ETA_IS =SIMP(statut='o',typ='R'),
+ K_RD =SIMP(statut='o',typ='R'),
+ ETA_RD =SIMP(statut='o',typ='R'),
+ ETA_ID =SIMP(statut='o',typ='R'),
+ ETA_FD =SIMP(statut='f',typ='R'),
+ ),
+ GLRC =FACT(statut='f',min=0,max=1,
+ MEX1 =SIMP(statut='o',typ='R',val_min=0.E+0),
+ MEY1 =SIMP(statut='o',typ='R',val_min=0.E+0),
+ MEX2 =SIMP(statut='o',typ='R',val_max=0.E+0),
+ MEY2 =SIMP(statut='o',typ='R',val_max=0.E+0),
+ CX1 =SIMP(statut='o',typ='R',val_min=0.E+0),
+ CY1 =SIMP(statut='o',typ='R',val_min=0.E+0),
+ CXY1 =SIMP(statut='o',typ='R',val_min=0.E+0),
+ CX2 =SIMP(statut='o',typ='R',val_min=0.E+0),
+ CY2 =SIMP(statut='o',typ='R',val_min=0.E+0),
+ CXY2 =SIMP(statut='o',typ='R',val_min=0.E+0),
+ ),
+ GLRC_FO =FACT(statut='f',min=0,max=1,
+ MEX1 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ MEY1 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ MEX2 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ MEY2 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ CX1 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ CY1 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ CXY1 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ CX2 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ CY2 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ CXY2 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("NORM",) ),
+ ),
+ CORR_ACIER =FACT(statut='f',min=0 ,max=1,
+ D_CORR =SIMP(statut='o',typ='R'),
+ ECRO_K =SIMP(statut='o',typ='R'),
+ ECRO_M =SIMP(statut='o',typ='R'),
+ SY =SIMP(statut='o',typ='R'),
+ ),
+#
+# comportement thermique
+#
+ THER_NL =FACT(statut='f',
+ regles=(UN_PARMI('BETA','RHO_CP', ),),
+ LAMBDA =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ BETA =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ RHO_CP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP",) ),
+ ),
+ THER_HYDR =FACT(statut='f',
+ LAMBDA =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ BETA =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ AFFINITE =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ CHALHYDR =SIMP(statut='o',typ='R'),
+ QSR_K =SIMP(statut='o',typ='R'),
+ VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("HYDR","TEMP",) ),
+ ),
+ THER =FACT(statut='f',
+ LAMBDA =SIMP(statut='o',typ='R'),
+ RHO_CP =SIMP(statut='f',typ='R'),
+ ),
+ THER_FO =FACT(statut='f',
+ LAMBDA =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ RHO_CP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("INST",) ),
+ ),
+ THER_ORTH =FACT(statut='f',
+ LAMBDA_L =SIMP(statut='o',typ='R'),
+ LAMBDA_T =SIMP(statut='o',typ='R'),
+ LAMBDA_N =SIMP(statut='f',typ='R'),
+ RHO_CP =SIMP(statut='f',typ='R'),
+ ),
+ THER_COQUE =FACT(statut='f',
+ COND_LMM =SIMP(statut='o',typ='R'),
+ COND_TMM =SIMP(statut='o',typ='R'),
+ COND_LMP =SIMP(statut='o',typ='R'),
+ COND_TMP =SIMP(statut='o',typ='R'),
+ COND_LPP =SIMP(statut='o',typ='R'),
+ COND_TPP =SIMP(statut='o',typ='R'),
+ COND_LSI =SIMP(statut='o',typ='R'),
+ COND_TSI =SIMP(statut='o',typ='R'),
+ COND_NMM =SIMP(statut='o',typ='R'),
+ COND_NMP =SIMP(statut='o',typ='R'),
+ COND_NPP =SIMP(statut='o',typ='R'),
+ COND_NSI =SIMP(statut='o',typ='R'),
+ CMAS_MM =SIMP(statut='f',typ='R'),
+ CMAS_MP =SIMP(statut='f',typ='R'),
+ CMAS_PP =SIMP(statut='f',typ='R'),
+ CMAS_SI =SIMP(statut='f',typ='R'),
+ ),
+ THER_COQUE_FO =FACT(statut='f',
+ COND_LMM =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ COND_TMM =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ COND_LMP =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ COND_TMP =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ COND_LPP =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ COND_TPP =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ COND_LSI =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ COND_TSI =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ COND_NMM =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ COND_NMP =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ COND_NPP =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ COND_NSI =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ CMAS_MM =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ CMAS_MP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ CMAS_PP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ CMAS_SI =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ ),
+ SECH_GRANGER =FACT(statut='f',
+ A =SIMP(statut='o',typ='R'),
+ B =SIMP(statut='o',typ='R'),
+ QSR_K =SIMP(statut='o',typ='R'),
+ TEMP_0_C =SIMP(statut='o',typ='R'),
+ ),
+ SECH_MENSI =FACT(statut='f',
+ A =SIMP(statut='o',typ='R'),
+ B =SIMP(statut='o',typ='R'),
+ ),
+ SECH_BAZANT =FACT(statut='f',
+ D1 =SIMP(statut='o',typ='R'),
+ ALPHA_BAZANT =SIMP(statut='o',typ='R'),
+ N =SIMP(statut='o',typ='R'),
+ FONC_DESORP =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP",) ),
+ ),
+ SECH_NAPPE =FACT(statut='f',
+ FONCTION =SIMP(statut='o',typ=(nappe_sdaster,formule)),
+ VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP","TSEC",) ),
+ ),
+#
+# comportement métallurgique
+#
+ META_ACIER =FACT(statut='f',
+ TRC =SIMP(statut='o',typ=(tabl_trc) ),
+ AR3 =SIMP(statut='o',typ='R'),
+ ALPHA =SIMP(statut='o',typ='R'),
+ MS0 =SIMP(statut='o',typ='R'),
+ AC1 =SIMP(statut='o',typ='R'),
+ AC3 =SIMP(statut='o',typ='R'),
+ TAUX_1 =SIMP(statut='o',typ='R'),
+ TAUX_3 =SIMP(statut='o',typ='R'),
+ LAMBDA0 =SIMP(statut='f',typ='R'),
+ QSR_K =SIMP(statut='f',typ='R'),
+ D10 =SIMP(statut='f',typ='R'),
+ WSR_K =SIMP(statut='f',typ='R'),
+ ),
+ META_ZIRC =FACT(statut='f',
+ TDEQ =SIMP(statut='o',typ='R'),
+ N =SIMP(statut='o',typ='R'),
+ K =SIMP(statut='o',typ='R'),
+ TDC =SIMP(statut='o',typ='R'),
+ AC =SIMP(statut='o',typ='R'),
+ M =SIMP(statut='o',typ='R'),
+ QSR_K =SIMP(statut='f',typ='R'),
+ TDR =SIMP(statut='o',typ='R'),
+ AR =SIMP(statut='o',typ='R'),
+ BR =SIMP(statut='o',typ='R'),
+ ),
+ DURT_META =FACT(statut='f',
+ F1_DURT =SIMP(statut='o',typ='R'),
+ F2_DURT =SIMP(statut='o',typ='R'),
+ F3_DURT =SIMP(statut='o',typ='R'),
+ F4_DURT =SIMP(statut='o',typ='R'),
+ C_DURT =SIMP(statut='o',typ='R'),
+ ),
+ ELAS_META =FACT(statut='f',
+ E =SIMP(statut='o',typ='R'),
+ NU =SIMP(statut='o',typ='R'),
+ F_ALPHA =SIMP(statut='o',typ='R'),
+ C_ALPHA =SIMP(statut='o',typ='R'),
+ PHASE_REFE =SIMP(statut='o',typ='TXM',into=("CHAUD","FROID")),
+ EPSF_EPSC_TREF =SIMP(statut='o',typ='R'),
+ PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E+0),
+ F1_SY =SIMP(statut='f',typ='R'),
+ F2_SY =SIMP(statut='f',typ='R'),
+ F3_SY =SIMP(statut='f',typ='R'),
+ F4_SY =SIMP(statut='f',typ='R'),
+ C_SY =SIMP(statut='f',typ='R'),
+ SY_MELANGE =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ F1_S_VP =SIMP(statut='f',typ='R'),
+ F2_S_VP =SIMP(statut='f',typ='R'),
+ F3_S_VP =SIMP(statut='f',typ='R'),
+ F4_S_VP =SIMP(statut='f',typ='R'),
+ C_S_VP =SIMP(statut='f',typ='R' ),
+ S_VP_MELANGE =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("META",)),
+ ),
+ ELAS_META_FO =FACT(statut='f',
+ regles=(
+ PRESENT_PRESENT('F_ALPHA','TEMP_DEF_ALPHA'),
+ PRESENT_PRESENT('C_ALPHA','TEMP_DEF_ALPHA'),
+ ),
+ E =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ NU =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ F_ALPHA =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ C_ALPHA =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ PHASE_REFE =SIMP(statut='o',typ='TXM',into=("CHAUD","FROID")),
+ EPSF_EPSC_TREF =SIMP(statut='o',typ='R'),
+ TEMP_DEF_ALPHA =SIMP(statut='f',typ='R'),
+ PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E+0),
+ F1_SY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ F2_SY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ F3_SY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ F4_SY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ C_SY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ SY_MELANGE =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ F1_S_VP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ F2_S_VP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ F3_S_VP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ F4_S_VP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ C_S_VP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ S_VP_MELANGE =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP","META",)),
+ ),
+ META_ECRO_LINE =FACT(statut='f',
+ F1_D_SIGM_EPSI =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ F2_D_SIGM_EPSI =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ F3_D_SIGM_EPSI =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ F4_D_SIGM_EPSI =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ C_D_SIGM_EPSI =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP",)),
+ ),
+ META_TRACTION =FACT(statut='f',
+ SIGM_F1 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ SIGM_F2 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ SIGM_F3 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ SIGM_F4 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ SIGM_C =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("EPSI","TEMP",)),
+ ),
+ META_VISC_FO =FACT(statut='f',
+ F1_ETA =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ F1_N =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ F1_C =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ F1_M =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ F2_ETA =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ F2_N =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ F2_C =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ F2_M =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ F3_ETA =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ F3_N =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ F3_C =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ F3_M =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ F4_ETA =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ F4_N =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ F4_C =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ F4_M =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ C_ETA =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ C_N =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ C_C =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ C_M =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP",) ),
+ ),
+ META_PT =FACT(statut='f',
+ F1_K =SIMP(statut='f',typ='R'),
+ F2_K =SIMP(statut='f',typ='R'),
+ F3_K =SIMP(statut='f',typ='R'),
+ F4_K =SIMP(statut='f',typ='R'),
+ F1_D_F_META =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ F2_D_F_META =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ F3_D_F_META =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ F4_D_F_META =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP","META",) ),
+ ),
+ META_RE =FACT(statut='f',
+ C_F1_THETA =SIMP(statut='f',typ='R'),
+ C_F2_THETA =SIMP(statut='f',typ='R'),
+ C_F3_THETA =SIMP(statut='f',typ='R'),
+ C_F4_THETA =SIMP(statut='f',typ='R'),
+ F1_C_THETA =SIMP(statut='f',typ='R'),
+ F2_C_THETA =SIMP(statut='f',typ='R'),
+ F3_C_THETA =SIMP(statut='f',typ='R'),
+ F4_C_THETA =SIMP(statut='f',typ='R'),
+ ),
+#
+# comportement fluide
+#
+ FLUIDE =FACT(statut='f',
+ regles=(EXCLUS('CELE_C','CELE_R'),),
+ RHO =SIMP(statut='o',typ='R'),
+ CELE_C =SIMP(statut='f',typ='C'),
+ CELE_R =SIMP(statut='f',typ='R'),
+ ),
+ PORO_JOINT =FACT(statut='f',
+ RHO_FLUI =SIMP(statut='o',typ='R'),
+ ENTRO_FLUI =SIMP(statut='o',typ='R'),
+ BIOT_M =SIMP(statut='o',typ='R'),
+ C_0 =SIMP(statut='o',typ='R'),
+ T_R =SIMP(statut='o',typ='R'),
+ ALPHA_M =SIMP(statut='o',typ='R'),
+ LAMBDA_T =SIMP(statut='o',typ='R'),
+ LAMBDA_H =SIMP(statut='o',typ='R'),
+ SOURCE_INIT =SIMP(statut='o',typ='R'),
+ OMEGA_0 =SIMP(statut='o',typ='R'),
+ ),
+# =================================================================================
+# COMPORTEMENT THERMO_HYDRO_MECANIQUE
+# LES DONNEES NECESSAIRES A LA DEFINITION DU MATERIAU SONT DEPENDANTES
+# DE LA LOI DE COUPLAGE THM DE LA RELATION
+# LE COMPORTEMENT DE COUPLAGE COMP_THM N EST VALABLE QUE POUR LES LOIS
+# DE COUPLAGE : LIQU_SATU,LIQU_GAZ,GAZ,LIQU_GAZ_ATM,LIQU_VAPE_GAZ,LIQU_VAPE
+# ET LIQU_AD_GAZ_VAPE
+# POUR LES LOIS DE COUPLAGE LIQU_SATU_GAT ET LIQU_NSAT_GAT
+# ON NE MODIFIE RIEN
+# LA CORRESPONDANCE AVEC LES VARIABLES CACHEES EST LA SUIVANTE :
+# 1 --> LIQU_SATU
+# 2 --> GAZ
+# 3 --> LIQU_VAPE
+# 4 --> LIQU_VAPE_GAZ
+# 5 --> LIQU_GAZ
+# 6 --> LIQU_GAZ_ATM
+# 7 --> LIQU_SATU_GAT
+# 8 --> LIQU_NSAT_GAT
+# 9 --> LIQU_AD_GAZ_VAPE
+# =================================================================================
+ COMP_THM = SIMP(statut='f', typ='TXM',
+ into = ( "LIQU_SATU" ,
+ "LIQU_GAZ" ,
+ "GAZ" ,
+ "LIQU_GAZ_ATM" ,
+ "LIQU_VAPE_GAZ" ,
+ "LIQU_VAPE" ,
+ "LIQU_SATU_GAT" ,
+ "LIQU_NSAT_GAT" ,
+ "LIQU_AD_GAZ_VAPE" ,
+ ) ),
+# =================================================================================
+# --- LOI DE COUPLAGE DE TYPE LIQU_SATU -------------------------------------------
+# =================================================================================
+# --- PRESENCE OBLIGATOIRE DES MOT-CLES SUIVANT : ---------------------------------
+# --- THM_INIT, THM_DIFFU, THM_LIQU -----------------------------------------------
+# =================================================================================
+ b_liqusatu = BLOC(condition = "COMP_THM == 'LIQU_SATU' ",
+ fr="Paramètres nécessaires pour une loi de couplage de type LIQU_SATU",
+# =================================================================================
+# --- MOT-CLE OBLIGATOIRE ---------------------------------------------------------
+# =================================================================================
+ THM_INIT = FACT(statut='o',
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES OBLIGATOIRE -------------------------------------
+# ---------------------------------------------------------------------------------
+ PRE1 = SIMP(statut='o',typ='R'),
+ PORO = SIMP(statut='o',typ='R'),
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES NECESSAIRE SI THERMIQUE -------------------------
+# ---------------------------------------------------------------------------------
+ TEMP = SIMP(statut='f',typ='R'),
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES INUTILES ----------------------------------------
+# ---------------------------------------------------------------------------------
+ PRE2 = SIMP(statut='f',typ='R'),
+ PRES_VAPE = SIMP(statut='f',typ='R'),
+ DEGR_SATU = SIMP(statut='f',typ='R'),
+ PRES_ATMO = SIMP(statut='f',typ='R'),
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEE CACHEE ---------------------------------------------
+# ---------------------------------------------------------------------------------
+ COMP_THM = SIMP(statut='c',typ='R',defaut= 1.0,),
+ ),
+# =================================================================================
+# --- MOT-CLE OBLIGATOIRE ---------------------------------------------------------
+# =================================================================================
+ THM_DIFFU = FACT(statut='o',
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES OBLIGATOIRE -------------------------------------
+# ---------------------------------------------------------------------------------
+ RHO = SIMP(statut='o',typ='R'),
+ BIOT_COEF = SIMP(statut='o',typ='R'),
+ PESA_X = SIMP(statut='o',typ='R'),
+ PESA_Y = SIMP(statut='o',typ='R'),
+ PESA_Z = SIMP(statut='o',typ='R'),
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES NECESSAIRE SI THERMIQUE -------------------------
+# ---------------------------------------------------------------------------------
+ CP = SIMP(statut='f',typ='R'),
+ PERM_IN = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ PERM_END = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ regles = (EXCLUS('PERM_IN','PERM_END','PERMIN_X',),
+ PRESENT_PRESENT('PERMIN_X','PERMIN_Y','PERMIN_Z',), ),
+ PERMIN_X =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ PERMIN_Y =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ PERMIN_Z =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ LAMB_PHI = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_LB_PHI = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ LAMB_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_LB_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ LAMB_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_LB_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ LAMB_CT = SIMP(statut='f',typ='R'),
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES INUTILES ----------------------------------------
+# ---------------------------------------------------------------------------------
+ R_GAZ = SIMP(statut='f',typ='R'),
+ EMMAG = SIMP(statut='f',typ='R'),
+ SATU_PRES =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_SATU_PRES =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ PERM_LIQU =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_PERM_LIQU_SATU=SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ PERM_GAZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_PERM_SATU_GAZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_PERM_PRES_GAZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ SIGMA_T =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_SIGMA_T =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ PERM_G_INTR =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ CHAL_VAPO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICKV_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICKV_PV = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICKV_PG = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICKV_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_FV_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_FV_PG = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICKA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICKA_PA = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICKA_PL = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICKA_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_FA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES CACHEES -------------------------------------------
+# ---------------------------------------------------------------------------------
+ VERI_P =SIMP(statut='c',typ='TXM',defaut=("TEMP","SAT","PORO","PGAZ","PCAP","ENDO",) ),
+ ),
+# =================================================================================
+# --- MOT-CLE OBLIGATOIRE ---------------------------------------------------------
+# =================================================================================
+ THM_LIQU = FACT(statut='o',
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES OBLIGATOIRE -------------------------------------
+# ---------------------------------------------------------------------------------
+ RHO = SIMP(statut='o',typ='R'),
+ UN_SUR_K = SIMP(statut='o',typ='R'),
+ VISC = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_VISC_TEMP = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES NECESSAIRE SI THERMIQUE -------------------------
+# ---------------------------------------------------------------------------------
+ ALPHA = SIMP(statut='f',typ='R'),
+ CP = SIMP(statut='f',typ='R'),
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES CACHEES -------------------------------------------
+# ---------------------------------------------------------------------------------
+ VERI_P = SIMP(statut='c',typ='TXM',defaut=("TEMP",)),
+ ),
+# =================================================================================
+# --- MOT-CLE INUTILE -------------------------------------------------------------
+# =================================================================================
+ THM_GAZ =FACT(statut='f',
+ MASS_MOL =SIMP(statut='f',typ='R'),
+ CP =SIMP(statut='f',typ='R'),
+ VISC =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_VISC_TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ VERI_P =SIMP(statut='c',typ='TXM',defaut=("TEMP",)),
+ ),
+# =================================================================================
+# --- MOT-CLE INUTILE -------------------------------------------------------------
+# =================================================================================
+ THM_VAPE_GAZ =FACT(statut='f',
+ MASS_MOL =SIMP(statut='f',typ='R'),
+ CP =SIMP(statut='f',typ='R'),
+ VISC =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_VISC_TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ VERI_P =SIMP(statut='c',typ='TXM',defaut=("TEMP",)),
+ ),
+ ),
+# =================================================================================
+# --- LOI DE COUPLAGE DE TYPE LIQU_GAZ --------------------------------------------
+# =================================================================================
+# --- PRESENCE OBLIGATOIRE DES MOT-CLES SUIVANT : ---------------------------------
+# --- THM_INIT, THM_DIFFU, THM_LIQU, THM_GAZ --------------------------------------
+# =================================================================================
+ b_liqugaz = BLOC(condition = "COMP_THM == 'LIQU_GAZ' ",
+ fr="Paramètres nécessaires pour une loi de couplage de type LIQU_GAZ",
+# =================================================================================
+# --- MOT-CLE OBLIGATOIRE ---------------------------------------------------------
+# =================================================================================
+ THM_INIT = FACT(statut='o',
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES OBLIGATOIRE -------------------------------------
+# ---------------------------------------------------------------------------------
+ PRE1 = SIMP(statut='o',typ='R'),
+ PRE2 = SIMP(statut='o',typ='R'),
+ PORO = SIMP(statut='o',typ='R'),
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES NECESSAIRE SI THERMIQUE -------------------------
+# ---------------------------------------------------------------------------------
+ TEMP = SIMP(statut='f',typ='R'),
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES INUTILES ----------------------------------------
+# ---------------------------------------------------------------------------------
+ PRES_VAPE = SIMP(statut='f',typ='R'),
+ DEGR_SATU = SIMP(statut='f',typ='R'),
+ PRES_ATMO = SIMP(statut='f',typ='R'),
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEE CACHEE ---------------------------------------------
+# ---------------------------------------------------------------------------------
+ COMP_THM = SIMP(statut='c',typ='R',defaut= 5.0,),
+ ),
+# =================================================================================
+# --- MOT-CLE OBLIGATOIRE ---------------------------------------------------------
+# =================================================================================
+ THM_DIFFU = FACT(statut='o',
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES OBLIGATOIRE -------------------------------------
+# ---------------------------------------------------------------------------------
+ R_GAZ = SIMP(statut='o',typ='R'),
+ RHO = SIMP(statut='o',typ='R'),
+ BIOT_COEF = SIMP(statut='o',typ='R'),
+ PESA_X = SIMP(statut='o',typ='R'),
+ PESA_Y = SIMP(statut='o',typ='R'),
+ PESA_Z = SIMP(statut='o',typ='R'),
+ SATU_PRES = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_SATU_PRES = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ PERM_LIQU = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_PERM_LIQU_SATU = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ PERM_GAZ = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_PERM_SATU_GAZ = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_PERM_PRES_GAZ = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES NECESSAIRE SI THERMIQUE -------------------------
+# ---------------------------------------------------------------------------------
+ CP = SIMP(statut='f',typ='R'),
+ PERM_IN = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ PERM_END = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ regles = (EXCLUS('PERM_IN','PERM_END','PERMIN_X',),
+ PRESENT_PRESENT('PERMIN_X','PERMIN_Y','PERMIN_Z',), ),
+ PERMIN_X =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ PERMIN_Y =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ PERMIN_Z =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ LAMB_PHI = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_LB_PHI = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ LAMB_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_LB_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ LAMB_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_LB_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ LAMB_CT = SIMP(statut='f',typ='R'),
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES INUTILES ----------------------------------------
+# ---------------------------------------------------------------------------------
+ EMMAG = SIMP(statut='f',typ='R'),
+ SIGMA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_SIGMA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ PERM_G_INTR = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ CHAL_VAPO = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICKV_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICKV_PV = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICKV_PG = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICKV_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_FV_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_FV_PG = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICKA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICKA_PA = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICKA_PL = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICKA_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_FA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES CACHEES -------------------------------------------
+# ---------------------------------------------------------------------------------
+ VERI_P = SIMP(statut='c',typ='TXM',defaut=("TEMP","SAT","PORO","PGAZ","PCAP","ENDO",) ),
+ ) ,
+# =================================================================================
+# --- MOT-CLE OBLIGATOIRE ---------------------------------------------------------
+# =================================================================================
+ THM_LIQU = FACT(statut='o',
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES OBLIGATOIRE -------------------------------------
+# ---------------------------------------------------------------------------------
+ RHO = SIMP(statut='o',typ='R'),
+ UN_SUR_K = SIMP(statut='o',typ='R'),
+ VISC = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_VISC_TEMP = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES NECESSAIRE SI THERMIQUE -------------------------
+# ---------------------------------------------------------------------------------
+ ALPHA = SIMP(statut='f',typ='R'),
+ CP = SIMP(statut='f',typ='R'),
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES CACHEES -------------------------------------------
+# ---------------------------------------------------------------------------------
+ VERI_P = SIMP(statut='c',typ='TXM',defaut=("TEMP",)),
+ ),
+# =================================================================================
+# --- MOT-CLE OBLIGATOIRE ---------------------------------------------------------
+# =================================================================================
+ THM_GAZ = FACT(statut='o',
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES OBLIGATOIRE -------------------------------------
+# ---------------------------------------------------------------------------------
+ MASS_MOL = SIMP(statut='o',typ='R'),
+ VISC = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_VISC_TEMP = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES NECESSAIRE SI THERMIQUE -------------------------
+# ---------------------------------------------------------------------------------
+ CP = SIMP(statut='f',typ='R'),
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES CACHEES -------------------------------------------
+# ---------------------------------------------------------------------------------
+ VERI_P = SIMP(statut='c',typ='TXM',defaut=("TEMP",)),
+ ),
+# =================================================================================
+# --- MOT-CLE INUTILE -------------------------------------------------------------
+# =================================================================================
+ THM_VAPE_GAZ =FACT(statut='f',
+ MASS_MOL =SIMP(statut='f',typ='R'),
+ CP =SIMP(statut='f',typ='R'),
+ VISC =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_VISC_TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ VERI_P =SIMP(statut='c',typ='TXM',defaut=("TEMP",)),
+ ),
+ ),
+# =================================================================================
+# --- LOI DE COUPLAGE DE TYPE GAZ -------------------------------------------------
+# =================================================================================
+# --- PRESENCE OBLIGATOIRE DES MOT-CLES SUIVANT : ---------------------------------
+# --- THM_INIT, THM_DIFFU, THM_GAZ ------------------------------------------------
+# =================================================================================
+ b_gaz = BLOC(condition = "COMP_THM == 'GAZ' ",
+ fr="Paramètres nécessaires pour une loi de couplage de type GAZ",
+# =================================================================================
+# --- MOT-CLE OBLIGATOIRE ---------------------------------------------------------
+# =================================================================================
+ THM_INIT = FACT(statut='o',
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES OBLIGATOIRE -------------------------------------
+# ---------------------------------------------------------------------------------
+ TEMP = SIMP(statut='o',typ='R'),
+ PRE1 = SIMP(statut='o',typ='R'),
+ PORO = SIMP(statut='o',typ='R'),
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES INUTILES ----------------------------------------
+# ---------------------------------------------------------------------------------
+ PRE2 = SIMP(statut='f',typ='R'),
+ PRES_VAPE = SIMP(statut='f',typ='R'),
+ DEGR_SATU = SIMP(statut='f',typ='R'),
+ PRES_ATMO = SIMP(statut='f',typ='R'),
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEE CACHEE ---------------------------------------------
+# ---------------------------------------------------------------------------------
+ COMP_THM = SIMP(statut='c',typ='R',defaut= 2.0,),
+ ),
+# =================================================================================
+# --- MOT-CLE OBLIGATOIRE ---------------------------------------------------------
+# =================================================================================
+ THM_DIFFU = FACT(statut='o',
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES OBLIGATOIRE -------------------------------------
+# ---------------------------------------------------------------------------------
+ R_GAZ = SIMP(statut='o',typ='R'),
+ RHO = SIMP(statut='o',typ='R'),
+ BIOT_COEF = SIMP(statut='o',typ='R'),
+ PESA_X = SIMP(statut='o',typ='R'),
+ PESA_Y = SIMP(statut='o',typ='R'),
+ PESA_Z = SIMP(statut='o',typ='R'),
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES NECESSAIRE SI THERMIQUE -------------------------
+# ---------------------------------------------------------------------------------
+ CP = SIMP(statut='f',typ='R'),
+ PERM_IN = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ PERM_END = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ regles = (EXCLUS('PERM_IN','PERM_END','PERMIN_X',),
+ PRESENT_PRESENT('PERMIN_X','PERMIN_Y','PERMIN_Z',), ),
+ PERMIN_X =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ PERMIN_Y =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ PERMIN_Z =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ LAMB_PHI = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_LB_PHI = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ LAMB_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_LB_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ LAMB_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_LB_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ LAMB_CT = SIMP(statut='f',typ='R'),
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES INUTILES ----------------------------------------
+# ---------------------------------------------------------------------------------
+ EMMAG = SIMP(statut='f',typ='R'),
+ SATU_PRES =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_SATU_PRES =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ PERM_LIQU =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_PERM_LIQU_SATU=SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ PERM_GAZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_PERM_SATU_GAZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_PERM_PRES_GAZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ SIGMA_T =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_SIGMA_T =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ PERM_G_INTR =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ CHAL_VAPO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICKV_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICKV_PV = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICKV_PG = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICKV_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_FV_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_FV_PG = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICKA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICKA_PA = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICKA_PL = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICKA_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_FA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES CACHEES -------------------------------------------
+# ---------------------------------------------------------------------------------
+ VERI_P =SIMP(statut='c',typ='TXM',defaut=("TEMP","SAT","PORO","PGAZ","PCAP","ENDO",) ),
+ ) ,
+# =================================================================================
+# --- MOT-CLE OBLIGATOIRE ---------------------------------------------------------
+# =================================================================================
+ THM_GAZ = FACT(statut='o',
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES OBLIGATOIRE -------------------------------------
+# ---------------------------------------------------------------------------------
+ MASS_MOL = SIMP(statut='o',typ='R'),
+ VISC = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_VISC_TEMP = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES NECESSAIRE SI THERMIQUE -------------------------
+# ---------------------------------------------------------------------------------
+ CP = SIMP(statut='f',typ='R'),
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES CACHEES -------------------------------------------
+# ---------------------------------------------------------------------------------
+ VERI_P = SIMP(statut='c',typ='TXM',defaut=("TEMP",)),
+ ),
+# =================================================================================
+# --- MOT-CLE INUTILE -------------------------------------------------------------
+# =================================================================================
+ THM_LIQU =FACT(statut='f',
+ RHO =SIMP(statut='f',typ='R'),
+ UN_SUR_K =SIMP(statut='f',typ='R'),
+ ALPHA =SIMP(statut='f',typ='R'),
+ CP =SIMP(statut='f',typ='R'),
+ VISC =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_VISC_TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ COEF_HENRY =SIMP(statut='f',typ='R'),
+ VERI_P =SIMP(statut='c',typ='TXM',defaut=("TEMP",)),
+ ),
+# =================================================================================
+# --- MOT-CLE INUTILE -------------------------------------------------------------
+# =================================================================================
+ THM_VAPE_GAZ =FACT(statut='f',
+ MASS_MOL =SIMP(statut='f',typ='R'),
+ CP =SIMP(statut='f',typ='R'),
+ VISC =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_VISC_TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ VERI_P =SIMP(statut='c',typ='TXM',defaut=("TEMP",)),
+ ),
+ ),
+# =================================================================================
+# --- LOI DE COUPLAGE DE TYPE LIQU_GAZ_ATM ----------------------------------------
+# =================================================================================
+# --- PRESENCE OBLIGATOIRE DES MOT-CLES SUIVANT : ---------------------------------
+# --- THM_INIT, THM_DIFFU, THM_LIQU, THM_GAZ --------------------------------------
+# =================================================================================
+ b_liqugazatm = BLOC(condition = "COMP_THM == 'LIQU_GAZ_ATM' ",
+ fr="Paramètres nécessaires pour une loi de couplage de type LIQU_GAZ_ATM",
+# =================================================================================
+# --- MOT-CLE OBLIGATOIRE ---------------------------------------------------------
+# =================================================================================
+ THM_INIT = FACT(statut='o',
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES OBLIGATOIRE -------------------------------------
+# ---------------------------------------------------------------------------------
+ PRE1 = SIMP(statut='o',typ='R'),
+ PORO = SIMP(statut='o',typ='R'),
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES NECESSAIRE SI THERMIQUE -------------------------
+# ---------------------------------------------------------------------------------
+ TEMP = SIMP(statut='f',typ='R'),
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES INUTILES ----------------------------------------
+# ---------------------------------------------------------------------------------
+ PRE2 = SIMP(statut='f',typ='R'),
+ PRES_VAPE = SIMP(statut='f',typ='R'),
+ DEGR_SATU = SIMP(statut='f',typ='R'),
+ PRES_ATMO = SIMP(statut='f',typ='R'),
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEE CACHEE ---------------------------------------------
+# ---------------------------------------------------------------------------------
+ COMP_THM = SIMP(statut='c',typ='R',defaut= 6.0,),
+ ),
+# =================================================================================
+# --- MOT-CLE OBLIGATOIRE ---------------------------------------------------------
+# =================================================================================
+ THM_DIFFU = FACT(statut='o',
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES OBLIGATOIRE -------------------------------------
+# ---------------------------------------------------------------------------------
+ RHO = SIMP(statut='o',typ='R'),
+ BIOT_COEF = SIMP(statut='o',typ='R'),
+ PESA_X = SIMP(statut='o',typ='R'),
+ PESA_Y = SIMP(statut='o',typ='R'),
+ PESA_Z = SIMP(statut='o',typ='R'),
+ SATU_PRES = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_SATU_PRES = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ PERM_LIQU = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_PERM_LIQU_SATU = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES NECESSAIRE SI THERMIQUE -------------------------
+# ---------------------------------------------------------------------------------
+ CP = SIMP(statut='f',typ='R'),
+ PERM_IN = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ PERM_END = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ regles = (EXCLUS('PERM_IN','PERM_END','PERMIN_X',),
+ PRESENT_PRESENT('PERMIN_X','PERMIN_Y','PERMIN_Z',), ),
+ PERMIN_X =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ PERMIN_Y =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ PERMIN_Z =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ LAMB_PHI = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_LB_PHI = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ LAMB_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_LB_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ LAMB_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_LB_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ LAMB_CT = SIMP(statut='f',typ='R'),
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES INUTILES ----------------------------------------
+# ---------------------------------------------------------------------------------
+ EMMAG = SIMP(statut='f',typ='R'),
+ R_GAZ =SIMP(statut='f',typ='R'),
+ PERM_GAZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_PERM_SATU_GAZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_PERM_PRES_GAZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ SIGMA_T =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_SIGMA_T =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ PERM_G_INTR =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ CHAL_VAPO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICKV_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICKV_PV = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICKV_PG = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICKV_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_FV_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_FV_PG = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICKA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICKA_PA = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICKA_PL = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICKA_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_FA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES CACHEES -------------------------------------------
+# ---------------------------------------------------------------------------------
+ VERI_P =SIMP(statut='c',typ='TXM',defaut=("TEMP","SAT","PORO","PGAZ","PCAP","ENDO",) ),
+ ) ,
+# =================================================================================
+# --- MOT-CLE OBLIGATOIRE ---------------------------------------------------------
+# =================================================================================
+ THM_LIQU = FACT(statut='o',
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES OBLIGATOIRE -------------------------------------
+# ---------------------------------------------------------------------------------
+ RHO = SIMP(statut='o',typ='R'),
+ UN_SUR_K = SIMP(statut='o',typ='R'),
+ VISC = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_VISC_TEMP = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES NECESSAIRE SI THERMIQUE -------------------------
+# ---------------------------------------------------------------------------------
+ ALPHA = SIMP(statut='f',typ='R'),
+ CP = SIMP(statut='f',typ='R'),
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES CACHEES -------------------------------------------
+# ---------------------------------------------------------------------------------
+ VERI_P = SIMP(statut='c',typ='TXM',defaut=("TEMP",)),
+ ),
+# =================================================================================
+# --- MOT-CLE INUTILE -------------------------------------------------------------
+# =================================================================================
+ THM_GAZ = FACT(statut='f',
+ MASS_MOL = SIMP(statut='f',typ='R'),
+ VISC = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_VISC_TEMP = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ CP = SIMP(statut='f',typ='R'),
+ VERI_P = SIMP(statut='c',typ='TXM',defaut=("TEMP",)),
+ ),
+# =================================================================================
+# --- MOT-CLE INUTILE -------------------------------------------------------------
+# =================================================================================
+ THM_VAPE_GAZ =FACT(statut='f',
+ MASS_MOL =SIMP(statut='f',typ='R'),
+ CP =SIMP(statut='f',typ='R'),
+ VISC =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_VISC_TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ VERI_P =SIMP(statut='c',typ='TXM',defaut=("TEMP",)),
+ ),
+ ),
+# =================================================================================
+# --- LOI DE COUPLAGE DE TYPE LIQU_VAPE_GAZ ---------------------------------------
+# =================================================================================
+# --- PRESENCE OBLIGATOIRE DES MOT-CLES SUIVANT : ---------------------------------
+# --- THM_INIT, THM_DIFFU, THM_LIQU, THM_GAZ, THM_VAPE_GAZ ------------------------
+# =================================================================================
+ b_liquvapegaz = BLOC(condition = "COMP_THM == 'LIQU_VAPE_GAZ' ",
+ fr="Paramètres nécessaires pour une loi de couplage de type LIQU_VAPE_GAZ",
+# =================================================================================
+# --- MOT-CLE OBLIGATOIRE ---------------------------------------------------------
+# =================================================================================
+ THM_INIT = FACT(statut='o',
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES OBLIGATOIRE -------------------------------------
+# ---------------------------------------------------------------------------------
+ PRE1 = SIMP(statut='o',typ='R'),
+ PRE2 = SIMP(statut='o',typ='R'),
+ PORO = SIMP(statut='o',typ='R'),
+ PRES_VAPE = SIMP(statut='o',typ='R'),
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES NECESSAIRE SI THERMIQUE -------------------------
+# ---------------------------------------------------------------------------------
+ TEMP = SIMP(statut='f',typ='R'),
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES INUTILES ----------------------------------------
+# ---------------------------------------------------------------------------------
+ DEGR_SATU = SIMP(statut='f',typ='R'),
+ PRES_ATMO = SIMP(statut='f',typ='R'),
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEE CACHEE ---------------------------------------------
+# ---------------------------------------------------------------------------------
+ COMP_THM = SIMP(statut='c',typ='R',defaut= 4.0,),
+ ),
+# =================================================================================
+# --- MOT-CLE OBLIGATOIRE ---------------------------------------------------------
+# =================================================================================
+ THM_DIFFU = FACT(statut='o',
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES OBLIGATOIRE -------------------------------------
+# ---------------------------------------------------------------------------------
+ R_GAZ = SIMP(statut='o',typ='R'),
+ RHO = SIMP(statut='o',typ='R'),
+ BIOT_COEF = SIMP(statut='o',typ='R'),
+ PESA_X = SIMP(statut='o',typ='R'),
+ PESA_Y = SIMP(statut='o',typ='R'),
+ PESA_Z = SIMP(statut='o',typ='R'),
+ SATU_PRES = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_SATU_PRES = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ PERM_LIQU = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_PERM_LIQU_SATU = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ PERM_GAZ = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_PERM_SATU_GAZ = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_PERM_PRES_GAZ = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICKV_T = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES NECESSAIRE SI THERMIQUE -------------------------
+# ---------------------------------------------------------------------------------
+ CP = SIMP(statut='f',typ='R'),
+ PERM_IN = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ PERM_END = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ regles = (EXCLUS('PERM_IN','PERM_END','PERMIN_X',),
+ PRESENT_PRESENT('PERMIN_X','PERMIN_Y','PERMIN_Z',), ),
+ PERMIN_X =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ PERMIN_Y =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ PERMIN_Z =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ LAMB_PHI = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_LB_PHI = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ LAMB_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_LB_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ LAMB_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_LB_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ LAMB_CT = SIMP(statut='f',typ='R'),
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES FACULTATIVE ----------------------------------
+# ---------------------------------------------------------------------------------
+ EMMAG = SIMP(statut='f',typ='R'),
+ SIGMA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_SIGMA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ PERM_G_INTR = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ CHAL_VAPO = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICKV_PV = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICKV_PG = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICKV_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_FV_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_FV_PG = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES INUTILES ----------------------------------------
+# ---------------------------------------------------------------------------------
+ FICKA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICKA_PA = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICKA_PL = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICKA_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_FA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES CACHEES -------------------------------------------
+# ---------------------------------------------------------------------------------
+ VERI_P = SIMP(statut='c',typ='TXM',defaut=("TEMP","SAT" ,"PORO","PGAZ","PCAP","ENDO","PVAP","PLIQ","PAD",) ),
+ ) ,
+# =================================================================================
+# --- MOT-CLE OBLIGATOIRE ---------------------------------------------------------
+# =================================================================================
+ THM_LIQU = FACT(statut='o',
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES OBLIGATOIRE -------------------------------------
+# ---------------------------------------------------------------------------------
+ RHO = SIMP(statut='o',typ='R'),
+ UN_SUR_K = SIMP(statut='o',typ='R'),
+ VISC = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_VISC_TEMP = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES NECESSAIRE SI THERMIQUE -------------------------
+# ---------------------------------------------------------------------------------
+ ALPHA = SIMP(statut='f',typ='R'),
+ CP = SIMP(statut='f',typ='R'),
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES CACHEES -------------------------------------------
+# ---------------------------------------------------------------------------------
+ VERI_P = SIMP(statut='c',typ='TXM',defaut=("TEMP",)),
+ ),
+# =================================================================================
+# --- MOT-CLE OBLIGATOIRE ---------------------------------------------------------
+# =================================================================================
+ THM_GAZ = FACT(statut='o',
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES OBLIGATOIRE -------------------------------------
+# ---------------------------------------------------------------------------------
+ MASS_MOL = SIMP(statut='o',typ='R'),
+ VISC = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_VISC_TEMP = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES NECESSAIRE SI THERMIQUE -------------------------
+# ---------------------------------------------------------------------------------
+ CP = SIMP(statut='f',typ='R'),
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES CACHEES -------------------------------------------
+# ---------------------------------------------------------------------------------
+ VERI_P = SIMP(statut='c',typ='TXM',defaut=("TEMP",)),
+ ),
+# =================================================================================
+# --- MOT-CLE OBLIGATOIRE ---------------------------------------------------------
+# =================================================================================
+ THM_VAPE_GAZ = FACT(statut='o',
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES OBLIGATOIRE -------------------------------------
+# ---------------------------------------------------------------------------------
+ MASS_MOL = SIMP(statut='o',typ='R'),
+ CP = SIMP(statut='o',typ='R'),
+ VISC = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_VISC_TEMP = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES CACHEES -------------------------------------------
+# ---------------------------------------------------------------------------------
+ VERI_P = SIMP(statut='c',typ='TXM',defaut=("TEMP",)),
+ ),
+ ),
+# =================================================================================
+# --- LOI DE COUPLAGE DE TYPE LIQU_AD_GAZ_VAPE -------------------------------------
+# =================================================================================
+# --- PRESENCE OBLIGATOIRE DES MOT-CLES SUIVANT : ---------------------------------
+# --- THM_INIT, THM_DIFFU, THM_LIQU, THM_GAZ, THM_VAPE_GAZ THM_AIR_DISSOUS---------
+# =================================================================================
+ b_liquadvape = BLOC(condition = "COMP_THM == 'LIQU_AD_GAZ_VAPE' ",
+ fr="Paramètres nécessaires pour une loi de couplage de type LIQU_AD_GAZ_VAPE",
+# =================================================================================
+# --- MOT-CLE OBLIGATOIRE ---------------------------------------------------------
+# =================================================================================
+ THM_INIT = FACT(statut='o',
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES OBLIGATOIRE -------------------------------------
+# ---------------------------------------------------------------------------------
+ PRE1 = SIMP(statut='o',typ='R'),
+ PRE2 = SIMP(statut='o',typ='R'),
+ PORO = SIMP(statut='o',typ='R'),
+ PRES_VAPE = SIMP(statut='o',typ='R'),
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES NECESSAIRE SI THERMIQUE -------------------------
+# ---------------------------------------------------------------------------------
+ TEMP = SIMP(statut='f',typ='R'),
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES INUTILES ----------------------------------------
+# ---------------------------------------------------------------------------------
+ DEGR_SATU = SIMP(statut='f',typ='R'),
+ PRES_ATMO = SIMP(statut='f',typ='R'),
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEE CACHEE ---------------------------------------------
+# ---------------------------------------------------------------------------------
+ COMP_THM = SIMP(statut='c',typ='R',defaut= 9.0,),
+ ),
+# =================================================================================
+# --- MOT-CLE OBLIGATOIRE ---------------------------------------------------------
+# =================================================================================
+ THM_DIFFU = FACT(statut='o',
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES OBLIGATOIRE -------------------------------------
+# ---------------------------------------------------------------------------------
+ R_GAZ = SIMP(statut='o',typ='R'),
+ RHO = SIMP(statut='o',typ='R'),
+ BIOT_COEF = SIMP(statut='o',typ='R'),
+ PESA_X = SIMP(statut='o',typ='R'),
+ PESA_Y = SIMP(statut='o',typ='R'),
+ PESA_Z = SIMP(statut='o',typ='R'),
+ SATU_PRES = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_SATU_PRES = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ PERM_LIQU = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_PERM_LIQU_SATU = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ PERM_GAZ = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_PERM_SATU_GAZ = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_PERM_PRES_GAZ = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICKV_T = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICKA_T = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES NECESSAIRE SI THERMIQUE -------------------------
+# ---------------------------------------------------------------------------------
+ CP = SIMP(statut='f',typ='R'),
+ PERM_IN = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ PERM_END = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ regles = (EXCLUS('PERM_IN','PERM_END','PERMIN_X',),
+ PRESENT_PRESENT('PERMIN_X','PERMIN_Y','PERMIN_Z',), ),
+ PERMIN_X =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ PERMIN_Y =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ PERMIN_Z =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ LAMB_PHI = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_LB_PHI = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ LAMB_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_LB_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ LAMB_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_LB_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ LAMB_CT = SIMP(statut='f',typ='R'),
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES FACULTATIVES ------------------------------------
+# ---------------------------------------------------------------------------------
+ EMMAG = SIMP(statut='f',typ='R'),
+ SIGMA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_SIGMA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ PERM_G_INTR = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ CHAL_VAPO = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICKV_PV = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICKV_PG = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICKV_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_FV_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_FV_PG = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+#
+ FICKA_PA = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICKA_PL = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICKA_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_FA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES CACHEES -------------------------------------------
+# ---------------------------------------------------------------------------------
+ VERI_P = SIMP(statut='c',typ='TXM',defaut=("TEMP","SAT","PORO","PGAZ","PCAP","ENDO","PVAP","PLIQ","PAD",) ),
+ ) ,
+# =================================================================================
+# --- MOT-CLE OBLIGATOIRE ---------------------------------------------------------
+# =================================================================================
+ THM_LIQU = FACT(statut='o',
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES OBLIGATOIRE -------------------------------------
+# ---------------------------------------------------------------------------------
+ RHO = SIMP(statut='o',typ='R'),
+ UN_SUR_K = SIMP(statut='o',typ='R'),
+ VISC = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_VISC_TEMP = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES NECESSAIRE SI THERMIQUE -------------------------
+# ---------------------------------------------------------------------------------
+ ALPHA = SIMP(statut='f',typ='R'),
+ CP = SIMP(statut='f',typ='R'),
+ LAMB_PHI = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_LB_PHI = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ LAMB_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_LB_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ LAMB_CT = SIMP(statut='f',typ='R'),
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES CACHEES -------------------------------------------
+# ---------------------------------------------------------------------------------
+ VERI_P = SIMP(statut='c',typ='TXM',defaut=("TEMP",)),
+ ),
+# =================================================================================
+# --- MOT-CLE OBLIGATOIRE ---------------------------------------------------------
+# =================================================================================
+ THM_GAZ = FACT(statut='o',
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES OBLIGATOIRE -------------------------------------
+# ---------------------------------------------------------------------------------
+ MASS_MOL = SIMP(statut='o',typ='R'),
+ VISC = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_VISC_TEMP = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES NECESSAIRE SI THERMIQUE -------------------------
+# ---------------------------------------------------------------------------------
+ CP = SIMP(statut='f',typ='R'),
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES CACHEES -------------------------------------------
+# ---------------------------------------------------------------------------------
+ VERI_P = SIMP(statut='c',typ='TXM',defaut=("TEMP",)),
+ ),
+# =================================================================================
+# --- MOT-CLE OBLIGATOIRE ---------------------------------------------------------
+# =================================================================================
+ THM_VAPE_GAZ = FACT(statut='o',
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES OBLIGATOIRE -------------------------------------
+# ---------------------------------------------------------------------------------
+ MASS_MOL = SIMP(statut='o',typ='R'),
+ CP = SIMP(statut='o',typ='R'),
+ VISC = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_VISC_TEMP = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES CACHEES -------------------------------------------
+# ---------------------------------------------------------------------------------
+ VERI_P = SIMP(statut='c',typ='TXM',defaut=("TEMP",)),
+ ),
+# =================================================================================
+# --- MOT-CLE OBLIGATOIRE ---------------------------------------------------------
+# =================================================================================
+ THM_AIR_DISS = FACT(statut='o',
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES OBLIGATOIRE -------------------------------------
+# ---------------------------------------------------------------------------------
+ CP = SIMP(statut='o',typ='R'),
+ COEF_HENRY = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ VERI_P = SIMP(statut='c',typ='TXM',defaut=("TEMP",),),
+ ),
+ ),
+# =================================================================================
+# --- LOI DE COUPLAGE DE TYPE LIQU_VAPE -------------------------------------------
+# =================================================================================
+# --- PRESENCE OBLIGATOIRE DES MOT-CLES SUIVANT : ---------------------------------
+# --- THM_INIT, THM_DIFFU, THM_LIQU, THM_VAPE_GAZ ---------------------------------
+# =================================================================================
+ b_liquvape = BLOC(condition = "COMP_THM == 'LIQU_VAPE' ",
+ fr="Paramètres nécessaires pour une loi de couplage de type LIQU_VAPE",
+# =================================================================================
+# --- MOT-CLE OBLIGATOIRE ---------------------------------------------------------
+# =================================================================================
+ THM_INIT = FACT(statut='o',
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES OBLIGATOIRE -------------------------------------
+# ---------------------------------------------------------------------------------
+ PRE1 = SIMP(statut='o',typ='R'),
+ PORO = SIMP(statut='o',typ='R'),
+ PRES_VAPE = SIMP(statut='o',typ='R'),
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES NECESSAIRE SI THERMIQUE -------------------------
+# ---------------------------------------------------------------------------------
+ TEMP = SIMP(statut='f',typ='R'),
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES INUTILES ----------------------------------------
+# ---------------------------------------------------------------------------------
+ PRE2 = SIMP(statut='f',typ='R'),
+ DEGR_SATU = SIMP(statut='f',typ='R'),
+ PRES_ATMO = SIMP(statut='f',typ='R'),
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEE CACHEE ---------------------------------------------
+# ---------------------------------------------------------------------------------
+ COMP_THM = SIMP(statut='c',typ='R',defaut= 3.0,),
+ ),
+# =================================================================================
+# --- MOT-CLE OBLIGATOIRE ---------------------------------------------------------
+# =================================================================================
+ THM_DIFFU = FACT(statut='o',
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES OBLIGATOIRE -------------------------------------
+# ---------------------------------------------------------------------------------
+ R_GAZ = SIMP(statut='o',typ='R'),
+ RHO = SIMP(statut='o',typ='R'),
+ BIOT_COEF = SIMP(statut='o',typ='R'),
+ PESA_X = SIMP(statut='o',typ='R'),
+ PESA_Y = SIMP(statut='o',typ='R'),
+ PESA_Z = SIMP(statut='o',typ='R'),
+ SATU_PRES = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_SATU_PRES = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ PERM_LIQU = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_PERM_LIQU_SATU = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ PERM_GAZ = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_PERM_SATU_GAZ = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_PERM_PRES_GAZ = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES NECESSAIRE SI THERMIQUE -------------------------
+# ---------------------------------------------------------------------------------
+ CP = SIMP(statut='f',typ='R'),
+ PERM_IN = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ PERM_END = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ regles = (EXCLUS('PERM_IN','PERM_END','PERMIN_X',),
+ PRESENT_PRESENT('PERMIN_X','PERMIN_Y','PERMIN_Z',), ),
+ PERMIN_X =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ PERMIN_Y =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ PERMIN_Z =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ LAMB_PHI = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_LB_PHI = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ LAMB_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_LB_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ LAMB_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_LB_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ LAMB_CT = SIMP(statut='f',typ='R'),
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES INUTILES ----------------------------------------
+# ---------------------------------------------------------------------------------
+ EMMAG = SIMP(statut='f',typ='R'),
+ SIGMA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_SIGMA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ PERM_G_INTR = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ CHAL_VAPO = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICKV_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICKV_PV = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICKV_PG = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICKV_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_FV_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_FV_PG = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICKA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICKA_PA = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICKA_PL = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICKA_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_FA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES CACHEES -------------------------------------------
+# ---------------------------------------------------------------------------------
+ VERI_P = SIMP(statut='c',typ='TXM',defaut=("TEMP","SAT","PORO","PGAZ","PCAP","ENDO",) ),
+ ) ,
+# =================================================================================
+# --- MOT-CLE OBLIGATOIRE ---------------------------------------------------------
+# =================================================================================
+ THM_LIQU = FACT(statut='o',
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES OBLIGATOIRE -------------------------------------
+# ---------------------------------------------------------------------------------
+ RHO = SIMP(statut='o',typ='R'),
+ UN_SUR_K = SIMP(statut='o',typ='R'),
+ VISC = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_VISC_TEMP = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES NECESSAIRE SI THERMIQUE -------------------------
+# ---------------------------------------------------------------------------------
+ ALPHA = SIMP(statut='f',typ='R'),
+ CP = SIMP(statut='f',typ='R'),
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES CACHEES ---------------------------------------------
+# ---------------------------------------------------------------------------------
+ VERI_P = SIMP(statut='c',typ='TXM',defaut=("TEMP",)),
+ ),
+# =================================================================================
+# --- MOT-CLE OBLIGATOIRE ---------------------------------------------------------
+# =================================================================================
+ THM_VAPE_GAZ = FACT(statut='o',
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES OBLIGATOIRE -------------------------------------
+# ---------------------------------------------------------------------------------
+ MASS_MOL = SIMP(statut='o',typ='R'),
+ CP = SIMP(statut='o',typ='R'),
+ VISC = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_VISC_TEMP = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEES CACHEES -------------------------------------------
+# ---------------------------------------------------------------------------------
+ VERI_P = SIMP(statut='c',typ='TXM',defaut=("TEMP",)),
+ ),
+# =================================================================================
+# --- MOT-CLE INUTILE -------------------------------------------------------------
+# =================================================================================
+ THM_GAZ =FACT(statut='f',
+ MASS_MOL =SIMP(statut='f',typ='R'),
+ CP =SIMP(statut='f',typ='R'),
+ VISC =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_VISC_TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ VERI_P =SIMP(statut='c',typ='TXM',defaut=("TEMP",)),
+ ),
+ ),
+# =================================================================================
+ b_liqusatugat = BLOC(condition = "COMP_THM == 'LIQU_SATU_GAT' ",
+ fr="Paramètres nécessaires pour une loi de couplage de type LIQU_SATU_GAT",
+ THM_LIQU =FACT(statut='f',
+ RHO =SIMP(statut='o',typ='R'),
+ UN_SUR_K =SIMP(statut='f',typ='R'),
+ ALPHA =SIMP(statut='f',typ='R'),
+ CP =SIMP(statut='f',typ='R'),
+ VISC =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_VISC_TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ LAMBDA =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_LAMBDA_TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ COEF_HENRY =SIMP(statut='f',typ='R'),
+ VERI_P =SIMP(statut='c',typ='TXM',defaut=("TEMP",)),
+ ),
+ THM_GAZ =FACT(statut='f',
+ MASS_MOL =SIMP(statut='f',typ='R'),
+ CP =SIMP(statut='f',typ='R'),
+ VISC =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_VISC_TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ LAMBDA =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_LAMBDA_TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ VERI_P =SIMP(statut='c',typ='TXM',defaut=("TEMP",)),
+ ),
+ THM_VAPE_GAZ =FACT(statut='f',
+ MASS_MOL =SIMP(statut='f',typ='R'),
+ CP =SIMP(statut='f',typ='R'),
+ VISC =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_VISC_TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ VERI_P =SIMP(statut='c',typ='TXM',defaut=("TEMP",)),
+ ),
+ THM_AIR_DISS = FACT(statut='f',
+ CP = SIMP(statut='f',typ='R'),
+ COEF_HENRY = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ VERI_P = SIMP(statut='c',typ='TXM',defaut=("TEMP",),),
+ ),
+ THM_INIT =FACT(statut='f',
+ TEMP =SIMP(statut='o',typ='R'),
+ PRE1 =SIMP(statut='o',typ='R'),
+ PRE2 =SIMP(statut='o',typ='R'),
+ PORO =SIMP(statut='o',typ='R'),
+ PRES_VAPE =SIMP(statut='o',typ='R'),
+ DEGR_SATU =SIMP(statut='f',typ='R'),
+ PRES_ATMO =SIMP(statut='f',typ='R'),
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEE CACHEE ---------------------------------------------
+# ---------------------------------------------------------------------------------
+ COMP_THM = SIMP(statut='c',typ='R',defaut= 7.0,),
+ ),
+ THM_DIFFU =FACT(statut='f',
+ R_GAZ =SIMP(statut='o',typ='R'),
+ RHO =SIMP(statut='f',typ='R'),
+ CP =SIMP(statut='f',typ='R'),
+ BIOT_COEF =SIMP(statut='f',typ='R'),
+ SATU_PRES =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_SATU_PRES =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ PESA_X =SIMP(statut='f',typ='R'),
+ PESA_Y =SIMP(statut='f',typ='R'),
+ PESA_Z =SIMP(statut='f',typ='R'),
+ PERM_IN =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ PERM_END =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ regles = (EXCLUS('PERM_IN','PERM_END','PERMIN_X',),
+ PRESENT_PRESENT('PERMIN_X','PERMIN_Y','PERMIN_Z',), ),
+ PERMIN_X =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ PERMIN_Y =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ PERMIN_Z =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ PERM_LIQU =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_PERM_LIQU_SATU=SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ PERM_GAZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_PERM_SATU_GAZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_PERM_PRES_GAZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICK =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_FICK_TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_FICK_GAZ_PRES =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ LAMBDA =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_LAMBDA_TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ SIGMA_T =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_SIGMA_T =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ PERM_G_INTR =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ CHAL_VAPO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICKV_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICKV_PV = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICKV_PG = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICKV_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_FV_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_FV_PG = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICKA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICKA_PA = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICKA_PL = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICKA_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_FA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ VERI_P = SIMP(statut='c',typ='TXM',defaut=("TEMP","SAT","PORO","PGAZ","PCAP","ENDO",) ),
+ ),
+ ),
+ b_liqunsatgat = BLOC(condition = "COMP_THM == 'LIQU_NSAT_GAT' ",
+ fr="Paramètres nécessaires pour une loi de couplage de type LIQU_NSAT_GAT",
+ THM_LIQU =FACT(statut='f',
+ RHO =SIMP(statut='o',typ='R'),
+ UN_SUR_K =SIMP(statut='f',typ='R'),
+ ALPHA =SIMP(statut='f',typ='R'),
+ CP =SIMP(statut='f',typ='R'),
+ VISC =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_VISC_TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ LAMBDA =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_LAMBDA_TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ COEF_HENRY =SIMP(statut='f',typ='R'),
+ VERI_P =SIMP(statut='c',typ='TXM',defaut=("TEMP",)),
+ ),
+ THM_GAZ =FACT(statut='f',
+ MASS_MOL =SIMP(statut='f',typ='R'),
+ CP =SIMP(statut='f',typ='R'),
+ VISC =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_VISC_TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ LAMBDA =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_LAMBDA_TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ VERI_P =SIMP(statut='c',typ='TXM',defaut=("TEMP",)),
+ ),
+ THM_AIR_DISS = FACT(statut='f',
+ CP = SIMP(statut='f',typ='R'),
+ COEF_HENRY = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ ),
+ THM_VAPE_GAZ =FACT(statut='f',
+ MASS_MOL =SIMP(statut='f',typ='R'),
+ CP =SIMP(statut='f',typ='R'),
+ VISC =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_VISC_TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ VERI_P =SIMP(statut='c',typ='TXM',defaut=("TEMP",)),
+ ),
+ THM_INIT =FACT(statut='f',
+ TEMP =SIMP(statut='o',typ='R'),
+ PRE1 =SIMP(statut='o',typ='R'),
+ PRE2 =SIMP(statut='o',typ='R'),
+ PORO =SIMP(statut='o',typ='R'),
+ PRES_VAPE =SIMP(statut='o',typ='R'),
+ DEGR_SATU =SIMP(statut='f',typ='R'),
+ PRES_ATMO =SIMP(statut='f',typ='R'),
+# ---------------------------------------------------------------------------------
+# ------------------- DONNEE CACHEE ---------------------------------------------
+# ---------------------------------------------------------------------------------
+ COMP_THM = SIMP(statut='c',typ='R',defaut= 8.0,),
+ ),
+ THM_DIFFU =FACT(statut='f',
+ R_GAZ =SIMP(statut='o',typ='R'),
+ RHO =SIMP(statut='f',typ='R'),
+ CP =SIMP(statut='f',typ='R'),
+ BIOT_COEF =SIMP(statut='f',typ='R'),
+ SATU_PRES =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_SATU_PRES =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ PESA_X =SIMP(statut='f',typ='R'),
+ PESA_Y =SIMP(statut='f',typ='R'),
+ PESA_Z =SIMP(statut='f',typ='R'),
+ PERM_IN =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ PERM_END =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ regles = (EXCLUS('PERM_IN','PERM_END','PERMIN_X',),
+ PRESENT_PRESENT('PERMIN_X','PERMIN_Y','PERMIN_Z',), ),
+ PERMIN_X =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ PERMIN_Y =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ PERMIN_Z =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ PERM_LIQU =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_PERM_LIQU_SATU=SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ PERM_GAZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_PERM_SATU_GAZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_PERM_PRES_GAZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICK =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_FICK_TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_FICK_GAZ_PRES =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ LAMBDA =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_LAMBDA_TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ SIGMA_T =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_SIGMA_T =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ PERM_G_INTR =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ CHAL_VAPO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICKV_T =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICKV_PV =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICKV_PG =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICKV_S =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_FV_T =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_FV_PG =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICKA_T =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICKA_PA =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICKA_PL =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ FICKA_S =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ D_FA_T =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ VERI_P =SIMP(statut='c',typ='TXM',defaut=("TEMP","SAT","PORO","PGAZ","PCAP","ENDO",) ),
+ ),
+ ),
+# courbes et coefficients associés à la fatigue et au dommage
+#
+ FATIGUE =FACT(statut='f',
+ regles=(PRESENT_ABSENT('WOHLER','A_BASQUIN','BETA_BASQUIN'),
+ PRESENT_ABSENT('WOHLER','A0','A1','A2','A3','SL'),
+ PRESENT_ABSENT('A_BASQUIN','A0','A1','A2','A3','SL'),
+ ENSEMBLE('A_BASQUIN','BETA_BASQUIN'),
+ ENSEMBLE('A0','A1','A2','A3','SL'),
+ PRESENT_PRESENT('A0','E_REFE'),
+ ENSEMBLE('D0','TAU0'),),
+ WOHLER =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ A_BASQUIN =SIMP(statut='f',typ='R'),
+ BETA_BASQUIN =SIMP(statut='f',typ='R'),
+ A0 =SIMP(statut='f',typ='R'),
+ A1 =SIMP(statut='f',typ='R'),
+ A2 =SIMP(statut='f',typ='R'),
+ A3 =SIMP(statut='f',typ='R'),
+ SL =SIMP(statut='f',typ='R'),
+ MANSON_COFFIN =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ E_REFE =SIMP(statut='f',typ='R'),
+ D0 =SIMP(statut='f',typ='R'),
+ TAU0 =SIMP(statut='f',typ='R'),
+ VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("SIGM","EPSI",) ),
+ ),
+ DOMMA_LEMAITRE =FACT(statut='f',
+ S =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ EPSP_SEUIL =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ EXP_S =SIMP(statut='f',typ='R',val_min=0.0E0,defaut=1.0),
+ VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP",) ),
+ ),
+ CISA_PLAN_CRIT =FACT(statut='f',
+ CRITERE =SIMP(statut='o',typ='TXM',into=("MATAKE","DANG_VAN_MODI_AC","DANG_VAN_MODI_AV","DOMM_MAXI") ),
+
+ b_critere_matake =BLOC(condition="CRITERE=='MATAKE'",
+ fr="Cisaillement plan critique critère de matake",
+ MATAKE_A =SIMP(statut='o',typ='R'),
+ MATAKE_B =SIMP(statut='o',typ='R'),
+ COEF_FLEX_TORS =SIMP(statut='o',typ='R',val_min=1.0E0,val_max=1.7321E0),
+ ),
+
+ b_critere_dang_van =BLOC(condition="(CRITERE=='DANG_VAN_MODI_AC' or CRITERE=='DANG_VAN_MODI_AV')",
+ fr="Critère de Dang Van modifié pour les cas amplitude constante et amplitude variable",
+ D_VAN_A =SIMP(statut='o',typ='R'),
+ D_VAN_B =SIMP(statut='o',typ='R'),
+ COEF_CISA_TRAC =SIMP(statut='o',typ='R',val_min=1.0E0,val_max=1.7321E0),
+ ),
+
+ b_crit_domm_maxi =BLOC(condition="CRITERE=='DOMM_MAXI'",
+ fr="Critère pour chargement non périodique : domm_maxi",
+ DOMM_A =SIMP(statut='o',typ='R'),
+ DOMM_B =SIMP(statut='o',typ='R'),
+ COEF_CISA_TRAC =SIMP(statut='o',typ='R',val_min=1.0E0,val_max=1.7321E0),
+ ),
+ ),
+#
+# autres comportements ...
+#
+ WEIBULL =FACT(statut='f',
+ M =SIMP(statut='o',typ='R'),
+ VOLU_REFE =SIMP(statut='o',typ='R'),
+ SIGM_REFE =SIMP(statut='o',typ='R'),
+ SEUIL_EPSP_CUMU =SIMP(statut='f',typ='R',defaut= 1.0E-6),
+ ),
+ WEIBULL_FO =FACT(statut='f',
+ M =SIMP(statut='o',typ='R'),
+ VOLU_REFE =SIMP(statut='o',typ='R'),
+ SIGM_CNV =SIMP(statut='o',typ='R'),
+ SIGM_REFE =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ SEUIL_EPSP_CUMU =SIMP(statut='f',typ='R',defaut= 1.0E-6),
+ VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP",) ),
+ ),
+ NON_LOCAL =FACT(statut='f',
+ LONG_CARA =SIMP(statut='o',typ='R'),
+ COEF_RIGI_MINI =SIMP(statut='f',typ='R'),
+ ),
+ RUPT_FRAG =FACT(statut='f',
+ GC =SIMP(statut='o',typ='R'),
+ SIGM_C =SIMP(statut='f',typ='R'),
+ SAUT_C =SIMP(statut='f',typ='R'),
+ ),
+ RCCM =FACT(statut='f',
+ SY_02 =SIMP(statut='f',typ='R'),
+ SM =SIMP(statut='f',typ='R'),
+ SU =SIMP(statut='f',typ='R'),
+ SC =SIMP(statut='f',typ='R'),
+ SH =SIMP(statut='f',typ='R'),
+ N_KE =SIMP(statut='f',typ='R'),
+ M_KE =SIMP(statut='f',typ='R'),
+ ),
+ RCCM_FO =FACT(statut='f',
+ SY_02 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ SM =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ SU =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ S =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ N_KE =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ M_KE =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP",) ),
+ ),
+ LAIGLE =FACT(statut='f',
+ GAMMA_ULT =SIMP(statut='o',typ='R'),
+ GAMMA_E =SIMP(statut='o',typ='R'),
+ M_ULT =SIMP(statut='o',typ='R'),
+ M_E =SIMP(statut='o',typ='R'),
+ A_E =SIMP(statut='o',typ='R'),
+ M_PIC =SIMP(statut='o',typ='R'),
+ A_PIC =SIMP(statut='o',typ='R'),
+ ETA =SIMP(statut='o',typ='R'),
+ SIGMA_C =SIMP(statut='o',typ='R'),
+ GAMMA =SIMP(statut='o',typ='R'),
+ KSI =SIMP(statut='o',typ='R'),
+ GAMMA_CJS =SIMP(statut='o',typ='R'),
+ SIGMA_P1 =SIMP(statut='o',typ='R'),
+ PA =SIMP(statut='o',typ='R'),
+ ),
+ DRUCK_PRAGER =FACT(statut='f',
+ ALPHA =SIMP(statut='o',typ='R'),
+ SY =SIMP(statut='o',typ='R'),
+ P_ULTM =SIMP(statut='o',typ='R'),
+ ECROUISSAGE = SIMP(statut='o',typ='TXM',into=("LINEAIRE","PARABOLIQUE")),
+ b_lineaire =BLOC(condition="ECROUISSAGE=='LINEAIRE'",
+ fr="Loi de comportement de type Drucker Prager avec un ecrouissage lineaire",
+ H =SIMP(statut='o',typ='R'),
+ TYPE_DP =SIMP(statut='c',typ='R',defaut= 1.0,),
+ ),
+ b_parabolique =BLOC(condition="ECROUISSAGE=='PARABOLIQUE'",
+ fr="Loi de comportement de type Drucker Prager avec un ecrouissage parabolique",
+ SY_ULTM =SIMP(statut='o',typ='R'),
+ TYPE_DP =SIMP(statut='c',typ='R',defaut= 2.0,),
+ ),
+ ),
+#### MONOCRISTAL
+
+ ECOU_VISC1 =FACT(statut='f',
+ TYPE_PARA =SIMP(statut='f',typ='TXM',into=("ECOU_VISC",),),
+ N =SIMP(statut='o',typ='R'),
+ K =SIMP(statut='o',typ='R'),
+ C =SIMP(statut='o',typ='R'),
+ ),
+ ECOU_VISC2 =FACT(statut='f',
+ TYPE_PARA =SIMP(statut='f',typ='TXM',into=("ECOU_VISC",),),
+ N =SIMP(statut='o',typ='R'),
+ K =SIMP(statut='o',typ='R'),
+ C =SIMP(statut='o',typ='R'),
+ D =SIMP(statut='o',typ='R'),
+ A =SIMP(statut='o',typ='R'),
+ ),
+ ECOU_VISC3 =FACT(statut='f',
+ TYPE_PARA =SIMP(statut='f',typ='TXM',into=("ECOU_VISC",),),
+ K =SIMP(statut='o',typ='R',fr="Constante de Boltzmann, en eV/K"),
+ TAUMU =SIMP(statut='o',typ='R',fr="Seuil d ecoulement, en unite de contraintes"),
+ GAMMA0 =SIMP(statut='o',typ='R',fr="Vitesse d ecoulement initiale"),
+ DELTAV =SIMP(statut='o',typ='R',fr="Volume d activation"),
+ DELTAG0 =SIMP(statut='o',typ='R',fr="Gain d energie lie au franchissement d obstacle"),
+ ),
+ ECOU_PLAS1 =FACT(statut='f',
+ TYPE_PARA =SIMP(statut='f',typ='TXM',into=("ECOU_PLAS",),),
+ C =SIMP(statut='o',typ='R'),
+ ),
+ ECRO_ISOT1 =FACT(statut='f',
+ TYPE_PARA =SIMP(statut='f',typ='TXM',into=("ECRO_ISOT",),),
+ R_0 =SIMP(statut='o',typ='R'),
+ Q =SIMP(statut='o',typ='R'),
+ B =SIMP(statut='o',typ='R'),
+ H =SIMP(statut='o',typ='R'),
+ ),
+ ECRO_ISOT2 =FACT(statut='f',
+ TYPE_PARA =SIMP(statut='f',typ='TXM',into=("ECRO_ISOT",),),
+ R_0 =SIMP(statut='o',typ='R'),
+ Q1 =SIMP(statut='o',typ='R'),
+ B1 =SIMP(statut='o',typ='R'),
+ H =SIMP(statut='o',typ='R'),
+ Q2 =SIMP(statut='o',typ='R'),
+ B2 =SIMP(statut='o',typ='R'),
+ ),
+ ECRO_CINE1 =FACT(statut='f',
+ TYPE_PARA =SIMP(statut='f',typ='TXM',into=("ECRO_CINE",),),
+ D =SIMP(statut='o',typ='R'),
+ ),
+ ECRO_CINE2 =FACT(statut='f',
+ TYPE_PARA =SIMP(statut='f',typ='TXM',into=("ECRO_CINE",),),
+ D =SIMP(statut='o',typ='R'),
+ GM =SIMP(statut='o',typ='R'),
+ PM =SIMP(statut='o',typ='R'),
+ C =SIMP(statut='o',typ='R'),
+ ),
+
+#### MONOCRISTAL
+
+ DRUCK_PRAGER_FO =FACT(statut='f',
+ ALPHA =SIMP(statut='o',typ=(fonction_sdaster,formule)),
+ SY =SIMP(statut='o',typ=(fonction_sdaster,formule)),
+ P_ULTM =SIMP(statut='o',typ=(fonction_sdaster,formule)),
+ ECROUISSAGE = SIMP(statut='o',typ='TXM',into=("LINEAIRE","PARABOLIQUE")),
+ b_lineaire =BLOC(condition="ECROUISSAGE=='LINEAIRE'",
+ fr="Loi de comportement de type Drucker Prager avec un ecrouissage lineaire",
+ H =SIMP(statut='o',typ=(fonction_sdaster,formule)),
+ TYPE_DP =SIMP(statut='c',typ='R',defaut= 1.0,),
+ ),
+ b_parabolique =BLOC(condition="ECROUISSAGE=='PARABOLIQUE'",
+ fr="Loi de comportement de type Drucker Prager avec un ecrouissage parabolique",
+ SY_ULTM =SIMP(statut='o',typ=(fonction_sdaster,formule)),
+ TYPE_DP =SIMP(statut='c',typ='R',defaut= 2.0,),
+ ),
+ ),
+
+
+ INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
+) ;
+#& MODIF COMMANDE DATE 30/08/2004 AUTEUR NICOLAS O.NICOLAS
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+DEFI_MODELE_GENE=OPER(nom="DEFI_MODELE_GENE",op= 126,sd_prod=modele_gene,
+ reentrant='n',
+ UIinfo={"groupes":("Matrices/vecteurs",)},
+ SOUS_STRUC =FACT(statut='o',max='**',
+ NOM =SIMP(statut='o',typ='TXM' ),
+ MACR_ELEM_DYNA =SIMP(statut='o',typ=macr_elem_dyna ),
+ ANGL_NAUT =SIMP(statut='f',typ='R',max=3),
+ TRANS =SIMP(statut='f',typ='R',max=3),
+ ),
+ LIAISON =FACT(statut='o',max='**',
+ SOUS_STRUC_1 =SIMP(statut='o',typ='TXM' ),
+ INTERFACE_1 =SIMP(statut='o',typ='TXM' ),
+ SOUS_STRUC_2 =SIMP(statut='o',typ='TXM' ),
+ INTERFACE_2 =SIMP(statut='o',typ='TXM' ),
+ regles=(EXCLUS('GROUP_MA_MAIT_1','GROUP_MA_MAIT_2','MAILLE_MAIT_2'),
+ EXCLUS('MAILLE_MAIT_1','GROUP_MA_MAIT_2','MAILLE_MAIT_2'),),
+ GROUP_MA_MAIT_1 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE_MAIT_1 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA_MAIT_2 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE_MAIT_2 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ OPTION =SIMP(statut='f',typ='TXM',defaut="CLASSIQUE",into=("REDUIT","CLASSIQUE") ),
+ ),
+ VERIF =FACT(statut='f',max='**',
+# dans la doc U stop_erreur est obligatoire
+ STOP_ERREUR =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+ PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ),
+ CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
+ ),
+ INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
+) ;
+#& MODIF COMMANDE DATE 10/10/2005 AUTEUR MCOURTOI M.COURTOIS
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+DEFI_NAPPE=OPER(nom="DEFI_NAPPE",op= 4,sd_prod=nappe_sdaster,
+ fr="Définition des valeurs d une fonction de deux variables réelles",
+ reentrant='n',
+ UIinfo={"groupes":("Fonction",)},
+ regles=(UN_PARMI('FONCTION','DEFI_FONCTION'),
+ EXCLUS('FONCTION','NOM_PARA_FONC',),
+ ENSEMBLE('NOM_PARA_FONC','DEFI_FONCTION'),),
+ NOM_PARA =SIMP(statut='o',typ='TXM',),
+ NOM_RESU =SIMP(statut='f',typ='TXM',defaut="TOUTRESU"),
+ PARA =SIMP(statut='o',typ='R',max='**'),
+ FONCTION =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),max='**' ),
+ NOM_PARA_FONC =SIMP(statut='f',typ='TXM',into=("TEMP","INST","X","Y","Z","EPSI","FREQ",
+ "PULS","AMOR","EPAIS","SAT", "PGAZ","PCAP") ),
+ DEFI_FONCTION =FACT(statut='f',max='**',
+ VALE =SIMP(statut='o',typ='R',max='**'),
+ INTERPOL =SIMP(statut='f',typ='TXM',max=2,defaut="LIN",into=("NON","LIN","LOG") ),
+ PROL_DROITE =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU") ),
+ PROL_GAUCHE =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU") ),
+ ),
+ INTERPOL =SIMP(statut='f',typ='TXM',max=2,defaut="LIN",into=("NON","LIN","LOG") ),
+ PROL_DROITE =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU") ),
+ PROL_GAUCHE =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU") ),
+ INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
+ VERIF =SIMP(statut='f',typ='TXM',into=("CROISSANT",) ),
+ TITRE =SIMP(statut='f',typ='TXM',max='**'),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+DEFI_OBSTACLE=OPER(nom="DEFI_OBSTACLE",op= 73,sd_prod=obstacle_sdaster
+ ,fr="Définition d un obstacle plan perpendiculaire à une structure filaire",
+ reentrant='n',
+ UIinfo={"groupes":("Modélisation",)},
+ TYPE =SIMP(statut='o',typ='TXM',defaut="CERCLE",
+ into=("CERCLE","PLAN_Y","PLAN_Z","DISCRET",
+ "BI_CERCLE","BI_PLAN_Y","BI_PLAN_Z","BI_CERC_INT",
+ "CRAYON_900","CRAYON_1300","GUID_A_CARTE_900",
+ "GUID_B_CARTE_900","GUID_C_CARTE_900",
+ "GUID_D_CARTE_900","GUID_E_CARTE_900",
+ "GUID_F_CARTE_900","GUID_A_CARTE_1300",
+ "GUID_B_CARTE_1300","GUID_C_CARTE_1300",
+ "GUID_D_CARTE_1300","GUID_E_CARTE_1300",
+ "GUID_F_CARTE_1300","GUID_A_CARSP_900",
+ "GUID_B_CARSP_900","GUID_C_CARSP_900",
+ "GUID_D_CARSP_900","GUID_E_CARSP_900",
+ "GUID_F_CARSP_900","GUID_A_CARSP_1300",
+ "GUID_B_CARSP_1300","GUID_C_CARSP_1300",
+ "GUID_D_CARSP_1300","GUID_E_CARSP_1300",
+ "GUID_F_CARSP_1300","GUID_A_GCONT_900",
+ "GUID_B_GCONT_900","GUID_C_GCONT_900",
+ "GUID_D_GCONT_900","GUID_E_GCONT_900",
+ "GUID_F_GCONT_900","GUID_A_GCONT_1300",
+ "GUID_B_GCONT_1300","GUID_C_GCONT_1300",
+ "GUID_D_GCONT_1300","GUID_E_GCONT_1300",
+ "GUID_F_GCONT_1300","GUID_A_GCOMB_900",
+ "GUID_B_GCOMB_900","GUID_C_GCOMB_900",
+ "GUID_D_GCOMB_900","GUID_E_GCOMB_900",
+ "GUID_F_GCOMB_900","GUID_A_GCOMB_1300",
+ "GUID_B_GCOMB_1300","GUID_C_GCOMB_1300",
+ "GUID_D_GCOMB_1300","GUID_E_GCOMB_1300",
+ "GUID_F_GCOMB_1300",) ),
+ VALE =SIMP(statut='f',typ='R',max='**'),
+ VERIF =SIMP(statut='f',typ='TXM',defaut="FERME"),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE GNICOLAS G.NICOLAS
+DEFI_PARA_SENSI=OPER(nom="DEFI_PARA_SENSI",op= 2,sd_prod=para_sensi,
+ fr="Définition d'un paramètre de sensibilité",
+ ang="Definition of a sensitive parameter",
+ reentrant='n',
+ UIinfo={"groupes":("Fonction",)},
+ NOM_RESU =SIMP(statut='c',typ='TXM',into=("TOUTRESU",),defaut="TOUTRESU",
+ fr="Nom du concept créé",
+ ang="Name of the concept"),
+ VALE =SIMP(statut='o',typ='R',
+ fr="Valeur du parametre",
+ ang="Value of the parameter"),
+ TITRE =SIMP(statut='f',typ='TXM',max='**'),
+) ;
+#& MODIF COMMANDE DATE 15/11/2004 AUTEUR ASSIRE A.ASSIRE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE BOITEAU O.BOITEAU
+
+from Macro.defi_part_feti_ops import defi_part_feti_ops
+
+DEFI_PART_FETI=MACRO(nom="DEFI_PART_FETI",op=defi_part_feti_ops,sd_prod=sd_feti_sdaster,
+ reentrant='n',
+ fr="Creation partitionnement en sous-domaines pour FETI",
+ MAILLAGE =SIMP(statut='o',typ=maillage_sdaster),
+ MODELE =SIMP(statut='f',typ=modele_sdaster),
+ NB_PART =SIMP(statut='o',typ='I'),
+ EXCIT =FACT(statut='f',max='**',
+ CHARGE =SIMP(statut='f',typ=(char_meca,char_cine_meca)),),
+ METHODE =SIMP(statut='o',typ='TXM',into=("PMETIS","KMETIS","AUTRE",), defaut="PMETIS" ),
+ b_methode =BLOC(condition="METHODE == 'AUTRE'", fr="Autre logiciel",
+ LOGICIEL =SIMP(statut='f',typ='TXM'),
+ ),
+ NOM_GROUP_MA =SIMP(statut='f',typ='TXM',defaut='SD' ),
+ INFO =SIMP(statut='f',typ='I',into=(1, 2, 3, 4,5), defaut=1),
+);
+#& MODIF COMMANDE DATE 08/11/2004 AUTEUR ASSIRE A.ASSIRE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE ASSIRE A.ASSIRE
+
+DEFI_PART_OPS=OPER(nom="DEFI_PART_OPS",op=21,sd_prod=sd_feti_sdaster,
+ fr="Creation partitionnement en sous-domaines pour FETI",
+ docu="U4.23.05",reentrant='n',
+ UIinfo={"groupes":("Résolution",)},
+ MODELE =SIMP(statut='o',typ=(modele_sdaster) ),
+ NOM =SIMP(statut='f',typ='TXM',defaut='SD'),
+ INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2,3,4) ),
+
+ DEFI =FACT(statut='f',max='**',
+ GROUP_MA =SIMP(statut='o',typ=grma),
+ GROUP_MA_BORD =SIMP(statut='f',typ=grma),
+ ),
+ EXCIT =FACT(statut='f',max='**',
+ CHARGE =SIMP(statut='f',typ=(char_meca,char_cine_meca)),
+ ),
+);
+#& MODIF COMMANDE DATE 30/06/2004 AUTEUR MCOURTOI M.COURTOIS
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+DEFI_SPEC_TURB=OPER(nom="DEFI_SPEC_TURB",op= 145,sd_prod=spectre_sdaster,
+ fr="Définition d'un spectre d'excitation turbulente",
+ reentrant='n',
+ UIinfo={"groupes":("Modélisation",)},
+ regles=(UN_PARMI('SPEC_LONG_COR_1','SPEC_LONG_COR_2','SPEC_LONG_COR_3',
+ 'SPEC_LONG_COR_4','SPEC_CORR_CONV_1','SPEC_CORR_CONV_2',
+ 'SPEC_FONC_FORME','SPEC_EXCI_POINT'),),
+ SPEC_LONG_COR_1 =FACT(statut='f',
+ LONG_COR =SIMP(statut='o',typ='R' ),
+ PROF_VITE_FLUI =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ VISC_CINE =SIMP(statut='o',typ='R' ),
+ ),
+ SPEC_LONG_COR_2 =FACT(statut='f',
+ regles=(ENSEMBLE('FREQ_COUP','PHI0','BETA' ),),
+ LONG_COR =SIMP(statut='o',typ='R' ),
+ PROF_VITE_FLUI =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ FREQ_COUP =SIMP(statut='f',typ='R',defaut= 0.1 ),
+ PHI0 =SIMP(statut='f',typ='R',defaut= 1.5E-3 ),
+ BETA =SIMP(statut='f',typ='R',defaut= 2.7 ),
+ ),
+ SPEC_LONG_COR_3 =FACT(statut='f',
+ regles=(ENSEMBLE('PHI0_1','BETA_1','PHI0_2','BETA_2','FREQ_COUP'),),
+ LONG_COR =SIMP(statut='o',typ='R' ),
+ PROF_VITE_FLUI =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ FREQ_COUP =SIMP(statut='f',typ='R',defaut= 0.2 ),
+ PHI0_1 =SIMP(statut='f',typ='R',defaut= 5.E-3 ),
+ BETA_1 =SIMP(statut='f',typ='R',defaut= 0.5 ),
+ PHI0_2 =SIMP(statut='f',typ='R',defaut= 4.E-5 ),
+ BETA_2 =SIMP(statut='f',typ='R',defaut= 3.5 ),
+ ),
+ SPEC_LONG_COR_4 =FACT(statut='f',
+ regles=(ENSEMBLE('BETA','GAMMA'),),
+ LONG_COR =SIMP(statut='o',typ='R' ),
+ PROF_VITE_FLUI =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ TAUX_VIDE =SIMP(statut='o',typ='R' ),
+ BETA =SIMP(statut='f',typ='R',defaut= 2. ),
+ GAMMA =SIMP(statut='f',typ='R',defaut= 4. ),
+ ),
+ SPEC_CORR_CONV_1=FACT(statut='f',
+ LONG_COR_1 =SIMP(statut='o',typ='R' ),
+ LONG_COR_2 =SIMP(statut='f',typ='R' ),
+ VITE_FLUI =SIMP(statut='o',typ='R' ),
+ RHO_FLUI =SIMP(statut='o',typ='R' ),
+ FREQ_COUP =SIMP(statut='f',typ='R' ),
+ K =SIMP(statut='f',typ='R',defaut= 5.8E-3 ),
+ D_FLUI =SIMP(statut='o',typ='R' ),
+ COEF_VITE_FLUI_A=SIMP(statut='f',typ='R' ),
+ COEF_VITE_FLUI_O=SIMP(statut='f',typ='R' ),
+ METHODE =SIMP(statut='f',typ='TXM',defaut="GENERALE",
+ into=("AU_YANG","GENERALE","CORCOS") ),
+ ),
+ SPEC_CORR_CONV_2=FACT(statut='f',
+ FONCTION =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ VITE_FLUI =SIMP(statut='o',typ='R' ),
+ FREQ_COUP =SIMP(statut='f',typ='R' ),
+ METHODE =SIMP(statut='f',typ='TXM',defaut="GENERALE",
+ into=("AU_YANG","GENERALE","CORCOS",) ),
+ COEF_VITE_FLUI_A=SIMP(statut='f',typ='R' ),
+ COEF_VITE_FLUI_O=SIMP(statut='f',typ='R' ),
+ ),
+ SPEC_FONC_FORME =FACT(statut='f',
+ regles=(UN_PARMI('INTE_SPEC','GRAPPE_1'),
+ ENSEMBLE('INTE_SPEC','FONCTION'),),
+ INTE_SPEC =SIMP(statut='f',typ=tabl_intsp ),
+ FONCTION =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),max='**'),
+ GRAPPE_1 =SIMP(statut='f',typ='TXM',into=("DEBIT_180","DEBIT_300",) ),
+ NOEUD =SIMP(statut='o',typ=no),
+ CARA_ELEM =SIMP(statut='o',typ=cara_elem ),
+ MODELE =SIMP(statut='o',typ=modele_sdaster ),
+ ),
+ SPEC_EXCI_POINT =FACT(statut='f',
+ regles=(UN_PARMI('INTE_SPEC','GRAPPE_2'),),
+ INTE_SPEC =SIMP(statut='f',typ=tabl_intsp ),
+ GRAPPE_2 =SIMP(statut='f',typ='TXM',
+ into=("ASC_CEN","ASC_EXC","DES_CEN","DES_EXC",) ),
+# Quels sont les statuts des mots cles à l interieur des deux blocs qui suivent
+ b_inte_spec =BLOC(condition = "INTE_SPEC != None",
+ NATURE =SIMP(statut='o',typ='TXM',max='**',into=("FORCE","MOMENT",) ),
+ ANGL =SIMP(statut='o',typ='R',max='**'),
+ NOEUD =SIMP(statut='o',typ=no,max='**'),
+ ),
+ b_grappe_2 =BLOC(condition = "GRAPPE_2 != None",
+ RHO_FLUI =SIMP(statut='o',typ='R' ),
+ NOEUD =SIMP(statut='o',typ=no),
+ ),
+ CARA_ELEM =SIMP(statut='o',typ=cara_elem ),
+ MODELE =SIMP(statut='o',typ=modele_sdaster ),
+ ),
+ TITRE =SIMP(statut='f',typ='TXM',max='**'),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+DEFI_SQUELETTE=OPER(nom="DEFI_SQUELETTE",op= 110,sd_prod=squelette,
+ fr="Définition d un maillage de visualisation",
+ reentrant='n',
+ UIinfo={"groupes":("Maillage",)},
+ regles=(UN_PARMI('MODE_CYCL','MODELE_GENE','MAILLAGE'),
+ PRESENT_PRESENT('MODE_CYCL','SECTEUR'),
+ EXCLUS('SOUS_STRUC','SECTEUR'),
+ PRESENT_PRESENT('NOM_GROUP_MA','MODELE_GENE'),
+ PRESENT_PRESENT('NOM_GROUP_MA','SOUS_STRUC'),),
+ MODE_CYCL =SIMP(statut='f',typ=mode_cycl ),
+ MODELE_GENE =SIMP(statut='f',typ=modele_gene ),
+ SQUELETTE =SIMP(statut='f',typ=squelette ),
+ RECO_GLOBAL =FACT(statut='f',max='**',
+ regles=(EXCLUS('TOUT','GROUP_NO_1'),
+ PRESENT_PRESENT('GROUP_NO_1','GROUP_NO_2'),
+ PRESENT_PRESENT('GROUP_NO_1','SOUS_STRUC_1'),
+ PRESENT_PRESENT('GROUP_NO_2','SOUS_STRUC_2'),
+ PRESENT_PRESENT('SOUS_STRUC_1','SOUS_STRUC_2'),),
+ TOUT =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI",) ),
+ GROUP_NO_1 =SIMP(statut='f',typ=grno),
+ SOUS_STRUC_1 =SIMP(statut='f',typ='TXM' ),
+ GROUP_NO_2 =SIMP(statut='f',typ=grno),
+ SOUS_STRUC_2 =SIMP(statut='f',typ='TXM' ),
+ PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ),
+ CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
+ DIST_REFE =SIMP(statut='f',typ='R' ),
+ ),
+ NOM_GROUP_MA =FACT(statut='f',max='**',
+ NOM =SIMP(statut='o',typ='TXM' ),
+ SOUS_STRUC =SIMP(statut='o',typ='TXM' ),
+ GROUP_MA =SIMP(statut='o',typ=grma),
+ ),
+ EXCLUSIF =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
+ MAILLAGE =SIMP(statut='f',typ=maillage_sdaster ),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ TRANS =SIMP(statut='f',typ='R',min=3,max=3),
+ ANGL_NAUT =SIMP(statut='f',typ='R',min=3,max=3),
+ SOUS_STRUC =FACT(statut='f',max='**',
+ NOM =SIMP(statut='f',typ='TXM' ),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ ),
+ SECTEUR =FACT(statut='f',max='**',
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ ),
+ TITRE =SIMP(statut='f',typ='TXM',max='**'),
+) ;
+#& MODIF COMMANDE DATE 22/11/2004 AUTEUR JMBHH01 J.M.PROIX
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+DEFI_TEXTURE=OPER(nom="DEFI_TEXTURE",op= 181,sd_prod=tabl_texture,
+ fr=" ",reentrant='n',
+ UIinfo={"groupes":("Modélisation",)},
+ SYST_GLISSEMENT =FACT(statut='o',min=3,max=3,
+ N =SIMP(statut='o',typ='R',min=12,max=12 ),
+ L =SIMP(statut='o',typ='R',max='**' ),
+ ),
+ PLAN =FACT(statut='o',min=1,max=40,
+ ANGL_NAUT =SIMP(statut='o',typ='R',max='**' ),
+ PROPORTION =SIMP(statut='o',typ='R' ),
+ ),
+ TITRE =SIMP(statut='f',typ='TXM',max='**' ),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+DEFI_THER_JOULE=OPER(nom="DEFI_THER_JOULE",op= 121,sd_prod=fonction_sdaster,reentrant='n',
+ UIinfo={"groupes":("Outils métier",)},
+ fr="Calculer la fonction d évolution temporelle de température due à l effet JOULE dans un cable",
+ LIST_INST =SIMP(statut='o',typ=listr8_sdaster),
+ INST_CC_INIT =SIMP(statut='f',typ='R',defaut= 0.0E+0 ),
+ INST_CC_FIN =SIMP(statut='f',typ='R',defaut= 1.0E+10),
+ INST_RENC_INIT =SIMP(statut='f',typ='R',defaut= 1.0E+10),
+ INST_RENC_FIN =SIMP(statut='f',typ='R',defaut= 1.0E+10),
+ TEMP_EXT_POSE =SIMP(statut='f',typ='R',defaut= 15.0E+0),
+ TEMP_EXT =SIMP(statut='f',typ='R',defaut= 15.0E+0),
+ TEMP_RESI_REF =SIMP(statut='f',typ='R',defaut= 20.0E+0),
+ PARA_COND_1D =FACT(statut='f',max='**',
+ INTE_CC =SIMP(statut='f',typ='R',defaut= 0.0E+0),
+ INTE_RENC =SIMP(statut='f',typ='R',defaut= 0.0E+0),
+ A =SIMP(statut='f',typ='R',defaut= 1.0E+0),
+ SECTION =SIMP(statut='f',typ='TXM',defaut="CERCLE",into=("CERCLE",) ),
+ RESI_R0 =SIMP(statut='f',typ='R',defaut= 0.0E+0),
+ RESI_R1 =SIMP(statut='f',typ='R',defaut= 0.E+0),
+ RHO_CP =SIMP(statut='f',typ='R',defaut= 1.0E+0),
+ COEF_H =SIMP(statut='f',typ='R',defaut= 40.0E+0),
+ TEMP_INIT =SIMP(statut='f',typ='R',defaut= 15.0E+0),
+ ),
+) ;
+
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+DEFI_TRC=OPER(nom="DEFI_TRC",op=94,sd_prod=tabl_trc,reentrant='n',
+ UIinfo={"groupes":("Modélisation",)},
+ fr="Définition d un diagramme de transformations en refroidissement continu d un acier",
+ HIST_EXP =FACT(statut='o',max='**',
+ VALE =SIMP(statut='o',typ='R',max='**'),
+ ),
+ TEMP_MS =FACT(statut='o',max='**',
+ SEUIL =SIMP(statut='o',typ='R'),
+ AKM =SIMP(statut='o',typ='R'),
+ BKM =SIMP(statut='o',typ='R'),
+ TPLM =SIMP(statut='o',typ='R'),
+ ),
+ GRAIN_AUST =FACT(statut='f',max='**',
+ DREF =SIMP(statut='f',typ='R'),
+ A =SIMP(statut='f',typ='R'),
+ ),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+DEPL_INTERNE=OPER(nom="DEPL_INTERNE",op=89,sd_prod=cham_no_depl_r,reentrant='n',
+ UIinfo={"groupes":("Matrices/vecteurs",)},
+ fr="Récupération du champ de déplacement interne à une sous-structure",
+ DEPL_GLOBAL =SIMP(statut='o',typ=cham_no_depl_r),
+ MAILLE =SIMP(statut='o',typ=ma,),
+ NOM_CAS =SIMP(statut='f',typ='TXM',defaut=" "),
+) ;
+#& MODIF COMMANDE DATE 03/11/2004 AUTEUR MCOURTOI M.COURTOIS
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+DETRUIRE=PROC(nom="DETRUIRE",op=-7,
+ UIinfo={"groupes":("Gestion du travail",)},
+ fr="Destruction d un concept utilisateur dans la base GLOBALE",
+ op_init=ops.detruire,
+ regles=(UN_PARMI('CONCEPT','OBJET',),),
+ CONCEPT =FACT(statut='f',max='**',
+ NOM =SIMP(statut='o',typ=assd,validators=NoRepeat(),max='**'),
+ ),
+ OBJET =FACT(statut='f',max='**',
+ CLASSE =SIMP(statut='f',typ='TXM',into=('G','V','L'),defaut='G'),
+ CHAINE =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**'),
+ POSITION =SIMP(statut='f',typ='I' ,max='**'),
+ ),
+ ALARME =SIMP(statut='f',typ='TXM',into=('OUI','NON'),defaut='OUI',),
+ INFO =SIMP(statut='f',typ='I',into=(1,2),defaut=2, ),
+);
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+DIST_LIGN_3D=OPER(nom="DIST_LIGN_3D",op= 133,sd_prod=fonction_sdaster,reentrant='n',
+ UIinfo={"groupes":("Outils métier",)},
+ fr="Calcul sous forme d une fonction du temps de la distance minimale entre deux structures filaires",
+ regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','INST','LIST_INST'),
+ UN_PARMI('GROUP_MA_2','POIN_FIXE'),),
+ MODELE =SIMP(statut='o',typ=modele_sdaster),
+ RESULTAT =SIMP(statut='o',typ=(evol_elas,dyna_trans,evol_noli) ),
+ TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",)),
+ NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
+ INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
+ LIST_INST =SIMP(statut='f',typ=listr8_sdaster),
+ LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster),
+ PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3 ),
+ CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
+ GROUP_MA_1 =SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**'),
+ GROUP_MA_2 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ POIN_FIXE =SIMP(statut='f',typ='R',min=3,max=3),
+ INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+DYNA_ALEA_MODAL=OPER(nom="DYNA_ALEA_MODAL",op= 131,sd_prod=tabl_intsp
+ ,fr="Calcule la réponse spectrale d une structure linéaire sous une excitation connue par sa DSP",
+ reentrant='n',
+ UIinfo={"groupes":("Résolution",)},
+ BASE_MODALE =FACT(statut='o',
+ regles=(UN_PARMI('NUME_ORDRE','BANDE'),),
+ MODE_MECA =SIMP(statut='o',typ=mode_meca ),
+ BANDE =SIMP(statut='f',typ='R',validators=NoRepeat(),max=2),
+ NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
+ b_bande =BLOC(condition = "BANDE != None",
+ AMOR_UNIF =SIMP(statut='o',typ='R' ),
+ ),
+ b_nume_ordre =BLOC(condition = "NUME_ORDRE != None",
+ AMOR_REDUIT =SIMP(statut='o',typ='R',max='**'),
+ ),
+ ),
+ MODE_STAT =SIMP(statut='f',typ=(mode_stat_depl,mode_stat_acce,mode_stat_forc,)),
+# MODE_STAT devrait etre dans EXCIT car est utile et obligatoire que si NOM_CMP=depl_r, on pourrait
+# ainsi rajouter un bloc du genre b_mod_stat= BLOC(condition = "(GRANDEUR == None) or (GRANDEUR == 'DEPL_R')",
+ EXCIT =FACT(statut='o',
+ INTE_SPEC =SIMP(statut='o',typ=tabl_intsp ),
+ NUME_VITE_FLUI =SIMP(statut='f',typ='I' ),
+ OPTION =SIMP(statut='f',typ='TXM',defaut="TOUT",into=("TOUT","DIAG",) ),
+ MODAL =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
+ b_modal_non = BLOC(condition = "(MODAL == None) or (MODAL == 'NON')",
+ regles=(UN_PARMI('NOEUD_I','NUME_ORDRE_I'),),
+ NUME_ORDRE_I =SIMP(statut='f',typ='I',max='**'),
+ NOEUD_I =SIMP(statut='f',typ=no,max='**'),
+ b_nume_ordre_i =BLOC(condition = "NUME_ORDRE_I != None",
+ regles=(EXCLUS('CHAM_NO','NOEUD'),),
+# on devrait rajouter EXCLUS('GRANDEUR','CHAM_NO') pour eviter ambiguite car CHAM_NO => GRANDEUR='EFFO'
+# cela impliquerait d'enlever la valeur par defaut a GRANDEUR
+ NUME_ORDRE_J =SIMP(statut='o',typ='I',max='**'),
+ CHAM_NO =SIMP(statut='f',typ=cham_no_sdaster),
+ NOEUD =SIMP(statut='f',typ=no,max='**'),
+ b_noeud =BLOC(condition = "NOEUD != None",
+ NOM_CMP =SIMP(statut='o',typ='TXM',max='**'),
+ ),
+ GRANDEUR =SIMP(statut='f',typ='TXM',defaut="DEPL_R",
+ into=("DEPL_R","EFFO","SOUR_DEBI_VOLU","SOUR_DEBI_MASS","SOUR_PRESS","SOUR_FORCE")),
+# que se passe-t-il en cas d'incompatibilite entre GRANDEUR et NOM_CMP
+ DERIVATION =SIMP(statut='f',typ='I',defaut= 0,into=( 0 , 1 , 2 ) ),
+ ),
+ b_noeud_i =BLOC(condition = "NOEUD_I != None",
+ NOEUD_J =SIMP(statut='o',typ=no,max='**'),
+ NOM_CMP_I =SIMP(statut='o',typ='TXM',max='**'),
+ NOM_CMP_J =SIMP(statut='o',typ='TXM',max='**'),
+ NOEUD =SIMP(statut='o',typ=no,max='**'),
+ NOM_CMP =SIMP(statut='o',typ='TXM',max='**'),
+# ne serait-il pas bien que NOEUD et NOM_CMP soient facultatifs, car l'information peut etre contenue dans
+# NOEUD_I, NOM_CMP_I ... => modif. du Fortran
+ GRANDEUR =SIMP(statut='f',typ='TXM',defaut="DEPL_R",
+ into=("DEPL_R","EFFO","SOUR_DEBI_VOLU","SOUR_DEBI_MASS","SOUR_PRESS","SOUR_FORCE")),
+# que se passe-t-il en cas d'incompatibilite entre GRANDEUR et NOM_CMP_I
+ DERIVATION =SIMP(statut='f',typ='I',defaut= 0,into=( 0 , 1 , 2 ) ),
+ ),
+ ),
+ b_modal_oui = BLOC(condition = "(MODAL == 'OUI')",
+# dans ce cas, y-a-t-il vraiment la possibilite d'une matrice interspectrale avec plusieurs termes
+ NUME_ORDRE_I =SIMP(statut='o',typ='I',max='**'),
+ NUME_ORDRE_J =SIMP(statut='o',typ='I',max='**'),
+ GRANDEUR =SIMP(statut='f',typ='TXM',defaut="DEPL_R",
+ into=("DEPL_R","EFFO","SOUR_DEBI_VOLU","SOUR_DEBI_MASS","SOUR_PRESS","SOUR_FORCE")),
+ DERIVATION =SIMP(statut='f',typ='I',defaut= 0,into=( 0 , 1 , 2 ) ),
+# dans le cas MODAL=OUI, GRANDEUR peut-il etre different de EFFO et doit il etre impose a EFFO On devrait
+# pouvoir supprimer GRANDEUR et DERIVATION ici
+ ),
+
+ ),
+ REPONSE =FACT(statut='f',
+ regles=( ENSEMBLE('FREQ_MIN','FREQ_MAX'),),
+ DERIVATION =SIMP(statut='f',typ='I',defaut= 0,into=( 0 , 1 , 2 ,) ),
+ OPTION =SIMP(statut='f',typ='TXM',defaut="TOUT",into=("TOUT","DIAG") ),
+ FREQ_MIN =SIMP(statut='f',typ='R' ),
+ FREQ_MAX =SIMP(statut='f',typ='R' ),
+ PAS =SIMP(statut='f',typ='R' ),
+ b_defaut_freq =BLOC(condition = "FREQ_MIN == NONE",
+ FREQ_EXCIT =SIMP(statut='f',typ='TXM',defaut="AVEC",into=("AVEC","SANS") ),
+ NB_POIN_MODE =SIMP(statut='f',typ='I',defaut= 50 ),
+ ),
+ ),
+ TITRE =SIMP(statut='f',typ='TXM',max='**'),
+ INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
+) ;
+#& MODIF COMMANDE DATE 04/07/2005 AUTEUR NICOLAS O.NICOLAS
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+def dyna_line_harm_prod(MATR_RIGI,**args):
+ if AsType(MATR_RIGI) == matr_asse_depl_r : return dyna_harmo
+ if AsType(MATR_RIGI) == matr_asse_depl_c : return dyna_harmo
+ if AsType(MATR_RIGI) == matr_asse_pres_c : return acou_harmo
+ if AsType(MATR_RIGI) == matr_asse_gene_r : return harm_gene
+ if AsType(MATR_RIGI) == matr_asse_gene_c : return harm_gene
+ raise AsException("type de concept resultat non prevu")
+
+DYNA_LINE_HARM=OPER(nom="DYNA_LINE_HARM",op= 60,sd_prod=dyna_line_harm_prod,
+ fr="Réponse dynamique complexe d un système à une excitation harmonique",
+ reentrant='n',
+ UIinfo={"groupes":("Résolution",)},
+ regles=(PRESENT_ABSENT('AMOR_REDUIT','MATR_AMOR'),
+ PRESENT_ABSENT('AMOR_REDUIT','LIST_AMOR'),
+ PRESENT_ABSENT('MATR_AMOR','LIST_AMOR'),
+ UN_PARMI('FREQ','LIST_FREQ'),),
+ MODELE =SIMP(statut='f',typ=modele_sdaster ),
+ CHAM_MATER =SIMP(statut='f',typ=cham_mater ),
+ CARA_ELEM =SIMP(statut='f',typ=cara_elem ),
+ MATR_MASS =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_pres_c,matr_asse_gene_r ) ),
+ MATR_RIGI =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_depl_c,matr_asse_pres_c
+ ,matr_asse_gene_r,matr_asse_gene_c ) ),
+ MATR_AMOR =SIMP(statut='f',typ=(matr_asse_depl_r,matr_asse_pres_c,matr_asse_gene_r ) ),
+ AMOR_REDUIT =SIMP(statut='f',typ='R',max='**'),
+ LIST_AMOR =SIMP(statut='f',typ=listr8_sdaster ),
+ MATR_IMPE_PHI =SIMP(statut='f',typ=(matr_asse_depl_r,matr_asse_gene_r) ),
+ FREQ =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
+ LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster ),
+ TOUT_CHAM =SIMP(statut='f',typ='TXM',into=("OUI",)),
+ NOM_CHAM =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=3,into=("DEPL","VITE","ACCE") ),
+ EXCIT =FACT(statut='o',max='**',
+ regles=(UN_PARMI('VECT_ASSE','CHARGE'),
+ UN_PARMI('FONC_MULT','FONC_MULT_C','COEF_MULT','COEF_MULT_C'),
+# Je rajoute ces deux regles car seules les termes complexes peuvent etre pris en
+# compte lors de l'utilisation d'une charge
+ PRESENT_ABSENT('CHARGE','FONC_MULT'),
+ PRESENT_ABSENT('CHARGE','COEF_MULT'),
+# a corriger
+ ),
+ VECT_ASSE =SIMP(statut='f',typ=(cham_no_depl_r,cham_no_pres_c,vect_asse_gene ) ),
+ CHARGE =SIMP(statut='f',typ=char_meca ),
+ TYPE_CHARGE =SIMP(statut='f',typ='TXM',defaut="FIXE",into=("FIXE",) ),
+ FONC_MULT_C =SIMP(statut='f',typ=fonction_c ),
+ COEF_MULT_C =SIMP(statut='f',typ='C' ),
+ FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ COEF_MULT =SIMP(statut='f',typ='R' ),
+ PHAS_DEG =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ PUIS_PULS =SIMP(statut='f',typ='I',defaut= 0 ),
+ ),
+ TITRE =SIMP(statut='f',typ='TXM',max='**'),
+ SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**',
+ fr="Liste des paramètres de sensibilité.",
+ ang="List of sensitivity parameters"),
+) ;
+# Rajouter test icompatibilite vect_asse et sensibilite
+# Peut-on aussi rajouter ici le test d incompatibilite charge complexe - derivation
+# presents dans le Fortran
+#& MODIF COMMANDE DATE 30/06/2004 AUTEUR MCOURTOI M.COURTOIS
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+DYNA_LINE_TRAN=OPER(nom="DYNA_LINE_TRAN",op= 48,sd_prod=dyna_trans,
+ fr="Réponse temporelle d un système à une excitation transitoire",
+ reentrant='f',
+ UIinfo={"groupes":("Résolution",)},
+# regles=(UN_PARMI('WILSON','DIFF_CENTRE','ADAPT'),),
+ regles=(UN_PARMI('NEWMARK','WILSON','DIFF_CENTRE','ADAPT'),),
+ MODELE =SIMP(statut='f',typ=modele_sdaster ),
+ CHAM_MATER =SIMP(statut='f',typ=cham_mater ),
+ CARA_ELEM =SIMP(statut='f',typ=cara_elem ),
+ MATR_MASS =SIMP(statut='o',typ=matr_asse_depl_r ),
+ MATR_RIGI =SIMP(statut='o',typ=matr_asse_depl_r ),
+ MATR_AMOR =SIMP(statut='f',typ=matr_asse_depl_r ),
+ MODE_STAT =SIMP(statut='f',typ=(mode_stat_depl,mode_stat_acce,mode_stat_forc,) ),
+ NEWMARK =FACT(statut='f',
+ ALPHA =SIMP(statut='f',typ='R',defaut= 0.25 ),
+ DELTA =SIMP(statut='f',typ='R',defaut= 0.5 ),
+ ),
+ WILSON =FACT(statut='f',
+ THETA =SIMP(statut='f',typ='R',defaut= 1.4 ),
+ ),
+ DIFF_CENTRE =FACT(statut='f',
+ ),
+ ADAPT =FACT(statut='f',
+ ),
+ ETAT_INIT =FACT(statut='f',
+ regles=(AU_MOINS_UN('DYNA_TRANS', 'DEPL_INIT', 'VITE_INIT',),
+ PRESENT_ABSENT('DYNA_TRANS', 'DEPL_INIT', 'VITE_INIT'),),
+ DYNA_TRANS =SIMP(statut='f',typ=dyna_trans ),
+ b_dyna_trans =BLOC(condition = "DYNA_TRANS != None",
+ regles=(EXCLUS('NUME_INIT','INST_INIT' ),),
+ NUME_INIT =SIMP(statut='f',typ='I' ),
+ INST_INIT =SIMP(statut='f',typ='R' ),
+ b_inst_init =BLOC(condition = "INST_INIT != None",
+ PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ),
+ CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
+ ),
+ ),
+ DEPL_INIT =SIMP(statut='f',typ=(cham_no_depl_r) ),
+ VITE_INIT =SIMP(statut='f',typ=(cham_no_depl_r) ),
+ ),
+ EXCIT =FACT(statut='f',max='**',
+ regles=(UN_PARMI('CHARGE','VECT_ASSE'),
+ EXCLUS('CHARGE','COEF_MULT'),
+ EXCLUS('FONC_MULT','COEF_MULT'),
+ EXCLUS('ACCE','COEF_MULT'),
+ PRESENT_ABSENT('ACCE','FONC_MULT'),
+ PRESENT_PRESENT('ACCE','VITE','DEPL'),
+ # PRESENT_ABSENT('MULT_APPUI','FONC_MULT'),
+ ),
+ VECT_ASSE =SIMP(statut='f',typ=cham_no_depl_r ),
+ CHARGE =SIMP(statut='f',typ=char_meca ),
+ FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ COEF_MULT =SIMP(statut='f',typ='R' ),
+ TYPE_CHARGE =SIMP(statut='f',typ='TXM',defaut="FIXE",into=("FIXE",) ),
+ ACCE =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ VITE =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ DEPL =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ MULT_APPUI =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
+ DIRECTION =SIMP(statut='f',typ='R',max='**'),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ ),
+ AMOR_MODAL =FACT(statut='f',
+ MODE_MECA =SIMP(statut='f',typ=mode_meca ),
+ AMOR_REDUIT =SIMP(statut='f',typ='R',max='**'),
+ NB_MODE =SIMP(statut='f',typ='I',defaut= 9999 ),
+ REAC_VITE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
+ ),
+# ce n est pas le mot clesolveur standard
+ SOLVEUR =FACT(statut='d',
+ NPREC =SIMP(statut='f',typ='I',defaut= 8 ),
+ STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+ RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ),
+ NMAX_ITER =SIMP(statut='f',typ='I',defaut= 0 ),
+ ),
+ INCREMENT =FACT(statut='o',max='**',
+ regles=(UN_PARMI('LIST_INST','FONC_INST','PAS'),),
+ LIST_INST =SIMP(statut='f',typ=listr8_sdaster ),
+ FONC_INST =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ PAS =SIMP(statut='f',typ='R' ),
+ b_pas =BLOC(condition = "PAS != None",
+ INST_INIT =SIMP(statut='f',typ='R' ),
+ INST_FIN =SIMP(statut='f',typ='R' ),
+ ),
+ b_list_fonc =BLOC(condition = "LIST_INST != None or FONC_INST != None",
+ regles=(EXCLUS('INST_FIN','NUME_FIN'),),
+ NUME_FIN =SIMP(statut='f',typ='I' ),
+ INST_FIN =SIMP(statut='f',typ='R' ),
+ ),
+ VITE_MIN =SIMP(statut='f',typ='TXM',defaut="NORM",into=("MAXI","NORM") ),
+ COEF_MULT_PAS =SIMP(statut='f',typ='R',defaut= 1.1 ),
+ COEF_DIVI_PAS =SIMP(statut='f',typ='R',defaut= 1.33334 ),
+ PAS_LIMI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ),
+ NB_POIN_PERIODE =SIMP(statut='f',typ='I',defaut= 50 ),
+ NMAX_ITER_PAS =SIMP(statut='f',typ='I',defaut= 16 ),
+ PAS_CALCUL =SIMP(statut='f',typ='I',defaut= 1 ),
+ ),
+ ARCHIVAGE =FACT(statut='f',
+ regles=(UN_PARMI('LIST_ARCH','PAS_ARCH', ),),
+ LIST_ARCH =SIMP(statut='f',typ=listis_sdaster ),
+ PAS_ARCH =SIMP(statut='f',typ='I' ),
+ CHAM_EXCLU =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',into=("DEPL","VITE","ACCE") ),
+ ),
+ SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**',
+ fr="Liste des param\350tres de sensibilit\351.",
+ ang="List of sensitivity parameters",
+ ),
+ TITRE =SIMP(statut='f',typ='TXM',max='**'),
+ INFO =SIMP(statut='f',typ='I',into=(1,2) ),
+) ;
+#& MODIF COMMANDE DATE 09/11/2004 AUTEUR NICOLAS O.NICOLAS
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+DYNA_NON_LINE=OPER(nom="DYNA_NON_LINE",op= 70,sd_prod=evol_noli,reentrant='f',
+ fr="Analyse mécanique dynamique non linéaire",
+ UIinfo={"groupes":("Résolution",)},
+ regles=(AU_MOINS_UN('COMP_INCR','COMP_ELAS',),
+ UN_PARMI('NEWMARK','HHT','TETA_METHODE', ),),
+ MODELE =SIMP(statut='o',typ=modele_sdaster),
+ CHAM_MATER =SIMP(statut='o',typ=cham_mater),
+ MODE_STAT =SIMP(statut='f',typ=(mode_stat_depl,mode_stat_acce,mode_stat_forc,)),
+ CARA_ELEM =SIMP(statut='f',typ=cara_elem),
+ EXCIT =FACT(statut='o',max='**',
+ regles=(PRESENT_ABSENT('FONC_MULT','ACCE'),
+ PRESENT_PRESENT('ACCE','VITE','DEPL'),
+ # PRESENT_ABSENT('MULT_APPUI','FONC_MULT'),
+ ),
+ TYPE_CHARGE =SIMP(statut='f',typ='TXM',defaut="FIXE_CSTE",
+ into=("FIXE_CSTE","FIXE_PILO","SUIV","DIDI")),
+ CHARGE =SIMP(statut='o',typ=char_meca),
+ FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ DEPL =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ ACCE =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ VITE =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ MULT_APPUI =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
+ DIRECTION =SIMP(statut='f',typ='R',max='**'),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ ),
+ SOUS_STRUC =FACT(statut='f',min=01,max='**',
+ regles=(UN_PARMI('TOUT','MAILLE'),),
+ CAS_CHARGE =SIMP(statut='o',typ='TXM' ),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ MAILLE =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**',),
+ ),
+ AMOR_MODAL =FACT(statut='f',
+ MODE_MECA =SIMP(statut='f',typ=mode_meca),
+ AMOR_REDUIT =SIMP(statut='f',typ='R',max='**' ),
+ NB_MODE =SIMP(statut='f',typ='I',defaut= 9999 ),
+ REAC_VITE =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+ ),
+ VARI_COMM =FACT(statut='f',
+ regles=(AU_MOINS_UN('IRRA',),),
+ IRRA =SIMP(statut='f',typ=evol_varc),
+ CORROSION =SIMP(statut='f',typ=carte_corr_r),
+ ),
+ COMP_INCR =C_COMP_INCR(),
+ COMP_ELAS =FACT(statut='f',max='**',
+ RELATION =SIMP(statut='o',typ='TXM',defaut="ELAS",
+ into=("ELAS","ELAS_VMIS_LINE","ELAS_VMIS_TRAC",
+ "ELAS_POUTRE_GR","CABLE")),
+ ELAS =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
+ ELAS_VMIS_TRAC =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
+ ELAS_VMIS_LINE =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
+ ELAS_POUTRE_GR =SIMP(statut='c',typ='I',defaut=3,into=(3,)),
+ CABLE =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
+ DEFORMATION =SIMP(statut='f',typ='TXM',defaut="PETIT" ,into=("PETIT","GREEN","GREEN_GR",) ),
+ regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ ),
+#-------------------------------------------------------------------
+ b_reuse =BLOC(condition = "reuse",fr="en mode concept reentrant : ETAT_INIT obligatoire",
+ ETAT_INIT =FACT(statut='o',
+ regles=(AU_MOINS_UN('EVOL_NOLI','DEPL','VITE','SIGM','VARI','VARI_NON_LOCAL',),
+ EXCLUS('EVOL_NOLI','DEPL',),
+ EXCLUS('EVOL_NOLI','VITE'),
+ EXCLUS('EVOL_NOLI','SIGM',),
+ EXCLUS('EVOL_NOLI','VARI',),
+ EXCLUS('EVOL_NOLI','VARI_NON_LOCAL',),
+ EXCLUS('NUME_ORDRE','INST'), ),
+ DEPL =SIMP(statut='f',typ=cham_no_depl_r),
+ VITE =SIMP(statut='f',typ=cham_no_depl_r),
+ SIGM =SIMP(statut='f',typ=(cham_elem_sief_r,carte_sief_r)),
+ VARI =SIMP(statut='f',typ=cham_elem_vari_r),
+ VARI_NON_LOCAL =SIMP(statut='f',typ=cham_no_vanl_r),
+ EVOL_NOLI =SIMP(statut='f',typ=evol_noli),
+ NUME_ORDRE =SIMP(statut='f',typ='I'),
+ INST =SIMP(statut='f',typ='R'),
+ PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3 ),
+ CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
+ NUME_DIDI =SIMP(statut='f',typ='I'),
+ INST_ETAT_INIT =SIMP(statut='f',typ='R'),
+ ),),
+ b_not_reuse =BLOC(condition = "not reuse",fr="en mode concept non reentrant : ETAT_INIT facultatif",
+ ETAT_INIT =FACT(statut='f',
+ regles=(AU_MOINS_UN('EVOL_NOLI','DEPL','VITE','SIGM','VARI','VARI_NON_LOCAL',),
+ EXCLUS('EVOL_NOLI','DEPL',),
+ EXCLUS('EVOL_NOLI','VITE'),
+ EXCLUS('EVOL_NOLI','SIGM',),
+ EXCLUS('EVOL_NOLI','VARI',),
+ EXCLUS('EVOL_NOLI','VARI_NON_LOCAL',),
+ EXCLUS('NUME_ORDRE','INST'), ),
+ DEPL =SIMP(statut='f',typ=cham_no_depl_r),
+ VITE =SIMP(statut='f',typ=cham_no_depl_r),
+ SIGM =SIMP(statut='f',typ=(cham_elem_sief_r,carte_sief_r)),
+ VARI =SIMP(statut='f',typ=cham_elem_vari_r),
+ VARI_NON_LOCAL =SIMP(statut='f',typ=cham_no_vanl_r),
+ EVOL_NOLI =SIMP(statut='f',typ=evol_noli),
+ NUME_ORDRE =SIMP(statut='f',typ='I'),
+ INST =SIMP(statut='f',typ='R'),
+ PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3 ),
+ CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
+ NUME_DIDI =SIMP(statut='f',typ='I'),
+ INST_ETAT_INIT =SIMP(statut='f',typ='R'),
+ ),),
+#-------------------------------------------------------------------
+ INCREMENT =FACT(statut='o',
+ regles=(EXCLUS('NUME_INST_INIT','INST_INIT'),
+ EXCLUS('NUME_INST_FIN','INST_FIN'),),
+ LIST_INST =SIMP(statut='o',typ=listr8_sdaster),
+ EVOLUTION =SIMP(statut='f',typ='TXM',defaut="CHRONOLOGIQUE",
+ into=("CHRONOLOGIQUE","RETROGRADE","SANS",) ),
+ NUME_INST_INIT =SIMP(statut='f',typ='I'),
+ INST_INIT =SIMP(statut='f',typ='R'),
+ NUME_INST_FIN =SIMP(statut='f',typ='I'),
+ INST_FIN =SIMP(statut='f',typ='R'),
+ PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3 ),
+ SUBD_PAS =SIMP(statut='f',typ='I',defaut=1),
+ SUBD_PAS_MINI =SIMP(statut='f',typ='R'),
+ COEF_SUBD_PAS_1 =SIMP(statut='f',typ='R',defaut= 1.0E+0),
+ OPTI_LIST_INST =SIMP(statut='f',typ='TXM',into=("INCR_MAXI",),),
+ NOM_CHAM =SIMP(statut='f',typ='TXM',),
+ NOM_CMP =SIMP(statut='f',typ='TXM',),
+ VALE =SIMP(statut='f',typ='R'),
+ ),
+#-------------------------------------------------------------------
+ NEWMARK =FACT(statut='f',
+ ALPHA =SIMP(statut='f',typ='R',defaut= 0.25),
+ DELTA =SIMP(statut='f',typ='R',defaut= 0.5),
+ ),
+ HHT =FACT(statut='f',
+ ALPHA =SIMP(statut='f',typ='R'
+ ,defaut= -0.29999999999999999 ),
+ ),
+ TETA_METHODE =FACT(statut='f',
+ TETA =SIMP(statut='f',typ='R'
+ ,defaut= 1.,val_min=0.5,val_max=1. ),
+ ),
+ NEWTON =FACT(statut='d',
+ REAC_INCR =SIMP(statut='f',typ='I',defaut= 1 ),
+ PREDICTION =SIMP(statut='f',typ='TXM',into=("TANGENTE","ELASTIQUE") ),
+ MATRICE =SIMP(statut='f',typ='TXM',defaut="TANGENTE",into=("TANGENTE","ELASTIQUE") ),
+ REAC_ITER =SIMP(statut='f',typ='I',defaut= 0),
+ REAC_ITER_ELAS =SIMP(statut='f',typ='I',defaut=0),
+ PAS_MINI_ELAS =SIMP(statut='f',typ='R',defaut=0.0E+0),
+ ),
+ SOLVEUR =FACT(statut='d',
+ METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC") ),
+ b_mult_front =BLOC(condition= "METHODE == 'MULT_FRONT' ",fr="Paramètres de la méthode multi frontale",
+ RENUM =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ),
+ ),
+ b_ldlt =BLOC(condition= "METHODE == 'LDLT'",fr="Paramètres de la méthode LDLT",
+ RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("RCMK","SANS") ),
+ ),
+ b_ldlt_mult =BLOC(condition="METHODE == 'LDLT' or METHODE == 'MULT_FRONT'",
+ fr="Paramètres relatifs à la non inversibilité de la matrice à factorise",
+ NPREC =SIMP(statut='f',typ='I',defaut= 8 ),
+ STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON","DECOUPE") ),
+ ),
+ b_gcpc =BLOC(condition="METHODE == 'GCPC'",fr="Paramètres de la méthode du gradient conjugué",
+ PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC",),defaut="LDLT_INC" ),
+ NIVE_REMPLISSAGE=SIMP(statut='f',typ='I',defaut=0),
+ RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ),
+ RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ),
+ NMAX_ITER =SIMP(statut='f',typ='I',defaut= 0 ),
+ ),
+ SYME =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
+ ),
+#-------------------------------------------------------------------
+ RECH_LINEAIRE =FACT(statut='f',
+ RESI_LINE_RELA =SIMP(statut='f',typ='R',defaut= 1.0E-1 ),
+ ITER_LINE_MAXI =SIMP(statut='f',typ='I',defaut= 3),
+ ITER_LINE_CRIT =SIMP(statut='f',typ='I',defaut= 20),
+ PAS_MINI_CRIT =SIMP(statut='f',typ='R',defaut=0.0E+0),
+ RHO_MIN =SIMP(statut='f',typ='R',defaut=1.0E-2),
+ RHO_MAX =SIMP(statut='f',typ='R',defaut=1.0E+1),
+ RHO_EXCL =SIMP(statut='f',typ='R',defaut=0.9E-2),
+ ),
+ PILOTAGE =FACT(statut='f',
+ regles=(EXCLUS('NOEUD','GROUP_NO'),PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),),
+ TYPE =SIMP(statut='o',typ='TXM',into=("DDL_IMPO","LONG_ARC","PRED_ELAS","PRED_ELAS_INCR","DEFORMATION","ANA_LIM") ),
+ COEF_MULT =SIMP(statut='f',typ='R',defaut= 1.0E+0),
+ ETA_PILO_MAX =SIMP(statut='f',typ='R'),
+ ETA_PILO_MIN =SIMP(statut='f',typ='R'),
+ ETA_PILO_R_MAX =SIMP(statut='f',typ='R'),
+ ETA_PILO_R_MIN =SIMP(statut='f',typ='R'),
+ PROJ_BORNES =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")),
+ SELECTION =SIMP(statut='f',typ='TXM',defaut="NORM_INCR_DEPL", into=("RESIDU","ANGL_INCR_DEPL","NORM_INCR_DEPL") ),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA =SIMP(statut='f',typ=grma ,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno ,validators=NoRepeat(),max='**'),
+ NOM_CMP =SIMP(statut='f',typ='TXM',max='**' ),
+ ),
+ CONVERGENCE =FACT(statut='d',
+ regles=(PRESENT_ABSENT('RESI_REFE_RELA','RESI_GLOB_MAXI','RESI_GLOB_RELA'),),
+ SIGM_REFE =SIMP(statut='f',typ='R'),
+ EPSI_REFE =SIMP(statut='f',typ='R'),
+ FLUX_THER_REFE =SIMP(statut='f',typ='R'),
+ FLUX_HYD1_REFE =SIMP(statut='f',typ='R'),
+ FLUX_HYD2_REFE =SIMP(statut='f',typ='R'),
+ RESI_REFE_RELA =SIMP(statut='f',typ='R'),
+ RESI_GLOB_MAXI =SIMP(statut='f',typ='R'),
+ RESI_GLOB_RELA =SIMP(statut='f',typ='R'),
+ ITER_GLOB_MAXI =SIMP(statut='f',typ='I',defaut=10),
+ ITER_GLOB_ELAS =SIMP(statut='f',typ='I',defaut=25),
+ ARRET =SIMP(statut='f',typ='TXM',defaut="OUI"),
+ RESI_INTE_RELA =SIMP(statut='f',typ='R'
+ ,defaut= 1.0E-6),
+ ITER_INTE_MAXI =SIMP(statut='f',typ='I',defaut= 10 ),
+ ITER_INTE_PAS =SIMP(statut='f',typ='I',defaut= 0 ),
+ RESO_INTE =SIMP(statut='f',typ='TXM',defaut="IMPLICITE",
+ into=("RUNGE_KUTTA_2","RUNGE_KUTTA_4","IMPLICITE")),
+ ),
+#-------------------------------------------------------------------
+ ARCHIVAGE =FACT(statut='f',
+ regles=(EXCLUS('PAS_ARCH','LIST_INST','INST'),
+ EXCLUS('ARCH_ETAT_INIT','NUME_INIT'), ),
+ LIST_INST =SIMP(statut='f',typ=(listr8_sdaster) ),
+ INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ),
+ PAS_ARCH =SIMP(statut='f',typ='I' ),
+ PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3),
+ ARCH_ETAT_INIT =SIMP(statut='f',typ='TXM',into=("OUI",)),
+ NUME_INIT =SIMP(statut='f',typ='I'),
+ DETR_NUME_SUIV =SIMP(statut='f',typ='TXM',into=("OUI",)),
+ CHAM_EXCLU =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',
+ into=("DEPL","SIEF_ELGA","VARI_ELGA","ACCE","VITE","VARI_NON_LOCAL","LANL_ELGA")),
+ ),
+ OBSERVATION =FACT(statut='f',max='**',
+ regles=(UN_PARMI('NOEUD','GROUP_NO','MAILLE'),
+ PRESENT_PRESENT('MAILLE','POINT'),),
+ NOM_CHAM =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',
+
+into=("DEPL","VITE","ACCE","SIEF_ELGA","VARI_ELGA","DEPL_ABSOLU","VITE_ABSOLU","ACCE_ABSOLU") ),
+ NOM_CMP =SIMP(statut='o',typ='TXM',max='**' ),
+ LIST_ARCH =SIMP(statut='f',typ=listis_sdaster),
+ LIST_INST =SIMP(statut='f',typ=listr8_sdaster),
+ INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ),
+ PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3 ),
+ CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
+ PAS_OBSE =SIMP(statut='f',typ='I'),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ POINT =SIMP(statut='f',typ='I' ,max='**'),
+ ),
+#-------------------------------------------------------------------
+ SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**',
+ fr="Liste des paramètres de sensibilité",
+ ang="List of sensitivity parameters"),
+#-------------------------------------------------------------------
+ SOLV_NON_LOCAL =FACT(statut='f',
+ METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC") ),
+ b_mult_front =BLOC(condition = "METHODE == 'MULT_FRONT' ",fr="Paramètres de la méthode multi frontale",
+ RENUM =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ),
+ ),
+ b_ldlt =BLOC(condition = "METHODE == 'LDLT' ",fr="Paramètres de la méthode LDLT",
+ RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("RCMK","SANS") ),
+ ),
+ b_ldlt_mult =BLOC(condition = "METHODE == 'LDLT' or METHODE == 'MULT_FRONT' ",
+ fr="Paramètres relatifs à la non inversibilité de la matrice à factorise",
+ NPREC =SIMP(statut='f',typ='I',defaut= 8 ),
+ STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+ ),
+ b_gcpc =BLOC(condition = "METHODE == 'GCPC' ", fr="Paramètres de la méthode du gradient conjugué",
+ PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC",),defaut="LDLT_INC" ),
+ NIVE_REMPLISSAGE=SIMP(statut='f',typ='I',defaut= 0 ),
+ RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ),
+ NMAX_ITER =SIMP(statut='f',typ='I',defaut= 0 ),
+ ),
+ EPS =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ ),
+ LAGR_NON_LOCAL =FACT(statut='f',
+ ITER_DUAL_MAXI =SIMP(statut='f',typ='I',defaut= 50),
+ RESI_DUAL_ABSO =SIMP(statut='o',typ='R'),
+ RESI_PRIM_ABSO =SIMP(statut='o',typ='R'),
+ R =SIMP(statut='f',typ='R',defaut= 1000.),
+ ITER_PRIM_MAXI =SIMP(statut='f',typ='I',defaut= 10),
+ ),
+#-------------------------------------------------------------------
+ PARM_THETA =SIMP(statut='f',typ='R'
+ ,defaut= 1. ),
+#-------------------------------------------------------------------
+ INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
+ TITRE =SIMP(statut='f',typ='TXM',max='**'),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+DYNA_SPEC_MODAL=OPER(nom="DYNA_SPEC_MODAL",op= 147,sd_prod=tabl_intsp,
+ fr="Calcul de la réponse par recombinaison modale d'une structure linéaire pour une excitation aléatoire",
+ reentrant='n',
+ UIinfo={"groupes":("Résolution",)},
+ BASE_ELAS_FLUI =SIMP(statut='o',typ=melasflu_sdaster ),
+ EXCIT =FACT(statut='o',
+ INTE_SPEC_GENE =SIMP(statut='o',typ=tabl_intsp ),
+ ),
+ OPTION =SIMP(statut='f',typ='TXM',defaut="TOUT",into=("TOUT","DIAG") ),
+ TITRE =SIMP(statut='f',typ='TXM',max='**'),
+) ;
+#& MODIF COMMANDE DATE 12/09/2005 AUTEUR BOYERE E.BOYERE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2003 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+#& RESPONSABLE
+DYNA_TRAN_EXPLI=OPER(nom="DYNA_TRAN_EXPLI",op= 69,sd_prod=evol_noli,reentrant='f',
+ fr="Analyse mecanique dynamique explicite",
+ regles=(AU_MOINS_UN('COMP_INCR','COMP_ELAS',),),
+ MODELE =SIMP(statut='o',typ=modele_sdaster),
+ CHAM_MATER =SIMP(statut='o',typ=cham_mater),
+ MODE_STAT =SIMP(statut='f',typ=(mode_stat_depl,mode_stat_acce,mode_stat_forc,)),
+ CARA_ELEM =SIMP(statut='f',typ=cara_elem),
+ EXCIT =FACT(statut='o',max='**',
+ regles=(PRESENT_ABSENT('FONC_MULT','ACCE'),
+ PRESENT_PRESENT('ACCE','VITE','DEPL'),
+ # PRESENT_ABSENT('MULT_APPUI','FONC_MULT'),
+ ),
+ TYPE_CHARGE =SIMP(statut='f',typ='TXM',defaut="FIXE_CSTE",
+ into=("FIXE_CSTE","FIXE_PILO","SUIV","DIDI")),
+ CHARGE =SIMP(statut='o',typ=char_meca),
+ FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ DEPL =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ ACCE =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ VITE =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ MULT_APPUI =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
+ DIRECTION =SIMP(statut='f',typ='R',max=3),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ ),
+ AMOR_MODAL =FACT(statut='f',
+ MODE_MECA =SIMP(statut='f',typ=mode_meca),
+ AMOR_REDUIT =SIMP(statut='f',typ='R',max='**' ),
+ NB_MODE =SIMP(statut='f',typ='I',defaut= 9999 ),
+ REAC_VITE =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+ ),
+ PROJ_MODAL =FACT(statut='f',
+ MODE_MECA =SIMP(statut='f',typ=mode_meca),
+ NB_MODE =SIMP(statut='f',typ='I',defaut= 9999 ),
+ ),
+ VARI_COMM =FACT(statut='f',
+ regles=(AU_MOINS_UN('IRRA','CORROSION'),),
+ IRRA =SIMP(statut='f',typ=evol_varc),
+ CORROSION =SIMP(statut='f',typ=carte_corr_r),
+ ),
+ COMP_INCR =C_COMP_INCR(),
+ COMP_ELAS =FACT(statut='f',max='**',
+ RELATION =SIMP(statut='o',typ='TXM',defaut="ELAS",
+ into=("ELAS","ELAS_VMIS_LINE","ELAS_VMIS_TRAC",
+ "ELAS_POUTRE_GR","CABLE")),
+ ELAS =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
+ ELAS_VMIS_TRAC =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
+ ELAS_VMIS_LINE =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
+ ELAS_POUTRE_GR =SIMP(statut='c',typ='I',defaut=3,into=(3,)),
+ CABLE =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
+ DEFORMATION =SIMP(statut='f',typ='TXM',defaut="PETIT" ,into=("PETIT","GREEN","GREEN_GR",) ),
+ regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ ),
+#-------------------------------------------------------------------
+ ETAT_INIT =FACT(statut='f',
+ regles=(AU_MOINS_UN('EVOL_NOLI','DEPL','VITE','SIGM','VARI','VARI_NON_LOCAL',),
+ EXCLUS('EVOL_NOLI','DEPL',),
+ EXCLUS('EVOL_NOLI','VITE'),
+ EXCLUS('EVOL_NOLI','SIGM',),
+ EXCLUS('EVOL_NOLI','VARI',),
+ EXCLUS('EVOL_NOLI','VARI_NON_LOCAL',),
+ EXCLUS('NUME_ORDRE','INST'), ),
+ DEPL =SIMP(statut='f',typ=cham_no_depl_r),
+ VITE =SIMP(statut='f',typ=cham_no_depl_r),
+ SIGM =SIMP(statut='f',typ=(cham_elem_sief_r,carte_sief_r)),
+ VARI =SIMP(statut='f',typ=cham_elem_vari_r),
+ VARI_NON_LOCAL =SIMP(statut='f',typ=cham_no_vanl_r),
+ EVOL_NOLI =SIMP(statut='f',typ=evol_noli),
+ NUME_ORDRE =SIMP(statut='f',typ='I'),
+ INST =SIMP(statut='f',typ='R'),
+ PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3 ),
+ CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
+ NUME_DIDI =SIMP(statut='f',typ='I'),
+ INST_ETAT_INIT =SIMP(statut='f',typ='R'),
+ ),
+#-------------------------------------------------------------------
+ INCREMENT =FACT(statut='o',
+ regles=(EXCLUS('NUME_INST_INIT','INST_INIT'),
+ EXCLUS('NUME_INST_FIN','INST_FIN'),),
+ LIST_INST =SIMP(statut='o',typ=listr8_sdaster),
+ EVOLUTION =SIMP(statut='f',typ='TXM',defaut="CHRONOLOGIQUE",
+ into=("CHRONOLOGIQUE","RETROGRADE","SANS",) ),
+ NUME_INST_INIT =SIMP(statut='f',typ='I'),
+ INST_INIT =SIMP(statut='f',typ='R'),
+ NUME_INST_FIN =SIMP(statut='f',typ='I'),
+ INST_FIN =SIMP(statut='f',typ='R'),
+ PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3 ),
+ SUBD_PAS =SIMP(statut='f',typ='I',defaut=1),
+ SUBD_PAS_MINI =SIMP(statut='f',typ='R'),
+ COEF_SUBD_PAS_1 =SIMP(statut='f',typ='R',defaut= 1.0E+0),
+ OPTI_LIST_INST =SIMP(statut='f',typ='TXM',into=("INCR_MAXI",),),
+ NOM_CHAM =SIMP(statut='f',typ='TXM',),
+ NOM_CMP =SIMP(statut='f',typ='TXM',),
+ VALE =SIMP(statut='f',typ='R'),
+ ),
+#-------------------------------------------------------------------
+ NEWMARK =FACT(statut='d',
+ ALPHA =SIMP(statut='f',typ='R',defaut= 0.25),
+ DELTA =SIMP(statut='f',typ='R',defaut= 0.5),
+ ),
+ NEWTON =FACT(statut='c',
+ REAC_INCR =SIMP(statut='f',typ='I',defaut= 1 ),
+ PREDICTION =SIMP(statut='f',typ='TXM',into=("TANGENTE","ELASTIQUE") ),
+ MATRICE =SIMP(statut='f',typ='TXM',defaut="TANGENTE",into=("TANGENTE","ELASTIQUE") ),
+ REAC_ITER =SIMP(statut='f',typ='I',defaut= 0),
+ REAC_ITER_ELAS =SIMP(statut='f',typ='I',defaut=0),
+ PAS_MINI_ELAS =SIMP(statut='f',typ='R',defaut=0.0E+0),
+ ),
+ SOLVEUR =FACT(statut='d',
+ METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC") ),
+ b_mult_front =BLOC(condition= "METHODE == 'MULT_FRONT' ",fr="Paramètres de la méthode multi frontale",
+ RENUM =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ),
+ ),
+ b_ldlt =BLOC(condition= "METHODE == 'LDLT'",fr="Paramètres de la méthode LDLT",
+ RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("RCMK","SANS") ),
+ ),
+ b_ldlt_mult =BLOC(condition="METHODE == 'LDLT' or METHODE == 'MULT_FRONT'",
+ fr="Paramètres relatifs à la non inversibilité de la matrice à factorise",
+ NPREC =SIMP(statut='f',typ='I',defaut= 8 ),
+ STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON","DECOUPE") ),
+ ),
+ b_gcpc =BLOC(condition="METHODE == 'GCPC'",fr="Paramètres de la méthode du gradient conjugué",
+ PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC",),defaut="LDLT_INC" ),
+ NIVE_REMPLISSAGE=SIMP(statut='f',typ='I',defaut=0),
+ RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ),
+ RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ),
+ NMAX_ITER =SIMP(statut='f',typ='I',defaut= 0 ),
+ ),
+ SYME =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
+ ),
+#-------------------------------------------------------------------
+ RECH_LINEAIRE =FACT(statut='c',
+ RESI_LINE_RELA =SIMP(statut='f',typ='R',defaut= 1.0E-1 ),
+ ITER_LINE_MAXI =SIMP(statut='f',typ='I',defaut= 3),
+ ITER_LINE_CRIT =SIMP(statut='f',typ='I',defaut= 20),
+ PAS_MINI_CRIT =SIMP(statut='f',typ='R',defaut=0.0E+0),
+ RHO_MIN =SIMP(statut='f',typ='R',defaut=1.0E-2),
+ RHO_MAX =SIMP(statut='f',typ='R',defaut=1.0E+1),
+ RHO_EXCL =SIMP(statut='f',typ='R',defaut=0.9E-2),
+ ),
+ PILOTAGE =FACT(statut='c',
+ regles=(EXCLUS('NOEUD','GROUP_NO'),PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),),
+ TYPE =SIMP(statut='o',typ='TXM',into=("DDL_IMPO","LONG_ARC","PRED_ELAS","PRED_ELAS_INCR","DEFORMATION","ANA_LIM") ),
+ COEF_MULT =SIMP(statut='f',typ='R',defaut= 1.0E+0),
+ ETA_PILO_MAX =SIMP(statut='f',typ='R'),
+ ETA_PILO_MIN =SIMP(statut='f',typ='R'),
+ ETA_PILO_R_MAX =SIMP(statut='f',typ='R'),
+ ETA_PILO_R_MIN =SIMP(statut='f',typ='R'),
+ PROJ_BORNES =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")),
+ SELECTION =SIMP(statut='f',typ='TXM',defaut="NORM_INCR_DEPL", into=("RESIDU","ANGL_INCR_DEPL","NORM_INCR_DEPL") ),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA =SIMP(statut='f',typ=grma ,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno ,validators=NoRepeat(),max='**'),
+ NOM_CMP =SIMP(statut='f',typ='TXM',max='**' ),
+ ),
+ CONVERGENCE =FACT(statut='d',
+ regles=(PRESENT_ABSENT('RESI_REFE_RELA','RESI_GLOB_MAXI','RESI_GLOB_RELA'),),
+ SIGM_REFE =SIMP(statut='f',typ='R'),
+ EPSI_REFE =SIMP(statut='f',typ='R'),
+ FLUX_THER_REFE =SIMP(statut='f',typ='R'),
+ FLUX_HYD1_REFE =SIMP(statut='f',typ='R'),
+ FLUX_HYD2_REFE =SIMP(statut='f',typ='R'),
+ RESI_REFE_RELA =SIMP(statut='f',typ='R'),
+ RESI_GLOB_MAXI =SIMP(statut='f',typ='R'),
+ RESI_GLOB_RELA =SIMP(statut='f',typ='R'),
+ ITER_GLOB_MAXI =SIMP(statut='f',typ='I',defaut=10),
+ ITER_GLOB_ELAS =SIMP(statut='f',typ='I',defaut=25),
+ ARRET =SIMP(statut='f',typ='TXM',defaut="OUI"),
+ RESI_INTE_RELA =SIMP(statut='f',typ='R'
+ ,defaut= 1.0E-6),
+ ITER_INTE_MAXI =SIMP(statut='f',typ='I',defaut= 10 ),
+ ITER_INTE_PAS =SIMP(statut='f',typ='I',defaut= 0 ),
+ RESO_INTE =SIMP(statut='f',typ='TXM',defaut="IMPLICITE",
+ into=("RUNGE_KUTTA_2","RUNGE_KUTTA_4","IMPLICITE")),
+ ),
+#-------------------------------------------------------------------
+ ARCHIVAGE =FACT(statut='f',
+ regles=(EXCLUS('PAS_ARCH','LIST_INST','INST'),
+ EXCLUS('ARCH_ETAT_INIT','NUME_INIT'), ),
+ LIST_INST =SIMP(statut='f',typ=(listr8_sdaster) ),
+ INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ),
+ PAS_ARCH =SIMP(statut='f',typ='I' ),
+ PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3),
+ ARCH_ETAT_INIT =SIMP(statut='f',typ='TXM',into=("OUI",)),
+ NUME_INIT =SIMP(statut='f',typ='I'),
+ DETR_NUME_SUIV =SIMP(statut='f',typ='TXM',into=("OUI",)),
+ CHAM_EXCLU =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',
+ into=("DEPL","SIEF_ELGA","VARI_ELGA","ACCE","VITE","VARI_NON_LOCAL","LANL_ELGA")),
+ ),
+ OBSERVATION =FACT(statut='f',max='**',
+ regles=(UN_PARMI('NOEUD','GROUP_NO','MAILLE'),
+ PRESENT_PRESENT('MAILLE','POINT'),),
+ NOM_CHAM =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',
+
+into=("DEPL","VITE","ACCE","SIEF_ELGA","VARI_ELGA","DEPL_ABSOLU","VITE_ABSOLU","ACCE_ABSOLU") ),
+ NOM_CMP =SIMP(statut='o',typ='TXM',max='**' ),
+ LIST_ARCH =SIMP(statut='f',typ=listis_sdaster),
+ LIST_INST =SIMP(statut='f',typ=listr8_sdaster),
+ INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ),
+ PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3 ),
+ CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
+ PAS_OBSE =SIMP(statut='f',typ='I'),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ POINT =SIMP(statut='f',typ='I' ,max='**'),
+ ),
+#-------------------------------------------------------------------
+ SOLV_NON_LOCAL =FACT(statut='f',
+ METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC") ),
+ b_mult_front =BLOC(condition = "METHODE == 'MULT_FRONT' ",fr="Paramètres de la méthode multi frontale",
+ RENUM =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ),
+ ),
+ b_ldlt =BLOC(condition = "METHODE == 'LDLT' ",fr="Paramètres de la méthode LDLT",
+ RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("RCMK","SANS") ),
+ ),
+ b_ldlt_mult =BLOC(condition = "METHODE == 'LDLT' or METHODE == 'MULT_FRONT' ",
+ fr="Paramètres relatifs à la non inversibilité de la matrice à factorise",
+ NPREC =SIMP(statut='f',typ='I',defaut= 8 ),
+ STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+ ),
+ b_gcpc =BLOC(condition = "METHODE == 'GCPC' ", fr="Paramètres de la méthode du gradient conjugué",
+ PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC",),defaut="LDLT_INC" ),
+ NIVE_REMPLISSAGE=SIMP(statut='f',typ='I',defaut= 0 ),
+ RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ),
+ NMAX_ITER =SIMP(statut='f',typ='I',defaut= 0 ),
+ ),
+ ),
+ LAGR_NON_LOCAL =FACT(statut='f',
+ ITER_DUAL_MAXI =SIMP(statut='f',typ='I',defaut= 50),
+ RESI_DUAL_ABSO =SIMP(statut='o',typ='R'),
+ RESI_PRIM_ABSO =SIMP(statut='o',typ='R'),
+ R =SIMP(statut='f',typ='R',defaut= 1000.),
+ ITER_PRIM_MAXI =SIMP(statut='f',typ='I',defaut= 10),
+ ),
+#-------------------------------------------------------------------
+ PARM_THETA =SIMP(statut='f',typ='R'
+ ,defaut= 1. ),
+#-------------------------------------------------------------------
+ INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
+ TITRE =SIMP(statut='f',typ='TXM',max='**'),
+) ;
+#& MODIF COMMANDE DATE 30/06/2004 AUTEUR MCOURTOI M.COURTOIS
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+DYNA_TRAN_MODAL=OPER(nom="DYNA_TRAN_MODAL",op= 74,sd_prod=tran_gene,
+ fr="Réponse dynamique transitoire en coordonnées généralisées par recombinaison modale",
+ reentrant='f',
+ UIinfo={"groupes":("Résolution",)},
+ regles=(EXCLUS('AMOR_REDUIT','AMOR_GENE','LIST_AMOR'),
+ PRESENT_ABSENT('MODE_STAT','MODE_CORR'),),
+ METHODE =SIMP(statut='f',typ='TXM',defaut="EULER",
+ into=("EULER","NEWMARK","DEVOGE","ADAPT","ITMI") ),
+ MASS_GENE =SIMP(statut='o',typ=matr_asse_gene_r ),
+ RIGI_GENE =SIMP(statut='o',typ=matr_asse_gene_r ),
+ AMOR_GENE =SIMP(statut='f',typ=matr_asse_gene_r ),
+ AMOR_REDUIT =SIMP(statut='f',typ='R',max='**'),
+ LIST_AMOR =SIMP(statut='f',typ=listr8_sdaster ),
+ MODE_STAT =SIMP(statut='f',typ=(mode_stat_depl,mode_stat_acce,mode_stat_forc) ),
+ MODE_CORR =SIMP(statut='f',typ=(mult_elas,mode_stat_acce) ,),
+
+ ETAT_INIT =FACT(statut='f',
+ regles=(EXCLUS('RESU_GENE','DEPL_INIT_GENE'),
+ EXCLUS('RESU_GENE','VITE_INIT_GENE'),),
+ RESU_GENE =SIMP(statut='f',typ=tran_gene ),
+ b_resu_gene =BLOC(condition = "RESU_GENE != None",
+ INST_INIT =SIMP(statut='f',typ='R' ),
+ PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ),
+ CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
+ ),
+ DEPL_INIT_GENE =SIMP(statut='f',typ=vect_asse_gene ),
+ VITE_INIT_GENE =SIMP(statut='f',typ=vect_asse_gene ),
+ ),
+ INCREMENT =FACT(statut='o',max='**',
+ INST_INIT =SIMP(statut='f',typ='R' ),
+ INST_FIN =SIMP(statut='o',typ='R' ),
+ PAS =SIMP(statut='f',typ='R' ),
+ VERI_PAS =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+ VITE_MIN =SIMP(statut='f',typ='TXM',defaut="NORM",into=("MAXI","NORM") ),
+ COEF_MULT_PAS =SIMP(statut='f',typ='R',defaut= 1.1 ),
+ COEF_DIVI_PAS =SIMP(statut='f',typ='R',defaut= 1.3333334 ),
+ PAS_LIMI_RELA =SIMP(statut='f',typ='R',defaut= 1.0E-6 ),
+ NB_POIN_PERIODE =SIMP(statut='f',typ='I',defaut= 50 ),
+ NMAX_ITER_PAS =SIMP(statut='f',typ='I',defaut= 16 ),
+ ),
+ ARCHIVAGE =FACT(statut='f',
+ regles=(UN_PARMI('LIST_ARCH','PAS_ARCH'),),
+ LIST_ARCH =SIMP(statut='f',typ=listis_sdaster ),
+ PAS_ARCH =SIMP(statut='f',typ='I' ),
+ ),
+
+ NMAX_ITER =SIMP(statut='f',typ='I',defaut= 20 ),
+ RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.0E-3 ),
+ LAMBDA =SIMP(statut='f',typ='R',defaut= 10. ),
+
+ EXCIT =FACT(statut='f',max='**',
+ regles=(UN_PARMI('FONC_MULT','COEF_MULT','ACCE'),
+ PRESENT_PRESENT('ACCE','VITE','DEPL'),
+ PRESENT_PRESENT('D_FONC_DT','D_FONC_DT2'),
+ PRESENT_ABSENT('NUME_MODE','VECT_GENE','COEF_MULT'),
+ EXCLUS('MULT_APPUI','CORR_STAT'),
+ PRESENT_ABSENT('MULT_APPUI','COEF_MULT'),
+ PRESENT_ABSENT('MULT_APPUI','FONC_MULT'),),
+ VECT_GENE =SIMP(statut='f',typ=vect_asse_gene ),
+ NUME_MODE =SIMP(statut='f',typ='I' ),
+ FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ COEF_MULT =SIMP(statut='f',typ='R' ),
+ ACCE =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ VITE =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ DEPL =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ MULT_APPUI =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ DIRECTION =SIMP(statut='f',typ='R',max='**'),
+ b_loca =BLOC(condition= "DIRECTION != None",
+ regles=(EXCLUS('NOEUD','GROUP_NO'),),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ ),
+ CORR_STAT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ D_FONC_DT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ D_FONC_DT2 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ ),
+ CHOC =FACT(statut='f',max='**',
+ regles=(UN_PARMI('NOEUD_1','GROUP_NO_1' ),
+ PRESENT_ABSENT('NOEUD_1','GROUP_NO_1'),
+ PRESENT_ABSENT('NOEUD_2','GROUP_NO_2'),),
+ INTITULE =SIMP(statut='f',typ='TXM' ),
+ NOEUD_1 =SIMP(statut='f',typ=no),
+ NOEUD_2 =SIMP(statut='f',typ=no),
+ GROUP_NO_1 =SIMP(statut='f',typ=grno),
+ GROUP_NO_2 =SIMP(statut='f',typ=grno),
+ OBSTACLE =SIMP(statut='o',typ=obstacle_sdaster ),
+ ORIG_OBST =SIMP(statut='f',typ='R',min=3,max=3),
+ NORM_OBST =SIMP(statut='o',typ='R',min=3,max=3),
+ ANGL_VRIL =SIMP(statut='f',typ='R' ),
+ JEU =SIMP(statut='f',typ='R',defaut= 1. ),
+ DIST_1 =SIMP(statut='f',typ='R',val_min=0.E+0 ),
+ DIST_2 =SIMP(statut='f',typ='R',val_min=0.E+0 ),
+ SOUS_STRUC_1 =SIMP(statut='f',typ='TXM' ),
+ SOUS_STRUC_2 =SIMP(statut='f',typ='TXM' ),
+ REPERE =SIMP(statut='f',typ='TXM',defaut="GLOBAL"),
+ RIGI_NOR =SIMP(statut='f',typ='R' ),
+ AMOR_NOR =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ RIGI_TAN =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ AMOR_TAN =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ COULOMB =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+
+ LAME_FLUIDE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
+ b_lame =BLOC(condition="LAME_FLUIDE=='OUI'",
+ ALPHA =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ BETA =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ CHI =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ DELTA =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ ),
+ ),
+ VERI_CHOC =FACT(statut='f',max='**',
+ STOP_CRITERE =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+ SEUIL =SIMP(statut='f',typ='R',defaut= 0.5 ),
+ ),
+ FLAMBAGE =FACT(statut='f',max='**',
+ regles=(UN_PARMI('NOEUD_1','GROUP_NO_1'),
+ PRESENT_ABSENT('NOEUD_1','GROUP_NO_1'),
+ PRESENT_ABSENT('NOEUD_2','GROUP_NO_2'),),
+ NOEUD_1 =SIMP(statut='f',typ=no),
+ NOEUD_2 =SIMP(statut='f',typ=no),
+ GROUP_NO_1 =SIMP(statut='f',typ=grno),
+ GROUP_NO_2 =SIMP(statut='f',typ=grno),
+ OBSTACLE =SIMP(statut='o',typ=obstacle_sdaster ),
+ ORIG_OBST =SIMP(statut='f',typ='R',max='**'),
+ NORM_OBST =SIMP(statut='o',typ='R',max='**'),
+ ANGL_VRIL =SIMP(statut='f',typ='R' ),
+ JEU =SIMP(statut='f',typ='R',defaut= 1. ),
+ DIST_1 =SIMP(statut='f',typ='R' ),
+ DIST_2 =SIMP(statut='f',typ='R' ),
+ REPERE =SIMP(statut='f',typ='TXM',defaut="GLOBAL"),
+ RIGI_NOR =SIMP(statut='f',typ='R' ),
+ FNOR_CRIT =SIMP(statut='f',typ='R' ),
+ FNOR_POST_FL =SIMP(statut='f',typ='R' ),
+ RIGI_NOR_POST_FL=SIMP(statut='f',typ='R' ),
+ ),
+ ANTI_SISM =FACT(statut='f',max='**',
+ regles=(UN_PARMI('NOEUD_1','GROUP_NO_1'),
+ UN_PARMI('NOEUD_2','GROUP_NO_2'),
+ PRESENT_ABSENT('NOEUD_1','GROUP_NO_1'),
+ PRESENT_ABSENT('NOEUD_2','GROUP_NO_2'),),
+ NOEUD_1 =SIMP(statut='f',typ=no),
+ NOEUD_2 =SIMP(statut='f',typ=no),
+ GROUP_NO_1 =SIMP(statut='f',typ=grno),
+ GROUP_NO_2 =SIMP(statut='f',typ=grno),
+ RIGI_K1 =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ RIGI_K2 =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ SEUIL_FX =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ C =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ PUIS_ALPHA =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ DX_MAX =SIMP(statut='f',typ='R',defaut= 1. ),
+ ),
+ RELA_EFFO_DEPL =FACT(statut='f',max='**',
+ NOEUD =SIMP(statut='o',typ=no),
+ SOUS_STRUC =SIMP(statut='f',typ='TXM' ),
+ NOM_CMP =SIMP(statut='f',typ='TXM' ),
+ RELATION =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ ),
+ RELA_TRANSIS =FACT(statut='f',max='**',
+ NOEUD =SIMP(statut='o',typ=no),
+ SOUS_STRUC =SIMP(statut='f',typ='TXM' ),
+ NOM_CMP =SIMP(statut='f',typ='TXM' ),
+ RELATION =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ ),
+ RELA_EFFO_VITE =FACT(statut='f',max='**',
+ NOEUD =SIMP(statut='o',typ=no),
+ SOUS_STRUC =SIMP(statut='f',typ='TXM' ),
+ NOM_CMP =SIMP(statut='f',typ='TXM' ),
+ RELATION =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ ),
+ b_itmi =BLOC(condition = "METHODE=='ITMI'",
+ regles=(ENSEMBLE('BASE_ELAS_FLUI','NUME_VITE_FLUI'),),
+ BASE_ELAS_FLUI =SIMP(statut='f',typ=melasflu_sdaster ),
+ NUME_VITE_FLUI =SIMP(statut='f',typ='I' ),
+ ETAT_STAT =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
+ PREC_DUREE =SIMP(statut='f',typ='R',defaut= 1.E-2 ),
+ CHOC_FLUI =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
+ NB_MODE =SIMP(statut='f',typ='I' ),
+ NB_MODE_FLUI =SIMP(statut='f',typ='I' ),
+ NB_MODE_DIAG =SIMP(statut='f',typ='I' ),
+ TS_REG_ETAB =SIMP(statut='f',typ='R' ),
+ ),
+ INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
+ IMPRESSION =FACT(statut='f',max='**',
+ regles=(EXCLUS('TOUT','NIVEAU'),),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ NIVEAU =SIMP(statut='f',typ='TXM',into=("DEPL_LOC","VITE_LOC","FORC_LOC","TAUX_CHOC") ),
+ INST_INIT =SIMP(statut='f',typ='R' ),
+ INST_FIN =SIMP(statut='f',typ='R' ),
+ ),
+ TITRE =SIMP(statut='f',typ='TXM',max='**'),
+ ) ;
+#& MODIF COMMANDE DATE 23/08/2004 AUTEUR CIBHHLV L.VIVAN
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE VABHHTS J.PELLET
+ENGENDRE_TEST=PROC(nom="ENGENDRE_TEST",op=178,
+ UIinfo={"groupes":("Impression",)},
+ regles=(UN_PARMI('TOUT','CO'),),
+ UNITE =SIMP(statut='f',typ='I',defaut=8),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ CO =SIMP(statut='f',typ=assd,validators=NoRepeat(),max='**'),
+ TYPE_TEST =SIMP(statut='f',typ='TXM',defaut="SOMME",into=("SOMME","RESUME") ),
+ FORMAT_R =SIMP(statut='f',typ='TXM',defaut="1PE12.5"),
+ PREC_R =SIMP(statut='f',typ='TXM',defaut="1.E-5"),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+EXEC_LOGICIEL=PROC(nom="EXEC_LOGICIEL",op= 183,fr="",
+ UIinfo={"groupes":("Impression",)},
+ LOGICIEL =SIMP(statut='f',typ='TXM' ),
+ ARGUMENT =FACT(statut='f',max='**',
+ NOM_PARA =SIMP(statut='f',typ='TXM' ),
+ ),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+def extr_mode_prod(FILTRE_MODE,**args):
+ vale=FILTRE_MODE[0]['MODE']
+ if AsType(vale) == mode_meca : return mode_meca
+ if AsType(vale) == mode_meca_c : return mode_meca_c
+ if AsType(vale) == mode_gene : return mode_gene
+ raise AsException("type de concept resultat non prevu")
+
+EXTR_MODE=OPER(nom="EXTR_MODE",op= 168,sd_prod=extr_mode_prod,
+ reentrant='n',
+ UIinfo={"groupes":("Résolution",)},
+ FILTRE_MODE =FACT(statut='o',max='**',
+ regles=(UN_PARMI('TOUT_ORDRE','NUME_ORDRE','NUME_MODE','NUME_MODE_EXCLU','FREQ_MIN','CRIT_EXTR',),),
+ MODE =SIMP(statut='o',typ=(mode_meca,mode_meca_c,mode_gene ) ),
+ TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI","NON") ),
+ NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
+ NUME_MODE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
+ NUME_MODE_EXCLU =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
+ FREQ_MIN =SIMP(statut='f',typ='R' ),
+ CRIT_EXTR =SIMP(statut='f',typ='TXM',into=("MASS_EFFE_UN","MASS_GENE") ),
+ b_freq_min =BLOC(condition = "FREQ_MIN != None",
+ FREQ_MAX =SIMP(statut='o',typ='R' ),
+ PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ),
+ ),
+ b_crit_extr =BLOC(condition = "CRIT_EXTR != None",
+ SEUIL =SIMP(statut='f',typ='R',defaut= 1.E-3 ),
+ ),
+ ),
+ TITRE =SIMP(statut='f',typ='TXM',max='**'),
+ IMPRESSION =FACT(statut='f',
+ CUMUL =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
+ CRIT_EXTR =SIMP(statut='f',typ='TXM',defaut="MASS_EFFE_UN",into=("MASS_EFFE_UN","MASS_GENE") ),
+ ),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+def extr_resu_prod(RESULTAT,**args):
+ if AsType(RESULTAT) == evol_elas : return evol_elas
+ if AsType(RESULTAT) == evol_noli : return evol_noli
+ if AsType(RESULTAT) == evol_ther : return evol_ther
+ if AsType(RESULTAT) == dyna_trans : return dyna_trans
+ if AsType(RESULTAT) == dyna_harmo : return dyna_harmo
+ if AsType(RESULTAT) == acou_harmo : return acou_harmo
+ if AsType(RESULTAT) == mode_meca : return mode_meca
+ if AsType(RESULTAT) == mode_acou : return mode_acou
+ if AsType(RESULTAT) == mode_stat : return mode_stat
+ if AsType(mode_stat) == mode_stat_depl : return mode_stat_depl
+ if AsType(mode_stat) == mode_stat_acce : return mode_stat_acce
+ if AsType(mode_stat) == mode_stat_forc : return mode_stat_forc
+ if AsType(RESULTAT) == mult_elas : return mult_elas
+ if AsType(RESULTAT) == fourier_elas : return fourier_elas
+ raise AsException("type de concept resultat non prevu")
+
+EXTR_RESU=OPER(nom="EXTR_RESU",op=176,sd_prod=extr_resu_prod,reentrant='f',
+ UIinfo={"groupes":("Résultats et champs",)},
+ RESULTAT =SIMP(statut='o',typ=(evol_elas,dyna_trans,dyna_harmo,acou_harmo,mode_meca,
+ mode_acou,mode_stat_depl,mode_stat_acce,mode_stat_forc,evol_ther,evol_noli,
+ mult_elas,fourier_elas ) ),
+
+ SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**',
+ fr="Liste des paramètres de sensibilité.",
+ ang="List of sensitivity parameters"),
+
+ ARCHIVAGE =FACT(statut='f',
+ regles=( UN_PARMI('NUME_ORDRE', 'INST', 'FREQ', 'NUME_MODE',
+ 'NOEUD_CMP', 'LIST_INST', 'LIST_FREQ', 'LIST_ORDRE',
+ 'NOM_CAS', 'LIST_ARCH', 'PAS_ARCH' ),
+ EXCLUS( 'CHAM_EXCLU','NOM_CHAM' ), ),
+ CHAM_EXCLU =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'),
+ NOM_CHAM =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',into=C_NOM_CHAM_INTO()),
+ PRECISION =SIMP(statut='f',typ='R',defaut=1.E-3 ),
+ CRITERE =SIMP(statut='f',typ='TXM',into=("RELATIF","ABSOLU"),defaut="RELATIF"),
+ LIST_ARCH =SIMP(statut='f',typ=listis_sdaster),
+ PAS_ARCH =SIMP(statut='f',typ='I'),
+ NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
+ LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster),
+ INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
+ LIST_INST =SIMP(statut='f',typ=listr8_sdaster),
+ FREQ =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
+ LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster),
+ NUME_MODE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
+ NOEUD_CMP =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'),
+ NOM_CAS =SIMP(statut='f',typ='TXM'),
+ ),
+
+ TITRE =SIMP(statut='f',typ='TXM',max='**' ),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2003 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+def extr_table_prod(TYPE_RESU,**args):
+ if TYPE_RESU == "MATR_ASSE_GENE_R" : return matr_asse_gene_r
+ raise AsException("type de concept resultat non prevu")
+
+EXTR_TABLE=OPER(nom="EXTR_TABLE",op=173,sd_prod=extr_table_prod,reentrant='n',
+ UIinfo={"groupes":("Résultats et champs",)},
+
+ TYPE_RESU =SIMP(statut='o',typ='TXM',into=("MATR_ASSE_GENE_R",) ),
+
+ TABLE =SIMP(statut='o',typ=table_sdaster),
+
+ NOM_PARA =SIMP(statut='o',typ='TXM'),
+
+ FILTRE =FACT(statut='f',min=1,max='**',
+ NOM_PARA =SIMP(statut='o',typ='TXM'),
+ CRIT_COMP =SIMP(statut='f',typ='TXM',defaut="EQ",
+ into=("EQ","LT","GT","NE","LE","GE","VIDE",
+ "NON_VIDE","MAXI","ABS_MAXI","MINI","ABS_MINI") ),
+ b_vale =BLOC(condition = "(CRIT_COMP in ('EQ','NE','GT','LT','GE','LE'))",
+ regles=(UN_PARMI('VALE','VALE_I','VALE_K','VALE_C',),),
+ VALE =SIMP(statut='f',typ='R'),
+ VALE_I =SIMP(statut='f',typ='I'),
+ VALE_C =SIMP(statut='f',typ='C'),
+ VALE_K =SIMP(statut='f',typ='TXM'),),
+
+ CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
+ PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3 ),
+ ),
+
+ TITRE =SIMP(statut='f',typ='TXM',max='**' ),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+def fact_grad_prod(MATR_ASSE,**args):
+ if AsType(MATR_ASSE) == matr_asse_depl_r : return matr_asse_depl_r
+ if AsType(MATR_ASSE) == matr_asse_temp_r : return matr_asse_temp_r
+ if AsType(MATR_ASSE) == matr_asse_pres_r : return matr_asse_pres_r
+ raise AsException("type de concept resultat non prevu")
+
+FACT_GRAD=OPER(nom="FACT_GRAD",op=85,sd_prod=fact_grad_prod,
+ UIinfo={"groupes":("Résolution",)},
+ fr="Préconditionnement pour résolution par gradient conjugué",
+ reentrant='n',
+ MATR_ASSE =SIMP(statut='o',
+ typ=(matr_asse_depl_r,matr_asse_temp_r,
+ matr_asse_pres_r) ),
+ PRE_COND =SIMP(statut='f',typ='TXM',defaut="LDLT_INC",into=("LDLT_INC",) ),
+ NIVE_REMPLISSAGE=SIMP(statut='f',typ='I',defaut= 0 ),
+ INFO =SIMP(statut='f',typ='I',into=(1,2) ),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE VABHHTS J.PELLET
+def fact_ldlt_prod(MATR_ASSE,**args):
+ if AsType(MATR_ASSE) == matr_asse_depl_r : return matr_asse_depl_r
+ if AsType(MATR_ASSE) == matr_asse_depl_c : return matr_asse_depl_c
+ if AsType(MATR_ASSE) == matr_asse_temp_r : return matr_asse_temp_r
+ if AsType(MATR_ASSE) == matr_asse_temp_c : return matr_asse_temp_c
+ if AsType(MATR_ASSE) == matr_asse_pres_r : return matr_asse_pres_r
+ if AsType(MATR_ASSE) == matr_asse_pres_c : return matr_asse_pres_c
+ raise AsException("type de concept resultat non prevu")
+
+FACT_LDLT=OPER(nom="FACT_LDLT",op=14,sd_prod=fact_ldlt_prod,fr="Factorisation en place ou hors place",
+ reentrant='f',
+ UIinfo={"groupes":("Résolution",)},
+ regles=(EXCLUS('BLOC_DEBUT','DDL_DEBUT'),
+ EXCLUS('BLOC_FIN','DDL_FIN'),),
+ MATR_ASSE =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_depl_c,matr_asse_temp_r,
+ matr_asse_temp_c,matr_asse_pres_r,matr_asse_pres_c) ),
+ STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+ NPREC =SIMP(statut='f',typ='I',defaut=8,val_min=0,),
+ PRE_COND =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","DIAG") ),
+ BLOC_DEBUT =SIMP(statut='f',typ='I',val_min=1,),
+ DDL_DEBUT =SIMP(statut='f',typ='I',val_min=1,),
+ BLOC_FIN =SIMP(statut='f',typ='I',val_min=1,),
+ DDL_FIN =SIMP(statut='f',typ='I',val_min=1,),
+#
+ EPS =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+#
+ TITRE =SIMP(statut='f',typ='TXM',max='**'),
+ INFO =SIMP(statut='f',typ='I',into=(1,2) ),
+) ;
+#& MODIF COMMANDE DATE 23/08/2004 AUTEUR CIBHHLV L.VIVAN
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+FIN=PROC(nom="FIN",op=9999,repetable='n',fr="Fin d'une étude",
+ UIinfo={"groupes":("Gestion du travail",)},
+ FORMAT_HDF =SIMP(fr="sauvegarde de la base GLOBALE au format HDF",statut='f',
+ typ='TXM',defaut="NON",into=("OUI","NON",) ),
+ RETASSAGE =SIMP(fr="provoque le retassage de la base GLOBALE",
+ statut='f',typ='TXM',defaut="NON",into=("OUI","NON",) ),
+ PERFORMANCE =SIMP(fr="provoque l'impression d'un résumé des mesures de temps ",
+ statut='f',typ='TXM',defaut="OUI",into=("OUI","NON",) ),
+ INFO_RESU =SIMP(fr="provoque l'impression des informations sur les structures de données",
+ statut='f',typ='TXM',defaut="OUI",into=("OUI","NON",) ),
+ UNITE =SIMP(statut='f',typ='I',defaut=6),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+FONC_FLUI_STRU=OPER(nom="FONC_FLUI_STRU",op= 169,sd_prod=fonction_sdaster,
+ reentrant='n',
+ UIinfo={"groupes":("Fonction",)},
+ TYPE_FLUI_STRU =SIMP(statut='o',typ=(type_flui_stru) ),
+) ;
+#& MODIF COMMANDE DATE 22/11/2004 AUTEUR DURAND C.DURAND
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+def form_pyth_ops(self,d):
+ import types,string
+ NOM_PARA=self.etape['NOM_PARA']
+ VALE =self.etape['VALE']
+ if type(NOM_PARA) not in (types.ListType,types.TupleType) : NOM_PARA=[NOM_PARA,]
+ if self.sd==None : return
+ texte=string.join(VALE.splitlines())
+
+ self.sd.setFormule(NOM_PARA,string.strip(texte))
+
+FORMULE=FORM(nom="FORMULE",op_init=form_pyth_ops,op=-5,
+ sd_prod=formule,UIinfo={"groupes":("Fonction",)},
+ VALE =SIMP(statut='f',typ='TXM'),
+ NOM_PARA =SIMP(statut='o',typ='TXM',max='**'),
+);
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE CAMBIER S.CAMBIER
+GENE_FONC_ALEA=OPER(nom="GENE_FONC_ALEA",op= 118,sd_prod=table_sdaster,
+ fr="Génération de la fonction temporelle à partir d une matrice interspectrale",
+ reentrant='n',
+ UIinfo={"groupes":("Fonction",)},
+ INTE_SPEC =SIMP(statut='o',typ=tabl_intsp ),
+ NUME_VITE_FLUI =SIMP(statut='f',typ='I' ),
+ INTERPOL =SIMP(statut='f',typ='TXM',defaut="OUI",into=("NON","OUI") ),
+ b_interpol_oui =BLOC(condition = "INTERPOL == 'OUI' ",fr="Parametres cas interpolation autorisee",
+ DUREE_TIRAGE =SIMP(statut='f',typ='R' ),
+ FREQ_INIT =SIMP(statut='f',typ='R' ),
+ FREQ_FIN =SIMP(statut='f',typ='R' ),
+ ),
+ NB_POIN =SIMP(statut='f',typ='I'),
+ NB_TIRAGE =SIMP(statut='f',typ='I',defaut= 1 ),
+ INIT_ALEA =SIMP(statut='f',typ='I'),
+ INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
+ TITRE =SIMP(statut='f',typ='TXM',max='**'),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE CAMBIER S.CAMBIER
+GENE_MATR_ALEA=OPER(nom="GENE_MATR_ALEA",op= 27,sd_prod=matr_asse_gene_r,
+ fr="Generateur de matrice aleatoire",
+ reentrant='n',
+ UIinfo={"groupes":("Fonction",)},
+ MATR_MOYEN = SIMP(statut='o', typ=matr_asse_gene_r),
+ COEF_VAR = SIMP(statut='f', typ='R', defaut=0.1),
+ INIT_ALEA =SIMP(statut='f',typ='I'),
+) ;
+
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE CAMBIER S.CAMBIER
+GENE_VARI_ALEA=OPER(nom="GENE_VARI_ALEA",op= 28,sd_prod=table_sdaster,
+ fr="Generateur de variable aleatoire",
+ reentrant='n',
+ UIinfo={"groupes":("Fonction",)},
+ TYPE = SIMP(statut='f', typ='TXM', into=("EXP_TRONQUEE", "EXPONENTIELLE", "GAMMA"), defaut="GAMMA"),
+ b_gamma =BLOC(condition = "TYPE == 'GAMMA' ",fr="Parametres loi gamma",
+ VALE_MOY = SIMP(statut='f', typ='R', defaut=1.),
+ BORNE_INF = SIMP(statut='f', typ='R', defaut=0.),
+ COEF_VAR = SIMP(statut='f', typ='R', defaut=0.1),
+ ),
+ b_expo =BLOC(condition = "TYPE == 'EXPONENTIELLE' ",fr="Parametres loi exponentielle",
+ VALE_MOY = SIMP(statut='f', typ='R', defaut=0.),
+ BORNE_INF = SIMP(statut='f', typ='R', defaut=-1.),
+ ),
+ b_expo_tronq =BLOC(condition = "TYPE == 'EXP_TRONQUEE' ",fr="Parametres loi exponentielle tronquee",
+ VALE_MOY = SIMP(statut='f', typ='R', defaut=0.),
+ BORNE_INF = SIMP(statut='f', typ='R', defaut=-1.),
+ BORNE_SUP = SIMP(statut='f', typ='R', defaut=1.),
+ COEF_VAR = SIMP(statut='f', typ='R', defaut=0.1),
+ ),
+ INIT_ALEA =SIMP(statut='f',typ='I'),
+) ;
+
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+IMPR_CLASSI=PROC(nom="IMPR_CLASSI",op= 114,
+ UIinfo={"groupes":("Fonction",)},
+ regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','FREQ','NUME_MODE','LIST_FREQ',
+ 'LIST_ORDRE' ),),
+ UNITE_CLASSI =SIMP(statut='o',typ='I' ),
+ MODE_MECA =SIMP(statut='o',typ=mode_meca ),
+ TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
+ LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster ),
+ NUME_MODE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
+ FREQ =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
+ LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster ),
+ b_prec_crit =BLOC(condition = "LIST_FREQ != None or FREQ != None",
+ PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ),
+ CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",
+ into=("RELATIF","ABSOLU") ),
+ ),
+ IMPRESSION =FACT(statut='f',max='**',
+ regles=(UN_PARMI('NOEUD','GROUP_NO', ),),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno ,validators=NoRepeat(),max='**'),
+ NOM_CMP =SIMP(statut='f',typ='TXM',max='**'),
+ ),
+ AMOR =SIMP(statut='o',typ='R',max='**'),
+) ;
+#& MODIF COMMANDE DATE 23/08/2004 AUTEUR CIBHHLV L.VIVAN
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE VABHHTS J.PELLET
+IMPR_CO=PROC(nom="IMPR_CO",op=17,
+ UIinfo={"groupes":("Impression",)},
+ fr="Impression du contenu d un concept utilisateur (pour développeur)",
+ regles=(UN_PARMI('CO','CHAINE', ),),
+ UNITE =SIMP(statut='f',typ='I',defaut=8),
+ NIVEAU =SIMP(statut='f',typ='I',defaut=2,into=(0,1,2) ),
+ ATTRIBUT =SIMP(statut='f',typ='TXM',defaut="NON",into=("NON","OUI") ),
+ CONTENU =SIMP(statut='f',typ='TXM',defaut="OUI",into=("NON","OUI") ),
+ BASE =SIMP(statut='f',typ='TXM',defaut="G",into=("","G","V","L") ),
+ CO =SIMP(statut='f',typ=assd,validators=NoRepeat(),max='**'),
+ CHAINE =SIMP(statut='f',typ='TXM'),
+ POSITION =SIMP(statut='f',typ='I',defaut=1),
+) ;
+#& MODIF COMMANDE DATE 05/10/2004 AUTEUR CIBHHLV L.VIVAN
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE GNICOLAS G.NICOLAS
+IMPR_FICO_HOMA=PROC(nom="IMPR_FICO_HOMA",op= 189, docu="U7.04.01-b",
+ UIinfo={"groupes":("Fonction",)},
+ fr="Imprime le fichier de configuration de HOMARD.",
+ ang="Writes the configuration file for HOMARD.",
+#
+# 1. Le niveau d'information
+#
+ INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
+#
+# 2. Langue des messages issus de HOMARD
+#
+ LANGUE =SIMP(statut='f',typ='TXM',defaut="FRANCAIS",
+ into=("FRANCAIS","FRENCH","ANGLAIS","ENGLISH",),
+ fr="Langue des messages issus de HOMARD.",
+ ang="Language for HOMARD messages." ),
+#
+# 3. Le nom local du fichier de configuration HOMARD
+#
+ UNITE_CONF =SIMP(statut='o',typ='I'),
+#
+# 4. Le nom local du fichier de données HOMARD
+#
+ UNITE_DONN =SIMP(statut='f',typ='I'),
+#
+# 5. Gestion des éléments autres que des simplexes
+# 0 : autres elements refuses (defaut)
+# 1 : raffinement sur les simplexes, mais autres acceptes
+# 2 : tous
+#
+ NON_SIMPLEXE = SIMP(statut='f',typ='I',defaut=0,into=(0,1,2),
+ fr="Type d'éléments acceptés.",
+ ang="Type of authorized elements." ),
+#
+# 6. Le type de traitement :
+#
+ TRAITEMENT =FACT(statut='o',
+#
+# 6.1. TROIS CHOIX EXCLUSIFS :
+#
+# A. ADAPTATION PAR UN INDICATEUR D'ERREUR, AVEC TROIS VARIANTES :
+# . RAFFINEMENT ET DERAFFINEMENT
+# . RAFFINEMENT SEUL
+# . DERAFFINEMENT SEUL
+# B. ADAPTATION UNIFORME, AVEC DEUX VARIANTES :
+# . RAFFINEMENT SEUL
+# . DERAFFINEMENT SEUL
+# . RIEN : LE MAILLAGE EST LE MEME A LA SORTIE ET A L'ENTREE
+# C. INFORMATION SUR UN MAILLAGE
+#
+ regles=( UN_PARMI('ADAPTATION','UNIFORME','INFORMATION'),),
+ ADAPTATION =SIMP(statut='f',typ='TXM',
+ fr="Adaptation libre",
+ ang="Free adaptation",
+ into=("RAFFINEMENT","DERAFFINEMENT","RAFF_DERA") ),
+ UNIFORME =SIMP(statut='f',typ='TXM',
+ fr="Adaptation uniforme",
+ ang="Uniforme adaptation",
+ into=("RAFFINEMENT","DERAFFINEMENT","RIEN") ),
+ INFORMATION =SIMP(statut='f',typ='TXM',
+ fr="Information sur un maillage",
+ ang="Information on a mesh",
+ into=("OUI",) ),
+#
+# 6.2. LES CONTRAINTES :
+#
+# 6.2.1. POUR DE L'ADAPTATION LIBRE, IL FAUT :
+# A. LE NUMERO D'ITERATION DU MAILLAGE DE DEPART
+# B. LE NOM MED DU MAILLAGE D'ENTREE
+# C. LE NOM MED DE L'INDICATEUR D'ERREUR
+# D. LE NUMERO D'ITERATION DU MAILLAGE DE DEPART
+# E. LA MISE A JOUR DE SOLUTION
+# F. LE NOM MED DU MAILLAGE DE SORTIE
+# REMARQUE : IL FAUT DES CRITERES, MAIS ON NE SAIT PAS LESQUELS
+#
+# 6.2.2. POUR DE L'ADAPTATION UNIFORME
+# IL FAUT :
+# A. LE NUMERO D'ITERATION DU MAILLAGE DE DEPART
+# B. LE NOM MED DU MAILLAGE DE SORTIE
+# IL NE FAUT PAS :
+# A. LE NOM MED DE L'INDICATEUR D'ERREUR
+# B. LE NOM DE LA COMPOSANTE DE L'INDICATEUR D'ERREUR
+# C. LES CRITERES
+# REMARQUE : A L'ITERATION 0, OU AUX ITERATIONS SUIVANTES SI MAJ DE SOLUTION,
+# IL FAUT LE NOM MED DU MAILLAGE D'ENTREE
+#
+# 6.2.3. POUR DE L'INFORMATION :
+# IL FAUT :
+# A. LE NOM MED DU MAILLAGE D'ENTREE
+# IL NE FAUT PAS :
+# A. LE NOM MED DE L'INDICATEUR D'ERREUR
+# B. LE NOM DE LA COMPOSANTE DE L'INDICATEUR D'ERREUR
+# C. LES CRITERES
+# D. LE NUMERO D'ITERATION DU MAILLAGE DE DEPART
+# E. LA MISE A JOUR DE SOLUTION
+#
+ b_maillage_initial =BLOC(condition = "( INFORMATION != None ) or ( ADAPTATION != None ) ",
+ fr="Nom MED du maillage en entrée",
+ ang="MED name of the in-mesh",
+ NOM_MED_MAILLAGE_N =SIMP(statut='o',typ='TXM',),
+ ) ,
+#
+ b_maillage_initial_uniforme =BLOC(condition = "( UNIFORME != None ) ",
+ fr="Nom MED du maillage en entrée",
+ ang="MED name of the in-mesh",
+ NOM_MED_MAILLAGE_N =SIMP(statut='f',typ='TXM',),
+ ) ,
+#
+ b_iteration =BLOC(condition = "( UNIFORME != None ) or ( ADAPTATION != None ) ",
+ fr="Nom MED du maillage en sortie, numero d'iteration",
+ ang="MED name of the out-mesh, iteration rank",
+ NITER =SIMP(statut='o',typ='I',
+ fr="Numéro d'itération.",
+ ang="Iteration number." ),
+ NOM_MED_MAILLAGE_NP1 =SIMP(statut='o',typ='TXM',
+ fr="Nom MED du maillage en sortie",
+ ang="MED name of the out-mesh" ),
+ ) ,
+#
+ b_indicateur_d_erreur =BLOC(condition = "ADAPTATION != None",
+ fr="Indicateur d'erreur",
+ ang="Error indicator",
+ regles=(AU_MOINS_UN('NUME_ORDRE','INST','RESULTAT'),
+ EXCLUS('NUME_ORDRE','INST'),
+ EXCLUS('NUME_ORDRE','RESULTAT'),
+ PRESENT_PRESENT('RESULTAT','NOM_CHAM'),),
+ NOM_MED =SIMP(statut='o',typ='TXM',
+ fr="Nom MED de l'indicateur d'erreur.",
+ ang="MED name of error indicator.",),
+ COMPOSANTE =SIMP(statut='o',typ='TXM',
+ fr="Nom de la composante de l'indicateur d'erreur retenue.",
+ ang="Name of the selected component of the error indicator.",),
+ NUME_ORDRE =SIMP(statut='f',typ='I',
+ fr="Numero d'ordre de l'indicateur.",
+ ang="Rank number of the error indicator.",),
+ INST =SIMP(statut='f',typ='R',
+ fr="Instant de l'indicateur.",
+ ang="Instant of the error indicator.",),
+ b_precision =BLOC(condition="(INST != None)",
+ PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3,
+ fr="Précision sur le choix de l'instant associé",
+ ang="Accuracy over instant choice" ),
+ CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU"),
+ fr="Critère de précision sur le choix de l'instant associé",
+ ang="Accuracy criterium over instant choice" ),),
+ RESULTAT =SIMP(statut='f',typ=(evol_elas,evol_noli,evol_ther),
+ fr="Concept contenant l'indicateur.",
+ ang="Conceipt wich contains the error indicator.",),
+ NOM_CHAM =SIMP(statut='f',typ='TXM',
+ fr="Nom du champ dans le résultat de l'indicateur.",
+ ang="Name of the field of the error indicator.",),
+ ) ,
+#
+ b_critere_de_raffinement =BLOC( condition = "( ADAPTATION == 'RAFF_DERA' ) or ( ADAPTATION == 'RAFFINEMENT' )" ,
+ fr="Critère de raffinement.",
+ ang="Refinement threshold.",
+ regles=(UN_PARMI ( 'CRIT_RAFF_ABS', 'CRIT_RAFF_REL', 'CRIT_RAFF_PE' ),),
+ CRIT_RAFF_ABS =SIMP(statut='f',typ='R',
+ fr="Critère absolu",
+ ang="Absolute threshold" ),
+ CRIT_RAFF_REL =SIMP(statut='f',typ='R',
+ fr="Critère relatif",
+ ang="Relative threshold" ),
+ CRIT_RAFF_PE =SIMP(statut='f',typ='R',
+ fr="Pourcentage d'éléments",
+ ang="Percentage of elements" ),
+ ) ,
+#
+ b_critere_de_deraffinement =BLOC ( condition = "( ADAPTATION == 'RAFF_DERA' ) or ( ADAPTATION == 'DERAFFINEMENT' )" ,
+ fr="Critère de déraffinement.",
+ ang="Unrefinement threshold.",
+ regles=(UN_PARMI ( 'CRIT_DERA_ABS', 'CRIT_DERA_REL', 'CRIT_DERA_PE' ),),
+ CRIT_DERA_ABS =SIMP(statut='f',typ='R' ,
+ fr="Critère absolu",
+ ang="Absolute threshold" ),
+ CRIT_DERA_REL =SIMP(statut='f',typ='R',
+ fr="Critère relatif",
+ ang="Relative threshold" ),
+ CRIT_DERA_PE =SIMP(statut='f',typ='R',
+ fr="Pourcentage d'éléments",
+ ang="Percentage of elements" ),
+ ) ,
+#
+ b_niveau_maximum =BLOC ( condition = " ( ADAPTATION == 'RAFF_DERA' ) or ( ADAPTATION == 'RAFFINEMENT' ) or \
+ ( UNIFORME == 'RAFFINEMENT' )" ,
+ NIVE_MAX =SIMP(statut='f',typ='I',
+ fr="Niveau maximum de profondeur de raffinement",
+ ang="Maximum level for refinement"),
+ ) ,
+#
+ b_niveau_minimum =BLOC ( condition = " ( ADAPTATION == 'RAFF_DERA' ) or ( ADAPTATION == 'DERAFFINEMENT' ) or \
+ ( UNIFORME == 'DERAFFINEMENT' )" ,
+ NIVE_MIN =SIMP(statut='f',typ='I',
+ fr="Niveau minimum de déraffinement",
+ ang="Minimum level for unrefinement" ),
+ ) ,
+#
+# 6.3. Le suivi de frontiere eventuel :
+#
+ NOM_MED_MAILLAGE_FRONTIERE =SIMP(statut='f',typ='TXM',
+ fr="Nom MED du maillage de la frontiere à suivre",
+ ang="MED name of the boundary mesh" ),
+#
+ b_frontiere_1 =BLOC ( condition = "NOM_MED_MAILLAGE_FRONTIERE != None" ,
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**',
+ fr="Groupes définissant la frontière",
+ ang="Groups which define the boundary" ),
+ ) ,
+#
+ ),
+#
+# 7. Mise à jour de champs sur le nouveau maillage
+#
+ MAJ_CHAM =FACT(statut='f',max='**',
+ fr="Mise à jour de champs sur le nouveau maillage.",
+ ang="Updating of fields over the new mesh.",
+ regles=(AU_MOINS_UN('NUME_ORDRE','INST','RESULTAT'),
+ EXCLUS('NUME_ORDRE','INST'),
+ EXCLUS('NUME_ORDRE','RESULTAT'),
+ PRESENT_PRESENT('RESULTAT','NOM_CHAM'),),
+ NOM_MED =SIMP(statut='o',typ='TXM',
+ fr="Nom MED du champ à mettre à jour.",
+ ang="MED name of field.",),
+ NUME_ORDRE =SIMP(statut='f',typ='I',
+ fr="Numero d'ordre du champ à mettre à jour.",
+ ang="Rank number of field.",),
+ INST =SIMP(statut='f',typ='R',
+ fr="Instant du champ à mettre à jour.",
+ ang="Instant of field.",),
+ b_precision =BLOC(condition="(INST != None)",
+ PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3,
+ fr="Précision sur le choix de l'instant associé",
+ ang="Accuracy over instant choice" ),
+ CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU"),
+ fr="Critère de précision sur le choix de l'instant associé",
+ ang="Accuracy criterium over instant choice" ),),
+ RESULTAT =SIMP(statut='f',typ=(evol_elas,evol_noli,evol_ther),
+ fr="Concept contenant le champ à mettre à jour.",
+ ang="Conceipt wich contains the field.",),
+ NOM_CHAM =SIMP(statut='f',typ='TXM',
+ fr="Nom du champ dans le résultat du champ à mettre à jour.",
+ ang="Name of the field.",),
+ ),
+#
+# 8. L'ANALYSE DU MAILLAGE
+#
+ ANALYSE =FACT(statut='f',
+ fr="Analyse du maillage.",
+ ang="Mesh analysis.",
+#
+# 5 CHOIX NON EXCLUSIFS, AVEC DEUX VARIANTES (OUI/NON) :
+# A. NOMBRE DES ELEMENTS
+# B. QUALITE DES ELEMENTS
+# C. INTERPENETRATION DES ELEMENTS
+# D. CONNEXITE DU MAILLAGE
+# E. TAILLE DES DIFFERENTS SOUS-DOMAINES
+#
+ regles=(AU_MOINS_UN('NOMBRE','QUALITE','INTERPENETRATION','CONNEXITE','TAILLE'),),
+#
+ NOMBRE =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON"),
+ fr="Nombre de noeuds et éléments du maillage",
+ ang="Number of nodes and elements in the mesh" ),
+#
+ QUALITE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),
+ fr="Qualité du maillage",
+ ang="Mesh quality" ),
+#
+ INTERPENETRATION=SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),
+ fr="Controle de la non interpénétration des éléments.",
+ ang="Overlapping checking." ),
+#
+ CONNEXITE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),
+ fr="Connexité du maillage.",
+ ang="Mesh connexity." ),
+#
+ TAILLE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),
+ fr="Tailles des sous-domaines du maillage.",
+ ang="Sizes of mesh sub-domains." ),
+#
+ ),
+#
+) ;
+#& MODIF COMMANDE DATE 15/11/2004 AUTEUR MCOURTOI M.COURTOIS
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE MCOURTOI M.COURTOIS
+from Macro.impr_fonction_ops import impr_fonction_ops
+
+IMPR_FONCTION=MACRO(nom="IMPR_FONCTION",op=impr_fonction_ops,sd_prod=None,
+ fr="Impression de fonctions sur fichiers, les valeurs ayant été récupérées par RECU_FONCTION",
+ UIinfo={"groupes":("Fonction",)},
+ FORMAT =SIMP(statut='o',typ='TXM',position='global',defaut='TABLEAU',
+ into=("TABLEAU","AGRAF","XMGRACE",),),
+ b_pilote = BLOC(condition = "FORMAT == 'XMGRACE'",
+ fr="Mots-clés propres à XMGRACE",
+ PILOTE =SIMP(statut='f',typ='TXM',defaut='',
+ into=('','POSTSCRIPT','EPS','MIF','SVG','PNM','PNG','JPEG','PDF','INTERACTIF'),
+ fr="Pilote de sortie, PNG/JPEG/PDF ne sont pas disponibles sur toutes les installations de xmgrace"),
+ UNITE =SIMP(statut='f',typ='I',val_min=10,val_max=90,defaut=29,
+ fr="Unité logique définissant le fichier (fort.N) dans lequel on écrit"),
+ ),
+ b_agraf = BLOC(condition = "FORMAT == 'AGRAF'",
+ fr="Mots-clés propres à AGRAF",
+ UNITE =SIMP(statut='o',typ='I',defaut=25,
+ fr="Unité logique définissant le fichier (fort.N) dans lequel on écrit"),
+ UNITE_DIGR =SIMP(statut='o',typ='I',defaut=26,
+ fr="Unité logique définissant le fichier dans lequel on écrit les directives Agraf"),
+ ),
+ # unite pour TABLEAU dans le bloc de mise en forme spécifique
+
+ COURBE =FACT(statut='o',max='**',fr="Définition de la fonction à tracer",
+ regles=(UN_PARMI('FONCTION','LIST_RESU','FONC_X','ABSCISSE'),),
+ FONCTION =SIMP(statut='f',typ=(fonction_sdaster, formule, fonction_c, nappe_sdaster),
+ fr="Fonction réelle ou complexe", ),
+ LIST_RESU =SIMP(statut='f',typ=listr8_sdaster,
+ fr="Liste des ordonnees d'une fonction réelle définie par deux listes", ),
+ FONC_X =SIMP(statut='f',typ=(fonction_sdaster,formule),
+ fr="Fonction abscisses d'une fonction paramétrique",),
+ ABSCISSE =SIMP(statut='f',typ='R',max='**',
+ fr="Valeurs des abscisses", ),
+ b_fonction =BLOC(condition = "FONCTION != None",
+ LIST_PARA =SIMP(statut='f',typ=listr8_sdaster ),
+ ),
+ b_fonction_c =BLOC(condition = "AsType(FONCTION) == fonction_c",
+ fr="Fonction complexe définie par le mot-clé fonction",
+ PARTIE =SIMP(statut='f',typ='TXM',into=("REEL","IMAG") ),
+ ),
+ b_list_resu =BLOC(condition = "LIST_RESU != None",
+ LIST_PARA =SIMP(statut='o',typ=listr8_sdaster ),
+ ),
+ b_fonc_x =BLOC(condition = "FONC_X != None",
+ FONC_Y =SIMP(statut='o',typ=(fonction_sdaster,formule),fr="Fonction ordonnées d une fonction paramétrique" ),
+ LIST_PARA =SIMP(statut='f',typ=listr8_sdaster ),
+ ),
+ b_vale_resu =BLOC(condition = "ABSCISSE != None",
+ ORDONNEE =SIMP(statut='o',typ='R',max='**',
+ fr="Valeurs des ordonnées"),
+ ),
+
+ # le bloc n'est pas activé (vide) car position n'est pas pris en compte
+ b_forme =BLOC(condition = "FORMAT != 'TABLEAU'",
+ fr="Données de mise en forme de la fonction (cf. doc)",
+ ),
+ LEGENDE =SIMP(statut='f',typ='TXM',
+ fr="Légende associée à la fonction" ),
+ STYLE =SIMP(statut='f',typ='I',val_min=0,
+ fr="Style de la ligne représentant la fonction",),
+ COULEUR =SIMP(statut='f',typ='I',val_min=0,
+ fr="Couleur associée à la fonction",),
+ MARQUEUR =SIMP(statut='f',typ='I',val_min=0,
+ fr="Type du marqueur associé à la fonction",),
+ FREQ_MARQUEUR =SIMP(statut='f',typ='I',defaut=0,
+ fr="Fréquence d impression du marqueur associé à la fonction", ),
+ # fin bloc b_forme
+ TRI =SIMP(statut='f',typ='TXM',defaut="N",
+ fr="Choix du tri effectué sur les abscisses ou sur les ordonnées",
+ into=("N","X","Y","XY","YX") ),
+ ),
+ # Mise en page du tableau ou du graphique
+ b_tableau = BLOC(condition = "FORMAT == 'TABLEAU'",
+ fr="Mots-clés propres au format Tableau",
+ UNITE =SIMP(statut='o',typ='I',defaut=8,
+ fr="Unité logique définissant le fichier (fort.N) dans lequel on écrit"),
+ TITRE =SIMP(statut='f',typ='TXM',
+ fr="Titre associé au graphique" ),
+ SOUS_TITRE =SIMP(statut='f',typ='TXM',
+ fr="Sous-titre du graphique" ),
+ SEPARATEUR =SIMP(statut='f',typ='TXM',defaut=' ',
+ fr="Séparateur des colonnes du tableau (ex : ' ', ';'...)"),
+ COMMENTAIRE =SIMP(statut='f',typ='TXM',defaut='#',
+ fr="Caractère indiquant au traceur de fonction que la ligne peut etre ignorée"),
+ DEBUT_LIGNE =SIMP(statut='f',typ='TXM',defaut='',
+ fr="Caractère de debut de ligne"),
+ FIN_LIGNE =SIMP(statut='f',typ='TXM',defaut='\n',
+ fr="Caractère de fin de ligne"),
+ ),
+ b_graphique = BLOC(condition = "FORMAT != 'TABLEAU'",
+ fr="Mise en page du graphique",
+ TITRE =SIMP(statut='f',typ='TXM',
+ fr="Titre associé au graphique" ),
+ SOUS_TITRE =SIMP(statut='f',typ='TXM',
+ fr="Sous-titre du graphique" ),
+ BORNE_X =SIMP(statut='f',typ='R',min=2,max=2,
+ fr="Intervalles de variation des abscisses"),
+ BORNE_Y =SIMP(statut='f',typ='R',min=2,max=2,
+ fr="Intervalles de variation des ordonnées"),
+ ECHELLE_X =SIMP(statut='f',typ='TXM',defaut="LIN",into=("LIN","LOG"),
+ fr="Type d'échelle pour les abscisses" ),
+ ECHELLE_Y =SIMP(statut='f',typ='TXM',defaut="LIN",into=("LIN","LOG"),
+ fr="Type d'échelle pour les ordonnées" ),
+ GRILLE_X =SIMP(statut='f',typ='R',max=1,val_min=0.,
+ fr="Pas du quadrillage vertical" ),
+ GRILLE_Y =SIMP(statut='f',typ='R',max=1,val_min=0.,
+ fr="Pas du quadrillage horizontal" ),
+ LEGENDE_X =SIMP(statut='f',typ='TXM',
+ fr="Légende associée à l'axe des abscisses" ),
+ LEGENDE_Y =SIMP(statut='f',typ='TXM',
+ fr="Légende associée à l'axe des ordonnées" ),
+ ),
+ INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
+) ;
+#& MODIF COMMANDE DATE 17/11/2005 AUTEUR NICOLAS O.NICOLAS
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+IMPR_GENE=PROC(nom="IMPR_GENE",op= 157,
+ fr="Calcul du dommage subi par une structure soumise à une sollicitation de type aléatoire",
+ UIinfo={"groupes":("Impression",)},
+ GENE =FACT(statut='o',max='**',
+ regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','FREQ','NUME_MODE',
+ 'LIST_INST','LIST_FREQ','TOUT_MODE','TOUT_INST','LIST_ORDRE'),
+ EXCLUS('TOUT_MODE','NUME_ORDRE','INST','FREQ','NUME_MODE',
+ 'LIST_INST','LIST_FREQ','TOUT_ORDRE','TOUT_INST','LIST_ORDRE'),
+ EXCLUS('TOUT_INST','NUME_ORDRE','INST','FREQ','NUME_MODE',
+ 'LIST_INST','LIST_FREQ','TOUT_ORDRE','LIST_ORDRE'),
+ EXCLUS('TOUT_CMP_GENE','NUME_CMP_GENE'),
+ EXCLUS('TOUT_CHAM','NOM_CHAM'),
+ EXCLUS('TOUT_PARA','NOM_PARA'),),
+# faut-il faire des blocs selon le type de RESU_GENE
+ RESU_GENE =SIMP(statut='o',typ=(vect_asse_gene, tran_gene, mode_gene, harm_gene)),
+ FORMAT =SIMP(statut='f',typ='TXM',defaut="RESULTAT",into=("RESULTAT",) ),
+ UNITE =SIMP(statut='f',typ='I',defaut=8),
+ TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
+ LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster ),
+ TOUT_MODE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ NUME_MODE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
+ INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
+ LIST_INST =SIMP(statut='f',typ=listr8_sdaster ),
+ TOUT_INST =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ FREQ =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
+ LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster ),
+ PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ),
+ CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",
+ into=("RELATIF","ABSOLU") ),
+ TOUT_CMP_GENE =SIMP(statut='f',typ='TXM',into=("OUI","NON") ),
+ NUME_CMP_GENE =SIMP(statut='f',typ='I',max='**'),
+ TOUT_CHAM =SIMP(statut='f',typ='TXM',into=("OUI","NON") ),
+ NOM_CHAM =SIMP(statut='f',typ='TXM',max='**'),
+ TOUT_PARA =SIMP(statut='f',typ='TXM',into=("OUI","NON") ),
+ NOM_PARA =SIMP(statut='f',typ='TXM',max='**'),
+ SOUS_TITRE =SIMP(statut='f',typ='TXM',max='**'),
+ INFO_CMP_GENE =SIMP(statut='f',typ='TXM',into=("OUI","NON") ),
+ INFO_GENE =SIMP(statut='f',typ='TXM',into=("OUI","NON") ),
+ ),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+IMPR_JEVEUX=PROC(nom="IMPR_JEVEUX",op=16,
+ UIinfo={"groupes":("Impression",)},
+ fr="Impression de caractéristiques d'objets JEVEUX (pour développeur)",
+ ENTITE =SIMP(fr="choix de l'observation",statut='o',typ='TXM',
+ into=("DISQUE","MEMOIRE","REPERTOIRE",
+ "OBJET","ATTRIBUT","SYSTEME") ),
+ b_objet =BLOC(condition = "(ENTITE=='OBJET')",
+ NOMOBJ =SIMP(fr="nom d'objet",statut='f',typ='TXM' ),
+ NUMOC =SIMP(fr="numéro d objet de collection",statut='f',typ='I' ),
+ NOMOC =SIMP(fr="nom d'objet de collection",statut='f',typ='TXM' ),
+ ),
+ b_attribut =BLOC(condition = "(ENTITE=='ATTRIBUT')",
+ NOMOBJ =SIMP(fr="nom de collection",statut='f',typ='TXM' ),
+ NOMATR =SIMP(fr="nom d attribut de collection",statut='f',typ='TXM',
+ into=('$$DESO','$$IADD','$$IADM','$$NOM','$$LONG',
+ '$$LONO','$$LUTI','$$NUM') ),
+ ),
+ b_systeme =BLOC(condition = "(ENTITE=='SYSTEME')",
+ CLASSE =SIMP(statut='o',typ='TXM',into=('G','V','L') ),
+ NOMATR =SIMP(fr="nom d attribut systeme",statut='f',typ='TXM',
+ into=('$$CARA','$$IADD','$$GENR','$$TYPE','$$MARQ',
+ '$$DOCU','$$ORIG','$$RNOM','$$LTYP','$$LONG',
+ '$$LONO','$$DATE','$$LUTI','$$HCOD','$$INDX',
+ '$$TLEC','$$TECR','$$IADM','$$ACCE','$$USADI') ),
+ ),
+ b_repertoire =BLOC(condition = "(ENTITE=='REPERTOIRE')",
+ CLASSE =SIMP(statut='f',typ='TXM',into=('G','V','L',' '),defaut=' '),
+ ),
+ b_disque =BLOC(condition = "(ENTITE=='DISQUE')",
+ CLASSE =SIMP(statut='f',typ='TXM' ,into=('G','V','L',' '),defaut=' '),
+ ),
+ IMPRESSION =FACT(statut='f',
+ NOM =SIMP(statut='f',typ='TXM' ),
+ UNITE =SIMP(statut='f',typ='I'),
+ ),
+ COMMENTAIRE =SIMP(statut='f',typ='TXM' ),
+) ;
+#& MODIF COMMANDE DATE 23/08/2004 AUTEUR CIBHHLV L.VIVAN
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+IMPR_MACR_ELEM=PROC(nom="IMPR_MACR_ELEM",op= 160,
+ UIinfo={"groupes":("Impression",)},
+ MACR_ELEM_DYNA =SIMP(statut='o',typ=macr_elem_dyna ),
+ FORMAT =SIMP(statut='f',typ='TXM',defaut="IDEAS",
+ into=("MISS_3D","IDEAS","CADYRO","PLEXUS") ),
+
+ b_plexus =BLOC(condition = "FORMAT == 'IDEAS'",
+ UNITE =SIMP(statut='f',typ='I',defaut=30),
+ VERSION =SIMP(statut='f',typ='I',defaut= 5,into=( 5 ,) ),
+ ),
+
+ b_ideas =BLOC(condition = "FORMAT == 'PLEXUS'",
+ UNITE =SIMP(statut='f',typ='I',defaut=30),
+ VERSION =SIMP(statut='f',typ='I',defaut= 5,into=( 5 ,) ),
+ ),
+
+ b_miss_3d =BLOC(condition = "FORMAT == 'MISS_3D'",
+ regles=(EXCLUS('AMOR_REDUIT','LIST_AMOR'),),
+ UNITE =SIMP(statut='f',typ='I',defaut= 26 ),
+ SOUS_TITRE =SIMP(statut='f',typ='TXM',max='**'),
+ AMOR_REDUIT =SIMP(statut='f',typ='R' ,max='**'),
+ LIST_AMOR =SIMP(statut='f',typ=listr8_sdaster ),
+ GROUP_MA_INTERF =SIMP(statut='o',typ=grma ,max='**'),
+ GROUP_MA_FLU_STR=SIMP(statut='f',typ=grma,max='**'),
+ GROUP_MA_FLU_SOL=SIMP(statut='f',typ=grma,max='**'),
+ GROUP_MA_SOL_SOL=SIMP(statut='f',typ=grma,max='**'),
+ IMPR_MODE_MECA =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+ IMPR_MODE_STAT =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+ ),
+
+ b_cadyro =BLOC(condition = "FORMAT == 'CADYRO'",
+ SQUELETTE =SIMP(statut='f',typ=squelette ),
+ UNITE_MODE_MECA =SIMP(statut='f',typ='I',defaut= 26 ),
+ UNITE_MODE_STAT =SIMP(statut='f',typ='I',defaut= 27 ),
+ UNITE_MAILLAGE =SIMP(statut='f',typ='I',defaut= 28 ),
+ IMPR_MODE_MECA =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+ IMPR_MODE_STAT =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+ ),
+
+) ;
+#& MODIF COMMANDE DATE 23/08/2004 AUTEUR CIBHHLV L.VIVAN
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+IMPR_MATRICE=PROC(nom="IMPR_MATRICE",op= 159,
+ fr="Impression des matrices élémentaires et des matrices assemblées",
+ UIinfo={"groupes":("Impression",)},
+ regles=(AU_MOINS_UN('MATR_ELEM','MATR_ASSE'),),
+
+ MATR_ELEM =FACT(statut='f',max='**',
+ UNITE =SIMP(statut='f',typ='I' ),
+ FORMAT =SIMP(statut='f',typ='TXM',defaut="IDEAS",
+ into=("IDEAS","RESULTAT") ),
+ b_format_resultat =BLOC(condition="FORMAT=='RESULTAT'",fr="unité logique d'impression au format RESULTAT",
+ UNITE =SIMP(statut='f',typ='I',defaut=8),
+ ),
+ b_format_ideas =BLOC(condition="FORMAT=='IDEAS'",fr="unité logique d'impression et version IDEAS",
+ UNITE =SIMP(statut='f',typ='I',defaut=30),
+ VERSION =SIMP(statut='f',typ='I',defaut= 5,into=( 5 ,) ),
+ ),
+
+# créer les types matr_elem et vect_elem
+ MATRICE =SIMP(statut='o',typ=(matr_elem, vect_elem)),
+# Quelle regle pour TOUT, NOEUD, GROUP_NO, MAILLE, GROUP_MA
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno ,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma ,validators=NoRepeat(),max='**'),
+ NOM_CMP =SIMP(statut='f',typ='TXM',max='**'),
+ GRAIN =SIMP(statut='f',typ='TXM',defaut="VALEUR",
+ into=("VALEUR","NOEUD","MAILLE") ),
+ NB_CHIFFRE =SIMP(statut='f',typ='I',defaut= 4 ),
+ ),
+ MATR_ASSE =FACT(statut='f',max='**',
+ UNITE =SIMP(statut='f',typ='I' ),
+ FORMAT =SIMP(statut='f',typ='TXM',defaut="IDEAS",
+ into=("IDEAS","RESULTAT") ),
+ VERSION =SIMP(statut='f',typ='I',defaut= 5,into=( 5 ,) ),
+# créer le type matr_elem
+ MATRICE =SIMP(statut='o',typ=matr_asse_gd),
+# Quelle regle pour TOUT, NOEUD, GROUP_NO, MAILLE, GROUP_MA
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno ,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma ,validators=NoRepeat(),max='**'),
+ OPTION =SIMP(statut='f',typ='TXM',defaut="SOUS_MATRICE",
+ into=("SOUS_MATRICE","LIGNE","COLONNE") ),
+ NOM_CMP =SIMP(statut='f',typ='TXM',max='**'),
+ GRAIN =SIMP(statut='f',typ='TXM',defaut="VALEUR",
+ into=("VALEUR","NOEUD") ),
+ NB_CHIFFRE =SIMP(statut='f',typ='I',defaut= 4 ),
+ VALE_ZERO =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ ),
+) ;
+#& MODIF COMMANDE DATE 30/06/2004 AUTEUR MCOURTOI M.COURTOIS
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+IMPR_MISS_3D=PROC(nom="IMPR_MISS_3D",op= 162,
+ UIinfo={"groupes":("Impression",)},
+ regles=(UN_PARMI('INST_INIT','FREQ_INIT'),
+ PRESENT_PRESENT('INST_INIT','INST_FIN'),
+ PRESENT_PRESENT('FREQ_INIT','FREQ_FIN'),),
+ MACR_ELEM_DYNA =SIMP(statut='o',typ=macr_elem_dyna ),
+ EXCIT =FACT(statut='f',max='**',
+ regles=(UN_PARMI('FONC_MULT','COEF_MULT' ),),
+ VECT_ASSE =SIMP(statut='f',typ=cham_no_depl_r ),
+ FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ COEF_MULT =SIMP(statut='f',typ='R' ),
+ ),
+ EXCIT_SOL =FACT(statut='f',max='**',
+ DIRECTION =SIMP(statut='o',typ='R',min=3,max=3),
+ FONC_SIGNAL =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ NOM_CHAM =SIMP(statut='f',typ='TXM',defaut="DEPL",
+ into=("DEPL","VITE","ACCE","FORC",) ),
+ ),
+ INST_INIT =SIMP(statut='f',typ='R' ),
+ INST_FIN =SIMP(statut='f',typ='R' ),
+ FREQ_INIT =SIMP(statut='f',typ='R' ),
+ FREQ_FIN =SIMP(statut='f',typ='R' ),
+ PAS =SIMP(statut='o',typ='R' ),
+ UNITE =SIMP(statut='f',typ='I',defaut= 26 ),
+ INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2 ) ),
+ TITRE =SIMP(statut='f',typ='TXM',max='**'),
+) ;
+#& MODIF COMMANDE DATE 16/06/2004 AUTEUR DURAND C.DURAND
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE D6BHHAM A.M.DONORE
+#
+IMPR_OAR =PROC(nom="IMPR_OAR",op= 40,
+ fr="Impression au format OAR",
+ UIinfo={"groupes":("Impression",)},
+ CARA_ELEM =SIMP(statut='f',typ=cara_elem ),
+ MAILLAGE =SIMP(statut='o',typ=maillage_sdaster ),
+ MODELE =SIMP(statut='o',typ=modele_sdaster ),
+ MAILLE =SIMP(statut='o',typ=ma ,validators=NoRepeat(),max=2 ),
+ NOEUD =SIMP(statut='o',typ=no ,validators=NoRepeat() ),
+
+ CHARGE =FACT(statut='o',max='**',
+
+ NUM_CHAR =SIMP(statut='o',typ='I'),
+ TEMP_NOEUD =SIMP(statut='f',typ='R',defaut=20.),
+ TYPE =SIMP(statut='f',typ='TXM',defaut="DILA",
+ into=("POIDS","DILA","SEISME","DEPL","EFFO","STRATIF","CONDITIONNEL","COMBINAISON") ),
+ NATURE =SIMP(statut='f',typ='TXM',defaut="PRIMAIRE",
+ into=("PRIMAIRE","SECONDAIRE","TOTAL") ),
+ SIGNE =SIMP(statut='f',typ='TXM',defaut="S",
+ into=("S","NS") ),
+ RESULTAT =SIMP(statut='o',typ=resultat_sdaster),# CO() sd a creer !!!
+ ),
+
+
+ UNITE =SIMP(statut='f',typ='I',defaut=38),
+ INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
+) ;
+#& MODIF COMMANDE DATE 11/05/2005 AUTEUR CIBHHLV L.VIVAN
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+IMPR_RESU=PROC(nom="IMPR_RESU",op=39,
+ UIinfo={"groupes":("Impression",)},
+ fr="Impression du résultat d un calcul (différents formats)",
+ MODELE =SIMP(statut='f',typ=modele_sdaster),
+
+ FORMAT =SIMP(statut='f',typ='TXM',position='global',defaut="RESULTAT",
+ into=("RESULTAT","IDEAS","ASTER","CASTEM","ENSIGHT","MED","GMSH") ),
+
+ b_format_resultat =BLOC(condition="FORMAT=='RESULTAT'",fr="unité logique d'impression au format RESULTAT",
+ UNITE =SIMP(statut='f',typ='I',defaut=8),
+ ),
+
+ b_format_ideas =BLOC(condition="FORMAT=='IDEAS'",fr="unité logique d'impression et version IDEAS",
+ UNITE =SIMP(statut='f',typ='I',defaut=30),
+ VERSION =SIMP(statut='f',typ='I',defaut=5,into=(4,5)),
+ ),
+
+ b_format_aster =BLOC(condition="FORMAT=='ASTER'",fr="unité logique d'impression au format ASTER",
+ UNITE =SIMP(statut='f',typ='I',defaut=26),
+ ),
+
+ b_format_castem =BLOC(condition="FORMAT=='CASTEM'",fr="unité logique d'impression et version CASTEM",
+ UNITE =SIMP(statut='f',typ='I',defaut=37),
+ NIVE_GIBI =SIMP(statut='f',typ='I',defaut=10,into=(3,10)),
+ ),
+
+ b_format_ensight =BLOC(condition="FORMAT=='ENSIGHT'",fr="unité logique d'impression au format ENSIGHT",
+ UNITE =SIMP(statut='f',typ='I',defaut=31),
+ ),
+
+ b_format_med =BLOC(condition="FORMAT=='MED'",fr="unité logique d'impression au format MED",
+ UNITE =SIMP(statut='f',typ='I',defaut=80),
+ ),
+
+ b_format_gmsh =BLOC(condition="FORMAT=='GMSH'",fr="unité logique d'impression et version GMSH",
+ UNITE =SIMP(statut='f',typ='I',defaut=19),
+ VERSION =SIMP(statut='f',typ='R',defaut=1.2,into=(1.0,1.2)),
+ ),
+
+ RESU =FACT(statut='o',max='**',
+
+ regles=(AU_MOINS_UN('CHAM_GD','RESULTAT','MAILLAGE'),
+ EXCLUS('CHAM_GD','RESULTAT'),),
+ MAILLAGE =SIMP(statut='f',typ=(maillage_sdaster,squelette)),
+ INFO_MAILLAGE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
+ CHAM_GD =SIMP(statut='f',typ=cham_gd_sdaster),
+ RESULTAT =SIMP(statut='f',typ=resultat_sdaster),# CO() sd a creer !!!
+
+ b_sensibilite =BLOC(condition="RESULTAT != None",
+ fr="Définition des paramètres de sensibilité",
+ ang="Definition of sensitivity parameters",
+ SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**',
+ fr="Liste des paramètres de sensibilité.",
+ ang="List of sensitivity parameters"),),
+
+ b_extrac =BLOC(condition="RESULTAT != None",
+ fr="extraction d un champ de grandeur",
+ regles=(EXCLUS('TOUT_CHAM','NOM_CHAM'),
+ EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','FREQ','NUME_MODE','NOEUD_CMP',
+ 'LIST_INST','LIST_FREQ','LIST_ORDRE','NOM_CAS','ANGL'),),
+ TOUT_CHAM =SIMP(statut='f',typ='TXM',into=("OUI","NON") ),
+ NOM_CHAM =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',into=C_NOM_CHAM_INTO()),
+
+ TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
+ NUME_MODE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
+ LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster),
+ NOEUD_CMP =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'),
+ NOM_CAS =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'),
+ ANGL =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
+ FREQ =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
+ LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster),
+ INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
+ LIST_INST =SIMP(statut='f',typ=listr8_sdaster),
+
+ b_acce_reel =BLOC(condition="(FREQ != None)or(LIST_FREQ != None)or(INST != None)or(LIST_INST != None)",
+ PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3),
+ CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
+ ),
+ ),
+###
+ b_parametres =BLOC(condition="""(RESULTAT != None)and(FORMAT == 'RESULTAT')""",
+ regles=(EXCLUS('TOUT_PARA','NOM_PARA'),),
+ INFO_RESU =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
+ TOUT_PARA =SIMP(statut='f',typ='TXM',into=("OUI","NON",) ),
+ NOM_PARA =SIMP(statut='f',typ='TXM',max='**'),
+ FORM_TABL =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON","EXCEL") ),
+ ),
+###
+ b_cmp=BLOC(condition="""((CHAM_GD != None)or(RESULTAT != None))and\
+ ((FORMAT == 'CASTEM')or(FORMAT == 'RESULTAT')or(FORMAT == 'IDEAS')or(FORMAT == 'ENSIGHT')or(FORMAT == 'MED'))""",
+ fr="sélection des composantes",
+ regles=(EXCLUS('TOUT_CMP','NOM_CMP'),),
+ TOUT_CMP =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ NOM_CMP =SIMP(statut='f',typ='TXM',max='**'),
+ ),
+###
+ b_gmsh=BLOC(condition="""((CHAM_GD != None)or(RESULTAT != None))and((FORMAT == 'GMSH'))""",
+ fr="sélection des composantes et des entités toplogiques",
+ NOM_CMP =SIMP(statut='f',typ='TXM',max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ ),
+###
+ b_topologie=BLOC(condition="""((CHAM_GD != None)or(RESULTAT != None))and\
+ ((FORMAT == 'RESULTAT')or(FORMAT == 'IDEAS'))""",
+ fr="sélection des entités toplogiques",
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ ),
+###
+ b_valeurs =BLOC(condition="(FORMAT == 'RESULTAT')",
+ fr="sélection sur les valeurs",
+ VALE_MAX =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ VALE_MIN =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ BORNE_SUP =SIMP(statut='f',typ='R'),
+ BORNE_INF =SIMP(statut='f',typ='R'),
+ IMPR_COOR =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
+ FORMAT_R =SIMP(statut='f',typ='TXM',defaut="1PE12.5"),
+ ),
+
+ SOUS_TITRE =SIMP(statut='f',typ='TXM',max='**'),
+ ),
+ INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
+) ;
+#& MODIF COMMANDE DATE 23/08/2004 AUTEUR CIBHHLV L.VIVAN
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+IMPR_STURM=PROC(nom="IMPR_STURM",op=32,fr="Calculer et imprimer le nombre de valeurs propres dans un intervalle donné",
+ UIinfo={"groupes":("Résolution",)},
+ MATR_A =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_temp_r,matr_asse_pres_r ) ),
+ MATR_B =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_temp_r,matr_asse_pres_r ) ),
+ TYPE_RESU =SIMP(statut='f',typ='TXM',defaut="DYNAMIQUE",into=("MODE_FLAMB","DYNAMIQUE"),
+ fr="Type d analyse" ),
+ b_dynamique =BLOC(condition = "TYPE_RESU == 'DYNAMIQUE'",
+ fr="Recheche du nombre de fréquences propres",
+ FREQ_MIN =SIMP(statut='f',typ='R',defaut= 0.E+0 ,fr="Borne inférieure de l intervalle" ),
+ FREQ_MAX =SIMP(statut='o',typ='R',fr="Borne supérieure de l intervalle" ),
+ ),
+ b_mode_flamb =BLOC(condition = "TYPE_RESU == 'MODE_FLAMB'",
+ fr="Recherche du nombre de charges critiques",
+ CHAR_CRIT_MIN =SIMP(statut='o',typ='R',fr="Borne inférieure de l intervalle" ),
+ CHAR_CRIT_MAX =SIMP(statut='o',typ='R',fr="Borne supérieure de l intervalle" ),
+ ),
+ NPREC_SOLVEUR =SIMP(statut='f',typ='I',defaut= 8 ),
+ NMAX_ITER_SHIFT =SIMP(statut='f',typ='I',defaut= 5 ),
+ UNITE =SIMP(statut='f',typ='I',defaut=8),
+ PREC_SHIFT =SIMP(statut='f',typ='R',defaut= 1.E-2 ),
+ SEUIL_FREQ =SIMP(statut='f',typ='R',defaut= 1.E-2 ),
+) ;
+#& MODIF COMMANDE DATE 15/11/2004 AUTEUR MCOURTOI M.COURTOIS
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE MCOURTOI M.COURTOIS
+from Macro.impr_table_ops import impr_table_ops
+
+IMPR_TABLE=MACRO(nom="IMPR_TABLE",op=impr_table_ops,sd_prod=None,
+ UIinfo={"groupes":("Impression",)},
+ fr="Impression d un concept de type table_sdaster",
+ TABLE =SIMP(statut='o',typ=table_sdaster),
+ SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**',
+ fr="Liste des paramètres de sensibilité.",
+ ang="List of sensitivity parameters"),
+ FORMAT =SIMP(statut='f',typ='TXM',defaut="TABLEAU",
+ into=("TABLEAU","ASTER","TABLEAU_CROISE","AGRAF","XMGRACE",),),
+ b_pilote =BLOC(condition = "FORMAT == 'XMGRACE'",
+ fr="Mots-clés propres à XMGRACE",
+ PILOTE =SIMP(statut='f',typ='TXM',defaut='',
+ into=('','POSTSCRIPT','EPS','MIF','SVG','PNM','PNG','JPEG','PDF','INTERACTIF'),
+ fr="Pilote de sortie, PNG/JPEG/PDF ne sont pas disponibles sur toutes les installations de xmgrace"),
+ UNITE =SIMP(statut='f',typ='I',val_min=10,val_max=90,defaut=29,
+ fr="Unité logique définissant le fichier (fort.N) dans lequel on écrit"),
+ ),
+ b_unite =BLOC(condition = "FORMAT != 'XMGRACE'",
+ UNITE =SIMP(statut='f',typ='I',defaut=8,
+ fr="Unité logique définissant le fichier (fort.N) dans lequel on écrit"),
+ ),
+ FILTRE =FACT(statut='f',max='**',
+ NOM_PARA =SIMP(statut='o',typ='TXM'),
+ CRIT_COMP =SIMP(statut='f',typ='TXM',defaut="EQ",
+ into=("EQ","LT","GT","NE","LE","GE","VIDE",
+ "NON_VIDE","MAXI","ABS_MAXI","MINI","ABS_MINI"),),
+ b_vale =BLOC(condition = "(CRIT_COMP in ('EQ','NE','GT','LT','GE','LE'))",
+ regles=(UN_PARMI('VALE','VALE_I','VALE_K','VALE_C',),),
+ VALE =SIMP(statut='f',typ='R'),
+ VALE_I =SIMP(statut='f',typ='I'),
+ VALE_C =SIMP(statut='f',typ='C'),
+ VALE_K =SIMP(statut='f',typ='TXM'),
+ ),
+ b_crit =BLOC(condition = "CRIT_COMP in ('EQ','NE')",
+ CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
+ PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3 ),
+ ),
+ ),
+ TRI =FACT(statut='f',
+ NOM_PARA =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**'),
+ ORDRE =SIMP(statut='f',typ='TXM',defaut="CROISSANT", # max='**',
+ into=("CROISSANT","DECROISSANT") ),
+ ),
+ PAGINATION =SIMP(statut='f',typ='TXM',max='**'),
+ FORMAT_R =SIMP(statut='f',typ='TXM',defaut="E12.5"),
+ FORMAT_C =SIMP(statut='f',typ='TXM',defaut="MODULE_PHASE",
+ into=("MODULE_PHASE","REEL_IMAG") ),
+ NOM_PARA =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'),
+ IMPR_FONCTION =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
+
+ # mise en forme pour les formats qui passent par Graph
+ b_forme =BLOC(condition = "FORMAT == 'XMGRACE'",
+ fr="Données de mise en forme du graphique",
+ # pour la courbe
+ LEGENDE =SIMP(statut='f',typ='TXM',
+ fr="Légende associée à la fonction" ),
+ STYLE =SIMP(statut='f',typ='I',val_min=0,
+ fr="Style de la ligne représentant la fonction",),
+ COULEUR =SIMP(statut='f',typ='I',val_min=0,
+ fr="Couleur associée à la fonction",),
+ MARQUEUR =SIMP(statut='f',typ='I',val_min=0,
+ fr="Type du marqueur associé à la fonction",),
+ FREQ_MARQUEUR =SIMP(statut='f',typ='I',defaut=0,
+ fr="Fréquence d impression du marqueur associé à la fonction", ),
+ # format du graphique
+ BORNE_X =SIMP(statut='f',typ='R',min=2,max=2,
+ fr="Intervalles de variation des abscisses"),
+ BORNE_Y =SIMP(statut='f',typ='R',min=2,max=2,
+ fr="Intervalles de variation des ordonnées"),
+ ECHELLE_X =SIMP(statut='f',typ='TXM',defaut="LIN",into=("LIN","LOG"),
+ fr="Type d'échelle pour les abscisses" ),
+ ECHELLE_Y =SIMP(statut='f',typ='TXM',defaut="LIN",into=("LIN","LOG"),
+ fr="Type d'échelle pour les ordonnées" ),
+ GRILLE_X =SIMP(statut='f',typ='R',max=1,val_min=0.,
+ fr="Pas du quadrillage vertical" ),
+ GRILLE_Y =SIMP(statut='f',typ='R',max=1,val_min=0.,
+ fr="Pas du quadrillage horizontal" ),
+ LEGENDE_X =SIMP(statut='f',typ='TXM',
+ fr="Légende associée à l'axe des abscisses" ),
+ LEGENDE_Y =SIMP(statut='f',typ='TXM',
+ fr="Légende associée à l'axe des ordonnées" ),
+ ),
+
+ TITRE =SIMP(statut='f',typ='TXM',max='**'),
+ INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
+)
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+INCLUDE=MACRO(nom="INCLUDE",op=ops.build_include,
+ UIinfo={"groupes":("Gestion du travail",)},
+ fr="Débranchement vers un fichier de commandes secondaires",
+ sd_prod=ops.INCLUDE,op_init=ops.INCLUDE_context,fichier_ini=1,
+ UNITE = SIMP(statut='o',typ='I'),
+ INFO = SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
+);
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+INCLUDE_MATERIAU=MACRO(nom="INCLUDE_MATERIAU",op=-14,
+ UIinfo={"groupes":("Modélisation",)},
+ fr=" ",
+ sd_prod=ops.INCLUDE_MATERIAU,op_init=ops.INCLUDE_context,fichier_ini=0,
+ NOM_AFNOR =SIMP(statut='o',typ='TXM' ),
+ TYPE_MODELE =SIMP(statut='o',typ='TXM',into=("REF","PAR") ),
+ VARIANTE =SIMP(statut='o',typ='TXM',
+ into=("A","B","C","D","E","F","G","H","I","J",
+ "K","L","M","N","O","P","Q","R","S","T","U","V",
+ "W","X","Y","Z",) ),
+ TYPE_VALE =SIMP(statut='o',typ='TXM',into=("NOMI","MINI","MAXI") ),
+ NOM_MATER =SIMP(statut='o',typ='TXM' ),
+ UNITE =SIMP(statut='f',typ='I',defaut= 32 ),
+ EXTRACTION =FACT(statut='f',max=99,
+ COMPOR =SIMP(statut='o',typ='TXM' ),
+ TEMP_EVAL =SIMP(statut='o',typ='R' ),
+ ),
+ UNITE_LONGUEUR =SIMP(statut='f',typ='TXM',into=("M","MM"),defaut="M" ),
+ INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ),
+) ;
+#& MODIF COMMANDE DATE 14/09/2004 AUTEUR MCOURTOI M.COURTOIS
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE D6BHHJP J.P.LEFEBVRE
+INFO_EXEC_ASTER=OPER(nom="INFO_EXEC_ASTER",op=35,sd_prod=table_sdaster,
+ fr="Récupère différentes informations propres à l'exécution en cours",
+ reentrant='n',
+ UIinfo={"groupes":("Gestion du travail",)},
+
+ regles=(),
+ LISTE_INFO =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=3,
+ into=("CPU_RESTANT","UNITE_LIBRE","ETAT_UNITE"),),
+ b_etat_unite =BLOC(condition = "'ETAT_UNITE' in LISTE_INFO",
+ regles=(UN_PARMI('UNITE','FICHIER'),),
+ UNITE =SIMP(statut='f',typ='I',val_min=1,val_max=99,max=1,
+ fr="Unité logique dont on veut obtenir l'état",),
+ FICHIER =SIMP(statut='f',typ='TXM',validators=LongStr(1,255),
+ fr="Nom du fichier dont on veut obtenir l'état",),
+ ),
+ TITRE =SIMP(statut='f',typ='TXM',max='**'),
+ INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE G8BHHXD X.DESROCHES
+INTE_MAIL_2D=OPER(nom="INTE_MAIL_2D",op=50,sd_prod=courbe_sdaster,
+ UIinfo={"groupes":("Post traitements",)},
+ fr="Définition d une courbe sur un maillage 2D",reentrant='n',
+
+ MAILLAGE =SIMP(statut='o',typ=(maillage_sdaster) ),
+
+ regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
+ AU_MOINS_UN('DEFI_SEGMENT','DEFI_ARC','DEFI_CHEMIN'),
+ PRESENT_ABSENT('DEFI_CHEMIN','DEFI_SEGMENT','DEFI_ARC'),
+ PRESENT_ABSENT('DEFI_SEGMENT','NOEUD_ORIG','GROUP_NO_ORIG'),
+ PRESENT_ABSENT('DEFI_ARC','NOEUD_ORIG','GROUP_NO_ORIG'),
+ EXCLUS('NOEUD_ORIG','GROUP_NO_ORIG'),
+ EXCLUS('DEFI_CHEMIN','DEFI_SEGMENT'),
+ EXCLUS('DEFI_CHEMIN','DEFI_ARC'),),
+
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+
+ DEFI_SEGMENT =FACT(statut='f',max='**',
+ regles=(UN_PARMI('ORIGINE','NOEUD_ORIG','GROUP_NO_ORIG'),
+ UN_PARMI('EXTREMITE','NOEUD_EXTR','GROUP_NO_EXTR'),),
+ ORIGINE =SIMP(statut='f',typ='R',min=2,max=2),
+ NOEUD_ORIG =SIMP(statut='f',typ=no,),
+ GROUP_NO_ORIG =SIMP(statut='f',typ=grno,),
+ EXTREMITE =SIMP(statut='f',typ='R',min=2,max=2),
+ NOEUD_EXTR =SIMP(statut='f',typ=no,),
+ GROUP_NO_EXTR =SIMP(statut='f',typ=grno,),
+ ),
+
+ DEFI_ARC =FACT(statut='f',max='**',
+ regles=(UN_PARMI('CENTRE','NOEUD_CENTRE','GROUP_NO_CENTRE'),
+ UN_PARMI('RAYON','ORIGINE','NOEUD_ORIG','GROUP_NO_ORIG'),
+ UN_PARMI('RAYON','EXTREMITE','NOEUD_EXTR','GROUP_NO_EXTR'),
+ PRESENT_PRESENT('RAYON','SECTEUR'),),
+ CENTRE =SIMP(statut='f',typ='R',min=2,max=2),
+ NOEUD_CENTRE =SIMP(statut='f',typ=no,),
+ GROUP_NO_CENTRE =SIMP(statut='f',typ=grno,),
+ RAYON =SIMP(statut='f',typ='R',val_min=0.E+0),
+ SECTEUR =SIMP(statut='f',typ='R',min=2,max=2,
+ val_min=-180.E+0,val_max=180E+0),
+ ORIGINE =SIMP(statut='f',typ='R',min=2,max=2),
+ NOEUD_ORIG =SIMP(statut='f',typ=no,),
+ GROUP_NO_ORIG =SIMP(statut='f',typ=grno,),
+ EXTREMITE =SIMP(statut='f',typ='R',min=2,max=2),
+ NOEUD_EXTR =SIMP(statut='f',typ=no,),
+ GROUP_NO_EXTR =SIMP(statut='f',typ=grno,),
+ PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3 ),
+ CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",
+ into=("RELATIF","ABSOLU",) ),
+ ),
+
+ DEFI_CHEMIN =FACT(statut='f',max='**',
+ regles=(UN_PARMI('MAILLE','GROUP_MA'),),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ ),
+
+ NOEUD_ORIG =SIMP(statut='f',typ=no,),
+ GROUP_NO_ORIG =SIMP(statut='f',typ=grno,),
+ PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3),
+ INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE G8BHHXD X.DESROCHES
+INTE_MAIL_3D=OPER(nom="INTE_MAIL_3D",op=96,sd_prod=surface_sdaster,
+ UIinfo={"groupes":("Post traitements",)},
+ fr="Définition d un chemin sur un maillage 3D",reentrant='n',
+ MAILLAGE =SIMP(statut='o',typ=maillage_sdaster),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ DEFI_SEGMENT =FACT(statut='o',max='**',
+ regles=(UN_PARMI('ORIGINE','NOEUD_ORIG','GROUP_NO_ORIG'),
+ UN_PARMI('EXTREMITE','NOEUD_EXTR','GROUP_NO_EXTR'),),
+ ORIGINE =SIMP(statut='f',typ='R',min=3,max=3),
+ NOEUD_ORIG =SIMP(statut='f',typ=no,),
+ GROUP_NO_ORIG =SIMP(statut='f',typ=grno,),
+ EXTREMITE =SIMP(statut='f',typ='R',min=3,max=3),
+ NOEUD_EXTR =SIMP(statut='f',typ=no,),
+ GROUP_NO_EXTR =SIMP(statut='f',typ=grno,),
+ ),
+ PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-6),
+ INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+def lire_champ_prod(TYPE_CHAM=None,**args):
+# Remarque : si cette liste évolue, il faut penser à mettre à jour son
+# homologue dans macr_adap_mail
+ import string
+#
+ if TYPE_CHAM[0:5] == "NOEU_" : return eval("cham_no_"+string.lower(TYPE_CHAM[5:]))
+ if TYPE_CHAM == "ELEM_G_DEPL_R" : return cham_elem_g_depl
+ if TYPE_CHAM[0:5] == "ELEM_" : return eval("cham_elem_"+string.lower(TYPE_CHAM[5:]))
+ if TYPE_CHAM == "ELNO_G_DEPL_R" : return cham_elem_g_depl
+ if TYPE_CHAM[0:5] == "ELNO_" : return eval("cham_elem_"+string.lower(TYPE_CHAM[5:]))
+ if TYPE_CHAM == "ELGA_G_DEPL_R" : return cham_elem_g_depl
+ if TYPE_CHAM[0:5] == "ELGA_" : return eval("cham_elem_"+string.lower(TYPE_CHAM[5:]))
+ raise AsException("type de concept resultat non prevu")
+
+LIRE_CHAMP=OPER(nom="LIRE_CHAMP",op= 192,sd_prod=lire_champ_prod,
+ fr="Lire un champ dans un fichier et le stocker dans un concept.",
+ reentrant='n',
+ MAILLAGE =SIMP(statut='o',typ=maillage_sdaster,),
+ FORMAT =SIMP(statut='f',typ='TXM',defaut="MED",into=("MED",),),
+ UNITE =SIMP(statut='f',typ='I',defaut= 81,),
+ b_format =BLOC(condition = "FORMAT == 'MED'",
+ regles=( UN_PARMI('NOM_CMP_IDEM','NOM_CMP'),
+ PRESENT_PRESENT('NOM_CMP','NOM_CMP_MED' ),
+ EXCLUS('NUME_ORDRE','INST'),
+ EXCLUS('NUME_PT','INST'),),
+ NOM_MED =SIMP(statut='o',typ='TXM', ),
+ NOM_CMP_IDEM =SIMP(statut='f',typ='TXM',into=("OUI",), ),
+ NOM_CMP =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',),
+ NOM_CMP_MED =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',),
+ NUME_PT =SIMP(statut='f',typ='I' ,validators=NoRepeat(),max='**',),
+ NUME_ORDRE =SIMP(statut='f',typ='I' ,validators=NoRepeat(),max='**',
+ fr="Numero d ordre du champ à lire",ang="Rank of the field to be read" ),
+ INST =SIMP(statut='f',typ='R',fr="Instant associé",ang="Instant" ),
+#
+ b_precision =BLOC(condition="(INST != None)",
+ PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3,
+ fr="Précision sur le choix de l'instant associé",ang="Accuracy over instant choice" ),
+ CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU"),
+ fr="Critère de précision sur le choix de l'instant associé",
+ ang="Accuracy criterium over instant choice" ),),
+#
+ NOM_MAIL_MED =SIMP(statut='f',typ='TXM',),
+ ),
+# Remarque : si cette liste évolue, il faut penser à mettre à jour son
+# homologue dans macr_adap_mail
+ TYPE_CHAM =SIMP(statut='o',typ='TXM',into=C_TYPE_CHAM_INTO()),
+ b_modele =BLOC(condition = "TYPE_CHAM!=None and TYPE_CHAM[0:2] == 'EL'",
+ MODELE =SIMP(statut='o',typ=modele_sdaster, ),
+ ),
+ INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ),
+) ;
+#& MODIF COMMANDE DATE 10/10/2005 AUTEUR MCOURTOI M.COURTOIS
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+
+from Macro.lire_fonction_ops import lire_fonction_ops
+
+def lire_fonction_prod(self,TYPE,**args):
+ if (TYPE == 'FONCTION') : return fonction_sdaster
+ elif (TYPE == 'FONCTION_C'): return fonction_c
+ elif (TYPE == 'NAPPE' ) : return nappe_sdaster
+ raise AsException("type de concept resultat non prevu")
+
+LIRE_FONCTION=MACRO(nom="LIRE_FONCTION",op=lire_fonction_ops,sd_prod=lire_fonction_prod,
+ fr="Lecture d une fonction ou d une nappe dans un fichier ",
+ reentrant='n',
+ UIinfo={"groupes":("Fonction",)},
+ FORMAT =SIMP(statut='f',typ='TXM',into=("LIBRE",),defaut="LIBRE" ),
+ TYPE =SIMP(statut='f',typ='TXM',into=("FONCTION","FONCTION_C","NAPPE"),defaut="FONCTION" ),
+ SEPAR =SIMP(statut='f',typ='TXM',into=("None",",",";","/"),defaut="None" ),
+ INDIC_PARA =SIMP(statut='f',typ='I',min=2,max=2,defaut=[1,1]),
+ b_fonction =BLOC(condition = "TYPE=='FONCTION' ",
+ INDIC_RESU =SIMP(statut='f',typ='I',min=2,max=2,defaut=[1,2]), ),
+ b_fonction_c =BLOC(condition = "TYPE=='FONCTION_C' ",
+ FORMAT_C =SIMP(statut='f',typ='TXM',defaut="REEL_IMAG",into=("REEL_IMAG","MODULE_PHASE") ),
+ b_reel_imag =BLOC(condition = "FORMAT_C=='REEL_IMAG' ",
+ INDIC_REEL =SIMP(statut='o',typ='I',min=2,max=2,defaut=[1,2]),
+ INDIC_IMAG =SIMP(statut='o',typ='I',min=2,max=2,defaut=[1,3]), ) ,
+ b_modu_phas =BLOC(condition = "FORMAT_C=='MODULE_PHASE' ",
+ INDIC_MODU =SIMP(statut='o',typ='I',min=2,max=2,defaut=[1,2]),
+ INDIC_PHAS =SIMP(statut='o',typ='I',min=2,max=2,defaut=[1,3]), ), ),
+ b_nappe =BLOC(condition = "TYPE=='NAPPE' ",
+ NOM_PARA_FONC =SIMP(statut='o',typ='TXM',),
+ INDIC_ABSCISSE =SIMP(statut='o',typ='I',min=2,max=2,),
+ INTERPOL_FONC =SIMP(statut='f',typ='TXM',max=2,defaut="LIN",into=("NON","LIN","LOG") ),
+ PROL_DROITE_FONC=SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU") ),
+ PROL_GAUCHE_FONC=SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU") ),
+ DEFI_FONCTION =FACT(statut='f',max='**',
+ INDIC_RESU =SIMP(statut='o',typ='I',min=2,max=2,),), ),
+ UNITE =SIMP(statut='o',typ='I' ),
+ NOM_PARA =SIMP(statut='o',typ='TXM',),
+ NOM_RESU =SIMP(statut='f',typ='TXM',defaut="TOUTRESU"),
+ INTERPOL =SIMP(statut='f',typ='TXM',max=2,defaut="LIN",into=("NON","LIN","LOG") ),
+ PROL_DROITE =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU") ),
+ PROL_GAUCHE =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU") ),
+ VERIF =SIMP(statut='f',typ='TXM',defaut="CROISSANT",into=("CROISSANT","NON") ),
+ INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
+ TITRE =SIMP(statut='f',typ='TXM',max='**'),
+) ;
+#& MODIF COMMANDE DATE 20/09/2004 AUTEUR DURAND C.DURAND
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+
+from Macro.lire_inte_spec_ops import lire_inte_spec_ops
+
+LIRE_INTE_SPEC=MACRO(nom="LIRE_INTE_SPEC",op=lire_inte_spec_ops,sd_prod=tabl_intsp,
+ fr="Lecture sur un fichier externe de fonctions complexes pour créer une matrice interspectrale",
+ reentrant='n',
+ UIinfo={"groupes":("Fonction",)},
+ UNITE =SIMP(statut='o',typ='I' ),
+ FORMAT =SIMP(statut='f',typ='TXM',defaut="MODULE_PHASE",into=("REEL_IMAG","MODULE_PHASE") ),
+ NOM_PARA =SIMP(statut='f',typ='TXM',defaut="FREQ",
+ into=("DX","DY","DZ","DRX","DRY","DRZ","TEMP",
+ "INST","X","Y","Z","EPSI","FREQ","PULS","AMOR","ABSC",) ),
+ NOM_RESU =SIMP(statut='f',typ='TXM',defaut="DSP" ),
+ INTERPOL =SIMP(statut='f',typ='TXM',max=2,into=("NON","LIN","LOG") ),
+ PROL_DROITE =SIMP(statut='f',typ='TXM',into=("CONSTANT","LINEAIRE","EXCLU") ),
+ PROL_GAUCHE =SIMP(statut='f',typ='TXM',into=("CONSTANT","LINEAIRE","EXCLU") ),
+ TITRE =SIMP(statut='f',typ='TXM',max='**'),
+ INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE VABHHTS J.PELLET
+LIRE_MAILLAGE=OPER(nom="LIRE_MAILLAGE",op= 1,sd_prod=maillage_sdaster,
+ fr="Lecture d'un fichier de maillage",
+ ang="Readings of a mesh file",
+ reentrant='n',
+ UIinfo={"groupes":("Maillage",)},
+#
+ UNITE =SIMP(statut='f',typ='I',defaut= 20 ),
+#
+ FORMAT =SIMP(statut='f',typ='TXM',defaut="ASTER",into=("ASTER","MED"),
+ fr="Format du fichier : ASTER ou MED.",
+ ang="Format of the file : ASTER or MED.",),
+#
+ ABSC_CURV =FACT(statut='f',min=0,
+ TOUT =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
+ ),
+#
+ VERI_MAIL =FACT(statut='d',
+ VERIF =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+ APLAT =SIMP(statut='f',typ='R',defaut= 1.0E-3 ),
+ ),
+#
+ b_format_med =BLOC( condition = " ( FORMAT == 'MED' ) " ,
+ fr="Informations complémentaires pour la lecture MED.",
+ ang="Further information for MED readings.",
+#
+# Pour une lecture dans un fichier MED, on peut préciser le nom sous lequel
+# le maillage y a été enregistré. Par défaut, on va le chercher sous le nom du concept à créer.
+#
+ NOM_MED = SIMP(statut='f',typ='TXM',
+ fr="Nom du maillage dans le fichier MED.",
+ ang="Name of the mesh into the MED file.",),
+#
+ INFO_MED = SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ),
+#
+ ) ,
+#
+ INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ),
+#
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+def lire_miss_3d_prod(TYPE_RESU,**args):
+ if TYPE_RESU == "TRANS" : return dyna_trans
+ if TYPE_RESU == "HARMO" : return dyna_harmo
+ raise AsException("type de concept resultat non prevu")
+
+LIRE_MISS_3D=OPER(nom="LIRE_MISS_3D",op= 163,sd_prod=lire_miss_3d_prod,
+ fr="Restitution au format MISS3D d une évolution harmonique ou transitoire",
+ reentrant='n',
+ UIinfo={"groupes":("Maillage",)},
+ MACR_ELEM_DYNA =SIMP(statut='o',typ=macr_elem_dyna ),
+ UNITE =SIMP(statut='f',typ='I',defaut= 27 ),
+ NOM =SIMP(statut='f',typ='TXM' ),
+ TYPE_RESU =SIMP(statut='f',typ='TXM',defaut="TRANS",into=("TRANS","HARMO") ),
+ TITRE =SIMP(statut='f',typ='TXM',max='**'),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+LIRE_PLEXUS=OPER(nom="LIRE_PLEXUS",op= 184,sd_prod=evol_char,
+ fr=" ",
+ reentrant='n',
+ UIinfo={"groupes":("Maillage",)},
+ regles=(UN_PARMI('TOUT_ORDRE','NUME_ORDRE','INST','LIST_INST','LIST_ORDRE'),),
+ UNITE =SIMP(statut='f',typ='I',defaut= 19 ),
+ FORMAT =SIMP(statut='f',typ='TXM',defaut="IDEAS",into=("IDEAS",)),
+ MAIL_PLEXUS =SIMP(statut='o',typ=maillage_sdaster ),
+ MAILLAGE =SIMP(statut='o',typ=maillage_sdaster ),
+ MODELE =SIMP(statut='o',typ=modele_sdaster ),
+ TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
+ LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster ),
+ INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
+ LIST_INST =SIMP(statut='f',typ=listr8_sdaster ),
+ b_prec_crit =BLOC(condition = "LIST_INST != None or INST != None",
+ PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ),
+ CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",
+ into=("RELATIF","ABSOLU") ),
+ ),
+ TITRE =SIMP(statut='f',typ='TXM',max='**'),
+) ;
+#& MODIF COMMANDE DATE 11/05/2005 AUTEUR MCOURTOI M.COURTOIS
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE VABHHTS J.PELLET
+
+def lire_resu_prod(TYPE_RESU,**args):
+ if TYPE_RESU == "EVOL_CHAR" : return evol_char
+ if TYPE_RESU == "EVOL_THER" : return evol_ther
+ if TYPE_RESU == "EVOL_ELAS" : return evol_elas
+ if TYPE_RESU == "EVOL_NOLI" : return evol_noli
+ if TYPE_RESU == "DYNA_TRANS" : return dyna_trans
+ if TYPE_RESU == "DYNA_HARMO" : return dyna_harmo
+ if TYPE_RESU == "HARM_GENE" : return harm_gene
+ if TYPE_RESU == "MODE_MECA" : return mode_meca
+ if TYPE_RESU == "MODE_MECA_C" : return mode_meca_c
+ raise AsException("type de concept resultat non prevu")
+
+# pour éviter d'écrire 3 fois cette liste :
+def l_nom_cham_pas_elga(): return (
+ "ACCE", "ACCE_ABSOLU", "CRIT_ELNO_RUPT", "DCHA_ELNO_SIGM",
+ "DCHA_NOEU_SIGM", "DEDE_ELNO_DLDE", "DEDE_NOEU_DLDE", "DEGE_ELNO_DEPL", "DEGE_NOEU_DEPL",
+ "DEPL", "DEPL_ABSOLU", "DESI_ELNO_DLSI", "DESI_NOEU_DLSI", "DETE_ELNO_DLTE", "DETE_NOEU_DLTE",
+ "DURT_ELNO_META", "DURT_NOEU_META", "ECIN_ELEM_DEPL", "EFGE_ELNO_CART", "EFGE_ELNO_DEPL",
+ "EFGE_NOEU_CART", "EFGE_NOEU_DEPL", "ENDO_ELNO_SIGA", "ENDO_ELNO_SINO", "ENDO_NOEU_SINO",
+ "ENEL_ELNO_ELGA", "ENEL_NOEU_ELGA", "EPEQ_ELNO_TUYO", "EPGR_ELNO", "EPME_ELNO_DEPL",
+ "EPMG_ELNO_DEPL", "EPMG_NOEU_DEPL", "EPOT_ELEM_DEPL", "EPSA_ELNO", "EPSA_NOEU",
+ "EPSG_ELNO_DEPL", "EPSG_NOEU_DEPL", "EPSI_ELNO_DEPL", "EPSI_ELNO_TUYO", "EPSI_NOEU_DEPL",
+ "EPSP_ELNO", "EPSP_ELNO_ZAC", "EPSP_NOEU", "EPSP_NOEU_ZAC", "EQUI_ELNO_EPME", "EQUI_ELNO_EPSI",
+ "EQUI_ELNO_SIGM", "EQUI_NOEU_EPME", "EQUI_NOEU_EPSI", "EQUI_NOEU_SIGM", "ERRE_ELEM_NOZ1",
+ "ERRE_ELEM_NOZ2", "ERRE_ELNO_ELGA", "ERRE_NOEU_ELGA", "ERTH_ELEM_TEMP", "ERTH_ELNO_ELEM",
+ "ETOT_ELEM", "ETOT_ELNO_ELGA", "FLUX_ELNO_TEMP", "FLUX_NOEU_TEMP", "FORC_NODA", "FSUR_2D",
+ "FSUR_3D", "FVOL_2D", "FVOL_3D", "GRAD_NOEU_THETA", "HYDR_ELNO_ELGA", "HYDR_NOEU_ELGA",
+ "INTE_ELNO_ACTI", "INTE_ELNO_REAC", "INTE_NOEU_ACTI", "INTE_NOEU_REAC", "IRRA",
+ "META_ELNO_TEMP", "META_NOEU_TEMP", "PMPB_ELNO_SIEF", "PMPB_NOEU_SIEF",
+ "PRES", "PRES_DBEL_DEPL", "PRES_ELNO_DBEL", "PRES_ELNO_IMAG", "PRES_ELNO_REEL",
+ "PRES_NOEU_DBEL", "PRES_NOEU_IMAG", "PRES_NOEU_REEL",
+ "RADI_ELNO_SIGM", "RADI_NOEU_SIGM", "REAC_NODA",
+ "SIEF_ELNO", "SIEF_ELNO_ELGA", "SIEF_NOEU", "SIEF_NOEU_ELGA", "SIEQ_ELNO_TUYO",
+ "SIGM_ELNO_CART", "SIGM_ELNO_COQU", "SIGM_ELNO_DEPL", "SIGM_ELNO_SIEF",
+ "SIGM_ELNO_TUYO", "SIGM_ELNO_ZAC", "SIGM_NOEU_CART", "SIGM_NOEU_COQU",
+ "SIGM_NOEU_DEPL", "SIGM_NOEU_SIEF", "SIGM_NOEU_ZAC", "SIGM_NOZ1_ELGA",
+ "SIGM_NOZ2_ELGA", "SIPO_ELNO_DEPL", "SIPO_ELNO_SIEF", "SIPO_NOEU_DEPL",
+ "SIPO_NOEU_SIEF", "SIRE_ELNO_DEPL", "SIRE_NOEU_DEPL", "TEMP", "THETA",
+ "VALE_CONT", "VALE_NCOU_MAXI", "VARI_ELNO", "VARI_ELNO_COQU",
+ "VARI_ELNO_ELGA", "VARI_ELNO_TUYO", "VARI_NOEU", "VARI_NOEU_ELGA", "VARI_NON_LOCAL",
+ "VITE", "VITE_ABSOLU", "VITE_VENT",
+ )
+
+LIRE_RESU=OPER(nom="LIRE_RESU",op=150,sd_prod=lire_resu_prod,reentrant='n',
+ UIinfo={"groupes":("Maillage",)},
+ fr="Lecture de champs aux noeuds ou par éléments aux noeuds sur un fichier IDEAS ou EnSight",
+
+
+# 0) mots clés généraux :
+#----------------------
+ TYPE_RESU =SIMP(statut='o',typ='TXM',into=("EVOL_THER","EVOL_ELAS","EVOL_NOLI","MODE_MECA",
+ "MODE_MECA_C","DYNA_TRANS","DYNA_HARMO","HARM_GENE",
+ "EVOL_CHAR") ),
+
+ FORMAT =SIMP(statut='o',typ='TXM',into=("IDEAS","IDEAS_DS58","ENSIGHT","MED") ),
+
+ INFO =SIMP(statut='f',typ='I',into=(1,2) ),
+ TITRE =SIMP(statut='f',typ='TXM',max='**'),
+
+ regles=(UN_PARMI('MAILLAGE','MODELE'),),
+ MAILLAGE =SIMP(statut='f',typ=maillage_sdaster),
+ MODELE =SIMP(statut='f',typ=modele_sdaster),
+
+ NB_VARI =SIMP(statut='f',typ='I' ),
+
+
+# 1) blocs selon le format choisi :
+#---------------------------------
+
+# 1-1 ideas dataset-58 :
+# ----------------------
+ b_dataset_58 = BLOC(condition="FORMAT=='IDEAS_DS58'",
+ UNITE =SIMP(statut='f',typ='I',defaut= 19 ),
+ ),
+ b_dataset_58_b = BLOC(condition="(FORMAT=='IDEAS_DS58') and ((TYPE_RESU=='DYNA_TRANS') or\
+ (TYPE_RESU=='DYNA_HARMO') or (TYPE_RESU=='HARM_GENE'))",
+ UNITE =SIMP(statut='f',typ='I',defaut= 19 ),
+ NOM_CHAM=SIMP(statut='o',typ='TXM',into=("DEPL","VITE","ACCE","EPSI_NOEU_DEPL","SIEF_NOEU",) ),
+ REDEFI_ORIENT=FACT(statut='f',max='**',
+ regles=(PRESENT_PRESENT('CODE_DIR','DIRECTION','NOEUD',),),
+ CODE_DIR =SIMP(statut='f',typ='I',into=(1,2,3,) ),
+ DIRECTION=SIMP(statut='f',typ='R',min=3,max=3,),
+ NOEUD =SIMP(statut='f',typ=no,validators=NoRepeat(),max='**'),),
+ ),
+
+# 1-2 ideas :
+# ---------
+ b_ideas =BLOC(condition="FORMAT=='IDEAS'",
+ UNITE =SIMP(statut='f',typ='I',defaut= 19 ),
+# TEST =SIMP(statut='f',typ='TXM',into=("OUI","NON"),defaut="NON" ),
+ NOM_CHAM =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',into=l_nom_cham_pas_elga()),
+ FORMAT_IDEAS =FACT(statut='f',max='**',
+ regles=(UN_PARMI('POSI_INST','POSI_FREQ'),),
+ NOM_CHAM =SIMP(statut='o',typ='TXM',into=l_nom_cham_pas_elga()),
+ NUME_DATASET =SIMP(statut='f',typ='I',into=(55,57,2414) ),
+ RECORD_3 =SIMP(statut='f',typ='I',max=10),
+ RECORD_6 =SIMP(statut='f',typ='I',max=10),
+ RECORD_9 =SIMP(statut='f',typ='I',max=10),
+ POSI_ORDRE =SIMP(statut='o',typ='I',min=2,max=2),
+ POSI_NUME_MODE =SIMP(statut='f',typ='I',min=2,max=2),
+ POSI_MASS_GENE =SIMP(statut='f',typ='I',min=2,max=2),
+ POSI_INST =SIMP(statut='f',typ='I',min=2,max=2),
+ POSI_FREQ =SIMP(statut='f',typ='I',min=2,max=2),
+ NOM_CMP =SIMP(statut='o',typ='TXM',max='**'),),
+ ),
+# 1-3 ensight :
+# -------------
+ b_ensight =BLOC(condition="FORMAT=='ENSIGHT'",
+ NOM_FICHIER =SIMP(statut='f',typ='TXM'),
+ NOM_CHAM =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',into=l_nom_cham_pas_elga()),
+ ),
+
+# 1-4 med :
+# ---------
+ b_med =BLOC(condition = "FORMAT == 'MED'",fr="Nom du champ dans le fichier MED",
+ UNITE =SIMP(statut='f',typ='I',defaut= 81, fr="Le fichier est : fort.n.",),
+ FORMAT_MED =FACT(statut='f',max='**',
+ regles=(ENSEMBLE('NOM_CMP','NOM_CMP_MED'),),
+ NOM_CHAM =SIMP(statut='o',typ='TXM',into=l_nom_cham_pas_elga()),
+ NOM_CHAM_MED =SIMP(statut='o',typ='TXM', fr="Nom du champ dans le fichier MED.", ),
+ NOM_CMP =SIMP(statut='f',typ='TXM',max='**', fr="Nom des composantes dans ASTER.", ),
+ NOM_CMP_MED =SIMP(statut='f',typ='TXM',max='**', fr="Nom des composantes dans MED.", ),
+ ),
+ ),
+
+# 2) blocs selon le type du résultat :
+#---------------------------------
+ b_mode_meca =BLOC(condition="(TYPE_RESU=='MODE_MECA')or(TYPE_RESU=='MODE_MECA_C')",
+ MATR_A =SIMP(statut='f',typ=matr_asse_depl_r,),
+ MATR_B =SIMP(statut='f',typ=matr_asse_depl_r,),
+ ),
+
+
+# 3) autres blocs :
+#---------------------------------
+ b_extrac =BLOC(condition="1",fr="accès à un champ dans la structure de données résultat",
+ regles=(UN_PARMI('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','INST','LIST_INST','FREQ','LIST_FREQ'),),
+ TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
+ INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
+ LIST_INST =SIMP(statut='f',typ=listr8_sdaster),
+ LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster),
+ FREQ =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
+ LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster),
+
+ b_acce_reel =BLOC(condition="(INST != None)or(LIST_INST != None)or(FREQ != None)or(LIST_FREQ != None)",
+ PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3),
+ CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
+ ),
+ ),
+) ;
+#& MODIF COMMANDE DATE 16/06/2004 AUTEUR DURAND C.DURAND
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+
+from Macro.lire_table_ops import lire_table_ops
+
+def lire_table_prod(self,TYPE_TABLE,**args):
+ if TYPE_TABLE == "TABLE" : return table_sdaster
+ if TYPE_TABLE == "TABL_CARA_GEOM" : return tabl_cara_geom
+ if TYPE_TABLE == "TABL_POST_RELE" : return tabl_post_rele
+ if TYPE_TABLE == "TABL_POST_USUR" : return tabl_post_usur
+ if TYPE_TABLE == "TABL_POST_ALEA" : return tabl_post_alea
+ raise AsException("type de concept resultat non prevu")
+
+LIRE_TABLE=MACRO(nom="LIRE_TABLE",op=lire_table_ops,sd_prod=lire_table_prod,
+ fr="Lecture d un concept de type table",
+ UIinfo={"groupes":("Maillage",)},
+ UNITE =SIMP(statut='o',typ='I' ),
+ FORMAT =SIMP(statut='f',typ='TXM',into=("ASTER",),defaut="ASTER"),
+ NUME_TABLE =SIMP(statut='f',typ='I',defaut=1),
+ TYPE_TABLE =SIMP(statut='f',typ='TXM',defaut="TABLE",
+ into=("TABLE",
+ "TABL_CARA_GEOM",
+ "TABL_POST_RELE",
+ "TABL_POST_USUR",
+ "TABL_POST_ALEA" ) ),
+ SEPARATEUR =SIMP(statut='o',typ='TXM'),
+ PARA =SIMP(statut='f',typ='TXM',max='**'),
+ TITRE =SIMP(statut='f',typ='TXM',max='**'),
+ ) ;
+
+#& MODIF COMMANDE DATE 03/11/2004 AUTEUR MCOURTOI M.COURTOIS
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE GNICOLAS G.NICOLAS
+
+from Macro.macr_adap_mail_ops import macr_adap_mail_ops
+
+def macr_adap_mail_prod(self,MAJ_CHAM,ADAPTATION,**args):
+ maillage_np1=ADAPTATION['MAILLAGE_NP1']
+ self.type_sdprod(maillage_np1,maillage_sdaster)
+ if MAJ_CHAM == None:return None
+# Remarque : la liste qui suit doit etre conforme à son homologue de LIRE_CHAMP
+ for ch in MAJ_CHAM:
+ t=ch['TYPE_CHAM']
+ if t[0:5] == "NOEU_":self.type_sdprod(ch['CHAM_MAJ'],eval("cham_no_"+string.lower(t[5:])))
+ if t == "ELEM_G_DEPL_R":self.type_sdprod(ch['CHAM_MAJ'],cham_elem_g_depl)
+ if t[0:5] == "ELEM_":self.type_sdprod(ch['CHAM_MAJ'],eval("cham_elem_"+string.lower(t[5:])))
+ if t == "ELNO_G_DEPL_R":self.type_sdprod(ch['CHAM_MAJ'],cham_elem_g_depl)
+ if t[0:5] == "ELNO_":self.type_sdprod(ch['CHAM_MAJ'],eval("cham_elem_"+string.lower(t[5:])))
+ if t == "ELGA_G_DEPL_R":self.type_sdprod(ch['CHAM_MAJ'],cham_elem_g_depl)
+ if t[0:5] == "ELGA_":self.type_sdprod(ch['CHAM_MAJ'],eval("cham_elem_"+string.lower(t[5:])))
+ return None
+
+MACR_ADAP_MAIL=MACRO(nom="MACR_ADAP_MAIL",op=macr_adap_mail_ops,sd_prod=macr_adap_mail_prod,
+ fr="Adapter un maillage avec le logiciel HOMARD.",
+ ang="Mesh adaptation with HOMARD software.",
+ docu="U7.03.01-b",
+#
+# 1. Le niveau d'information
+#
+ INFO = SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
+#
+# 2. Version de HOMARD
+#
+ VERSION_HOMARD = SIMP(statut='f',typ='TXM',defaut="V7_1",
+ into=("V7_1", "V7_N", "V7_N_PERSO"),
+ fr="Version de HOMARD",
+ ang="HOMARD release"),
+#
+# 3. Langue des messages issus de HOMARD
+#
+ LANGUE = SIMP(statut='f',typ='TXM',defaut="FRANCAIS",
+ into=("FRANCAIS","FRENCH","ANGLAIS","ENGLISH",),
+ fr="Langue des messages issus de HOMARD.",
+ ang="Language for HOMARD messages." ),
+#
+# 4. Gestion des éléments autres que des simplexes
+# 0 : autres elements refuses
+# 1 : raffinement sur les simplexes, mais autres acceptes
+# 2 : tous (defaut)
+#
+ NON_SIMPLEXE = SIMP(statut='f',typ='I',defaut=2,into=(0,1,2),
+ fr="Type d'éléments acceptés.",
+ ang="Type of authorized elements." ),
+#
+# 5. Le type de traitement :
+#
+ ADAPTATION =FACT(statut='o',
+ fr="Type d'adaptation",
+ ang="Type of adaptation",
+#
+# 5.1. Deux choix d'adaptation exclusifs :
+#
+# 5.1.
+# A. Selon un indicateur d'erreur, avec trois variantes :
+# . Raffinement et deraffinement
+# . Raffinement seul
+# . Deraffinement seul
+# B. Uniforme, avec trois variantes :
+# . Raffinement seul
+# . Deraffinement seul
+# . Rien : le maillage est le meme a la sortie et a l'entree
+#
+ regles=(
+ UN_PARMI('LIBRE','UNIFORME'),
+ ),
+ LIBRE = SIMP(statut='f',typ='TXM',
+ into=("RAFF_DERA","RAFFINEMENT","DERAFFINEMENT"),
+ fr="Adaptation selon un indicateur d'erreur.",
+ ang="Adaptation among an error indicator" ),
+ UNIFORME = SIMP(statut='f',typ='TXM',
+ into=("RAFFINEMENT","DERAFFINEMENT","RIEN"),
+ fr="Adaptation uniforme.",
+ ang="Uniform adaptation" ),
+#
+# 5.2. Quel que soit le type de traitement, il faut donner :
+# A. Le concept du maillage initial
+# B. Le concept du maillage final
+#
+ MAILLAGE_N = SIMP(statut='o',typ=maillage_sdaster,
+ fr="Maillage avant adaptation",
+ ang="Mesh before adaptation" ),
+ MAILLAGE_NP1 = SIMP(statut='o',typ=(CO,maillage_sdaster),
+ fr="Maillage apres adaptation",
+ ang="Mesh after adaptation" ),
+#
+# 5.3. Pour de l'adaptation libre, il faut l'indicateur d'erreur
+#
+#
+ b_indicateur_d_erreur =BLOC( condition = " LIBRE != None " ,
+ fr="Choix de l'indicateur d'erreur",
+ ang="Selection of error indicator",
+#
+# 5.3.1. Le nom du concept resultat_sdaster
+#
+ RESULTAT_N = SIMP(statut='o',typ=(evol_elas,evol_noli,evol_ther) ,
+ fr="Concept resultat Code_Aster contenant l'indicateur d'erreur",
+ ang="Result with error indicator" ),
+#
+# 5.3.2. Le champ d'indicateur d'erreur
+#
+ INDICATEUR = SIMP(statut='o',typ='TXM',
+ fr="Champ de l'indicateur d'erreur",
+ ang="Error indicator field" ),
+#
+# 5.3.3. La composante retenue
+#
+ NOM_CMP_INDICA = SIMP(statut='o',typ='TXM',
+ fr="Composante retenue",
+ ang="Selected component" ),
+#
+# 5.3.4. Le paramètre temporel pour l'indicateur
+#
+ regles=(EXCLUS('NUME_ORDRE','INST'),),
+#
+# 5.3.4.1. Soit le numero d'ordre
+#
+ NUME_ORDRE = SIMP(statut='f',typ='I',
+ fr="Numero d ordre",
+ ang="Rank" ),
+#
+# 5.3.4.2. Soit l'instant
+# 5.3.4.2.1. Sa valeur
+#
+ INST = SIMP(statut='f',typ='R',
+ fr="Instant associé",
+ ang="Instant" ),
+#
+# 5.3.4.2.2. La précision du choix de l'instant
+#
+ b_precision =BLOC(condition="(INST != None)",
+ PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3,
+ fr="Précision sur le choix de l'instant associé",
+ ang="Accuracy over instant choice" ),
+ CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU"),
+ fr="Critère de précision sur le choix de l'instant associé",
+ ang="Accuracy criterium over instant choice" ),),
+#
+ ) ,
+#
+# 5.4. Les criteres pour de l'adaptation libre :
+# absolu, relatif, en proportion d'entite
+# 5.4.1. Pour le raffinement :
+#
+ b_critere_de_raffinement =BLOC( condition = " ( LIBRE == 'RAFF_DERA' ) or ( LIBRE == 'RAFFINEMENT' ) " ,
+ fr="Critère de raffinement.",
+ ang="Refinement threshold.",
+ regles=(UN_PARMI ( 'CRIT_RAFF_ABS', 'CRIT_RAFF_REL', 'CRIT_RAFF_PE' ),),
+ CRIT_RAFF_ABS = SIMP(statut='f',typ='R',
+ fr="Critère absolu",
+ ang="Absolute threshold" ),
+ CRIT_RAFF_REL = SIMP(statut='f',typ='R',
+ fr="Critère relatif : fraction entre 0 et 1",
+ ang="Relative threshold : ratio between 0 and 1" ),
+ CRIT_RAFF_PE = SIMP(statut='f',typ='R',
+ fr="Pourcentage d'éléments : fraction entre 0 et 1",
+ ang="Percentage of elements : ratio between 0 and 1" ),
+ ) ,
+#
+# 5.4.2. Pour le deraffinement :
+#
+ b_critere_de_deraffinement =BLOC ( condition = " ( LIBRE == 'RAFF_DERA' ) or ( LIBRE == 'DERAFFINEMENT' ) " ,
+ fr="Critère de déraffinement.",
+ ang="Unrefinement threshold.",
+ regles=(UN_PARMI ( 'CRIT_DERA_ABS', 'CRIT_DERA_REL', 'CRIT_DERA_PE' ),),
+ CRIT_DERA_ABS = SIMP(statut='f',typ='R' ,
+ fr="Critère absolu",
+ ang="Absolute threshold" ),
+ CRIT_DERA_REL = SIMP(statut='f',typ='R',
+ fr="Critère relatif : fraction entre 0 et 1",
+ ang="Relative threshold : ratio between 0 and 1" ),
+ CRIT_DERA_PE = SIMP(statut='f',typ='R',
+ fr="Pourcentage d'éléments : fraction entre 0 et 1",
+ ang="Percentage of elements : ratio between 0 and 1" ),
+ ) ,
+#
+# 5.5. Les niveaux extremes pour le maillage adapte
+# 5.5.1. Pour le raffinement :
+#
+ b_niveau_maximum =BLOC ( condition = " ( LIBRE == 'RAFF_DERA' ) or ( LIBRE == 'RAFFINEMENT' ) or \
+ ( UNIFORME == 'RAFFINEMENT' ) " ,
+ fr="Niveau maximum de profondeur de raffinement",
+ ang="Maximum level for refinement",
+ NIVE_MAX = SIMP(statut='f',typ='I' ),
+ ) ,
+#
+# 5.5.2. Pour le deraffinement :
+#
+ b_niveau_minimum =BLOC ( condition = " ( LIBRE == 'RAFF_DERA' ) or ( LIBRE == 'DERAFFINEMENT' ) or \
+ ( UNIFORME == 'DERAFFINEMENT' ) " ,
+ fr="Niveau minimum de profondeur de déraffinement",
+ ang="Minimum level for unrefinement",
+ NIVE_MIN = SIMP(statut='f',typ='I' ),
+ ) ,
+#
+ ),
+#
+# 6. Suivi d'une frontiere
+#
+ MAILLAGE_FRONTIERE = SIMP(statut='f',typ=maillage_sdaster,
+ fr="Maillage de la frontiere à suivre",
+ ang="Boundary mesh" ),
+#
+ b_frontiere =BLOC( condition = " MAILLAGE_FRONTIERE != None " ,
+ fr="Groupes définissant la frontière",
+ ang="Groups which define the boundary",
+ GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**' ),
+ ) ,
+#
+# 7. Mise à jour de champs sur le nouveau maillage
+#
+ MAJ_CHAM =FACT(statut='f',max='**',
+ fr="Mise à jour de champs sur le nouveau maillage.",
+ ang="Updating of fields over the new mesh.",
+#
+# 7.1. Le nom du champ qui contiendra le resultat de la mise a jour
+#
+ CHAM_MAJ = SIMP(statut='o',typ=(CO,cham_gd_sdaster),
+ fr="Nom du champ qui contiendra le champ mis à jour",
+ ang="Name of the field for the updated field"),
+#
+# 7.2. Le type du champ qui contiendra le resultat de la mise a jour
+#
+ TYPE_CHAM = SIMP(statut='o',typ='TXM',into=C_TYPE_CHAM_INTO(),
+ fr="Type du champ qui contiendra le champ mis à jour",
+ ang="Type of the field for the updated field" ),
+#
+# 7.3. Le nom du resultat du champ a interpoler
+#
+ RESULTAT = SIMP(statut='o',
+ typ=(evol_elas,evol_noli,evol_ther),
+ fr="Resultat contenant le champ à mettre à jour",
+ ang="Result with field to be updated" ),
+#
+# 7.4. Le nom du champ a interpoler
+#
+ NOM_CHAM = SIMP(statut='o',typ='TXM',
+ fr="Nom du champ à mettre à jour",
+ ang="Name of the field to be updated" ),
+#
+# 7.5. Le paramètre temporel pour le champ a interpoler
+#
+ regles=(EXCLUS('NUME_ORDRE','INST'),),
+#
+# 7.5.1. Soit le numero d'ordre
+#
+ NUME_ORDRE = SIMP(statut='f',typ='I',
+ fr="Numero d ordre du champ à mettre à jour",
+ ang="Rank of the field to be updated" ),
+#
+# 7.5.2. Soit l'instant
+# 7.5.2.1. Sa valeur
+#
+ INST = SIMP(statut='f',typ='R',
+ fr="Instant associé",
+ ang="Instant" ),
+#
+# 7.5.2.2. La précision du choix de l'instant
+#
+ b_precision =BLOC(condition="(INST != None)",
+ PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3,
+ fr="Précision sur le choix de l'instant associé",
+ ang="Accuracy over instant choice" ),
+ CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU"),
+ fr="Critère de précision sur le choix de l'instant associé",
+ ang="Accuracy criterium over instant choice" ),),
+ ),
+#
+# 8. Les options d'analyse de maillage ; par defaut, on ne fait que les nombres
+# 8.1. Nombre de noeuds et éléments
+#
+ NOMBRE = SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON"),
+ fr="Nombre de noeuds et éléments du maillage",
+ ang="Number of nodes and éléments in the mesh" ),
+#
+# 8.2. Determination de la qualité des éléments du maillage
+#
+ QUALITE = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),
+ fr="Qualité du maillage",
+ ang="Mesh quality" ),
+#
+# 8.3. Connexite du maillage
+#
+ CONNEXITE = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),
+ fr="Connexité du maillage.",
+ ang="Mesh connexity." ),
+#
+# 8.4. Taille des sous-domaines du maillage
+#
+ TAILLE = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),
+ fr="Tailles des sous-domaines du maillage.",
+ ang="Sizes of mesh sub-domains." ),
+#
+# 8.5. Controle de la non-interpenetration des éléments
+#
+ INTERPENETRATION=SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),
+ fr="Controle de la non interpénétration des éléments.",
+ ang="Overlapping checking." ),
+#
+) ;
+#& MODIF COMMANDE DATE 30/06/2004 AUTEUR MCOURTOI M.COURTOIS
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE F1BHHAJ J.ANGLES
+from Macro.macr_ascouf_calc_ops import macr_ascouf_calc_ops
+def macr_ascouf_calc_prod(self,MODELE,CHAM_MATER,CARA_ELEM,FOND_FISS,CHARGE,RESU_THER,**args):
+ self.type_sdprod(MODELE,modele_sdaster)
+ if CHAM_MATER != None:self.type_sdprod(CHAM_MATER,cham_mater)
+ if CARA_ELEM != None:self.type_sdprod(CARA_ELEM,cara_elem)
+ if FOND_FISS != None:self.type_sdprod(FOND_FISS,fond_fiss)
+ if CHARGE != None:self.type_sdprod(CHARGE,char_meca)
+ if RESU_THER != None:self.type_sdprod(RESU_THER,evol_ther)
+ return evol_noli
+
+MACR_ASCOUF_CALC=MACRO(nom="MACR_ASCOUF_CALC",op=macr_ascouf_calc_ops,sd_prod=macr_ascouf_calc_prod,
+ fr=" ",
+ reentrant='n',
+ UIinfo={"groupes":("Outils métier",)},
+ regles=(UN_PARMI('COMP_INCR','COMP_ELAS'),),
+
+ TYPE_MAILLAGE =SIMP(statut='o',typ='TXM',
+ into=("SAIN",
+ "FISS_COUDE",
+ "FISS_AXIS_DEB",
+ "SOUS_EPAIS_COUDE"
+ ) ),
+
+ CL_BOL_P2_GV =FACT(statut='f',
+ ANGLE =SIMP(statut='o',typ='R' ),
+ AZIMUT =SIMP(statut='f',typ='R',defaut= 90. ),
+ ),
+
+ MAILLAGE =SIMP(statut='o',typ=maillage_sdaster ),
+ MODELE =SIMP(statut='o',typ=(CO,modele_sdaster)),
+ CHAM_MATER =SIMP(statut='f',typ=(CO,cham_mater)),
+ CARA_ELEM =SIMP(statut='f',typ=(CO,cara_elem)),
+ FOND_FISS =SIMP(statut='f',typ=(CO,fond_fiss)),
+ CHARGE =SIMP(statut='f',typ=(CO,char_meca)),
+ RESU_THER =SIMP(statut='f',typ=(CO,evol_ther)),
+
+ AFFE_MATERIAU =FACT(statut='o',max=3,
+ regles=(UN_PARMI('TOUT','GROUP_MA'),),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA =SIMP(statut='f',typ='TXM',into=("COUDE","BOL") ),
+ MATER =SIMP(statut='o',typ=mater_sdaster ),
+ TEMP_REF =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ ),
+
+ PRES_REP =FACT(statut='f',
+ PRES =SIMP(statut='o',typ='R' ),
+ EFFE_FOND_P1 =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+ PRES_LEVRE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
+ FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ ),
+
+ ECHANGE =FACT(statut='f',
+ COEF_H =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ TEMP_EXT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ ),
+
+ TORS_P1 =FACT(statut='f',max=6,
+ regles=(AU_MOINS_UN('FX','FY','FZ','MX','MY','MZ'),),
+ FX =SIMP(statut='f',typ='R' ),
+ FY =SIMP(statut='f',typ='R' ),
+ FZ =SIMP(statut='f',typ='R' ),
+ MX =SIMP(statut='f',typ='R' ),
+ MY =SIMP(statut='f',typ='R' ),
+ MZ =SIMP(statut='f',typ='R' ),
+ FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ ),
+
+ COMP_INCR =FACT(statut='f',
+ RELATION =SIMP(statut='o',typ='TXM',into=("VMIS_ISOT_TRAC",) ),
+ VMIS_ISOT_TRAC =SIMP(statut='c',typ='I',defaut= 2,into=( 2 ,) ),
+ ),
+
+ COMP_ELAS =FACT(statut='f',
+ RELATION =SIMP(statut='o',typ='TXM',into=("ELAS","ELAS_VMIS_TRAC") ),
+ ELAS =SIMP(statut='c',typ='I',defaut= 1,into=( 1 ,) ),
+ ELAS_VMIS_TRAC =SIMP(statut='c',typ='I',defaut= 1,into=( 1 ,) ),
+ ),
+
+ SOLVEUR =FACT(statut='d',
+ METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC") ),
+ b_mult_front =BLOC(condition = "METHODE == 'MULT_FRONT' ",fr="Paramètres de la méthode multi frontale",
+ RENUM =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ),
+ ),
+ b_ldlt =BLOC(condition = "METHODE == 'LDLT' ",fr="Paramètres de la méthode LDLT",
+ RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("RCMK","SANS") ),
+ ),
+ b_ldlt_mult =BLOC(condition = "METHODE == 'LDLT' or METHODE == 'MULT_FRONT' ",
+ fr="Paramètres relatifs à la non inversibilité de la matrice à factorise",
+ NPREC =SIMP(statut='f',typ='I',defaut= 8 ),
+ STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+ ),
+ b_gcpc =BLOC(condition = "METHODE == 'GCPC' ", fr="Paramètres de la méthode du gradient conjugué",
+ PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC",),defaut="LDLT_INC" ),
+ NIVE_REMPLISSAGE=SIMP(statut='f',typ='I',defaut= 0 ),
+ RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ),
+ RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ),
+ NMAX_ITER =SIMP(statut='f',typ='I',defaut= 0 ),
+ ),
+ SYME =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
+ ),
+
+ CONVERGENCE =FACT(statut='d',
+ RESI_GLOB_MAXI =SIMP(statut='f',typ='R'),
+ RESI_GLOB_RELA =SIMP(statut='f',typ='R'),
+ ITER_GLOB_MAXI =SIMP(statut='f',typ='I',defaut=10),
+ ARRET =SIMP(statut='f',typ='TXM',defaut="OUI"),
+ RESI_INTE_RELA =SIMP(statut='f',typ='R'
+ ,defaut= 1.0E-6),
+ ITER_INTE_MAXI =SIMP(statut='f',typ='I',defaut= 10 ),
+ ITER_INTE_PAS =SIMP(statut='f',typ='I',defaut= 0 ),
+ RESO_INTE =SIMP(statut='f',typ='TXM',defaut="IMPLICITE",into=("RUNGE_KUTTA_2","RUNGE_KUTTA_4","IMPLICITE")),
+ ),
+
+ NEWTON =FACT(statut='d',
+ REAC_INCR =SIMP(statut='f',typ='I',defaut= 1 ),
+ PREDICTION =SIMP(statut='f',typ='TXM',into=("DEPL_CALCULE","TANGENTE","ELASTIQUE","EXTRAPOL") ),
+ MATRICE =SIMP(statut='f',typ='TXM',defaut="TANGENTE",into=("TANGENTE","ELASTIQUE") ),
+ REAC_ITER =SIMP(statut='f',typ='I',defaut=0),
+ EVOL_NOLI =SIMP(statut='f',typ=evol_noli),
+ ),
+
+ RECH_LINEAIRE =FACT(statut='d',
+ RESI_LINE_RELA =SIMP(statut='f',typ='R',defaut= 1.0E-3 ),
+ ITER_LINE_MAXI =SIMP(statut='f',typ='I',defaut= 3),
+ ),
+
+ INCREMENT =FACT(statut='o',
+ regles=(EXCLUS('NUME_INST_INIT','INST_INIT'),
+ EXCLUS('NUME_INST_FIN','INST_FIN'),),
+ LIST_INST =SIMP(statut='o',typ=listr8_sdaster),
+ EVOLUTION =SIMP(statut='f',typ='TXM',defaut="CHRONOLOGIQUE",
+ into=("CHRONOLOGIQUE","RETROGRADE","SANS",) ),
+ NUME_INST_INIT =SIMP(statut='f',typ='I'),
+ INST_INIT =SIMP(statut='f',typ='R'),
+ NUME_INST_FIN =SIMP(statut='f',typ='I'),
+ INST_FIN =SIMP(statut='f',typ='R'),
+ PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3 ),
+ SUBD_PAS =SIMP(statut='f',typ='I',defaut=1),
+ SUBD_PAS_MINI =SIMP(statut='f',typ='R'),
+ COEF_SUBD_PAS_1 =SIMP(statut='f',typ='R',defaut= 1.0E+0),
+ ),
+
+ THETA_3D =FACT(statut='f',max='**',
+ R_INF =SIMP(statut='o',typ='R' ),
+ R_SUP =SIMP(statut='o',typ='R' ),
+ ),
+
+ IMPR_TABLE =FACT(statut='f',
+ regles=(UN_PARMI('TOUT_PARA','NOM_PARA', ),
+ PRESENT_PRESENT('TOUT_PARA','ANGLE', ),
+ PRESENT_PRESENT('TOUT_PARA','R_CINTR', ),
+ UN_PARMI('POSI_CURV_LONGI','POSI_ANGUL',),),
+ NOM_PARA =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=4,
+ into=("TRESCA_MEMBRANE",
+ "TRESCA_MFLE",
+ "TRESCA",
+ "SI_LONG"
+ "SI_RADI"
+ "SI_CIRC"
+ ) ),
+ TOUT_PARA =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ ANGLE =SIMP(statut='f',typ='R',max='**' ),
+ R_CINTR =SIMP(statut='f',typ='R',max='**' ),
+ POSI_CURV_LONGI =SIMP(statut='f',typ='R',max='**' ),
+ POSI_ANGUL =SIMP(statut='f',typ='R',max='**' ),
+ TRANSFORMEE =SIMP(statut='f',typ='TXM',defaut="COUDE",into=("COUDE","TUBE") ),
+ ),
+
+ IMPRESSION =FACT(statut='f',
+ FORMAT =SIMP(statut='f',typ='TXM',defaut="RESULTAT",
+ into=("RESULTAT","ASTER","IDEAS","CASTEM") ),
+
+ b_format_ideas =BLOC(condition="FORMAT=='IDEAS'",fr="version Ideas",
+ VERSION =SIMP(statut='f',typ='I',defaut=5,into=(4,5)),
+ ),
+
+ b_format_castem =BLOC(condition="FORMAT=='CASTEM'",fr="version Castem",
+ NIVE_GIBI =SIMP(statut='f',typ='I',defaut=10,into=(3,10)),
+ ),
+
+ ),
+
+ TITRE =SIMP(statut='f',typ='TXM' ),
+
+ INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ),
+) ;
+#& MODIF COMMANDE DATE 17/08/2004 AUTEUR DURAND C.DURAND
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE F1BHHAJ J.ANGLES
+from Macro.macr_ascouf_mail_ops import macr_ascouf_mail_ops
+MACR_ASCOUF_MAIL=MACRO(nom="MACR_ASCOUF_MAIL",op=macr_ascouf_mail_ops,sd_prod=maillage_sdaster,
+ fr=" ",reentrant='n',
+ UIinfo={"groupes":("Outils métier",)},
+
+ regles=(EXCLUS('SOUS_EPAIS_COUDE','FISS_COUDE','SOUS_EPAIS_MULTI'),),
+
+ EXEC_MAILLAGE =FACT(statut='o',
+ LOGICIEL =SIMP(statut='o',typ='TXM',defaut="GIBI2000",into=("GIBI98","GIBI2000") ),
+ UNITE_DATG =SIMP(statut='f',typ='I',defaut=70),
+ UNITE_MGIB =SIMP(statut='f',typ='I',defaut=19),
+ NIVE_GIBI =SIMP(statut='f',typ='I',defaut=10,into=(3,4,5,6,7,8,9,10,11)),
+ ),
+
+ TYPE_ELEM =SIMP(statut='f',typ='TXM',defaut="CU20",into=("CU20","CUB8") ),
+
+ COUDE =FACT(statut='o',
+ ANGLE =SIMP(statut='o',typ='R' ),
+ R_CINTR =SIMP(statut='o',typ='R' ),
+ L_TUBE_P1 =SIMP(statut='o',typ='R' ),
+ L_TUBE_P2 =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ NB_ELEM_EPAIS =SIMP(statut='f',typ='I',defaut= 3 ),
+ SYME =SIMP(statut='f',typ='TXM',defaut="ENTIER",into=("ENTIER","QUART","DEMI") ),
+ TRANSFORMEE =SIMP(statut='o',typ='TXM',defaut="COUDE",into=("COUDE","TUBE") ),
+ b_transf_coude =BLOC(condition = "TRANSFORMEE == 'COUDE' ",
+ DEXT =SIMP(statut='o',typ='R' ),
+ EPAIS =SIMP(statut='o',typ='R' ),
+ SUR_EPAIS =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ BOL_P2 =SIMP(statut='f',typ='TXM',into=("ASP_MPP","CUVE","GV") ),
+ ),
+ b_transf_tube =BLOC(condition = "TRANSFORMEE == 'TUBE' ",
+ TRAN_EPAIS =SIMP(statut='o',typ='TXM',defaut="NON",into=("OUI","NON") ),
+ b_trans_epais_oui =BLOC(condition = "TRAN_EPAIS == 'OUI' ",
+ regles=(ENSEMBLE('ANGL_TETA2','EPAIS_TI'),
+ UN_PARMI('ABSC_CURV_TRAN','POSI_ANGU_TRAN'),),
+ DEXT_T1 =SIMP(statut='o',typ='R' ),
+ EPAIS_T1 =SIMP(statut='o',typ='R' ),
+ EPAIS_T2 =SIMP(statut='o',typ='R' ),
+ EPAIS_TI =SIMP(statut='f',typ='R' ),
+ ANGL_TETA1 =SIMP(statut='o',typ='R' ),
+ ANGL_TETA2 =SIMP(statut='f',typ='R' ),
+ ABSC_CURV_TRAN =SIMP(statut='f',typ='R' ),
+ POSI_ANGU_TRAN =SIMP(statut='f',typ='R' ),
+ ),
+ b_trans_epais_non =BLOC(condition = "TRAN_EPAIS == 'NON' ",
+ DEXT =SIMP(statut='o',typ='R' ),
+ EPAIS =SIMP(statut='o',typ='R' ),
+ SUR_EPAIS =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ BOL_P2 =SIMP(statut='f',typ='TXM',into=("ASP_MPP","CUVE","GV") ),
+ ),
+ ),
+ ),
+
+ SOUS_EPAIS_COUDE=FACT(statut='f',
+ regles=(UN_PARMI('POSI_CURV_LONGI','POSI_ANGUL'),
+ UN_PARMI('POSI_CURV_CIRC','AZIMUT'),),
+ TYPE =SIMP(statut='o',typ='TXM',into=("AXIS","ELLI") ),
+ AXE_CIRC =SIMP(statut='f',typ='R' ),
+ AXE_LONGI =SIMP(statut='o',typ='R' ),
+ PROFONDEUR =SIMP(statut='o',typ='R' ),
+ POSI_CURV_LONGI =SIMP(statut='f',typ='R' ),
+ POSI_ANGUL =SIMP(statut='f',typ='R' ),
+ POSI_CURV_CIRC =SIMP(statut='f',typ='R' ),
+ AZIMUT =SIMP(statut='f',typ='R' ),
+ SOUS_EPAIS =SIMP(statut='o',typ='TXM',into=("INTERNE","EXTERNE") ),
+ NB_ELEM_LONGI =SIMP(statut='o',typ='I' ),
+ NB_ELEM_CIRC =SIMP(statut='o',typ='I' ),
+ NB_ELEM_RADI =SIMP(statut='f',typ='I',defaut= 3 ),
+ EMPREINTE =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+ ),
+
+ SOUS_EPAIS_MULTI=FACT(statut='f',max='**',
+ regles=(UN_PARMI('POSI_CURV_LONGI','POSI_ANGUL'),
+ UN_PARMI('POSI_CURV_CIRC','AZIMUT'),),
+ TYPE =SIMP(statut='o',typ='TXM',into=("AXIS","ELLI") ),
+ AXE_CIRC =SIMP(statut='f',typ='R' ),
+ AXE_LONGI =SIMP(statut='o',typ='R' ),
+ PROFONDEUR =SIMP(statut='o',typ='R' ),
+ POSI_CURV_LONGI =SIMP(statut='f',typ='R' ),
+ POSI_ANGUL =SIMP(statut='f',typ='R' ),
+ POSI_CURV_CIRC =SIMP(statut='f',typ='R' ),
+ AZIMUT =SIMP(statut='f',typ='R' ),
+ SOUS_EPAIS =SIMP(statut='o',typ='TXM',into=("INTERNE","EXTERNE") ),
+ NB_ELEM_LONGI =SIMP(statut='o',typ='I' ),
+ NB_ELEM_CIRC =SIMP(statut='o',typ='I' ),
+ EMPREINTE =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+ ),
+
+ FISS_COUDE =FACT(statut='f',
+ regles=(UN_PARMI('ABSC_CURV','POSI_ANGUL'),),
+ AXIS =SIMP(statut='f',typ='TXM',into=("OUI","NON"),defaut="NON" ),
+ b_axis_non =BLOC(condition = "AXIS == 'NON' ",
+ LONGUEUR =SIMP(statut='o',typ='R' ),
+ ),
+ b_axis_oui =BLOC(condition = "AXIS == 'OUI' ",
+ LONGUEUR =SIMP(statut='f',typ='R' ),
+ ),
+ PROFONDEUR =SIMP(statut='o',typ='R' ),
+ ABSC_CURV =SIMP(statut='f',typ='R' ),
+ POSI_ANGUL =SIMP(statut='f',typ='R' ),
+ FISSURE =SIMP(statut='o',typ='TXM',into=("DEB_INT","DEB_EXT") ),
+ AZIMUT =SIMP(statut='f',typ='R',defaut= 90. ),
+ ORIEN =SIMP(statut='o',typ='R',
+ into=(45.,-45.,90.,0.E+0) ),
+ NB_TRANCHE =SIMP(statut='o',typ='I' ),
+ NB_SECTEUR =SIMP(statut='o',typ='I' ),
+ NB_COURONNE =SIMP(statut='o',typ='I' ),
+ RAYON_TORE =SIMP(statut='f',typ='R' ),
+ COEF_MULT_RC2 =SIMP(statut='f',typ='R',defaut= 1. ),
+ COEF_MULT_RC3 =SIMP(statut='f',typ='R' ),
+ ANGL_OUVERTURE =SIMP(statut='f',typ='R',defaut= 0.5 ),
+ ),
+
+ IMPRESSION =FACT(statut='f',max='**',
+ regles=(PRESENT_PRESENT('FICHIER','UNITE'),),
+ FORMAT =SIMP(statut='f',typ='TXM',defaut="ASTER",
+ into=("ASTER","IDEAS","CASTEM") ),
+ b_format_ideas =BLOC(condition="FORMAT=='IDEAS'",fr="version Ideas",
+ VERSION =SIMP(statut='f',typ='I',defaut=5,into=(4,5)),
+ ),
+ b_format_castem =BLOC(condition="FORMAT=='CASTEM'",fr="version Castem",
+ NIVE_GIBI =SIMP(statut='f',typ='I',defaut=10,into=(3,10)),
+ ),
+ FICHIER =SIMP(statut='f',typ='TXM' ),
+ UNITE =SIMP(statut='f',typ='I' ),
+ ),
+
+ INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ),
+) ;
+#& MODIF COMMANDE DATE 30/06/2004 AUTEUR MCOURTOI M.COURTOIS
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE F1BHHAJ J.ANGLES
+from Macro.macr_aspic_calc_ops import macr_aspic_calc_ops
+
+def macr_aspic_calc_prod(self,MODELE,CHAM_MATER,CARA_ELEM,FOND_FISS_1,FOND_FISS_2,CHARGE,RESU_THER,**args):
+ if MODELE != None:self.type_sdprod(MODELE,modele_sdaster)
+ if CHAM_MATER != None:self.type_sdprod(CHAM_MATER,cham_mater)
+ if CARA_ELEM != None:self.type_sdprod(CARA_ELEM,cara_elem)
+ if FOND_FISS_1 != None:self.type_sdprod(FOND_FISS_1,fond_fiss)
+ if FOND_FISS_2 != None:self.type_sdprod(FOND_FISS_2,fond_fiss)
+ if CHARGE != None:self.type_sdprod(CHARGE,char_meca)
+ if RESU_THER != None:self.type_sdprod(RESU_THER,evol_ther)
+ return evol_noli
+
+MACR_ASPIC_CALC=MACRO(nom="MACR_ASPIC_CALC",op=macr_aspic_calc_ops,sd_prod=macr_aspic_calc_prod,
+ fr=" ",reentrant='n',
+ UIinfo={"groupes":("Outils métier",)},
+ regles=(UN_PARMI('COMP_INCR','COMP_ELAS'),),
+
+ TYPE_MAILLAGE =SIMP(statut='o',typ='TXM',
+ into=("SAIN_FIN","SAIN_GROS","FISS_COUR_DEB","FISS_COUR_NONDEB","FISS_LONG_DEB",
+ "FISS_LONG_NONDEB","FISS_AXIS_DEB","FISS_AXIS_NONDEB") ),
+
+ TUBULURE =FACT(statut='o',
+ TYPE =SIMP(statut='o',typ='TXM',into=("TYPE_1","TYPE_2") ),
+ ),
+ MAILLAGE =SIMP(statut='o',typ=maillage_sdaster),
+ MODELE =SIMP(statut='f',typ=(CO,modele_sdaster)),
+ CHAM_MATER =SIMP(statut='f',typ=(CO,cham_mater)),
+ CARA_ELEM =SIMP(statut='f',typ=(CO,cara_elem)),
+ FOND_FISS_1 =SIMP(statut='f',typ=(CO,fond_fiss)),
+ FOND_FISS_2 =SIMP(statut='f',typ=(CO,fond_fiss)),
+ CHARGE =SIMP(statut='f',typ=(CO,char_meca)),
+ RESU_THER =SIMP(statut='f',typ=(CO,evol_ther)),
+
+ AFFE_MATERIAU =FACT(statut='o',max=3,
+ regles=(UN_PARMI('TOUT','GROUP_MA'),),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",)),
+ GROUP_MA =SIMP(statut='f',typ='TXM',into=("TUBU","CORP","SOUD","SOUDCORP","SOUDTUBU") ),
+ MATER =SIMP(statut='o',typ=mater_sdaster),
+ TEMP_REF =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ RCCM =SIMP(statut='o',typ='TXM',into=("OUI","NON")),
+ ),
+
+ EQUILIBRE =FACT(statut='o',
+ NOEUD =SIMP(statut='o',typ=no),
+ ),
+
+ PRES_REP =FACT(statut='o',
+ PRES =SIMP(statut='o',typ='R'),
+ NOEUD =SIMP(statut='f',typ=no),
+ EFFE_FOND =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")),
+ PRES_LEVRE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
+ FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ ),
+
+ ECHANGE =FACT(statut='f',
+ COEF_H_TUBU =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ COEF_H_CORP =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ TEMP_EXT =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ ),
+
+ TORS_CORP =FACT(statut='f',max=6,
+ regles=(AU_MOINS_UN('FX','FY','FZ','MX','MY','MZ'),),
+ NOEUD =SIMP(statut='o',typ=no),
+ FX =SIMP(statut='f',typ='R'),
+ FY =SIMP(statut='f',typ='R'),
+ FZ =SIMP(statut='f',typ='R'),
+ MX =SIMP(statut='f',typ='R'),
+ MY =SIMP(statut='f',typ='R'),
+ MZ =SIMP(statut='f',typ='R'),
+ FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ ),
+
+ TORS_TUBU =FACT(statut='f',max=6,
+ regles=(AU_MOINS_UN('FX','FY','FZ','MX','MY','MZ'),),
+ FX =SIMP(statut='f',typ='R'),
+ FY =SIMP(statut='f',typ='R'),
+ FZ =SIMP(statut='f',typ='R'),
+ MX =SIMP(statut='f',typ='R'),
+ MY =SIMP(statut='f',typ='R'),
+ MZ =SIMP(statut='f',typ='R'),
+ FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ ),
+
+ COMP_INCR =FACT(statut='f',
+ RELATION =SIMP(statut='o',typ='TXM',into=("VMIS_ISOT_TRAC",) ),
+ VMIS_ISOT_TRAC =SIMP(statut='c',typ='I',defaut= 2,into=( 2 ,) ),
+ ),
+
+ COMP_ELAS =FACT(statut='f',
+ RELATION =SIMP(statut='o',typ='TXM',into=("ELAS","ELAS_VMIS_TRAC") ),
+ ELAS =SIMP(statut='c',typ='I',defaut= 1,into=( 1 ,) ),
+ ELAS_VMIS_TRAC =SIMP(statut='c',typ='I',defaut= 1,into=( 1 ,) ),
+ ),
+
+ THETA_3D =FACT(statut='f',max='**',
+ R_INF =SIMP(statut='o',typ='R'),
+ R_SUP =SIMP(statut='o',typ='R'),
+ ),
+
+ OPTION =SIMP(statut='f',typ='TXM',into=("CALC_G_MAX","CALC_G_MAX_LOCAL") ),
+ BORNES =FACT(statut='f',max='**',
+ NUME_ORDRE =SIMP(statut='o',typ='I'),
+ VALE_MIN =SIMP(statut='o',typ='R'),
+ VALE_MAX =SIMP(statut='o',typ='R'),
+ ),
+
+ SOLVEUR =FACT(statut='d',
+ METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC") ),
+ b_mult_front =BLOC(condition = "METHODE == 'MULT_FRONT' ",fr="Paramètres de la méthode multi frontale",
+ RENUM =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ),
+ ),
+ b_ldlt =BLOC(condition = "METHODE == 'LDLT' ",fr="Paramètres de la méthode LDLT",
+ RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("RCMK","SANS") ),
+ ),
+ b_ldlt_mult =BLOC(condition = "METHODE == 'LDLT' or METHODE == 'MULT_FRONT' ",
+ fr="Paramètres relatifs à la non iversibilité de la matrice à factorise",
+ NPREC =SIMP(statut='f',typ='I',defaut= 8 ),
+ STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+ ),
+ b_gcpc =BLOC(condition = "METHODE == 'GCPC' ", fr="Paramètres de la méthode du gradient conjugué",
+ PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC",),defaut="LDLT_INC" ),
+ NIVE_REMPLISSAGE=SIMP(statut='f',typ='I',defaut= 0 ),
+ RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ),
+ RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ),
+ NMAX_ITER =SIMP(statut='f',typ='I',defaut= 0 ),
+ ),
+ SYME =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
+ ),
+
+ CONVERGENCE =FACT(statut='d',
+ RESI_GLOB_MAXI =SIMP(statut='f',typ='R'),
+ RESI_GLOB_RELA =SIMP(statut='f',typ='R'),
+ ITER_GLOB_MAXI =SIMP(statut='f',typ='I',defaut=10),
+ ARRET =SIMP(statut='f',typ='TXM',defaut="OUI"),
+ RESI_INTE_RELA =SIMP(statut='f',typ='R',defaut=1.0E-6),
+ ITER_INTE_MAXI =SIMP(statut='f',typ='I',defaut=10),
+ ITER_INTE_PAS =SIMP(statut='f',typ='I',defaut=0),
+ RESO_INTE =SIMP(statut='f',typ='TXM',defaut="IMPLICITE",into=("RUNGE_KUTTA_2","RUNGE_KUTTA_4","IMPLICITE")),
+ ),
+
+ NEWTON =FACT(statut='d',
+ REAC_INCR =SIMP(statut='f',typ='I',defaut=1),
+ PREDICTION =SIMP(statut='f',typ='TXM',into=("TANGENTE","ELASTIQUE","EXTRAPOL","DEPL_CALCULE")),
+ MATRICE =SIMP(statut='f',typ='TXM',defaut="TANGENTE",into=("TANGENTE","ELASTIQUE")),
+ REAC_ITER =SIMP(statut='f',typ='I',defaut= 0),
+ ),
+
+ RECH_LINEAIRE =FACT(statut='d',
+ RESI_LINE_RELA =SIMP(statut='f',typ='R',defaut=1.0E-3),
+ ITER_LINE_MAXI =SIMP(statut='f',typ='I',defaut=3),
+ ),
+
+ INCREMENT =FACT(statut='o',
+ regles=(EXCLUS('NUME_INST_INIT','INST_INIT'),
+ EXCLUS('NUME_INST_FIN','INST_FIN'),),
+ LIST_INST =SIMP(statut='o',typ=listr8_sdaster),
+ EVOLUTION =SIMP(statut='f',typ='TXM',defaut="CHRONOLOGIQUE",
+ into=("CHRONOLOGIQUE","RETROGRADE","SANS",) ),
+ NUME_INST_INIT =SIMP(statut='f',typ='I'),
+ INST_INIT =SIMP(statut='f',typ='R'),
+ NUME_INST_FIN =SIMP(statut='f',typ='I'),
+ INST_FIN =SIMP(statut='f',typ='R'),
+ PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3 ),
+ SUBD_PAS =SIMP(statut='f',typ='I',defaut=1),
+ SUBD_PAS_MINI =SIMP(statut='f',typ='R'),
+ COEF_SUBD_PAS_1 =SIMP(statut='f',typ='R',defaut= 1.0E+0),
+ ),
+
+ PAS_AZIMUT =SIMP(statut='f',typ='I',defaut=1),
+
+ IMPRESSION =FACT(statut='f',
+ FORMAT =SIMP(statut='f',typ='TXM',defaut="RESULTAT",
+ into=("RESULTAT","ASTER","CASTEM","IDEAS")),
+
+ b_format_ideas =BLOC(condition="FORMAT=='IDEAS'",fr="version Ideas",
+ VERSION =SIMP(statut='f',typ='I',defaut=5,into=(4,5)),
+ ),
+
+ b_format_castem =BLOC(condition="FORMAT=='CASTEM'",fr="version Castem",
+ NIVE_GIBI =SIMP(statut='f',typ='I',defaut=10,into=(3,10)),
+ ),
+
+ b_extrac =BLOC(condition="((FORMAT=='IDEAS')or(FORMAT=='CASTEM'))",
+ fr="extraction d un champ de grandeur",
+ regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST'),),
+ NOM_CHAM =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=3,
+ into=("DEPL","EQUI_ELNO_SIGM","TEMP")),
+
+ TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
+ INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
+ ),
+ ),
+
+ INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
+
+ TITRE =SIMP(statut='f',typ='TXM'),
+)
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE F1BHHAJ J.ANGLES
+
+from Macro.macr_aspic_mail_ops import macr_aspic_mail_ops
+
+MACR_ASPIC_MAIL=MACRO(nom="MACR_ASPIC_MAIL",op= macr_aspic_mail_ops,sd_prod=maillage_sdaster,reentrant='n',
+ fr=" ",
+ UIinfo={"groupes":("Outils métier",)},
+
+ EXEC_MAILLAGE =FACT(statut='o',
+ LOGICIEL =SIMP(statut='o',typ='TXM',defaut="GIBI2000",into=("GIBI98","GIBI2000")),
+ UNITE_DATG =SIMP(statut='f',typ='I',defaut=70),
+ UNITE_MGIB =SIMP(statut='f',typ='I',defaut=19),
+ NIVE_GIBI =SIMP(statut='f',typ='I',defaut=10,into=(3,4,5,6,7,8,9,10,11)),
+ ),
+
+ TYPE_ELEM =SIMP(statut='f',typ='TXM',defaut="CU20",into=("CU20","CUB8")),
+
+ RAFF_MAIL =SIMP(statut='f',typ='TXM',defaut="GROS",into=("GROS","FIN")),
+
+ TUBULURE =FACT(statut='o',
+ E_BASE =SIMP(statut='o',typ='R'),
+ DEXT_BASE =SIMP(statut='o',typ='R'),
+ L_BASE =SIMP(statut='o',typ='R'),
+ L_CHANF =SIMP(statut='o',typ='R'),
+ E_TUBU =SIMP(statut='o',typ='R'),
+ DEXT_TUBU =SIMP(statut='o',typ='R'),
+ Z_MAX =SIMP(statut='o',typ='R'),
+ TYPE =SIMP(statut='o',typ='TXM',into=("TYPE_1","TYPE_2")),
+ L_PENETR =SIMP(statut='f',typ='R',defaut= 0.0E+0),
+ ),
+
+ SOUDURE =FACT(statut='o',
+ H_SOUD =SIMP(statut='o',typ='R'),
+ ANGL_SOUD =SIMP(statut='o',typ='R'),
+ JEU_SOUD =SIMP(statut='o',typ='R'),
+ ),
+
+ CORPS =FACT(statut='o',
+ E_CORP =SIMP(statut='o',typ='R'),
+ DEXT_CORP =SIMP(statut='o',typ='R'),
+ X_MAX =SIMP(statut='o',typ='R'),
+ ),
+
+ FISS_SOUDURE =FACT(statut='f',
+ TYPE =SIMP(statut='o',typ='TXM',into=("LONGUE","COURTE")),
+ AXIS =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
+ PROFONDEUR =SIMP(statut='o',typ='R'),
+ LONGUEUR =SIMP(statut='f',typ='R'),
+ AZIMUT =SIMP(statut='o',typ='R'),
+ RAYON_TORE =SIMP(statut='f',typ='R'),
+ POSITION =SIMP(statut='o',typ='TXM',into=("DROIT","INCLINE")),
+ FISSURE =SIMP(statut='o',typ='TXM',into=("DEB_INT","DEB_EXT","NON_DEB","TRAVERS")),
+ LIGA_INT =SIMP(statut='f',typ='R'),
+ ANGL_OUVERTURE =SIMP(statut='f',typ='R',defaut= 0.0E+0),
+ COEF_MULT_RC1 =SIMP(statut='f',typ='R'),
+ COEF_MULT_RC2 =SIMP(statut='f',typ='R'),
+ COEF_MULT_RC3 =SIMP(statut='f',typ='R'),
+ NB_TRANCHE =SIMP(statut='f',typ='I'),
+ NB_SECTEUR =SIMP(statut='f',typ='I'),
+ NB_COURONNE =SIMP(statut='f',typ='I'),
+ ),
+
+ IMPRESSION =FACT(statut='f',max='**',
+ regles=(PRESENT_PRESENT('FICHIER','UNITE'),),
+ FORMAT =SIMP(statut='f',typ='TXM',defaut="ASTER",into=("ASTER","IDEAS","CASTEM")),
+
+ b_format_ideas =BLOC(condition="FORMAT=='IDEAS'",fr="version Ideas",
+ VERSION =SIMP(statut='f',typ='I',defaut=5,into=(4,5)),
+ ),
+
+ b_format_castem =BLOC(condition="FORMAT=='CASTEM'",fr="version Castem",
+ NIVE_GIBI =SIMP(statut='f',typ='I',defaut=10,into=(3,10)),
+ ),
+ FICHIER =SIMP(statut='f',typ='TXM'),
+ UNITE =SIMP(statut='f',typ='I'),
+ ),
+
+ INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
+) ;
+#& MODIF COMMANDE DATE 30/06/2004 AUTEUR MCOURTOI M.COURTOIS
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2003 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+
+from Macro.macr_cabri_calc_ops import macr_cabri_calc_ops
+
+def macr_cabri_calc_prod(self,MODELE_THER,MODELE_MECA,CHAM_MATER,
+ CHAR_THER,CHAR_MECA,RESU_THER,**args):
+ if MODELE_THER != None:
+ self.type_sdprod(MODELE_THER,modele_sdaster)
+ if MODELE_MECA != None:
+ self.type_sdprod(MODELE_MECA,modele_sdaster)
+ if RESU_THER != None:
+ self.type_sdprod(RESU_THER,evol_ther)
+ if CHAM_MATER != None:
+ self.type_sdprod(CHAM_MATER,cham_mater)
+ if CHAR_THER != None:
+ for m in CHAR_THER:
+ self.type_sdprod(m['CHARGE'],char_ther)
+ if CHAR_MECA != None:
+ for m in CHAR_MECA:
+ self.type_sdprod(m['CHARGE'],char_meca)
+ return evol_noli
+
+
+MACR_CABRI_CALC=MACRO(nom="MACR_CABRI_CALC",
+ op=macr_cabri_calc_ops,
+ sd_prod=macr_cabri_calc_prod,
+ fr="Calcul d'une jonction boulonnée de tuyauterie",
+ reentrant='n',
+ UIinfo={"groupes":("Outils métier",)},
+ MAILLAGE = SIMP(statut='o',typ=maillage_sdaster,),
+ AFFE_MATERIAU = FACT(statut='o',max='**',
+ regles=(UN_PARMI('TOUT','GROUP_MA',),),
+ TOUT = SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA = SIMP(statut='f',typ='TXM',into=(
+ "BRIDE",
+ "GOUJON",
+ "ROND",
+ "ECROU",
+ "JOINT",) ),
+ MATER = SIMP(statut='o',typ=mater_sdaster),
+ TEMP_REF = SIMP(statut='d',typ='R',defaut= 25. ),
+ ),
+ CHAM_MATER = SIMP(statut = 'f',typ=(cham_mater,CO),),
+ MODELE_THER= SIMP(statut = 'f',typ=(modele_sdaster,CO),),
+
+ DEFI_CHAR_THER = FACT(statut ='d',
+ TEMP_INIT = SIMP(statut='d',typ='R',defaut= 25.,),
+ COEF_H_FLUI = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster),),
+ TEMP_EXT_FLUI = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster),),
+ COEF_H_AIR = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster),),
+ TEMP_EXT_AIR = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster),),
+ LIST_INST = SIMP(statut='f',typ=listr8_sdaster),
+ ),
+
+ CHAR_THER = FACT(statut = 'f',max=4,
+ CHARGE = SIMP(statut='o',typ=(char_ther,CO)),
+ TYPE = SIMP(statut='o',typ='TXM',
+ into=("BRIDE_FLUIDE","BRIDE_AIR","ECROU_GOUJON",
+ "BRIDE_JOINT"),)
+ ),
+
+ RESU_THER = SIMP(statut = 'f',typ=(evol_ther,CO),),
+
+
+ MODELE_MECA= SIMP(statut = 'f',typ=(modele_sdaster,CO),),
+
+ DEFI_CHAR_MECA = FACT(statut='o',
+ PRETENS = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster),),
+ PRES_REP = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster),),
+ EFFE_FOND = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster),),
+ ),
+
+ CHAR_MECA = FACT(statut = 'f',max=11,
+ CHARGE = SIMP(statut='o',typ=(char_meca,CO)),
+ TYPE = SIMP(statut='o',typ='TXM',
+ into=("BLOC_BAS_GOUJ","BLOC_BAS_JOINT",
+ "BLOC_LAT_ALES","BLOC_LAT_NALES",
+ "PLAN_TUBE",
+ "PRES_FLU","EFFET_FOND",
+ "CONT_JOINT",
+ "DEFO_THER",
+ "SERR_ECROU_1","SERR_ECROU_2",),)
+ ),
+
+ RELATION = SIMP(statut='f',typ='TXM',
+ into=('VMIS_ISOT_TRAC','ELAS','ELAS_VMIS_TRAC',),),
+
+ SOLVEUR = FACT(statut='d',
+ METHODE = SIMP(statut='d',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT",) ),
+ b_mult_front = BLOC(condition = "METHODE == 'MULT_FRONT' ",
+ fr="Paramètres de la méthode multi frontale",
+ RENUM = SIMP(statut='d',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ),
+ NPREC = SIMP(statut='d',typ='I',defaut=8),
+ STOP_SINGULIER = SIMP(statut='d',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+ ),
+ ),
+ INCREMENT = FACT(statut='f',
+ regles=(EXCLUS('NUME_INST_INIT','INST_INIT'),
+ EXCLUS('NUME_INST_FIN','INST_FIN'),),
+ LIST_INST =SIMP(statut='f',typ=listr8_sdaster),
+ EVOLUTION =SIMP(statut='f',typ='TXM',defaut="CHRONOLOGIQUE",
+ into=("CHRONOLOGIQUE",) ),
+ NUME_INST_INIT =SIMP(statut='f',typ='I'),
+ INST_INIT =SIMP(statut='f',typ='R'),
+ NUME_INST_FIN =SIMP(statut='f',typ='I'),
+ INST_FIN =SIMP(statut='f',typ='R'),
+ PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3 ),
+ SUBD_PAS =SIMP(statut='f',typ='I',defaut=1),
+ SUBD_PAS_MINI =SIMP(statut='f',typ='R'),
+ COEF_SUBD_PAS_1 =SIMP(statut='f',typ='R',defaut= 1.0E+0),
+ OPTI_LIST_INST =SIMP(statut='f',typ='TXM',into=("INCR_MAXI",),),
+ NOM_CHAM =SIMP(statut='f',typ='TXM',),
+ NOM_CMP =SIMP(statut='f',typ='TXM',),
+ VALE =SIMP(statut='f',typ='R'),
+ ),
+ NEWTON =FACT(statut='d',
+ REAC_INCR =SIMP(statut='f',typ='I',defaut= 1 ),
+ PREDICTION =SIMP(statut='f',typ='TXM',into=("TANGENTE","ELASTIQUE","EXTRAPOL") ),
+ MATRICE =SIMP(statut='f',typ='TXM',defaut="TANGENTE",into=("TANGENTE","ELASTIQUE") ),
+ PAS_MINI_ELAS =SIMP(statut='f',typ='R',defaut=0.0E+0),
+ REAC_ITER =SIMP(statut='f',typ='I',defaut=0),
+ EVOL_NOLI =SIMP(statut='f',typ=evol_noli),
+ ),
+ CONVERGENCE =FACT(statut='d',
+ regles=(PRESENT_ABSENT('RESI_REFE_RELA','RESI_GLOB_MAXI','RESI_GLOB_RELA'),),
+ SIGM_REFE =SIMP(statut='f',typ='R'),
+ EPSI_REFE =SIMP(statut='f',typ='R'),
+ FLUX_THER_REFE =SIMP(statut='f',typ='R'),
+ RESI_REFE_RELA =SIMP(statut='f',typ='R'),
+ RESI_GLOB_MAXI =SIMP(statut='f',typ='R'),
+ RESI_GLOB_RELA =SIMP(statut='f',typ='R'),
+ ITER_GLOB_MAXI =SIMP(statut='f',typ='I',defaut=10),
+ ITER_GLOB_ELAS =SIMP(statut='f',typ='I',defaut=25),
+ RESO_INTE =SIMP(statut='f',typ='TXM',defaut="IMPLICITE",
+ into=("IMPLICITE",)),
+ ),
+ );
+
+#& MODIF COMMANDE DATE 01/03/2005 AUTEUR MABBAS M.ABBAS
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2003 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+
+from Macro.macr_cabri_mail_ops import macr_cabri_mail_ops
+
+MACR_CABRI_MAIL=MACRO(nom="MACR_CABRI_MAIL",
+ op=macr_cabri_mail_ops,
+ sd_prod=maillage_sdaster,
+ fr="maillage d'une jonction boulonnée de tuyauterie",
+ reentrant='n',
+ UIinfo={"groupes":("Outils métier",)},
+ EXEC_MAILLAGE = FACT(statut='o',
+ LOGICIEL = SIMP(statut = 'o',typ='TXM',into=("GIBI2000",),),
+ UNITE_DATG = SIMP(statut = 'f',typ='I',defaut=70,),
+ UNITE_MGIB = SIMP(statut = 'f',typ='I',defaut=19,),
+ NIVE_GIBI = SIMP(statut = 'f',typ='I',defaut=10,
+ into = (3,4,5,6,7,8,9,10,11),
+ ),
+ ),
+ RAFF_MAILLAGE = FACT(statut = 'd',
+ NB_RADIAL = SIMP(statut = 'f',typ='I',defaut=2,),
+ NB_CIRCONF = SIMP(statut = 'f',typ='I',defaut=3,),
+ NB_VERTICAL = SIMP(statut = 'f',typ='I',defaut=6,),
+ NB_ALESAGE = SIMP(statut = 'f',typ='I',defaut=5,),
+ ),
+ VERI_MAIL = FACT(statut='d',
+ VERIF = SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+ APLAT = SIMP(statut='f',typ='R',defaut= 1.0E-3 ),
+ ),
+ GEOM_BRID = FACT(statut = 'o',
+ NORME = SIMP(statut = 'o',typ='TXM',into=("OUI","NON"),),
+ b_bride_iso = BLOC(condition = "NORME == 'OUI'",
+ TYPE = SIMP(statut='o',typ='TXM',
+ into=('A','AA','B','B1','C','D','D1','E','F',
+ 'FF','G','GG','H','H1','I','J','J1',
+ 'K','L','L1','M','N','O','P','S','T','W'),
+ ),
+ ),
+ b_bride_niso = BLOC(condition = "NORME == 'NON'",
+ TUBU_D_EXT = SIMP(statut='o',typ='R',),
+ TUBU_H = SIMP(statut='o',typ='R',),
+ BRID_D_EXT = SIMP(statut='o',typ='R',),
+ BRID_D_INT = SIMP(statut='o',typ='R',),
+ BRID_H = SIMP(statut='o',typ='R',),
+ BRID_D_CONGE = SIMP(statut='o',typ='R',),
+ BRID_R_CONGE = SIMP(statut='o',typ='R',),
+ BRID_D_EPAUL = SIMP(statut='o',typ='R',),
+ BRID_H_EPAUL = SIMP(statut='o',typ='R',),
+ BRID_D_ALESAG = SIMP(statut='o',typ='R',),
+ BRID_P_ALESAG = SIMP(statut='o',typ='R',),
+ BRID_H_ALESAG = SIMP(statut='o',typ='R',),
+ GOUJ_N_GOUJON = SIMP(statut='o',typ='I',),
+ GOUJ_D_GOUJON = SIMP(statut='o',typ='R',),
+ GOUJ_E_FILET = SIMP(statut='o',typ='R',),
+ GOUJ_D_RONDEL = SIMP(statut='o',typ='R',),
+ GOUJ_E_RONDEL = SIMP(statut='o',typ='R',),
+ GOUJ_D_ECROU = SIMP(statut='o',typ='R',),
+ GOUJ_E_ECROU = SIMP(statut='o',typ='R',),
+ ETAN_E_JOINT = SIMP(statut='o',typ='R',),
+ ),
+ ),
+ IMPRESSION = FACT(statut='d',
+ UNITE = SIMP(statut='f',typ='I'),
+ FORMAT = SIMP(statut='f',typ='TXM',defaut="ASTER",
+ into=("ASTER","CASTEM","IDEAS"),
+ ),
+ b_impr_castem = BLOC(condition = "FORMAT == 'CASTEM'",
+ NIVE_GIBI = SIMP(statut='f',typ='I',defaut=10,into=(3,10),),
+ ),
+ b_impr_ideas = BLOC(condition = "FORMAT == 'IDEAS'",
+ VERSION = SIMP(statut='f',typ='I',defaut=5,into=(4,5),),
+ ),
+ ),
+ );
+
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2003 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE JMBHH01 J.M.PROIX
+
+from Macro.macr_cara_poutre_ops import macr_cara_poutre_ops
+
+MACR_CARA_POUTRE=MACRO(nom="MACR_CARA_POUTRE",op=macr_cara_poutre_ops,sd_prod=tabl_cara_geom,
+ reentrant='n',
+ UIinfo={"groupes":("Modélisation",)},
+ fr="caractéristiques d'une section transversale de poutre à partir d'un maillage 2D",
+ regles=(EXCLUS('SYME_X','GROUP_MA_BORD'),
+ EXCLUS('SYME_Y','GROUP_MA_BORD'),),
+
+ UNITE_MAILLAGE =SIMP(statut='f',typ='I',defaut= 20 ),
+ ORIG_INER =SIMP(statut='f',typ='R',max=3,defaut=(0.E+0,0.E+0),
+ fr="Point par rapport auquel sont calculées les inerties"),
+ INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
+
+ SYME_X =SIMP(statut='f',typ='TXM',into=("OUI",),fr="demi maillage par rapport a x=0"),
+ SYME_Y =SIMP(statut='f',typ='TXM',into=("OUI",),fr="demi maillage par rapport a y=0"),
+
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**',
+ fr="Calcul des caractéristiques équivalentes a plusieurs sections disjointes"),
+
+ GROUP_MA_BORD =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**',
+ fr="Groupe(s) de mailles linéiques, bord(s) de(s) section(s)"),
+
+ b_gma_bord = BLOC( condition = "GROUP_MA_BORD != None",
+ fr=" calcul des carac. mecaniques",
+
+ NOEUD =SIMP(statut='f',typ=no,max='**',
+ fr="Simplement pour empecher des pivots nuls le cas echeant. Fournir un noeud quelconque"),
+ GROUP_MA_INTE =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**',
+ fr="groupes de mailles linéiques bordant des trous dans la section"),
+ ),
+
+ b_reseau = BLOC( condition ="""(GROUP_MA_BORD != None) and (GROUP_MA != None)""",
+ fr=" calcul des coef de cisaillement équivalents a un reseau de poutres",
+ regles=(ENSEMBLE('LONGUEUR','LIAISON','MATERIAU') ,),
+ LONGUEUR =SIMP(statut='f',typ='R',fr="Longueur du réseau de poutres"),
+ MATERIAU =SIMP(statut='f',typ=mater_sdaster,fr="Materiau elastique lineaire du reseau"),
+ LIAISON =SIMP(statut='f',typ='TXM',into=("ROTULE","ENCASTREMENT"),
+ fr="type de conditions aux limites sur le plancher supérieur" ),
+ ),
+ )
+#& MODIF COMMANDE DATE 09/11/2004 AUTEUR VABHHTS J.PELLET
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+
+
+from Macro.macr_ecla_pg_ops import macr_ecla_pg_ops
+
+def macr_ecla_pg_prod(self,RESULTAT,MAILLAGE,RESU_INIT,**args):
+ self.type_sdprod(RESULTAT,AsType(RESU_INIT))
+ self.type_sdprod(MAILLAGE,maillage_sdaster)
+ return None
+
+
+MACR_ECLA_PG=MACRO(nom="MACR_ECLA_PG",op=macr_ecla_pg_ops,sd_prod=macr_ecla_pg_prod, reentrant='n',
+ UIinfo={"groupes":("Post traitements",)},
+ fr="permettre la visualisation des champs aux points de Gauss d'une SD_RESULTAT.",
+
+
+ # SD résultat ,modèle et champs à "éclater" :
+ RESU_INIT =SIMP(statut='o',typ=resultat_sdaster,fr="RESULTAT à éclater",),
+ MODELE_INIT =SIMP(statut='o',typ=modele_sdaster,fr="MODELE à éclater"),
+ NOM_CHAM =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',
+ into=("SIEF_ELGA","VARI_ELGA","SIEF_ELGA_DEPL","FLUX_ELGA_TEMP",) ),
+
+ # paramètres numériques de la commande :
+ SHRINK =SIMP(statut='f',typ='R',defaut= 0.9, fr="Facteur de réduction" ),
+ TAILLE_MIN =SIMP(statut='f',typ='R',defaut= 0.0, fr="Taille minimale d'un coté" ),
+
+ # concepts produits par la commande :
+ RESULTAT =SIMP(statut='o',typ=(resultat_sdaster,CO),fr="SD_RESULTAT résultat de la commande"),
+ MAILLAGE =SIMP(statut='o',typ=(maillage_sdaster,CO),fr="MAILLAGE associé aux cham_no de la SD_RESULTAT"),
+
+ # Sélection éventuelle d'un sous-ensemble des éléments à visualiser :
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+
+ # Sélection des numéros d'ordre :
+ regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','LIST_INST','LIST_ORDRE'),),
+ TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
+ LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster),
+ INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
+ LIST_INST =SIMP(statut='f',typ=listr8_sdaster),
+ PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3),
+ CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",) ),
+ )
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+MACR_ELEM_DYNA=OPER(nom="MACR_ELEM_DYNA",op= 81,sd_prod=macr_elem_dyna,
+ fr="Définition d un macro élément pour analyse modale ou harmonique par sous structuration dynamique",
+ reentrant='n',
+ UIinfo={"groupes":("Matrices/vecteurs",)},
+ regles=(EXCLUS('MATR_AMOR','AMOR_REDUIT' ),),
+ BASE_MODALE =SIMP(statut='o',typ=base_modale ),
+ MATR_RIGI =SIMP(statut='f',typ=matr_asse_depl_r ),
+ MATR_MASS =SIMP(statut='f',typ=matr_asse_depl_r ),
+ MATR_AMOR =SIMP(statut='f',typ=matr_asse_depl_r ),
+ AMOR_REDUIT =SIMP(statut='f',typ='R',max='**'),
+ OPTION =SIMP(statut='f',typ='TXM',defaut="CLASSIQUE",into=("CLASSIQUE","RITZ",
+ "DIAG_MASS") ),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+MACR_ELEM_STAT=OPER(nom="MACR_ELEM_STAT",op=86,sd_prod=macr_elem_stat,reentrant='f',
+ UIinfo={"groupes":("Matrices/vecteurs",)},
+ fr="Définition d un macro-élément pour l analyse statique par sous structuration",
+ regles=(AU_MOINS_UN('DEFINITION','RIGI_MECA','MASS_MECA','CAS_CHARGE'),
+ ENSEMBLE('DEFINITION','EXTERIEUR'),),
+ DEFINITION =FACT(statut='f',
+ MODELE =SIMP(statut='o',typ=modele_sdaster),
+ CHAM_MATER =SIMP(statut='f',typ=cham_mater),
+ CARA_ELEM =SIMP(statut='f',typ=cara_elem),
+ CHAR_MACR_ELEM =SIMP(statut='f',typ=char_meca),
+ INST =SIMP(statut='f',typ='R',defaut=0.0E+0 ),
+ NMAX_CAS =SIMP(statut='f',typ='I',defaut=10),
+ NMAX_CHAR =SIMP(statut='f',typ='I',defaut=10),
+ ),
+ EXTERIEUR =FACT(statut='f',
+ regles=(AU_MOINS_UN('NOEUD','GROUP_NO'),),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ ),
+ RIGI_MECA =FACT(statut='f',
+ ),
+ MASS_MECA =FACT(statut='f',
+ ),
+ CAS_CHARGE =FACT(statut='f',max='**',
+ NOM_CAS =SIMP(statut='o',typ='TXM'),
+ SUIV =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")),
+ CHARGE =SIMP(statut='f',typ=char_meca,validators=NoRepeat(),max='**'),
+ INST =SIMP(statut='f',typ='R',defaut=0.E+0),
+ ),
+) ;
+#& MODIF COMMANDE DATE 07/10/2004 AUTEUR GNICOLAS G.NICOLAS
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE GNICOLAS G.NICOLAS
+
+from Macro.macr_fiab_impr_ops import macr_fiab_impr_ops
+
+MACR_FIAB_IMPR=MACRO(nom="MACR_FIAB_IMPR",op=macr_fiab_impr_ops,
+ docu="U7.04.41",
+ fr="Imprimer les valeurs à transmettre au logiciel de fiabilité.",
+ ang="Print values for the fiability software",
+#
+# 1. Le niveau d'information
+#
+ INFO = SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
+#
+# 2. Impression de la valeur de la cible
+#
+# 2.1. ==> La table contenant la valeur à imprimer
+#
+ TABLE_CIBLE = SIMP(statut='o',typ=table_sdaster,
+ fr="Table contenant la valeur cible.",
+ ang="Table which includes the target value."),
+#
+# 2.2. ==> Le nom du paramètre associé à la valeur cible dans cette table
+#
+ NOM_PARA_CIBLE = SIMP(statut='o',typ='TXM',
+ fr="Nom du paramètre associé à la valeur cible.",
+ ang="Name of the parameter connected to the target value."),
+#
+# 3. Impressions des valeurs des éventuels gradients
+#
+ GRADIENTS = FACT(statut='f',min=1,max='**',
+#
+# 3.1. ==> La table contenant la valeur à imprimer
+#
+ TABLE = SIMP(statut='o',typ=table_sdaster,
+ fr="Table contenant le gradient.",
+ ang="Table which includes the gradient."),
+#
+# 3.2. ==> Le paramètre sensible
+#
+ PARA_SENSI = SIMP(statut='o',typ=(para_sensi,theta_geom),
+ fr="Paramètre sensible associé au gradient.",
+ ang="Sensitivity parameter connected to the gradient."),
+#
+# 3.3. ==> Le nom du paramètre associé au gradient dans cette table
+#
+ NOM_PARA = SIMP(statut='o',typ='TXM',
+ fr="Nom du paramètre associé au gradient.",
+ ang="Name of the parameter connected to the gradient."),
+#
+ ),
+#
+);
+#& MODIF COMMANDE DATE 14/09/2004 AUTEUR MCOURTOI M.COURTOIS
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE GNICOLAS G.NICOLAS
+
+from Macro.macr_fiabilite_ops import macr_fiabilite_ops
+
+#
+#====
+# 1. Le retour : une liste de rééls.
+#====
+#
+def macr_fiabilite_prod ( self , **args ):
+ return listr8_sdaster
+#
+#====
+# 2. L'entete
+#====
+#
+MACR_FIABILITE = MACRO ( nom="MACR_FIABILITE",op=macr_fiabilite_ops,
+ docu="U7.03.31",
+ sd_prod=macr_fiabilite_prod,
+ fr="Faire de la mécanique fiabiliste.",
+ ang="Fiability mechanics.",
+#
+#====
+# 3. Le niveau d'information
+#====
+#
+ INFO = SIMP(statut="f",typ="I",defaut=1,into=(1,2)),
+#
+#====
+# 4. Nom et Version du logiciel de fiabilité
+#====
+#
+ LOGICIEL = SIMP(statut="f",typ="TXM",defaut="MEFISTO",
+ into=("MEFISTO",),
+ fr="Nom du logiciel de fiabilité.",
+ ang="Fiability software name."),
+#
+ VERSION = SIMP(statut="f",typ="TXM",defaut="V3_2",
+ into=("V3_2", "V3_N"),
+ fr="Version du logiciel de fiabilité.",
+ ang="Fiability software release."),
+#
+#====
+# 5. Les entrees-sorties du calcul ASTER déterministe
+#====
+#
+# 5.1. ==> Le jeu de commandes déterministe
+#
+ UNITE_ESCL = SIMP(statut="o",typ="I",
+ fr="Unité logique associée aux commandes du calcul ASTER déterministe.",
+ ang="Logical unit for the commands of the ASTER deterministic calculation."),
+#
+# 5.2. ==> Le destin des messages produits par ASTER
+#
+ MESS_ASTER = SIMP(statut="f",typ="TXM",defaut="DERNIER",
+ into=("AUCUN", "DERNIER", "TOUS"),
+ fr="Quels messages ASTER récupérer.",
+ ang="Which ASTER messages must be kept."),
+#
+#====
+# 6. Options
+#====
+# 6.1. ==> Générales
+#
+# 6.1.1. ==> La valeur du seuil
+#
+ SEUIL = SIMP(statut="o",typ="R",max=1,
+ fr="Le seuil de défaillance.",
+ ang="Failure threshold."),
+#
+# 6.1.2. ==> Le type du seuil : on a deux cas de figure selon que
+# la défaillance a lieu au dessus d'un seuil maximum ou
+# en dessous d'un seuil minimum
+#
+ SEUIL_TYPE = SIMP(statut="o",typ="TXM",max=1,
+ into=("MINIMUM","MAXIMUM"),
+ fr="Que faut-il ne pas dépasser : un maximum ou un minimum.",
+ ang="What is the failure threshold : maximum or minimum."),
+#
+# 6.2. ==> Pour MEFISTO
+#
+### en attente de résolution de AL 2004-006 (1/2) b_mefisto=BLOC( condition = "LOGICIEL=='MEFISTO'",
+#
+# 6.2.1. ==> Pilotage de la recherche du point de conception
+#
+ RECH_PT_CONCEPT = SIMP(statut="f",typ="TXM",defaut="OUI",
+ into=("OUI","NON"),
+ fr="Pour trouver le point de conception.",
+ ang="To find the design point."),
+#
+ b_rech_pt_concept=BLOC( condition = "RECH_PT_CONCEPT=='OUI'",
+#
+ EPSILON_U = SIMP(statut="f",typ="R",defaut=1.0E-2,
+ fr="Précision du test d'arret sur les points itératifs dans l'espace standard.",
+ ang="Precision of stop test for iterative points in standard space."),
+#
+ EPSILON_G = SIMP(statut="f",typ="R",defaut=1.0E-2,
+ fr="Précision du test d'arret sur la proximité de la surface d'état limite.",
+ ang="Precision of stop test for limit state surface."),
+#
+ TAU = SIMP(statut="f",typ="R",defaut=5.0E-1,
+ fr="Paramètre de la méthode de minimisation.",
+ ang="Parameter for the minimization method."),
+#
+ OMEGA = SIMP(statut="f",typ="R",defaut=1.0E-4,
+ fr="Paramètre de la méthode de minimisation.",
+ ang="Parameter for the minimization method."),
+#
+ ITER_MAX = SIMP(statut="f",typ="I",defaut=50,
+ fr="Nombre maximum d'itérations.",
+ ang="Maximum number of iterations."),
+ ),
+#
+# 6.2.2. ==> Méthode(s) employée(s) pour la probabilité de défaillance
+#
+ METHODE_FORM = SIMP(statut="f",typ="TXM",defaut="OUI",
+ into=("OUI","NON"),
+ fr="Recherche de la probabilité de défaillance avec la méthode FORM.",
+ ang="Research of failure probability with FORM method."),
+#
+ METHODE_SORM = SIMP(statut="f",typ="TXM",defaut="NON",
+ into=("OUI","NON"),
+ fr="Recherche de la probabilité de défaillance avec la méthode SORM.",
+ ang="Research of failure probability with SORM method."),
+#
+ TIRAGE_IMPORTANCE = SIMP(statut="f",typ="TXM",defaut="NON",
+ into=("OUI","NON"),
+ fr="Recherche de la probabilité de défaillance avec le tirage d'importance.",
+ ang="Research of failure probability with ."),
+#
+ b_tirage_importance=BLOC( condition = "TIRAGE_IMPORTANCE=='OUI'",
+#
+ NB_SIMULATION = SIMP(statut="f",typ="I",defaut=3,
+ fr="Nombre de simulations pour le tirage d'importance.",
+ ang="Number of simulation for."),
+#
+ ),
+#
+# 6.2.3. ==> Création d'une surface de réponse polynomiale
+#
+ POLYNOME_TAYLOR = SIMP(statut="f",typ="TXM",defaut="NON",into=("OUI","NON"),),
+ HGRAD = SIMP(statut="f",typ="R",defaut=1.0E-2,
+ fr="Pas incrémental pour le calcul des gradients.",
+ ang="Step for calculation of gradients."),
+ HHESS = SIMP(statut="f",typ="R",defaut=1.0E-2,
+ fr="Pas incrémental pour le calcul des dérivées secondes.",
+ ang="Step for calculation of second derivatives."),
+#
+# 6.2.4. ==> Recherche d'un plan d'expérience
+#
+ PLAN_EXPERIENCE = SIMP(statut="f",typ="TXM",defaut="NON",into=("OUI","NON"),
+ fr="Construction d'un plan d'expérience.",
+ ang="Construction of an experiment plan."),
+#
+ b_plan_experience=BLOC( condition = "PLAN_EXPERIENCE=='OUI'",
+#
+ ALPHA = SIMP(statut="f",typ="R",defaut=2.0E-1,
+ fr="Plan d'expérience : maille du plan de type composite centré.",
+ ang="Experiment plane : mesh centered composite."),
+#
+ BETA = SIMP(statut="f",typ="R",defaut=4.0E-1,
+ fr="Plan d'expérience : maille du plan de type factoriel.",
+ ang="Experiment plane : mesh factor."),
+#
+ ),
+#
+# 6.2.5. ==> Les tests
+# 6.2.5.1. ==> Test de la sphere
+#
+ T_SPHERE = SIMP(statut="f",typ="TXM",defaut="NON",into=("OUI","NON"),
+ fr="Test de la sphère.",
+ ang="Sphere test."),
+#
+ b_test_de_la_sphere=BLOC( condition = "T_SPHERE=='OUI'",
+#
+ METHODE_TEST = SIMP(statut="f",typ="TXM",defaut="GAUSSIENNE",
+ into=("GAUSSIENNE","PARAMETRIQUE","REJECTION"),
+ fr="Type de méthode.",
+ ang="Method."),
+#
+ NB_POINT = SIMP(statut="f",typ="I",max=1,defaut=60,
+ fr="Nombre de points de la sphere.",
+ ang="Number of points over the sphere.")
+ ),
+#
+# 6.2.5.2. ==> Test du maximum fort
+#
+ T_MAXIMUM_FORT = SIMP(statut="f",typ="TXM",defaut="NON",into=("OUI","NON"),
+ fr="Test du maximum fort.",
+ ang="Strong maximum test."),
+#
+ b_test_du_maximum_fort=BLOC( condition = "T_MAXIMUM_FORT=='OUI'",
+#
+ COS_LIM = SIMP(statut="f",typ="R",max=1,defaut=1.0,
+ fr="Cosinus de l'angle d'exclusion.",
+ ang="Cosine of angle of exclusion."),
+#
+ DPROB = SIMP(statut="f",typ="R",max=1,defaut=4.3E-1,
+ fr="Fraction d'iso-densité de probabilité de défaillance.",
+ ang="Fraction.")
+#
+ ),
+#
+# 6.2.5.3. ==> Test du hessien
+#
+ T_HESSIEN = SIMP(statut="f",typ="TXM",defaut="NON",into=("OUI","NON"),
+ fr="Test du hessien.",
+ ang="Hessian test."),
+#
+# 6.2.6. ==> Les correlations entre les variables
+#
+ MATRICE = SIMP(statut="o",typ="R",max="**",
+ fr="Matrice de corrélation entre les variables.",
+ ang="Correlation matrix."),
+#
+### en attente de résolution de AL 2004-006 (2/2) ),
+#
+#====
+# 7. Definition des paramètres
+#====
+#
+ VARIABLE = FACT(statut="o",min=1,max="**",
+#
+# 7.1. ==> Nom de la variable
+#
+ NOM = SIMP(statut="o",typ="TXM",
+ fr="Nom de la variable, identique au nom de concept PARA_SENSI.",
+ ang="Name of the variable, identical to the name of the PARA_SENSI conceipt."),
+#
+# 7.2. ==> Loi de distribution
+#
+ LOI = SIMP(statut="o",typ="TXM",
+ into=("UNIFORME","NORMALE","LOGNORMALE","NORMALE_TRONQUEE"),
+ fr="Choix de la loi",
+ ang="Law."),
+#
+# 7.2.1. ==> Loi normale
+#
+ b_normale=BLOC(condition="LOI=='NORMALE'",
+#
+ VALE_MOY = SIMP(statut="o",typ="R",max=1,
+ fr="Valeur moyenne.",
+ ang="Mean value."),
+#
+ ECART_TYPE = SIMP(statut="o",typ="R",max=1,
+ fr="Ecart type.",
+ ang="Standard deviation."),
+#
+ ),
+#
+# 7.2.2. ==> Loi lognormale
+#
+ b_lognormale=BLOC(condition="LOI=='LOGNORMALE'",
+#
+ VALE_MIN = SIMP(statut="o",typ="R",max=1,
+ fr="Valeur minimale.",
+ ang="Minimal value."),
+#
+ VALE_MOY = SIMP(statut="f",typ="R",max=1,
+ fr="Valeur moyenne dans l'espace de la loi normale.",
+ ang="Mean value in the space of the normal law."),
+#
+ ECART_TYPE = SIMP(statut="f",typ="R",max=1,
+ fr="Ecart type dans l'espace de la loi normale.",
+ ang="Standard deviation in the space of the normal law."),
+#
+ VALE_MOY_PHY = SIMP(statut="f",typ="R",max=1,
+ fr="Valeur moyenne dans l'espace physique.",
+ ang="Mean value in the physical space."),
+#
+ ECART_TYPE_PHY = SIMP(statut="f",typ="R",max=1,
+ fr="Ecart type dans l'espace physique.",
+ ang="Standard deviation in the physical space."),
+#
+ regles=(AU_MOINS_UN("VALE_MOY" ,"VALE_MOY_PHY"),
+ AU_MOINS_UN("ECART_TYPE","ECART_TYPE_PHY"),
+ EXCLUS ("VALE_MOY" ,"VALE_MOY_PHY"),
+ EXCLUS ("VALE_MOY" ,"ECART_TYPE_PHY"),
+ EXCLUS ("ECART_TYPE","VALE_MOY_PHY"),
+ EXCLUS ("ECART_TYPE","ECART_TYPE_PHY")),
+#
+ ),
+#
+# 7.2.3. ==> Loi uniforme
+#
+ b_uniforme=BLOC(condition="LOI=='UNIFORME'",
+#
+ VALE_MIN = SIMP(statut="o",typ="R",max=1,
+ fr="Valeur minimale.",
+ ang="Minimal value."),
+#
+ VALE_MAX = SIMP(statut="o",typ="R",max=1,
+ fr="Valeur maximale.",
+ ang="Maximal value."),
+#
+ ),
+#
+# 7.2.4. ==> Loi normale tronquée
+#
+ b_normale_tronquee=BLOC(condition="LOI=='NORMALE_TRONQUEE'",
+#
+ VALE_MOY = SIMP(statut="o",typ="R",max=1,
+ fr="Valeur moyenne de la loi normale complète.",
+ ang="Mean value for the entire normal law."),
+#
+ ECART_TYPE = SIMP(statut="o",typ="R",max=1,
+ fr="Ecart type de la loi normale complète.",
+ ang="Standard deviation for the entire normal law."),
+#
+ VALE_MIN = SIMP(statut="o",typ="R",max=1,
+ fr="Valeur minimale.",
+ ang="Minimal value."),
+#
+ VALE_MAX = SIMP(statut="o",typ="R.",max=1,
+ fr="Valeur maximale.",
+ ang="Maximal value."),
+#
+ ),
+#
+# 7.3. ==> Paramètres de calcul
+# 7.3.1. ==> Soit on cherche le point de conception, soit on le connait deja
+#
+ regles=(EXCLUS("POINT_INI","POINT_CONCEPT"),
+ EXCLUS("POINT_REF","POINT_CONCEPT"),),
+#
+# 7.3.2. ==> Quand on cherche le point de conception, on peut préciser le départ de l'algorithme.
+# Si on ne le fait pas, le programme prendra la valeur moyenne.
+#
+ POINT_INI = SIMP(statut="f",typ="R",max=1,
+ fr="Point de démarrage de l'algorithme itératif.",
+ ang="Initial point for iterative process."),
+#
+# 7.3.3. ==> Quand on cherche le point de conception, on peut préciser un point de référence pour normaliser.
+# Si on ne le fait pas, le programme prendra la valeur moyenne.
+#
+ POINT_REF = SIMP(statut="f",typ="R",max=1,
+ fr="Point de référence de l'algorithme itératif.",
+ ang="Reference point for iterative process."),
+#
+# 7.3.4. ==> Quand on cherche uniquement la probabilité de défaillance, il faut donner le point de conception
+#
+ POINT_CONCEPT = SIMP(statut="f",typ="R",max=1,
+ fr="Point de conception.",
+ ang="Design point."),
+#
+# 7.4. ==> Mode d'obtention du gradient par rapport à ce paramètre
+#
+ GRADIENT = SIMP(statut="o",typ="TXM",max=1,
+ into=("OUI","NON"),
+ fr="ASTER calcule directement le gradient.",
+ ang="ASTER computes the gradient for this parameter."),
+
+ b_gradient=BLOC(condition="GRADIENT=='NON'",
+ INCREMENT = SIMP(statut="o",typ="R",max=1,
+ fr="Incrément dans la direction.",
+ ang="Direction increment."),
+ ),
+
+ ),
+#
+);
+#& MODIF COMMANDE DATE 03/11/2004 AUTEUR MCOURTOI M.COURTOIS
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE GNICOLAS G.NICOLAS
+
+from Macro.macr_adap_mail_ops import macr_adap_mail_ops
+
+MACR_INFO_MAIL=MACRO(nom="MACR_INFO_MAIL",op=macr_adap_mail_ops,
+ docu="U7.03.02-b",
+ fr="Donner des informations sur un maillage.",
+ ang="To give information about a mesh.",
+#
+# 1. Le niveau d'information
+#
+ INFO = SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
+#
+# 2. Version de HOMARD
+#
+ VERSION_HOMARD = SIMP(statut='f',typ='TXM',defaut="V7_1",
+ into=("V7_1", "V7_N", "V7_N_PERSO"),
+ fr="Version de HOMARD",
+ ang="HOMARD release"),
+#
+# 3. Langue des messages issus de HOMARD
+#
+ LANGUE = SIMP(statut='f',typ='TXM',defaut="FRANCAIS",
+ into=("FRANCAIS","FRENCH","ANGLAIS","ENGLISH",),
+ fr="Langue des messages issus de HOMARD.",
+ ang="Language for HOMARD messages." ),
+#
+# 4. Gestion des éléments autres que des simplexes
+# 0 : autres elements refusés
+# 1 : analyse exclusivement sur les simplexes, mais autres éléments acceptés
+# 2 : tous (defaut)
+#
+ NON_SIMPLEXE = SIMP(statut='f',typ='I',defaut=2,into=(0,1,2),
+ fr="Acceptation d'éléments quad, hexa et penta",
+ ang="quad, hexa and penta elements allowed" ),
+#
+# 5. Le nom du maillage a analyser
+#
+ MAILLAGE = SIMP(statut='o',typ=maillage_sdaster,
+ fr="Maillage à analyser.",
+ ang="Mesh to be checked." ),
+#
+# 6. Suivi d'une frontiere
+#
+ MAILLAGE_FRONTIERE = SIMP(statut='f',typ=maillage_sdaster,
+ fr="Maillage de la frontiere à suivre",
+ ang="Boundary mesh" ),
+#
+ b_frontiere =BLOC( condition = " MAILLAGE_FRONTIERE != None " ,
+ fr="Groupes définissant la frontière",
+ ang="Groups which define the boundary",
+ GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**' ),
+ ) ,
+#
+# 7. Les options ; par defaut, on ne fait que les nombres
+# 7.1. Nombre de noeuds et elements
+#
+ NOMBRE = SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON"),
+ fr="Nombre de noeuds et éléments du maillage",
+ ang="Number of nodes and elements in the mesh" ),
+#
+# 7.2. Determination de la qualite des elements du maillage
+#
+ QUALITE = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),
+ fr="Qualité du maillage",
+ ang="Mesh quality" ),
+#
+# 7.3. Connexite du maillage
+#
+ CONNEXITE = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),
+ fr="Connexité du maillage.",
+ ang="Mesh connexity." ),
+#
+# 7.4. Taille des sous-domaines du maillage
+#
+ TAILLE = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),
+ fr="Tailles des sous-domaines du maillage.",
+ ang="Sizes of mesh sub-domains." ),
+#
+# 7.5. Controle de la non-interpenetration des elements
+#
+ INTERPENETRATION=SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),
+ fr="Controle de la non interpénétration des éléments.",
+ ang="Overlapping checking." ),
+#
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+
+from Macro.macr_lign_coupe_ops import macr_lign_coupe_ops
+
+def macr_lign_coupe_prod(self,LIGN_COUPE,**args):
+ if not LIGN_COUPE: raise AsException("Impossible de typer les concepts resultats")
+ for m in LIGN_COUPE:
+ self.type_sdprod(m['TABLE'],table_sdaster)
+ return None
+
+
+MACR_LIGN_COUPE=MACRO(nom="MACR_LIGN_COUPE",op=macr_lign_coupe_ops,sd_prod=macr_lign_coupe_prod,
+ reentrant='n',
+ UIinfo={"groupes":("Outils métier",)},
+ fr="extraction d un résultat sur des lignes de coupes définies par 2 points et un intervalle",
+ RESULTAT =SIMP(statut='o',typ=(evol_elas,evol_noli,evol_ther) ),
+ b_meca =BLOC(condition = "AsType(RESULTAT) in (evol_elas,evol_noli)",fr="résultat mécanique",
+ NOM_CHAM =SIMP(statut='f',typ='TXM',defaut='SIGM_NOEU_DEPL' ),
+ ),
+ b_ther =BLOC(condition = "AsType(RESULTAT) in (evol_ther,)",fr="résultat thermique",
+ NOM_CHAM =SIMP(statut='f',typ='TXM',defaut='TEMP' ),
+ ),
+ MODELE =SIMP(statut='o',typ=modele_sdaster ),
+ UNITE_MAILLAGE =SIMP(statut='f',typ='I',defaut=25),
+ LIGN_COUPE =FACT(statut='o',max='**',
+ NB_POINTS =SIMP(statut='o',typ='I'),
+ COOR_ORIG =SIMP(statut='o',typ='R',min=2,max=3),
+ COOR_EXTR =SIMP(statut='o',typ='R',min=2,max=3),
+ TABLE =SIMP(statut='o',typ=(table_sdaster,CO)),
+ ),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+
+from Macro.macr_recal_ops import macr_recal_ops
+
+def macr_recal_prod(self,**args ):
+ return listr8_sdaster
+
+MACR_RECAL = MACRO(nom="MACR_RECAL",op=macr_recal_ops,
+ UIinfo={"groupes":("Résultats et champs",)},
+ sd_prod=macr_recal_prod,
+ fr="Réalise le recalage de modèles Aster",
+ UNITE_ESCL =SIMP(statut='o',typ='I'),
+ RESU_EXP =SIMP(statut='o',typ=assd,max='**'),
+ POIDS =SIMP(statut='f',typ=assd,max='**'),
+ RESU_CALC =SIMP(statut='o',typ=assd,max='**'),
+ LIST_PARA =SIMP(statut='o',typ=assd,max='**'),
+ ITER_MAXI =SIMP(statut='f',typ='I',defaut=10),
+ RESI_GLOB_RELA =SIMP(statut='f',typ='R',defaut=1.E-3),
+ UNITE_RESU =SIMP(statut='f',typ='I',defaut=91),
+ PARA_DIFF_FINI =SIMP(statut='f',typ='R',defaut=0.001),
+ GRAPHIQUE =FACT(statut='d',
+ UNITE =SIMP(statut='f',typ='I',defaut=90),
+ INTERACTIF =SIMP(statut='f',typ='TXM',defaut='NON',into=("OUI","NON")),)
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE G8BHHXD X.DESROCHES
+
+from Macro.macro_elas_mult_ops import macro_elas_mult_ops
+
+def macro_elas_mult_prod(self,NUME_DDL,CAS_CHARGE,**args ):
+ self.type_sdprod(NUME_DDL,nume_ddl_sdaster)
+ if CAS_CHARGE[0]['NOM_CAS'] != None : return mult_elas
+ if CAS_CHARGE[0]['MODE_FOURIER'] != None : return fourier_elas
+ raise AsException("type de concept resultat non prevu")
+
+MACRO_ELAS_MULT=MACRO(nom="MACRO_ELAS_MULT",op=macro_elas_mult_ops,sd_prod=macro_elas_mult_prod,reentrant='f',
+ UIinfo={"groupes":("Résolution",)},
+ regles=(UN_PARMI('CHAR_MECA_GLOBAL','CHAR_CINE_GLOBAL','LIAISON_DISCRET', ),),
+ MODELE =SIMP(statut='o',typ=modele_sdaster),
+ CHAM_MATER =SIMP(statut='f',typ=cham_mater),
+ CARA_ELEM =SIMP(statut='f',typ=cara_elem),
+ NUME_DDL =SIMP(statut='f',typ=(nume_ddl_sdaster,CO)),
+ CHAR_MECA_GLOBAL=SIMP(statut='f',typ=char_meca,validators=NoRepeat(),max='**'),
+ CHAR_CINE_GLOBAL=SIMP(statut='f',typ=char_meca,validators=NoRepeat(),max='**'),
+ LIAISON_DISCRET =SIMP(statut='f',typ='TXM',into=("OUI",)),
+ CAS_CHARGE =FACT(statut='o',max='**',
+ regles=(UN_PARMI('NOM_CAS','MODE_FOURIER'),
+ UN_PARMI('CHAR_MECA','CHAR_CINE','VECT_ASSE'),),
+ NOM_CAS =SIMP(statut='f',typ='TXM' ),
+ MODE_FOURIER =SIMP(statut='f',typ='I' ),
+ TYPE_MODE =SIMP(statut='f',typ='TXM',defaut="SYME",into=("SYME","ANTI","TOUS") ),
+ CHAR_MECA =SIMP(statut='f',typ=char_meca,validators=NoRepeat(),max='**'),
+ CHAR_CINE =SIMP(statut='f',typ=char_meca,validators=NoRepeat(),max='**'),
+ OPTION =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',
+ into=("EFGE_ELNO_DEPL","EPOT_ELEM_DEPL","SIGM_ELNO_DEPL","SIEF_ELGA_DEPL",
+ "SIGM_ELNO_CART","EFGE_ELNO_CART","DEGE_ELNO_DEPL","EPSI_ELNO_DEPL",
+ "EPSI_ELGA_DEPL","EPSG_ELNO_DEPL","EPSG_ELGA_DEPL","EPSP_ELNO","EPSP_ELGA",
+ "ECIN_ELEM_DEPL","FLUX_ELGA_TEMP","FLUX_ELNO_TEMP","SOUR_ELGA_ELEC",
+ "PRES_ELNO_DBEL","PRES_ELNO_REEL","PRES_ELNO_IMAG","INTE_ELNO_ACTI",
+ "INTE_ELNO_REAC","SIGM_NOZ1_ELGA","ERRE_ELEM_NOZ1","SIGM_NOZ2_ELGA",
+ "ERRE_ELEM_NOZ2","VNOR_ELEM_DEPL","ERRE_ELNO_ELGA","SIRE_ELNO_DEPL",
+ "ERRE_ELGA_NORE","EQUI_ELNO_SIGM","EQUI_ELGA_SIGM","EQUI_ELNO_EPSI",
+ "EQUI_ELGA_EPSI","FORC_NODA","REAC_NODA","EPSI_NOEU_DEPL","SIGM_NOEU_DEPL",
+ "EFGE_NOEU_DEPL","EQUI_NOEU_SIGM","EQUI_NOEU_EPSI","FLUX_NOEU_TEMP") ),
+ NUME_COUCHE =SIMP(statut='f',typ='I',defaut=1),
+ NIVE_COUCHE =SIMP(statut='f',typ='TXM',defaut="MOY",into=("SUP","INF","MOY")),
+ SOUS_TITRE =SIMP(statut='f',typ='TXM',max='**'),
+ VECT_ASSE =SIMP(statut='f',typ=cham_no_depl_r),
+ ),
+ SOLVEUR =FACT(statut='d',
+ METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT") ),
+ b_mult_front = BLOC ( condition = "METHODE == 'MULT_FRONT' ",
+ fr="Paramètres de la méthode multi frontale",
+ RENUM =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ),
+ ),
+ b_ldlt =BLOC(condition = "METHODE == 'LDLT' ",fr="Paramètres de la méthode LDLT",
+ RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("RCMK","SANS") ),
+ ),
+ b_ldlt_mult =BLOC(condition = "METHODE == 'LDLT' or METHODE == 'MULT_FRONT' ",
+ fr="Paramètres relatifs à la non inversibilité de la matrice à factorise",
+ NPREC =SIMP(statut='f',typ='I',defaut= 8 ),
+ STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+ ),
+ ),
+ INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2)),
+ TITRE =SIMP(statut='f',typ='TXM',max='**'),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+
+from Macro.macro_matr_ajou_ops import macro_matr_ajou_ops
+
+def macro_matr_ajou_prod(self,MATR_AMOR_AJOU,MATR_MASS_AJOU,MATR_RIGI_AJOU,FORC_AJOU,**args):
+ self.type_sdprod(MATR_AMOR_AJOU,matr_asse_gene_r)
+ self.type_sdprod(MATR_MASS_AJOU,matr_asse_gene_r)
+ self.type_sdprod(MATR_RIGI_AJOU,matr_asse_gene_r)
+ if FORC_AJOU != None:
+ for m in FORC_AJOU:
+ self.type_sdprod(m['VECTEUR'],vect_asse_gene)
+
+ return None
+
+MACRO_MATR_AJOU=MACRO(nom="MACRO_MATR_AJOU",op=macro_matr_ajou_ops,sd_prod=macro_matr_ajou_prod,
+ UIinfo={"groupes":("Matrices/vecteurs",)},
+ regles=(AU_MOINS_UN('MODE_MECA','DEPL_IMPO','MODELE_GENE'),
+ AU_MOINS_UN('MATR_MASS_AJOU','MATR_AMOR_AJOU','MATR_RIGI_AJOU'),
+ EXCLUS('MODE_MECA','DEPL_IMPO','MODELE_GENE'),
+ EXCLUS('MONO_APPUI','MODE_STAT',),
+ ),
+ MAILLAGE =SIMP(statut='o',typ=maillage_sdaster),
+ GROUP_MA_FLUIDE =SIMP(statut='o',typ=grma),
+ GROUP_MA_INTERF =SIMP(statut='o',typ=grma),
+ MODELISATION =SIMP(statut='o',typ='TXM',into=("PLAN","AXIS","3D")),
+ FLUIDE =FACT(statut='o',max='**',
+ RHO =SIMP(statut='o',typ='R'),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",)),
+ GROUP_MA =SIMP(statut='f',typ=grma),
+ MAILLE =SIMP(statut='f',typ=ma),
+ ),
+ DDL_IMPO =FACT(statut='o',max='**',
+ regles=(UN_PARMI('NOEUD','GROUP_NO'),
+ UN_PARMI('PRES_FLUIDE','PRES_SORTIE'),),
+ NOEUD =SIMP(statut='f',typ=no),
+ GROUP_NO =SIMP(statut='f',typ=grno),
+ PRES_FLUIDE =SIMP(statut='f',typ='R'),
+ PRES_SORTIE =SIMP(statut='f',typ='R'),
+ ),
+ ECOULEMENT =FACT(statut='f',
+ GROUP_MA_1 =SIMP(statut='o',typ=grma),
+ GROUP_MA_2 =SIMP(statut='o',typ=grma),
+ VNOR_1 =SIMP(statut='o',typ='R'),
+ VNOR_2 =SIMP(statut='f',typ='R'),
+ POTENTIEL =SIMP(statut='f',typ=evol_ther),
+ ),
+ MODE_MECA =SIMP(statut='f',typ=mode_meca),
+ DEPL_IMPO =SIMP(statut='f',typ=cham_no_depl_r),
+ MODELE_GENE =SIMP(statut='f',typ=modele_gene),
+ NUME_DDL_GENE =SIMP(statut='f',typ=nume_ddl_gene),
+ DIST_REFE =SIMP(statut='f',typ='R',defaut= 1.0E-2),
+ MATR_MASS_AJOU =SIMP(statut='f',typ=(CO,matr_asse)),
+ MATR_RIGI_AJOU =SIMP(statut='f',typ=(CO,matr_asse)),
+ MATR_AMOR_AJOU =SIMP(statut='f',typ=(CO,matr_asse)),
+ MONO_APPUI =SIMP(statut='f',typ='TXM',into=("OUI",),),
+ MODE_STAT =SIMP(statut='f',typ=(mode_stat_depl,mode_stat_acce,mode_stat_forc,),),
+ FORC_AJOU =FACT(statut='f',max='**',
+ DIRECTION =SIMP(statut='o',typ='R',max=3),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ VECTEUR =SIMP(statut='o',typ=(CO,vect_asse_gene)),
+ ),
+ SOLVEUR =FACT(statut='d',
+ METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC") ),
+ b_mult_front =BLOC(condition = "METHODE == 'MULT_FRONT' ",fr="Paramètres de la méthode multi frontale",
+ RENUM =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ),
+ ),
+ b_ldlt =BLOC(condition = "METHODE == 'LDLT' ",fr="Paramètres de la méthode LDLT",
+ RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("RCMK","SANS") ),
+ ),
+ b_ldlt_mult =BLOC(condition = "METHODE == 'LDLT' or METHODE == 'MULT_FRONT' ",
+ fr="Paramètres relatifs à la non iversibilité de la matrice à factorise",
+ NPREC =SIMP(statut='f',typ='I',defaut= 8 ),
+ STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+ ),
+ b_gcpc =BLOC(condition = "METHODE == 'GCPC' ", fr="Paramètres de la méthode du gradient conjugué",
+ PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC",),defaut="LDLT_INC" ),
+ NIVE_REMPLISSAGE=SIMP(statut='f',typ='I',defaut= 0 ),
+ RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ),
+ RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ),
+ NMAX_ITER =SIMP(statut='f',typ='I',defaut= 0 ),
+ ),
+ ),
+ INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
+ NOEUD_DOUBLE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
+ AVEC_MODE_STAT =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")),
+)
+#& MODIF COMMANDE DATE 01/02/2005 AUTEUR VABHHTS J.PELLET
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+
+from Macro.macro_matr_asse_ops import macro_matr_asse_ops
+
+def macro_matr_asse_prod(self,NUME_DDL,MATR_ASSE,**args):
+ if not MATR_ASSE: raise AsException("Impossible de typer les concepts resultats")
+ if not NUME_DDL: raise AsException("Impossible de typer les concepts resultats")
+ self.type_sdprod(NUME_DDL,nume_ddl_sdaster)
+ for m in MATR_ASSE:
+ opti=m['OPTION']
+
+ if opti in ( "RIGI_MECA","RIGI_FLUI_STRU","RIGI_MECA_LAGR" ,
+ "MASS_MECA" , "MASS_FLUI_STRU" ,"RIGI_GEOM" ,"RIGI_ROTA",
+ "AMOR_MECA","IMPE_MECA","MASS_ID_MDEP_R","MASS_ID_MDNS_R",
+ "ONDE_FLUI","MASS_MECA_DIAG" ) : t=matr_asse_depl_r
+
+ if opti in ( "RIGI_ACOU","MASS_ACOU","AMOR_ACOU",) : t=matr_asse_pres_c
+
+ if opti in ( "RIGI_THER","MASS_THER","RIGI_THER_CONV" ,
+ "RIGI_THER_CONV_D","MASS_ID_MTEM_R","MASS_ID_MTNS_R",) : t=matr_asse_temp_r
+
+ if opti == "RIGI_MECA_HYST" : t= matr_asse_depl_c
+
+ self.type_sdprod(m['MATRICE'],t)
+ return None
+
+MACRO_MATR_ASSE=MACRO(nom="MACRO_MATR_ASSE",op=macro_matr_asse_ops,
+ UIinfo={"groupes":("Matrices/vecteurs",)},
+ sd_prod=macro_matr_asse_prod,
+ fr="Calcul des matrices assemblées (matr_asse_gd) par exemple de rigidité, de masse ",
+ MODELE =SIMP(statut='o',typ=modele_sdaster),
+ CHAM_MATER =SIMP(statut='f',typ=cham_mater),
+ INST =SIMP(statut='f',typ='R',defaut=0.),
+ CARA_ELEM =SIMP(statut='f',typ=cara_elem),
+ CHARGE =SIMP(statut='f',typ=(char_meca,char_ther,char_acou),validators=NoRepeat(),max='**'),
+ NUME_DDL =SIMP(statut='o',typ=(nume_ddl_sdaster,CO)),
+ SOLVEUR =FACT(statut='d',
+ METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",
+ into=("LDLT","MULT_FRONT","GCPC")),
+ RENUM =SIMP(statut='f',typ='TXM',into=("SANS","RCMK","MD","MDA","METIS")),
+ ),
+
+ MATR_ASSE =FACT(statut='o',max='**',
+ MATRICE =SIMP(statut='o',typ=(matr_asse,CO)),
+ OPTION =SIMP(statut='o',typ='TXM',
+ into=("RIGI_MECA","MASS_MECA","MASS_MECA_DIAG",
+ "AMOR_MECA","RIGI_MECA_HYST","IMPE_MECA",
+ "ONDE_FLUI","RIGI_FLUI_STRU","MASS_FLUI_STRU",
+ "RIGI_ROTA","RIGI_GEOM","RIGI_MECA_LAGR",
+ "RIGI_THER","MASS_THER",
+ "RIGI_ACOU","MASS_ACOU","AMOR_ACOU",
+ "MASS_ID_MTEM_R","MASS_ID_MTNS_R","MASS_ID_MDEP_R","MASS_ID_MDNS_R",)
+ ),
+
+ b_rigi_meca = BLOC( condition = "OPTION=='RIGI_MECA'",
+ MODE_FOURIER =SIMP(statut='f',typ='I',defaut= 0),
+ ),
+
+ b_rigi_geom = BLOC( condition = "OPTION=='RIGI_GEOM'",
+ SIEF_ELGA =SIMP(statut='o',typ=cham_elem_sief_r),
+ MODE_FOURIER =SIMP(statut='f',typ='I',defaut= 0),
+ ),
+
+ b_rigi_meca_lagr = BLOC( condition = "OPTION=='RIGI_MECA_LAGR'",
+ THETA =SIMP(statut='o',typ=theta_geom),
+ PROPAGATION =SIMP(statut='f',typ='R'),
+ ),
+
+ b_rigi_ther = BLOC( condition = "OPTION=='RIGI_THER'",
+ MODE_FOURIER =SIMP(statut='f',typ='I',defaut= 0),
+ ),
+
+ ), # fin MATR_ASSE
+
+ TITRE =SIMP(statut='f',typ='TXM',max='**'),
+ INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
+) ;
+#& MODIF COMMANDE DATE 03/11/2004 AUTEUR ACBHHCD G.DEVESA
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+
+from Macro.macro_miss_3d_ops import macro_miss_3d_ops
+
+MACRO_MISS_3D=MACRO(nom="MACRO_MISS_3D",op=macro_miss_3d_ops,fr=" ",
+ UIinfo={"groupes":("Matrices/vecteurs",)},
+ OPTION =FACT(statut='o',
+ regles=(UN_PARMI('TOUT','MODULE'),),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",)),
+ MODULE =SIMP(statut='f',typ='TXM',into=("PRE_MISS","MISS_EVOL","MISS_IMPE")),
+ ),
+ PROJET =SIMP(statut='o',typ='TXM'),
+ REPERTOIRE =SIMP(statut='f',typ='TXM'),
+ VERSION =SIMP(statut='f',typ='TXM',into=("V1_2","V1_3",),defaut="V1_2"),
+ UNITE_IMPR_ASTER=SIMP(statut='f',typ='I',defaut=25),
+ UNITE_OPTI_MISS =SIMP(statut='f',typ='I',defaut=26),
+ UNITE_MODELE_SOL=SIMP(statut='f',typ='I',defaut=27),
+ UNITE_RESU_IMPE =SIMP(statut='f',typ='I',defaut=30),
+) ;
+#& MODIF COMMANDE DATE 28/02/2005 AUTEUR DURAND C.DURAND
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+
+from Macro.macro_mode_meca_ops import macro_mode_meca_ops
+
+MACRO_MODE_MECA=MACRO(nom="MACRO_MODE_MECA",op=macro_mode_meca_ops,sd_prod=mode_meca,
+ reentrant='n',
+ UIinfo={"groupes":("Résolution",)},
+ MATR_A =SIMP(statut='o',typ=matr_asse_depl_r ),
+ MATR_B =SIMP(statut='o',typ=matr_asse_depl_r ),
+ INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ),
+# ce mot cle ne devrait il pas etre dans calc_freq
+ METHODE =SIMP(statut='f',typ='TXM',defaut="SORENSEN",
+ into=("TRI_DIAG","JACOBI","SORENSEN",) ),
+ b_tri_diag =BLOC(condition = "METHODE == 'TRI_DIAG'",
+ PREC_ORTHO =SIMP(statut='f',typ='R',defaut= 1.E-12,val_min=0.E+0 ),
+ NMAX_ITER_ORTHO =SIMP(statut='f',typ='I',defaut= 5,val_min=0 ),
+ PREC_LANCZOS =SIMP(statut='f',typ='R',defaut= 1.E-8,val_min=0.E+0 ),
+ NMAX_ITER_QR =SIMP(statut='f',typ='I',defaut= 30,val_min=0 ),
+ ),
+ b_jacobi =BLOC(condition = "METHODE == 'JACOBI'",
+ PREC_BATHE =SIMP(statut='f',typ='R',defaut= 1.E-10,val_min=0.E+0 ),
+ NMAX_ITER_BATHE =SIMP(statut='f',typ='I',defaut= 40,val_min=0 ),
+ PREC_JACOBI =SIMP(statut='f',typ='R',defaut= 1.E-2,val_min=0.E+0 ),
+ NMAX_ITER_JACOBI=SIMP(statut='f',typ='I',defaut= 12,val_min=0 ),
+ ),
+ b_sorensen =BLOC(condition = "METHODE == 'SORENSEN'",
+ PREC_SOREN =SIMP(statut='f',typ='R',defaut= 0.E+0,val_min=0.E+0 ),
+ NMAX_ITER_SOREN =SIMP(statut='f',typ='I',defaut= 20,val_min=0 ),
+ PARA_ORTHO_SOREN=SIMP(statut='f',typ='R',defaut= 0.717,val_min=0.E+0 ),
+ ),
+ OPTION =SIMP(statut='f',typ='TXM',defaut="SANS",
+ into=("MODE_RIGIDE","SANS") ),
+ CALC_FREQ =FACT(statut='d',min=0,
+ regles=(UN_PARMI('FREQ','FREQ_MAX'),
+ PRESENT_PRESENT('FREQ_MIN','FREQ_MAX'),
+ PRESENT_PRESENT('FREQ_MAX','NB_BLOC_FREQ'),
+ EXCLUS('DIM_SOUS_ESPACE','COEF_DIM_ESPACE'),),
+ FREQ =SIMP(statut='f',typ='R',min=2,validators=NoRepeat(),max='**',val_min=0.E+0 ),
+ FREQ_MIN =SIMP(statut='f',typ='R' ),
+ FREQ_MAX =SIMP(statut='f',typ='R' ),
+ NB_BLOC_FREQ =SIMP(statut='f',typ='I' ),
+ DIM_SOUS_ESPACE =SIMP(statut='f',typ='I' ),
+ COEF_DIM_ESPACE =SIMP(statut='f',typ='I' ),
+ NPREC_SOLVEUR =SIMP(statut='f',typ='I',defaut= 8 ),
+ NMAX_ITER_SHIFT =SIMP(statut='f',typ='I',defaut= 5 ),
+ PREC_SHIFT =SIMP(statut='f',typ='R',defaut= 5.E-2 ),
+ SEUIL_FREQ =SIMP(statut='f',typ='R' ,defaut= 1.E-2 ),
+ STOP_FREQ_VIDE =SIMP(statut='f',typ='TXM',defaut="NON" ,into=("OUI","NON") ),
+ ),
+ VERI_MODE =FACT(statut='d',min=0,
+ STOP_ERREUR =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+ SEUIL =SIMP(statut='f',typ='R',defaut= 1.E-6 ),
+ PREC_SHIFT =SIMP(statut='f',typ='R',defaut= 5.E-3 ),
+ STURM =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+ ),
+ NORM_MODE =FACT(statut='o',max='**',
+ MASS_INER =SIMP(statut='o',typ=tabl_mass_iner ),
+ NORME =SIMP(statut='f',typ='TXM',defaut="TRAN_ROTA",
+ into=("MASS_GENE","RIGI_GENE","EUCL",
+ "EUCL_TRAN","TRAN","TRAN_ROTA") ),
+ INFO =SIMP(statut='f',typ='I',defaut= 1 ,into=(1,2) ),
+ ),
+ FILTRE_MODE =FACT(statut='f',
+ CRIT_EXTR =SIMP(statut='f',typ='TXM',defaut="MASS_EFFE_UN",
+ into=("MASS_EFFE_UN","MASS_GENE") ),
+ SEUIL =SIMP(statut='f',typ='R',defaut= 1.E-3 ),
+ ),
+ IMPRESSION =FACT(statut='d',
+ TOUT_PARA =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+ CUMUL =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+ CRIT_EXTR =SIMP(statut='f',typ='TXM',defaut="MASS_EFFE_UN",
+ into=("MASS_EFFE_UN","MASS_GENE",) ),
+ ),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+
+from Macro.macro_proj_base_ops import macro_proj_base_ops
+
+def macro_proj_base_prod(self,MATR_ASSE_GENE,VECT_ASSE_GENE,PROFIL,**args ):
+ if MATR_ASSE_GENE != None:
+ for m in MATR_ASSE_GENE:
+ self.type_sdprod(m['MATRICE'],matr_asse_gene_r)
+ self.type_sdprod(m['MATR_ASSE'],matr_asse_depl_r)
+ if VECT_ASSE_GENE != None:
+ for v in VECT_ASSE_GENE:
+ self.type_sdprod(v['VECTEUR'],vect_asse_gene)
+ return None
+
+MACRO_PROJ_BASE=MACRO(nom="MACRO_PROJ_BASE",op=macro_proj_base_ops,
+ UIinfo={"groupes":("Matrices/vecteurs",)},
+ sd_prod=macro_proj_base_prod,
+ fr="Projection des matrices et/ou vecteurs assemblés sur une base de vecteurs",
+ BASE =SIMP(statut='o',typ=(mode_meca,mode_stat,base_modale,mode_gene) ),
+ NB_VECT =SIMP(statut='f',typ='I',defaut= 9999),
+ PROFIL =SIMP(statut='f',typ='TXM',defaut="DIAG",into=("PLEIN","DIAG") ),
+ MATR_ASSE_GENE =FACT(statut='f',max='**',
+ MATRICE =SIMP(statut='o',typ=(CO,matr_asse)),
+ MATR_ASSE =SIMP(statut='f',typ=matr_asse_depl_r),
+ MATR_ASSE_GENE =SIMP(statut='f',typ=matr_asse_gene_r),
+ ),
+ VECT_ASSE_GENE =FACT(statut='f',max='**',
+ VECTEUR =SIMP(statut='o',typ=(CO,vect_asse)),
+ TYPE_VECT =SIMP(statut='f',typ='TXM',defaut="FORC"),
+ VECT_ASSE =SIMP(statut='f',typ=cham_no_depl_r),
+ VECT_ASSE_GENE =SIMP(statut='f',typ=vect_asse_gene),
+ ),
+ INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+MAJ_CATA=PROC(nom="MAJ_CATA",op=20,
+ UIinfo={"groupes":("Gestion du travail",)},
+ fr="Compilation des catalogues de commandes et d éléments",
+
+ ELEMENT =FACT(statut='f',),
+
+) ;
+#& MODIF COMMANDE DATE 10/02/2005 AUTEUR LEBOUVIE F.LEBOUVIER
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE VABHHTS J.PELLET
+MECA_STATIQUE=OPER(nom="MECA_STATIQUE",op=46,sd_prod=evol_elas,
+ fr="Analyse mécanique statique linéaire",reentrant='f',
+ UIinfo={"groupes":("Résolution",)},
+ regles=(EXCLUS("INST","LIST_INST"),
+ AU_MOINS_UN('CHAM_MATER','CARA_ELEM',), ),
+ MODELE =SIMP(statut='o',typ=modele_sdaster),
+ CHAM_MATER =SIMP(statut='f',typ=cham_mater,
+ fr="le CHAM_MATER est nécessaire, sauf si le modèle ne contient que des éléments discrets (modélisations DIS_XXX)",
+ ang="CHAM_MATER is compulsory, except if the model contains only discret elements (modelizations DIS_XXX)"),
+ CARA_ELEM =SIMP(statut='f',typ=cara_elem,
+ fr="le CARA_ELEM est nécessaire dès que le modèle contient des éléments de structure : coques, poutres, ...",
+ ang="CARA_ELEM is compulsory as soon as the model contains structural elements : plates, beams, ..."),
+ TITRE =SIMP(statut='f',typ='TXM',max='**'),
+ EXCIT =FACT(statut='o',max='**',
+ CHARGE =SIMP(statut='o',typ=(char_meca,char_cine_meca)),
+ FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ TYPE_CHARGE =SIMP(statut='f',typ='TXM',defaut="FIXE",into=("FIXE",) ),
+ ),
+ INST =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ LIST_INST =SIMP(statut='f',typ=listr8_sdaster),
+ INST_FIN =SIMP(statut='f',typ='R'),
+ OPTION =SIMP(statut='f',typ='TXM',into=("SIEF_ELGA_DEPL","SANS"),defaut="SIEF_ELGA_DEPL",max=1,
+ fr="seule option : contraintes aux points de Gauss. Utiliser CALC_ELEM pour les autres.",
+ ),
+ SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**',
+ fr="Liste des paramètres de sensibilité.",
+ ang="List of sensitivity parameters"),
+ SOLVEUR =FACT(statut='d',
+ METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC","FETI") ),
+ b_feti =BLOC(condition = "METHODE == 'FETI' ",fr="Paramètres de la méthode FETI 1",
+ PARTITION =SIMP(statut='o',typ=sd_feti_sdaster),
+ RENUM =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ),
+ RESI_RELA =SIMP(statut='f',typ='R',defaut=1.E-6,val_min=0.),
+ NMAX_ITER =SIMP(statut='f',typ='I',defaut=0,val_min=0),
+ TYPE_REORTHO_DD =SIMP(statut='f',typ='TXM',defaut="GSM",into=("SANS","GS","GSM","IGSM") ),
+ NB_REORTHO_DD =SIMP(statut='f',typ='I',defaut=0,val_min=0),
+ PRE_COND =SIMP(statut='f',typ='TXM',defaut="LUMPE",into=("LUMPE","SANS") ),
+ SCALING =SIMP(statut='f',typ='TXM',defaut="MULT",into=("SANS","MULT") ),
+ VERIF_SDFETI =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+ TEST_CONTINU =SIMP(statut='f',typ='R',defaut=1.E-8,val_min=0.),
+ INFO_FETI =SIMP(statut='f',typ='TXM',defaut='FFFFFFFF')
+ ),
+ b_mult_front =BLOC(condition = "METHODE == 'MULT_FRONT' ",fr="Paramètres de la méthode multi frontale",
+ RENUM =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ),
+ ),
+ b_ldlt =BLOC(condition = "METHODE == 'LDLT' ",fr="Paramètres de la méthode LDLT",
+ RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("RCMK","SANS") ),
+ ),
+ b_ldlt_mult =BLOC(condition = "METHODE == 'LDLT' or METHODE == 'MULT_FRONT' or METHODE == 'FETI' ",
+ fr="Paramètres relatifs à la non inversibilité de la matrice à factorise",
+ NPREC =SIMP(statut='f',typ='I',defaut=8),
+ STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+ ),
+ b_gcpc =BLOC(condition = "METHODE == 'GCPC' ", fr="Paramètres de la méthode du gradient conjugué",
+ PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC",),defaut="LDLT_INC" ),
+ NIVE_REMPLISSAGE=SIMP(statut='f',typ='I',defaut= 0 ),
+ RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ),
+ RESI_RELA =SIMP(statut='f',typ='R',defaut=1.E-6),
+ NMAX_ITER =SIMP(statut='f',typ='I',defaut= 0 ),
+ ),
+ ),
+ INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE GNICOLAS G.NICOLAS
+MEMO_NOM_SENSI=PROC(nom="MEMO_NOM_SENSI",op=129,
+ UIinfo={"groupes":("Fonction",)},
+ fr="Mémorisation des noms des concepts dérivés.",
+ ang="Memorisation of the names of the sensitive concepts.",
+
+ regles=(AU_MOINS_UN('NOM','NOM_ZERO','NOM_UN'),),
+
+ NOM=FACT(statut='f',max='**',
+ regles=(PRESENT_PRESENT('MOT_CLE','VALEUR','MOT_FACT' ),),
+
+ NOM_SD=SIMP(statut='o',typ='TXM',
+ fr="Nom de la structure de base",
+ ang="Name of the basic structure"),
+
+ PARA_SENSI=SIMP(statut='o',typ=(para_sensi,theta_geom),
+ fr="Nom du paramètre sensible",
+ ang="Name of the sensitive parameter"),
+
+ NOM_COMPOSE=SIMP(statut='f',typ='TXM',defaut=" ",
+ fr="Nom de la structure composée",
+ ang="Name of the built structure"),
+
+ MOT_FACT=SIMP(statut='f',typ='TXM',max='**',
+ fr="Liste des mots clés facteurs concernés par la dérivation",
+ ang="Factor keyword list involved in derivation"),
+
+ MOT_CLE=SIMP(statut='f',typ='TXM',max='**',
+ fr="Liste des mots clés concernés par la dérivation",
+ ang="Keyword list involved in derivation"),
+
+ VALEUR=SIMP(statut='f',typ='TXM',max='**',
+ fr="Liste des objets concernés par la dérivation",
+ ang="Object list involved in derivation"),
+
+ ),
+
+ NOM_ZERO=SIMP(statut='f',typ=fonction_sdaster,
+ fr="Nom de la fonction nulle",
+ ang="Name of the zero fonction"),
+
+ NOM_UN =SIMP(statut='f',typ=fonction_sdaster,
+ fr="Nom de la fonction unité",
+ ang="Name of the one fonction"),
+
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+MODE_ITER_CYCL=OPER(nom="MODE_ITER_CYCL",op= 80,sd_prod=mode_cycl,
+ fr="Modes propres d une structure à répétitivité cyclique à partir d une base de modes propres réels",
+ reentrant='n',
+ UIinfo={"groupes":("Résolution",)},
+ BASE_MODALE =SIMP(statut='o',typ=base_modale ),
+ NB_MODE =SIMP(statut='f',typ='I',defaut= 999 ),
+ NB_SECTEUR =SIMP(statut='o',typ='I' ),
+ LIAISON =FACT(statut='o',
+ DROITE =SIMP(statut='o',typ='TXM' ),
+ GAUCHE =SIMP(statut='o',typ='TXM' ),
+ AXE =SIMP(statut='f',typ='TXM' ),
+ ),
+ VERI_CYCL =FACT(statut='f',
+ PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ),
+ CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF",) ),
+ DIST_REFE =SIMP(statut='f',typ='R' ),
+ ),
+ CALCUL =FACT(statut='o',
+ TOUT_DIAM =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ NB_DIAM =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
+ OPTION =SIMP(statut='f',typ='TXM',defaut="PLUS_PETITE"
+ ,into=("PLUS_PETITE","CENTRE","BANDE") ),
+ b_centre =BLOC(condition = "OPTION == 'CENTRE'",
+ FREQ =SIMP(statut='o',typ='R',),
+ ),
+ b_bande =BLOC(condition = "OPTION == 'BANDE'",
+ FREQ =SIMP(statut='o',typ='R',min=2,validators=NoRepeat(),max=2),
+ ),
+# NMAX_FREQ n a-t-il pas un sens qu avec OPTION CENTRE
+ NMAX_FREQ =SIMP(statut='f',typ='I',defaut= 10 ),
+ PREC_SEPARE =SIMP(statut='f',typ='R',defaut= 100. ),
+ PREC_AJUSTE =SIMP(statut='f',typ='R',defaut= 1.E-6 ),
+ NMAX_ITER =SIMP(statut='f',typ='I',defaut= 50 ),
+ ),
+ INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
+) ;
+#& MODIF COMMANDE DATE 20/10/2004 AUTEUR DURAND C.DURAND
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+def mode_iter_inv_prod(MATR_A,MATR_C,TYPE_RESU,**args ):
+ if TYPE_RESU == "MODE_FLAMB" : return mode_flamb
+ if AsType(MATR_C) == matr_asse_depl_r : return mode_meca_c
+ if AsType(MATR_A) == matr_asse_depl_r : return mode_meca
+ if AsType(MATR_A) == matr_asse_pres_r : return mode_acou
+ if AsType(MATR_A) == matr_asse_gene_r : return mode_gene
+ raise AsException("type de concept resultat non prevu")
+
+MODE_ITER_INV=OPER(nom="MODE_ITER_INV",op= 44,sd_prod=mode_iter_inv_prod
+ ,fr="Modes propres par itérations inverses ; valeurs propres et modes réels ou complexes",
+ reentrant='n',
+ UIinfo={"groupes":("Résolution",)},
+ MATR_A =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_gene_r,matr_asse_pres_r ) ),
+ MATR_B =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_gene_r,matr_asse_pres_r ) ),
+ MATR_C =SIMP(statut='f',typ=matr_asse_depl_r ),
+ TYPE_RESU =SIMP(statut='f',typ='TXM',defaut="DYNAMIQUE",
+ into=("MODE_FLAMB","DYNAMIQUE"),fr="Type d analyse" ),
+ b_dynam =BLOC(condition = "TYPE_RESU == 'DYNAMIQUE'",
+ CALC_FREQ =FACT(statut='o',fr="Choix des paramètres pour le calcul des valeurs propres",
+
+ OPTION =SIMP(statut='f',typ='TXM',defaut="AJUSTE",into=("SEPARE","AJUSTE","PROCHE"),
+ fr="Choix de l option pour estimer les valeurs propres" ),
+ FREQ =SIMP(statut='o',typ='R',max='**'),
+ AMOR_REDUIT =SIMP(statut='f',typ='R',max='**'),
+ NMAX_FREQ =SIMP(statut='f',typ='I',defaut= 0,val_min=0 ),
+ NMAX_ITER_SEPARE=SIMP(statut='f',typ='I' ,defaut= 30,val_min=0 ),
+ PREC_SEPARE =SIMP(statut='f',typ='R',defaut= 1.E-4,val_min=0.E+0 ),
+ NMAX_ITER_AJUSTE=SIMP(statut='f',typ='I',defaut= 15,val_min=0 ),
+ PREC_AJUSTE =SIMP(statut='f',typ='R',defaut= 1.E-4,val_min=0.E+0 ),
+
+ NPREC_SOLVEUR =SIMP(statut='f',typ='I',defaut= 8,val_min=0 ),
+ NMAX_ITER_SHIFT =SIMP(statut='f',typ='I',defaut= 5,val_min=0 ),
+ PREC_SHIFT =SIMP(statut='f',typ='R',defaut= 5.E-2,val_min=0.E+0, ),
+ SEUIL_FREQ =SIMP(statut='f',typ='R',defaut= 1.E-2,val_min=0.E+0, ),
+ ),
+ ),
+ b_flamb =BLOC(condition = "TYPE_RESU == 'MODE_FLAMB'",
+ CALC_FREQ =FACT(statut='o',fr="Choix des paramètres pour le calcul des valeurs propres",
+
+ OPTION =SIMP(statut='f',typ='TXM',defaut="AJUSTE",into=("SEPARE","AJUSTE","PROCHE"),
+ fr="Choix de l option pour estimer les valeurs propres" ),
+ CHAR_CRIT =SIMP(statut='o',typ='R',validators=NoRepeat(),max='**' ),
+ NMAX_FREQ =SIMP(statut='f',typ='I',defaut= 0,val_min=0 ),
+ NMAX_ITER_SEPARE=SIMP(statut='f',typ='I' ,defaut= 30,val_min=0 ),
+ PREC_SEPARE =SIMP(statut='f',typ='R',defaut= 1.E-4,val_min=0.E+0, ),
+ NMAX_ITER_AJUSTE=SIMP(statut='f',typ='I',defaut= 15 ),
+ PREC_AJUSTE =SIMP(statut='f',typ='R',defaut= 1.E-4,val_min=0.E+0, ),
+
+ NPREC_SOLVEUR =SIMP(statut='f',typ='I',defaut= 8,val_min=0 ),
+ NMAX_ITER_SHIFT =SIMP(statut='f',typ='I',defaut= 5,val_min=0 ),
+ PREC_SHIFT =SIMP(statut='f',typ='R',defaut= 5.E-2,val_min=0.E+0, ),
+ SEUIL_FREQ =SIMP(statut='f',typ='R',defaut= 1.E-2,val_min=0.E+0, ),
+ ),
+ ),
+ CALC_MODE =FACT(statut='d',min=0,fr="Choix des paramètres pour le calcul des vecteurs propres",
+ OPTION =SIMP(statut='f',typ='TXM',defaut="DIRECT",into=("DIRECT","RAYLEIGH") ),
+ PREC =SIMP(statut='f',typ='R',defaut= 1.E-5,val_min=0.E+0,fr="Précision de convergence" ),
+ NMAX_ITER =SIMP(statut='f',typ='I',defaut= 30,val_min=0 ),
+ ),
+ VERI_MODE =FACT(statut='d',min=0,
+ STOP_ERREUR =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+ SEUIL =SIMP(statut='f',typ='R',defaut= 1.E-2,val_min=0.E+0,
+ fr="Valeur limite admise pour l ereur a posteriori des modes" ),
+ ),
+ SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**',
+ fr="Liste des param\350tres de sensibilit\351.",
+ ang="List of sensitivity parameters",
+ ),
+ b_sensibilite =BLOC(condition = "SENSIBILITE != None",
+ CHAM_MATER =SIMP(statut='f',typ=cham_mater ),
+ CARA_ELEM =SIMP(statut='f',typ=cara_elem ),
+ EXCIT =FACT(statut='f',max='**',), # que pour NMDOME
+ ),
+ INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
+ TITRE =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'),
+) ;
+#& MODIF COMMANDE DATE 20/10/2004 AUTEUR DURAND C.DURAND
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+def mode_iter_simult_prod(MATR_A,MATR_C,TYPE_RESU,**args ):
+ if TYPE_RESU == "MODE_FLAMB" : return mode_flamb
+ if AsType(MATR_C) == matr_asse_depl_r : return mode_meca_c
+ if AsType(MATR_A) == matr_asse_depl_r : return mode_meca
+ if AsType(MATR_A) == matr_asse_depl_c : return mode_meca_c
+ if AsType(MATR_A) == matr_asse_pres_r : return mode_acou
+ if AsType(MATR_A) == matr_asse_gene_r : return mode_gene
+ raise AsException("type de concept resultat non prevu")
+
+MODE_ITER_SIMULT=OPER(nom="MODE_ITER_SIMULT",op= 45,sd_prod=mode_iter_simult_prod,
+ fr="Modes propres par itérations simultanées ; valeurs propres et modes propres réels ou complexes",
+ reentrant='n',
+ UIinfo={"groupes":("Résolution",)},
+ MATR_A =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_depl_c,matr_asse_gene_r,matr_asse_pres_r ) ),
+ MATR_B =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_gene_r,matr_asse_pres_r ) ),
+ MATR_C =SIMP(statut='f',typ=(matr_asse_depl_r,matr_asse_gene_r) ),
+ METHODE =SIMP(statut='f',typ='TXM',defaut="SORENSEN",
+ into=("TRI_DIAG","JACOBI","SORENSEN") ),
+ b_tri_diag =BLOC(condition = "METHODE == 'TRI_DIAG'",
+ PREC_ORTHO =SIMP(statut='f',typ='R',defaut= 1.E-12,val_min=0.E+0 ),
+ NMAX_ITER_ORTHO =SIMP(statut='f',typ='I',defaut= 5,val_min=0 ),
+ PREC_LANCZOS =SIMP(statut='f',typ='R',defaut= 1.E-8,val_min=0.E+0 ),
+ NMAX_ITER_QR =SIMP(statut='f',typ='I',defaut= 30,val_min=0 ),
+ ),
+ b_jacobi =BLOC(condition = "METHODE == 'JACOBI'",
+ PREC_BATHE =SIMP(statut='f',typ='R',defaut= 1.E-10,val_min=0.E+0 ),
+ NMAX_ITER_BATHE =SIMP(statut='f',typ='I',defaut= 40,val_min=0 ),
+ PREC_JACOBI =SIMP(statut='f',typ='R',defaut= 1.E-2,val_min=0.E+0 ),
+ NMAX_ITER_JACOBI=SIMP(statut='f',typ='I',defaut= 12,val_min=0 ),
+ ),
+ b_sorensen =BLOC(condition = "METHODE == 'SORENSEN'",
+ PREC_SOREN =SIMP(statut='f',typ='R',defaut= 0.E+0,val_min=0.E+0 ),
+ NMAX_ITER_SOREN =SIMP(statut='f',typ='I',defaut= 20,val_min=0 ),
+ PARA_ORTHO_SOREN=SIMP(statut='f',typ='R',defaut= 0.717,val_min=0.E+0 ),
+ ),
+ TYPE_RESU =SIMP(statut='f',position='global',typ='TXM',defaut="DYNAMIQUE",
+ into=("MODE_FLAMB","DYNAMIQUE"),
+ fr="Type d analyse" ),
+ OPTION =SIMP(statut='f',typ='TXM',defaut="SANS",into=("MODE_RIGIDE","SANS"),
+ fr="Calcul des modes de corps rigide, uniquement pour la méthode TRI_DIAG" ),
+
+ b_flamb =BLOC(condition = "TYPE_RESU == 'MODE_FLAMB'",
+ CALC_FREQ =FACT(statut='d',min=0,
+ OPTION =SIMP(statut='f',typ='TXM',defaut="PLUS_PETITE",into=("PLUS_PETITE","BANDE","CENTRE"),
+ fr="Choix de l option et par conséquent du shift du problème modal" ),
+ b_plus_petite =BLOC(condition = "OPTION == 'PLUS_PETITE'",fr="Recherche des plus petites valeurs propres",
+ NMAX_FREQ =SIMP(statut='f',typ='I',defaut= 10,val_min=0 ),
+ ),
+ b_centre =BLOC(condition = "OPTION == 'CENTRE'",
+ fr="Recherche des valeurs propres les plus proches d une valeur donnée",
+ CHAR_CRIT =SIMP(statut='o',typ='R',
+ fr="Charge critique autour de laquelle on cherche les charges critiques propres"),
+ NMAX_FREQ =SIMP(statut='f',typ='I',defaut= 10,val_min=0 ),
+ ),
+ b_bande =BLOC(condition = "(OPTION == 'BANDE')",
+ fr="Recherche des valeurs propres dans une bande donnée",
+ CHAR_CRIT =SIMP(statut='o',typ='R',min=2,validators=NoRepeat(),max=2,
+ fr="Valeur des deux charges critiques délimitant la bande de recherche"),
+ ),
+ APPROCHE =SIMP(statut='f',typ='TXM',defaut="REEL",into=("REEL","IMAG"),
+ fr="Choix du pseudo-produit scalaire pour la résolution du problème quadratique" ),
+ regles=(EXCLUS('DIM_SOUS_ESPACE','COEF_DIM_ESPACE'),),
+ DIM_SOUS_ESPACE =SIMP(statut='f',typ='I' ),
+ COEF_DIM_ESPACE =SIMP(statut='f',typ='I' ),
+ NPREC_SOLVEUR =SIMP(statut='f',typ='I',defaut= 8,val_min=0 ),
+ NMAX_ITER_SHIFT =SIMP(statut='f',typ='I',defaut= 5,val_min=0 ),
+ PREC_SHIFT =SIMP(statut='f',typ='R',defaut= 5.E-2,val_min=0.E+0 ),
+ SEUIL_FREQ =SIMP(statut='f',typ='R',defaut= 1.E-2,val_min=0.E+0 ),
+ ),
+ ),
+
+ b_dynam =BLOC(condition = "TYPE_RESU == 'DYNAMIQUE'",
+ CALC_FREQ =FACT(statut='d',min=0,
+ OPTION =SIMP(statut='f',typ='TXM',defaut="PLUS_PETITE",into=("PLUS_PETITE","BANDE","CENTRE"),
+ fr="Choix de l option et par conséquent du shift du problème modal" ),
+ b_plus_petite =BLOC(condition = "OPTION == 'PLUS_PETITE'",fr="Recherche des plus petites valeurs propres",
+ NMAX_FREQ =SIMP(statut='f',typ='I',defaut= 10,val_min=0 ),
+ ),
+ b_centre =BLOC(condition = "OPTION == 'CENTRE'",
+ fr="Recherche des valeurs propres les plus proches d une valeur donnée",
+ FREQ =SIMP(statut='o',typ='R',
+ fr="Fréquence autour de laquelle on cherche les fréquences propres"),
+ AMOR_REDUIT =SIMP(statut='f',typ='R',),
+ NMAX_FREQ =SIMP(statut='f',typ='I',defaut= 10,val_min=0 ),
+ ),
+ b_bande =BLOC(condition = "(OPTION == 'BANDE')",
+ fr="Recherche des valeurs propres dans une bande donnée",
+ FREQ =SIMP(statut='o',typ='R',min=2,validators=NoRepeat(),max=2,
+ fr="Valeur des deux fréquences délimitant la bande de recherche"),
+ ),
+ APPROCHE =SIMP(statut='f',typ='TXM',defaut="REEL",into=("REEL","IMAG","COMPLEXE"),
+ fr="Choix du pseudo-produit scalaire pour la résolution du problème quadratique" ),
+ regles=(EXCLUS('DIM_SOUS_ESPACE','COEF_DIM_ESPACE'),),
+ DIM_SOUS_ESPACE =SIMP(statut='f',typ='I' ),
+ COEF_DIM_ESPACE =SIMP(statut='f',typ='I' ),
+ NPREC_SOLVEUR =SIMP(statut='f',typ='I',defaut= 8,val_min=0 ),
+ NMAX_ITER_SHIFT =SIMP(statut='f',typ='I',defaut= 5,val_min=0 ),
+ PREC_SHIFT =SIMP(statut='f',typ='R',defaut= 5.E-2,val_min=0.E+0 ),
+ SEUIL_FREQ =SIMP(statut='f',typ='R',defaut= 1.E-2,val_min=0.E+0 ),
+ ),
+ ),
+
+ VERI_MODE =FACT(statut='d',min=0,
+ STOP_ERREUR =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+ PREC_SHIFT =SIMP(statut='f',typ='R',defaut= 5.E-3,val_min=0.E+0 ),
+ SEUIL =SIMP(statut='f',typ='R',defaut= 1.E-6,val_min=0.E+0,
+ fr="Valeur limite admise pour l ereur a posteriori des modes" ),
+ STURM =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+ ),
+ SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**',
+ fr="Liste des param\350tres de sensibilit\351.",
+ ang="List of sensitivity parameters",
+ ),
+ b_sensibilite =BLOC(condition = "SENSIBILITE != None",
+ CHAM_MATER =SIMP(statut='f',typ=cham_mater ),
+ CARA_ELEM =SIMP(statut='f',typ=cara_elem ),
+ EXCIT =FACT(statut='f',max='**',), # que pour NMDOME
+ ),
+ STOP_FREQ_VIDE =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+ INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
+ TITRE =SIMP(statut='f',typ='TXM',max='**'),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+def mode_stat_prod(MODE_STAT,FORCE_NODALE,PSEUDO_MODE,**args):
+ if (MODE_STAT != None) : return mode_stat_depl
+ if (PSEUDO_MODE !=None) : return mode_stat_acce
+ if (FORCE_NODALE != None) : return mode_stat_forc
+ raise AsException("type de concept resultat non prevu")
+MODE_STATIQUE=OPER(nom="MODE_STATIQUE",op= 93,sd_prod=mode_stat_prod,
+ fr="Calcul de modes statiques",
+ reentrant='n',
+ UIinfo={"groupes":("Résolution",)},
+ MATR_RIGI =SIMP(statut='o',typ=matr_asse_depl_r ),
+ MATR_MASS =SIMP(statut='f',typ=matr_asse_depl_r ),
+ regles=(UN_PARMI('MODE_STAT','FORCE_NODALE','PSEUDO_MODE'),),
+ MODE_STAT =FACT(statut='f',max='**',
+ regles=(UN_PARMI('TOUT','NOEUD','GROUP_NO'),
+ UN_PARMI('TOUT_CMP','AVEC_CMP','SANS_CMP'),),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ,),
+ NOEUD =SIMP(statut='f',typ=no ,max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno ,max='**'),
+ TOUT_CMP =SIMP(statut='f',typ='TXM',into=("OUI",) ,),
+ AVEC_CMP =SIMP(statut='f',typ='TXM',max='**'),
+ SANS_CMP =SIMP(statut='f',typ='TXM',max='**'),
+ ),
+ FORCE_NODALE =FACT(statut='f',max='**',
+ regles=(UN_PARMI('TOUT','NOEUD','GROUP_NO'),
+ UN_PARMI('TOUT_CMP','AVEC_CMP','SANS_CMP'),),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",), ),
+ NOEUD =SIMP(statut='f',typ=no ,max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno ,max='**'),
+ TOUT_CMP =SIMP(statut='f',typ='TXM',into=("OUI",), ),
+ AVEC_CMP =SIMP(statut='f',typ='TXM',max='**'),
+ SANS_CMP =SIMP(statut='f',typ='TXM',max='**'),
+ ),
+ PSEUDO_MODE =FACT(statut='f',max='**',
+ regles=(UN_PARMI('AXE','DIRECTION','TOUT','NOEUD','GROUP_NO' ),),
+ AXE =SIMP(statut='f',typ='TXM',into=("X","Y","Z"),max=3),
+ DIRECTION =SIMP(statut='f',typ='R',min=3,max=3),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",)),
+ NOEUD =SIMP(statut='f',typ=no ,max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno ,max='**'),
+ b_dir =BLOC(condition = "DIRECTION != None",
+ NOM_DIR =SIMP(statut='f',typ='TXM' ),),
+ b_cmp =BLOC(condition="TOUT!= None or NOEUD!=None or GROUP_NO!=None",
+ regles=(UN_PARMI('TOUT_CMP','AVEC_CMP','SANS_CMP'),),
+ TOUT_CMP =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ AVEC_CMP =SIMP(statut='f',typ='TXM',max='**'),
+ SANS_CMP =SIMP(statut='f',typ='TXM',max='**'),
+ ),
+ ),
+ TITRE =SIMP(statut='f',typ='TXM',max='**'),
+ INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2 ,) ),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+MODI_BASE_MODALE=OPER(nom="MODI_BASE_MODALE",op= 149,sd_prod=mode_meca,
+ reentrant='f',
+ UIinfo={"groupes":("Matrices/vecteurs",)},
+# la commande modi_base _modale : reentrant = f ou o
+ regles=(EXCLUS('AMOR_UNIF','AMOR_REDUIT', ),),
+ BASE =SIMP(statut='o',typ=mode_meca ),
+ BASE_ELAS_FLUI =SIMP(statut='o',typ=melasflu_sdaster ),
+ NUME_VITE_FLUI =SIMP(statut='o',typ='I' ),
+ NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
+ AMOR_REDUIT =SIMP(statut='f',typ='R',max='**'),
+ AMOR_UNIF =SIMP(statut='f',typ='R' ),
+ INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ),
+ TITRE =SIMP(statut='f',typ='TXM',max='**'),
+) ;
+#& MODIF COMMANDE DATE 14/09/2004 AUTEUR MCOURTOI M.COURTOIS
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE G8BHHXD X.DESROCHES
+MODI_MAILLAGE=OPER(nom="MODI_MAILLAGE",op= 154,sd_prod=maillage_sdaster,
+ fr="Modification de la connectivité de groupes de mailles 2D ou 3D affectées à la modélisation de contact",
+ reentrant='o',
+ UIinfo={"groupes":("Maillage",)},
+ regles=(AU_MOINS_UN('ORIE_FISSURE','DEFORME','EQUE_PIQUA','ORIE_PEAU_2D',
+ 'ORIE_PEAU_3D','ORIE_NORM_COQUE','PLAQ_TUBE','MODI_MAILLE',
+ 'TRANSLATION','ROTATION','MODI_BASE','ECHELLE','ORIE_SHB8','SYMETRIE',
+ ),
+ PRESENT_ABSENT('ORIE_FISSURE','DEFORME','EQUE_PIQUA','ORIE_PEAU_2D',
+ 'ORIE_PEAU_3D','ORIE_NORM_COQUE','PLAQ_TUBE','MODI_MAILLE',),
+ PRESENT_ABSENT('DEFORME','ORIE_FISSURE','EQUE_PIQUA','ORIE_PEAU_2D',
+ 'ORIE_PEAU_3D','ORIE_NORM_COQUE','PLAQ_TUBE','MODI_MAILLE',),
+ PRESENT_ABSENT('EQUE_PIQUA','ORIE_FISSURE','DEFORME','ORIE_PEAU_2D',
+ 'ORIE_PEAU_3D','ORIE_NORM_COQUE','PLAQ_TUBE','MODI_MAILLE',),
+ PRESENT_ABSENT('ORIE_PEAU_2D','ORIE_FISSURE','DEFORME','EQUE_PIQUA',
+ 'ORIE_PEAU_3D','ORIE_NORM_COQUE','PLAQ_TUBE','MODI_MAILLE',),
+ PRESENT_ABSENT('ORIE_PEAU_3D','ORIE_FISSURE','DEFORME','EQUE_PIQUA','ORIE_PEAU_2D',
+ 'PLAQ_TUBE','MODI_MAILLE',),
+ PRESENT_ABSENT('ORIE_NORM_COQUE','ORIE_FISSURE','DEFORME','EQUE_PIQUA','ORIE_PEAU_2D',
+ 'PLAQ_TUBE','MODI_MAILLE',),
+ PRESENT_ABSENT('PLAQ_TUBE','ORIE_FISSURE','DEFORME','EQUE_PIQUA','ORIE_PEAU_2D',
+ 'ORIE_PEAU_3D','ORIE_NORM_COQUE','MODI_MAILLE',),
+ PRESENT_ABSENT('MODI_MAILLE','ORIE_FISSURE','DEFORME','EQUE_PIQUA','ORIE_PEAU_2D',
+ 'ORIE_PEAU_3D','ORIE_NORM_COQUE','PLAQ_TUBE',),
+ EXCLUS('EQUE_PIQUA','PLAQ_TUBE'),
+ EXCLUS('EQUE_PIQUA','TUBE_COUDE'),
+ EXCLUS('ROTATION','MODI_BASE'),
+ EXCLUS('SYMETRIE','ROTATION'),
+ EXCLUS('SYMETRIE','TRANSLATION'),
+ EXCLUS('SYMETRIE','MODI_BASE'),
+ EXCLUS('SYMETRIE','ECHELLE'),
+ ),
+ MAILLAGE =SIMP(statut='o',typ=maillage_sdaster ),
+
+ ORIE_FISSURE =FACT(statut='f',
+ GROUP_MA =SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**'),
+ ),
+
+ DEFORME =FACT(statut='f',
+ OPTION =SIMP(statut='o',typ='TXM',into=("TRAN","TRAN_APPUI") ),
+ DEPL =SIMP(statut='o',typ=cham_no_depl_r ),
+ b_deform =BLOC(condition = "OPTION=='TRAN_APPUI'",
+ GROUP_NO_APPUI = SIMP(statut='o',typ=grno,validators=NoRepeat(),max='**' ),
+ GROUP_NO_STRU = SIMP(statut='o',typ=grno,validators=NoRepeat(),max='**' ),),
+ ),
+
+ EQUE_PIQUA =FACT(statut='f',
+ GROUP_NO =SIMP(statut='o',typ=grno),
+ E_BASE =SIMP(statut='o',typ='R' ),
+ DEXT_BASE =SIMP(statut='o',typ='R' ),
+ L_BASE =SIMP(statut='o',typ='R' ),
+ L_CHANF =SIMP(statut='o',typ='R' ),
+ TYPE =SIMP(statut='o',typ='TXM',into=("TYPE_1","TYPE_2")),
+ H_SOUD =SIMP(statut='o',typ='R' ),
+ ANGL_SOUD =SIMP(statut='o',typ='R' ),
+ JEU_SOUD =SIMP(statut='o',typ='R' ),
+ E_CORP =SIMP(statut='o',typ='R' ),
+ DEXT_CORP =SIMP(statut='o',typ='R' ),
+ AZIMUT =SIMP(statut='o',typ='R' ),
+ RAFF_MAIL =SIMP(statut='o',typ='TXM' ),
+ X_MAX =SIMP(statut='o',typ='R' ),
+ ),
+ ORIE_PEAU_2D =FACT(statut='f',max='**',
+ GROUP_MA =SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**'),
+ ),
+ ORIE_PEAU_3D =FACT(statut='f',max='**',
+ GROUP_MA =SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**'),
+ ),
+ ORIE_SHB8 =FACT(statut='f',max=1,
+ GROUP_MA =SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**'),
+ ),
+ ORIE_NORM_COQUE =FACT(statut='f',max='**',
+ regles=(EXCLUS('NOEUD','GROUP_NO'),
+ PRESENT_PRESENT('NOEUD','VECT_NORM'),
+ PRESENT_PRESENT('GROUP_NO','VECT_NORM'),),
+ GROUP_MA =SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**'),
+ VECT_NORM =SIMP(statut='f',typ='R',max=3),
+ NOEUD =SIMP(statut='f',typ=no),
+ GROUP_NO =SIMP(statut='f',typ=grno),
+ ),
+ b_modele =BLOC(condition = "(ORIE_PEAU_2D != None) or (ORIE_PEAU_3D != None) or(ORIE_NORM_COQUE != None)",
+ MODELE =SIMP(statut='o',typ=modele_sdaster ),
+ ),
+ PLAQ_TUBE =FACT(statut='f',
+ DEXT =SIMP(statut='o',typ='R' ),
+ EPAIS =SIMP(statut='o',typ='R' ),
+ L_TUBE_P1 =SIMP(statut='o',typ='R' ),
+ AZIMUT =SIMP(statut='f',typ='R',defaut= 90. ),
+ COUTURE =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON",) ),
+ ),
+ TUBE_COUDE =FACT(statut='f',
+ ANGLE =SIMP(statut='o',typ='R' ),
+ R_CINTR =SIMP(statut='o',typ='R' ),
+ L_TUBE_P1 =SIMP(statut='o',typ='R' ),
+ ),
+ MODI_MAILLE =FACT(statut='f',max=1,
+ regles=(AU_MOINS_UN('GROUP_MA_FOND','MAILLE_FOND','GROUP_NO_FOND','NOEUD_FOND'),),
+ OPTION =SIMP(statut='o',typ='TXM',into=("NOEUD_QUART",) ),
+ GROUP_MA_FOND =SIMP(statut='f',typ=grma,validators=NoRepeat(),max=1),
+ MAILLE_FOND =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max=1),
+ GROUP_NO_FOND =SIMP(statut='f',typ=grno,validators=NoRepeat(),max=1),
+ NOEUD_FOND =SIMP(statut='f',typ=no ,validators=NoRepeat(),max=1),
+ ),
+ MODI_BASE =FACT(statut='f',
+ VECT_X =SIMP(statut='o',typ='R',min=2,max=3),
+ VECT_Y =SIMP(statut='f',typ='R',min=2,max=3),
+ ),
+ ECHELLE =SIMP(statut='f',typ='R',),
+ TRANSLATION =SIMP(statut='f',typ='R',min=2,max=3),
+ ROTATION =FACT(statut='f',max='**',
+ POIN_1 =SIMP(statut='o',typ='R',min=2,max=3),
+ ANGL =SIMP(statut='o',typ='R',defaut= 0.E+0 ),
+ regles=(EXCLUS('DIR','POIN_2'),),
+ POIN_2 =SIMP(statut='f',typ='R',min=2,max=3),
+ DIR =SIMP(statut='f',typ='R',min=2,max=3),
+ ),
+ SYMETRIE =FACT(statut='f',max='**',
+ fr = "Symétrie du maillage par rapport à un plan en 3D ou à une droite en 2D.",
+ POINT =SIMP(statut='o',typ='R',min=2,max=3,
+ fr="Point appartenant à la droite ou au plan."),
+ AXE_1 =SIMP(statut='o',typ='R',min=2,max=3,
+ fr="Vecteur directeur de la droite ou 1er vecteur appartenant au plan."),
+ AXE_2 =SIMP(statut='f',typ='R',min=3,max=3,
+ fr="2nd vecteur appartenant du plan."),
+ ),
+ INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
+) ;
+#& MODIF COMMANDE DATE 05/07/2004 AUTEUR GENIAUT S.GENIAUT
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+
+MODI_MODELE_XFEM=OPER(nom="MODI_MODELE_XFEM",op= 113,sd_prod=modele_sdaster,docu="U4.44.12-e",reentrant='f',
+ UIinfo={"groupes":("Modélisation",)},
+ fr="Engendrer ou enrichir une structure de donnees en affectant les cham_gd associes",
+
+ MODELE_IN =SIMP(statut='o',typ=modele_sdaster,min=01,max=01,),
+ FISSURE =SIMP(statut='o',typ=fiss_xfem,min=01,max=01,),
+ INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2,)),
+
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+MODI_OBSTACLE=OPER(nom="MODI_OBSTACLE",op=182,sd_prod=obstacle_sdaster,
+ fr=" ",reentrant='f',
+ UIinfo={"groupes":("Modélisation",)},
+ regles=(PRESENT_ABSENT('R_MOBILE','CRAYON'),
+ PRESENT_PRESENT('V_USUR_TUBE','V_USUR_OBST'),),
+ V_USUR_TUBE =SIMP(statut='f',typ='R',max='**'),
+ V_USUR_OBST =SIMP(statut='f',typ='R',max='**'),
+ TABL_USURE =SIMP(statut='f',typ=tabl_post_usur),
+ INST =SIMP(statut='f',typ='R'),
+ OBSTACLE =SIMP(statut='f',typ=obstacle_sdaster),
+ GUIDE =SIMP(statut='o',typ=obstacle_sdaster),
+ CRAYON =SIMP(statut='f',typ=obstacle_sdaster),
+ R_MOBILE =SIMP(statut='f',typ='R'),
+ PERCEMENT =SIMP(statut='f',typ='R',defaut=1),
+ INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
+) ;
+#& MODIF COMMANDE DATE 29/09/2005 AUTEUR CIBHHLV L.VIVAN
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE JMBHH01 J.M.PROIX
+def modi_repere_prod(RESULTAT,**args):
+ if AsType(RESULTAT) == evol_elas : return evol_elas
+ if AsType(RESULTAT) == evol_noli : return evol_noli
+ if AsType(RESULTAT) == evol_ther : return evol_ther
+ if AsType(RESULTAT) == dyna_trans : return dyna_trans
+ if AsType(RESULTAT) == dyna_harmo : return dyna_harmo
+ if AsType(RESULTAT) == mode_meca : return mode_meca
+ if AsType(RESULTAT) == mode_flamb : return mode_flamb
+ if AsType(RESULTAT) == mult_elas : return mult_elas
+ if AsType(RESULTAT) == base_modale : return base_modale
+ raise AsException("type de concept resultat non prevu")
+
+MODI_REPERE=OPER(nom="MODI_REPERE",op=191,sd_prod=modi_repere_prod,reentrant='n',
+ UIinfo={"groupes":("Résultats et champs",)},
+ fr="Impression des resultats dans un repere cylindrique",
+ RESULTAT =SIMP(statut='o',typ=(evol_elas,dyna_trans,dyna_harmo,mode_meca,
+ evol_noli,mult_elas,
+ evol_ther,base_modale,mode_flamb) ),
+ regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','FREQ','NUME_MODE',
+ 'NOEUD_CMP','LIST_INST','LIST_FREQ','NOM_CAS'),),
+ TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
+ NUME_MODE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
+ NOEUD_CMP =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'),
+ NOM_CAS =SIMP(statut='f',typ='TXM' ),
+
+ INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
+ FREQ =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
+ LIST_INST =SIMP(statut='f',typ=listr8_sdaster),
+ LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster),
+
+ PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3 ),
+ CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),),
+
+ MODI_CHAM =FACT(statut='o',max='**',
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ TYPE_CHAM =SIMP(statut='o',typ='TXM',
+ into=("VECT_2D","VECT_3D","TORS_3D","TENS_2D","TENS_3D"),),
+ NOM_CHAM =SIMP(statut='o',typ='TXM',into=C_NOM_CHAM_INTO()),
+ b_vect_2d =BLOC(condition = "TYPE_CHAM=='VECT_2D'",
+ NOM_CMP =SIMP(statut='o',typ='TXM',min=2,max=2 ),),
+ b_vect_3d =BLOC(condition = "TYPE_CHAM=='VECT_3D'",
+ NOM_CMP =SIMP(statut='o',typ='TXM',min=3,max=3 ),),
+ b_tors_3d =BLOC(condition = "TYPE_CHAM=='TORS_3D'",
+ NOM_CMP =SIMP(statut='o',typ='TXM',min=6,max=6 ),),
+ b_tens_2d =BLOC(condition = "TYPE_CHAM=='TENS_2D'",
+ NOM_CMP =SIMP(statut='o',typ='TXM',min=4,max=4 ),),
+ b_tens_3d =BLOC(condition = "TYPE_CHAM=='TENS_3D'",
+ NOM_CMP =SIMP(statut='o',typ='TXM',min=6,max=6 ),),
+ ),
+ DEFI_REPERE =FACT(statut='o',
+ regles=(UN_PARMI('ANGL_NAUT','ORIGINE'),),
+ REPERE =SIMP(statut='f',typ='TXM',defaut="UTILISATEUR",
+ into=("UTILISATEUR","CYLINDRIQUE"),),
+ ANGL_NAUT =SIMP(statut='f',typ='R',max=3),
+ ORIGINE =SIMP(statut='f',typ='R',min=2,max=3),
+ AXE_Z =SIMP(statut='f',typ='R',min=3,max=3),
+ ),
+ TITRE =SIMP(statut='f',typ='TXM',max='**'),
+ INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
+) ;
+#& MODIF COMMANDE DATE 11/08/2004 AUTEUR A3BHHAE H.ANDRIAMBOLOLONA
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+def norm_mode_prod(MODE,**args ):
+ if AsType(MODE) == mode_meca : return mode_meca
+ if AsType(MODE) == mode_meca_c : return mode_meca_c
+ if AsType(MODE) == mode_flamb : return mode_flamb
+ raise AsException("type de concept resultat non prevu")
+
+NORM_MODE=OPER(nom="NORM_MODE",op= 37,sd_prod=norm_mode_prod,
+ fr="Normalisation de modes propres",
+ reentrant='f',
+ UIinfo={"groupes":("Résolution",)},
+ regles=(UN_PARMI('NORME','NOEUD','AVEC_CMP','SANS_CMP'),),
+ MODE =SIMP(statut='o',typ=(mode_meca,mode_flamb) ),
+ NORME =SIMP(statut='f',typ='TXM',fr="Norme prédéfinie : masse généralisée, euclidienne,...",
+ into=("MASS_GENE","RIGI_GENE","EUCL","EUCL_TRAN","TRAN","TRAN_ROTA") ),
+ NOEUD =SIMP(statut='f',typ=no, fr="Composante donnée d un noeud spécifié égale à 1"),
+ b_noeud =BLOC(condition = "NOEUD != None",
+ NOM_CMP =SIMP(statut='o',typ='TXM' ),
+ ),
+ AVEC_CMP =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'),
+ SANS_CMP =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'),
+ MASS_INER =SIMP(statut='f',typ=tabl_mass_iner ),
+ MODE_SIGNE =FACT(statut='f',fr="Imposer un signe sur une des composantes des modes",
+ NOEUD =SIMP(statut='o',typ=no,fr="Noeud ou sera imposé le signe"),
+ NOM_CMP =SIMP(statut='o',typ='TXM',fr="Composante du noeud ou sera imposé le signe" ),
+ SIGNE =SIMP(statut='f',typ='TXM',defaut="POSITIF",into=("NEGATIF","POSITIF"),
+ fr="Choix du signe" ),
+ ),
+ SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**',
+ fr="Liste des param\350tres de sensibilit\351.",
+ ang="List of sensitivity parameters",
+ ),
+ TITRE =SIMP(statut='f',typ='TXM',max='**'),
+ INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE VABHHTS J.PELLET
+NUME_DDL=OPER(nom="NUME_DDL",op=11,sd_prod=nume_ddl_sdaster,reentrant='n',
+ UIinfo={"groupes":("Matrices/vecteurs",)},
+ fr="Etablissement de la numérotation des ddl avec ou sans renumérotation et du stockage de la matrice",
+ regles=(UN_PARMI('MATR_RIGI','MODELE'),),
+ MATR_RIGI =SIMP(statut='f',validators=NoRepeat(),max=100,
+ typ=(matr_elem_depl_r ,matr_elem_depl_c,matr_elem_temp_r ,matr_elem_pres_c) ),
+ MODELE =SIMP(statut='f',typ=modele_sdaster ),
+ b_modele =BLOC(condition = "MODELE != None",
+ CHARGE =SIMP(statut='f',validators=NoRepeat(),max='**',typ=(char_meca,char_ther,char_acou, ),),
+ ),
+ METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC") ),
+ b_mult_front =BLOC(condition="METHODE=='MULT_FRONT'",fr="paramètres associés à la méthode multifrontale",
+ RENUM =SIMP(statut='f',typ='TXM',into=("MD","MDA","METIS"),defaut="METIS" ),
+ ),
+ b_ldlt =BLOC(condition="METHODE=='LDLT'",fr="paramètres associés à la méthode LDLT",
+ RENUM =SIMP(statut='f',typ='TXM',into=("RCMK","SANS"),defaut="RCMK" ),
+ ),
+ b_gcpc =BLOC(condition="METHODE=='GCPC'",fr="paramètres associés à la méthode gradient conjugué",
+ RENUM =SIMP(statut='f',typ='TXM',into=("RCMK","SANS"),defaut="RCMK" ),
+ ),
+ INFO =SIMP(statut='f',typ='I',into=(1,2)),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+NUME_DDL_GENE=OPER(nom="NUME_DDL_GENE",op= 127,sd_prod=nume_ddl_gene,
+ fr="Etablissement de la numérotation des ddl d un modèle établi en coordonnées généralisées",
+ reentrant='n',
+ UIinfo={"groupes":("Matrices/vecteurs",)},
+ regles=UN_PARMI('MODELE_GENE','BASE'),
+ MODELE_GENE =SIMP(statut='f',typ=modele_gene ),
+ b_modele_gene =BLOC(condition = "MODELE_GENE != None",
+ STOCKAGE =SIMP(statut='f',typ='TXM',defaut="LIGN_CIEL",into=("LIGN_CIEL","PLEIN") ),
+ ),
+ BASE =SIMP(statut='f',typ=(mode_meca,mode_stat,base_modale,mode_gene ) ),
+ b_base =BLOC(condition = "BASE != None",
+ STOCKAGE =SIMP(statut='f',typ='TXM',defaut="DIAG",into=("DIAG","PLEIN") ),
+ NB_VECT =SIMP(statut='f',typ='I',defaut= 9999 ),
+ ),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+POST_DYNA_ALEA=OPER(nom="POST_DYNA_ALEA",op= 132,sd_prod=tabl_post_alea,
+ fr="Traitements statistiques de résultats de type interspectre et impression sur fichiers",
+ reentrant='n',
+ UIinfo={"groupes":("Post traitements",)},
+ regles=(UN_PARMI('NOEUD_I','NUME_ORDRE_I','OPTION'),),
+ INTE_SPEC =SIMP(statut='o',typ=tabl_intsp ),
+ NUME_VITE_FLUI =SIMP(statut='f',typ='I' ),
+ TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ NUME_ORDRE_I =SIMP(statut='f',typ='I',max='**' ),
+ NOEUD_I =SIMP(statut='f',typ=no,max='**'),
+ OPTION =SIMP(statut='f',typ='TXM',into=("DIAG",) ),
+ b_nume_ordre_i =BLOC(condition = "NUME_ORDRE_I != None",
+ NUME_ORDRE_J =SIMP(statut='o',typ='I',max='**' ),
+ ),
+ b_noeud_i =BLOC(condition = "NOEUD_I != None",
+ NOEUD_J =SIMP(statut='o',typ=no,max='**'),
+ NOM_CMP_I =SIMP(statut='o',typ='TXM',max='**' ),
+ NOM_CMP_J =SIMP(statut='o',typ='TXM',max='**' ),
+ ),
+ DEPASSEMENT =FACT(statut='f',max='**',
+ fr="Loi de dépassement d un seuil pendant une durée donnée",
+ regles=(ENSEMBLE('VALE_MIN','VALE_MAX'),),
+ VALE_MIN =SIMP(statut='f',typ='R' ),
+ VALE_MAX =SIMP(statut='f',typ='R' ),
+ PAS =SIMP(statut='f',typ='R' ),
+ DUREE =SIMP(statut='f',typ='R',defaut= 1. ),
+ ),
+ RAYLEIGH =FACT(statut='f',max='**',
+ fr="Densité de probabilité de pic positif, loi adaptée à des signaux à bande étroite",
+ regles=(ENSEMBLE('VALE_MIN','VALE_MAX'),),
+ VALE_MIN =SIMP(statut='f',typ='R' ),
+ VALE_MAX =SIMP(statut='f',typ='R' ),
+ PAS =SIMP(statut='f',typ='R' ),
+ ),
+ GAUSS =FACT(statut='f',max='**',
+ fr="Densité de probabilité de pic positif, loi normale adaptée à des signaux large bande",
+ regles=(ENSEMBLE('VALE_MIN','VALE_MAX'),),
+ VALE_MIN =SIMP(statut='f',typ='R' ),
+ VALE_MAX =SIMP(statut='f',typ='R' ),
+ PAS =SIMP(statut='f',typ='R' ),
+ ),
+ VANMARCKE =FACT(statut='f',max='**',
+ fr="Probabilité de non dépassement de seuil pendant une durée donnée (analyse sismique)",
+ regles=(ENSEMBLE('VALE_MIN','VALE_MAX'),),
+ VALE_MIN =SIMP(statut='f',typ='R' ),
+ VALE_MAX =SIMP(statut='f',typ='R' ),
+ PAS =SIMP(statut='f',typ='R' ),
+ DUREE =SIMP(statut='f',typ='R',defaut= 10. ),
+ ),
+ MOMENT =SIMP(statut='f',typ='I',max='**',fr="Moments spectraux en complément des cinq premiers" ),
+ TITRE =SIMP(statut='f',typ='TXM',max='**' ),
+ INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+POST_DYNA_MODA_T=OPER(nom="POST_DYNA_MODA_T",op= 130,sd_prod=tabl_post_dyna,
+ fr="Post-traitements en coordonnées généralisées issus de DYNA_TRAN_MODAL",
+ reentrant='n',
+ UIinfo={"groupes":("Post traitements",)},
+ regles=(UN_PARMI('CHOC','RELA_EFFO_DEPL', ),),
+ RESU_GENE =SIMP(statut='o',typ=tran_gene ),
+ CHOC =FACT(statut='f',max='**',
+ fr="Analyse des non linéarités de choc",
+ INST_INIT =SIMP(statut='f',typ='R',defaut= -1. ),
+ INST_FIN =SIMP(statut='f',typ='R',defaut= 999. ),
+ NB_BLOC =SIMP(statut='f',typ='I',defaut= 1 ),
+ SEUIL_FORCE =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ DUREE_REPOS =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ OPTION =SIMP(statut='f',typ='TXM',defaut="USURE",into=("IMPACT","USURE") ),
+ NB_CLASSE =SIMP(statut='f',typ='I',defaut= 10 ),
+ ),
+ RELA_EFFO_DEPL =FACT(statut='f',
+ fr="Analyse des relationsnon linéaires effort-déplacement",
+ NOEUD =SIMP(statut='o',typ=no),
+ NOM_CMP =SIMP(statut='o',typ='TXM' ),
+ ),
+ INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ),
+ TITRE =SIMP(statut='f',typ='TXM',max='**' ),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE G8BHHXD X.DESROCHES
+def post_elem_prod( MASS_INER,ENER_POT,ENER_CIN,TRAV_EXT,WEIBULL,
+ CARA_GEOM,CARA_POUTRE,RICE_TRACEY,CHAR_LIMITE,
+ INDIC_ENER,INDIC_SEUIL,ENER_ELAS,ENER_TOTALE,
+ AIRE_INTERNE,**args ):
+ if MASS_INER != None : return tabl_mass_iner
+ if ENER_POT != None : return tabl_ener_pot
+ if ENER_CIN != None : return tabl_ener_cin
+ if TRAV_EXT != None : return tabl_trav_ext
+ if WEIBULL != None : return tabl_weibull
+ if CARA_GEOM != None : return tabl_cara_geom
+ if CARA_POUTRE != None : return tabl_cara_geom
+ if RICE_TRACEY != None : return tabl_rice_tracey
+ if CHAR_LIMITE != None : return tabl_char_limite
+ if INDIC_ENER != None : return tabl_indic_ener
+ if INDIC_SEUIL != None : return tabl_indic_seuil
+ if ENER_ELAS != None : return tabl_ener_elas
+ if ENER_TOTALE != None : return tabl_ener_totale
+ if AIRE_INTERNE != None : return tabl_aire_int
+ raise AsException("type de concept resultat_sdaster non prevu")
+
+POST_ELEM=OPER(nom="POST_ELEM",op=107,sd_prod=post_elem_prod,reentrant='f',
+ UIinfo={"groupes":("Post traitements",)},
+ fr="Calcul de quantités globales (masse, inerties, énergie, ...) sur tout ou partie du modèle",
+
+ regles=(UN_PARMI('MASS_INER', 'ENER_POT', 'ENER_CIN','TRAV_EXT',
+ 'WEIBULL', 'RICE_TRACEY', 'CARA_GEOM','CHAR_LIMITE',
+ 'CARA_POUTRE', 'INDIC_ENER', 'INDIC_SEUIL',
+ 'AIRE_INTERNE','ENER_ELAS','ENER_TOTALE'),
+ ),
+
+ MASS_INER = FACT(statut='f',max='**',
+ regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),),
+ TOUT = SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ ORIG_INER = SIMP(statut='f',typ='R',min=3,max=3 ),
+ ),
+ b_mass_iner = BLOC(condition = "( MASS_INER != None )",
+ fr="calcul de la masse, les inerties et le centre de gravité",
+ regles=(EXCLUS('CHAM_GD','RESULTAT'),
+ EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','FREQ','NUME_MODE',
+ 'NOEUD_CMP','LIST_ORDRE','LIST_INST','LIST_FREQ','NOM_CAS'),),
+ MODELE = SIMP(statut='f',typ=modele_sdaster),
+ CHAM_MATER = SIMP(statut='f',typ=cham_mater),
+ CARA_ELEM = SIMP(statut='f',typ=cara_elem),
+ CHARGE = SIMP(statut='f',typ=(char_meca,char_ther,char_acou),validators=NoRepeat(),max='**' ),
+ NUME_COUCHE = SIMP(statut='f',typ='I',defaut=1),
+ NIVE_COUCHE = SIMP(statut='f',typ='TXM',defaut="MOY",into=("INF","SUP","MOY"),),
+ MODE_FOURIER = SIMP(statut='f',typ='I',defaut=0),
+ GEOMETRIE = SIMP(statut='f',typ='TXM',defaut="INITIALE",into=("INITIALE","DEFORMEE")),
+ CHAM_GD = SIMP(statut='f',typ=(cham_no_depl_r,cham_no_temp_r,cham_elem_ener_r) ),
+ RESULTAT = SIMP(statut='f',typ=(mode_meca,evol_elas,evol_noli,mult_elas,
+ fourier_elas,dyna_trans) ),
+ PRECISION = SIMP(statut='f',typ='R',defaut= 1.0E-3),
+ CRITERE = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")),
+ TOUT_ORDRE = SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ NUME_ORDRE = SIMP(statut='f',typ='I',),
+ LIST_ORDRE = SIMP(statut='f',typ=listis_sdaster),
+ INST = SIMP(statut='f',typ='R',),
+ LIST_INST = SIMP(statut='f',typ=listr8_sdaster),
+ FREQ = SIMP(statut='f',typ='R',),
+ LIST_FREQ = SIMP(statut='f',typ=listr8_sdaster),
+ NUME_MODE = SIMP(statut='f',typ='I',),
+ NOEUD_CMP = SIMP(statut='f',typ='TXM',min=2,validators=NoRepeat(),max=2),
+ NOM_CAS = SIMP(statut='f',typ='TXM',),
+ ),
+
+ ENER_POT = FACT(statut='f',max='**',
+ regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),),
+ TOUT = SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ ),
+ b_ener_pot = BLOC(condition = "( ENER_POT != None )",
+ fr="calcul de l'énergie potentielle de déformation",
+ regles=(UN_PARMI('CHAM_GD','RESULTAT'),
+ EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','FREQ','NUME_MODE',
+ 'NOEUD_CMP','LIST_ORDRE','LIST_INST','LIST_FREQ','NOM_CAS'),),
+ MODELE = SIMP(statut='f',typ=modele_sdaster),
+ CHAM_MATER = SIMP(statut='f',typ=cham_mater),
+ CARA_ELEM = SIMP(statut='f',typ=cara_elem),
+ CHARGE = SIMP(statut='f',typ=(char_meca,char_ther,char_acou),validators=NoRepeat(),max='**' ),
+ NUME_COUCHE = SIMP(statut='f',typ='I',defaut=1),
+ NIVE_COUCHE = SIMP(statut='f',typ='TXM',defaut="MOY",into=("INF","SUP","MOY"),),
+ ANGLE = SIMP(statut='f',typ='I',defaut=0),
+ MODE_FOURIER = SIMP(statut='f',typ='I',defaut=0),
+ CHAM_GD = SIMP(statut='f',typ=(cham_no_depl_r,cham_no_temp_r,cham_elem_ener_r) ),
+ RESULTAT = SIMP(statut='f',typ=(mode_meca,evol_elas,evol_ther,evol_noli,dyna_trans,mult_elas) ),
+ PRECISION = SIMP(statut='f',typ='R',defaut= 1.0E-3),
+ CRITERE = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")),
+ TOUT_ORDRE = SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ NUME_ORDRE = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
+ LIST_ORDRE = SIMP(statut='f',typ=listis_sdaster),
+ INST = SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
+ LIST_INST = SIMP(statut='f',typ=listr8_sdaster),
+ FREQ = SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
+ LIST_FREQ = SIMP(statut='f',typ=listr8_sdaster),
+ NUME_MODE = SIMP(statut='f',typ='I' ,validators=NoRepeat(),max='**'),
+ NOEUD_CMP = SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'),
+ NOM_CAS = SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'),
+ ),
+
+ ENER_CIN = FACT(statut='f',max='**',
+ regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),),
+ OPTION = SIMP(statut='f',typ='TXM',
+ into=("MASS_MECA","MASS_MECA_DIAG"),
+ defaut="MASS_MECA" ),
+ TOUT = SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ ),
+ b_ener_cin = BLOC(condition = "( ENER_CIN != None )",
+ fr="calcul de l'énergie cinétique",
+ regles=(UN_PARMI('CHAM_GD','RESULTAT'),
+ EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','FREQ','NUME_MODE',
+ 'NOEUD_CMP','LIST_ORDRE','LIST_INST','LIST_FREQ','NOM_CAS'),),
+ MODELE = SIMP(statut='f',typ=modele_sdaster),
+ CHAM_MATER = SIMP(statut='f',typ=cham_mater),
+ CARA_ELEM = SIMP(statut='f',typ=cara_elem),
+ CHARGE = SIMP(statut='f',typ=(char_meca,char_ther,char_acou),validators=NoRepeat(),max='**' ),
+ NUME_COUCHE = SIMP(statut='f',typ='I',defaut=1),
+ NIVE_COUCHE = SIMP(statut='f',typ='TXM',defaut="MOY",into=("INF","SUP","MOY"),),
+ ANGLE = SIMP(statut='f',typ='I',defaut=0),
+ MODE_FOURIER = SIMP(statut='f',typ='I',defaut=0),
+ CHAM_GD = SIMP(statut='f',typ=(cham_no_depl_r,cham_no_temp_r,cham_elem_ener_r) ),
+ RESULTAT = SIMP(statut='f',typ=(mode_meca,evol_elas,evol_ther,evol_noli,dyna_trans) ),
+ PRECISION = SIMP(statut='f',typ='R',defaut= 1.0E-3),
+ CRITERE = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")),
+ TOUT_ORDRE = SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ NUME_ORDRE = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
+ LIST_ORDRE = SIMP(statut='f',typ=listis_sdaster),
+ INST = SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
+ LIST_INST = SIMP(statut='f',typ=listr8_sdaster),
+ FREQ = SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
+ LIST_FREQ = SIMP(statut='f',typ=listr8_sdaster),
+ NUME_MODE = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
+ NOEUD_CMP = SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'),
+ NOM_CAS = SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'),
+ ),
+
+ ENER_ELAS = FACT(statut='f',max='**',
+ regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),),
+ TOUT = SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ ),
+ b_ener_elas = BLOC(condition = "( ENER_ELAS != None )",
+ fr="calcul de l'énergie de déformation élastique",
+ MODELE = SIMP(statut='f',typ=modele_sdaster),
+ CHAM_MATER = SIMP(statut='f',typ=cham_mater),
+ CARA_ELEM = SIMP(statut='f',typ=cara_elem),
+ CHARGE = SIMP(statut='f',typ=(char_meca,char_ther,char_acou),validators=NoRepeat(),max='**' ),
+ NUME_COUCHE = SIMP(statut='f',typ='I',defaut=1),
+ NIVE_COUCHE = SIMP(statut='f',typ='TXM',defaut="MOY",into=("INF","SUP","MOY"),),
+ MODE_FOURIER = SIMP(statut='f',typ='I',defaut=0),
+ RESULTAT = SIMP(statut='o',typ=(evol_noli) ),
+ regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','INST','LIST_INST'),),
+ PRECISION = SIMP(statut='f',typ='R',defaut= 1.0E-3),
+ CRITERE = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")),
+ TOUT_ORDRE = SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ NUME_ORDRE = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
+ LIST_ORDRE = SIMP(statut='f',typ=listis_sdaster),
+ INST = SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
+ LIST_INST = SIMP(statut='f',typ=listr8_sdaster),
+ ),
+
+ ENER_TOTALE = FACT(statut='f',max='**',
+ regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),),
+ TOUT = SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ ),
+ b_ener_totale = BLOC(condition = "( ENER_TOTALE != None )",
+ fr="calcul de l'énergie de déformation totale",
+ MODELE = SIMP(statut='f',typ=modele_sdaster),
+ CHAM_MATER = SIMP(statut='f',typ=cham_mater),
+ CARA_ELEM = SIMP(statut='f',typ=cara_elem),
+ CHARGE = SIMP(statut='f',typ=(char_meca,char_ther,char_acou),validators=NoRepeat(),max='**' ),
+ NUME_COUCHE = SIMP(statut='f',typ='I',defaut=1),
+ NIVE_COUCHE = SIMP(statut='f',typ='TXM',defaut="MOY",into=("INF","SUP","MOY"),),
+ MODE_FOURIER = SIMP(statut='f',typ='I',defaut=0),
+ RESULTAT = SIMP(statut='o',typ=(evol_noli) ),
+ regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','INST','LIST_INST'),),
+ PRECISION = SIMP(statut='f',typ='R',defaut= 1.0E-3),
+ CRITERE = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")),
+ TOUT_ORDRE = SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ NUME_ORDRE = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
+ LIST_ORDRE = SIMP(statut='f',typ=listis_sdaster),
+ INST = SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
+ LIST_INST = SIMP(statut='f',typ=listr8_sdaster),
+ ),
+
+ WEIBULL = FACT(statut='f',max='**',
+ regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),),
+ TOUT = SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ OPTION = SIMP(statut='f',typ='TXM',
+ into=("SIGM_ELGA","SIGM_ELMOY"),
+ defaut="SIGM_ELGA"),
+ CORR_PLAST = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
+ COEF_MULT = SIMP(statut='f',typ='R',defaut=1.),
+ ),
+ b_weibull = BLOC(condition = "( WEIBULL != None )",
+ fr="calcul du champ élémentaire de la puissance m-ième de la contrainte de Weibull",
+ regles=(UN_PARMI('CHAM_GD','RESULTAT'),
+ EXCLUS('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','INST','LIST_INST'),),
+ MODELE = SIMP(statut='f',typ=modele_sdaster),
+ CHAM_MATER = SIMP(statut='f',typ=cham_mater),
+ CARA_ELEM = SIMP(statut='f',typ=cara_elem),
+ CHARGE = SIMP(statut='f',typ=(char_meca,char_ther,char_acou),validators=NoRepeat(),max='**' ),
+ NUME_COUCHE = SIMP(statut='f',typ='I',defaut=1),
+ NIVE_COUCHE = SIMP(statut='f',typ='TXM',defaut="MOY",into=("INF","SUP","MOY"),),
+ MODE_FOURIER = SIMP(statut='f',typ='I',defaut=0),
+ CHAM_GD = SIMP(statut='f',typ=(cham_no_depl_r,cham_no_temp_r,cham_elem_ener_r) ),
+ RESULTAT = SIMP(statut='f',typ=(evol_noli) ),
+ PRECISION = SIMP(statut='f',typ='R',defaut= 1.0E-3),
+ CRITERE = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")),
+ TOUT_ORDRE = SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ NUME_ORDRE = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
+ LIST_ORDRE = SIMP(statut='f',typ=listis_sdaster),
+ INST = SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
+ LIST_INST = SIMP(statut='f',typ=listr8_sdaster),
+ ),
+
+ RICE_TRACEY = FACT(statut='f',max='**',
+ regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),),
+ TOUT = SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ OPTION = SIMP(statut='f',typ='TXM',
+ into=("SIGM_ELGA","SIGM_ELMOY"),
+ defaut="SIGM_ELGA"),
+ LOCAL = SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")),
+ ),
+ b_rice_tracey = BLOC(condition = "( RICE_TRACEY != None )",
+ fr="calcul du taux de croissance d'une cavité sphérique par rapport à un domaine",
+ regles=(UN_PARMI('CHAM_GD','RESULTAT'),
+ EXCLUS('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','INST','LIST_INST'),),
+ MODELE = SIMP(statut='f',typ=modele_sdaster),
+ CHAM_MATER = SIMP(statut='f',typ=cham_mater),
+ CARA_ELEM = SIMP(statut='f',typ=cara_elem),
+ CHARGE = SIMP(statut='f',typ=(char_meca,char_ther,char_acou),validators=NoRepeat(),max='**' ),
+ NUME_COUCHE = SIMP(statut='f',typ='I',defaut=1),
+ NIVE_COUCHE = SIMP(statut='f',typ='TXM',defaut="MOY",into=("INF","SUP","MOY"),),
+ MODE_FOURIER = SIMP(statut='f',typ='I',defaut=0),
+ CHAM_GD = SIMP(statut='f',typ=(cham_no_depl_r,cham_no_temp_r,cham_elem_ener_r) ),
+ RESULTAT = SIMP(statut='f',typ=(evol_noli) ),
+ PRECISION = SIMP(statut='f',typ='R',defaut= 1.0E-3),
+ CRITERE = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")),
+ TOUT_ORDRE = SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ NUME_ORDRE = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
+ LIST_ORDRE = SIMP(statut='f',typ=listis_sdaster),
+ INST = SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
+ LIST_INST = SIMP(statut='f',typ=listr8_sdaster),
+ ),
+
+ INDIC_ENER = FACT(statut='f',max='**',
+ regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),),
+ TOUT = SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ ),
+ b_indic_ener = BLOC(condition = "( INDIC_ENER != None )",
+ fr="calcul un indicateur global de perte de proportionnalité du chargement",
+ MODELE = SIMP(statut='f',typ=modele_sdaster),
+ CHAM_MATER = SIMP(statut='f',typ=cham_mater),
+ CHARGE = SIMP(statut='f',typ=(char_meca,char_ther,char_acou),validators=NoRepeat(),max='**' ),
+ MODE_FOURIER = SIMP(statut='f',typ='I',defaut=0),
+ RESULTAT = SIMP(statut='o',typ=(evol_noli) ),
+ regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','INST','LIST_INST'),),
+ PRECISION = SIMP(statut='f',typ='R',defaut= 1.0E-3),
+ CRITERE = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")),
+ TOUT_ORDRE = SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ NUME_ORDRE = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
+ LIST_ORDRE = SIMP(statut='f',typ=listis_sdaster),
+ INST = SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
+ LIST_INST = SIMP(statut='f',typ=listr8_sdaster),
+ ),
+
+ INDIC_SEUIL = FACT(statut='f',max='**',
+ regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),),
+ TOUT = SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ ),
+ b_indic_seuil = BLOC(condition = "( INDIC_SEUIL != None )",
+ fr="calcul un indicateur global de perte de proportionnalité du chargement",
+ MODELE = SIMP(statut='f',typ=modele_sdaster),
+ CHAM_MATER = SIMP(statut='f',typ=cham_mater),
+ CHARGE = SIMP(statut='f',typ=(char_meca,char_ther,char_acou),validators=NoRepeat(),max='**' ),
+ MODE_FOURIER = SIMP(statut='f',typ='I',defaut=0),
+ RESULTAT = SIMP(statut='o',typ=(evol_noli) ),
+ regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','INST','LIST_INST'),),
+ PRECISION = SIMP(statut='f',typ='R',defaut= 1.0E-3),
+ CRITERE = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")),
+ TOUT_ORDRE = SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ NUME_ORDRE = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
+ LIST_ORDRE = SIMP(statut='f',typ=listis_sdaster),
+ INST = SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
+ LIST_INST = SIMP(statut='f',typ=listr8_sdaster),
+ ),
+
+ CHAR_LIMITE = FACT(statut='f',min=0,
+ CHAR_CSTE = SIMP(statut='f',typ='TXM',into=("OUI","NON"),defaut="NON")
+ ),
+ b_char_limite = BLOC(condition = "( CHAR_LIMITE != None )",
+ fr="post-traitement du calcul de la charge limite",
+ MODELE = SIMP(statut='f',typ=modele_sdaster),
+ CHAM_MATER = SIMP(statut='f',typ=cham_mater),
+ CARA_ELEM = SIMP(statut='f',typ=cara_elem),
+ CHARGE = SIMP(statut='f',typ=(char_meca,char_ther,char_acou),validators=NoRepeat(),max='**' ),
+ MODE_FOURIER = SIMP(statut='f',typ='I',defaut=0),
+ RESULTAT = SIMP(statut='o',typ=(evol_noli) ),
+ regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','INST','LIST_INST'),),
+ PRECISION = SIMP(statut='f',typ='R',defaut= 1.0E-3),
+ CRITERE = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")),
+ TOUT_ORDRE = SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ NUME_ORDRE = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
+ LIST_ORDRE = SIMP(statut='f',typ=listis_sdaster),
+ INST = SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
+ LIST_INST = SIMP(statut='f',typ=listr8_sdaster),
+ ),
+
+ CARA_GEOM = FACT(statut='f',max='**',
+ regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),),
+ TOUT = SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ SYME_X = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
+ SYME_Y = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
+ ORIG_INER = SIMP(statut='f',typ='R',min=2,max=2),
+ ),
+ b_cara_geom = BLOC(condition = "( CARA_GEOM != None )",
+ fr="calcul des caractéristiques géométriques d'un section de poutre",
+ MODELE = SIMP(statut='f',typ=modele_sdaster),
+ CHAM_MATER = SIMP(statut='f',typ=cham_mater),
+ CHARGE = SIMP(statut='f',typ=(char_meca,char_ther,char_acou),validators=NoRepeat(),max='**' ),
+ MODE_FOURIER = SIMP(statut='f',typ='I',defaut=0),
+ ),
+
+ CARA_POUTRE = FACT(statut='f',max='**',
+ regles=(AU_MOINS_UN('TOUT','GROUP_MA'),
+ ENSEMBLE('LONGUEUR','LIAISON','MATERIAU'),),
+ TOUT = SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ GROUP_MA_INTE = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ CARA_GEOM = SIMP(statut='f',typ=tabl_cara_geom),
+ RT = SIMP(statut='f',typ='R'),
+ LAPL_PHI = SIMP(statut='f',typ=evol_ther),
+ LAPL_PHI_Y = SIMP(statut='f',typ=evol_ther),
+ LAPL_PHI_Z = SIMP(statut='f',typ=evol_ther),
+ LIAISON = SIMP(statut='f',typ='TXM',into=("ROTULE","ENCASTREMENT")),
+ LONGUEUR = SIMP(statut='f',typ='R'),
+ MATERIAU = SIMP(statut='f',typ=mater_sdaster),
+ OPTION = SIMP(statut='f',typ='TXM',
+ into=("CARA_TORSION","CARA_CISAILLEMENT","CARA_GAUCHI") ),
+ ),
+ b_cara_poutre = BLOC(condition = "( CARA_POUTRE != None )",
+ fr="calcul des caractéristiques mécaniques d'un section de poutre",
+ MODELE = SIMP(statut='f',typ=modele_sdaster),
+ CHAM_MATER = SIMP(statut='f',typ=cham_mater),
+ CHARGE = SIMP(statut='f',typ=(char_meca,char_ther,char_acou),validators=NoRepeat(),max='**' ),
+ MODE_FOURIER = SIMP(statut='f',typ='I',defaut=0),
+ ),
+
+ AIRE_INTERNE = FACT(statut='f',max='**',
+ GROUP_MA_BORD = SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**'),
+ ),
+ b_aire_interne = BLOC(condition = "( AIRE_INTERNE != None )",
+ fr="calcul de l'aire d'un trou dans un maillage 2D",
+ MODELE = SIMP(statut='f',typ=modele_sdaster),
+ ),
+
+ TRAV_EXT = FACT(statut='f',),
+ b_trav_ext = BLOC(condition = "( TRAV_EXT != None )",
+ fr="calcul du travail des efforts extérieurs",
+ RESULTAT = SIMP(statut='o',typ=(evol_elas,evol_noli,dyna_trans) ),
+ PRECISION = SIMP(statut='f',typ='R',defaut= 1.0E-3),
+ CRITERE = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")),
+ TOUT_ORDRE = SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ ),
+
+ TITRE =SIMP(statut='f',typ='TXM',max='**' ),
+ INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
+
+ ) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+POST_FATI_ALEA=OPER(nom="POST_FATI_ALEA",op=170,sd_prod=tabl_post_f_alea,reentrant='n',
+ UIinfo={"groupes":("Post traitements",)},
+ fr="Calcul du dommage subi par une structure soumise à unesollicitation de type aléatoire",
+ regles=(ENSEMBLE('MOMENT_SPEC_0','MOMENT_SPEC_2'),
+ PRESENT_PRESENT( 'MOMENT_SPEC_4','MOMENT_SPEC_0'),
+ UN_PARMI('TABL_POST_ALEA','MOMENT_SPEC_0'), ),
+ MOMENT_SPEC_0 =SIMP(statut='f',typ='R'),
+ MOMENT_SPEC_2 =SIMP(statut='f',typ='R'),
+ MOMENT_SPEC_4 =SIMP(statut='f',typ='R'),
+ TABL_POST_ALEA =SIMP(statut='f',typ=tabl_post_alea),
+ COMPTAGE =SIMP(statut='o',typ='TXM',into=("PIC","NIVEAU")),
+ DUREE =SIMP(statut='f',typ='R',defaut= 1.),
+ CORR_KE =SIMP(statut='f',typ='TXM',into=("RCCM",)),
+ DOMMAGE =SIMP(statut='o',typ='TXM',into=("WOHLER",)),
+ MATER =SIMP(statut='o',typ=mater_sdaster),
+ TITRE =SIMP(statut='f',typ='TXM',max='**'),
+) ;
+#& MODIF COMMANDE DATE 30/06/2004 AUTEUR MCOURTOI M.COURTOIS
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+POST_FATIGUE=OPER(nom="POST_FATIGUE",op=136,sd_prod=tabl_post_fatig,reentrant='n',
+ UIinfo={"groupes":("Post traitements",)},
+ fr="Calcul du dommage subi par une structure soumise à une histoire de chargement",
+
+ CHARGEMENT = SIMP(statut='o',typ='TXM',into=("UNIAXIAL","PERIODIQUE","QUELCONQUE")),
+
+ b_uniaxial = BLOC( condition = "CHARGEMENT=='UNIAXIAL'",
+ regles=(PRESENT_PRESENT('CORR_KE','MATER'),
+ PRESENT_PRESENT('CORR_SIGM_MOYE','MATER'),
+ PRESENT_PRESENT('DOMMAGE','MATER'),),
+ HISTOIRE = FACT(statut='o',
+ regles=(UN_PARMI('SIGM','EPSI'),),
+ SIGM = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ EPSI = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),),
+ COMPTAGE = SIMP(statut='o',typ='TXM',into=("RAINFLOW","RCCM","NATUREL")),
+ DELTA_OSCI = SIMP(statut='f',typ='R',defaut= 0.0E+0),
+ COEF_MULT = FACT(statut='f',
+ KT = SIMP(statut='o',typ='R'),),
+ CORR_KE = SIMP(statut='f',typ='TXM',into=("RCCM",)),
+ DOMMAGE = SIMP(statut='f',typ='TXM',into=("WOHLER","MANSON_COFFIN",
+ "TAHERI_MANSON","TAHERI_MIXTE")),
+ MATER = SIMP(statut='f',typ=mater_sdaster),
+ CORR_SIGM_MOYE = SIMP(statut='f',typ='TXM',into=("GOODMAN","GERBER")),
+ TAHERI_NAPPE = SIMP(statut='f',typ=(nappe_sdaster,formule)),
+ TAHERI_FONC = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ CUMUL = SIMP(statut='f',typ='TXM',into=("LINEAIRE",)),
+ ),
+
+ b_periodique = BLOC( condition = "CHARGEMENT=='PERIODIQUE'",
+ HISTOIRE = FACT(statut='o',
+ SIGM_XX = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ SIGM_YY = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ SIGM_ZZ = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ SIGM_XY = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ SIGM_XZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ SIGM_YZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),),
+ CRITERE = SIMP(statut='o',typ='TXM',into=("CROSSLAND","PAPADOPOULOS")),
+ DOMMAGE = SIMP(statut='f',typ='TXM',into=("WOHLER",)),
+ MATER = SIMP(statut='o',typ=mater_sdaster),
+ COEF_CORR = SIMP(statut='f',typ='R'),
+ ),
+
+ b_quelconque = BLOC( condition = "CHARGEMENT=='QUELCONQUE'",
+ HISTOIRE = FACT(statut='o',
+ SIGM_XX = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ SIGM_YY = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ SIGM_ZZ = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ SIGM_XY = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ SIGM_XZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ SIGM_YZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ EPSP = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ TEMP = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),),
+ DOMMAGE = SIMP(statut='f',typ='TXM',into=("LEMAITRE",),),
+ MATER = SIMP(statut='o',typ=mater_sdaster),
+ CUMUL = SIMP(statut='f',typ='TXM',into=("LINEAIRE",)),
+ ),
+
+ INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
+ TITRE =SIMP(statut='f',typ='TXM',max='**'),
+) ;
+#& MODIF COMMANDE DATE 03/02/2005 AUTEUR GALENNE E.GALENNE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE GALENNE E.GALENNE
+
+POST_K1_K2_K3=OPER(nom="POST_K1_K2_K3",op=188,sd_prod=tabl_post_k,
+ fr="Calcul des FIC par extrapolation du champ de déplacements sur les lèvres de la fissure",
+ reentrant='n',
+ UIinfo={"groupes":("Post traitements",)},
+
+ regles=(UN_PARMI('RESULTAT','TABL_DEPL_SUP'),
+ PRESENT_PRESENT('RESULTAT','FOND_FISS'),),
+
+ MODELISATION =SIMP(statut='o',typ='TXM',
+ into=("3D","AXIS","D_PLAN","C_PLAN"),
+ fr="Modélisation cohérente avec celle utilisée pour le calcul des déplacements"),
+ FOND_FISS =SIMP(statut='f',typ=fond_fiss),
+ b_fond_fiss =BLOC (condition="(FOND_FISS!= None)",
+ MAILLAGE = SIMP(statut='o',typ=maillage_sdaster),
+ NOEUD = SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ GROUP_NO = SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ SANS_NOEUD = SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ SANS_GROUP_NO = SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ TOUT = SIMP(statut='f',typ='TXM',into=("OUI",) )
+ ),
+ MATER =SIMP(statut='o',typ=mater_sdaster,
+ fr="Matériau homogène et isotrope cohérent avec celui utilisé pour le calcul des déplacements"),
+ RESULTAT =SIMP(statut='f',typ=(evol_elas,evol_noli),
+ fr="Table déplacement des noeuds de la lèvre supérieure et inférieure"),
+ TABL_DEPL_SUP =SIMP(statut='f',typ=tabl_post_rele,
+ fr="Table issue de post_releve_t sur les noeuds de la lèvre supérieure"),
+ TABL_DEPL_INF =SIMP(statut='f',typ=tabl_post_rele,
+ fr="Table issue de post_releve_t sur les noeuds de la lèvre inférieure"),
+ ABSC_CURV_MAXI=SIMP(statut='f',typ='R',
+ fr="distance maximum à partir du fond de fissure à utiliser pour le calcul"),
+ PREC_VIS_A_VIS= SIMP(statut='f',typ='R',defaut=0.1),
+ TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
+ LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster),
+ INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
+ LIST_INST =SIMP(statut='f',typ=listr8_sdaster),
+ b_acce_reel =BLOC(condition="(INST != None)or(LIST_INST != None)",
+ PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-6),
+ CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
+ ),
+ SYME_CHAR =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SYME","SANS") ),
+ INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
+ VECT_K1 =SIMP(statut='o',typ='R',max=3,
+ fr="Vecteur normal au plan de fissure, orienté de la lèvre inférieure vers la lèvre supérieure"),
+ TITRE =SIMP(statut='f',typ='TXM',max='**'),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
+#
+POST_K_BETA=OPER(nom="POST_K_BETA",op=198,sd_prod=tabl_post_beta,
+ fr="Calcul des FIC par la méthode K_BETA",
+ reentrant='n',
+ UIinfo={"groupes":("Post traitements",)},
+ MAILLAGE = SIMP(statut='o',typ=maillage_sdaster),
+ MATER_REV = SIMP(statut='o',typ=mater_sdaster),
+ EPAIS_REV = SIMP(statut='o',typ='R'),
+ FISSURE = FACT(statut='o',
+ DECALAGE = SIMP(statut='f',typ='R',defaut=-2.e-04),
+ PROFONDEUR = SIMP(statut='o',typ='R'),
+ LONGUEUR = SIMP(statut='o',typ='R'),
+ ORIENTATION = SIMP(statut='o',typ='TXM',
+ into=("CIRC","LONGI"),),
+ ),
+ K1D = FACT(statut='o',max='**',
+ TABL_MECA_REV = SIMP(statut='o',typ=(tabl_post_rele)),
+ TABL_MECA_MDB = SIMP(statut='o',typ=(tabl_post_rele)),
+ TABL_THER = SIMP(statut='o',typ=(tabl_post_rele)),
+ INTITULE = SIMP(statut='o',typ='TXM' ),
+ ),
+ TITRE = SIMP(statut='f',typ='TXM',max='**'),
+);
+#& MODIF COMMANDE DATE 01/04/2005 AUTEUR CIBHHLV L.VIVAN
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTIC
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE JMBHH01 J.M.PROIX
+POST_RCCM=OPER(nom="POST_RCCM",op= 165,sd_prod=tabl_post_rccm,
+ fr="Vérification des critères de niveau 0 et certains critères de niveau A du RCC-M-B3200 (Edition 1991)",
+ reentrant='n',
+ UIinfo={"groupes":("Post traitements",)},
+ TYPE_RESU =SIMP(statut='f',typ='TXM',defaut="VALE_MAX",into=("VALE_MAX","DETAILS") ),
+ INFO =SIMP(statut='f',typ='I',into=(1,2) ),
+ TITRE =SIMP(statut='f',typ='TXM',max='**'),
+ TYPE_RESU_MECA =SIMP(statut='o',typ='TXM',into=("EVOLUTION","UNITAIRE","TUYAUTERIE") ),
+
+# ======================================================================
+ b_evolution =BLOC(condition="(TYPE_RESU_MECA == 'EVOLUTION')",
+
+ OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',
+ into=("PM_PB","SN","FATIGUE_ZH210") ),
+ MATER =SIMP(statut='o',typ=mater_sdaster ),
+ MAILLAGE =SIMP(statut='f',typ=maillage_sdaster),
+ SEGMENT =FACT(statut='o',max='**',fr="Segment sur lequel s effectue le depouillement",
+ regles=(AU_MOINS_UN('CHEMIN','GROUP_NO','NOEUD'),
+ EXCLUS('CHEMIN','GROUP_NO'),
+ EXCLUS('CHEMIN','NOEUD'),),
+ INTITULE =SIMP(statut='f',typ='TXM' ),
+ CHEMIN =SIMP(statut='f',typ=(courbe_sdaster,surface_sdaster),),
+ NOEUD =SIMP(statut='f',typ=no,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno),
+ b_acce_noeud =BLOC(condition="(NOEUD != None)or(GROUP_NO != None)",
+ PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3),
+ CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
+ ),
+ ),
+ TRANSITOIRE =FACT(statut='o',max='**',fr="transitoire à dépouiller",
+ regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','LIST_INST','LIST_ORDRE'),),
+ RESULTAT =SIMP(statut='o',typ=(evol_elas,evol_noli) ),
+ RESU_SIGM_THER =SIMP(statut='f',typ=(evol_elas,evol_noli),fr="résultat sous chargement thermique seul" ),
+ NB_OCCUR =SIMP(statut='f',typ='I',defaut= 1,fr="nombre d occurences réelles de ce transitoire" ),
+ NOM_CHAM =SIMP(statut='o',typ='TXM',into=("SIEF_ELNO_ELGA","SIGM_ELNO_DEPL") ),
+ TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
+ LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster ),
+ INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
+ LIST_INST =SIMP(statut='f',typ=listr8_sdaster ),
+ b_inst =BLOC(condition = "(INST != None) or (LIST_INST != None)" ,
+ PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6 ),
+ CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("ABSOLU","RELATIF") ),
+ ),
+ ),
+ ),
+
+# ======================================================================
+ b_unitaire =BLOC(condition="(TYPE_RESU_MECA == 'UNITAIRE')",
+
+ OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',
+ into=("PM_PB","SN","FATIGUE") ),
+ MATER =SIMP(statut='o',typ=mater_sdaster ),
+ TYPE_KE =SIMP(statut='f',typ='TXM',defaut="KE_MECA",into=("KE_MECA","KE_MIXTE"),
+ fr="Ke meca seul ou partition mecanique + thermique" ),
+ CHAR_MECA =FACT(statut='o',max='**',fr="Chargements mécaniques",
+ NUME_CHAR =SIMP(statut='o',typ='I',fr="numéro du chargement" ),
+ NOM_CHAR =SIMP(statut='f',typ='TXM',fr="nom du chargement" ),
+ TYPE_CHAR =SIMP(statut='f',typ='TXM',fr="nature du chargement",into=( "SEISME","AUTRE"),defaut="AUTRE",),
+ FX =SIMP(statut='f',typ='R',fr="effort suivant x", ),
+ FY =SIMP(statut='f',typ='R',fr="effort suivant y", ),
+ FZ =SIMP(statut='f',typ='R',fr="effort suivant z", ),
+ MX =SIMP(statut='o',typ='R',fr="moment suivant x", ),
+ MY =SIMP(statut='o',typ='R',fr="moment suivant y", ),
+ MZ =SIMP(statut='o',typ='R',fr="moment suivant z", ),
+ ),
+ RESU_MECA_UNIT =FACT(statut='o',fr="resultats mécaniques unitaires",
+ TABL_FX =SIMP(statut='f',typ=table_sdaster,
+ fr="table relevé des contraintes pour chargement unitaire FX"),
+ TABL_FY =SIMP(statut='f',typ=table_sdaster,
+ fr="table relevé des contraintes pour chargement unitaire FY"),
+ TABL_FZ =SIMP(statut='f',typ=table_sdaster,
+ fr="table relevé des contraintes pour chargement unitaire FZ"),
+ TABL_MX =SIMP(statut='o',typ=table_sdaster,
+ fr="table relevé des contraintes pour chargement unitaire MX"),
+ TABL_MY =SIMP(statut='o',typ=table_sdaster,
+ fr="table relevé des contraintes pour chargement unitaire MY"),
+ TABL_MZ =SIMP(statut='o',typ=table_sdaster,
+ fr="table relevé des contraintes pour chargement unitaire MZ"),
+ TABL_PRES =SIMP(statut='o',typ=table_sdaster,
+ fr="table relevé des contraintes pour chargement unitaire de pression"),
+ ),
+ RESU_THER =FACT(statut='f',max='**',fr="resultats thermiques",
+ NUME_RESU_THER =SIMP(statut='o',typ='I',fr="numéro de la table de résultat thermique" ),
+ TABL_RESU_THER =SIMP(statut='o',typ=table_sdaster,
+ fr="table relevé des contraintes sous chargement thermique seul" ),
+ ),
+ SITUATION =FACT(statut='o',max='**',fr="Situation",ang="situation_ang",
+ NB_OCCUR =SIMP(statut='o',typ='I',fr="nombre d'occurences de la situation" ),
+ NB_CYCL_SEISME =SIMP(statut='f',typ='I',fr="nombre de cycles associé au séisme" ),
+ NUME_SITU =SIMP(statut='o',typ='I',fr="numéro de la situation" ),
+ NOM_SITU =SIMP(statut='f',typ='TXM',fr="nom de la situation" ),
+ COMBINABLE =SIMP(statut='f',typ='TXM',defaut= "OUI",into=("OUI","NON"),fr="non = sous-cycle" ),
+ NUME_GROUPE =SIMP(statut='o',typ='I',fr="numéro du groupe de la situation" ),
+ NUME_PASSAGE =SIMP(statut='f',typ='I',max=2,fr="numéro des deux groupes en relation" ),
+ NUME_RESU_THER =SIMP(statut='f',typ='I',max='**',fr="numeros de transitoires thermiques" ),
+ CHAR_ETAT_A =SIMP(statut='o',typ='I',max='**',fr="numeros de chargements etat A" ),
+ CHAR_ETAT_B =SIMP(statut='o',typ='I',max='**',fr="numeros de chargements etat B" ),
+ PRES_A =SIMP(statut='o',typ='R',fr="pression etat A"),
+ PRES_B =SIMP(statut='o',typ='R',fr="pression etat B"),
+ TEMP_REF_A =SIMP(statut='f',typ='R',fr="temperature référence etat A"),
+ TEMP_REF_B =SIMP(statut='f',typ='R',fr="temperature référence etat B"),
+ ),
+ ),
+# ======================================================================
+ b_tuyauterie =BLOC(condition="(TYPE_RESU_MECA == 'TUYAUTERIE')",
+
+ OPTION =SIMP(statut='o',typ='TXM',into=("FATIGUE",) ),
+ CHAM_MATER =SIMP(statut='o',typ=cham_mater ),
+ TYPE_KE =SIMP(statut='f',typ='TXM',defaut="KE_MECA",into=("KE_MECA","KE_MIXTE"),
+ fr="Ke meca seul ou partition mecanique + thermique" ),
+ MODELE =SIMP(statut='o',typ=modele_sdaster),
+ CARA_ELEM =SIMP(statut='o',typ=cara_elem),
+ ZONE_ANALYSE =FACT(statut='o',fr="liste des mailles ou des noeuds analysés",
+ regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ ),
+ RESU_MECA =FACT(statut='o',max='**',fr="Chargements mécaniques",
+ regles=(UN_PARMI('CHAM_GD','RESULTAT'),),
+ NUME_CHAR =SIMP(statut='o',typ='I',fr="numéro du chargement" ),
+ NOM_CHAR =SIMP(statut='f',typ='TXM',fr="nom du chargement" ),
+ TYPE_CHAR =SIMP(statut='f',typ='TXM',fr="nature du chargement",into=( "SEISME","AUTRE"),defaut="AUTRE",),
+ CHAM_GD =SIMP(statut='f',typ=cham_gd_sdaster),
+ RESULTAT =SIMP(statut='f',typ=resultat_sdaster),
+ b_extrac =BLOC(condition="RESULTAT != None",
+ fr="extraction d un champ de grandeur",
+ regles=(UN_PARMI('TOUT_ORDRE','NUME_ORDRE','INST','NOEUD_CMP'),),
+ NOM_CHAM =SIMP(statut='o',typ='TXM',into=("EFGE_ELNO_DEPL","SIEF_ELNO_ELGA"),),
+ TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ NUME_ORDRE =SIMP(statut='f',typ='I',),
+ INST =SIMP(statut='f',typ='R',),
+ NOEUD_CMP =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'),
+ b_acce_reel =BLOC(condition="(INST != None)",
+ PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3),
+ CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU"), ),
+ ),
+ ),
+ ),
+ INDI_SIGM =FACT(statut='o',max='**',fr="indices de contraintes",
+ regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),),
+ C1 =SIMP(statut='f',typ='R',defaut=1.0,fr="indice de contraintes C1 du RCCM"),
+ K1 =SIMP(statut='f',typ='R',defaut=1.0,fr="indice de contraintes K1 du RCCM"),
+ C2 =SIMP(statut='f',typ='R',defaut=1.0,fr="indice de contraintes C2 du RCCM"),
+ K2 =SIMP(statut='f',typ='R',defaut=1.0,fr="indice de contraintes K2 du RCCM"),
+ C3 =SIMP(statut='f',typ='R',defaut=0.5,fr="indice de contraintes C3 du RCCM"),
+ K3 =SIMP(statut='f',typ='R',defaut=1.0,fr="indice de contraintes K3 du RCCM"),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",),),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**',
+ fr="groupe(s) de mailles ou sont affectés les indices de contraintes"),
+ MAILLE =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**',
+ fr="liste des mailles ou sont affectés les indices de contraintes"),
+ b_grma =BLOC(condition="(GROUP_MA != None)or(MAILLE != None)",
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ ),
+ TYPE_ELEM_STANDARD =SIMP(statut='f',typ='TXM',into=("DRO","COU","TRN","TEE"),
+ fr="type d'élément de tuyauterie ou sont affectés les indices de contraintes"),
+ ),
+ RESU_THER =FACT(statut='f',max='**',fr="resultats thermiques",
+ regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),),
+ NUME_RESU_THER =SIMP(statut='o',typ='I',fr="numéro de la table de résultat thermique" ),
+ TABL_RESU_THER =SIMP(statut='o',typ=table_sdaster,
+ fr="table relevé des températures sur la section"),
+ TABL_MOYE_THER =SIMP(statut='o',typ=table_sdaster,
+ fr="table relevé des moyennes sur la section"),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ b_grma =BLOC(condition="(GROUP_MA != None)or(MAILLE != None)",
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ ),
+ ),
+ SITUATION =FACT(statut='o',max='**',fr="Situation",ang="situation_ang",
+ NB_OCCUR =SIMP(statut='o',typ='I',fr="nombre d'occurences de la situation" ),
+ NB_CYCL_SEISME =SIMP(statut='f',typ='I',fr="nombre de cycles associé au séisme" ),
+ NUME_SITU =SIMP(statut='o',typ='I',fr="numéro de la situation" ),
+ NOM_SITU =SIMP(statut='f',typ='TXM',fr="nom de la situation" ),
+ COMBINABLE =SIMP(statut='f',typ='TXM',defaut= "OUI",into=("OUI","NON"),fr="non = sous-cycle" ),
+ NUME_GROUPE =SIMP(statut='o',typ='I',fr="numéro du groupe de la situation" ),
+ NUME_PASSAGE =SIMP(statut='f',typ='I',max=2,fr="numéro des deux groupes en relation" ),
+ NUME_RESU_THER =SIMP(statut='f',typ='I',max='**',fr="numeros de transitoires thermiques" ),
+ CHAR_ETAT_A =SIMP(statut='o',typ='I',max='**',fr="numeros de chargements etat A" ),
+ CHAR_ETAT_B =SIMP(statut='o',typ='I',max='**',fr="numeros de chargements etat B" ),
+ PRES_A =SIMP(statut='o',typ='R',fr="pression etat A"),
+ PRES_B =SIMP(statut='o',typ='R',fr="pression etat B"),
+ TEMP_REF_A =SIMP(statut='f',typ='R',fr="temperature référence etat A"),
+ TEMP_REF_B =SIMP(statut='f',typ='R',fr="temperature référence etat B"),
+ ),
+ ),
+) ;
+#& MODIF COMMANDE DATE 07/10/2004 AUTEUR GNICOLAS G.NICOLAS
+# ======================================================================
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE G8BHHXD X.DESROCHES
+POST_RELEVE_T=OPER(nom="POST_RELEVE_T",op=51,sd_prod=tabl_post_rele,reentrant='f',
+ UIinfo={"groupes":("Post traitements",)},
+ ACTION =FACT(statut='o',max='**',
+ regles=(AU_MOINS_UN('CHEMIN','GROUP_NO','NOEUD'),
+ EXCLUS('CHEMIN','GROUP_NO'),
+ EXCLUS('CHEMIN','NOEUD'),
+ PRESENT_ABSENT('CHEMIN','GROUP_MA','MAILLE'),
+ UN_PARMI('RESULTAT','CHAM_GD'),
+ UN_PARMI('TOUT_CMP','NOM_CMP','INVARIANT','ELEM_PRINCIPAUX','RESULTANTE'),
+ PRESENT_PRESENT('TRAC_DIR','DIRECTION'),
+ ENSEMBLE('MOMENT','POINT'),
+ PRESENT_PRESENT('MOMENT','RESULTANTE'),
+ PRESENT_ABSENT('TOUT_CMP','TRAC_DIR','TRAC_NOR'),
+ EXCLUS('TRAC_DIR','TRAC_NOR'),
+ PRESENT_PRESENT('ORIGINE','AXE_Z'),),
+ INTITULE =SIMP(statut='o',typ='TXM'),
+ CHEMIN =SIMP(statut='f',typ=(courbe_sdaster,surface_sdaster) ),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ FORMAT_C =SIMP(statut='f',typ='TXM',defaut="MODULE",into=("MODULE","REEL","IMAG")),
+ CHAM_GD =SIMP(statut='f',typ=(cham_no_depl_r,cham_no_temp_r,cham_no_pres_r,cham_no_var2_r,
+ cham_elem_sief_r,cham_elem_epsi_r,cham_elem_flux_r,cham_elem_crit_r,
+ cham_elem_ener_r,cham_elem_dbel_r,cham_elem_pres_r,cham_elem_erreur,
+ cham_elem_vari_r,cham_no_depl_c,cham_no_temp_c,cham_no_pres_c,
+ cham_elem_sief_c,cham_elem_epsi_c,cham_no_facy_r)),
+ RESULTAT =SIMP(statut='f',typ=(evol_elas,evol_ther,evol_noli,dyna_trans,
+ mode_meca,mode_flamb,mode_acou,base_modale,mode_stat,
+ mult_elas,fourier_elas,dyna_harmo,acou_harmo)),
+ b_sensibilite =BLOC(condition="RESULTAT != None",
+ fr="Définition des paramètres de sensibilité",
+ ang="Definition of sensitivity parameters",
+ SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**',
+ fr="Liste des paramètres de sensibilité.",
+ ang="List of sensitivity parameters"),),
+
+ b_extrac =BLOC(condition = "RESULTAT != None",fr="extraction des résultats",
+ regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','NUME_MODE','LIST_MODE',
+ 'INST','LIST_INST','FREQ','LIST_FREQ','NOEUD_CMP','NOM_CAS'), ),
+ NOM_CHAM =SIMP(statut='o',typ='TXM' ),
+ TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
+ LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster),
+ NUME_MODE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
+ LIST_MODE =SIMP(statut='f',typ=listis_sdaster),
+ NOEUD_CMP =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'),
+ NOM_CAS =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'),
+ FREQ =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
+ LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster),
+ INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
+ LIST_INST =SIMP(statut='f',typ=listr8_sdaster),
+ PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-6),
+ CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")),
+ ),
+ TOUT_CMP =SIMP(statut='f',typ='TXM',into=("OUI",)),
+ NOM_CMP =SIMP(statut='f',typ='TXM',max='**'),
+ INVARIANT =SIMP(statut='f',typ='TXM',into=("OUI",)),
+ ELEM_PRINCIPAUX =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ RESULTANTE =SIMP(statut='f',typ='TXM',max='**'),
+ MOMENT =SIMP(statut='f',typ='TXM',max='**'),
+ POINT =SIMP(statut='f',typ='R',max='**'),
+
+ REPERE =SIMP(statut='f',typ='TXM',defaut="GLOBAL",
+ into=("GLOBAL","LOCAL","POLAIRE","UTILISATEUR","CYLINDRIQUE"),),
+ ANGL_NAUT =SIMP(statut='f',typ='R',min=3,max=3),
+ ORIGINE =SIMP(statut='f',typ='R',min=3,max=3),
+ AXE_Z =SIMP(statut='f',typ='R',min=3,max=3),
+
+ TRAC_NOR =SIMP(statut='f',typ='TXM',into=("OUI",)),
+ TRAC_DIR =SIMP(statut='f',typ='TXM',into=("OUI",)),
+ DIRECTION =SIMP(statut='f',typ='R',max='**'),
+
+ VECT_Y =SIMP(statut='f',typ='R',max='**'),
+ MOYE_NOEUD =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")),
+ OPERATION =SIMP(statut='o',typ='TXM',into=("EXTRACTION","MOYENNE"),validators=NoRepeat(),max=2),
+ ),
+ INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
+ TITRE =SIMP(statut='f',typ='TXM',max='**'),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+POST_SIMPLIFIE=OPER(nom="POST_SIMPLIFIE",op=185,sd_prod=tabl_post_simpli,
+ fr=" ",reentrant='n',
+ UIinfo={"groupes":("Outils métier",)},
+ MATER =SIMP(statut='o',typ=(mater_sdaster) ),
+ DEF_EQUI =FACT(statut='f',
+ METHODE =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',defaut="UTO_2_3",
+ into=("UTO_2_3",) ),
+ EPAIS =SIMP(statut='o',typ='R'),
+ LONG_FISS =SIMP(statut='o',typ='R'),
+ LONG_LIGA_INT =SIMP(statut='o',typ='R'),
+ DEXT =SIMP(statut='o',typ='R'),
+ TEMP_ANALYSE =SIMP(statut='f',typ='R'),
+ ),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+POST_USURE=OPER(nom="POST_USURE",op=153,sd_prod=tabl_post_usur,reentrant='f',
+ UIinfo={"groupes":("Post traitements",)},
+ fr="Calcul des volumes d'usure et des profondeurs d'usure",
+ regles=(UN_PARMI('TUBE_NEUF','RESU_GENE','PUIS_USURE'),
+ PRESENT_PRESENT('RESU_GENE','NOEUD','LOI_USURE'),
+ PRESENT_PRESENT('PUIS_USURE','LOI_USURE'),),
+ TUBE_NEUF =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ ETAT_INIT =FACT(statut='f',
+ TABL_USURE =SIMP(statut='f',typ=tabl_post_usur),
+ INST_INIT =SIMP(statut='f',typ='R'),
+ ),
+ RESU_GENE =SIMP(statut='f',typ=tran_gene),
+ NOEUD =SIMP(statut='f',typ=no,),
+ INST_INIT =SIMP(statut='f',typ='R',defaut=-1.0E+0),
+ INST_FIN =SIMP(statut='f',typ='R'),
+ NB_BLOC =SIMP(statut='f',typ='I',defaut= 1 ),
+ PUIS_USURE =SIMP(statut='f',typ='R'),
+ LOI_USURE =SIMP(statut='f',typ='TXM',into=("ARCHARD","KWU_EPRI","EDF_MZ")),
+ b_archard =BLOC(condition = "LOI_USURE == 'ARCHARD'",
+ regles=(UN_PARMI('MOBILE','MATER_USURE','SECTEUR'),
+ EXCLUS('MATER_USURE','OBSTACLE'),
+ EXCLUS('MOBILE','USURE_OBST'),),
+ MOBILE =FACT(statut='f',
+ COEF_USURE =SIMP(statut='o',typ='R'),
+ ),
+ OBSTACLE =FACT(statut='f',
+ COEF_USURE =SIMP(statut='o',typ='R'),
+ ),
+ SECTEUR =FACT(statut='f',max='**',
+ CONTACT =SIMP(statut='f',typ='TXM',into=("TUBE_BAV","TUBE_ALESAGE","TUBE_4_ENCO",
+ "GRAPPE_ALESAGE","TUBE_3_ENCO","TUBE_TUBE",
+ "GRAPPE_1_ENCO","GRAPPE_2_ENCO")),
+ COEF_USUR_MOBILE=SIMP(statut='f',typ='R'),
+ COEF_USUR_OBST =SIMP(statut='f',typ='R'),
+ ANGL_INIT =SIMP(statut='f',typ='R'),
+ ANGL_FIN =SIMP(statut='f',typ='R'),
+ ),
+ MATER_USURE =SIMP(statut='f',typ='TXM'),
+ USURE_OBST =SIMP(statut='f',typ='TXM',into=("OUI",)),
+ ),
+ b_kwu_epri =BLOC(condition = "LOI_USURE == 'KWU_EPRI'",
+ regles=(UN_PARMI('MOBILE','MATER_USURE'),
+ EXCLUS('MATER_USURE','OBSTACLE'),
+ EXCLUS('MOBILE','USURE_OBST'),),
+ MOBILE =FACT(statut='f',
+ COEF_FNOR =SIMP(statut='f',typ='R'),
+ COEF_VTAN =SIMP(statut='f',typ='R'),
+ COEF_USURE =SIMP(statut='f',typ='R'),
+ COEF_K =SIMP(statut='f',typ='R',defaut=5.0E+0),
+ COEF_C =SIMP(statut='f',typ='R',defaut=10.0E+0),
+ ),
+ OBSTACLE =FACT(statut='f',
+ COEF_FNOR =SIMP(statut='f',typ='R' ),
+ COEF_VTAN =SIMP(statut='f',typ='R' ),
+ COEF_USURE =SIMP(statut='o',typ='R'),
+ COEF_K =SIMP(statut='f',typ='R',defaut=5.0E+0),
+ COEF_C =SIMP(statut='f',typ='R',defaut=10.0E+0),
+ ),
+ MATER_USURE =SIMP(statut='f',typ='TXM'),
+ USURE_OBST =SIMP(statut='f',typ='TXM',into=("OUI",)),
+ FNOR_MAXI =SIMP(statut='f',typ='R' ),
+ VTAN_MAXI =SIMP(statut='f',typ='R' ),
+ ),
+ b_edf_mz =BLOC(condition = "LOI_USURE == 'EDF_MZ'",
+ regles=(UN_PARMI('MOBILE','MATER_USURE'),
+ EXCLUS('MATER_USURE','OBSTACLE'),
+ EXCLUS('MOBILE','USURE_OBST'),),
+ MOBILE =FACT(statut='f',
+ COEF_USURE =SIMP(statut='f',typ='R',defaut=1.0E-13),
+ COEF_B =SIMP(statut='f',typ='R',defaut=1.2E+0),
+ COEF_N =SIMP(statut='f',typ='R',defaut=2.44E-8),
+ COEF_S =SIMP(statut='f',typ='R',defaut=1.14E-16),
+ ),
+ OBSTACLE =FACT(statut='f',
+ COEF_USURE =SIMP(statut='o',typ='R',defaut=1.0E-13),
+ COEF_B =SIMP(statut='f',typ='R',defaut=1.2E+0),
+ COEF_N =SIMP(statut='f',typ='R',defaut=2.44E-8),
+ COEF_S =SIMP(statut='f',typ='R',defaut=1.14E-16),
+ ),
+ MATER_USURE =SIMP(statut='f',typ='TXM'),
+ USURE_OBST =SIMP(statut='f',typ='TXM',into=("OUI",)),
+ ),
+ b_tube_neuf =BLOC(condition = "TUBE_NEUF == 'OUI'",
+ TABL_USURE =SIMP(statut='o',typ=tabl_post_usur),
+ INST =SIMP(statut='f',typ='R'),
+ ),
+ CONTACT =SIMP(statut='f',typ='TXM',into=("TUBE_BAV","TUBE_ALESAGE","TUBE_4_ENCO",
+ "GRAPPE_ALESAGE","TUBE_3_ENCO","TUBE_TUBE",
+ "GRAPPE_1_ENCO","GRAPPE_2_ENCO")),
+ RAYON_MOBILE =SIMP(statut='f',typ='R'),
+ RAYON_OBST =SIMP(statut='f',typ='R'),
+ LARGEUR_OBST =SIMP(statut='f',typ='R'),
+ ANGL_INCLI =SIMP(statut='f',typ='R'),
+ ANGL_ISTHME =SIMP(statut='f',typ='R'),
+ ANGL_IMPACT =SIMP(statut='f',typ='R'),
+ INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
+ LIST_INST =SIMP(statut='f',typ=listr8_sdaster),
+ COEF_INST =SIMP(statut='f',typ='R',defaut=1.0E+0),
+ INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
+ TITRE =SIMP(statut='f',typ='TXM',max='**' ),
+) ;
+#& MODIF COMMANDE DATE 30/06/2004 AUTEUR MCOURTOI M.COURTOIS
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+POST_ZAC=OPER(nom="POST_ZAC",op= 175,sd_prod=mult_elas,reentrant='n',
+ UIinfo={"groupes":("Post traitements",)},
+ fr="Donne l'état adapté ou accommodé d'une structure sous chargement cyclique élastique affine ou non",
+ MODELE =SIMP(statut='o',typ=modele_sdaster),
+ CHAM_MATER =SIMP(statut='o',typ=cham_mater),
+ EXCIT =FACT(statut='o',max='**',
+ CHARGE =SIMP(statut='o',typ=char_meca),
+ FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ TYPE_CHARGE =SIMP(statut='f',typ='TXM',defaut="FIXE_CSTE",into=("FIXE_CSTE",)),
+ ),
+ EVOL_ELAS =SIMP(statut='o',typ=evol_elas),
+ b_evol_elas =BLOC(condition="EVOL_ELAS != None",
+ regles=(UN_PARMI('NUME_ORDRE','LIST_INST','INST'),),
+ NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
+ LIST_INST =SIMP(statut='f',typ=listr8_sdaster),
+ INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
+ ),
+ TEMP_ZAC =SIMP(statut='f',typ='R',defaut=0.0E+0),
+ EVOL_NOLI =SIMP(statut='f',typ=evol_noli),
+ b_evol_noli =BLOC(condition="EVOL_NOLI != None",
+ INST_MAX =SIMP(statut='o',typ='R'),
+ ),
+ PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3),
+ CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")),
+
+) ;
+#& MODIF COMMANDE DATE 30/01/2006 AUTEUR D6BHHJP J.P.LEFEBVRE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+POURSUITE=MACRO(nom="POURSUITE",op=ops.build_poursuite,repetable='n',fr="Poursuite d une étude",
+ sd_prod = ops.POURSUITE,
+ UIinfo={"groupes":("Gestion du travail",)},
+ op_init = ops.POURSUITE_context,fichier_ini = 1,
+ FORMAT_HDF =SIMP(fr="sauvegarde de la base GLOBALE au format HDF",statut='f',
+ typ='TXM',defaut="NON",into=("OUI","NON",) ),
+ PAR_LOT =SIMP(fr="mode de traitement des commandes",statut='f',typ='TXM',
+ into=("OUI","NON"),defaut="OUI"),
+ BASE =FACT(fr="définition des parmètres associés aux bases JEVEUX",
+ statut='f',min=1,max=3,
+ FICHIER =SIMP(fr="nom de la base",statut='o',typ='TXM'),
+ TITRE =SIMP(statut='f',typ='TXM'),
+ CAS =SIMP(statut='f',typ='TXM'),
+ NMAX_ENRE =SIMP(fr="nombre maximum d enregistrements",statut='f',typ='I'),
+ LONG_ENRE =SIMP(fr="longueur des enregistrements",statut='f',typ='I'),
+ LONG_REPE =SIMP(fr="longueur du répertoire",statut='f',typ='I'),
+ ),
+ IMPRESSION =FACT(statut='f',min=1,max=3,
+ FICHIER =SIMP(statut='o',typ='TXM'),
+ UNITE =SIMP(statut='o',typ='I'),
+ ),
+ CATALOGUE =FACT(statut='f',min=1,max=10,
+ FICHIER =SIMP(statut='o',typ='TXM'),
+ TITRE =SIMP(statut='f',typ='TXM'),
+ UNITE =SIMP(statut='f',typ='I'),
+ ),
+ DEBUG =FACT(fr="option de déboggage reservée aux développeurs",
+ statut='f',min=1,max=1,
+ JXVERI =SIMP(fr="vérifie l intégrité de la segmentation mémoire",
+ statut='f',typ='TXM',into=('OUI','NON'),defaut='NON'),
+ JEVEUX =SIMP(fr="force les déchargement sur disque",
+ statut='f',typ='TXM',into=('OUI','NON'),defaut='NON'),
+ ENVIMA =SIMP(fr="imprime les valeurs définies dans ENVIMA",
+ statut='f',typ='TXM',into=('TEST',)),
+ ),
+ MEMOIRE =FACT(fr="mode de gestion mémoire utilisé",statut='f',min=1,max=1,
+ GESTION =SIMP(statut='f',typ='TXM',into=('COMPACTE','RAPIDE'),defaut='RAPIDE'),
+ TYPE_ALLOCATION =SIMP(statut='f',typ='I',into=(1,2,3,4),defaut=1),
+ TAILLE =SIMP(statut='f',typ='I'),
+ TAILLE_BLOC =SIMP(statut='f',typ='R',defaut=800.),
+ PARTITION =SIMP(statut='f',typ='R' ),
+ ),
+ CODE =FACT("définition d un nom pour l'esemble d'une étude",
+ statut='f',min=1,max=1,
+ NOM =SIMP(statut='o',typ='TXM'),
+ UNITE =SIMP(statut='f',typ='I',defaut=15),
+ ),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+PRE_GIBI=PROC(nom="PRE_GIBI",op=49,
+ UIinfo={"groupes":("Gestion du travail",)},
+ fr="Conversion d un fichier de maillage GIBI",
+ UNITE_GIBI =SIMP(statut='f',typ='I',defaut=19),
+ UNITE_MAILLAGE =SIMP(statut='f',typ='I',defaut=20),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+
+PRE_GMSH=PROC(nom="PRE_GMSH",op=47,
+ UIinfo={"groupes":("Gestion du travail",)},
+ fr="Conversion d un fichier universel GMSH au format Aster",
+ UNITE_GMSH =SIMP(statut='f',typ='I',defaut=19),
+ UNITE_MAILLAGE =SIMP(statut='f',typ='I',defaut=20),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+PRE_IDEAS=PROC(nom="PRE_IDEAS",op=47,
+ UIinfo={"groupes":("Gestion du travail",)},
+ fr="Conversion d un fichier universel IDEAS-SUPERTAB au format Aster",
+ UNITE_IDEAS =SIMP(statut='f',typ='I',defaut=19),
+ UNITE_MAILLAGE =SIMP(statut='f',typ='I',defaut=20),
+ CREA_GROUP_COUL =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+def prod_matr_cham_prod(MATR_ASSE,**args):
+ if AsType(MATR_ASSE) == matr_asse_depl_r : return cham_no_depl_r
+ if AsType(MATR_ASSE) == matr_asse_depl_c : return cham_no_depl_c
+ if AsType(MATR_ASSE) == matr_asse_temp_r : return cham_no_temp_r
+ if AsType(MATR_ASSE) == matr_asse_pres_c : return cham_no_pres_c
+ raise AsException("type de concept resultat non prevu")
+
+PROD_MATR_CHAM=OPER(nom="PROD_MATR_CHAM",op= 156,sd_prod=prod_matr_cham_prod,
+ fr="Effectuer le produit d une matrice par un vecteur",
+ reentrant='n',
+ UIinfo={"groupes":("Résultats et champs",)},
+ MATR_ASSE =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_depl_c,matr_asse_temp_r,matr_asse_pres_c ) ),
+ CHAM_NO =SIMP(statut='o',typ=(cham_no_depl_r,cham_no_depl_c,cham_no_temp_r,cham_no_pres_c ) ),
+ TITRE =SIMP(statut='f',typ='TXM',max='**'),
+) ;
+#& MODIF COMMANDE DATE 29/09/2004 AUTEUR MJBHHPE J.L.FLEJOU
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE VABHHTS J.PELLET
+def proj_champ_prod(RESULTAT=None,CHAM_NO_REFE=None,**args ):
+ if AsType(RESULTAT) == evol_ther : return evol_ther
+ if AsType(RESULTAT) == evol_elas : return evol_elas
+ if AsType(RESULTAT) == evol_noli : return evol_noli
+ if AsType(RESULTAT) == evol_char : return evol_char
+ if AsType(CHAM_NO_REFE) == cham_no_depl_r : return cham_no_depl_r
+ if AsType(CHAM_NO_REFE) == cham_no_depl_c : return cham_no_depl_c
+ if AsType(CHAM_NO_REFE) == cham_no_pres_c : return cham_no_pres_c
+ if AsType(CHAM_NO_REFE) == cham_no_temp_r : return cham_no_temp_r
+ if AsType(CHAM_NO_REFE) == cham_no_epsi_r : return cham_no_epsi_r
+ if AsType(CHAM_NO_REFE) == cham_no_sief_r : return cham_no_sief_r
+ if AsType(CHAM_NO_REFE) == cham_no_flux_r : return cham_no_flux_r
+ raise AsException("type de concept resultat non prevu")
+
+PROJ_CHAMP=OPER(nom="PROJ_CHAMP",op= 166,sd_prod=proj_champ_prod,reentrant='f',
+ UIinfo={"groupes":("Résultats et champs",)},
+ fr="Projection d'un champ aux noeuds sur les noeuds d'un autre maillage",
+#
+ METHODE =SIMP(statut='f',typ='TXM',defaut="ELEM",
+ into=("NUAGE_DEG_0","NUAGE_DEG_1","ELEM",) ),
+ b_nuage =BLOC(condition="(METHODE=='NUAGE_DEG_1') or (METHODE=='NUAGE_DEG_0')",
+ fr="Lissage d'un nuage de points",
+ CHAM_NO =SIMP(statut='o',typ=(cham_no_depl_r,cham_no_depl_c,cham_no_pres_c,cham_no_temp_r,
+ cham_no_epsi_r,cham_no_sief_r,cham_no_flux_r)),
+ CHAM_NO_REFE =SIMP(statut='o',typ=(cham_no_depl_r,cham_no_depl_c,cham_no_pres_c,cham_no_temp_r,
+ cham_no_epsi_r,cham_no_sief_r,cham_no_flux_r)),
+ ),
+ b_elem =BLOC(condition="METHODE=='ELEM'",
+ fr="Utilisation des fonctions de forme du maillage initial",
+ regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','FREQ','LIST_INST','LIST_FREQ','LIST_ORDRE'),
+ EXCLUS('TOUT_CHAM','NOM_CHAM',), ),
+ RESULTAT =SIMP(statut='o',typ=(evol_ther,evol_elas,evol_noli,evol_char) ),
+ SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**',
+ fr="Liste des paramètres de sensibilité.",
+ ang="List of sensitivity parameters",),
+ MODELE_1 =SIMP(statut='o',typ=modele_sdaster),
+ MODELE_2 =SIMP(statut='o',typ=modele_sdaster),
+
+ TOUT_CHAM =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ NOM_CHAM =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'),
+
+ TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**' ),
+ LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster),
+ INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ),
+ LIST_INST =SIMP(statut='f',typ=listr8_sdaster),
+ FREQ =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ),
+ LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster),
+ DISTANCE_MAX =SIMP(statut='f',typ='R',max=1,
+ fr="Distance maximale entre le noeud et l'élément le plus proche, lorsque le noeud n'est dans aucun élément."),
+ ),
+
+ VIS_A_VIS =FACT(statut='f',max='**',
+ regles=(AU_MOINS_UN('TOUT_1','GROUP_MA_1','MAILLE_1','GROUP_NO_1','NOEUD_1'),
+ AU_MOINS_UN('TOUT_2','GROUP_MA_2','MAILLE_2','GROUP_NO_2','NOEUD_2'),),
+ TOUT_1 =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA_1 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE_1 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_NO_1 =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ NOEUD_1 =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ TOUT_2 =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA_2 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE_2 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_NO_2 =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ NOEUD_2 =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ ),
+
+ TITRE =SIMP(statut='f',typ='TXM',max='**' ),
+ INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+def matr_asse_gene_prod(MATR_ASSE,MATR_ASSE_GENE,**args):
+ if AsType(MATR_ASSE) == matr_asse_depl_r : return matr_asse_gene_r
+ if AsType(MATR_ASSE_GENE) == matr_asse_gene_r : return matr_asse_gene_r
+ if AsType(MATR_ASSE) == matr_asse_depl_c : return matr_asse_gene_c
+ if AsType(MATR_ASSE_GENE) == matr_asse_gene_c : return matr_asse_gene_c
+ raise AsException("type de concept resultat non prevu")
+
+PROJ_MATR_BASE=OPER(nom="PROJ_MATR_BASE",op= 71,sd_prod=matr_asse_gene_prod,
+ fr="Projection d une matrice assemblée sur une base (modale ou de RITZ)",
+ reentrant='n',
+ UIinfo={"groupes":("Matrices/vecteurs",)},
+ regles=(UN_PARMI('MATR_ASSE','MATR_ASSE_GENE'),),
+ BASE =SIMP(statut='o',typ=(mode_meca,base_modale,mode_gene,mode_stat ) ),
+ NUME_DDL_GENE =SIMP(statut='o',typ=nume_ddl_gene ),
+ MATR_ASSE =SIMP(statut='f',typ=(matr_asse_depl_r,matr_asse_depl_c) ),
+ MATR_ASSE_GENE =SIMP(statut='f',typ=(matr_asse_gene_r,matr_asse_gene_c) ),
+) ;
+
+#& MODIF COMMANDE DATE 30/06/2004 AUTEUR MCOURTOI M.COURTOIS
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+def proj_mesu_modal_prod(MODELE_MESURE,**args):
+ vale=MODELE_MESURE['NOM_PARA']
+ if vale == 'INST' : return tran_gene
+ if vale == 'FREQ' : return harm_gene
+ if vale == 'DEFORMEE' : return mode_gene
+ raise AsException("type de concept resultat non prevu")
+
+PROJ_MESU_MODAL=OPER(nom="PROJ_MESU_MODAL",op= 193,
+ sd_prod=proj_mesu_modal_prod,
+ reentrant='n',
+ UIinfo={"groupes":("Résultats et champs",)},
+ fr="Calcul de coordonnees generalisees de mesure experimentale relatives a une base de projection",
+
+ MODELE_CALCUL =FACT(statut='o',
+ MODELE =SIMP(statut='o',typ=(modele_sdaster) ),
+ BASE =SIMP(statut='o',typ=(mode_meca,base_modale,) ),
+ ),
+ MODELE_MESURE =FACT(statut='o',
+ MODELE =SIMP(statut='o',typ=(modele_sdaster) ),
+ MESURE =SIMP(statut='o',typ=(dyna_trans,dyna_harmo,base_modale,) ),
+ NOM_PARA =SIMP(statut='f',typ='TXM',defaut="INST",into=("INST","FREQ","DEFORMEE",),),
+ NOM_CHAM =SIMP(statut='f',typ='TXM',defaut="DEPL",into=("DEPL","VITE","ACCE","SIEF_NOEU","EPSI_NOEU_DEPL",) ),
+ ),
+ CORR_MANU =FACT(statut='f',max='**',
+ regles=(PRESENT_PRESENT('NOEU_CALCUL','NOEU_MESURE'),),
+ NOEU_CALCUL =SIMP(statut='f',typ=no),
+ NOEU_MESURE =SIMP(statut='f',typ=no),
+ ),
+ RESOLUTION =FACT(statut='f',
+ METHODE =SIMP(statut='f',typ='TXM',defaut="LU",into=("LU","SVD",) ),
+ b_svd =BLOC(condition="METHODE=='SVD'",
+ EPS=SIMP(statut='f',typ='R',defaut=0. ),
+ ),
+ REGUL =SIMP(statut='f',typ='TXM',defaut="NON",into=("NON","NORM_MIN","TIK_RELA",) ),
+ b_regul =BLOC(condition="REGUL!='NON'",
+ regles=(PRESENT_ABSENT('COEF_PONDER','COEF_PONDER_F', ),),
+ COEF_PONDER =SIMP(statut='f',typ='R',defaut=0. ,max='**' ),
+ COEF_PONDER_F =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),max='**' ),
+ ),
+ ),
+
+ );
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+PROJ_SPEC_BASE=OPER(nom="PROJ_SPEC_BASE",op= 146,sd_prod=tabl_intsp,reentrant='n',
+ UIinfo={"groupes":("Matrices/vecteurs",)},
+ fr="Projection d un ou plusieurs spectres de turbulenc sur un ensemble de bases modales ",
+ regles=(UN_PARMI('BASE_ELAS_FLUI','MODE_MECA','CHAM_NO'),
+ ENSEMBLE('FREQ_INIT','FREQ_FIN','NB_POIN'),),
+ SPEC_TURB =SIMP(statut='o',typ=spectre_sdaster,validators=NoRepeat(),max='**' ),
+ BASE_ELAS_FLUI =SIMP(statut='f',typ=melasflu_sdaster ),
+ MODE_MECA =SIMP(statut='f',typ=mode_meca ),
+ CHAM_NO =SIMP(statut='f',typ=cham_no_depl_r ),
+ FREQ_INIT =SIMP(statut='f',typ='R',val_min=0.E+0 ),
+ FREQ_FIN =SIMP(statut='f',typ='R',val_min=0.E+0 ),
+ NB_POIN =SIMP(statut='f',typ='I' ),
+ OPTION =SIMP(statut='f',typ='TXM',defaut="TOUT",into=("TOUT","DIAG")),
+ GROUP_MA =SIMP(statut='f',typ=grma),
+# Quel est le type attendu derriere MODELE_INTERFACE
+ MODELE_INTERFACE=SIMP(statut='f',typ=modele_sdaster),
+ VECT_X =SIMP(statut='f',typ='R',min=3,max=3 ),
+ VECT_Y =SIMP(statut='f',typ='R',min=3,max=3 ),
+ ORIG_AXE =SIMP(statut='f',typ='R',min=3,max=3 ),
+ TITRE =SIMP(statut='f',typ='TXM',max='**' ),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+PROJ_VECT_BASE=OPER(nom="PROJ_VECT_BASE",op= 72,sd_prod=vect_asse_gene,
+ fr="Projection d un vecteur assemblé sur une base (modale ou de RITZ)",
+ reentrant='n',
+ UIinfo={"groupes":("Matrices/vecteurs",)},
+ regles=(UN_PARMI('VECT_ASSE','VECT_ASSE_GENE'),),
+ BASE =SIMP(statut='o',typ=(mode_meca,base_modale,mode_gene,mode_stat ) ),
+ NUME_DDL_GENE =SIMP(statut='o',typ=nume_ddl_gene ),
+ TYPE_VECT =SIMP(statut='f',typ='TXM',defaut="FORC"),
+ VECT_ASSE =SIMP(statut='f',typ=cham_no_depl_r ),
+ VECT_ASSE_GENE =SIMP(statut='f',typ=vect_asse_gene ),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+RECA_WEIBULL=OPER(nom="RECA_WEIBULL",op= 197,sd_prod=tabl_reca_weib,
+ fr=" ",reentrant='n',
+ UIinfo={"groupes":("Post traitements",)},
+ LIST_PARA =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=2,into=("SIGM_REFE","M",) ),
+ RESU =FACT(statut='o',max='**',
+ regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','LIST_INST',),
+ AU_MOINS_UN('TOUT','GROUP_MA','MAILLE', ),),
+ EVOL_NOLI =SIMP(statut='o',typ=(evol_noli) ),
+ MODELE =SIMP(statut='o',typ=(modele_sdaster) ),
+ CHAM_MATER =SIMP(statut='o',typ=(cham_mater) ),
+ TEMPE =SIMP(statut='f',typ='R' ),
+ LIST_INST_RUPT =SIMP(statut='o',typ='R',validators=NoRepeat(),max='**' ),
+ TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**' ),
+ INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ),
+ LIST_INST =SIMP(statut='f',typ=(listr8_sdaster) ),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ COEF_MULT =SIMP(statut='f',typ='R',defaut= 1.E0 ),
+ ),
+ OPTION =SIMP(statut='f',typ='TXM',defaut="SIGM_ELGA",into=("SIGM_ELGA","SIGM_ELMOY",) ),
+ CORR_PLAST =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON",) ),
+ METHODE =SIMP(statut='f',typ='TXM',defaut="MAXI_VRAI",into=("MAXI_VRAI","REGR_LINE",) ),
+ INCO_GLOB_RELA =SIMP(statut='f',typ='R',defaut= 1.0E-3 ),
+ ITER_GLOB_MAXI =SIMP(statut='f',typ='I',defaut= 10 ),
+ INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2 ,) ),
+ ) ;
+#& MODIF COMMANDE DATE 10/10/2005 AUTEUR MCOURTOI M.COURTOIS
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE MCOURTOI M.COURTOIS
+def recu_fonction_prod(RESULTAT=None,TABLE=None,OBSTACLE=None,
+ RESU_GENE=None,BASE_ELAS_FLUI=None,CHAM_GD=None,
+ TYPE_RESU=None,**args):
+ if AsType(RESULTAT) == dyna_harmo : return fonction_c
+# On ne sait pas interpreter les deux conditions suivantes
+ if TABLE != None :
+ if TYPE_RESU != None :
+ if TYPE_RESU == "FONCTION_C" : return fonction_c
+ if TYPE_RESU == "FONCTION" : return fonction_sdaster
+ else:
+ return fonction_sdaster
+ if RESU_GENE != None : return fonction_sdaster
+ if BASE_ELAS_FLUI != None : return fonction_sdaster
+ if RESULTAT != None : return fonction_sdaster
+ if CHAM_GD != None : return fonction_sdaster
+ if OBSTACLE != None : return fonction_sdaster
+ raise AsException("type de concept resultat non prevu")
+
+RECU_FONCTION=OPER(nom="RECU_FONCTION",op=90,sd_prod=recu_fonction_prod,
+ fr="Extraire sous forme d une fonction, l évolution temporelle d une composante d un champ ou d une table",
+ reentrant='n',
+ UIinfo={"groupes":("Fonction",)},
+ regles=(UN_PARMI('CHAM_GD','RESULTAT','RESU_GENE','TABLE','BASE_ELAS_FLUI','OBSTACLE'),),
+
+ CHAM_GD =SIMP(statut='f',typ=(cham_no_depl_r,cham_no_temp_r,cham_no_pres_r,cham_elem_sief_r,
+ cham_elem_vari_r,cham_elem_epsi_r,cham_elem_flux_r,
+ cham_elem_pres_r,) ),
+ RESULTAT =SIMP(statut='f',typ=(evol_elas,dyna_trans,evol_noli,evol_ther,dyna_harmo ) ),
+ RESU_GENE =SIMP(statut='f',typ=tran_gene),
+# concept table à créer
+ TABLE =SIMP(statut='f',typ=table_sdaster),
+ BASE_ELAS_FLUI =SIMP(statut='f',typ=melasflu_sdaster),
+ OBSTACLE =SIMP(statut='f',typ=obstacle_sdaster),
+
+ b_tran_gene = BLOC ( condition = "RESU_GENE != None",
+ fr="Récupération de la fonction concernant les chocs à partir d un concept TRAN_GENE",
+ regles=(PRESENT_PRESENT('SOUS_STRUC','INTITULE'),
+ EXCLUS('MULT_APPUI','CORR_STAT'),),
+ MULT_APPUI =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ CORR_STAT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ ACCE_MONO_APPUI =SIMP(statut='f',typ=(fonction_sdaster,formule)),
+ PARA_X =SIMP(statut='f',typ='TXM' ),
+ PARA_Y =SIMP(statut='f',typ='TXM' ),
+ SOUS_STRUC =SIMP(statut='f',typ='TXM' ),
+ LIST_PARA =SIMP(statut='f',typ=listr8_sdaster ),
+ INTITULE =SIMP(statut='f',typ='TXM' ),
+ ),
+ b_base_elas_flui = BLOC ( condition = "BASE_ELAS_FLUI != None",
+ fr="Récupération de la fonction à partir d un concept melasflu",
+ regles=(UN_PARMI('TOUT_ORDRE','NUME_ORDRE'),),
+ TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
+ NUME_MODE =SIMP(statut='o',typ='I' ),
+ PARA_X =SIMP(statut='o',typ='TXM',into=("VITE_FLU",) ),
+ PARA_Y =SIMP(statut='o',typ='TXM',into=("FREQ","AMOR") ),
+ ),
+ b_table = BLOC ( condition = "TABLE != None",fr="Récupération de la fonction à partir d un concept table",
+ regles=(UN_PARMI('PARA_X','NOM_PARA_TABL'),
+ PRESENT_PRESENT('PARA_X','PARA_Y'),),
+ PARA_X =SIMP(statut='f',typ='TXM',
+ fr="1ère colonne de la table qui définit la fonction à récupérer", ),
+ PARA_Y =SIMP(statut='f',typ='TXM',
+ fr="2ème colonne de la table qui définit la fonction à récupérer", ),
+ NOM_PARA_TABL =SIMP(statut='f',typ='TXM',into=("FONCTION",),
+ fr="Nom du paramètre de la table à qui est associé la fonction" ),
+ b_nom_para_tabl = BLOC (condition = "NOM_PARA_TABL != None",
+ TYPE_RESU =SIMP(statut='f',typ='TXM',defaut="FONCTION",into=("FONCTION","FONCTION_C") ),
+ ),
+
+ FILTRE =FACT(statut='f',max='**',
+ NOM_PARA =SIMP(statut='o',typ='TXM' ),
+ CRIT_COMP =SIMP(statut='f',typ='TXM',defaut="EQ",
+ into=("EQ","LT","GT","NE","LE","GE","VIDE",
+ "NON_VIDE","MAXI","ABS_MAXI","MINI","ABS_MINI") ),
+ b_vale =BLOC(condition = "(CRIT_COMP in ('EQ','NE','GT','LT','GE','LE'))",
+ regles=(UN_PARMI('VALE','VALE_I','VALE_K','VALE_C',),),
+ VALE =SIMP(statut='f',typ='R' ),
+ VALE_I =SIMP(statut='f',typ='I' ),
+ VALE_C =SIMP(statut='f',typ='C' ),
+ VALE_K =SIMP(statut='f',typ='TXM' ),),
+
+ CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
+ PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ),
+ ),
+ ),
+# RESULTAT
+ b_resu = BLOC ( condition = "RESULTAT != None", fr="Opérandes en cas de RESULTAT",
+ regles=(
+# A voir par Mathieu Courtois : il existe de tests (SDNX300B) qui ne satisfont pas ce UN_PARMI
+# UN_PARMI('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','TOUT_INST','LIST_INST','FREQ','LIST_FREQ'),
+ AU_MOINS_UN('MAILLE','GROUP_MA','GROUP_NO','NOEUD','NOEUD_CHOC','GROUP_NO_CHOC','NOM_PARA_RESU'),
+ PRESENT_PRESENT('MAILLE','NOM_CMP'),
+ PRESENT_PRESENT('GROUP_MA','NOM_CMP'),
+ PRESENT_PRESENT('NOEUD','NOM_CMP'),
+ PRESENT_PRESENT('GROUP_NO','NOM_CMP'),
+ PRESENT_PRESENT('POINT','NOM_CMP'),
+ EXCLUS('POINT','NOEUD'),
+ EXCLUS('GROUP_MA','MAILLE'),
+ EXCLUS('GROUP_NO','NOEUD'),
+ EXCLUS('NOEUD_CHOC','GROUP_NO_CHOC'),
+ UN_PARMI('NOM_CHAM','NOM_PARA_RESU'),),
+ NOM_CHAM =SIMP(statut='f',typ='TXM',into=C_NOM_CHAM_INTO()),
+ NOM_PARA_RESU =SIMP(statut='f',typ='TXM' ),
+ TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
+ LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster ),
+ TOUT_INST =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
+ LIST_INST =SIMP(statut='f',typ=listr8_sdaster ),
+ FREQ =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
+ LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster ),
+ b_prec = BLOC ( condition = "(INST != None) or (LIST_INST != None) or (FREQ != None) or (LIST_FREQ != None)",
+ PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ),
+ CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
+ INTERP_NUME =SIMP(statut='f',typ='TXM',into=("NON","LIN") ),
+ ),
+ NOM_CMP =SIMP(statut='f',typ='TXM' ),
+
+ MAILLE =SIMP(statut='f',typ=ma),
+ GROUP_MA =SIMP(statut='f',typ=grma),
+ NOEUD =SIMP(statut='f',typ=no),
+ GROUP_NO =SIMP(statut='f',typ=grno),
+ POINT =SIMP(statut='f',typ='I' ),
+ SOUS_POINT =SIMP(statut='f',typ='I' ),
+ NOEUD_CHOC =SIMP(statut='f',typ=no),
+ GROUP_NO_CHOC =SIMP(statut='f',typ=grno),
+ ),
+# RESU_GENE
+ b_resu_gene = BLOC ( condition = "RESU_GENE != None", fr="Opérandes en cas de RESU_GENE",
+# A voir par Mathieu Courtois : il existe de tests (SDNX300B) qui ne satisfont pas ce UN_PARMI
+# regles=(UN_PARMI('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','TOUT_INST','LIST_INST','FREQ','LIST_FREQ'),),
+ NOM_CHAM =SIMP(statut='f',typ='TXM',into=("DEPL","VITE","ACCE","PTEM") ),
+ TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
+ LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster ),
+ TOUT_INST =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
+ LIST_INST =SIMP(statut='f',typ=listr8_sdaster ),
+ FREQ =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
+ LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster ),
+ b_prec = BLOC ( condition = "(INST != None) or (LIST_INST != None) or (FREQ != None) or (LIST_FREQ != None)",
+ PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ),
+ CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
+ INTERP_NUME =SIMP(statut='f',typ='TXM',into=("NON","LIN") ),
+ ),
+ b_local_cham = BLOC ( condition = "NOM_CHAM!='PTEM'", fr="Opérandes de localisation du champ",
+ regles=(AU_MOINS_UN('MAILLE','GROUP_MA','GROUP_NO','NOEUD','NOEUD_CHOC','GROUP_NO_CHOC'),
+ PRESENT_PRESENT('MAILLE','NOM_CMP'),
+ PRESENT_PRESENT('GROUP_MA','NOM_CMP'),
+ PRESENT_PRESENT('NOEUD','NOM_CMP'),
+ PRESENT_PRESENT('GROUP_NO','NOM_CMP'),
+ PRESENT_PRESENT('POINT','NOM_CMP'),
+ EXCLUS('POINT','NOEUD'),
+ EXCLUS('GROUP_MA','MAILLE'),
+ EXCLUS('GROUP_NO','NOEUD'),
+ EXCLUS('NOEUD_CHOC','GROUP_NO_CHOC'),),
+ NOM_CMP =SIMP(statut='f',typ='TXM' ),
+
+ MAILLE =SIMP(statut='f',typ=ma),
+ GROUP_MA =SIMP(statut='f',typ=grma),
+ NOEUD =SIMP(statut='f',typ=no),
+ GROUP_NO =SIMP(statut='f',typ=grno),
+ POINT =SIMP(statut='f',typ='I' ),
+ SOUS_POINT =SIMP(statut='f',typ='I' ),
+ NOEUD_CHOC =SIMP(statut='f',typ=no),
+ GROUP_NO_CHOC =SIMP(statut='f',typ=grno),
+ ),
+ ),
+# CHAM_GD
+ b_cham_gd = BLOC ( condition = "(CHAM_GD != None)", fr="Opérandes en cas de CHAM_GD",
+
+ regles=(AU_MOINS_UN('MAILLE','GROUP_MA','GROUP_NO','NOEUD','NOEUD_CHOC','GROUP_NO_CHOC'),
+ PRESENT_PRESENT('MAILLE','NOM_CMP'),
+ PRESENT_PRESENT('GROUP_MA','NOM_CMP'),
+ PRESENT_PRESENT('NOEUD','NOM_CMP'),
+ PRESENT_PRESENT('GROUP_NO','NOM_CMP'),
+ PRESENT_PRESENT('POINT','NOM_CMP'),
+ EXCLUS('POINT','NOEUD'),
+ EXCLUS('GROUP_MA','MAILLE'),
+ EXCLUS('GROUP_NO','NOEUD'),
+ EXCLUS('NOEUD_CHOC','GROUP_NO_CHOC'),),
+ NOM_CMP =SIMP(statut='f',typ='TXM' ),
+
+ MAILLE =SIMP(statut='f',typ=ma),
+ GROUP_MA =SIMP(statut='f',typ=grma),
+ NOEUD =SIMP(statut='f',typ=no),
+ GROUP_NO =SIMP(statut='f',typ=grno),
+ POINT =SIMP(statut='f',typ='I' ),
+ SOUS_POINT =SIMP(statut='f',typ='I' ),
+ NOEUD_CHOC =SIMP(statut='f',typ=no),
+ GROUP_NO_CHOC =SIMP(statut='f',typ=grno),
+ ),
+ b_obstacle = BLOC ( condition = "OBSTACLE != None",
+ fr="Choix du repère",
+ REPERE =SIMP(statut='f',typ='TXM',into=("POLAIRE","GLOBAL") ),
+ ),
+###
+ NOM_PARA =SIMP(statut='f',typ='TXM',),
+ NOM_RESU =SIMP(statut='f',typ='TXM' ),
+ INTERPOL =SIMP(statut='f',typ='TXM',max=2,into=("NON","LIN","LOG") ),
+ PROL_DROITE =SIMP(statut='f',typ='TXM',into=("CONSTANT","LINEAIRE","EXCLU") ),
+ PROL_GAUCHE =SIMP(statut='f',typ='TXM',into=("CONSTANT","LINEAIRE","EXCLU") ),
+
+ TITRE =SIMP(statut='f',typ='TXM',max='**'),
+ INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2 ) ),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+RECU_GENE=OPER(nom="RECU_GENE",op= 76,sd_prod=vect_asse_gene,reentrant='n',
+ UIinfo={"groupes":("Résultats et champs",)},
+ fr="Récupération d un champ de grandeur à partir d un résultat en coordonnées généralisées",
+ RESU_GENE =SIMP(statut='o',typ=tran_gene ),
+ INST =SIMP(statut='o',typ='R' ),
+ NOM_CHAM =SIMP(statut='f',typ='TXM',defaut="DEPL",into=("DEPL","VITE","ACCE") ),
+ INTERPOL =SIMP(statut='f',typ='TXM',defaut="NON",into=("NON","LIN") ),
+ CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF" ,into=("ABSOLU","RELATIF") ),
+ PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE VABHHTS J.PELLET
+RECU_TABLE=OPER(nom="RECU_TABLE",op= 174,sd_prod=table_sdaster,
+ fr=" ",reentrant='n',
+ UIinfo={"groupes":("Résultats et champs",)},
+ CO =SIMP(statut='o',typ=assd),
+ regles=(UN_PARMI('NOM_TABLE','NOM_PARA')),
+ NOM_TABLE =SIMP(statut='f',typ='TXM' ),
+ NOM_PARA =SIMP(statut='f',typ='TXM',max='**'),
+ TITRE =SIMP(statut='f',typ='TXM',max='**'),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+def reso_grad_prod(MATR_ASSE,**args ):
+ if AsType(MATR_ASSE) == matr_asse_depl_r : return cham_no_depl_r
+ if AsType(MATR_ASSE) == matr_asse_temp_r : return cham_no_temp_r
+ if AsType(MATR_ASSE) == matr_asse_pres_r : return cham_no_pres_r
+ raise AsException("type de concept resultat non prevu")
+
+RESO_GRAD=OPER(nom="RESO_GRAD",op= 84,sd_prod=reso_grad_prod,
+ fr="Résolution par la méthode du gradient conjugué préconditionné",
+ reentrant='f',
+ UIinfo={"groupes":("Résolution",)},
+ MATR_ASSE =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_temp_r,matr_asse_pres_r ) ),
+ CHAM_NO =SIMP(statut='o',typ=(cham_no_depl_r,cham_no_temp_r,cham_no_pres_r ) ),
+ CHAM_CINE =SIMP(statut='f',typ=(cham_no_temp_r,cham_no_depl_r,cham_no_pres_r ) ),
+ MATR_FACT =SIMP(statut='f',typ=(matr_asse_depl_r,matr_asse_temp_r,matr_asse_pres_r ) ),
+ NMAX_ITER =SIMP(statut='f',typ='I',defaut= 0 ),
+ REPRISE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
+ RESI_RELA =SIMP(statut='f',typ='R',defaut= 1E-6 ),
+ INFO =SIMP(statut='f',typ='I',into=(1,2) ),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE VABHHTS J.PELLET
+def reso_ldlt_prod(CHAM_NO,**args ):
+ if AsType(CHAM_NO) == cham_no_temp_r : return cham_no_temp_r
+ if AsType(CHAM_NO) == cham_no_depl_r : return cham_no_depl_r
+ if AsType(CHAM_NO) == cham_no_pres_r : return cham_no_pres_r
+ if AsType(CHAM_NO) == cham_no_temp_c : return cham_no_temp_c
+ if AsType(CHAM_NO) == cham_no_depl_c : return cham_no_depl_c
+ if AsType(CHAM_NO) == cham_no_pres_c : return cham_no_pres_c
+ raise AsException("type de concept resultat non prevu")
+
+RESO_LDLT=OPER(nom="RESO_LDLT",op=15,sd_prod=reso_ldlt_prod,reentrant='f',
+ fr="Résolution en place ou hors place d un système factorisé",
+ UIinfo={"groupes":("Résolution",)},
+ MATR_FACT =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_depl_c,matr_asse_temp_r,
+ matr_asse_temp_c,matr_asse_pres_r,matr_asse_pres_c) ),
+ CHAM_NO =SIMP(statut='o',typ=(cham_no_temp_r,cham_no_depl_r,cham_no_pres_r,
+ cham_no_temp_c,cham_no_depl_c,cham_no_pres_c) ),
+ CHAM_CINE =SIMP(statut='f',typ=(cham_no_temp_r,cham_no_depl_r,cham_no_pres_c) ),
+ TITRE =SIMP(statut='f',typ='TXM',max='**'),
+ INFO =SIMP(statut='f',typ='I',into=(1,2) ),
+) ;
+#& MODIF COMMANDE DATE 30/06/2004 AUTEUR MCOURTOI M.COURTOIS
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE BOYERE E.BOYERE
+def rest_base_phys_prod(RESU_GENE,RESULTAT,**args ):
+ if AsType(RESU_GENE) == tran_gene : return dyna_trans
+ if AsType(RESU_GENE) == mode_gene : return mode_meca
+ if AsType(RESU_GENE) == mode_cycl : return mode_meca
+ if AsType(RESU_GENE) == harm_gene : return dyna_harmo
+ if AsType(RESULTAT) == mode_meca : return mode_meca
+ raise AsException("type de concept resultat non prevu")
+
+REST_BASE_PHYS=OPER(nom="REST_BASE_PHYS",op= 75,sd_prod=rest_base_phys_prod,
+ fr="Restituer dans la base physique des résultats en coordonnées généralisées",
+ reentrant='n',
+ UIinfo={"groupes":("Matrices/vecteurs",)},
+ regles=(UN_PARMI('RESU_GENE','RESULTAT'),
+ EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','LIST_INST','TOUT_INST'),
+ EXCLUS('TOUT_INST','NUME_ORDRE','INST','LIST_INST','TOUT_ORDRE'),
+# Doc U à revoir
+ EXCLUS('MULT_APPUI','CORR_STAT'),
+ EXCLUS('MULT_APPUI','NOEUD','GROUP_NO'),
+ EXCLUS('CORR_STAT','NOEUD','GROUP_NO'),
+ EXCLUS('NOEUD','GROUP_NO'),
+ PRESENT_PRESENT('RESULTAT','SQUELETTE'),
+ PRESENT_PRESENT('ACCE_MONO_APPUI','DIRECTION'),),
+ RESU_GENE =SIMP(statut='f',typ=(tran_gene,mode_gene,mode_cycl,harm_gene ) ),
+ RESULTAT =SIMP(statut='f',typ=mode_meca ),
+
+ MODE_MECA =SIMP(statut='f',typ=mode_meca ),
+ TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**' ),
+ TOUT_INST =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ),
+ LIST_INST =SIMP(statut='f',typ=listr8_sdaster ),
+ FREQ =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ),
+ LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster ),
+ CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("ABSOLU","RELATIF") ),
+ PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ),
+ INTERPOL =SIMP(statut='f',typ='TXM',defaut="NON",into=("NON","LIN") ),
+ MULT_APPUI =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ CORR_STAT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ NOM_CHAM =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=8,defaut="ACCE",
+ into=("DEPL","VITE","ACCE","ACCE_ABSOLU","EFGE_ELNO_DEPL","SIPO_ELNO_DEPL",
+ "SIGM_ELNO_DEPL","FORC_NODA",) ),
+ TOUT_CHAM =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+
+ ACCE_MONO_APPUI =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ DIRECTION =SIMP(statut='f',typ='R',min=3,max=3 ),
+
+ SQUELETTE =SIMP(statut='f',typ=squelette ),
+ SOUS_STRUC =SIMP(statut='f',typ='TXM' ),
+ SECTEUR =SIMP(statut='f',typ='I',defaut= 1 ),
+ TITRE =SIMP(statut='f',typ='TXM',max='**' ),
+) ;
+#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+REST_SPEC_PHYS=OPER(nom="REST_SPEC_PHYS",op= 148,sd_prod=tabl_intsp,
+ reentrant='n',
+ UIinfo={"groupes":("Matrices/vecteurs",)},
+ regles=(AU_MOINS_UN('BASE_ELAS_FLUI','MODE_MECA'),),
+ BASE_ELAS_FLUI =SIMP(statut='f',typ=melasflu_sdaster ),
+ MODE_MECA =SIMP(statut='f',typ=mode_meca ),
+ BANDE =SIMP(statut='f',typ='R',min=2,validators=NoRepeat(),max=2 ),
+ NUME_ORDRE =SIMP(statut='f',typ='I' ,validators=NoRepeat(),max='**' ),
+ INTE_SPEC_GENE =SIMP(statut='o',typ=tabl_intsp ),
+ NOEUD =SIMP(statut='o',typ=no ,max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,max='**'),
+ NOM_CMP =SIMP(statut='o',typ='TXM',max='**'),
+ NOM_CHAM =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=7,
+ into=("DEPL","VITE","ACCE","EFGE_ELNO_DEPL",
+ "SIPO_ELNO_DEPL","SIGM_ELNO_DEPL","FORC_NODA") ),
+ MODE_STAT =SIMP(statut='f',typ=(mode_stat_depl,mode_stat_acce,mode_stat_forc), ),
+ EXCIT =FACT(statut='f',
+ NOEUD =SIMP(statut='o',typ=no ,max='**'),
+ NOM_CMP =SIMP(statut='o',typ='TXM',max='**'),
+ ),
+ MOUVEMENT =SIMP(statut='f',typ='TXM',defaut="ABSOLU",into=("RELATIF","ABSOLU","DIFFERENTIEL") ),
+ OPTION =SIMP(statut='f',typ='TXM',defaut="DIAG_DIAG",
+ into=("DIAG_TOUT","DIAG_DIAG","TOUT_TOUT","TOUT_DIAG") ),
+ TITRE =SIMP(statut='f',typ='TXM',max='**' ),
+) ;
+#& MODIF COMMANDE DATE 09/11/2005 AUTEUR ASSIRE A.ASSIRE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+
+from Macro.stanley_ops import stanley_ops
+
+STANLEY=MACRO(nom="STANLEY",op=stanley_ops,sd_prod=None,
+ reentrant='n',
+ UIinfo={"groupes":("Outils métier",)},
+ fr="Outil de post-traitement interactif Stanley ",
+ RESULTAT =SIMP(statut='f',typ=(evol_elas,evol_noli,evol_ther) ),
+ MODELE =SIMP(statut='f',typ=modele_sdaster),
+ CHAM_MATER =SIMP(statut='f',typ=cham_mater),
+ CARA_ELEM =SIMP(statut='f',typ=cara_elem),
+ DISPLAY =SIMP(statut='f',typ='TXM'),
+) ;
+#& MODIF COMMANDE DATE 09/11/2004 AUTEUR NICOLAS O.NICOLAS
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE PBADEL P.BADEL
+STAT_NON_LINE=OPER(nom="STAT_NON_LINE",op=70,sd_prod=evol_noli,
+ fr="Analyse mécanique statique non linéaire",
+ reentrant='f',
+ UIinfo={"groupes":("Résolution",)},
+ regles=(AU_MOINS_UN('COMP_INCR','COMP_ELAS'),),
+ MODELE =SIMP(statut='o',typ=modele_sdaster),
+ CHAM_MATER =SIMP(statut='o',typ=cham_mater),
+ CARA_ELEM =SIMP(statut='f',typ=cara_elem),
+ EXCIT =FACT(statut='o',max='**',
+ CHARGE =SIMP(statut='o',typ=char_meca),
+ FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ TYPE_CHARGE =SIMP(statut='f',typ='TXM',defaut="FIXE_CSTE",
+ into=("FIXE_CSTE","FIXE_PILO","SUIV","DIDI")),
+ ),
+ SOUS_STRUC =FACT(statut='f',min=01,max='**',
+ regles=(UN_PARMI('TOUT','MAILLE'),),
+ CAS_CHARGE =SIMP(statut='o',typ='TXM' ),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ MAILLE =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**',),
+ ),
+ VARI_COMM =FACT(statut='f',
+ regles=(AU_MOINS_UN('IRRA','CORROSION'),),
+ IRRA =SIMP(statut='f',typ=evol_varc),
+ CORROSION =SIMP(statut='f',typ=carte_corr_r),
+ ),
+ COMP_INCR =C_COMP_INCR(),
+ COMP_ELAS =FACT(statut='f',max='**',
+ RELATION =SIMP(statut='o',typ='TXM',defaut="ELAS",
+ into=("ELAS","ELAS_VMIS_LINE","ELAS_VMIS_TRAC",
+ "ELAS_POUTRE_GR","CABLE")),
+ ELAS =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
+ ELAS_VMIS_TRAC =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
+ ELAS_VMIS_LINE =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
+ ELAS_POUTRE_GR =SIMP(statut='c',typ='I',defaut=3,into=(3,)),
+ CABLE =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
+ DEFORMATION =SIMP(statut='f',typ='TXM',defaut="PETIT" ,into=("PETIT","GREEN","GREEN_GR",) ),
+ regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ ),
+ b_reuse =BLOC(condition = "reuse",fr="en mode concept reentrant : ETAT_INIT obligatoire",
+ ETAT_INIT =FACT(statut='o',
+ regles=(AU_MOINS_UN('EVOL_NOLI','DEPL','SIGM','VARI','VARI_NON_LOCAL',),
+ EXCLUS('EVOL_NOLI','DEPL',),
+ EXCLUS('EVOL_NOLI','SIGM',),
+ EXCLUS('EVOL_NOLI','VARI',),
+ EXCLUS('EVOL_NOLI','VARI_NON_LOCAL',),
+ EXCLUS('NUME_ORDRE','INST'), ),
+ DEPL =SIMP(statut='f',typ=cham_no_depl_r),
+ SIGM =SIMP(statut='f',typ=(cham_elem_sief_r,carte_sief_r)),
+ VARI =SIMP(statut='f',typ=cham_elem_vari_r),
+ VARI_NON_LOCAL =SIMP(statut='f',typ=cham_no_vanl_r),
+ EVOL_NOLI =SIMP(statut='f',typ=evol_noli),
+ NUME_ORDRE =SIMP(statut='f',typ='I'),
+ INST =SIMP(statut='f',typ='R'),
+ PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3 ),
+ CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
+ NUME_DIDI =SIMP(statut='f',typ='I'),
+ INST_ETAT_INIT =SIMP(statut='f',typ='R'),
+ ),),
+ b_not_reuse =BLOC(condition = "not reuse",fr="en mode concept non reentrant : ETAT_INIT facultatif",
+ ETAT_INIT =FACT(statut='f',
+ regles=(AU_MOINS_UN('EVOL_NOLI','DEPL','SIGM','VARI','VARI_NON_LOCAL',),
+ EXCLUS('EVOL_NOLI','DEPL',),
+ EXCLUS('EVOL_NOLI','SIGM',),
+ EXCLUS('EVOL_NOLI','VARI',),
+ EXCLUS('EVOL_NOLI','VARI_NON_LOCAL',),
+ EXCLUS('NUME_ORDRE','INST'), ),
+ DEPL =SIMP(statut='f',typ=cham_no_depl_r),
+ SIGM =SIMP(statut='f',typ=(cham_elem_sief_r,carte_sief_r)),
+ VARI =SIMP(statut='f',typ=cham_elem_vari_r),
+ VARI_NON_LOCAL =SIMP(statut='f',typ=cham_no_vanl_r),
+ EVOL_NOLI =SIMP(statut='f',typ=evol_noli),
+ NUME_ORDRE =SIMP(statut='f',typ='I'),
+ INST =SIMP(statut='f',typ='R'),
+ PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3 ),
+ CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
+ NUME_DIDI =SIMP(statut='f',typ='I'),
+ INST_ETAT_INIT =SIMP(statut='f',typ='R'),
+ ),),
+ INCREMENT =FACT(statut='o',
+ regles=(EXCLUS('NUME_INST_INIT','INST_INIT'),
+ EXCLUS('NUME_INST_FIN','INST_FIN'),),
+ LIST_INST =SIMP(statut='o',typ=listr8_sdaster),
+ EVOLUTION =SIMP(statut='f',typ='TXM',defaut="CHRONOLOGIQUE",
+ into=("CHRONOLOGIQUE","RETROGRADE","SANS",) ),
+ NUME_INST_INIT =SIMP(statut='f',typ='I'),
+ INST_INIT =SIMP(statut='f',typ='R'),
+ NUME_INST_FIN =SIMP(statut='f',typ='I'),
+ INST_FIN =SIMP(statut='f',typ='R'),
+ PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3 ),
+ SUBD_PAS =SIMP(statut='f',typ='I',defaut=1),
+ SUBD_PAS_MINI =SIMP(statut='f',typ='R'),
+ COEF_SUBD_PAS_1 =SIMP(statut='f',typ='R',defaut= 1.0E+0),
+ OPTI_LIST_INST =SIMP(statut='f',typ='TXM',into=("INCR_MAXI",),),
+ NOM_CHAM =SIMP(statut='f',typ='TXM',),
+ NOM_CMP =SIMP(statut='f',typ='TXM',),
+ VALE =SIMP(statut='f',typ='R'),
+ ),
+ NEWTON =FACT(statut='d',
+ REAC_INCR =SIMP(statut='f',typ='I',defaut= 1 ),
+ PREDICTION =SIMP(statut='f',typ='TXM',into=("DEPL_CALCULE","TANGENTE","ELASTIQUE","EXTRAPOL") ),
+ MATRICE =SIMP(statut='f',typ='TXM',defaut="TANGENTE",into=("TANGENTE","ELASTIQUE") ),
+ PAS_MINI_ELAS =SIMP(statut='f',typ='R',defaut=0.0E+0),
+ REAC_ITER =SIMP(statut='f',typ='I',defaut=0),
+ REAC_ITER_ELAS =SIMP(statut='f',typ='I',defaut=0),
+ EVOL_NOLI =SIMP(statut='f',typ=evol_noli),
+ ),
+ RECH_LINEAIRE =FACT(statut='f',
+ RESI_LINE_RELA =SIMP(statut='f',typ='R',defaut= 1.0E-1 ),
+ ITER_LINE_MAXI =SIMP(statut='f',typ='I',defaut= 3),
+ ITER_LINE_CRIT =SIMP(statut='f',typ='I',defaut= 20),
+ PAS_MINI_CRIT =SIMP(statut='f',typ='R',defaut=0.0E+0),
+ RHO_MIN =SIMP(statut='f',typ='R',defaut=1.0E-2),
+ RHO_MAX =SIMP(statut='f',typ='R',defaut=1.0E+1),
+ RHO_EXCL =SIMP(statut='f',typ='R',defaut=0.9E-2),
+ ),
+ PILOTAGE =FACT(statut='f',
+ regles=(EXCLUS('NOEUD','GROUP_NO'),PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),),
+ TYPE =SIMP(statut='o',typ='TXM',into=("DDL_IMPO","LONG_ARC","PRED_ELAS","PRED_ELAS_INCR","DEFORMATION","ANA_LIM") ),
+ COEF_MULT =SIMP(statut='f',typ='R',defaut= 1.0E+0),
+ ETA_PILO_MAX =SIMP(statut='f',typ='R'),
+ ETA_PILO_MIN =SIMP(statut='f',typ='R'),
+ ETA_PILO_R_MAX =SIMP(statut='f',typ='R'),
+ ETA_PILO_R_MIN =SIMP(statut='f',typ='R'),
+ PROJ_BORNES =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")),
+ SELECTION =SIMP(statut='f',typ='TXM',defaut="NORM_INCR_DEPL", into=("RESIDU","ANGL_INCR_DEPL","NORM_INCR_DEPL") ),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA =SIMP(statut='f',typ=grma ,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno ,validators=NoRepeat(),max='**'),
+ NOM_CMP =SIMP(statut='f',typ='TXM',max='**'),
+ ),
+ CONVERGENCE =FACT(statut='d',
+ regles=(PRESENT_ABSENT('RESI_REFE_RELA','RESI_GLOB_MAXI','RESI_GLOB_RELA'),),
+ SIGM_REFE =SIMP(statut='f',typ='R'),
+ EPSI_REFE =SIMP(statut='f',typ='R'),
+ FLUX_THER_REFE =SIMP(statut='f',typ='R'),
+ FLUX_HYD1_REFE =SIMP(statut='f',typ='R'),
+ FLUX_HYD2_REFE =SIMP(statut='f',typ='R'),
+ RESI_REFE_RELA =SIMP(statut='f',typ='R'),
+ RESI_GLOB_MAXI =SIMP(statut='f',typ='R'),
+ RESI_GLOB_RELA =SIMP(statut='f',typ='R'),
+ ITER_GLOB_MAXI =SIMP(statut='f',typ='I',defaut=10),
+ ITER_GLOB_ELAS =SIMP(statut='f',typ='I',defaut=25),
+ ARRET =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")),
+ RESI_INTE_RELA =SIMP(statut='f',typ='R'
+ ,defaut= 1.0E-6),
+ ITER_INTE_MAXI =SIMP(statut='f',typ='I',defaut= 10 ),
+ ITER_INTE_PAS =SIMP(statut='f',typ='I',defaut= 0 ),
+ RESO_INTE =SIMP(statut='f',typ='TXM',defaut="IMPLICITE",
+ into=("RUNGE_KUTTA_2","RUNGE_KUTTA_4","IMPLICITE")),
+ ),
+ PARM_THETA =SIMP(statut='f',typ='R'
+ ,defaut= 1. ),
+ SOLVEUR =FACT(statut='d',
+ METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC") ),
+ b_mult_front =BLOC(condition = "METHODE == 'MULT_FRONT' ",fr="Paramètres de la méthode multi frontale",
+ RENUM =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ),
+ ),
+ b_ldlt =BLOC(condition = "METHODE == 'LDLT' ",fr="Paramètres de la méthode LDLT",
+ RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("RCMK","SANS") ),
+ ),
+ b_ldlt_mult =BLOC(condition = "METHODE == 'LDLT' or METHODE == 'MULT_FRONT' ",
+ fr="Paramètres relatifs à la non inversibilité de la matrice à factorise",
+ NPREC =SIMP(statut='f',typ='I',defaut= 8 ),
+ STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON","DECOUPE") ),
+ ),
+ b_gcpc =BLOC(condition = "METHODE == 'GCPC' ", fr="Paramètres de la méthode du gradient conjugué",
+ PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC",),defaut="LDLT_INC" ),
+ NIVE_REMPLISSAGE=SIMP(statut='f',typ='I',defaut= 0 ),
+ RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ),
+ RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ),
+ NMAX_ITER =SIMP(statut='f',typ='I',defaut= 0 ),
+ ),
+ SYME =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
+ ),
+ ARCHIVAGE =FACT(statut='f',
+ regles=(EXCLUS('PAS_ARCH','LIST_INST','INST'),
+ EXCLUS('ARCH_ETAT_INIT','NUME_INIT'), ),
+ LIST_INST =SIMP(statut='f',typ=(listr8_sdaster) ),
+ INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ),
+ PAS_ARCH =SIMP(statut='f',typ='I' ),
+ PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3),
+ ARCH_ETAT_INIT =SIMP(statut='f',typ='TXM',into=("OUI",)),
+ NUME_INIT =SIMP(statut='f',typ='I'),
+ DETR_NUME_SUIV =SIMP(statut='f',typ='TXM',into=("OUI",)),
+ CHAM_EXCLU =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',into=("DEPL","SIEF_ELGA","VARI_ELGA",
+ "VARI_NON_LOCAL","LANL_ELGA")),
+ ),
+ OBSERVATION =FACT(statut='f',max='**',
+ regles=(UN_PARMI('NOEUD','GROUP_NO','MAILLE'),
+ PRESENT_PRESENT('MAILLE','POINT'),),
+ NOM_CHAM =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',into=("DEPL","VITE","ACCE","SIEF_ELGA",
+ "VARI_ELGA","DEPL_ABSOLU","VITE_ABSOLU","ACCE_ABSOLU")),
+ NOM_CMP =SIMP(statut='o',typ='TXM',max='**' ),
+ LIST_ARCH =SIMP(statut='f',typ=listis_sdaster),
+ LIST_INST =SIMP(statut='f',typ=listr8_sdaster),
+ INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ),
+ PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3 ),
+ CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
+ PAS_OBSE =SIMP(statut='f',typ='I'),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ POINT =SIMP(statut='f',typ='I' ,validators=NoRepeat(),max='**'),
+ ),
+ CRIT_FLAMB =FACT(statut='f',min=1,max=1,
+ NB_FREQ =SIMP(statut='f',typ='I',max=1,defaut=3),
+ CHAR_CRIT =SIMP(statut='f',typ='R',min=2,max=2,defaut=(-10.0,10),
+ fr="Valeur des deux charges critiques délimitant la bande de recherche en HPP"),
+ ),
+ SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**',
+ fr="Liste des paramètres de sensibilité",
+ ang="List of sensitivity parameters"),
+ SOLV_NON_LOCAL =FACT(statut='f',
+ METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC") ),
+ b_mult_front =BLOC(condition = "METHODE == 'MULT_FRONT' ",fr="Paramètres de la méthode multi frontale",
+ RENUM =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ),
+ ),
+ b_ldlt =BLOC(condition = "METHODE == 'LDLT' ",fr="Paramètres de la méthode LDLT",
+ RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("RCMK","SANS") ),
+ ),
+ b_ldlt_mult =BLOC(condition = "METHODE == 'LDLT' or METHODE == 'MULT_FRONT' ",
+ fr="Paramètres relatifs à la non inversibilité de la matrice à factorise",
+ NPREC =SIMP(statut='f',typ='I',defaut= 8 ),
+ STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+ ),
+ b_gcpc =BLOC(condition = "METHODE == 'GCPC' ", fr="Paramètres de la méthode du gradient conjugué",
+ PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC",),defaut="LDLT_INC" ),
+ NIVE_REMPLISSAGE=SIMP(statut='f',typ='I',defaut= 0 ),
+ RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ),
+ NMAX_ITER =SIMP(statut='f',typ='I',defaut= 0 ),
+ ),
+ EPS =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
+ ),
+ LAGR_NON_LOCAL =FACT(statut='f',
+ ITER_DUAL_MAXI =SIMP(statut='f',typ='I',defaut= 50),
+ RESI_DUAL_ABSO =SIMP(statut='o',typ='R'),
+ RESI_PRIM_ABSO =SIMP(statut='o',typ='R'),
+ R =SIMP(statut='f',typ='R',defaut= 1000.),
+ ITER_PRIM_MAXI =SIMP(statut='f',typ='I',defaut= 10),
+ ),
+ INFO =SIMP(statut='f',typ='I',into=(1,2) ),
+ TITRE =SIMP(statut='f',typ='TXM',max='**' ),
+ ) ;
+#& MODIF COMMANDE DATE 24/05/2006 AUTEUR CIBHHLV L.VIVAN
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+
+# RESPONSABLE MCOURTOI M.COURTOIS
+
+from Macro.test_fichier_ops import test_fichier_ops
+
+TEST_FICHIER=MACRO(nom="TEST_FICHIER", op=test_fichier_ops,
+ UIinfo={"groupes":("Impression",)},
+
+ UNITE =SIMP(statut='f',typ='I',defaut=8),
+ FICHIER =SIMP(statut='o',typ='TXM',validators=LongStr(1,255)),
+ NB_CHIFFRE =SIMP(statut='o',typ='I',), # defaut=6 pas de defaut, il faut
+ EPSILON =SIMP(statut='o',typ='R',), # defaut=1.E-12 se poser la question !
+ EXPR_IGNORE =SIMP(statut='f',typ='TXM',max='**',
+ fr="Liste d'expressions régulières permettant d'ignorer certaines lignes"),
+ VALE_K =SIMP(statut='o',typ='TXM' ),
+ REFERENCE =SIMP(statut='f',typ='TXM',
+ into=("ANALYTIQUE","SOURCE_EXTERNE","NON_REGRESSION","AUTRE_ASTER") ),
+
+ b_version =BLOC(condition = "REFERENCE == 'NON_REGRESSION'",
+ VERSION =SIMP(statut='f',typ='TXM' ),
+ ),
+
+ INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
+)
+#& MODIF COMMANDE DATE 23/08/2004 AUTEUR CIBHHLV L.VIVAN
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE MCOURTOI M.COURTOIS
+TEST_FONCTION=PROC(nom="TEST_FONCTION",op= 135,fr="Extraction d une valeur numérique ou d un attribut de fonction",
+ UIinfo={"groupes":("Impression",)},
+ UNITE =SIMP(statut='f',typ='I',defaut=8),
+ TEST_NOOK =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
+ VALEUR =FACT(statut='f',max='**',
+ fr="Tester la valeur d une fonction ou d une nappe",
+ regles=(UN_PARMI('VALE_REFE','VALE_REFE_C', ),),
+ FONCTION =SIMP(statut='o',typ=(fonction_sdaster,fonction_c,nappe_sdaster,formule) ),
+ NOM_PARA =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=2),
+ VALE_PARA =SIMP(statut='o',typ='R' ,validators=NoRepeat(),max=2),
+ VALE_REFE =SIMP(statut='f',typ='R' ),
+ VALE_REFE_C =SIMP(statut='f',typ='C' ),
+ CRITERE =SIMP(statut='f',typ='TXM',fr="Critère de comparaison avec la solution de référence",
+ defaut="RELATIF",into=("RELATIF","ABSOLU") ),
+ PRECISION =SIMP(statut='f',typ='R',fr="Ecart maximal autorisé avec la solution de référence",
+ defaut= 1.E-3 ),
+ REFERENCE =SIMP(statut='f',typ='TXM',
+ into=("ANALYTIQUE","SOURCE_EXTERNE","NON_REGRESSION","AUTRE_ASTER") ),
+ b_version = BLOC (condition = "REFERENCE == 'NON_REGRESSION'",
+ VERSION =SIMP(statut='f',typ='TXM' ),
+ ),
+ ),
+ ATTRIBUT =FACT(statut='f',max='**',
+ fr="Tester la valeur d un attribut d une fonction ou d''une nappe",
+ FONCTION =SIMP(statut='o',typ=(fonction_sdaster,fonction_c,nappe_sdaster,formule) ),
+ PARA =SIMP(statut='f',typ='R' ),
+ CRIT_PARA =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
+ PREC_PARA =SIMP(statut='f',typ='R',defaut= 1.E-3 ),
+ ATTR =SIMP(statut='o',typ='TXM',
+ into=("NOM_PARA","NOM_RESU","PROL_DROITE","PROL_GAUCHE","INTERPOL",
+ "PROL_GAUCHE_FONC","PROL_DROITE_FONC","INTERPOL_FONC","NOM_PARA_FONC") ),
+ ATTR_REFE =SIMP(statut='o',typ='TXM' ),
+ REFERENCE =SIMP(statut='f',typ='TXM',
+ into=("ANALYTIQUE","SOURCE_EXTERNE","NON_REGRESSION","AUTRE_ASTER") ),
+ b_version =BLOC(condition = "REFERENCE == 'NON_REGRESSION'",
+ VERSION =SIMP(statut='f',typ='TXM' ),
+ ),
+ ),
+ TABL_INTSP =FACT(statut='f',max='**',
+ fr="Tester la valeur d une fonction contenue dans une table interspectrale",
+ regles=(UN_PARMI('NUME_ORDRE_I','NOEUD_I'),),
+ INTE_SPEC =SIMP(statut='o',typ=tabl_intsp ),
+ NOEUD_I =SIMP(statut='f',typ=no),
+ NUME_ORDRE_I =SIMP(statut='f',typ='I' ),
+ b_nume_ordre_i = BLOC (condition = "NUME_ORDRE_I != None",
+ NUME_ORDRE_J =SIMP(statut='o',typ='I' ),
+ ),
+ b_noeud_i = BLOC (condition = "NOEUD_I != None",
+ NOEUD_J =SIMP(statut='o',typ=no),
+ NOM_CMP_I =SIMP(statut='o',typ='TXM' ),
+ NOM_CMP_J =SIMP(statut='o',typ='TXM' ),
+ ),
+ NUME_VITE_FLUI =SIMP(statut='f',typ='I' ),
+ VALE_PARA =SIMP(statut='o',typ='R' ),
+ VALE_REFE_C =SIMP(statut='o',typ='C' ),
+ CRITERE =SIMP(statut='f',typ='TXM',fr="Critère de comparaison avec la solution de référence",
+ defaut="RELATIF",into=("RELATIF","ABSOLU") ),
+ PRECISION =SIMP(statut='f',typ='R',fr="Ecart maximal autorisé avec la solution de référence",
+ defaut= 1.E-3 ),
+ REFERENCE =SIMP(statut='f',typ='TXM',
+ into=("ANALYTIQUE","SOURCE_EXTERNE","NON_REGRESSION","AUTRE_ASTER") ),
+ b_version =BLOC(condition = "REFERENCE == 'NON_REGRESSION'",
+ VERSION =SIMP(statut='f',typ='TXM' ),
+ ),
+ ),
+) ;
+#& MODIF COMMANDE DATE 23/08/2004 AUTEUR CIBHHLV L.VIVAN
+# RESPONSABLE VABHHTS J.PELLET
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
+TEST_RESU=PROC(nom="TEST_RESU",op=23,
+ UIinfo={"groupes":("Impression",)},
+ fr="Extraction d une valeur et comparaison à une valeur de référence",
+ regles=(AU_MOINS_UN('CHAM_NO','CHAM_ELEM','RESU','OBJET')),
+ UNITE =SIMP(statut='f',typ='I',defaut=8),
+
+ CHAM_NO =FACT(statut='f',max='**',
+ regles=(UN_PARMI('NOEUD','GROUP_NO','TYPE_TEST'),
+ EXCLUS('NOEUD','GROUP_NO'),
+ PRESENT_PRESENT('NOEUD','NOM_CMP'),
+ PRESENT_PRESENT( 'GROUP_NO','NOM_CMP'),
+ UN_PARMI('VALE','VALE_I','VALE_C'),),
+ CHAM_GD =SIMP(statut='o',typ=cham_no_sdaster),
+ NOEUD =SIMP(statut='f',typ=no ),
+ GROUP_NO =SIMP(statut='f',typ=grno ),
+ NOM_CMP =SIMP(statut='f',typ='TXM'),
+ TYPE_TEST =SIMP(statut='f',typ='TXM',into=("SOMM_ABS","SOMM","MAX","MIN")),
+ VALE =SIMP(statut='f',typ='R'),
+ VALE_I =SIMP(statut='f',typ='I'),
+ VALE_C =SIMP(statut='f',typ='C'),
+ CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")),
+ PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3),
+ REFERENCE =SIMP(statut='f',typ='TXM',into=("ANALYTIQUE","SOURCE_EXTERNE",
+ "NON_REGRESSION","AUTRE_ASTER")),
+ VERSION =SIMP(statut='f',typ='TXM'),
+ ),
+
+ CHAM_ELEM =FACT(statut='f',max='**',
+ regles=(UN_PARMI('MAILLE','TYPE_TEST',),
+ EXCLUS('NOEUD','GROUP_NO','POINT'),
+ PRESENT_PRESENT('NOEUD','NOM_CMP'),
+ PRESENT_PRESENT('GROUP_NO','NOM_CMP'),
+ PRESENT_PRESENT('POINT','NOM_CMP'),
+ UN_PARMI('VALE','VALE_I','VALE_C'), ),
+ CHAM_GD =SIMP(statut='o',typ=cham_elem_sdaster),
+ MAILLE =SIMP(statut='f',typ=ma),
+ POINT =SIMP(statut='f',typ='I' ),
+ SOUS_POINT =SIMP(statut='f',typ='I'),
+ NOEUD =SIMP(statut='f',typ=no),
+ GROUP_NO =SIMP(statut='f',typ=grno),
+ NOM_CMP =SIMP(statut='f',typ='TXM',max='**'),
+ TYPE_TEST =SIMP(statut='f',typ='TXM',into=("SOMM_ABS","SOMM","MAX","MIN") ),
+ VALE =SIMP(statut='f',typ='R' ),
+ VALE_I =SIMP(statut='f',typ='I' ),
+ VALE_C =SIMP(statut='f',typ='C' ),
+ CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")),
+ PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3 ),
+ REFERENCE =SIMP(statut='f',typ='TXM',into=("ANALYTIQUE","SOURCE_EXTERNE",
+ "NON_REGRESSION","AUTRE_ASTER") ),
+ VERSION =SIMP(statut='f',typ='TXM' ),
+ ),
+
+ RESU =FACT(statut='f',max='**',
+ regles=(UN_PARMI('NUME_ORDRE','INST','FREQ','NUME_MODE','NOEUD_CMP','NOM_CAS','ANGL'),
+ UN_PARMI('NOM_CHAM','PARA'),
+ PRESENT_ABSENT('PARA','NOEUD','GROUP_NO','POINT','NOM_CMP','TYPE_TEST'),
+ PRESENT_PRESENT('NOM_CMP','NOM_CHAM'),
+ EXCLUS('NOEUD','GROUP_NO','POINT','TYPE_TEST'),
+ PRESENT_PRESENT('NOEUD','NOM_CMP'),
+ PRESENT_PRESENT('GROUP_NO','NOM_CMP'),
+ PRESENT_PRESENT('POINT','NOM_CMP'),
+ UN_PARMI('VALE','VALE_I','VALE_C') ,),
+ RESULTAT =SIMP(statut='o',typ=resultat_sdaster),
+ SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),
+ fr="Paramètre de sensibilité.",
+ ang="Sensitivity parameter"),
+ NUME_ORDRE =SIMP(statut='f',typ='I'),
+ INST =SIMP(statut='f',typ='R'),
+ FREQ =SIMP(statut='f',typ='R'),
+ NUME_MODE =SIMP(statut='f',typ='I'),
+ NOEUD_CMP =SIMP(statut='f',typ='TXM',max='**'),
+ NOM_CAS =SIMP(statut='f',typ='TXM'),
+ ANGL =SIMP(statut='f',typ='R'),
+ PARA =SIMP(statut='f',typ='TXM'),
+ NOM_CHAM =SIMP(statut='f',typ='TXM',into=C_NOM_CHAM_INTO()),
+ NOM_CMP =SIMP(statut='f',typ='TXM',max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,max='**'),
+ NOEUD =SIMP(statut='f',typ=no ,max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno ,max='**'),
+ POINT =SIMP(statut='f',typ='I'),
+ SOUS_POINT =SIMP(statut='f',typ='I'),
+ TYPE_TEST =SIMP(statut='f',typ='TXM',into=("SOMM_ABS","SOMM","MAX","MIN")),
+ VALE =SIMP(statut='f',typ='R'),
+ VALE_I =SIMP(statut='f',typ='I'),
+ VALE_C =SIMP(statut='f',typ='C'),
+ CRITERE =SIMP(statut='f',typ='TXM',into=("RELATIF","ABSOLU"),max=2),
+ PRECISION =SIMP(statut='f',typ='R',max=2),
+ REFERENCE =SIMP(statut='f',typ='TXM',into=("ANALYTIQUE","SOURCE_EXTERNE",
+ "NON_REGRESSION","AUTRE_ASTER",) ),
+ VERSION =SIMP(statut='f',typ='TXM' ),
+ ),
+
+ OBJET =FACT(statut='f',max='**',
+ regles=(UN_PARMI('S_I','S_R','RESUME',),
+ UN_PARMI('VALE','VALE_I','VALE_C','RESUME','S_R','S_I'),),
+ NOM =SIMP(statut='o',typ='TXM'),
+ S_R =SIMP(statut='f',typ='R'),
+ S_I =SIMP(statut='f',typ='I'),
+ RESUME =SIMP(statut='f',typ='I'),
+ VALE =SIMP(statut='f',typ='R'),
+ VALE_I =SIMP(statut='f',typ='I'),
+ VALE_C =SIMP(statut='f',typ='C'),
+ CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")),
+ PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3 ),
+ REFERENCE =SIMP(statut='f',typ='TXM',into=("ANALYTIQUE","SOURCE_EXTERNE",
+ "NON_REGRESSION","AUTRE_ASTER",) ),
+ VERSION =SIMP(statut='f',typ='TXM' ),
+ ),
+) ;
+#& MODIF COMMANDE DATE 23/08/2004 AUTEUR CIBHHLV L.VIVAN
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE VABHHTS J.PELLET
+TEST_TABLE=PROC(nom="TEST_TABLE",op= 177,
+ UIinfo={"groupes":("Impression",)},
+ regles=(UN_PARMI('VALE','VALE_I','VALE_C', ),),
+ UNITE =SIMP(statut='f',typ='I',defaut=8),
+# concept table_sdaster à tester
+ TABLE =SIMP(statut='o',typ=table_sdaster),
+
+ SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),
+ fr="Paramètre de sensibilité.",
+ ang="Sensitivity parameter"),
+ FILTRE =FACT(statut='f',max='**',
+ NOM_PARA =SIMP(statut='o',typ='TXM' ),
+ CRIT_COMP =SIMP(statut='f',typ='TXM',defaut="EQ",
+ into=("EQ","LT","GT","NE","LE","GE","VIDE",
+ "NON_VIDE","MAXI","ABS_MAXI","MINI","ABS_MINI") ),
+ b_vale =BLOC(condition = "(CRIT_COMP in ('EQ','NE','GT','LT','GE','LE'))",
+ regles=(UN_PARMI('VALE','VALE_I','VALE_K','VALE_C',),),
+ VALE =SIMP(statut='f',typ='R' ),
+ VALE_I =SIMP(statut='f',typ='I' ),
+ VALE_C =SIMP(statut='f',typ='C' ),
+ VALE_K =SIMP(statut='f',typ='TXM' ),),
+
+ CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
+ PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ),
+ ),
+ TYPE_TEST =SIMP(statut='f',typ='TXM',into=("SOMM_ABS","SOMM","MAX","MIN") ),
+ NOM_PARA =SIMP(statut='o',typ='TXM' ),
+ VALE =SIMP(statut='f',typ='R' ),
+ VALE_I =SIMP(statut='f',typ='I' ),
+ VALE_C =SIMP(statut='f',typ='C' ),
+ CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
+ PRECISION =SIMP(statut='f',typ='R',defaut= 1.2E-3 ),
+ REFERENCE =SIMP(statut='f',typ='TXM',
+ into=("ANALYTIQUE","SOURCE_EXTERNE","NON_REGRESSION","AUTRE_ASTER") ),
+ b_version =BLOC(condition = "REFERENCE == 'NON_REGRESSION'",
+ VERSION =SIMP(statut='f',typ='TXM' ),
+ INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
+ ),
+) ;
+#& MODIF COMMANDE DATE 30/06/2004 AUTEUR MCOURTOI M.COURTOIS
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+THER_LINEAIRE=OPER(nom="THER_LINEAIRE",op=25,sd_prod=evol_ther,reentrant='f',
+ UIinfo={"groupes":("Résolution",)},
+ fr="Analyse thermique linéaire stationnaire ou transitoire",
+ MODELE =SIMP(statut='o',typ=modele_sdaster),
+ CHAM_MATER =SIMP(statut='o',typ=cham_mater),
+ CARA_ELEM =SIMP(statut='f',typ=cara_elem),
+ EXCIT =FACT(statut='o',max='**',
+ CHARGE =SIMP(statut='o',typ=(char_ther,char_cine_ther)),
+ FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ ),
+ INCREMENT =FACT(statut='f',
+ LIST_INST =SIMP(statut='o',typ=listr8_sdaster ),
+ NUME_INIT =SIMP(statut='f',typ='I'),
+ NUME_FIN =SIMP(statut='f',typ='I'),
+ ),
+ TEMP_INIT =FACT(statut='f',
+ regles=(EXCLUS('STATIONNAIRE','EVOL_THER','CHAM_NO','VALE'),),
+ STATIONNAIRE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ EVOL_THER =SIMP(statut='f',typ=evol_ther),
+ CHAM_NO =SIMP(statut='f',typ=cham_no_temp_r),
+ VALE =SIMP(statut='f',typ='R'),
+ NUME_INIT =SIMP(statut='f',typ='I'),
+ ),
+ SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**',
+ fr="Liste des paramètres de sensibilité.",
+ ang="List of sensitivity parameters",
+ ),
+ SENS_INIT =FACT(statut='f',
+ regles=(EXCLUS('STATIONNAIRE','EVOL_THER', ),),
+ STATIONNAIRE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ EVOL_THER =SIMP(statut='f',typ=evol_ther),
+ NUME_INIT =SIMP(statut='f',typ='I'),
+ ),
+ SOLVEUR =FACT(statut='d',
+ METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC") ),
+ b_mult_front =BLOC(condition = "METHODE == 'MULT_FRONT' ",fr="Paramètres de la méthode multi frontale",
+ RENUM =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ),
+ ),
+ b_ldlt =BLOC(condition = "METHODE == 'LDLT' ",fr="Paramètres de la méthode LDLT",
+ RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("RCMK","SANS") ),
+ ),
+ b_ldlt_mult =BLOC(condition = "METHODE == 'LDLT' or METHODE == 'MULT_FRONT' ",
+ fr="Paramètres relatifs à la non inversibilité de la matrice à factorise",
+ NPREC =SIMP(statut='f',typ='I',defaut= 8 ),
+ STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+ ),
+ b_gcpc =BLOC(condition = "METHODE == 'GCPC' ", fr="Paramètres de la méthode du gradient conjugué",
+ PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC",),defaut="LDLT_INC" ),
+ NIVE_REMPLISSAGE=SIMP(statut='f',typ='I',defaut= 0 ),
+ RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ),
+ RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ),
+ NMAX_ITER =SIMP(statut='f',typ='I',defaut= 0 ),
+ ),
+ ),
+ PARM_THETA =SIMP(statut='f',typ='R',defaut= 0.57),
+ ARCHIVAGE =FACT(statut='f',
+ regles=(UN_PARMI('LIST_ARCH','PAS_ARCH','LIST_INST','INST'),),
+ LIST_ARCH =SIMP(statut='f',typ=listis_sdaster),
+ LIST_INST =SIMP(statut='f',typ=listr8_sdaster),
+ INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
+ PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3 ),
+ CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",
+ into=("RELATIF","ABSOLU")),
+ PAS_ARCH =SIMP(statut='f',typ='I'),
+ CHAM_EXCLU =SIMP(statut='f',typ='TXM',into=("VARI",)),
+ ),
+ TITRE =SIMP(statut='f',typ='TXM',max='**'),
+ INFO =SIMP(statut='f',typ='I',into=(1,2)),
+) ;
+#& MODIF COMMANDE DATE 30/06/2004 AUTEUR MCOURTOI M.COURTOIS
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+THER_NON_LINE=OPER(nom="THER_NON_LINE",op= 186,sd_prod=evol_ther,reentrant='f',
+ UIinfo={"groupes":("Résolution",)},
+ fr="Analyse thermique non linéaire stationnaire ou transitoire" ,
+ MODELE =SIMP(statut='o',typ=(modele_sdaster) ),
+ CHAM_MATER =SIMP(statut='o',typ=(cham_mater) ),
+ CARA_ELEM =SIMP(statut='c',typ=(cara_elem) ),
+ COMP_THER_NL =FACT(statut='d',max='**',
+ RELATION =SIMP(statut='f',typ='TXM',defaut="THER_NL",
+ into=("THER_NL",
+ "THER_HYDR",
+ "SECH_GRANGER",
+ "SECH_MENSI",
+ "SECH_BAZANT",
+ "SECH_NAPPE"
+ ) ),
+ regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ ),
+ EVOL_THER_SECH =SIMP(statut='f',typ=evol_ther),
+ EXCIT =FACT(statut='o',max='**',
+ CHARGE =SIMP(statut='o',typ=char_ther),
+ FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ ),
+ INCREMENT =FACT(statut='f',
+ LIST_INST =SIMP(statut='o',typ=listr8_sdaster),
+ NUME_INIT =SIMP(statut='f',typ='I'),
+ NUME_FIN =SIMP(statut='f',typ='I'),
+ ),
+ TEMP_INIT =FACT(statut='f',
+ regles=(EXCLUS('STATIONNAIRE','EVOL_THER','CHAM_NO','VALE'),),
+ STATIONNAIRE =SIMP(statut='f',typ='TXM',into=("OUI",)),
+ EVOL_THER =SIMP(statut='f',typ=evol_ther),
+ CHAM_NO =SIMP(statut='f',typ=cham_no_temp_r),
+ VALE =SIMP(statut='f',typ='R'),
+ NUME_INIT =SIMP(statut='f',typ='I'),
+ ),
+ NEWTON =FACT(statut='d',
+ REAC_ITER =SIMP(statut='f',typ='I',defaut= 0 ),
+ RESI_LINE_RELA =SIMP(statut='f',typ='R',defaut= 1.0E-3 ),
+ ITER_LINE_MAXI =SIMP(statut='f',typ='I',defaut= 0 ),
+ ),
+ CONVERGENCE =FACT(statut='d',
+ RESI_GLOB_MAXI =SIMP(statut='f',typ='R'),
+ RESI_GLOB_RELA =SIMP(statut='f',typ='R'),
+ ITER_GLOB_MAXI =SIMP(statut='f',typ='I',defaut= 10 ),
+ ),
+ SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**',
+ fr="Liste des paramètres de sensibilité.",
+ ang="List of sensitivity parameters",
+ ),
+ SOLVEUR =FACT(statut='d',
+ METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC") ),
+ b_mult_front =BLOC(condition = "METHODE == 'MULT_FRONT' ",fr="Parametres de la méthode multi frontale",
+ RENUM =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ),
+ ),
+ b_ldlt =BLOC(condition = "METHODE == 'LDLT' ",fr="Parametres de la méthode LDLT",
+ RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("RCMK","SANS") ),
+ ),
+ b_ldlt_mult =BLOC(condition = "METHODE == 'LDLT' or METHODE == 'MULT_FRONT' ",
+ fr="Parametres relatifs a la non inversibilité de la matrice a factorise",
+ NPREC =SIMP(statut='f',typ='I',defaut= 8 ),
+ STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+ ),
+ b_gcpc =BLOC(condition = "METHODE == 'GCPC' ", fr="Parametres de la méthode du gradient conjugué",
+ PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC",),defaut="LDLT_INC" ),
+ NIVE_REMPLISSAGE=SIMP(statut='f',typ='I' ,defaut= 0 ),
+ RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ),
+ RESI_RELA =SIMP(statut='f',typ='R' ,defaut= 1.E-6 ),
+ NMAX_ITER =SIMP(statut='f',typ='I' ,defaut= 0 ),
+ ),
+ SYME =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON",) ),
+ ),
+ PARM_THETA =SIMP(statut='f',typ='R',defaut= 0.57 ),
+ ARCHIVAGE =FACT(statut='f',
+ regles=(UN_PARMI('LIST_ARCH','PAS_ARCH','LIST_INST','INST', ),),
+ LIST_ARCH =SIMP(statut='f',typ=(listis_sdaster) ),
+ LIST_INST =SIMP(statut='f',typ=(listr8_sdaster) ),
+ INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
+ PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3 ),
+ CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",) ),
+ PAS_ARCH =SIMP(statut='f',typ='I'),
+ CHAM_EXCLU =SIMP(statut='f',typ='TXM',into=("VARI",)),
+ ),
+ TITRE =SIMP(statut='f',typ='TXM',max='**'),
+ OPTION =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=2,
+ into=("FLUX_ELGA_TEMP","FLUX_ELNO_TEMP") ),
+ INFO =SIMP(statut='f',typ='I',into=(1,2) ),
+
+) ;
+#& MODIF COMMANDE DATE 30/06/2004 AUTEUR MCOURTOI M.COURTOIS
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+THER_NON_LINE_MO=OPER(nom="THER_NON_LINE_MO",op= 171,sd_prod=evol_ther,
+ fr="Thermique non lineaire en repere mobile",
+ reentrant='n',
+ UIinfo={"groupes":("Résolution",)},
+ MODELE =SIMP(statut='o',typ=modele_sdaster ),
+ CHAM_MATER =SIMP(statut='o',typ=cham_mater ),
+ CARA_ELEM =SIMP(statut='c',typ=cara_elem ),
+ EXCIT =FACT(statut='o',max='**',
+ CHARGE =SIMP(statut='o',typ=char_ther ),
+ FONC_MULT =SIMP(statut='c',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ ),
+ TEMP_INIT =FACT(statut='f',
+ EVOL_THER =SIMP(statut='f',typ=evol_ther ),
+ NUME_INIT =SIMP(statut='f',typ='I',defaut= 0 ),
+ ),
+ CONVERGENCE =FACT(statut='d',
+ CRIT_TEMP_RELA =SIMP(statut='f',typ='R',defaut= 1.E-3 ),
+ CRIT_ENTH_RELA =SIMP(statut='f',typ='R',defaut= 1.E-2 ),
+ ITER_GLOB_MAXI =SIMP(statut='f',typ='I',defaut= 10 ),
+ ARRET =SIMP(statut='c',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+ ),
+ SOLVEUR =FACT(statut='d',
+ METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC") ),
+ b_mult_front =BLOC(condition = "METHODE == 'MULT_FRONT' ",fr="Paramètres de la méthode multi frontale",
+ RENUM =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ),
+ ),
+ b_ldlt =BLOC(condition = "METHODE == 'LDLT' ",fr="Paramètres de la méthode LDLT",
+ RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("RCMK","SANS") ),
+ ),
+ b_ldlt_mult =BLOC(condition = "METHODE == 'LDLT' or METHODE == 'MULT_FRONT' ",
+ fr="Paramètres relatifs à la non inversibilité de la matrice à factorise",
+ NPREC =SIMP(statut='f',typ='I',defaut= 8 ),
+ STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+ ),
+ b_gcpc =BLOC(condition = "METHODE == 'GCPC' ", fr="Paramètres de la méthode du gradient conjugué",
+ PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC",),defaut="LDLT_INC" ),
+ NIVE_REMPLISSAGE=SIMP(statut='f',typ='I',defaut= 0 ),
+ RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ),
+ RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ),
+ NMAX_ITER =SIMP(statut='f',typ='I',defaut= 0 ),
+ ),
+ SYME =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
+ ),
+ TITRE =SIMP(statut='f',typ='TXM',max='**' ),
+ INFO =SIMP(statut='f',typ='I',into=(1,2) ),
+) ;
+
+
+
--- /dev/null
+#@ MODIF ops Cata DATE 24/05/2005 AUTEUR DURAND C.DURAND
+# -*- coding: iso-8859-1 -*-
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+
+
+# Modules Python
+import types
+import string,linecache,os,traceback,re
+import pickle
+
+# Modules Eficas
+import Accas
+from Accas import ASSD
+from Utilitai.Utmess import UTMESS
+
+try:
+ import aster
+ # Si le module aster est présent, on le connecte
+ # au JDC
+ import Build.B_CODE
+ Build.B_CODE.CODE.codex=aster
+except:
+ pass
+
+def DEBUT(self,PAR_LOT,CODE,**args):
+ """
+ Fonction sdprod de la macro DEBUT
+ """
+ # La commande DEBUT ne peut exister qu'au niveau jdc
+ if self.jdc is not self.parent :
+ raise Accas.AsException("La commande DEBUT ne peut exister qu'au niveau jdc")
+
+ self.jdc.set_par_lot(PAR_LOT)
+ if CODE!=None :
+ self.jdc.fico=CODE['NOM']
+ else:
+ self.jdc.fico=None
+
+def build_debut(self,**args):
+ """
+ Fonction ops pour la macro DEBUT
+ """
+ self.jdc.UserError=self.codex.error
+
+ if self.jdc.par_lot == 'NON' :
+ self.jdc._Build()
+ # On execute la fonction debut pour initialiser les bases
+ # Cette execution est indispensable avant toute autre action sur ASTER
+ # op doit etre un entier car la fonction debut appelle GCECDU qui demande
+ # le numero de l'operateur associé (getoper)
+ self.definition.op=0
+ self.set_icmd(1)
+ lot,ier=self.codex.debut(self,1)
+ # On remet op a None juste apres pour eviter que la commande DEBUT
+ # ne soit executée dans la phase d'execution
+ self.definition.op=None
+ return ier
+
+def POURSUITE(self,PAR_LOT,CODE,**args):
+ """
+ Fonction sdprod de la macro POURSUITE
+ """
+ # La commande POURSUITE ne peut exister qu'au niveau jdc
+ if self.jdc is not self.parent :
+ raise Accas.AsException("La commande POURSUITE ne peut exister qu'au niveau jdc")
+
+ self.jdc.set_par_lot(PAR_LOT)
+ if CODE!=None :
+ self.jdc.fico=CODE['NOM']
+ else:
+ self.jdc.fico=None
+ if (self.codex and os.path.isfile("glob.1") or os.path.isfile("bhdf.1")):
+ # Le module d'execution est accessible et glob.1 est present
+ # Pour eviter de rappeler plusieurs fois la sequence d'initialisation
+ # on memorise avec l'attribut fichier_init que l'initialisation
+ # est réalisée
+ if hasattr(self,'fichier_init'):return
+ self.fichier_init='glob.1'
+ self.jdc.initexec()
+ # le sous programme fortran appelé par self.codex.poursu demande le numero
+ # de l'operateur (GCECDU->getoper), on lui donne la valeur 0
+ self.definition.op=0
+ lot,ier,lonuti,concepts=self.codex.poursu(self,1)
+ # Par la suite pour ne pas executer la commande pendant la phase
+ # d'execution on le remet à None
+ self.definition.op=None
+ # On demande la numerotation de la commande POURSUITE avec l'incrément
+ # lonuti pour qu'elle soit numérotée à la suite des commandes existantes.
+ self.set_icmd(lonuti)
+ pos=0
+ d={}
+ while pos+80 < len(concepts)+1:
+ nomres=concepts[pos:pos+8]
+ concep=concepts[pos+8:pos+24]
+ nomcmd=concepts[pos+24:pos+40]
+ statut=concepts[pos+40:pos+48]
+ print nomres,concep,nomcmd,statut
+ if nomres[0] not in (' ','.','&') and statut != '&DETRUIT':
+ exec nomres+'='+string.lower(concep)+'()' in self.parent.g_context,d
+ pos=pos+80
+ for k,v in d.items():
+ self.parent.NommerSdprod(v,k)
+ self.g_context=d
+
+ # Il peut exister un contexte python sauvegardé sous forme pickled
+ # On récupère ces objets après la restauration des concepts pour que
+ # la récupération des objets pickled soit prioritaire.
+ # On vérifie que les concepts relus dans glob.1 sont bien tous
+ # presents sous le meme nom et du meme type dans pick.1
+ # Le contexte est ensuite updaté (surcharge) et donc enrichi des
+ # variables qui ne sont pas des concepts.
+ # On supprime du pickle_context les concepts valant None, ca peut
+ # etre le cas des concepts non executés, placés après FIN.
+ pickle_context=get_pickled_context()
+ if pickle_context==None :
+ UTMESS('F','Poursuite',"Erreur a la relecture du fichier pick.1 : aucun objet sauvegardé ne sera récupéré")
+ return
+ from Cata.cata import ASSD,entier
+ from Noyau.N_CO import CO
+ for elem in pickle_context.keys():
+ if type(pickle_context[elem])==types.InstanceType :
+ pickle_class=pickle_context[elem].__class__
+ if elem in self.g_context.keys():
+ poursu_class=self.g_context[elem].__class__
+ if poursu_class!=pickle_class :
+ UTMESS('F','Poursuite',"Types incompatibles entre glob.1 et pick.1 pour concept de nom "+elem)
+ return
+ elif isinstance(pickle_context[elem],ASSD) and pickle_class not in (CO,entier) :
+ # on n'a pas trouvé le concept dans la base et sa classe est ASSD : ce n'est pas normal
+ # sauf dans le cas de CO : il n'a alors pas été typé et c'est normal qu'il soit absent de la base
+ # meme situation pour le type 'entier' produit uniquement par DEFI_FICHIER
+ UTMESS('F','Poursuite',"Concept de nom "+elem+" et de type "+str(pickle_class)+" introuvable dans la base globale")
+ return
+ if pickle_context[elem]==None : del pickle_context[elem]
+ self.g_context.update(pickle_context)
+ return
+
+ else:
+ # Si le module d'execution n est pas accessible ou glob.1 absent on
+ # demande un fichier (EFICAS)
+ # Il faut éviter de réinterpréter le fichier à chaque appel de
+ # POURSUITE
+ if hasattr(self,'fichier_init'):
+ return
+ self.make_poursuite()
+
+def get_pickled_context():
+ """
+ Cette fonction permet de réimporter dans le contexte courant du jdc (jdc.g_context)
+ les objets python qui auraient été sauvegardés, sous forme pickled, lors d'une
+ précédente étude. Un fichier pick.1 doit etre présent dans le répertoire de travail
+ """
+ if os.path.isfile("pick.1"):
+ file="pick.1"
+ else: return None
+
+ # Le fichier pick.1 est présent. On essaie de récupérer les objets python sauvegardés
+ context={}
+ try:
+ file=open(file,'r')
+ # Le contexte sauvegardé a été picklé en une seule fois. Il est seulement
+ # possible de le récupérer en bloc. Si cette opération echoue, on ne récupère
+ # aucun objet.
+ context=pickle.load(file)
+ file.close()
+ except:
+ # En cas d'erreur on ignore le contenu du fichier
+ # traceback.print_exc()
+ return None
+
+ return context
+
+def POURSUITE_context(self,d):
+ """
+ Fonction op_init de la macro POURSUITE
+ """
+ # self représente la macro POURSUITE ...
+ d.update(self.g_context)
+ # Une commande POURSUITE n'est possible qu'au niveau le plus haut
+ # On ajoute directement les concepts dans le contexte du jdc
+ # XXX est ce que les concepts ne sont pas ajoutés plusieurs fois ??
+ for v in self.g_context.values():
+ if isinstance(v,ASSD) : self.jdc.sds.append(v)
+
+def build_poursuite(self,**args):
+ """
+ Fonction ops pour la macro POURSUITE
+ """
+ # Pour POURSUITE on ne modifie pas la valeur initialisee dans ops.POURSUITE
+ # Il n y a pas besoin d executer self.codex.poursu (c'est deja fait dans
+ # la fonction sdprod de la commande (ops.POURSUITE))
+ self.jdc.UserError=self.codex.error
+ return 0
+
+def INCLUDE(self,UNITE,**args):
+ """
+ Fonction sd_prod pour la macro INCLUDE
+ """
+ if not UNITE : return
+ if hasattr(self,'unite'):return
+ self.unite=UNITE
+
+ if self.jdc and self.jdc.par_lot == 'NON':
+ # On est en mode commande par commande, on appelle la methode speciale
+ self.Execute_alone()
+
+ self.make_include(unite=UNITE)
+
+def INCLUDE_context(self,d):
+ """
+ Fonction op_init pour macro INCLUDE
+ """
+ for k,v in self.g_context.items():
+ d[k]=v
+
+def build_include(self,**args):
+ """
+ Fonction ops de la macro INCLUDE appelée lors de la phase de Build
+ """
+ # Pour presque toutes les commandes (sauf FORMULE et POURSUITE)
+ # le numero de la commande n est pas utile en phase de construction
+ # La macro INCLUDE ne sera pas numérotée (incrément=None)
+ ier=0
+ self.set_icmd(None)
+ icmd=0
+ # On n'execute pas l'ops d'include en phase BUILD car il ne sert a rien.
+ #ier=self.codex.opsexe(self,icmd,-1,1)
+ return ier
+
+def detruire(self,d):
+ """
+ Cette fonction est la fonction op_init de la PROC DETRUIRE
+ """
+ if self["CONCEPT"]!=None:
+ sd=[]
+ for mc in self["CONCEPT"]:
+ mcs=mc["NOM"]
+ if type(mcs) == types.ListType or type(mcs) == types.TupleType:
+ for e in mcs:
+ if isinstance(e,ASSD):
+ sd.append(e)
+ e=e.nom
+ # traitement particulier pour les listes de concepts, on va mettre à None
+ # le terme de l'indice demandé dans la liste :
+ # nomconcept_i est supprimé, nomconcept[i]=None
+ indice=e[e.rfind('_')+1:]
+ concept_racine=e[:e.rfind('_')]
+ if indice!='' and d.has_key(concept_racine) and type(d[concept_racine])==types.ListType:
+ try :
+ indici=int(indice)
+ d[concept_racine][indici]=None
+ except ValueError : pass
+ # pour tous les concepts :
+ if d.has_key(e):del d[e]
+ if self.jdc.sds_dict.has_key(e):del self.jdc.sds_dict[e]
+ else:
+ if isinstance(mcs,ASSD):
+ sd.append(mcs)
+ mcs=mcs.nom
+ # traitement particulier pour les listes de concepts, on va mettre à None
+ # le terme de l'indice demandé dans la liste :
+ # nomconcept_i est supprimé, nomconcept[i]=None
+ indice=mcs[mcs.rfind('_')+1:]
+ concept_racine=mcs[:mcs.rfind('_')]
+ if indice!='' and d.has_key(concept_racine) and type(d[concept_racine])==types.ListType:
+ try :
+ indici=int(indice)
+ d[concept_racine][indici]=None
+ except ValueError : pass
+ # pour tous les concepts :
+ if d.has_key(mcs):del d[mcs]
+ if self.jdc.sds_dict.has_key(mcs):del self.jdc.sds_dict[mcs]
+ for s in sd:
+ # On signale au parent que le concept s n'existe plus apres l'étape self
+ self.parent.delete_concept_after_etape(self,s)
+
+def subst_materiau(text,NOM_MATER,EXTRACTION,UNITE_LONGUEUR):
+ """
+ Cette fonction retourne un texte obtenu à partir du texte passé en argument (text)
+ en substituant le nom du materiau par NOM_MATER
+ et en réalisant les extractions spéciifées dans EXTRACTION
+ """
+ lines=string.split(text,'\n')
+
+##### traitement de UNIT : facteur multiplicatif puissance de 10
+ regmcsu=re.compile(r" *(.*) *= *([^ ,]*) *## +([^ ]*) *([^ ]*)")
+ ll_u=[]
+ for l in lines:
+ m=regmcsu.match(l)
+ if m:
+ if m.group(3) == "UNIT":
+ if UNITE_LONGUEUR=='M' : coef = '0'
+ elif UNITE_LONGUEUR=='MM' : coef = m.group(4)
+ ll_u.append(m.group(1)+" = "+m.group(2)+coef)
+ else : ll_u.append(l)
+ else : ll_u.append(l)
+
+##### traitement de EXTRACTION
+ if EXTRACTION:
+ regmcf=re.compile(r" *(.*) *= *_F\( *## +(.*) +(.*)")
+ regmcs=re.compile(r" *(.*) *= *([^ ,]*) *, *## +([^ ]*) *([^ ]*)")
+ regfin=re.compile(r" *\) *")
+ ll=[]
+ temps={};lmcf=[]
+ for e in EXTRACTION:
+ mcf=e['COMPOR']
+ lmcf.append(mcf)
+ temps[mcf]=e['TEMP_EVAL']
+ FLAG=0
+ for l in ll_u:
+ m=regmcf.match(l)
+ if m: # On a trouve un mot cle facteur "commentarise"
+ if m.group(2) == "SUBST": # il est de plus substituable
+ if temps.has_key(m.group(3)): # Il est a substituer
+ ll.append(" "+m.group(3)+"=_F(")
+ mcf=m.group(3)
+ TEMP=temps[mcf]
+ FLAG=1 # Indique que l'on est en cours de substitution
+ else: # Il n est pas a substituer car il n est pas dans la liste demandee
+ ll.append(l)
+ else: # Mot cle facteur commentarise non substituable
+ ll.append(l)
+ else: # La ligne ne contient pas un mot cle facteur commentarise
+ if FLAG == 0: # On n est pas en cours de substitution
+ ll.append(l)
+ else: # On est en cours de substitution. On cherche les mots cles simples commentarises
+ m=regmcs.match(l)
+ if m: # On a trouve un mot cle simple commentarise
+ if m.group(3) == "EVAL":
+ ll.append(" "+m.group(1)+' = '+m.group(4)+"("+str(TEMP)+'),')
+ elif m.group(3) == "SUPPR":
+ pass
+ else:
+ ll.append(l)
+ else: # On cherche la fin du mot cle facteur en cours de substitution
+ m=regfin.match(l)
+ if m: # On l a trouve. On le supprime de la liste
+ FLAG=0
+ del temps[mcf]
+ ll.append(l)
+ else:
+ ll=ll_u
+
+ lines=ll
+ ll=[]
+ for l in lines:
+ l=re.sub(" *MAT *= *",NOM_MATER+" = ",l,1)
+ ll.append(l)
+ text=string.join(ll,'\n')
+ return text
+
+def post_INCLUDE(self):
+ """
+ Cette fonction est executée apres toutes les commandes d'un INCLUDE (RETOUR)
+ Elle sert principalement pour les INCLUDE_MATERIAU : remise a blanc du prefixe Fortran
+ """
+ self.codex.opsexe(self,0,-1,2)
+
+def INCLUDE_MATERIAU(self,NOM_AFNOR,TYPE_MODELE,VARIANTE,TYPE_VALE,NOM_MATER,
+ EXTRACTION,UNITE_LONGUEUR,INFO,**args):
+ """
+ Fonction sd_prod pour la macro INCLUDE_MATERIAU
+ """
+ mat=string.join((NOM_AFNOR,'_',TYPE_MODELE,'_',VARIANTE,'.',TYPE_VALE),'')
+ if not hasattr(self,'mat') or self.mat != mat or self.nom_mater != NOM_MATER :
+ # On récupère le répertoire des matériaux dans les arguments
+ # supplémentaires du JDC
+ rep_mat=self.jdc.args.get("rep_mat","NOrep_mat")
+ f=os.path.join(rep_mat,mat)
+ self.mat=mat
+ self.nom_mater=NOM_MATER
+ if not os.path.isfile(f):
+ del self.mat
+ self.make_contexte(f,"#Texte sans effet pour reinitialiser le contexte a vide\n")
+ raise "Erreur sur le fichier materiau: "+f
+ # Les materiaux sont uniquement disponibles en syntaxe Python
+ # On lit le fichier et on supprime les éventuels \r
+ text=string.replace(open(f).read(),'\r\n','\n')
+ # On effectue les substitutions necessaires
+ self.prefix=NOM_MATER
+ self.text= subst_materiau(text,NOM_MATER,EXTRACTION,UNITE_LONGUEUR)
+ if INFO == 2:
+ print "INCLUDE_MATERIAU: ", self.mat,' ',NOM_MATER,'\n'
+ print self.text
+ # on execute le texte fourni dans le contexte forme par
+ # le contexte de l etape pere (global au sens Python)
+ # et le contexte de l etape (local au sens Python)
+ # Il faut auparavant l'enregistrer aupres du module linecache (utile pour nommage.py)
+ linecache.cache[f]=0,0,string.split(self.text,'\n'),f
+
+ self.postexec=post_INCLUDE
+
+ if self.jdc.par_lot == 'NON':
+ # On est en mode commande par commande, on appelle la methode speciale
+ self.Execute_alone()
+
+ self.make_contexte(f,self.text)
+ for k,v in self.g_context.items() :
+ if isinstance(v,ASSD) and k!=v.nom : del self.g_context[k]
+
+def build_procedure(self,**args):
+ """
+ Fonction ops de la macro PROCEDURE appelée lors de la phase de Build
+ """
+ ier=0
+ # Pour presque toutes les commandes (sauf FORMULE et POURSUITE)
+ # le numero de la commande n est pas utile en phase de construction
+ # On ne numérote pas une macro PROCEDURE (incrément=None)
+ self.set_icmd(None)
+ icmd=0
+ #ier=self.codex.opsexe(self,icmd,-1,3)
+ return ier
+
+def build_DEFI_FICHIER(self,**args):
+ """
+ Fonction ops de la macro DEFI_FICHIER
+ """
+ ier=0
+ self.set_icmd(None)
+ icmd=0
+ ier=self.codex.opsexe(self,icmd,-1,26)
+ return ier
-#@ MODIF macr_ascouf_mail_ops Macro DATE 30/11/2004 AUTEUR MCOURTOI M.COURTOIS
+#@ MODIF macr_ascouf_mail_ops Macro DATE 24/05/2006 AUTEUR CIBHHLV L.VIVAN
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# ======================================================================
-
+import os.path
from math import sqrt,cos,sin,pi,tan,log,fabs,ceil,fmod,floor
# ------------------------------------------------------------------------------
texte=texte+'nivmag = '+str(NIVMAG) +POIVIR
texte=texte+'*\n'
texte=texte+'* FIN PARAMETRES UTILISATEUR\n'
- texte=texte+'opti donn '
- texte=texte+"'"+loc_datg+'ascouf_fiss_v4.datg'+"';\n"
+ texte = texte + open(os.path.join(loc_datg, 'ascouf_fiss_v4.datg'), 'r').read()
+# texte=texte+'opti donn '
+# texte=texte+"'"+loc_datg+'ascouf_fiss_v4.datg'+"';\n"
fdgib=open(nomFichierDATG,'w')
fdgib.write(texte)
fdgib.close()
texte=texte+" sousep . 1 = 'non'"+POIVIR
texte=texte+'*\n'
texte=texte+'* FIN PARAMETRES UTILISATEUR \n'
- texte=texte+'opti donn '
- texte=texte+"'"+loc_datg+'ascouf_ssep_mono_v1.datg'+"'"+POIVIR
+ texte = texte + open(os.path.join(loc_datg, 'ascouf_ssep_mono_v1.datg'), 'r').read()
+# texte=texte+'opti donn '
+# texte=texte+"'"+loc_datg+'ascouf_ssep_mono_v1.datg'+"'"+POIVIR
fdgib=open(nomFichierDATG,'w')
fdgib.write(texte)
fdgib.close()
texte=texte+'axisym = table '+POIVIR
texte=texte+'sousep = table '+POIVIR
texte=texte+'* \n'
- texte=texte+'opti donn '
- texte=texte+"'"+loc_datg+'ascouf_ssep_mult_v1.datg'+"';\n"
+ texte = texte + open(os.path.join(loc_datg, 'ascouf_ssep_mult_v1.datg'), 'r').read()
+# texte=texte+'opti donn '
+# texte=texte+"'"+loc_datg+'ascouf_ssep_mult_v1.datg'+"';\n"
fdgib=open(nomFichierDATG,'w')
fdgib.write(texte)
fdgib.close()
texte=texte+'nzgv = '+str(NZGV) +POIVIR
texte=texte+'*\n'
texte=texte+'* FIN PARAMETRES UTILISATEUR\n'
- texte=texte+'opti donn '
- texte=texte+"'"+loc_datg+'ascouf_regl_v1.datg'+"';\n"
+ texte = texte + open(os.path.join(loc_datg, 'ascouf_regl_v1.datg'), 'r').read()
+# texte=texte+'opti donn '
+# texte=texte+"'"+loc_datg+'ascouf_regl_v1.datg'+"';\n"
fdgib=open(nomFichierDATG,'w')
fdgib.write(texte)
fdgib.close()
-#@ MODIF macr_aspic_calc_ops Macro DATE 22/11/2004 AUTEUR LEBOUVIE F.LEBOUVIER
+#@ MODIF macr_aspic_calc_ops Macro DATE 03/05/2006 AUTEUR CIBHHLV L.VIVAN
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
FOND_FISS_1,FOND_FISS_2,CHARGE,RESU_THER,AFFE_MATERIAU,EQUILIBRE,
PRES_REP,ECHANGE,TORS_CORP,TORS_TUBU,COMP_INCR,COMP_ELAS,
THETA_3D,OPTION,SOLVEUR,CONVERGENCE,NEWTON,RECH_LINEAIRE,
- INCREMENT,PAS_AZIMUT,IMPRESSION,INFO,TITRE ,**args):
+ INCREMENT,PAS_AZIMUT,IMPRESSION,INFO,TITRE,BORNES ,**args):
"""
Ecriture de la macro MACR_ASPIC_CALC
"""
R_INF = tht3d['R_INF'],
R_SUP = tht3d['R_SUP'],
TITRE = montit,**motscles)
+ IMPR_TABLE(TABLE = __glocal, )
#
# recherche du g max local
#
else : ncham=[IMPRESSION['NOM_CHAM'],]
if len(ncham)==3 : motscles['NOM_CHAM' ]=('DEPL','EQUI_ELNO_SIGM')
elif (len(ncham)==1) and (ncham[0][:4]!='TEMP') :
- motscles['NOM_CHAM' ]= ncham[0]['NOM_CHAM']
+ motscles['NOM_CHAM' ]= ncham[0]
elif (len(ncham)==2) and (ncham[0][:4]!='TEMP') and (ncham[1][:4]!='TEMP') :
- motscles['NOM_CHAM' ]=(ncham[0]['NOM_CHAM'],ncham[1]['NOM_CHAM'])
+ motscles['NOM_CHAM' ]=(ncham[0],ncham[1])
elif (len(ncham)==2) and (ncham[0][:4]=='TEMP') :
- motscles['NOM_CHAM' ]= ncham[1]['NOM_CHAM']
+ motscles['NOM_CHAM' ]= ncham[1]
elif (len(ncham)==2) and (ncham[1][:4]=='TEMP') :
- motscles['NOM_CHAM' ]= ncham[0]['NOM_CHAM']
+ motscles['NOM_CHAM' ]= ncham[0]
if IMPRESSION['TOUT_ORDRE']!=None :
motscles['TOUT_ORDRE']= IMPRESSION['TOUT_ORDRE']
elif IMPRESSION['NUME_ORDRE']!=None :
if IMPRESSION['FORMAT'] in ('IDEAS','CASTEM') :
if len(ncham)==3 : motscles['NOM_CHAM' ]=('TEMP',)
elif (len(ncham)==1) and (ncham[0][:4]=='TEMP') :
- motscles['NOM_CHAM' ]= ncham[0]['NOM_CHAM']
+ motscles['NOM_CHAM' ]= ncham[0]
elif (len(ncham)==2) and (ncham[0][:4]=='TEMP') :
- motscles['NOM_CHAM' ]= ncham[0]['NOM_CHAM']
+ motscles['NOM_CHAM' ]= ncham[0]
elif (len(ncham)==2) and (ncham[1][:4]=='TEMP') :
- motscles['NOM_CHAM' ]= ncham[1]['NOM_CHAM']
+ motscles['NOM_CHAM' ]= ncham[1]
if IMPRESSION['TOUT_ORDRE']!=None :
motscles['TOUT_ORDRE']= IMPRESSION['TOUT_ORDRE']
elif IMPRESSION['NUME_ORDRE']!=None :
motsclei['VERSION' ]= IMPRESSION['VERSION']
if IMPRESSION['FORMAT']=='CASTEM' :
motsclei['NIVE_GIBI' ]= IMPRESSION['NIVE_GIBI']
- mcfresu.append(_F(RESULTAT=nomres,**motscles))
+ mcfresu.append(_F(RESULTAT=resuth,**motscles))
IMPR_RESU( MODELE = modele,
RESU = mcfresu,
FORMAT=IMPRESSION['FORMAT'],**motsclei)
-#@ MODIF macr_aspic_mail_ops Macro DATE 14/09/2004 AUTEUR MCOURTOI M.COURTOIS
+#@ MODIF macr_aspic_mail_ops Macro DATE 31/05/2006 AUTEUR CIBHHLV L.VIVAN
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# ======================================================================
-
-from math import sqrt,cos,sin,pi,pow,tan
+import os.path
+from math import sqrt, cos, sin, pi, pow, tan
# Ecriture du fichier GIBI principal (dgib) - ASPID0
def write_file_dgib_ASPID0(nomFichierDATG,UNITD, EPT1, DET1, D1, D2, EPT2, DET2, ZMAX, H,
ALPHA, JEU, EPC, DEC, XMAX, TYPMAI, THETA, TYPELE,
ITYPSO, DPENE, NIVMAG, loc_datg) :
+ import aster
# Ouverture du fichier d'entrée de commandes
fdgib=open(nomFichierDATG,'w')
POIVIR = ' ; \n'
texte=texte+'typ_eque = MOT '+'SAINE' +POIVIR
texte=texte+'nivmag = '+str(NIVMAG) +POIVIR
texte=texte+'* \n'
- texte=texte+'opti donn '
- texte=texte+"'"+loc_datg+'aspic.datg'+"';\n"
+ texte = texte + open(os.path.join(loc_datg, 'aspic.datg'), 'r').read()
print texte
fdgib.write(texte)
fdgib.close()
A,C,EPS, RC0, NS,NC,NT,POSI, NDT,FETIRF,FETIRP,
TFISS,ZETA,ITYPSO,DPENE, NIVMAG, loc_datg) :
+ import aster
# Ouverture du fichier d'entrée de commandes
fdgib=open(nomFichierDATG,'w')
POIVIR = ' ; \n'
texte=texte+'typ_eque = MOT '+'FISS_LON' +POIVIR
texte=texte+'nivmag = '+str(NIVMAG) +POIVIR
texte=texte+'* \n'
- texte=texte+'opti donn '
- texte=texte+"'"+loc_datg+'aspic_v2.datg'+"';\n"
+ texte = texte + open(os.path.join(loc_datg, 'aspic_v2.datg'), 'r').read()
print texte
fdgib.write(texte)
fdgib.close()
ALP,BETA, NS, NC, NT, POSI ,NDT,NSDT,TFISS,
ZETA,ITYPSO,DPENE, NIVMAG, loc_datg) :
#
+ import aster
CALPHA = cos(ALPHA*pi/180.)
SALPHA = sin(ALPHA*pi/180.)
CTHETA = cos(THETA*pi/180.)
EPSIL = STHETA * tan(ALPHA*pi/180.0)
PHI = (EPSIL * ZA) - YA
DELTA = pow(PHI,2) - ((1 + pow(EPSIL,2))*(pow(PHI,2) - (pow((DEC/2.0),2)*pow(EPSIL,2))))
- if (THETA > 0) :
+ if (STHETA > 0) :
YD = ( sqrt(DELTA) - PHI) / (1.0 + pow(EPSIL,2))
else :
- YD = ( -1.0*sqrt(DELTA) - PHI) / (1.0 + pow(EPSIL,2))
+ YD = ( -1.0*sqrt(DELTA) - PHI) / (1.0 + pow(EPSIL,2))
ZD = sqrt(pow((DEC/2.0),2) - pow(YD,2))
ZN0 = ZD0 - A*CALPHA
XN = XN0 * CTHETA
YN = XN0 * STHETA
+ DNXY = sqrt(pow(XD,2) + pow(YD,2)) - sqrt(pow(XN,2) + pow(YN,2))
+ DNXY0 = XD0 - XN0
+ RAPP = DNXY/DNXY0
+ # Correction necessaire dans le cas theta et/ou alpha grand
+ if (RAPP < 0.5) :
+ DXY = sqrt(pow(XD,2) + pow(YD,2) )
+ XN = XN * DXY/XD0
+ YN = YN * DXY/XD0
SGAMN = YN / ZN0
ZN = ZN0 * sqrt(1.0 - pow(SGAMN,2))
D0N0 = sqrt( pow((XD0 - XN0),2) + pow((ZD0 - ZN0),2) )
EPSIL = STHETA * TGALP
PHI = (EPSIL * ZA) - YA
DELTA = pow(PHI,2) - (1.0 + pow(EPSIL,2))*(pow(PHI,2) - pow((DEC/2.0),2)*pow(EPSIL,2))
- if (THETA > 0) :
+ if (STHETA > 0) :
YD = (sqrt(DELTA) - PHI) / (1.0 + pow(EPSIL,2))
else :
YD = (-1.0*sqrt(DELTA) - PHI) / (1.0 + pow(EPSIL,2))
texte=texte+'nivmag = '+str(NIVMAG) +POIVIR
texte=texte+'* \n'
texte=texte+'list epc ;\n'
- texte=texte+'opti donn '
- texte=texte+"'"+loc_datg+'aspic.datg'+"';\n"
+ texte = texte + open(os.path.join(loc_datg, 'aspic.datg'), 'r').read()
print texte
fdgib.write(texte)
fdgib.close()
IMPR_RESU( RESU = impr_resu,
FORMAT = impr['FORMAT'],**motscles )
#
+#
+# --- Verification profondeur fissure (courte debouchante) ---
+#
+ if FISCOU and not (TFISS=='NON_DEB') :
+ nomres=DEFI_GROUP( reuse=nomres,
+ MAILLAGE=nomres,
+ CREA_GROUP_NO=(_F( GROUP_MA = 'LEVRTUBU',),
+ _F( NOM = 'FONDORDO',
+ GROUP_MA = 'FONDFISS',
+ OPTION = 'NOEUD_ORDO',),),);
+
+ nommail=nomres.nom
+ coord =aster.getvectjev(nommail.ljust(8)+'.COORDO .VALE')
+ collgrno=aster.getcolljev(nommail.ljust(8)+'.GROUPENO')
+
+ grfo=collgrno['FONDORDO']
+ Nbno = len(grfo)
+ listx = [None]*Nbno
+ listy = [None]*Nbno
+ listz = [None]*Nbno
+ k = 0
+ for node in grfo:
+ listx[k] = coord[3*(node-1)]
+ listy[k] = coord[3*(node-1)+1]
+ listz[k] = coord[3*(node-1)+2]
+ k = k+1
+
+ XAB = listx[Nbno-1] - listx[0]
+ YAB = listy[Nbno-1] - listy[0]
+ ZAB = listz[Nbno-1] - listz[0]
+ AB = sqrt(XAB*XAB + YAB*YAB +ZAB*ZAB)
+ d = 0
+ for k in range(0,Nbno) :
+ XAM = listx[k] - listx[0]
+ YAM = listy[k] - listy[0]
+ ZAM = listz[k] - listz[0]
+ Xvect = YAB*ZAM-ZAB*YAM
+ Yvect = ZAB*XAM-XAB*ZAM
+ Zvect = XAB*YAM-YAB*XAM
+ AM = sqrt(Xvect*Xvect+ Yvect*Yvect +Zvect*Zvect)
+ dk = AM/AB
+ if dk > d :
+ XC = listx[k]
+ YC = listy[k]
+ ZC = listz[k]
+ d = max(dk, d)
+
+ grlev=collgrno['LEVRTUBU']
+ Nbnol = len(grlev)
+ listxl = [None]*Nbnol
+ listyl = [None]*Nbnol
+ listzl = [None]*Nbnol
+ k = 0
+ for node in grlev:
+ listxl[k] = coord[3*(node-1)]
+ listyl[k] = coord[3*(node-1)+1]
+ listzl[k] = coord[3*(node-1)+2]
+ k = k+1
+ dist = 0
+ for k in range(0,Nbnol) :
+ XAM = listxl[k] - listx[0]
+ YAM = listyl[k] - listy[0]
+ ZAM = listzl[k] - listz[0]
+ Scal = (XAB*XAM + YAB*YAM + ZAB*ZAM)/(AB*AB)
+ if (abs(Scal) < 0.51) and (abs(Scal) > 0.49) :
+ Xk = listxl[k] -XC
+ Yk = listyl[k] -YC
+ Zk = listzl[k] -ZC
+ dk = sqrt(Xk**2+ Yk**2 +Zk**2)
+ dist = max(dk, dist)
+
+ print '\n<MACR_ASPIC_MAIL> PROFONDEUR DE LA FISSURE DANS LE MAILLAGE : ', dist
+ print ' \n'
+#
return ier
-#@ MODIF reca_algo Macro DATE 14/09/2004 AUTEUR MCOURTOI M.COURTOIS
+#@ MODIF reca_algo Macro DATE 31/01/2006 AUTEUR MCOURTOI M.COURTOIS
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
import Numeric
-from Numeric import take
+from Numeric import take, size
import copy,os
import LinearAlgebra
from Cata.cata import INFO_EXEC_ASTER
dval[i]=borne_inf[i]-val[i]
s[i]=-1.
if (len(I)!=0):
- # xi=-Q(I)-1.(d(I)+Q(I,Act).dval(Act))
- xi=-LinearAlgebra.solve_linear_equations(take(take(Q,I),I,1),(take(d,I)+Numeric.dot(take(take(Q,I),Act,1),take(Dim.adim(dval),Act))))
+ # xi=-Q(I)-1.(d(I)+Q(I,Act).dval(Act))
+ t_QI = take(Q, I)
+ t_tQI_Act = take(t_QI, Act, 1)
+ t_adim_Act = take(Dim.adim(dval), Act)
+ if size(t_tQI_Act) > 0 and size(t_adim_Act) > 0:
+ smemb = take(d, I) + Numeric.dot(t_tQI_Act, t_adim_Act)
+ else:
+ smemb = take(d, I)
+ xi=-LinearAlgebra.solve_linear_equations(take(t_QI, I, 1), smemb)
for i in Numeric.arange(len(I)):
dval[I[i]]=xi[i]*val_init[I[i]]
if (len(Act)!=0):
-#@ MODIF test_fichier_ops Macro DATE 05/07/2005 AUTEUR DURAND C.DURAND
+#@ MODIF test_fichier_ops Macro DATE 24/05/2006 AUTEUR CIBHHLV L.VIVAN
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
+import sys
+import os.path
+import re
+from math import floor, log10
+from types import StringType
+import md5
+
#-------------------------------------------------------------------------------
def test_fichier_ops(self, UNITE, FICHIER, NB_CHIFFRE, EPSILON, VALE_K, INFO, **args):
"""
'a une tolerance' pres pour les nombres reels en calculant
le md5sum.
"""
- import aster
- from Accas import _F
- ier=0
+ ier = 0
# La macro compte pour 1 dans la numerotation des commandes
self.set_icmd(1)
DETRUIRE = self.get_cmd('DETRUIRE')
CREA_TABLE = self.get_cmd('CREA_TABLE')
TEST_TABLE = self.get_cmd('TEST_TABLE')
-
- import os.path
- import re
- from types import StringType
+
+ import aster
+ from Accas import _F
from Macro.test_fichier_ops import md5file
+ from Utilitai.Utmess import UTMESS
# vérifie la syntaxe des expressions régulières fournies
- l_regexp=[]
+ l_regexp = []
if args['EXPR_IGNORE']:
if type(args['EXPR_IGNORE']) is StringType:
lexp = [args['EXPR_IGNORE']]
lexp = args['EXPR_IGNORE']
for exp in lexp:
try:
- obj=re.compile(exp)
+ obj = re.compile(exp)
except re.error, s:
- print '<F> <TEST_FICHIER> <INVALID_REGEXP> '+str(s)+' pour "'+exp+'"'
+ UTMESS('F', 'TEST_FICHIER',
+ '<INVALID_REGEXP> %s pour %s' % (str(s), repr(exp)))
else:
l_regexp.append(exp)
- if len(l_regexp) < len(lexp):
- self.cr.fatal(' <F> <TEST_FICHIER> Expression régulière invalide (voir <INVALID_REGEXP>)')
-
- is_ok=0
+ is_ok = 0
# vérifier que le fichier a été fermé
tinfo__ = INFO_EXEC_ASTER(LISTE_INFO='ETAT_UNITE', FICHIER=FICHIER)
- if tinfo__['ETAT_UNITE',1].find('OUVERT')>-1:
- print "<A> <TEST_FICHIER> LE FICHIER N'A PAS ETE FERME :\n",FICHIER
+ if tinfo__['ETAT_UNITE', 1].find('OUVERT')>-1:
+ UTMESS('A', 'TEST_FICHIER',
+ "LE FICHIER N'A PAS ETE FERME :\n%s" % FICHIER)
# fichier correctement fermé
else:
# calcule le md5sum du fichier
ier, mdsum = md5file(FICHIER, NB_CHIFFRE, EPSILON, l_regexp, INFO)
if ier != 0:
- if ier==4:
- texte_erreur='Fichier inexistant : '+FICHIER
+ if ier == 4:
+ texte_erreur = 'Fichier inexistant : '+FICHIER
else:
- texte_erreur='Erreur dans md5file, code retour = '+str(ier)
- texte_erreur='<S> <TEST_FICHIER> '+texte_erreur
+ texte_erreur = 'Erreur dans md5file, code retour = '+str(ier)
+ texte_erreur = '<S> <TEST_FICHIER> '+texte_erreur
# aujourd'hui, je ne sais pas déclencher autre chose que <F>...
self.cr.fatal(texte_erreur)
return ier
# comparaison a la reference
if INFO > 0 :
+ # aster.affiche('MESSAGE', ' %-20s : %32s\n' % ('REFERENCE', VALE_K))
print ' %-20s : %32s' % ('REFERENCE',VALE_K)
print
if mdsum == VALE_K:
- is_ok=1
+ is_ok = 1
# produit le TEST_TABLE
- tab1__=CREA_TABLE(LISTE=(_F(PARA='TEST',
- TYPE_K='K8',
- LISTE_K='VALEUR ',),
- _F(PARA='BOOLEEN',
- LISTE_I=is_ok,),),)
+ tab1__ = CREA_TABLE(LISTE=(_F(PARA='TEST',
+ TYPE_K='K8',
+ LISTE_K='VALEUR ',),
+ _F(PARA='BOOLEEN',
+ LISTE_I=is_ok,),),)
if args['REFERENCE'] == 'NON_REGRESSION':
- TEST_TABLE(UNITE=UNITE,
- TABLE=tab1__,
+ TEST_TABLE(TABLE=tab1__,
FILTRE=_F(NOM_PARA='TEST',
VALE_K='VALEUR ',),
NOM_PARA='BOOLEEN',
REFERENCE=args['REFERENCE'],
VERSION=args['VERSION'],)
else:
- TEST_TABLE(UNITE=UNITE,
- TABLE=tab1__,
+ TEST_TABLE(TABLE=tab1__,
FILTRE=_F(NOM_PARA='TEST',
VALE_K='VALEUR ',),
NOM_PARA='BOOLEEN',
#-------------------------------------------------------------------------------
-def md5file(fich,nbch,epsi,regexp_ignore=[],info=0):
+def sign(x):
+ return int(x/abs(x))
+
+def _round(x, n, exp):
+ v = x * 10**(-exp+n)
+ val = int(v + sign(x)*0.4999)
+ return val
+
+def entier_ini(x, nbch, exp=None):
+ #if exp is None:
+ #exp = int(floor(log10(abs(x))))
+ val = _round(x, nbch-1, exp)
+ return val, exp-nbch+1
+
+def entier_triple(x, nbch, exp_epsi):
+ #if abs(x) <= 10**exp_epsi:
+ #return '0'
+ y = _round(x * 10**(-exp_epsi), 0, 0) * 10**exp_epsi
+ exp = int(floor(log10(abs(y))))
+ z1, e1 = entier_ini(y, nbch+2, exp)
+ z2, e2 = entier_ini(z1 * 10**e1, nbch+1, exp)
+ z3, e3 = entier_ini(z2 * 10**e2, nbch, exp)
+ return '%sE%d' % (z3, e3)
+
+#-------------------------------------------------------------------------------
+def md5file(fich, nbch, epsi,
+ regexp_ignore=[], info=0, output=None, format_func=entier_triple):
"""
Cette methode retourne le md5sum d'un fichier en arrondissant les nombres
reels a la valeur significative.
epsi : valeur en deca de laquelle on prend 0
regexp_ignore : liste d'expressions régulières permettant d'ignorer
certaines lignes
+ output : pour rediriger l'interprétation du fichier (INFO=2)
+ dans le fichier de nom `output`,
+ info : on affiche le résumé si info>0
+ format_func : on peut préciser une autre fonction pour formatter
+ les réels...
OUT :
code retour : 0 si ok, >0 sinon
md5sum
- """
- import os.path
- import re
- import string
- import math
- import md5
+
+ NE PAS AJOUTER D'IMPORT QUI RENDRAIT CETTE FONCTION
+ INUTILISABLE EN DEHORS DE CODE_ASTER.
+ """
+ if output != None:
+ try:
+ sys.stdout = open(output, 'w')
+ except IOError, msg:
+ print "Erreur d'écriture sur %s : %s" % (output, msg)
+
# 1 Mo 10 Mo 100 Mo
# v0 2.6 s 20.4 s 196.6 s
# v1 2.0 s 10.3 s 94.9 s (pas de distinction entier/reel)
# remplacer le try/except par if re.search(...), 80% plus lent
+ # v2 10.7 s
if not os.path.isfile(fich):
return 4, ''
- f=open(fich,'r')
- format_float='%'+str(nbch+7)+'.'+str(nbch)+'g'
- m=md5.new()
- i=0
+ f = open(fich,'r')
+ m = md5.new()
+ exp_epsi = int(floor(log10(abs(epsi))))
+ i = 0
for ligne in f:
- i=i+1
- if info>=2:
- print 'LIGNE',i,
- keep=True
+ i = i+1
+ if info >= 2:
+ print 'LIGNE', i,
+ keep = True
for exp in regexp_ignore:
- if re.search(exp,ligne):
- keep=False
- if info>=2:
+ if re.search(exp, ligne):
+ keep = False
+ if info >= 2:
print ' >>>>>>>>>> IGNOREE <<<<<<<<<<',
break
if keep:
- #r=string.split(ligne)
# découpe des nombres collés : 1.34E-142-1.233D+09
- r=string.split(re.sub('([0-9]+)\-','\g<1> -',ligne))
+ ligne = re.sub('([0-9]+)\-', '\g<1> -', ligne)
+ # conversion des DOUBLE fortran en 'E'
+ ligne = re.sub('([0-9]+)[dD]([\-\+]{0,1}[0-9]+)', '\g<1>E\g<2>', ligne)
+ r = ligne.split()
for x in r:
try:
- if abs(float(x))<epsi:
- s='0'
+ xv = float(x)
+ if abs(xv)<epsi:
+ s = '0'
else:
- s=format_float % float(x)
+ #s = format_float % float(x)
+ s = format_func(xv, nbch, exp_epsi)
except ValueError:
- s=x
- if info>=2:
+ s = x
+ if info >= 2:
print (' %'+str(nbch+7)+'s') % s,
m.update(s)
- if info>=2:
+ if info >= 2:
print
f.close()
- md5sum=m.hexdigest()
- if info>=1:
- form=' %-20s : %32s'
- print form % ('Fichier',fich)
- print form % ('Nombre de lignes',str(i))
- print form % ('Format des reels',format_float)
- print form % ('Epsilon',str(epsi))
- print form % ('md5sum',md5sum)
+ md5sum = m.hexdigest()
+
+ affich_resu = True
+ if info >= 1:
+ while affich_resu:
+ form = ' %-20s : %32s'
+ print form % ('Fichier', fich)
+ print form % ('Nombre de lignes', str(i))
+ #print form % ('Format des reels',format_float)
+ print form % ('Nombre de chiffres', str(nbch))
+ print form % ('Epsilon', str(epsi))
+ print form % ('md5sum', md5sum)
+ if output == None:
+ affich_resu = False
+ else:
+ sys.stdout = sys.__stdout__
+ output = None
return 0, md5sum
+
+
+#-------------------------------------------------------------------------------
+if __name__ == '__main__':
+ from optparse import OptionParser, OptionGroup
+
+ p = OptionParser(usage='usage: %s a_tester [options]' % sys.argv[0])
+ p.add_option('-n', '--nbch',
+ action='store', dest='nbch', type='int', default=6,
+ help='nombre de chiffres significatifs')
+ p.add_option('-e', '--epsilon',
+ action='store', dest='epsi', type='float', default=1.e-14,
+ help='epsilon en dessous duquel on considère les nombres nuls')
+ p.add_option('--expr_ignore',
+ action='store', dest='exp', type='string',
+ help='expression régulière à ignorer')
+ p.add_option('-o', '--output',
+ action='store', dest='output', type='string', default='output.txt',
+ help='fichier de sortie')
+ opts, args = p.parse_args()
+
+ if len(args)<1:
+ p.print_usage()
+ sys.exit(1)
+ if opts.exp is None:
+ exp = []
+ else:
+ exp = [opts.exp]
+
+ print 'Lignes retenues dans %s' % opts.output
+ iret = md5file(args[0], opts.nbch, opts.epsi,
+ regexp_ignore=exp, info=2, output=opts.output)
+
-#& MODIF ENTETE DATE 07/06/2005 AUTEUR MCOURTOI M.COURTOIS
+#& MODIF ENTETE DATE 31/01/2006 AUTEUR MCOURTOI M.COURTOIS
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
#
__version__="$Name: $"
-__Id__="$Id: cata_aster_v6.py,v 1.12 2001/01/16 15:55:05 iliade Exp $"
+__Id__="$Id: cata.py,v 1.1.6.2 2006/06/02 09:43:05 pnoyret Exp $"
#
JdC = JDC_CATA(code='ASTER',
execmodul=None,
"""
Retourne la liste des valeurs : [val1, ..., valN]
"""
- vale=string.ljust(self.get_name(),19)+'.VALE'
- return list(aster.getvectjev(vale))
+ if not self.par_lot():
+ vale='%-19s.VALE' % self.get_name()
+ return list(aster.getvectjev(vale))
+ else:
+ raise Accas.AsException("Erreur dans listr8.Valeurs en PAR_LOT='OUI'")
# post-traitement :
def LIST_GROUP_NO(self) :
""" retourne la liste des groupes de noeuds sous la forme :
[ (gno1, nb noeuds gno1), ...] """
+ if self.par_lot() :
+ raise Accas.AsException("Erreur dans maillage.LIST_GROUP_NO en PAR_LOT='OUI'")
nommail=self.get_name()
dic_gpno=aster.getcolljev(nommail.ljust(8)+".GROUPENO")
return [(gpno.strip(),len(dic_gpno[gpno])) for gpno in dic_gpno]
def LIST_GROUP_MA(self) :
""" retourne la liste des groupes de mailles sous la forme :
[ (gma1, nb mailles gma1, dime max des mailles gma1), ...] """
+ if self.par_lot() :
+ raise Accas.AsException("Erreur dans maillage.LIST_GROUP_MA en PAR_LOT='OUI'")
nommail=self.get_name()
nommail=nommail.ljust(8)
ngpma=[]
- self.maille : numero de mailles
- self.point : numero du point dans la maille
- self.sous_point : numero du sous point dans la maille """
-
+ if self.par_lot() :
+ raise Accas.AsException("Erreur dans cham_elem.EXTR_COMP en PAR_LOT='OUI'")
ncham=self.get_name()
ncham=ncham+(8-len(ncham))*' '
- self.valeurs : Numeric.array contenant les valeurs
Si on a demande la topo (i.e. self.topo = 1) :
- self.noeud : numero de noeud """
-
-
+ if self.par_lot() :
+ raise Accas.AsException("Erreur dans cham_no.EXTR_COMP en PAR_LOT='OUI'")
+
ncham=self.get_name()
ncham=ncham+(8-len(ncham))*' '
nchams=ncham[0:7]+'S'
class resultat_sdaster(ASSD):
def LIST_CHAMPS (self) :
+ if self.par_lot() :
+ raise Accas.AsException("Erreur dans resultat.LIST_CHAMPS en PAR_LOT='OUI'")
return aster.GetResu(self.get_name(), "CHAMPS")
def LIST_NOM_CMP (self) :
+ if self.par_lot() :
+ raise Accas.AsException("Erreur dans resultat.LIST_NOM_CMP en PAR_LOT='OUI'")
return aster.GetResu(self.get_name(), "COMPOSANTES")
def LIST_VARI_ACCES (self) :
+ if self.par_lot() :
+ raise Accas.AsException("Erreur dans resultat.LIST_VARI_ACCES en PAR_LOT='OUI'")
return aster.GetResu(self.get_name(), "VARI_ACCES")
def LIST_PARA (self) :
+ if self.par_lot() :
+ raise Accas.AsException("Erreur dans resultat.LIST_PARA en PAR_LOT='OUI'")
return aster.GetResu(self.get_name(), "PARAMETRES")
class acou_harmo (resultat_sdaster):pass
le type jeveux (FONCTION, FONCT_C, NAPPE) n'est pas retourne,
le dictionnaire peut ainsi etre fourni a CALC_FONC_INTERP tel quel.
"""
- if hasattr(self,'etape') and self.etape.nom=='DEFI_FONCTION' :
+ if not self.par_lot() :
+ TypeProl={'E':'EXCLU', 'L':'LINEAIRE', 'C':'CONSTANT' }
+ prol=aster.getvectjev(string.ljust(self.get_name(),19)+'.PROL')
+ dico={
+ 'INTERPOL' : [prol[1][0:3],prol[1][4:7]],
+ 'NOM_PARA' : string.strip(prol[2][0:16]),
+ 'NOM_RESU' : string.strip(prol[3][0:16]),
+ 'PROL_DROITE' : TypeProl[prol[4][1]],
+ 'PROL_GAUCHE' : TypeProl[prol[4][0]],
+ }
+ elif hasattr(self,'etape') and self.etape.nom=='DEFI_FONCTION' :
dico={
'INTERPOL' : self.etape['INTERPOL'],
'NOM_PARA' : self.etape['NOM_PARA'],
dico['INTERPOL']=[dico['INTERPOL'],]
if len(dico['INTERPOL'])==1 :
dico['INTERPOL']=dico['INTERPOL']*2
- else :
- TypeProl={'E':'EXCLU', 'L':'LINEAIRE', 'C':'CONSTANT' }
- prol=aster.getvectjev(string.ljust(self.get_name(),19)+'.PROL')
- dico={
- 'INTERPOL' : [prol[1][0:3],prol[1][4:7]],
- 'NOM_PARA' : string.strip(prol[2][0:16]),
- 'NOM_RESU' : string.strip(prol[3][0:16]),
- 'PROL_DROITE' : TypeProl[prol[4][1]],
- 'PROL_GAUCHE' : TypeProl[prol[4][0]],
- }
+ else:
+ raise Accas.AsException("Erreur dans fonction.Parametres en PAR_LOT='OUI'")
return dico
def Trace(self,FORMAT='TABLEAU',**kargs):
"""Tracé d'une fonction"""
+ if self.par_lot() :
+ raise Accas.AsException("Erreur dans fonction.Trace en PAR_LOT='OUI'")
from Utilitai.Graph import Graph
gr=Graph()
gr.AjoutCourbe(Val=self.Valeurs(),
"""
Retourne deux listes de valeurs : abscisses et ordonnees
"""
- if hasattr(self,'etape') and self.etape.nom=='DEFI_FONCTION' :
+ if not self.par_lot():
+ vale=string.ljust(self.get_name(),19)+'.VALE'
+ lbl=list(aster.getvectjev(vale))
+ dim=len(lbl)/2
+ lx=lbl[0:dim]
+ ly=lbl[dim:2*dim]
+ return [lx,ly]
+ elif hasattr(self,'etape') and self.etape.nom=='DEFI_FONCTION' :
if self.etape['VALE']!=None:
lbl=list(self.etape['VALE'])
dim=len(lbl)
elif self.etape['VALE_PARA']!=None:
return [self.etape['VALE_PARA'].Valeurs(),self.etape['VALE_FONC'].Valeurs()]
else :
- vale=string.ljust(self.get_name(),19)+'.VALE'
- lbl=list(aster.getvectjev(vale))
- dim=len(lbl)/2
- lx=lbl[0:dim]
- ly=lbl[dim:2*dim]
- return [lx,ly]
+ raise Accas.AsException("Erreur dans fonction.Valeurs en PAR_LOT='OUI'")
def Absc(self):
"""Retourne la liste des abscisses"""
return self.Valeurs()[0]
"""
Retourne trois listes de valeurs : abscisses, parties reelles et imaginaires.
"""
- if self.etape.nom=='DEFI_FONCTION' :
- lbl=list(self.etape['VALE_C'])
- dim=len(lbl)
- lx=[lbl[i] for i in range(0,dim,3)]
- lr=[lbl[i] for i in range(1,dim,3)]
- li=[lbl[i] for i in range(2,dim,3)]
- return [lx,lr,li]
- else :
+ if not self.par_lot():
vale=string.ljust(self.get_name(),19)+'.VALE'
lbl=list(aster.getvectjev(vale))
dim=len(lbl)/3
lr.append(lbl[dim+2*i])
li.append(lbl[dim+2*i+1])
return [lx,lr,li]
+ if self.etape.nom=='DEFI_FONCTION' :
+ lbl=list(self.etape['VALE_C'])
+ dim=len(lbl)
+ lx=[lbl[i] for i in range(0,dim,3)]
+ lr=[lbl[i] for i in range(1,dim,3)]
+ li=[lbl[i] for i in range(2,dim,3)]
+ return [lx,lr,li]
+ else :
+ raise Accas.AsException("Erreur dans fonction_c.Valeurs en PAR_LOT='OUI'")
def Absc(self):
"""Retourne la liste des abscisses"""
return self.Valeurs()[0]
return self.Valeurs()[2]
def Trace(self,FORMAT='TABLEAU',**kargs):
"""Tracé d'une fonction complexe"""
+ if self.par_lot() :
+ raise Accas.AsException("Erreur dans fonction_c.Trace en PAR_LOT='OUI'")
from Utilitai.Graph import Graph
gr=Graph()
gr.AjoutCourbe(Val=self.Valeurs(),
Retourne la liste des valeurs du parametre,
et une liste de couples (abscisses,ordonnees) de chaque fonction.
"""
+ if self.par_lot():
+ raise Accas.AsException("Erreur dans nappe.Valeurs en PAR_LOT='OUI'")
nsd=string.ljust(self.get_name(),19)
dicv=aster.getcolljev(nsd+'.VALE')
# les cles de dicv sont 1,...,N (indice du parametre)
le dictionnaire peut ainsi etre fourni a CALC_FONC_INTERP tel quel,
et une liste de dictionnaire des parametres de chaque fonction.
"""
+ if self.par_lot():
+ raise Accas.AsException("Erreur dans nappe.Parametres en PAR_LOT='OUI'")
TypeProl={'E':'EXCLU', 'L':'LINEAIRE', 'C':'CONSTANT' }
prol=aster.getvectjev(string.ljust(self.get_name(),19)+'.PROL')
dico={
return [dico,lparf]
def Trace(self,FORMAT='TABLEAU',**kargs):
"""Tracé d'une nappe"""
+ if self.par_lot():
+ raise Accas.AsException("Erreur dans nappe.Trace en PAR_LOT='OUI'")
from Utilitai.Graph import Graph
gr=Graph()
lv=self.Valeurs()[1]
#--------------------------------
class table_sdaster(ASSD):
def __getitem__(self,key):
- requete=string.ljust(key[0],24)
- tblp=string.ljust(self.get_name(),19)+'.TBLP'
+ if self.par_lot():
+ raise Accas.AsException("Erreur dans table.__getitem__ en PAR_LOT='OUI'")
+ requete = '%-24s' % key[0]
+ tblp = '%-19s.TBLP' % self.get_name()
tabnom=list(aster.getvectjev(tblp))
for i in range(len(tabnom)) :
if tabnom[i]==requete: break
def EXTR_TABLE(self) :
"""Produit un objet Table à partir du contenu d'une table Aster
"""
+ if self.par_lot():
+ raise Accas.AsException("Erreur dans table.EXTR_TABLE en PAR_LOT='OUI'")
from Utilitai.Table import Table
tblp=string.ljust(self.get_name(),19)+'.TBLP'
tabnom=list(aster.getvectjev(tblp))
"NOEU_VNOR_C", "ELEM_VARI_R", "ELNO_VNOR_C", "ELGA_VNOR_C",
"ELEM_VNOR_C",
)
-#& MODIF COMMANDE DATE 31/01/2005 AUTEUR LEBOUVIE F.LEBOUVIER
+#& MODIF COMMANDE DATE 04/04/2006 AUTEUR CIBHHLV L.VIVAN
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
#============================================================================
DISCRET =FACT(statut='f',max='**',
- regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
- NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
REPERE =SIMP(statut='f',typ='TXM',into=("LOCAL","GLOBAL") ),
AMOR_HYST =SIMP(statut='f',typ='R' ),
CARA =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=1,
# affection des caractéristiques de RIGIDITE/AMORTISSEMENT
b_K_T_D_N =BLOC(condition = "(CARA=='K_T_D_N')or(CARA=='A_T_D_N')",
- VALE =SIMP(statut='o',typ='R',min=3 ,max=3 ),),
+ regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ VALE =SIMP(statut='o',typ='R',min=3 ,max=3 ),),
b_K_T_D_L =BLOC(condition = "(CARA=='K_T_D_L')or(CARA=='A_T_D_L')",
+ regles=(UN_PARMI('MAILLE','GROUP_MA'),),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
VALE =SIMP(statut='o',typ='R',min=3 ,max=3 ),),
b_K_TR_D_N =BLOC(condition = "(CARA=='K_TR_D_N')or(CARA=='A_TR_D_N')",
+ regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
VALE =SIMP(statut='o',typ='R',min=6 ,max=6 ),),
b_K_TR_D_L =BLOC(condition = "(CARA=='K_TR_D_L')or(CARA=='A_TR_D_L')",
+ regles=(UN_PARMI('MAILLE','GROUP_MA'),),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
VALE =SIMP(statut='o',typ='R',min=6 ,max=6 ),),
b_K_T_N =BLOC(condition = "(CARA=='K_T_N')or(CARA=='A_T_N')",
+ regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
VALE =SIMP(statut='o',typ='R',min=6 ,max=6 ),),
b_K_T_L =BLOC(condition = "(CARA=='K_T_L')or(CARA=='A_T_L')",
+ regles=(UN_PARMI('MAILLE','GROUP_MA'),),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
VALE =SIMP(statut='o',typ='R',min=21,max=21),),
b_K_TR_N =BLOC(condition = "(CARA=='K_TR_N')or(CARA=='A_TR_N')",
+ regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
VALE =SIMP(statut='o',typ='R',min=21,max=21),),
b_K_TR_L =BLOC(condition = "(CARA=='K_TR_L')or(CARA=='A_TR_L')",
+ regles=(UN_PARMI('MAILLE','GROUP_MA'),),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
VALE =SIMP(statut='o',typ='R',min=78,max=78),),
# affection des caractéristiques de MASSE
b_M_T_D_N =BLOC(condition = "CARA=='M_T_D_N'",
fr="NOEUD: 1 valeur de masse",
+ regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
VALE =SIMP(statut='o',typ='R',min=1 ,max=1 ),),
b_M_TR_D_N =BLOC(condition = "CARA=='M_TR_D_N'",
fr="NOEUD: 1 valeur de masse, 6 valeurs du tenseur d'inertie, 3 composantes du vecteur d'excentricité",
+ regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
VALE =SIMP(statut='o',typ='R',min=10,max=10),),
b_M_T_N =BLOC(condition = "CARA=='M_T_N'",
fr="NOEUD: 6 valeurs de masse (triangulaire supérieure par colonne)",
+ regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
VALE =SIMP(statut='o',typ='R',min=6 ,max=6 ),),
b_M_T_L =BLOC(condition = "CARA=='M_T_L'",
fr="SEGMENT: 21 valeurs de masse (triangulaire supérieure par colonne)",
+ regles=(UN_PARMI('MAILLE','GROUP_MA'),),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
VALE =SIMP(statut='o',typ='R',min=21,max=21),),
b_M_TR_N =BLOC(condition = "CARA=='M_TR_N'",
fr="NOEUD: 21 valeurs de masse (triangulaire supérieure par colonne)",
+ regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
VALE =SIMP(statut='o',typ='R',min=21,max=21),),
b_M_TR_L =BLOC(condition = "CARA=='M_TR_L'",
fr="SEGMENT: 78 valeurs de masse (triangulaire supérieure par colonne)",
+ regles=(UN_PARMI('MAILLE','GROUP_MA'),),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
VALE =SIMP(statut='o',typ='R',min=78,max=78),),
),
#============================================================================
DISCRET_2D =FACT(statut='f',max='**',
- regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
- NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
REPERE =SIMP(statut='f',typ='TXM',into=("LOCAL","GLOBAL") ),
AMOR_HYST =SIMP(statut='f',typ='R' ),
CARA =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=1,
# affection des caractéristiques de RIGIDITE/AMORTISSEMENT
b_K_T_D_N =BLOC(condition = "(CARA=='K_T_D_N')or(CARA=='A_T_D_N')",
+ regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
VALE =SIMP(statut='o',typ='R',min=2 ,max=2 ),),
b_K_T_D_L =BLOC(condition = "(CARA=='K_T_D_L')or(CARA=='A_T_D_L')",
+ regles=(UN_PARMI('MAILLE','GROUP_MA'),),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
VALE =SIMP(statut='o',typ='R',min=2 ,max=2 ),),
b_K_TR_D_N =BLOC(condition = "(CARA=='K_TR_D_N')or(CARA=='A_TR_D_N')",
+ regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
VALE =SIMP(statut='o',typ='R',min=3 ,max=3 ),),
b_K_TR_D_L =BLOC(condition = "(CARA=='K_TR_D_L')or(CARA=='A_TR_D_L')",
+ regles=(UN_PARMI('MAILLE','GROUP_MA'),),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
VALE =SIMP(statut='o',typ='R',min=3 ,max=3 ),),
b_K_T_N =BLOC(condition = "(CARA=='K_T_N')or(CARA=='A_T_N')",
+ regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
VALE =SIMP(statut='o',typ='R',min=3 ,max=3 ),),
b_K_T_L =BLOC(condition = "(CARA=='K_T_L')or(CARA=='A_T_L')",
+ regles=(UN_PARMI('MAILLE','GROUP_MA'),),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
VALE =SIMP(statut='o',typ='R',min=10,max=10),),
b_K_TR_N =BLOC(condition = "(CARA=='K_TR_N')or(CARA=='A_TR_N')",
+ regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
VALE =SIMP(statut='o',typ='R',min=6 ,max=6),),
b_K_TR_L =BLOC(condition = "(CARA=='K_TR_L')or(CARA=='A_TR_L')",
+ regles=(UN_PARMI('MAILLE','GROUP_MA'),),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
VALE =SIMP(statut='o',typ='R',min=21,max=21),),
# affection des caractéristiques de MASSE
b_M_T_D_N =BLOC(condition = "CARA=='M_T_D_N'",
fr="NOEUD: 1 valeur de masse",
+ regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
VALE =SIMP(statut='o',typ='R',min=1 ,max=1 ),),
b_M_TR_D_N =BLOC(condition = "CARA=='M_TR_D_N'",
fr="NOEUD: 1 valeur de masse(m), 1 valeur d'inertie(Izz), 2 composantes du vecteur d'excentricité(ex,ey) ",
+ regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
VALE =SIMP(statut='o',typ='R',min=4 ,max=4 ),),
b_M_T_N =BLOC(condition = "CARA=='M_T_N'",
fr="NOEUD: 3 valeurs de masse (triangulaire supérieure par colonne)",
+ regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
VALE =SIMP(statut='o',typ='R',min=3 ,max=3 ),),
b_M_T_L =BLOC(condition = "CARA=='M_T_L'",
fr="SEGMENT: 10 valeurs de masse (triangulaire supérieure par colonne)",
+ regles=(UN_PARMI('MAILLE','GROUP_MA'),),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
VALE =SIMP(statut='o',typ='R',min=10,max=10),),
b_M_TR_N =BLOC(condition = "CARA=='M_TR_N'",
fr="NOEUD: 6 valeurs de masse (triangulaire supérieure par colonne)",
+ regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
VALE =SIMP(statut='o',typ='R',min=6 ,max=6 ),),
b_M_TR_L =BLOC(condition = "CARA=='M_TR_L'",
fr="SEGMENT: 21 valeurs de masse (triangulaire supérieure par colonne)",
+ regles=(UN_PARMI('MAILLE','GROUP_MA'),),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
VALE =SIMP(statut='o',typ='R',min=21,max=21),),
),
DDL =SIMP(statut='o',typ='TXM',max='**'),
),
) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 23/05/2006 AUTEUR CIBHHPD L.SALMONA
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
# RESPONSABLE VABHHTS J.PELLET
-def affe_char_cine_prod(MECA_IMPO,THER_IMPO,ACOU_IMPO,**args):
+def affe_char_cine_prod(MECA_IMPO,THER_IMPO,**args):
if MECA_IMPO != None : return char_cine_meca
if THER_IMPO != None : return char_cine_ther
- if ACOU_IMPO != None : return char_cine_acou
raise AsException("type de concept resultat non prevu")
AFFE_CHAR_CINE=OPER(nom="AFFE_CHAR_CINE",op= 101,sd_prod=affe_char_cine_prod
,fr="Affectation de conditions aux limites cinématiques pour traitement sans dualisation",
reentrant='n',
UIinfo={"groupes":("Modélisation",)},
- regles=(AU_MOINS_UN('MECA_IMPO','THER_IMPO','ACOU_IMPO'),
- EXCLUS('MECA_IMPO','THER_IMPO'),
- EXCLUS('MECA_IMPO','ACOU_IMPO'),
- EXCLUS('THER_IMPO','ACOU_IMPO'),),
+ regles=(AU_MOINS_UN('MECA_IMPO','THER_IMPO'),
+ EXCLUS('MECA_IMPO','THER_IMPO'),),
MODELE =SIMP(statut='o',typ=modele_sdaster ),
MECA_IMPO =FACT(statut='f',max='**',
regles=(UN_PARMI('TOUT','GROUP_NO','NOEUD'),
TEMP =SIMP(statut='f',typ='R' ),
TEMP_INF =SIMP(statut='f',typ='R' ),
),
- ACOU_IMPO =FACT(statut='f',max='**',
- regles=(UN_PARMI('TOUT','GROUP_NO','NOEUD' ),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- PRES =SIMP(statut='o',typ='C' ),
- ),
INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
) ;
#& MODIF COMMANDE DATE 30/06/2004 AUTEUR MCOURTOI M.COURTOIS
DEFORMEE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
),
) ;
-#& MODIF COMMANDE DATE 04/04/2005 AUTEUR DURAND C.DURAND
+#& MODIF COMMANDE DATE 23/05/2006 AUTEUR CIBHHPD L.SALMONA
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
-def calc_fonc_interp_prod(FONCTION,**args):
+def calc_fonc_interp_prod(FONCTION, NOM_PARA_FONC, **args):
if AsType(FONCTION) ==nappe_sdaster : return nappe_sdaster
elif AsType(FONCTION)==fonction_sdaster : return fonction_sdaster
elif AsType(FONCTION)==fonction_c : return fonction_c
- elif AsType(FONCTION)==formule : return fonction_sdaster
+ elif AsType(FONCTION)==formule :
+ if NOM_PARA_FONC != None:
+ return nappe_sdaster
+ return fonction_sdaster
elif AsType(FONCTION)==para_sensi : return para_sensi
raise AsException("type de concept resultat non prevu")
),
),
) ;
-#& MODIF COMMANDE DATE 01/02/2005 AUTEUR VABHHTS J.PELLET
+#& MODIF COMMANDE DATE 31/01/2006 AUTEUR ACBHHCD G.DEVESA
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
if OPTION == "AMOR_MECA" : return matr_elem_depl_r
if OPTION == "IMPE_MECA" : return matr_elem_depl_r
if OPTION == "ONDE_FLUI" : return matr_elem_depl_r
+ if OPTION == "AMOR_MECA_ABSO" : return matr_elem_depl_r
if OPTION == "RIGI_MECA_HYST" : return matr_elem_depl_c
if OPTION == "RIGI_THER" : return matr_elem_temp_r
if OPTION == "MASS_THER" : return matr_elem_temp_r
OPTION =SIMP(statut='o',typ='TXM',
into=("RIGI_MECA","MASS_MECA","RIGI_GEOM",
"AMOR_MECA","RIGI_THER","MASS_THER","IMPE_MECA",
- "ONDE_FLUI","MASS_FLUI_STRU","RIGI_FLUI_STRU",
+ "ONDE_FLUI","AMOR_MECA_ABSO","MASS_FLUI_STRU","RIGI_FLUI_STRU",
"RIGI_ROTA","MASS_MECA_DIAG","RIGI_ACOU",
"MASS_ID_MDEP_R","MASS_ID_MDNS_R","MASS_ID_MTEM_R","MASS_ID_MTNS_R",
"MASS_ACOU","AMOR_ACOU","RIGI_MECA_HYST",
MASS_MECA =SIMP(statut='f',typ=matr_elem_depl_r ),
CHARGE =SIMP(statut='f',typ=char_meca,validators=NoRepeat(),max='**'),
),
-
+
+ b_amor_meca_abso =BLOC(condition = "OPTION=='AMOR_MECA_ABSO'",
+ regles=(AU_MOINS_UN('CARA_ELEM','RIGI_MECA'),
+ ENSEMBLE('RIGI_MECA','MASS_MECA','CHAM_MATER'), ),
+ MODELE =SIMP(statut='o',typ=modele_sdaster ),
+ CARA_ELEM =SIMP(statut='f',typ=cara_elem ),
+ CHAM_MATER =SIMP(statut='o',typ=cham_mater ),
+ RIGI_MECA =SIMP(statut='f',typ=matr_elem_depl_r ),
+ MASS_MECA =SIMP(statut='f',typ=matr_elem_depl_r ),
+ CHARGE =SIMP(statut='f',typ=char_meca,validators=NoRepeat(),max='**'),
+ ),
+
b_rigi_meca_hyst =BLOC( condition = "OPTION=='RIGI_MECA_HYST'",
MODELE =SIMP(statut='o',typ=modele_sdaster ),
CHARGE =SIMP(statut='f',typ=char_meca ,validators=NoRepeat(),max='**' ),
#
INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ),
) ;
-#& MODIF COMMANDE DATE 17/08/2004 AUTEUR DURAND C.DURAND
+#& MODIF COMMANDE DATE 30/01/2006 AUTEUR D6BHHJP J.P.LEFEBVRE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
CREA_RESU=OPER(nom="CREA_RESU",op=124,sd_prod=crea_resu_prod,reentrant='f',
UIinfo={"groupes":("Modélisation",)},
- fr="Engendrer ou enrichir une structure de donnees en affectant les cham_gd associes",
+ fr="Créer ou enrichir une structure de donnees resultat à partir de champs aux noeuds",
OPERATION =SIMP(statut='o',typ='TXM',into=("AFFE","ECLA_PG","PERM_CHAM","PROL_RTZ",),
fr="choix de la fonction a activer",),
b_affe =BLOC(condition = "OPERATION == 'AFFE'",
- TYPE_RESU =SIMP(statut='o',typ='TXM',into=("MULT_ELAS","EVOL_ELAS","EVOL_NOLI","FOURIER_ELAS",
- "EVOL_THER","EVOL_VARC",) ),
+ TYPE_RESU =SIMP(statut='o',position='global',typ='TXM',into=("MULT_ELAS","EVOL_ELAS","EVOL_NOLI","FOURIER_ELAS",
+ "EVOL_THER","EVOL_VARC",) ),
NOM_CHAM =SIMP(statut='o',typ='TXM',into=C_NOM_CHAM_INTO()),
AFFE =FACT(statut='o',max='**',
CHAM_MATER =SIMP(statut='f',typ=cham_mater),
CARA_ELEM =SIMP(statut='f',typ=cara_elem),
- # affectation de plusieurs instants à l'aide d'un champ aux noeuds de fonctions du temps:
- b_fonc =BLOC(condition = "AsType(CHAM_GD) in (cham_no_temp_f,cham_no_depl_f)",
+ b_mult_elas =BLOC(condition = "TYPE_RESU == 'MULT_ELAS' ",
+ NOM_CAS =SIMP(statut='f',typ='TXM' ),
+ ),
+ b_evol =BLOC(condition = "((TYPE_RESU=='EVOL_ELAS') or (TYPE_RESU=='EVOL_NOLI') or (TYPE_RESU=='EVOL_THER')\
+ or (TYPE_RESU=='EVOL_VARC') )",
+ regles=(UN_PARMI('INST','LIST_INST'),),
INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
LIST_INST =SIMP(statut='f',typ=listr8_sdaster),
NUME_INIT =SIMP(statut='f',typ='I', val_min=1),
PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3 ),
CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
),
-
- # affectation d'un seul nume_ordre :
- b_reel =BLOC(condition = "AsType(CHAM_GD) not in (cham_no_temp_f,cham_no_depl_f)",
- regles=(UN_PARMI('NOM_CAS','NUME_MODE','INST','LIST_INST'),),
- NOM_CAS =SIMP(statut='f',typ='TXM' ),
+ b_fourier =BLOC(condition = "TYPE_RESU == 'FOURIER_ELAS' ",
NUME_MODE =SIMP(statut='f',typ='I'),
TYPE_MODE =SIMP(statut='f',typ='TXM',defaut="SYME",into=("SYME","ANTI","TOUS") ),
- INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
- LIST_INST =SIMP(statut='f',typ=listr8_sdaster),
- NUME_INIT =SIMP(statut='f',typ='I', val_min=1),
- NUME_FIN =SIMP(statut='f',typ='I', val_min=1),
- PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3 ),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
),
),
),
PROL_RTZ =FACT(statut='o',
regles=(EXCLUS('INST','LIST_INST'),),
MAILLAGE_FINAL =SIMP(statut='o',typ=maillage_sdaster,),
- TABLE =SIMP(statut='o',typ=tabl_post_rele,fr="Table issue de post_releve_t"),
+ TABLE =SIMP(statut='o',typ=table_sdaster,fr="Table issue de post_releve_t"),
INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
LIST_INST =SIMP(statut='f',typ=listr8_sdaster),
b_acce_reel =BLOC(condition="(INST != None)or(LIST_INST != None)",
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 30/01/2006 AUTEUR D6BHHJP J.P.LEFEBVRE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
PAR_LOT =SIMP(fr="mode de traitement des commandes",statut='f',typ='TXM',
into=("OUI","NON"),defaut="OUI"),
- FORMAT_HDF =SIMP(fr="sauvegarde de la base GLOBALE au format HDF",statut='f',
- typ='TXM',defaut="NON",into=("OUI","NON",) ),
BASE =FACT(fr="définition des paramètres associés aux bases JEVEUX",
statut='f',min=1,max=3,
FICHIER =SIMP(fr="nom de la base",statut='o',typ='TXM',
CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")),
) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 30/01/2006 AUTEUR D6BHHJP J.P.LEFEBVRE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
JEVEUX =SIMP(fr="force les déchargement sur disque",
statut='f',typ='TXM',into=('OUI','NON'),defaut='NON'),
ENVIMA =SIMP(fr="imprime les valeurs définies dans ENVIMA",
- statut='f',typ='TXM',into=('TES',)),
+ statut='f',typ='TXM',into=('TEST',)),
),
MEMOIRE =FACT(fr="mode de gestion mémoire utilisé",statut='f',min=1,max=1,
GESTION =SIMP(statut='f',typ='TXM',into=('COMPACTE','RAPIDE'),defaut='RAPIDE'),
INFO =SIMP(statut='f',typ='I',into=(1,2) ),
TITRE =SIMP(statut='f',typ='TXM',max='**' ),
) ;
-#& MODIF COMMANDE DATE 05/10/2004 AUTEUR CIBHHLV L.VIVAN
+#& MODIF COMMANDE DATE 24/05/2006 AUTEUR CIBHHLV L.VIVAN
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
UNITE =SIMP(statut='f',typ='I',defaut=8),
FICHIER =SIMP(statut='o',typ='TXM',validators=LongStr(1,255)),
- NB_CHIFFRE =SIMP(statut='f',typ='I',defaut=6),
- EPSILON =SIMP(statut='f',typ='R',defaut=1.E-14),
+ NB_CHIFFRE =SIMP(statut='o',typ='I',), # defaut=6 pas de defaut, il faut
+ EPSILON =SIMP(statut='o',typ='R',), # defaut=1.E-12 se poser la question !
EXPR_IGNORE =SIMP(statut='f',typ='TXM',max='**',
fr="Liste d'expressions régulières permettant d'ignorer certaines lignes"),
VALE_K =SIMP(statut='o',typ='TXM' ),
-#@ MODIF calc_fonction_ops Macro DATE 31/05/2005 AUTEUR DURAND C.DURAND
+#@ MODIF calc_fonction_ops Macro DATE 02/05/2006 AUTEUR MCOURTOI M.COURTOIS
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
ENVELOPPE,ASSE,CORR_ACCE,PUISSANCE,INVERSE,
NOM_PARA,NOM_RESU,INTERPOL,PROL_DROITE,
PROL_GAUCHE,NOM_PARA_FONC,INTERPOL_FONC,PROL_DROITE_FONC,
- PROL_GAUCHE_FONC,**args):
+ PROL_GAUCHE_FONC,INFO,**args):
"""
Ecriture de la macro CALC_FONCTION
"""
import copy
from math import pi
from Utilitai.t_fonction import t_fonction,t_fonction_c,t_nappe
+ from Utilitai import liss_enveloppe
from Accas import _F
from Cata.cata import nappe_sdaster,fonction_sdaster,fonction_c
from Utilitai.Utmess import UTMESS
### On importe les definitions des commandes a utiliser dans la macro
DEFI_FONCTION = self.get_cmd('DEFI_FONCTION')
+ IMPR_FONCTION = self.get_cmd('IMPR_FONCTION')
DEFI_NAPPE = self.get_cmd('DEFI_NAPPE')
### Comptage commandes + déclaration concept sortant
__ex=list_fonc[0]
if COMB_C[0]['COEF_R']!=None: __ex=__ex*complex(COMB_C[0]['COEF_R'])
- if COMB_C[0]['COEF_C']!=None: __ex=__ex*tocomplex(COMB_C[0]['COEF_C'])
+ if COMB_C[0]['COEF_C']!=None:
+ if type(COMB_C[0]['COEF_C']) in EnumType : __ex=__ex*tocomplex(COMB_C[0]['COEF_C'])
+ else : __ex=__ex*COMB_C[0]['COEF_C']
i=1
for item in list_fonc[1:] :
if COMB_C[i]['COEF_R']!=None: coef=complex(COMB_C[i]['COEF_R'])
- if COMB_C[i]['COEF_C']!=None: coef=tocomplex(COMB_C[i]['COEF_C'])
+ if COMB_C[i]['COEF_C']!=None:
+ if type(COMB_C[i]['COEF_C']) in EnumType : coef=tocomplex(COMB_C[i]['COEF_C'])
+ else : coef=COMB_C[i]['COEF_C']
item=item*coef
__ex=__ex+item
i=i+1
+ ### mot clé LIST_PARA uniquement présent si COMB ou COMB_C
+ if (COMB != None) or (COMB_C != None) :
+ if (args['LIST_PARA'] != None) :
+ __ex=__ex.evalfonc(args['LIST_PARA'].Valeurs())
###
if (PUISSANCE != None):
__ff=PUISSANCE['FONCTION'].convert()
l_fonc.append(t_fonction(l_freq,spectr[iamor,ideb,:]/SPEC_OSCI['NORME'],para_fonc))
__ex=t_nappe(vale_para,l_fonc,para)
###
- if (LISS_ENVELOP!= None): return
+ if (LISS_ENVELOP!= None):
+ __ff=LISS_ENVELOP['NAPPE'].convert()
+ sp_nappe=liss_enveloppe.nappe(listFreq=__ff.l_fonc[0].vale_x, listeTable=[f.vale_y for f in __ff.l_fonc], listAmor=__ff.vale_para, entete="")
+ sp_lisse=liss_enveloppe.lissage(nappe=sp_nappe,fmin=LISS_ENVELOP['FREQ_MIN'],fmax=LISS_ENVELOP['FREQ_MAX'],elarg=LISS_ENVELOP['ELARG'],tole_liss=LISS_ENVELOP['TOLE_LISS'])
+ para_fonc=__ff.l_fonc[0].para
+ l_fonc=[]
+ for val in sp_lisse.listTable :
+ l_fonc.append(t_fonction(sp_lisse.listFreq,val,para_fonc))
+ __ex=t_nappe(vale_para=sp_lisse.listAmor,l_fonc=l_fonc,para=__ff.para)
### creation de la fonction produite par appel à DEFI_FONCTION
### on récupère les paramètres issus du calcul de __ex
if NOM_PARA_FONC !=None : para['NOM_PARA_FONC'] =INTERPOL
if INTERPOL_FONC !=None : para['INTERPOL'] =INTERPOL
C_out=DEFI_NAPPE(PARA=__ex.vale_para.tolist(),DEFI_FONCTION=def_fonc,**para)
+ if INFO > 1:
+ IMPR_FONCTION(FORMAT='TABLEAU',
+ UNITE=6,
+ COURBE=_F(FONCTION=C_out),)
return ier
-#@ MODIF calc_precont_ops Macro DATE 07/03/2005 AUTEUR DURAND C.DURAND
+#@ MODIF calc_precont_ops Macro DATE 05/09/2005 AUTEUR DURAND C.DURAND
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
import types
from Accas import _F
from Noyau.N_utils import AsType
+ from Utilitai.Utmess import UTMESS
ier=0
# On importe les definitions des commandes a utiliser dans la macro
AFFE_MATERIAU = self.get_cmd('AFFE_MATERIAU')
# La macro compte pour 1 dans la numerotation des commandes
- self.icmd=1
+ self.set_icmd(1)
# Le concept sortant (de type evol_noli) est nomme RES dans
# le contexte de la macro
# Teste si INST_INIT est bien plus petit que INST_FIN
if __TMAX <= __TMIN:
- ier=ier+1
- self.cr.fatal("""<F> <CALC_PRECONT> ERREUR : INST_FIN PLUS PETIT QUE INST_INIT""")
- return ier
+ UTMESS('F','CALC_PRECONT','INST_FIN PLUS PETIT QUE INST_INIT')
# Cree la liste d'instant __L2 allant de __TMIN a __TMAX et contenant
# un instant supplementaire __TINT
--- /dev/null
+#@ MODIF calc_table_ops Macro DATE 10/04/2006 AUTEUR MCOURTOI M.COURTOIS
+# -*- coding: iso-8859-1 -*-
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2005 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+
+# RESPONSABLE MCOURTOI M.COURTOIS
+from types import *
+EnumTypes = (ListType, TupleType)
+
+def calc_table_ops(self, TABLE, ACTION, INFO, **args):
+ """
+ Macro CALC_TABLE permettant de faire des opérations sur une table
+ """
+ import aster
+
+ macro = 'CALC_TABLE'
+ from Accas import _F
+ from Cata.cata import table_jeveux
+ from Utilitai.Utmess import UTMESS
+ from Utilitai import transpose
+ from Utilitai.Table import Table, merge
+ from Utilitai.Sensibilite import NomCompose
+
+ ier = 0
+ # La macro compte pour 1 dans la numerotation des commandes
+ self.set_icmd(1)
+
+ # Le concept sortant (de type table_sdaster ou dérivé) est tab
+ self.DeclareOut('tabout', self.sd)
+
+ # On importe les definitions des commandes a utiliser dans la macro
+ # Le nom de la variable doit etre obligatoirement le nom de la commande
+ CREA_TABLE = self.get_cmd('CREA_TABLE')
+ DETRUIRE = self.get_cmd('DETRUIRE')
+
+ # 0. faut-il utiliser une table dérivée
+ form_sens='\n... SENSIBILITE AU PARAMETRE %s (SD COMP %s)'
+ if args['SENSIBILITE']:
+ ncomp = NomCompose(TABLE, args['SENSIBILITE'], msg='F')
+ sdtab = table_jeveux(ncomp)
+ tab = sdtab.EXTR_TABLE()
+ else:
+ tab = TABLE.EXTR_TABLE()
+
+ #----------------------------------------------
+ # Boucle sur les actions à effectuer
+ for fOP in ACTION:
+ occ = fOP.cree_dict_valeurs(fOP.mc_liste)
+ for mc, val in occ.items():
+ if val == None:
+ del occ[mc]
+
+ #----------------------------------------------
+ # 1. Traitement du FILTRE
+ # format pour l'impression des filtres
+ form_filtre = '\nFILTRE -> NOM_PARA: %-16s CRIT_COMP: %-4s VALE: %s'
+ if occ['OPERATION'] == 'FILTRE':
+ col = getattr(tab, occ['NOM_PARA'])
+ # peu importe le type, c'est la meme méthode d'appel
+ opts = [occ[k] for k in ('VALE','VALE_I','VALE_C','VALE_K') if occ.has_key(k)]
+ kargs = {}
+ for k in ('CRITERE','PRECISION'):
+ if occ.has_key(k):
+ kargs[k] = occ[k]
+ tab = tab & ( getattr(col, occ['CRIT_COMP'])(*opts,**kargs) )
+ # trace l'operation dans le titre
+ #if FORMAT in ('TABLEAU','ASTER'):
+ tab.titr += form_filtre % (occ['NOM_PARA'], occ['CRIT_COMP'], \
+ ' '.join([str(v) for v in opts]))
+
+ #----------------------------------------------
+ # 2. Traitement de EXTR
+ if occ['OPERATION'] == 'EXTR':
+ lpar = occ['NOM_PARA']
+ if not type(lpar) in EnumTypes:
+ lpar = [lpar]
+ for p in lpar:
+ if not p in tab.para:
+ UTMESS('F', macro, 'Paramètre %s inexistant dans la table %s' % (p, TABLE.nom))
+ tab = tab[occ['NOM_PARA']]
+
+ #----------------------------------------------
+ # 3. Traitement de RENOMME
+ if occ['OPERATION'] == 'RENOMME':
+ try:
+ tab.Renomme(*occ['NOM_PARA'])
+ except KeyError, msg:
+ UTMESS('F', macro, msg)
+
+ #----------------------------------------------
+ # 4. Traitement du TRI
+ if occ['OPERATION'] == 'TRI':
+ tab.sort(CLES=occ['NOM_PARA'], ORDRE=occ['ORDRE'])
+
+ #----------------------------------------------
+ # 5. Traitement de COMB
+ if occ['OPERATION'] == 'COMB':
+ tab2 = occ['TABLE'].EXTR_TABLE()
+ opts = [tab, tab2]
+ if occ['NOM_PARA']<>None:
+ lpar = occ['NOM_PARA']
+ if not type(lpar) in EnumTypes:
+ lpar = [lpar]
+ for p in lpar:
+ if not p in tab.para:
+ UTMESS('F', macro, 'Paramètre %s inexistant dans la table %s' % (p, TABLE.nom))
+ if not p in tab2.para:
+ UTMESS('F', macro, 'Paramètre %s inexistant dans la table %s' % (p, occ['TABLE'].nom))
+ opts.append(lpar)
+ tab = merge(*opts)
+
+ #----------------------------------------------
+ # 6. Traitement de OPER
+ if occ['OPERATION'] == 'OPER':
+ # ajout de la colonne dans la table
+ tab.fromfunction(occ['NOM_PARA'], occ['FORMULE'])
+ if INFO == 2:
+ vectval = getattr(tab, occ['NOM_PARA']).values()
+ aster.affiche('MESSAGE', 'Ajout de la colonne %s : %s' % (occ['NOM_PARA']+repr(vectval))+'\n')
+
+ #----------------------------------------------
+ # 99. Création de la table_sdaster résultat
+ # cas réentrant : il faut détruire l'ancienne table_sdaster
+ if self.sd.nom == TABLE.nom:
+ DETRUIRE(CONCEPT=_F(NOM=TABLE.nom,), INFO=1)
+
+ dprod = tab.dict_CREA_TABLE()
+ if INFO == 2:
+ echo_mess = []
+ echo_mess.append( '@-'*30+'\n' )
+ echo_mess.append( tab )
+ from pprint import pformat
+ echo_mess.append( pformat(dprod) )
+ echo_mess.append( '@-'*30+'\n' )
+ texte_final = ' '.join(echo_mess)
+ aster.affiche('MESSAGE', texte_final)
+
+ # surcharge par le titre fourni
+ tit = args['TITRE']
+ if tit != None:
+ if not type(tit) in EnumTypes:
+ tit = [tit]
+ dprod['TITRE'] = tuple(['%-80s' % lig for lig in tit])
+ # type de la table de sortie à passer à CREA_TABLE
+ tabout = CREA_TABLE(**dprod)
+
+ return ier
--- /dev/null
+#@ MODIF creation_donnees_homard Macro DATE 22/05/2006 AUTEUR MCOURTOI M.COURTOIS
+# -*- coding: iso-8859-1 -*-
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2006 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE MCOURTOI M.COURTOIS
+__all__ = [ ]
+"""
+Cette classe crée le fichier de configuration permettant de lancer HOMARD depuis Code_Aster.
+"""
+__revision__ = "V1.0"
+
+import os
+import os.path
+
+try:
+ from Utilitai.Utmess import UTMESS
+except ImportError:
+ def UTMESS(code, sprg, texte) :
+ """Clone de utmess si on ne reussit pas à le charger
+ """
+ fmt = '\n <%s> <%s> %s\n\n'
+ print fmt % (code, sprg, texte)
+
+# ------------------------------------------------------------------------------
+class creation_donnees_homard:
+ """Cette classe crée les données permettant de lancer HOMARD depuis Code_Aster.
+ Ce sont :
+ . le fichier de configuration
+ . le fichier des données dans le cas d'information
+
+ Arguments (stockés en tant qu'attribut) :
+ . nom_macro : nom de la macro-commande qui appelle :
+ 'MACR_ADAP_MAIL' pour une adaptation
+ 'MACR_INFO_MAIL' pour une information sur un maillage
+ . mots_cles : mots-clés de la macro-commande
+ . dico_configuration : dictionnaire des options
+
+ Attributs :
+ . Nom_Fichier_Configuration : nom du fichier de configuration (immuable)
+ . Nom_Fichier_Donnees : nom du fichier de données (immuable)
+ . mode_homard : le mode pour filtrer ici ("ADAP" ou "INFO")
+ . ModeHOMA : le mode pour HOMARD (1 ou 2)
+ . mode_homard_texte : le mode d'utilisation, en francais ("ADAPTATION" ou "INFORMATION")
+ . elements_incompatibles : que faire des éléments incompatibles avec HOMARD
+ """
+# ------------------------------------------------------------------------------
+ def __init__(self, nom_macro, mots_cles, dico_configuration ) :
+ """Construction + valeurs par défaut des attributs
+ """
+#
+# 1. Vérification de la macro qui appelle
+#
+ d_aux = {}
+ d_aux["MACR_ADAP_MAIL"] = ( "ADAP", 1, "ADAPTATION" )
+ d_aux["MACR_INFO_MAIL"] = ( "INFO", 2, "INFORMATION" )
+ if d_aux.has_key(nom_macro) :
+ self.mode_homard = d_aux[nom_macro][0]
+ self.ModeHOMA = d_aux[nom_macro][1]
+ self.mode_homard_texte = d_aux[nom_macro][2]
+ else :
+ UTMESS("F", nom_macro, "Cette macro commande est inconnue.")
+#
+# 2. Données générales de cette initialisation
+#
+#gn for mot_cle in mots_cles.keys() :
+#gn print "mots_cles[", mot_cle, "] = ", mots_cles[mot_cle]
+#gn for mot_cle in dico_configuration.keys() :
+#gn print "dico_configuration[", mot_cle, "] = ", dico_configuration[mot_cle]
+#
+ self.nom_macro = nom_macro
+ self.mots_cles = mots_cles
+ self.dico_configuration = dico_configuration
+#
+# 3. Quel type de traitement des elemenst incompatibles
+#
+ if mots_cles.has_key("ELEMENTS_NON_HOMARD") :
+ d_aux = {}
+ d_aux["REFUSER"] = "TOUS"
+ d_aux["IGNORER"] = "IGNORE_QUAD"
+ self.elements_incompatibles = d_aux[mots_cles["ELEMENTS_NON_HOMARD"]]
+ else :
+ self.elements_incompatibles = None
+#
+# 4. Attributs immuables
+#
+ self.Nom_Fichier_Configuration = "HOMARD.Configuration"
+ self.Nom_Fichier_Donnees = "HOMARD.Donnees"
+#
+# ------------------------------------------------------------------------------
+ def int_to_str2 (self, entier) :
+ """
+ Transforme un entier compris entre 0 et 99 en une chaine sur deux caractères
+ """
+# print "\nArguments a l'entree de", __name__, ":", entier
+#
+ try:
+ la_chaine = '%02d' % entier
+ except TypeError:
+ la_chaine = None
+#
+ return la_chaine
+# ------------------------------------------------------------------------------
+ def quel_mode (self) :
+ """Informe sur le mode de lancement de HOMARD
+ """
+### print self.mode_homard_texte
+ print "Lancement de creation_donnees_homard en mode", self.mode_homard_texte
+ return
+# ------------------------------------------------------------------------------
+ def creation_configuration (self) :
+ """Crée les données nécessaires à la configuration
+ """
+#
+ message_erreur = None
+#
+ while message_erreur is None :
+#
+# 1. Les chaines liées aux numéros d'itération
+#
+ if self.mode_homard == "ADAP" :
+ niter = self.dico_configuration["niter"]
+ self.str_niter = self.int_to_str2 (niter)
+ self.str_niterp1 = self.int_to_str2 (niter+1)
+ self.niter_vers_niterp1 = self.str_niter + ".vers." + self.str_niterp1
+#
+# 2. La liste standard
+#
+ if self.mode_homard == "INFO" :
+ aux = "Liste.info"
+ else :
+ aux = "Liste." + self.niter_vers_niterp1
+ self.ListeStd = aux
+#
+# 3. Le type de bilan : il faut convertir la donnée textuelle en un entier,
+# produit de nombres premiers.
+# Si rien n'est demandé, on met 0.
+#
+ aux = 1
+ dico_aux = {}
+ dico_aux["INTERPENETRATION"] = 3
+ dico_aux["NOMBRE"] = 7
+ dico_aux["QUALITE"] = 5
+ dico_aux["CONNEXITE"] = 11
+ dico_aux["TAILLE"] = 13
+ l_aux = dico_aux.keys()
+ for choix in l_aux :
+ if self.mots_cles.has_key(choix) :
+ if self.mots_cles[choix] == "OUI" :
+ aux = aux * dico_aux[choix]
+ if aux == 1 :
+ aux = 0
+ self.TypeBila = aux
+#
+# 4. Les entrées/sorties au format MED
+#
+ self.CCNoMN__ = self.dico_configuration["NOM_MED_MAILLAGE_N"]
+ if self.mode_homard == "ADAP" :
+ self.CCNoMNP1 = self.dico_configuration["NOM_MED_MAILLAGE_NP1"]
+ if self.dico_configuration.has_key("NOM_MED_MAILLAGE_NP1_ANNEXE") :
+ self.CCMaiAnn = self.dico_configuration["NOM_MED_MAILLAGE_NP1_ANNEXE"]
+#
+# 5. Les entrées/sorties au format HOMARD
+#
+ if self.mode_homard == "ADAP" :
+ self.fic_homard_niter = "M_" + self.str_niter + ".hom"
+ self.fic_homard_niterp1 = "M_" + self.str_niterp1 + ".hom"
+ else :
+ self.fic_homard_niter = None
+#
+# 6.1. Le pilotage de l'adaptation
+#
+ if self.mode_homard == "ADAP" :
+#
+# 6.1. Le type d'adaptation
+#
+ if self.mots_cles["ADAPTATION"] == "RAFFINEMENT" or self.mots_cles["ADAPTATION"] == "RAFFINEMENT_ZONE" :
+ self.TypeRaff = "libre"
+ self.TypeDera = "non"
+ elif self.mots_cles["ADAPTATION"] == "DERAFFINEMENT" :
+ self.TypeRaff = "non"
+ self.TypeDera = "libre"
+ elif self.mots_cles["ADAPTATION"] == "RAFF_DERA" :
+ self.TypeRaff = "libre"
+ self.TypeDera = "libre"
+ elif self.mots_cles["ADAPTATION"] == "RAFFINEMENT_UNIFORME" :
+ self.TypeRaff = "uniforme"
+ self.TypeDera = "non"
+ elif self.mots_cles["ADAPTATION"] == "DERAFFINEMENT_UNIFORME" :
+ self.TypeRaff = "non"
+ self.TypeDera = "uniforme"
+ elif self.mots_cles["ADAPTATION"] == "RIEN" :
+ self.TypeRaff = "non"
+ self.TypeDera = "non"
+#gn print "... self.TypeRaff = ",self.TypeRaff
+#gn print "... self.TypeDera = ",self.TypeDera
+#
+# 6.2. L'éventuel seuil de raffinement
+#
+ if self.TypeRaff == "libre" and self.mots_cles["ADAPTATION"] != "RAFFINEMENT_ZONE" :
+ d_aux = {}
+ d_aux["CRIT_RAFF_ABS"] = ("SeuilHau", 1)
+ d_aux["CRIT_RAFF_REL"] = ("SeuilHRe", 100)
+ d_aux["CRIT_RAFF_PE" ] = ("SeuilHPE", 100)
+ l_aux = d_aux.keys()
+ for mot_cle in l_aux :
+ if self.mots_cles[mot_cle] is not None :
+ aux = self.mots_cles[mot_cle]*d_aux[mot_cle][1]
+ self.critere_raffinement = (d_aux[mot_cle][0], aux)
+ else :
+ self.critere_raffinement = None
+#gn print "... self.critere_raffinement = ", self.critere_raffinement
+#
+# 6.3. L'éventuel seuil de déraffinement
+#
+ if self.TypeDera == "libre" :
+ d_aux = {}
+ d_aux["CRIT_DERA_ABS"] = ("SeuilBas", 1)
+ d_aux["CRIT_DERA_REL"] = ("SeuilBRe", 100)
+ d_aux["CRIT_DERA_PE" ] = ("SeuilBPE", 100)
+ l_aux = d_aux.keys()
+ for mot_cle in l_aux :
+ if self.mots_cles[mot_cle] is not None :
+ aux = self.mots_cles[mot_cle]*d_aux[mot_cle][1]
+ self.critere_deraffinement = (d_aux[mot_cle][0], aux)
+ else :
+ self.critere_deraffinement = None
+#gn print "... self.critere_deraffinement = ", self.critere_deraffinement
+#
+# 6.4. Les niveaux extremes
+#
+ self.niveau = []
+ for mot_cle in [ "NIVE_MIN", "NIVE_MAX" ] :
+ if self.mots_cles.has_key(mot_cle) :
+ if self.mots_cles[mot_cle] is not None :
+ if mot_cle == "NIVE_MIN" :
+ aux = "NiveauMi"
+ else :
+ aux = "NiveauMa"
+ self.niveau.append((aux, self.mots_cles[mot_cle]))
+ if len(self.niveau) == 2 :
+#gn print self.mots_cles["NIVE_MIN"]
+#gn print self.mots_cles["NIVE_MAX"]
+ if self.mots_cles["NIVE_MIN"] >= self.mots_cles["NIVE_MAX"] :
+ message_erreur = "Le niveau mini ,"+str(self.mots_cles["NIVE_MIN"])+\
+ ", doit etre < au niveau maxi, "+str(self.mots_cles["NIVE_MAX"])+"."
+ break
+#
+# 6.5. Les éventuelles zones de raffinement
+#
+ if self.dico_configuration.has_key("Zones") :
+ iaux = 0
+ for zone in self.dico_configuration["Zones"] :
+ iaux = iaux + 1
+ s_aux_1 = "Zone numero "+str(iaux)+" : "
+ s_aux_2 = ", doit etre < au "
+ if zone.has_key("X_MINI") :
+ if zone["X_MINI"] >= zone["X_MAXI"] :
+ message_erreur = s_aux_1+"X mini ,"+str(zone["X_MINI"])+s_aux_2+"X maxi, "+str(zone["X_MAXI"])+"."
+ if zone["Y_MINI"] >= zone["Y_MAXI"] :
+ message_erreur = s_aux_1+"Y mini ,"+str(zone["Y_MINI"])+s_aux_2+"Y maxi, "+str(zone["Y_MAXI"])+"."
+ if zone.has_key("Z_MINI") :
+ if zone["Z_MINI"] >= zone["Z_MAXI"] :
+ message_erreur = s_aux_1+"Z mini ,"+str(zone["Z_MINI"])+s_aux_2+"Z maxi, "+str(zone["Z_MAXI"])+"."
+#
+ break
+#
+ if message_erreur is not None :
+ UTMESS("F", self.nom_macro, message_erreur)
+#
+ return self.fic_homard_niter
+# ------------------------------------------------------------------------------
+ def ouvre_fichier (self, nomfic_local) :
+ """Ouvre en écriture un fichier après l'avoir éventuellement détruit
+ """
+ codret_partiel = [0]
+### print nomfic_local
+ Rep_Calc_HOMARD_global = self.dico_configuration["Rep_Calc_HOMARD_global"]
+ nomfic = os.path.join ( Rep_Calc_HOMARD_global , nomfic_local )
+#
+ if os.path.isfile (nomfic) :
+ try :
+ os.remove (nomfic)
+ except os.error, codret_partiel :
+ print "Probleme au remove, erreur numéro ", codret_partiel[0], ":", codret_partiel[1]
+ UTMESS("F", self.nom_macro, "Impossible de tuer le fichier "+nomfic)
+#
+ fichier = open (nomfic,"w")
+ self.fichier = fichier
+#
+ return fichier, nomfic
+# ------------------------------------------------------------------------------
+ def ecrire_ligne_configuration_0 (self, commentaire) :
+ """Ecrit une ligne de commentaires du fichier de configuration
+ Arguments :
+ . commentaire : le commentaire à écrire
+ """
+#
+ ligne = "#\n"
+ ligne = ligne + "# " + commentaire + "\n"
+ ligne = ligne + "#\n"
+ self.fichier.write(ligne)
+#
+ return
+# ------------------------------------------------------------------------------
+ def ecrire_ligne_configuration_2 (self, motcle, valeur) :
+ """Ecrit une ligne du fichier de configuration dans le cas : motcle + valeur
+ Arguments :
+ . motcle : le mot-clé HOMARD à écrire
+ . valeur : la valeur associée
+ """
+#
+ ligne = motcle + " " + str(valeur) + "\n"
+ self.fichier.write(ligne)
+#
+ return
+# ------------------------------------------------------------------------------
+ def ecrire_ligne_configuration_3 (self, motcle, valeur1, valeur2) :
+ """Ecrit une ligne du fichier de configuration dans le cas : motcle + valeur1 + valeur2
+ Arguments :
+ . motcle : le mot-clé HOMARD à écrire
+ . valeur : la valeur associée
+ """
+#
+ ligne = motcle + " " + str(valeur1) + " " + str(valeur2) + "\n"
+ self.fichier.write(ligne)
+#
+ return
+# ------------------------------------------------------------------------------
+ def ecrire_fichier_configuration (self) :
+ """Ecrit le fichier de configuration
+ """
+ message_erreur = None
+#
+ while message_erreur is None :
+#
+# 1. Ouverture du fichier
+#
+ fichier, nomfic_global = self.ouvre_fichier(self.Nom_Fichier_Configuration)
+#
+# 2. Généralités
+#
+ self.ecrire_ligne_configuration_0("Generalites")
+ self.ecrire_ligne_configuration_2("ModeHOMA", self.ModeHOMA)
+ self.ecrire_ligne_configuration_2("ListeStd", self.ListeStd)
+ self.ecrire_ligne_configuration_2("TypeBila", self.TypeBila)
+ self.ecrire_ligne_configuration_2("CCAssoci", "MED")
+ self.ecrire_ligne_configuration_2("NumeIter", self.dico_configuration["niter"])
+#
+# 3. Les fichiers externes
+#
+ self.ecrire_ligne_configuration_0("Les fichiers au format MED")
+ self.ecrire_ligne_configuration_2("CCNoMN__", self.CCNoMN__)
+ self.ecrire_ligne_configuration_2("CCMaiN__", self.dico_configuration["Fichier_ASTER_vers_HOMARD"])
+ if self.mode_homard == "ADAP" :
+ self.ecrire_ligne_configuration_2("CCNoMNP1", self.CCNoMNP1)
+ self.ecrire_ligne_configuration_2("CCMaiNP1", self.dico_configuration["Fichier_HOMARD_vers_ASTER"])
+#
+ self.ecrire_ligne_configuration_0("Les fichiers de bilan")
+ self.ecrire_ligne_configuration_2("PPBasFic", "info")
+#
+# 4. Les fichiers HOMARD
+#
+ self.ecrire_ligne_configuration_0("Les fichiers au format HOMARD")
+ if self.mode_homard == "ADAP" :
+ self.ecrire_ligne_configuration_3("HOMaiN__", "M_"+self.str_niter , self.fic_homard_niter )
+ self.ecrire_ligne_configuration_3("HOMaiNP1", "M_"+self.str_niterp1, self.fic_homard_niterp1)
+ aux = "oui"
+ else :
+ aux = "non"
+ self.ecrire_ligne_configuration_2("EcriFiHO", aux)
+#
+# 5. Le pilotage de l'adaptation
+#
+ if self.mode_homard == "ADAP" :
+ self.ecrire_ligne_configuration_0("Le pilotage de l'adaptation")
+#
+# 5.1. Type d'adaptation
+#
+ self.ecrire_ligne_configuration_2("TypeRaff", self.TypeRaff)
+ if self.critere_raffinement is not None :
+ self.ecrire_ligne_configuration_2(self.critere_raffinement[0], self.critere_raffinement[1])
+ self.ecrire_ligne_configuration_2("TypeDera", self.TypeDera)
+ if self.critere_deraffinement is not None :
+ self.ecrire_ligne_configuration_2(self.critere_deraffinement[0], self.critere_deraffinement[1])
+#
+# 5.2. L'eventuel indicateur d'erreur
+#
+ if self.dico_configuration.has_key("Indicateur") :
+#
+ self.ecrire_ligne_configuration_0("L'indicateur d'erreur")
+ self.ecrire_ligne_configuration_2("CCIndica", self.dico_configuration["Fichier_ASTER_vers_HOMARD"])
+ self.ecrire_ligne_configuration_2("CCNoChaI", self.dico_configuration["Indicateur"]["NOM_MED"])
+ self.ecrire_ligne_configuration_2("CCCoChaI", self.dico_configuration["Indicateur"]["COMPOSANTE"])
+ if self.dico_configuration["Indicateur"].has_key("NUME_ORDRE") :
+ self.ecrire_ligne_configuration_2("CCNumOrI", self.dico_configuration["Indicateur"]["NUME_ORDRE"])
+ self.ecrire_ligne_configuration_2("CCNumPTI", self.dico_configuration["Indicateur"]["NUME_ORDRE"])
+#
+# 5.3. Les niveaux extremes
+#
+ for aux in self.niveau :
+ self.ecrire_ligne_configuration_2(aux[0], aux[1])
+#
+# 6. Les éventuelles zones de raffinement
+#
+ if self.dico_configuration.has_key("Zones") :
+ iaux = 0
+ for zone in self.dico_configuration["Zones"] :
+ iaux = iaux + 1
+ self.ecrire_ligne_configuration_0("Zone de raffinement numéro "+str(iaux))
+ if zone.has_key("X_MINI") :
+ self.ecrire_ligne_configuration_3("ZoRaXmin", iaux, zone["X_MINI"])
+ self.ecrire_ligne_configuration_3("ZoRaXmax", iaux, zone["X_MAXI"])
+ self.ecrire_ligne_configuration_3("ZoRaYmin", iaux, zone["Y_MINI"])
+ self.ecrire_ligne_configuration_3("ZoRaYmax", iaux, zone["Y_MAXI"])
+ if zone.has_key("Z_MINI") :
+ self.ecrire_ligne_configuration_3("ZoRaZmin", iaux, zone["Z_MINI"])
+ self.ecrire_ligne_configuration_3("ZoRaZmax", iaux, zone["Z_MAXI"])
+ if zone.has_key("X_CENTRE") :
+ self.ecrire_ligne_configuration_3("ZoRaXCen", iaux, zone["X_CENTRE"])
+ self.ecrire_ligne_configuration_3("ZoRaYCen", iaux, zone["Y_CENTRE"])
+ self.ecrire_ligne_configuration_3("ZoRaRayo", iaux, zone["RAYON"])
+ if zone.has_key("Z_CENTRE") :
+ self.ecrire_ligne_configuration_3("ZoRaZCen", iaux, zone["Z_CENTRE"])
+#
+# 7. Les éventuels champs à mettre à jour
+#
+ if self.dico_configuration.has_key("Champs") :
+ self.ecrire_ligne_configuration_0("Champs à mettre à jour")
+ self.ecrire_ligne_configuration_2("CCSolN__", self.dico_configuration["Fichier_ASTER_vers_HOMARD"])
+ self.ecrire_ligne_configuration_2("CCSolNP1", self.dico_configuration["Fichier_HOMARD_vers_ASTER"])
+ iaux = 0
+ for maj_champ in self.dico_configuration["Champs"] :
+ iaux = iaux + 1
+ self.ecrire_ligne_configuration_0("Mise à jour du champ numéro "+str(iaux))
+ self.ecrire_ligne_configuration_3("CCChaNom", iaux, maj_champ["NOM_MED"])
+ if maj_champ.has_key("NUME_ORDRE") :
+ self.ecrire_ligne_configuration_3("CCChaNuO", iaux, maj_champ["NUME_ORDRE"])
+ self.ecrire_ligne_configuration_3("CCChaPdT", iaux, maj_champ["NUME_ORDRE"])
+ elif maj_champ.has_key("INST") :
+ self.ecrire_ligne_configuration_3("CCChaIns", iaux, maj_champ["INST"])
+#
+# 8. L'éventuel maillage de frontière
+#
+ if self.dico_configuration.has_key("NOM_MED_MAILLAGE_FRONTIERE") :
+ self.ecrire_ligne_configuration_0("Maillage de frontière")
+ self.ecrire_ligne_configuration_2("SuivFron", "oui")
+ self.ecrire_ligne_configuration_2("CCFronti", self.dico_configuration["Fichier_ASTER_vers_HOMARD"])
+ self.ecrire_ligne_configuration_2("CCNoMFro", self.dico_configuration["NOM_MED_MAILLAGE_FRONTIERE"])
+ if self.mots_cles.has_key("GROUP_MA") :
+ if self.mots_cles["GROUP_MA"] is not None :
+ for group_ma in self.mots_cles["GROUP_MA"] :
+ self.ecrire_ligne_configuration_2("CCGroFro", group_ma)
+#
+# 9. L'usage des éléments incompatibles avec HOMARD
+#
+ if self.elements_incompatibles is not None :
+ self.ecrire_ligne_configuration_0("Les éléments incompatibles avec HOMARD")
+ self.ecrire_ligne_configuration_2("TypeElem", self.elements_incompatibles)
+#
+# 10. Options particulières
+#
+ self.ecrire_ligne_configuration_0("Autres options")
+ if self.mots_cles.has_key("LANGUE") :
+ self.ecrire_ligne_configuration_2("Langue", self.mots_cles["LANGUE"])
+ self.ecrire_ligne_configuration_2("MessInfo", self.dico_configuration["INFO"])
+ if self.dico_configuration["version_perso"] :
+ VERSION_HOMARD = self.dico_configuration["VERSION_HOMARD"]
+ self.ecrire_ligne_configuration_2("DicoOSGM", "$HOMARD_USER/"+VERSION_HOMARD+"/CONFIG/typobj.stu")
+#
+# 11. Fermeture du fichier
+#
+ fichier.close()
+ break
+#
+ if message_erreur is not None :
+ message_erreur = "Ecriture de "+nomfic_global+". "+message_erreur
+ UTMESS("F", self.nom_macro, message_erreur)
+#
+ return
+# ------------------------------------------------------------------------------
+ def ecrire_fichier_donnees (self) :
+ """Ecrit le fichier des donnees dans le cas d'une demande d'information
+ """
+ message_erreur = None
+#
+ while message_erreur is None :
+#
+# 1. Ouverture du fichier
+#
+ fichier, nomfic_global = self.ouvre_fichier(self.Nom_Fichier_Donnees)
+#
+# 2. On ne demande rien pour le moment
+#
+ fichier.write("0\n")
+ fichier.write("0\n")
+ fichier.write("0\n")
+ fichier.write("q\n")
+#
+# n. Fermeture du fichier
+#
+ fichier.close()
+ break
+#
+ if message_erreur is not None :
+ UTMESS("F", self.nom_macro, message_erreur)
+#
+ return nomfic_global
-#@ MODIF defi_cable_bp_ops Macro DATE 14/09/2004 AUTEUR MCOURTOI M.COURTOIS
+#@ MODIF defi_cable_bp_ops Macro DATE 05/09/2005 AUTEUR DURAND C.DURAND
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
"""
from Accas import _F
import aster,string
+ from Utilitai.Utmess import UTMESS
ier=0
# On importe les definitions des commandes a utiliser dans la macro
__MAIL = aster.getvectjev( string.ljust(MODELE.nom,8) + '.MODELE .NOMA ' )
if string.ljust(MAILLAGE.nom,8) != __MAIL[0] :
- self.DeclareOut(MAILLAGE.nom,maillage)
- print ' '
- print ' # ---------------------------------------------------------------------------'
- print ' # DEFI_CABLE_BP - Erreur : LE CONCEPT MAILLAGE RENSEIGNE NE CORRESPOND'
- print ' # PAS A CELUI UTILISE DANS LE MODELE !'
- print ' # ',MAILLAGE.nom,' - ',__MAIL[0]
- print ' # ---------------------------------------------------------------------------'
- print ' '
- ier=ier+1
- self.cr.fatal("""<F> <DEFI_CABLE_BP> Erreur dans la macro""")
- return ier
+ echo_mess=[]
+ echo_mess.append( ' \n' )
+ echo_mess.append( ' # ---------------------------------------------------------------------------\n' )
+ echo_mess.append( ' # DEFI_CABLE_BP - Erreur : LE CONCEPT MAILLAGE RENSEIGNE NE CORRESPOND \n' )
+ echo_mess.append( ' # PAS A CELUI UTILISE DANS LE MODELE ! \n' )
+ echo_mess.append( ' # '+MAILLAGE.nom+' - '+__MAIL[0]+'\n' )
+ echo_mess.append( ' # ---------------------------------------------------------------------------\n' )
+ message=string.join(echo_mess)
+ UTMESS('F',message)
# DEFINITION DU NOM DES GROUP_NO
__CAB = i['GROUP_MA']
motscle2= {'CREA_GROUP_NO': [{'LONGUEUR': LONGUEUR, 'RAYON': RAYON, 'OPTION': 'TUNNEL', 'GROUP_MA': [ GROUP_MA_BETON, __CAB ], 'GROUP_MA_AXE': __CAB, 'NOM': __NOM1}]}
if i.has_key('MAILLE') == 1:
- print ' '
- print ' # ---------------------------------------------------------------------------'
- print ' # DEFI_CABLE_BP - Erreur : MAILLE INTERDIT - UTILISER GROUP_MA'
- print ' # ---------------------------------------------------------------------------'
- print ' '
- ier=ier+1
- self.cr.fatal("""<F> <DEFI_CABLE_BP> Erreur dans la macro""")
- return ier
+ echo_mess=[]
+ echo_mess.append( ' \n' )
+ echo_mess.append( ' # ---------------------------------------------------------------------------\n' )
+ echo_mess.append( ' # DEFI_CABLE_BP - Erreur : MAILLE INTERDIT - UTILISER GROUP_MA \n' )
+ echo_mess.append( ' # ---------------------------------------------------------------------------\n' )
+ message=string.join(echo_mess)
+ UTMESS('F',message)
if i.has_key('GROUP_NO_ANCRAGE') == 1:
__PC1 = i['GROUP_NO_ANCRAGE'][0]
motscle2['CREA_GROUP_NO'][0]['GROUP_NO_ORIG'] = __PC1
__CAB = i['GROUP_MA']
motscle2= {'CREA_GROUP_NO': [{'LONGUEUR': LONGUEUR, 'RAYON': RAYON, 'OPTION': 'TUNNEL', 'GROUP_MA': [ GROUP_MA_BETON, __CAB ], 'GROUP_MA_AXE': __CAB, 'NOM': __NOM2}]}
if i.has_key('MAILLE') == 1:
- print ' '
- print ' # ---------------------------------------------------------------------------'
- print ' # DEFI_CABLE_BP - Erreur : MAILLE INTERDIT - UTILISER GROUP_MA'
- print ' # ---------------------------------------------------------------------------'
- print ' '
- ier=ier+1
- self.cr.fatal("""<F> <DEFI_CABLE_BP> Erreur dans la macro""")
- return ier
+ echo_mess=[]
+ echo_mess.append( ' \n' )
+ echo_mess.append( ' # ---------------------------------------------------------------------------\n' )
+ echo_mess.append( ' # DEFI_CABLE_BP - Erreur : MAILLE INTERDIT - UTILISER GROUP_MA \n' )
+ echo_mess.append( ' # ---------------------------------------------------------------------------\n' )
+ message=string.join(echo_mess)
+ UTMESS('F',message)
if i.has_key('GROUP_NO_ANCRAGE') == 1:
__PC1 = i['GROUP_NO_ANCRAGE'][1]
motscle2['CREA_GROUP_NO'][0]['GROUP_NO_ORIG'] = __PC1
-#@ MODIF defi_part_feti_ops Macro DATE 23/11/2004 AUTEUR ASSIRE A.ASSIRE
+#@ MODIF defi_part_feti_ops Macro DATE 30/08/2005 AUTEUR ASSIRE A.ASSIRE
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# INFO 1,2
#
# ===========================================================================
-# script PYTHON : appel a Metis et lancement de DEFI_PART_OPS
+# script PYTHON : lancement de DEFI_PART_PA_OPS et de DEFI_PART_OPS
-def defi_part_feti_ops(self,MAILLAGE,MODELE,NB_PART,EXCIT,METHODE,NOM_GROUP_MA,INFO,**args):
+def defi_part_feti_ops(self,NB_PART,METHODE,TRAITER_BORDS,NOM_GROUP_MA,CORRECTION_CONNEX,INFO,**args):
import aster, string, sys
from Accas import _F
from Noyau.N_utils import AsType
-
+
from Utilitai import partition
# DEBUT DE LA MACRO
+ # La macro compte pour 1 dans la numerotation des commandes
+ self.set_icmd(1)
ier=0
-
- INCLUSE='NON' # On cree des GROUP_MA pour les mailles de bords (pour developpeur)
-
+
+ # On importe les definitions des commandes a utiliser dans la macro
+ DEFI_PART_OPS = self.get_cmd('DEFI_PART_OPS')
+ INFO_EXEC_ASTER = self.get_cmd('INFO_EXEC_ASTER')
+ DEFI_FICHIER = self.get_cmd('DEFI_FICHIER')
+ DETRUIRE = self.get_cmd('DETRUIRE')
+ DEFI_PART_PA_OPS = self.get_cmd('DEFI_PART_PA_OPS')
+
+ nompro='DEFI_PART_FETI'
+
+ # Maillage
+ if args.has_key('MODELE'):
+ if args['MODELE'] != None:
+ __MOD = string.ljust(args['MODELE'].nom,8)
+ __MOD =__MOD+'.MODELE .NOMA '
+ __LMAIL = aster.getvectjev(__MOD)
+ __MAIL = string.strip(__LMAIL[0])
+ MAILLAGE=self.get_sd_avant_etape(__MAIL,self)
+ else:
+ MAILLAGE=args['MAILLAGE']
+
# Nom des GROUP_MA générés
NOM_GROUP_MA = string.strip(NOM_GROUP_MA)
- NOM_GROUP_MA_BORD = '_' + NOM_GROUP_MA
# Test sur le nombre de caractères de NOM_GROUP_MA
if ( len(NOM_GROUP_MA)+len(str(NB_PART)) > 7 ):
- print '\n\n ERREUR : Afin de pouvoir générer les GROUP_MA, réduisez le nombre \n de caractères de NOM_GROUP_MA à un maximum de :', 7-len(str(NB_PART))
- print '\n\n'
- sys.exit(1)
+ ln=7-len(str(NB_PART))
+ UTMESS('F', nompro, 'Afin de pouvoir générer les GROUP_MA, réduisez le nombre '\
+ 'de caractères de NOM_GROUP_MA à un maximum de : %i' %ln)
# Verification que des GROUP_MA ne portent pas deja les memes noms
_lst = []
_lst.append( string.strip(i[0]) )
for i in range(NB_PART):
if ( NOM_GROUP_MA+str(i) in _lst ):
- print '\n\n ERREUR : Il existe déjà un GROUP_MA nommé : ', NOM_GROUP_MA+str(i)
- print '\n\n'
- sys.exit(1)
- if ( NOM_GROUP_MA_BORD+str(i) in _lst ):
- print '\n\n ERREUR : Il existe déjà un GROUP_MA nommé : ', NOM_GROUP_MA_BORD+str(i)
- print '\n\n'
- sys.exit(1)
-
- # Executable du partitionneur
- if METHODE=="AUTRE":
- exe_metis = arg['LOGICIEL']
- else:
- exe_metis = aster.repout() + string.lower(METHODE)
-
- # On importe les definitions des commandes a utiliser dans la macro
- DEFI_PART_OPS = self.get_cmd('DEFI_PART_OPS')
- INFO_EXEC_ASTER = self.get_cmd('INFO_EXEC_ASTER')
- DEFI_FICHIER = self.get_cmd('DEFI_FICHIER')
- DETRUIRE = self.get_cmd('DETRUIRE')
-
- # La macro compte pour 1 dans la numerotation des commandes
- self.icmd=1
+ ngrma=NOM_GROUP_MA+str(i)
+ UTMESS('F', nompro, "Il existe déjà un GROUP_MA nommé : %s" %ngrma)
+ if args.has_key('NOM_GROUP_MA_BORD') :
+ if args['NOM_GROUP_MA_BORD'] != None :
+ if ( args['NOM_GROUP_MA_BORD']+str(i) in _lst ):
+ ngrma=args['NOM_GROUP_MA_BORD']+str(i)
+ UTMESS('F', nompro, "Il existe déjà un GROUP_MA nommé : %s" %ngrma)
# Le concept sortant dans le contexte de la macro
self.DeclareOut('_SDFETI',self.sd)
# Debut :
- print """
-
- # ---------------------------------------------------------------------------
- # MACRO-COMMANDE : DEFI_PART_FETI
- # ----------------
-"""
-
- # Objet Partition
- _part = partition.PARTITION(jdc=self);
-
- # Recuperation de deux UL libres
- _UL=INFO_EXEC_ASTER(LISTE_INFO='UNITE_LIBRE')
- ul1=_UL['UNITE_LIBRE',1]
- DETRUIRE(CONCEPT=(_F(NOM=_UL),), INFO=1)
- DEFI_FICHIER(UNITE=ul1)
- _UL=INFO_EXEC_ASTER(LISTE_INFO='UNITE_LIBRE')
- ul2=_UL['UNITE_LIBRE',1]
- DEFI_FICHIER(ACTION='LIBERER',UNITE=ul1)
-
- fichier_in = 'fort.' + str(ul1)
- fichier_out = 'fort.' + str(ul2)
-
- # Options de la classe Partition
- _part.OPTIONS['exe_metis'] = exe_metis
- _part.OPTIONS['fichier_in'] = fichier_in
- _part.OPTIONS['fichier_out'] = fichier_out
+ # Regeneration des mots-cles GROUPAGE passés en argument de la macro
+ motscle1= {}
+ if args.has_key('GROUPAGE'):
+ if args['GROUPAGE'] != None :
+ dGroup=[]
+ for j in args['GROUPAGE']:
+ dGroup.append(j.cree_dict_valeurs(j.mc_liste))
+ for i in dGroup[-1].keys():
+ if dGroup[-1][i]==None : del dGroup[-1][i]
+ motscle1['GROUPAGE']=dGroup
+
+ # Regeneration des mots-cles POIDS_MAILLES passés en argument de la macro
+ if args.has_key('POIDS_MAILLES'):
+ if args['POIDS_MAILLES'] != None :
+ dEval=[]
+ for j in args['POIDS_MAILLES']:
+ dEval.append(j.cree_dict_valeurs(j.mc_liste))
+ for i in dEval[-1].keys():
+ if dEval[-1][i]==None : del dEval[-1][i]
+ motscle1['POIDS_MAILLES']=dEval
+
+ # Y a t'il présence du mot clé : NOM_GROUP_MA_BORD
+ if args.has_key('GROUP_MA_BORD'):
+ if args['GROUP_MA_BORD'] != None :
+ motscle1['GROUP_MA_BORD']=args['GROUP_MA_BORD']
+
+ # Y a t'il présence du mot clé : LOGICIEL
+ if args.has_key('LOGICIEL'):
+ if args['LOGICIEL'] != None :
+ motscle1['LOGICIEL']=args['LOGICIEL']
+
+ # Y a t'il présence du mot clé : MODELE
+ if args.has_key('MODELE'):
+ if args['MODELE'] != None :
+ motscle1['MODELE']=args['MODELE']
# Partitionnement
- if MODELE:
- _part.Partitionne_Aster(
- MAILLAGE = MAILLAGE,
- MODELE = MODELE,
- NB_PART = NB_PART,
- INFO = INFO,
- );
-
- elif MAILLAGE:
- _part.Partitionne_Aster(
- MAILLAGE = MAILLAGE,
- NB_PART = NB_PART,
- INFO = INFO,
- );
-
-
- # Creation des group_ma dans le maillage Aster
- _part.Creation_Group_ma_Aster_par_SD(NOM=NOM_GROUP_MA, NOM2=NOM_GROUP_MA_BORD, INCLUSE=INCLUSE)
-
+ _SDFETI=DEFI_PART_PA_OPS(
+ MAILLAGE=MAILLAGE,
+ INFO=INFO,
+ METHODE=METHODE,
+ NB_PART=NB_PART,
+ CORRECTION_CONNEX=CORRECTION_CONNEX,
+ TRAITER_BORDS=TRAITER_BORDS,
+ NOM_GROUP_MA=NOM_GROUP_MA,
+ **motscle1
+ );
+
+ # Liste des groupes de mailles du maillage
+ _LST_GMA = MAILLAGE.LIST_GROUP_MA()
+ _LST_GMA = map(lambda x: x[0], _LST_GMA)
# Creation de la SDFETI
- if MODELE:
- _tmp = []
- for i in range(NB_PART):
- txt = { 'GROUP_MA': NOM_GROUP_MA + str(i) }
- if ( NOM_GROUP_MA_BORD+str(i) in _part.ASTER['GROUP_MA_BORD'] ):
- txt['GROUP_MA_BORD'] = NOM_GROUP_MA_BORD + str(i)
- _tmp.append( txt )
+ if args.has_key('MODELE'):
+ if args['MODELE'] != None :
+ _tmp = []
+ for i in range(NB_PART):
+ txt = { 'GROUP_MA': NOM_GROUP_MA + str(i) }
+ _tmp.append( txt )
+
+ if args.has_key('NOM_GROUP_MA_BORD') :
+ if args['NOM_GROUP_MA_BORD'] != None :
+ if ( args['NOM_GROUP_MA_BORD']+str(i) in _LST_GMA ):
+ txt['GROUP_MA_BORD'] = string.strip(args['NOM_GROUP_MA_BORD']) + str(i)
+ _tmp.append( txt )
+
+ motscle2= {'DEFI': _tmp }
- motscle2= {'DEFI': _tmp }
+ # Regeneration des mots-cles EXCIT passés en argument de la macro
+ if args.has_key('EXCIT'):
+ if args['EXCIT'] != None :
+ dExcit=[]
+ for j in args['EXCIT']:
+ dExcit.append(j.cree_dict_valeurs(j.mc_liste))
+ for i in dExcit[-1].keys():
+ if dExcit[-1][i]==None : del dExcit[-1][i]
+ motscle2['EXCIT']=dExcit
- # Regeneration des mots-cles EXCIT passés en argument de la macro
- if EXCIT:
- dExcit=[]
- for j in EXCIT :
- dExcit.append(j.cree_dict_valeurs(j.mc_liste))
- for i in dExcit[-1].keys():
- if dExcit[-1][i]==None : del dExcit[-1][i]
- motscle2['EXCIT']=dExcit
+ _SDFETI=DEFI_PART_OPS(NOM='SDD',
+ MODELE=args['MODELE'],
+ INFO=1,
+ **motscle2
+ );
+ else:
+ _SDFETI=None
- _SDFETI=DEFI_PART_OPS(NOM='SDD',
- MODELE=MODELE,
- INFO=1,
- **motscle2
- );
else:
_SDFETI=None
# Fin :
- print """
-
- % FIN MACRO-COMMANDE: DEFI_PART_FETI
-
-"""
return ier
-#@ MODIF fiabilite_mefisto Macro DATE 14/09/2004 AUTEUR MCOURTOI M.COURTOIS
+#@ MODIF fiabilite_mefisto Macro DATE 04/10/2005 AUTEUR REZETTE C.REZETTE
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
from Macro import fiabilite_fichier
import os
import string
+ import Numeric
+ from Utilitai.Utmess import UTMESS
#
#____________________________________________________________________
#
f_stoch.Ecrit_Valeurs ( aux )
#
f_stoch.Ecrit_Titre ("Correlation matrix fictive")
- for m in range(nb_occu_variable) :
- aux = [ ]
- for n in range(nb_occu_variable) :
- aux.append(args["MATRICE"][n + m*nb_occu_variable])
- f_stoch.Ecrit_Valeurs ( aux )
+# if args.has_key('MATRICE'):
+ if args["MATRICE"] != None:
+ if len(args["MATRICE"]) != nb_occu_variable**2:
+ UTMESS('F','FIABILITE_MEPHISTO',' LE NOMBRE D ELEMENTS'
+ +' DU MOT CLE MATRICE DOIT ETRE EGAL A : '
+ +str(nb_occu_variable**2))
+ for m in range(nb_occu_variable) :
+ aux = [ ]
+ for n in range(nb_occu_variable) :
+ aux.append(args["MATRICE"][n + m*nb_occu_variable])
+ f_stoch.Ecrit_Valeurs ( aux )
+ else:
+ aux=Numeric.identity(nb_occu_variable)
+ aux=Numeric.concatenate(aux)
+ aux=aux.tolist()
+ f_stoch.Ecrit_Valeurs ( aux )
#
f_stoch.Ecrit_Titre ("Parameter threshold value")
if SEUIL_TYPE == "MAXIMUM" :
--- /dev/null
+#@ MODIF gene_vari_alea_ops Macro DATE 28/02/2006 AUTEUR VABHHTS J.PELLET
+# -*- coding: iso-8859-1 -*-
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2006 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+
+from math import sqrt,log,exp,pi,atan2,tan
+
+def gene_vari_alea_ops(self,**args):
+ self.set_icmd(1)
+ return 0
+
+def gene_vari_alea_init(self,d):
+ from Utilitai.Utmess import UTMESS
+ a =self.etape['BORNE_INF']
+ moyen =self.etape['VALE_MOY' ]
+ TYPE =self.etape['TYPE']
+ if self['INIT_ALEA']!=None :
+ jump =self.etape['INIT_ALEA' ]
+ self.iniran(jump)
+ if TYPE=='EXP_TRONQUEE' :
+ b =self.etape['BORNE_SUP']
+ if (a>=b) :
+ message=' : il faut BORNE_INF < BORNE_SUP \n'
+ message=message+' BORNE_INF = '+str(a)+'\n'
+ message=message+' BORNE_SUP = '+str(b)+'\n'
+ UTMESS('F','GENE_VARI_ALEA',message)
+ elif (moyen<=a)or(moyen>=b) :
+ message=' : VALE_MOY trop grand ou trop petit\n'
+ message=message+' BORNE_INF = '+str(a)+'\n'
+ message=message+' VALE_MOY = '+str(moyen)+'\n'
+ message=message+' BORNE_SUP = '+str(b)+'\n'
+ UTMESS('F','GENE_VARI_ALEA',message)
+ k=1./(moyen-a)
+ if (exp(-b*k)<1.E-12) :
+ message=' : BORNE SUP très grande \n'
+ message=message+'pb précision possible, vérifiez'+'\n'
+ message=message+'la distribution des valeurs générées \n'
+ UTMESS('F','GENE_VARI_ALEA',message)
+ # résolution par point fixe
+ eps =1.E-4
+ nitmax=100000
+ test =0.
+ while abs((test-k)/k)>eps :
+ test = k
+ k = 1./(moyen-(a*exp(-a*k) - b*exp(-b*k))/(exp(-a*k) - exp(-b*k)))
+ # génération de la variable aléatoire
+ alpha = exp(-a*k) - exp(-b*k)
+ self.sd.valeur=-( log(exp(-a*k)-alpha*self.getran()[0] ) ) /k
+ elif TYPE=='EXPONENTIELLE' :
+ if (moyen<=a) :
+ message=' : on doit avoir : VALE_MOY > BORNE_INF \n'
+ message=message+' VALE_MOY = '+str(moyen)+'\n'
+ message=message+' BORNE_INF = '+str(a)+'\n'
+ UTMESS('F','GENE_VARI_ALEA',message)
+ v = moyen-a
+ u=self.getran()[0]
+ x = -log(1-u)
+ self.sd.valeur=a + v*x
+ elif TYPE=='GAMMA' :
+ delta =self.etape['COEF_VAR' ]
+ if (moyen<=a) :
+ message=' : on doit avoir : VALE_MOY > BORNE_INF \n'
+ message=message+' VALE_MOY = '+str(moyen)+'\n'
+ message=message+' BORNE_INF = '+str(a)+'\n'
+ UTMESS('F','GENE_VARI_ALEA',message)
+ v = moyen-a
+ alpha = 1./(delta**2)
+ if (alpha<=1.) :
+ message=' : erreur : ALPHA < 1\n'
+ UTMESS('F','GENE_VARI_ALEA',message)
+ gamma2 = alpha-1.
+ gamm1 = 1./gamma2
+ beta = sqrt(2.*alpha-1.)
+ beta2 = 1./(beta**2)
+ f0 = 0.5+(1./pi)*atan2(-gamma2/beta,1.)
+ c1 = 1.-f0
+ c2 = f0-0.5
+ vref = 0.
+ vv = -1.
+#
+ while (-vv>vref) :
+ u=self.getran()[0]
+ gamdev = beta*tan(pi*(u*c1+c2))+gamma2
+ unif=self.getran()[0]
+ if unif<0. :
+ message=' : erreur : unif < 0\n'
+ UTMESS('F','GENE_VARI_ALEA',message)
+ vv= -log(unif)
+ vref = log(1+beta2*((gamdev-gamma2)**2))+gamma2*log(gamdev*gamm1)-gamdev+gamma2
+#
+ if vv<=0. :
+ message=' : erreur : GAMDEV(ALPHA) < 0\n'
+ UTMESS('F','GENE_VARI_ALEA',message)
+ self.sd.valeur = a + v*(delta**2)*gamdev
-#@ MODIF impr_fonction_ops Macro DATE 11/05/2005 AUTEUR MCOURTOI M.COURTOIS
+#@ MODIF impr_fonction_ops Macro DATE 02/05/2006 AUTEUR MCOURTOI M.COURTOIS
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
Erreurs<S> dans IMPR_FONCTION pour ne pas perdre la base.
"""
macro='IMPR_FONCTION'
+ import pprint
import aster
from Accas import _F
+ from Cata.cata import nappe_sdaster, fonction_c
from Utilitai import Graph
from Utilitai.Utmess import UTMESS
from Utilitai.UniteAster import UniteAster
# 0.1. Fichier
nomfich=None
- if args['UNITE'] and args['UNITE']<>6:
+ if args['UNITE'] and args['UNITE']!=6:
nomfich=UL.Nom(args['UNITE'])
if INFO==2:
- print ' Nom du fichier :',nomfich
- if nomfich and os.path.exists(nomfich) and os.stat(nomfich).st_size<>0:
+ aster.affiche('MESSAGE', ' Nom du fichier :'+nomfich)
+ if nomfich and os.path.exists(nomfich) and os.stat(nomfich).st_size!=0:
if FORMAT=='XMGRACE':
niv='A'
else:
if dC[mc]==None: del dC[mc]
Courbe.append(dC)
if INFO==2:
- print ' Nombre de fonctions à analyser : ',len(Courbe)
+ aster.affiche('MESSAGE',' Nombre de fonctions à analyser : '+str(len(Courbe)))
# 0.3. Devra-t-on interpoler globalement ?
# Dans ce cas, linter__ est le LIST_PARA
for typi in unparmi:
if dCi.has_key(typi):
obj=dCi[typi]
- typ=obj.__class__.__name__
break
if obj==None:
UTMESS('S',macro,'incohérence entre le catalogue et la macro.')
if typi=='FONCTION':
- if typ=='nappe_sdaster':
+ if isinstance(obj, nappe_sdaster):
lpar,lval=obj.Valeurs()
linterp=lval[0][0]
else:
linterp=obj
linter__=DEFI_LIST_REEL(VALE=linterp)
if INFO==2:
- print ' Interpolation globale sur la liste :\n',linter__.Valeurs()
+ aster.affiche('MESSAGE', ' Interpolation globale sur la liste :')
+ aster.affiche('MESSAGE', pprint.pformat(linter__.Valeurs()))
#----------------------------------------------
for typi in unparmi:
if dCi.has_key(typi):
obj=dCi[typi]
- typ=obj.__class__.__name__
break
if not dCi.has_key('LEGENDE') and hasattr(obj,'get_name'):
dCi['LEGENDE']=obj.get_name()
# 1.2.1. Mot-clé FONCTION
if typi=='FONCTION':
- if typ=='nappe_sdaster':
+ if isinstance(obj, nappe_sdaster):
lpar,lval=obj.Valeurs()
dico,ldicf=obj.Parametres()
Leg=dCi['LEGENDE']
lval=list(ftmp__.Valeurs())
lx=lval[0]
lr=lval[1]
- if typ=='fonction_c' and dCi.has_key('PARTIE'):
- if dCi['PARTIE']=='IMAG' : lr=lval[2]
+ if isinstance(obj, fonction_c) and dCi.get('PARTIE') == 'IMAG':
+ lr=lval[2]
# on stocke les données dans le Graph
- if typ=='fonction_c' and not dCi.has_key('PARTIE'):
+ if isinstance(obj, fonction_c) and not dCi.has_key('PARTIE'):
nomresu=dpar['NOM_RESU'].strip()+'_'+str(len(graph.Legendes))
dicC={
'Val' : lval,
et à la première occurence de COURBE""")
lx=dCi['LIST_PARA'].Valeurs()
lr=obj.Valeurs()
- if len(lx)<>len(lr):
+ if len(lx)!=len(lr):
UTMESS('S',macro,"LIST_PARA et LIST_RESU n'ont pas la meme taille")
# on stocke les données dans le Graph
dicC={
elif typi=='FONC_X':
ob2=dCi['FONC_Y']
# peut-on blinder au niveau du catalogue
- if typ=="nappe_sdaster" or ob2.__class__.__name__=="nappe_sdaster":
+ if isinstance(obj, nappe_sdaster) or isinstance(ob2, nappe_sdaster):
UTMESS('S',macro,"FONC_X/FONC_Y ne peuvent pas etre des nappes !")
if interp and iocc>0:
UTMESS('S',macro,"""Au format 'TABLEAU' ,FONC_X/FONC_Y ne peut apparaitre qu'une seule fois
et à la première occurence de COURBE""")
lx=obj
lr=dCi['ORDONNEE']
- if len(lx)<>len(lr):
+ if len(lx)!=len(lr):
UTMESS('S',macro,"ABSCISSE et ORDONNEE n'ont pas la meme taille")
# on stocke les données dans le Graph
dicC={
# 1.3. dbg
if INFO==2:
- print '\n'+'-'*70+'\n Contenu du Graph : \n'+'-'*70
- print graph
- print '-'*70+'\n'
+ message='\n'+'-'*70+'\n Contenu du Graph : \n'+'-'*70+'\n'
+ message=message+graph.__repr__()
+ message=message+'-'*70+'\n'
+ aster.affiche('MESSAGE',message)
#----------------------------------------------
# 2. Impression du 'tableau' de valeurs
# 2.0. Surcharge des propriétés du graphique et des axes
# (bloc quasiment identique dans Table)
- if args['TITRE']<>None: graph.Titre=args['TITRE']
- if args['SOUS_TITRE']<>None: graph.SousTitre=args['SOUS_TITRE']
+ if args['TITRE']!=None: graph.Titre=args['TITRE']
+ if args['SOUS_TITRE']!=None: graph.SousTitre=args['SOUS_TITRE']
if FORMAT in ('XMGRACE','AGRAF'):
- if args['BORNE_X']<>None:
+ if args['BORNE_X']!=None:
graph.Min_X=args['BORNE_X'][0]
graph.Max_X=args['BORNE_X'][1]
- if args['BORNE_Y']<>None:
+ if args['BORNE_Y']!=None:
graph.Min_Y=args['BORNE_Y'][0]
graph.Max_Y=args['BORNE_Y'][1]
- if args['LEGENDE_X']<>None: graph.Legende_X=args['LEGENDE_X']
- if args['LEGENDE_Y']<>None: graph.Legende_Y=args['LEGENDE_Y']
- if args['ECHELLE_X']<>None: graph.Echelle_X=args['ECHELLE_X']
- if args['ECHELLE_Y']<>None: graph.Echelle_Y=args['ECHELLE_Y']
- if args['GRILLE_X']<>None: graph.Grille_X=args['GRILLE_X']
- if args['GRILLE_Y']<>None: graph.Grille_Y=args['GRILLE_Y']
+ if args['LEGENDE_X']!=None: graph.Legende_X=args['LEGENDE_X']
+ if args['LEGENDE_Y']!=None: graph.Legende_Y=args['LEGENDE_Y']
+ if args['ECHELLE_X']!=None: graph.Echelle_X=args['ECHELLE_X']
+ if args['ECHELLE_Y']!=None: graph.Echelle_Y=args['ECHELLE_Y']
+ if args['GRILLE_X']!=None: graph.Grille_X=args['GRILLE_X']
+ if args['GRILLE_Y']!=None: graph.Grille_Y=args['GRILLE_Y']
kargs={
'FORMAT' : FORMAT,
# 2.2. au format AGRAF
elif FORMAT=='AGRAF':
nomdigr=None
- if args['UNITE_DIGR']<>6:
+ if args['UNITE_DIGR']!=6:
nomdigr=UL.Nom(args['UNITE_DIGR'])
kargs['FICHIER']=[nomfich, nomdigr]
kargs['dform']={ 'formR' : '%12.5E' }
# Traiter le cas des UL réservées
if args['UNITE'] and args['UNITE'] in ul_reserve:
UL.Etat(args['UNITE'], etat='F')
- if FORMAT=='AGRAF' and args['UNITE_DIGR']<>args['UNITE'] \
+ if FORMAT=='AGRAF' and args['UNITE_DIGR']!=args['UNITE'] \
and args['UNITE_DIGR'] in ul_reserve:
UL.Etat(args['UNITE_DIGR'], etat='F')
-#@ MODIF impr_table_ops Macro DATE 11/05/2005 AUTEUR MCOURTOI M.COURTOIS
+#@ MODIF impr_table_ops Macro DATE 07/03/2006 AUTEUR MCOURTOI M.COURTOIS
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
"""
macro='IMPR_TABLE'
import aster
- from Accas import _F
- from Cata.cata import table_jeveux
- from Utilitai.Utmess import UTMESS
+ from Accas import _F
+ from Cata.cata import table_jeveux
+ from Utilitai.Utmess import UTMESS
from Utilitai.UniteAster import UniteAster
+ from Utilitai.Sensibilite import NomCompose
ier=0
# La macro compte pour 1 dans la numerotation des commandes
self.set_icmd(1)
form_filtre='\nFILTRE -> NOM_PARA: %-16s CRIT_COMP: %-4s VALE: %s'
# 0.3. Création de la liste des tables (une seule sans SENSIBILITE)
- form_sens='\n... SENSIBILITE AU PARAMETRE %s'
+ form_sens='\n... SENSIBILITE AU PARAMETRE %s (SD COMP %s)'
ltab=[]
if args['SENSIBILITE']:
- nmemo='&NOSENSI.MEMO.CORR'.ljust(24)
- vect=aster.getvectjev(nmemo)
- if vect:
- lps=args['SENSIBILITE']
- if not type(lps) in EnumTypes:
- lps=[lps,]
- for ps in [ps.get_name() for ps in lps]:
- trouv=False
- for ch in vect[0:len(vect):2]:
- if ch[0:8].strip()==TABLE.get_name() and ch[8:16].strip()==ps:
- trouv=True
- ncomp=ch[16:24].strip()
- sdtab=table_jeveux(ncomp)
- tabs=sdtab.EXTR_TABLE()
- tabs.titr+=form_sens % ps
- ltab.append([tabs, sdtab])
- if not trouv:
- UTMESS('A',macro,'Dérivée de %s par rapport à %s non disponible'\
- % (TABLE.get_name(), ps))
- else:
- UTMESS('A',macro,'Pas de calcul de sensibilité accessible.')
+ lps=args['SENSIBILITE']
+ if not type(lps) in EnumTypes:
+ lps=[lps,]
+ for ps in lps:
+ ncomp = NomCompose(TABLE, ps)
+ if ncomp != None:
+ sdtab = table_jeveux(ncomp)
+ tabs = sdtab.EXTR_TABLE()
+ tabs.titr = TABLE.TITRE() + tabs.titr + form_sens % (ps.get_name(), ncomp)
+ ltab.append([tabs, sdtab])
else:
ltab.append([TABLE.EXTR_TABLE(), TABLE])
nom_para=ltab[0][0].para
if args['NOM_PARA']:
nom_para=args['NOM_PARA']
+ if not type(nom_para) in EnumTypes:
+ nom_para=[nom_para,]
# 0.4.2. Traiter le cas des UL réservées
if args['UNITE'] and args['UNITE'] in ul_reserve:
tab.sort(CLES=dT['NOM_PARA'], ORDRE=dT['ORDRE'])
# ----- 4. Impression
+ # vérification des paramètres
+ for p in nom_para:
+ if not p in tab.para:
+ UTMESS('A', 'IMPR_TABLE', 'Paramètre absent de la table : %s' % p)
+
+ # sélection des paramètres
timp=tab[nom_para]
+
# passage des mots-clés de mise en forme à la méthode Impr
kargs=args.copy()
kargs.update({
# 4.4. regroupement par paramètre : PAGINATION
if args['PAGINATION']:
- kargs['PAGINATION']=args['PAGINATION']
+ l_ppag=args['PAGINATION']
+ if not type(l_ppag) in EnumTypes:
+ l_ppag=[l_ppag,]
+ kargs['PAGINATION'] = [p for p in l_ppag if p in nom_para]
+ l_para_err = [p for p in l_ppag if not p in nom_para]
+ if len(l_para_err)>0:
+ UTMESS('A', 'IMPR_TABLE', 'Paramètres absents de la table (ou de '\
+ 'NOM_PARA) : %s' % ', '.join(l_para_err))
timp.Impr(**kargs)
-#@ MODIF info_fonction_ops Macro DATE 12/05/2005 AUTEUR DURAND C.DURAND
+#@ MODIF info_fonction_ops Macro DATE 02/05/2006 AUTEUR MCOURTOI M.COURTOIS
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
-def info_fonction_ops(self,RMS,NOCI_SEISME,MAX,NORME,ECART_TYPE,**args):
+def info_fonction_ops(self,RMS,NOCI_SEISME,MAX,NORME,ECART_TYPE,INFO,**args):
"""
Ecriture de la macro INFO_FONCTION
"""
### On importe les definitions des commandes a utiliser dans la macro
CREA_TABLE = self.get_cmd('CREA_TABLE')
+ IMPR_TABLE = self.get_cmd('IMPR_TABLE')
CALC_FONCTION = self.get_cmd('CALC_FONCTION')
### Comptage commandes + déclaration concept sortant
l_table.append(_F(LISTE_R=dphfor,PARA='DUREE_PHAS_FORT'))
C_out=CREA_TABLE(LISTE=l_table)
+ if INFO > 1:
+ IMPR_TABLE(UNITE=6,
+ TABLE=C_out)
return ier
-#@ MODIF lire_inte_spec_ops Macro DATE 24/05/2005 AUTEUR MCOURTOI M.COURTOIS
+#@ MODIF lire_inte_spec_ops Macro DATE 03/01/2006 AUTEUR REZETTE C.REZETTE
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
entete=entete[entete.index('DIM'):]
dim=int(entete[entete.index('=')+1:entete.index('\n')])
except ValueError :
- ier=ier+1
- self.cr.fatal("<F> <LIRE_INTE_SPEC> la dimension DIM n est pas précisée dans le fichier lu")
- return ier
+ UTMESS('F', nompro, "la dimension DIM n est pas précisée dans le fichier lu")
if len(list_fonc)!=(dim*(dim+1)/2):
- ier=ier+1
- self.cr.fatal("<F> <LIRE_INTE_SPEC> nombre de fonctions incorrect")
- return ier
+ UTMESS('F', nompro, "nombre de fonctions incorrect")
nume_i=[]
nume_j=[]
vale_fonc=vale_fonc.replace('\n',' ')
vale_fonc=map(float,vale_fonc.split())
except ValueError :
- ier=ier+1
- self.cr.fatal("<F> <LIRE_INTE_SPEC> erreur dans les données de fonctions")
- return ier
+ UTMESS('F', nompro, "erreur dans les données de fonctions")
liste=[]
if FORMAT=='REEL_IMAG':
nume_ib.append(i+1)
nume_jb.append(j+1)
if nume_i!=nume_ib or nume_j!=nume_jb :
- ier=ier+1
- self.cr.fatal("<F> <LIRE_INTE_SPEC> erreur dans les indices")
- return ier
+ UTMESS('F', nompro, "erreur dans les indices")
mcfact=[]
mcfact.append(_F(PARA='NOM_CHAM' ,LISTE_K=(NOM_RESU),NUME_LIGN=(1,)))
mcfact.append(_F(PARA='OPTION' ,LISTE_K=('TOUT',) ,NUME_LIGN=(1,)))
mcfact.append(_F(PARA='NUME_ORDRE_J',LISTE_I=nume_j ,NUME_LIGN=range(2,len(nume_j)+2)))
mcfact.append(_F(PARA='FONCTION' ,LISTE_K=l_fonc ,NUME_LIGN=range(2,len(list_fonc)+2)))
self.DeclareOut('tab_inte',self.sd)
- tab_inte=CREA_TABLE(TYPE_TABLE='TABL_INTE_SPEC',
- LISTE=mcfact,
+ tab_inte=CREA_TABLE(LISTE=mcfact,
TITRE=TITRE,)
# remet UNITE dans son état initial
-#@ MODIF lire_table_ops Macro DATE 24/05/2005 AUTEUR MCOURTOI M.COURTOIS
+#@ MODIF lire_table_ops Macro DATE 03/01/2006 AUTEUR REZETTE C.REZETTE
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# ------------------------------------------------------------------------------
def lire_table_ops(self,UNITE,FORMAT,NUME_TABLE,SEPARATEUR,
- TYPE_TABLE,PARA,TITRE,**args):
+ PARA,TITRE,**args):
"""Méthode corps de la macro LIRE_TABLE
"""
import os
from Utilitai.UniteAster import UniteAster
ier=0
+ nompro='LIRE_TABLE'
### On importe les definitions des commandes a utiliser dans la macro
CREA_TABLE =self.get_cmd('CREA_TABLE')
if FORMAT=='ASTER':
ier,message,titr_tab,list_para,tab_lue=lecture_table(texte,NUME_TABLE,SEPARATEUR)
if ier!=0 :
- self.cr.fatal(message)
- return ier
+ UTMESS('F', nompro, message)
else : pass
### création de la table ASTER :
motscles={}
motscles['LISTE']=mcfact
- ut_tab=CREA_TABLE(TITRE=titr_tab,TYPE_TABLE=TYPE_TABLE, **motscles)
+ ut_tab=CREA_TABLE(TITRE=titr_tab,**motscles)
# remet UNITE dans son état initial
UL.EtatInit()
-#@ MODIF macr_adap_mail_ops Macro DATE 05/10/2004 AUTEUR CIBHHLV L.VIVAN
+#@ MODIF macr_adap_mail_ops Macro DATE 22/05/2006 AUTEUR MCOURTOI M.COURTOIS
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# RESPONSABLE GNICOLAS G.NICOLAS
#
def macr_adap_mail_ops ( self,
- INFO, VERSION_HOMARD, LANGUE,
- NOMBRE, QUALITE, CONNEXITE, TAILLE, INTERPENETRATION,
- NON_SIMPLEXE, MAILLAGE_FRONTIERE,
+ INFO, VERSION_HOMARD, MAILLAGE_FRONTIERE,
**args):
"""
- Ecriture des macros MACR_ADAP_MAIL/MACR_INFO_MAIL
- Remarque : on ne mentionne explicitement que les mots-clés communs aux
- deux macros. Les autres sont dans le dictionnaire args
+ Traitement des macros MACR_ADAP_MAIL/MACR_INFO_MAIL
"""
#
# 1. args est le dictionnaire des arguments
# dictionnaires que de maillages manipulés. L'ensemble de ces dictionnaires est conservé
# dans la liste Liste_Maillages.
# Description du dictionnaire de maillages :
-# dico["Type_Maillage"] = o ; string ; "MAILLAGE_N", "MAILLAGE_NP1" ou "MAILLAGE_FRONTIERE"
+# dico["Type_Maillage"] = o ; string ; "MAILLAGE_N", "MAILLAGE_NP1", "MAILLAGE_NP1_ANNEXE" ou "MAILLAGE_FRONTIERE"
# dico["Nom_ASTER"] = o ; concept ASTER associé
# dico["Action"] = o ; string ; "A_ecrire" ou "A_lire"
# dico["NOM_MED"] = o ; string ; Nom MED du maillage
# dictionnaires que de champs manipulés. L'ensemble de ces dictionnaires est conservé
# dans la liste Liste_Champs.
# Description du dictionnaire de champs :
-# dico["Type_Champ"] = o ; string ; "INDICATEUR" ou "CHAMP"
-# dico["RESULTAT"] = o ; concept ASTER du résutat associé
-# dico["NOM_CHAM"] = o ; string ; Nom ASTER du champ
+# dico["Type_Champ"] = o ; string ; "INDICATEUR" ou "CHAMP_MAJ"
+# dico["RESULTAT"] = f ; concept ASTER du résutat associé
+# dico["NOM_CHAM"] = f ; string ; Nom ASTER du champ
+# dico["CHAM_GD"] = f ; concept ASTER du champ de grandeur associée
# dico["COMPOSANTE"] = f ; string ; Nom ASTER de la composante (dans le cas de l'indicateur)
# dico["NUME_ORDRE"] = f ; entier ; Numéro d'ordre du champ
# dico["INST"] = f ; entier ; Instant du champ
# dico["NOM_MED"] = o ; string ; Nom MED du champ
#
from Accas import _F
+ from Macro import creation_donnees_homard
+ from Utilitai.Utmess import UTMESS
import aster
import string
- import types
import os
+#gn import shutil
#
global Liste_Passages
#
-#--------------------------------------------------------------------
+#====================================================================
# 1. Préalables
-#--------------------------------------------------------------------
+#====================================================================
#
# 1.1. ==> La macro compte pour 1 dans la numerotation des commandes
#
except :
self.jdc.indice_macro_homard = 1
Liste_Passages = []
- Numero_Passage_Fonction = self.jdc.indice_macro_homard
-### print "Numero_Passage_Fonction = ",Numero_Passage_Fonction
+ numero_passage_fonction = self.jdc.indice_macro_homard
+### print "numero_passage_fonction = ",numero_passage_fonction
#
# 1.3. ==> On importe les definitions des commandes a utiliser dans la macro
#
DEFI_FICHIER = self.get_cmd("DEFI_FICHIER")
IMPR_RESU = self.get_cmd("IMPR_RESU")
EXEC_LOGICIEL = self.get_cmd("EXEC_LOGICIEL")
- IMPR_FICO_HOMA = self.get_cmd("IMPR_FICO_HOMA")
LIRE_MAILLAGE = self.get_cmd("LIRE_MAILLAGE")
LIRE_CHAMP = self.get_cmd("LIRE_CHAMP")
- DETRUIRE = self.get_cmd('DETRUIRE')
#
# 1.4. ==> Le nom du programme HOMARD à lancer
#
#
# 1.5. ==> Initialisations
#
- codret = 0
codret_partiel = [0]
Rep_Calc_ASTER = os.getcwd()
#
Liste_Maillages = []
Liste_Champs = []
+ Liste_Zones = []
dico_indi = {}
#
- ADAPTATION = None
- MAJ_CHAM = None
+ LISTE_ADAPTATION_LIBRE = ("RAFF_DERA" , "RAFFINEMENT" , "DERAFFINEMENT")
#
- unite = 71
-#
-#--------------------------------------------------------------------
+#====================================================================
# 2. Décodage des arguments de la macro-commande
-#--------------------------------------------------------------------
+#====================================================================
# 2.1. ==> Données de pilotage de l'adaptation
#
if ( self.nom == "MACR_ADAP_MAIL" ) :
#
- modhom = "ADAP"
-#
- ADAPTATION = args["ADAPTATION"]
- if args.has_key("MAJ_CHAM") :
- MAJ_CHAM = args["MAJ_CHAM"]
+ mode_homard = "ADAP"
#
# 2.1.1. ==> Les concepts "maillage"
#
- for mot_cle in ["MAILLAGE_N","MAILLAGE_NP1"] :
+#gn print "\n.. Debut de 2.1.1"
+# for mot_cle in ["MAILLAGE_N" , "MAILLAGE_NP1"] :
+ for mot_cle in ["MAILLAGE_N" , "MAILLAGE_NP1" , "MAILLAGE_NP1_ANNEXE"] :
+#gn print "\nmot_cle = ",mot_cle
dico = {}
dico["Type_Maillage"] = mot_cle
- dico["Nom_ASTER"] = ADAPTATION[mot_cle]
- if ( mot_cle == "MAILLAGE_N" ) :
- dico["Action"] = "A_ecrire"
+ if ( args[mot_cle] != None ) :
+#gn print "==> args[",mot_cle,"] = ",args[mot_cle]
+ dico["Nom_ASTER"] = args[mot_cle]
+ if ( mot_cle == "MAILLAGE_N" ) :
+ dico["Action"] = "A_ecrire"
+ else :
+ dico["Action"] = "A_lire"
else :
- dico["Action"] = "A_lire"
+ dico["Action"] = "Rien"
+#gn print "dico = ",dico
Liste_Maillages.append(dico)
#
# 2.1.2. ==> L'éventuel indicateur d'erreur
#
- if ADAPTATION["LIBRE"] != None :
+#gn print "\n.. Debut de 2.1.2"
+ if args["ADAPTATION"] in LISTE_ADAPTATION_LIBRE :
dico = {}
dico["Type_Champ"] = "INDICATEUR"
- dico["RESULTAT"] = ADAPTATION["RESULTAT_N"]
- dico["NOM_CHAM"] = ADAPTATION["INDICATEUR"]
- dico["COMPOSANTE"] = ADAPTATION["NOM_CMP_INDICA"]
- if ( ADAPTATION["NUME_ORDRE"] != None ) :
- dico["NUME_ORDRE"] = ADAPTATION["NUME_ORDRE"]
- if ( ADAPTATION["INST"] != None ) :
- dico["INST"] = ADAPTATION["INST"]
- for cle in [ "PRECISION", "CRITERE" ] :
- if ( ADAPTATION[cle] != None ) :
- dico[cle] = ADAPTATION[cle]
- dico["NOM_MED"] = aster.mdnoch ( dico["RESULTAT"].nom , dico["NOM_CHAM"] )
+ if ( args["RESULTAT_N"] != None ) :
+ lresu = 1
+ dico["RESULTAT"] = args["RESULTAT_N"]
+ noresu = dico["RESULTAT"].nom
+ dico["NOM_CHAM"] = args["INDICATEUR"]
+ nomsym = dico["NOM_CHAM"]
+ if ( args["NUME_ORDRE"] != None ) :
+ dico["NUME_ORDRE"] = args["NUME_ORDRE"]
+ if ( args["INST"] != None ) :
+ dico["INST"] = args["INST"]
+ for cle in [ "PRECISION", "CRITERE" ] :
+ if ( args[cle] != None ) :
+ dico[cle] = args[cle]
+ else :
+ lresu = 0
+ dico["CHAM_GD"] = args["CHAM_GD"]
+ noresu = dico["CHAM_GD"].nom
+ nomsym = " "
+ nopase = " "
+#
+### print "Avant appel a aster.mdnoch, lresu = ",lresu,", noresu =", noresu ,", nomsym = ", nomsym ,", nopase = ", nopase
+ dico["NOM_MED"] = aster.mdnoch ( lresu, noresu, nomsym, nopase )
+### print "dico[\"NOM_MED\"] = ", dico["NOM_MED"]
+ dico["COMPOSANTE"] = args["NOM_CMP_INDICA"]
Liste_Champs.append(dico)
dico_indi = dico
### print dico
#
# 2.1.3. ==> Les champs à mettre à jour
#
- if ( MAJ_CHAM != None ) :
+#gn print "\n.. Debut de 2.1.3."
#
- for maj_cham in MAJ_CHAM :
-### print maj_cham
+ if args.has_key("MAJ_CHAM") :
+#
+ if args["MAJ_CHAM"] is None :
+ les_champs = []
+ else :
+ les_champs = args["MAJ_CHAM"]
+#
+ for maj_cham in les_champs :
+#gn print maj_cham
+#gn print type(maj_cham)
#
dico = {}
- dico["Type_Champ"] = "CHAMP"
- for cle in [ "CHAM_MAJ", "TYPE_CHAM", "RESULTAT", "NOM_CHAM" ] :
+ dico["Type_Champ"] = "CHAMP_MAJ"
+ Liste_aux = [ "CHAM_MAJ", "TYPE_CHAM", "NOM_CHAM" ]
+ if ( maj_cham["RESULTAT"] != None ) :
+ lresu = 1
+ Liste_aux.append("RESULTAT")
+ if ( maj_cham["NUME_ORDRE"] != None ) :
+ dico["NUME_ORDRE"] = maj_cham["NUME_ORDRE"]
+ elif ( maj_cham["INST"] != None ) :
+ dico["INST"] = maj_cham["INST"]
+ for cle in [ "PRECISION", "CRITERE" ] :
+ if ( maj_cham[cle] != None ) :
+ dico[cle] = maj_cham[cle]
+ noresu = maj_cham["RESULTAT"].nom
+ nomsym = maj_cham["NOM_CHAM"]
+ else :
+ lresu = 0
+ Liste_aux.append("CHAM_GD")
+ noresu = maj_cham["CHAM_GD"].nom
+ nomsym = " "
+ for cle in Liste_aux :
dico[cle] = maj_cham[cle]
- if ( maj_cham["NUME_ORDRE"] != None ) :
- dico["NUME_ORDRE"] = maj_cham["NUME_ORDRE"]
- elif ( maj_cham["INST"] != None ) :
- dico["INST"] = maj_cham["INST"]
- for cle in [ "PRECISION", "CRITERE" ] :
- if ( maj_cham[cle] != None ) :
- dico[cle] = maj_cham[cle]
- dico["NOM_MED"] = aster.mdnoch ( dico["RESULTAT"].nom , dico["NOM_CHAM"] )
+ nopase = " "
+### print "Avant appel a aster.mdnoch, lresu = ",lresu,", noresu =", noresu ,", nomsym = ", nomsym ,", nopase = ", nopase
+ dico["NOM_MED"] = aster.mdnoch ( lresu, noresu, nomsym, nopase )
#
### print dico
Liste_Champs.append(dico)
#
+# 2.1.4. ==> Les zones de raffinement
+#
+### print "\n.. Debut de 2.1.4."
+#
+ if args.has_key("ZONE") :
+#
+ if args["ZONE"] is None :
+ les_zones = []
+ else :
+ les_zones = args["ZONE"]
+#
+ for zone in les_zones :
+### print zone
+### print type(zone)
+ dico = {}
+ for aux in ['X_MINI','X_MAXI','Y_MINI','Y_MAXI','Z_MINI','Z_MAXI','X_CENTRE','Y_CENTRE','Z_CENTRE','RAYON'] :
+ if ( zone[aux] != None ) :
+ dico[aux] = zone[aux]
+### print dico
+ Liste_Zones.append(dico)
+#
+### print Liste_Zones
+#
# 2.2. ==> Données de pilotage de l'information
#
else :
#
- modhom = "INFO"
+ mode_homard = "INFO"
#
dico = {}
dico["Type_Maillage"] = "MAILLAGE_N"
Liste_Maillages.append(dico)
#
# 2.3. ==> Suivi de frontière
+#
+#gn print "\n.. Debut de 2.3."
#
if ( MAILLAGE_FRONTIERE != None ) :
#
dico["Action"] = "A_ecrire"
Liste_Maillages.append(dico)
#
-#--------------------------------------------------------------------
+# 2.4. ==> Le numéro de version de HOMARD
+# Remarque : dans la donnée de la version de HOMARD, il faut remplacer
+# le _ de la donnee par un ., qui est interdit dans la
+# syntaxe du langage de commandes ASTER
+# Remarque : il faut remplacer le N majuscule de la donnee par
+# un n minuscule, qui est interdit dans la syntaxe du langage
+# de commandes ASTER
+#
+#gn print "\n.. Debut de 2.4. avec VERSION_HOMARD = ", VERSION_HOMARD
+ VERSION_HOMARD = string.replace(VERSION_HOMARD,"_" , ".")
+ VERSION_HOMARD = string.replace(VERSION_HOMARD,"N" , "n")
+#
+ if ( VERSION_HOMARD[-6:]==".PERSO" ):
+ VERSION_HOMARD = VERSION_HOMARD[:-6]
+ version_perso = 1
+ else :
+ version_perso = 0
+#gn print ".... VERSION_HOMARD = ", VERSION_HOMARD
+#gn print ".... version_perso = ", version_perso
+#
+#====================================================================
# 3. Préparation du lancement des commandes
-#--------------------------------------------------------------------
+#====================================================================
#
# 3.1. ==> . Elaboration des noms MED des concepts de maillage
# . Memorisation des noms ASTER du maillage en entrée et en sortie (sous forme string)
+#
# On crée une nouvelle liste des dictionnaires décrivant les maillages
# et à la fin on écrase l'ancienne liste par cette nouvelle.
#
- L = []
+#gn print "\n.. Debut de 3.1."
+#
+ Nom_Concept_Maillage_NP1_ANNEXE = None
+ l_aux = []
for dico in Liste_Maillages :
- dico["NOM_MED"] = aster.mdnoma(dico["Nom_ASTER"].nom)
- L.append(dico)
- if ( dico["Type_Maillage"] == "MAILLAGE_N" ) :
- Nom_Concept_Maillage_N = dico["Nom_ASTER"].nom
- elif ( dico["Type_Maillage"] == "MAILLAGE_NP1" ) :
- Nom_Concept_Maillage_NP1 = dico["Nom_ASTER"].nom
- Liste_Maillages = L
+#gn print "\ndico avant = ",dico
+ if ( dico["Action"] != "Rien" ) :
+ dico["NOM_MED"] = aster.mdnoma(dico["Nom_ASTER"].nom)
+ l_aux.append(dico)
+ if ( dico["Type_Maillage"] == "MAILLAGE_N" ) :
+ Nom_Concept_Maillage_N = dico["Nom_ASTER"].nom
+ elif ( dico["Type_Maillage"] == "MAILLAGE_NP1" ) :
+ Nom_Concept_Maillage_NP1 = dico["Nom_ASTER"].nom
+ elif ( dico["Type_Maillage"] == "MAILLAGE_NP1_ANNEXE" ) :
+ Nom_Concept_Maillage_NP1_ANNEXE = dico["Nom_ASTER"].nom
+#gn print "\ndico apres = ",dico
+ Liste_Maillages = l_aux
#
# 3.2. ==> Recherche du numéro d'itération et du répertoire de travail
#
# . le numéro d'itération est nul
# . le nom du répertoire de lancement de HOMARD est construit sur le nom
# du maillage en entrée et le numéro de passage dans la fonction
+#
+#gn print "\.. Debut de 3.2.1."
#
niter = 0
- Nom_Rep_local = Nom_Concept_Maillage_N + "_" + modhom + "_" + str(Numero_Passage_Fonction)
- Rep_Calc_HOMARD_local = os.path.join(".",Nom_Rep_local)
- Rep_Calc_HOMARD_global = os.path.join(Rep_Calc_ASTER,Nom_Rep_local)
+ Nom_Rep_local = Nom_Concept_Maillage_N + "_" + mode_homard + "_" + str(numero_passage_fonction)
+ Rep_Calc_HOMARD_local = os.path.join(".", Nom_Rep_local)
+ Rep_Calc_HOMARD_global = os.path.join(Rep_Calc_ASTER, Nom_Rep_local)
### print "Rep_Calc_HOMARD_local = ", Rep_Calc_HOMARD_local
### print "Rep_Calc_HOMARD_global = ", Rep_Calc_HOMARD_global
#
-# 3.2.2. ==> En adaptation :
+# 3.2.2. ==> En adaptation : il faut repartir du répertoire de l'itération précédente
+#
+#gn print "\.. Debut de 3.2.2."
#
- if ( modhom == "ADAP" ) :
+ if ( mode_homard == "ADAP" ) :
#
# 3.2.2.1. ==> On recherche si dans les passages déjà effectués, il en existe un
# dont le maillage d'arrivée était l'actuel maillage d'entrée. Si c'est
# le cas, cela veut dire que l'adaptation en cours est la suite d'une
# précédente. On doit donc utiliser le meme répertoire. Le numéro
# d'itération est celui de l'adaptation précédente augmenté de 1.
+#
+#gn print "\.. Debut de 3.2.2.1."
#
for dico in Liste_Passages :
if ( dico["Maillage_NP1"] == Nom_Concept_Maillage_N ) :
#
# 3.2.2.2. ==> Memorisation de ce passage
#
+#gn print "\.. Debut de 3.2.2.2."
+#
# 3.2.2.2.1. ==> Enregistrement d'un nouveau cas de figure
#
if ( niter == 0 ) :
dico = {}
dico["Maillage_0"] = Nom_Concept_Maillage_N
dico["Maillage_NP1"] = Nom_Concept_Maillage_NP1
+ dico["Maillage_NP1_ANNEXE"] = Nom_Concept_Maillage_NP1_ANNEXE
dico["Rep_Calc_HOMARD_local"] = Rep_Calc_HOMARD_local
dico["Rep_Calc_HOMARD_global"] = Rep_Calc_HOMARD_global
dico["niter"] = niter
# 3.2.2.2.2. ==> Modification du cas en cours
#
else :
- L = []
+ l_aux = []
for dico in Liste_Passages :
if ( dico["Maillage_NP1"] == Nom_Concept_Maillage_N ) :
dico["Maillage_NP1"] = Nom_Concept_Maillage_NP1
+ dico["Maillage_NP1_ANNEXE"] = Nom_Concept_Maillage_NP1_ANNEXE
dico["niter"] = niter
- L.append(dico)
- Liste_Passages = L
+ l_aux.append(dico)
+ Liste_Passages = l_aux
#
### print "niter = ", niter, ", Rep_Calc_HOMARD_global = ", Rep_Calc_HOMARD_global
#
-#--------------------------------------------------------------------
-# 4. Ecriture des commandes
-#--------------------------------------------------------------------
+# 3.2.3. Création du répertoire pour homard
+# attention : on ne fait cette creation qu'une seule fois par cas
+# d'adaptation ou d'information
#
-# 4.1. ==> Création du répertoire pour homard
-# attention : on ne fait cette creation qu'une seule fois par cas
-# d'adaptation ou d'information
+#gn print "\.. Debut de 3.2.3."
#
if ( niter == 0 ) :
#
os.mkdir(Rep_Calc_HOMARD_global)
except os.error,codret_partiel :
self.cr.warn("Code d'erreur de mkdir : " + str(codret_partiel[0]) + " : " + codret_partiel[1])
- self.cr.fatal("<F> <MACR_ADAP_MAIL> Impossible de créer le répertoire de travail pour HOMARD : "+Rep_Calc_HOMARD_global)
- codret = codret + 1
+ UTMESS("F", self.nom, "Impossible de créer le répertoire de travail pour HOMARD : "+Rep_Calc_HOMARD_global)
+#
+#====================================================================
+# 4. Ecriture des commandes de creation des donnees MED
+#====================================================================
#
-# 4.2. ==> Ecriture des commandes de creation des donnees MED
+#gn print "\.. Debut de 4."
#
# On doit écrire : le maillage,
# le champ d'indicateur d'erreur
#
# Chacune de ces écritures est optionnelle selon le contexte.
#
- if ( INFO > 1 ) : infomail = "OUI"
- else : infomail = "NON"
-#
-# 4.2.1. ==> Noms des fichiers d'ASTER vers HOMARD et éventuellement de HOMARD vers ASTER
-# Remarque : aujourd'hui, les écritures ou les lectures au format MED se font obligatoirement sur
-# un fichier de nom fort.n, placé dans le répertoire de calcul
-# Dans le fichier de configuration, on donne comme nom MAILL.(niter).MED en entrée et
-# MAILL.(niter+1).MED en sortie (cf. adhc00)
-# Tant que les E/S MED n'ont pas évolué, on fait un lien pour assurer la cohérence.
+ if ( INFO > 1 ) :
+ infomail = "OUI"
+ else :
+ infomail = "NON"
#
-# 4.2.1.1. ==> D'ASTER vers HOMARD
+# 4.1. ==> Noms des fichiers d'ASTER vers HOMARD et éventuellement de HOMARD vers ASTER
+# Remarque : aujourd'hui, les écritures ou les lectures au format MED se font obligatoirement sur
+# un fichier de nom fort.n, placé dans le répertoire de calcul
+##
+# 4.1.1. ==> D'ASTER vers HOMARD
#
- Unite_Fichier_ASTER_vers_HOMARD = 1787 + 2*Numero_Passage_Fonction
+ Unite_Fichier_ASTER_vers_HOMARD = 1787 + 2*numero_passage_fonction
Fichier_ASTER_vers_HOMARD = os.path.join(Rep_Calc_ASTER,"fort." + str(Unite_Fichier_ASTER_vers_HOMARD))
- Fichier_HOMARD_Entree = os.path.join(Rep_Calc_HOMARD_global,"MAILL."+str(niter)+".MED")
### print "Fichier_ASTER_vers_HOMARD = ",Fichier_ASTER_vers_HOMARD
-### print "Fichier_HOMARD_Entree = ",Fichier_HOMARD_Entree
- try :
- os.symlink(Fichier_ASTER_vers_HOMARD,Fichier_HOMARD_Entree)
- except os.error,codret_partiel :
- self.cr.warn("Code d'erreur de symlink : " + str(codret_partiel[0]) + " : " + codret_partiel[1])
- self.cr.fatal("<F> <MACR_ADAP_MAIL> Probleme au lien entre " + Fichier_ASTER_vers_HOMARD + " et " + Fichier_HOMARD_Entree)
- codret = codret + 1
#
-# 4.2.1.2. ==> De HOMARD vers ASTER
+# 4.1.2. ==> De HOMARD vers ASTER
#
- if ( modhom == "ADAP" ) :
+ if ( mode_homard == "ADAP" ) :
Unite_Fichier_HOMARD_vers_ASTER = Unite_Fichier_ASTER_vers_HOMARD + 1
Fichier_HOMARD_vers_ASTER = os.path.join(Rep_Calc_ASTER,"fort." + str(Unite_Fichier_HOMARD_vers_ASTER))
- Fichier_HOMARD_Sortie = os.path.join(Rep_Calc_HOMARD_global,"MAILL."+str(niter+1)+".MED")
### print "Fichier_HOMARD_vers_ASTER = ",Fichier_HOMARD_vers_ASTER
-### print "Fichier_HOMARD_Sortie = ",Fichier_HOMARD_Sortie
- try :
- os.symlink(Fichier_HOMARD_vers_ASTER,Fichier_HOMARD_Sortie)
- except os.error,codret_partiel :
- self.cr.warn("Code d'erreur de symlink : " + str(codret_partiel[0]) + " : " + codret_partiel[1])
- self.cr.fatal("<F> <MACR_ADAP_MAIL> Probleme au lien entre " + Fichier_HOMARD_vers_ASTER + " et " + Fichier_HOMARD_Sortie)
- codret = codret + 1
#
-# 4.2.2. La définition du fichier de ASTER vers HOMARD
+# 4.2. La définition du fichier de ASTER vers HOMARD
#
DEFI_FICHIER ( ACTION= "ASSOCIER",
UNITE = Unite_Fichier_ASTER_vers_HOMARD,
TYPE = "LIBRE",
INFO = INFO )
#
-# 4.2.3. Le(s) maillage(s)
+# 4.3. Le(s) maillage(s)
# Le maillage de calcul et l'éventuel maillage de la frontiere sont écrits
# dans le meme fichier MED
# En fait, on pourrait s'en passer au dela de la 1ère itération
#
for dico in Liste_Maillages :
if ( dico["Action"] == "A_ecrire" ) :
- motscsi={}
+ motscsi = {}
motscsi["MAILLAGE"] = dico["Nom_ASTER"]
- motscfa={}
- motscfa["RESU"]=_F( INFO_MAILLAGE=infomail,
+ motscfa = {}
+ motscfa["RESU"] = _F( INFO_MAILLAGE=infomail,
**motscsi )
#
IMPR_RESU ( INFO = INFO,
FORMAT ='MED', UNITE = Unite_Fichier_ASTER_vers_HOMARD,
**motscfa )
#
-# 4.2.4. Le(s) champ(s)
+# 4.4. Le(s) champ(s)
# Attention : il se peut que l'on demande la mise à jour du champ qui a servi comme
# indicateur d'erreur. Si c'est le cas, il ne faut pas demander son
# impression sinon il y a plantage d'IMPR_RESU qui ne sait pas substituer
# Remarque : pour l'adaptation, on ne demande a priori qu'une composante du champ d'indicateur.
# s'il y a demande de mise à jour, toutes les composantes sont concernées. Il faut
# donc dans ce cas imprimer le champ total.
-# dico["Type_Champ"] = o ; string ; "INDICATEUR" ou "CHAMP"
-# dico["RESULTAT"] = o ; concept ASTER du résutat associé
-# dico["NOM_CHAM"] = o ; string ; Nom ASTER du champ
+# dico["Type_Champ"] = o ; string ; "INDICATEUR" ou "CHAMP_MAJ"
+# dico["RESULTAT"] = f ; concept ASTER du résutat associé
+# dico["NOM_CHAM"] = f ; string ; Nom ASTER du champ
+# dico["CHAM_GD"] = f ; concept ASTER du champ de grandeur associée
# dico["COMPOSANTE"] = f ; string ; Nom ASTER de la composante (dans le cas de l'indicateur)
# dico["NUME_ORDRE"] = f ; entier ; Numéro d'ordre du champ
# dico["INST"] = f ; entier ; Instant du champ
# dico["CHAM_MAJ"] = f ; string ; Nom ASTER du champ interpolé sur le nouveau maillage
# dico["NOM_MED"] = o ; string ; Nom MED du champ
#
-# 4.2.4.1. Recherche d'un doublon éventuel sur le champ d'indicateur d'erreur
+# 4.4.1. Recherche d'un doublon éventuel sur le champ d'indicateur d'erreur
#
+### print "dico_indi = ",dico_indi
if len(dico_indi) > 0 :
- imprime_indic = 0
+ indic_est_deja_imprime = 0
+ if dico_indi.has_key("RESULTAT") :
+ Liste_aux = [ "RESULTAT", "NOM_CHAM" ]
+ else :
+ Liste_aux = [ "CHAM_GD" ]
else :
- imprime_indic = 1
+ indic_est_deja_imprime = 1
+ Liste_aux = [ ]
+### print ".. Au debut de la boucle, Liste_aux = ",Liste_aux
+### print ".. Au debut de la boucle, indic_est_deja_imprime = ",indic_est_deja_imprime
#
Liste_Champs_imprime = []
for dico in Liste_Champs :
+### print "\n.... dico = ",dico
# Pour un champ à mettre à jour, on a toujours impression
- if ( dico["Type_Champ"] == "CHAMP" ) :
+ if ( dico["Type_Champ"] == "CHAMP_MAJ" ) :
Liste_Champs_imprime.append(dico)
-# Si le champ d'indicateur n'a pas été repéré comme champ à mettre à jour :
- if not imprime_indic :
+# Si le champ d'indicateur n'a toujours pas été repéré comme champ à mettre à jour :
+ if not indic_est_deja_imprime :
# Est-ce le meme champ ?
- ok = 1
- for cle in [ "RESULTAT", "NOM_CHAM" ] :
- if ( dico_indi[cle] != dico[cle] ) :
- ok = 0
+ on_a_le_champ = 1
+ for cle in Liste_aux :
+ if ( dico.has_key(cle) ) :
+### print "...... dico_indi[cle] = ",dico_indi[cle]
+### print "...... dico[cle] = ",dico[cle]
+ if ( dico_indi[cle] != dico[cle] ) :
+ on_a_le_champ = 0
+ break
+ else :
+ on_a_le_champ = 0
break
# Si oui, est-ce au meme moment ? (remarque : si rien n'est désigné, c'est qu'il n'y a qu'un
# seul instant ... donc c'est le meme ! En revanche, on ne sait pas comparer une donnée
# en numéro d'ordre et une donnée en instant. On croise les doigts.)
- if ok :
+ if on_a_le_champ :
for cle in [ "NUME_ORDRE", "INST" ] :
if dico.has_key(cle) :
if ( dico[cle] != None ) :
if dico_indi.has_key(cle) :
if ( dico_indi[cle] != dico[cle] ) :
- ok = 0
+ on_a_le_champ = 0
break
- if ok : imprime_indic = 1
+ if on_a_le_champ :
+ indic_est_deja_imprime = 1
+### print "\n\nFin de la boucle .. indic_est_deja_imprime = ",indic_est_deja_imprime
# Si le champ d'indicateur n'a pas été repéré comme champ à mettre à jour, il faut
# l'inclure dans les champs à imprimer
- if not imprime_indic : Liste_Champs_imprime.append(dico_indi)
+ if not indic_est_deja_imprime :
+ Liste_Champs_imprime.append(dico_indi)
#
-# 4.2.4.2. Impressions après le filtrage précédent
+# 4.4.2. Impressions après le filtrage précédent
+#gn print "\n.... Debut de 4.2.4.2."
#
for dico in Liste_Champs_imprime :
- motscsi={}
- for cle in [ "RESULTAT", "NOM_CHAM", "NUME_ORDRE", "INST", "PRECISION", "CRITERE" ] :
+ motscsi = {}
+ for cle in [ "RESULTAT", "NOM_CHAM", "CHAM_GD", "NUME_ORDRE", "INST", "PRECISION", "CRITERE" ] :
if dico.has_key(cle) :
if ( dico[cle] != None ) :
motscsi[cle] = dico[cle]
if dico.has_key("COMPOSANTE") :
motscsi["NOM_CMP"] = dico["COMPOSANTE"]
- motscfa={}
- motscfa["RESU"]=_F( INFO_MAILLAGE=infomail,
+ motscfa = {}
+ motscfa["RESU"] = _F( INFO_MAILLAGE=infomail,
**motscsi
)
+### print ".. motscfa = ",motscfa
#
IMPR_RESU ( INFO = INFO,
FORMAT ='MED', UNITE = Unite_Fichier_ASTER_vers_HOMARD,
**motscfa )
#
-# 4.3. ==> Ecriture de la commande d'écriture des fichiers de données pour HOMARD
+#====================================================================
+# 5. ==> Création des fichiers de données pour HOMARD
+#====================================================================
#
- motscfa={}
-#
-# 4.3.1. ==> Le traitement
+#gn print "\.. Debut de 5."
#
- motscsi={}
+ dico_configuration = {}
#
-# 4.3.1.1. ==> Le type de traitement
+# 5.1. ==> Les généralités
#
- if ( modhom == "ADAP" ) :
- if ( ADAPTATION["UNIFORME"] != None ) :
- motscsi["UNIFORME"] = ADAPTATION["UNIFORME"]
- else :
- motscsi["ADAPTATION"] = ADAPTATION["LIBRE"]
- else :
- motscsi["INFORMATION"] = "OUI"
+ dico_configuration["INFO"] = INFO
#
-# 4.3.1.2. ==> Les noms med des maillages
+ dico_configuration["Rep_Calc_HOMARD_global"] = Rep_Calc_HOMARD_global
+ dico_configuration["VERSION_HOMARD"] = VERSION_HOMARD
+ dico_configuration["version_perso"] = version_perso
+#
+ dico_configuration["niter"] = niter
+ dico_configuration["Fichier_ASTER_vers_HOMARD"] = Fichier_ASTER_vers_HOMARD
+ if ( mode_homard == "ADAP" ) :
+ dico_configuration["Fichier_HOMARD_vers_ASTER"] = Fichier_HOMARD_vers_ASTER
+#
+# 5.2. ==> Les noms med des maillages
#
for dico in Liste_Maillages :
-### print "Nom MED de " + dico["Type_Maillage"] + " = " + dico["NOM_MED"]
- motscsi[ "NOM_MED_"+dico["Type_Maillage"] ] = dico["NOM_MED"]
+#gn print "Nom MED de " + dico["Type_Maillage"] + " = " + dico["NOM_MED"]
+ dico_configuration[ "NOM_MED_"+dico["Type_Maillage"] ] = dico["NOM_MED"]
#
-# 4.3.1.3. ==> Les caracteristiques de l'éventuel indicateur d'erreur
+# 5.3. ==> Les caracteristiques de l'éventuel indicateur d'erreur
#
for dico in Liste_Champs :
+ dico_aux = {}
if ( dico["Type_Champ"] == "INDICATEUR" ) :
Liste_aux = [ "NOM_MED", "COMPOSANTE" ]
if dico.has_key("NUME_ORDRE") :
Liste_aux.append("NUME_ORDRE")
- else :
- for cle in [ "RESULTAT", "NOM_CHAM", "INST", "PRECISION", "CRITERE" ] :
- Liste_aux.append(cle)
for cle in Liste_aux :
- if dico.has_key(cle) :
- if ( dico[cle] != None ) :
- motscsi[cle] = dico[cle]
+ if ( dico[cle] != None ) :
+ dico_aux[cle] = dico[cle]
+ dico_configuration["Indicateur"] = dico_aux
+#gn if dico_configuration.has_key("Indicateur") :
+#gn print "dico_configuration[Indicateur] = ", dico_configuration["Indicateur"]
#
-# 4.3.1.4. ==> Les critères de raffinement et les niveaux extremes
+# 5.4. ==> Les zones de raffinement
#
- if ( modhom == "ADAP" ) :
- Liste_aux = [ ]
- if ( ADAPTATION["LIBRE"] == "RAFF_DERA" or ADAPTATION["LIBRE"] == "RAFFINEMENT" ) :
- Liste_aux.append("CRIT_RAFF_ABS")
- Liste_aux.append("CRIT_RAFF_REL")
- Liste_aux.append("CRIT_RAFF_PE")
- if ( ADAPTATION["LIBRE"] == "RAFF_DERA" or ADAPTATION["LIBRE"] == "DERAFFINEMENT" ) :
- Liste_aux.append("CRIT_DERA_ABS")
- Liste_aux.append("CRIT_DERA_REL")
- Liste_aux.append("CRIT_DERA_PE")
- niveau = 0
- if ( ADAPTATION["LIBRE"] == "RAFF_DERA" or ADAPTATION["LIBRE"] == "RAFFINEMENT" or ADAPTATION["UNIFORME"] == "RAFFINEMENT" ) :
- Liste_aux.append("NIVE_MAX")
- niveau = niveau + 1
- if ( ADAPTATION["LIBRE"] == "RAFF_DERA" or ADAPTATION["LIBRE"] == "DERAFFINEMENT" or ADAPTATION["UNIFORME"] == "DERAFFINEMENT" ) :
- Liste_aux.append("NIVE_MIN")
- niveau = niveau + 2
- for mot_cle in Liste_aux :
- if ( ADAPTATION[mot_cle] != None ) :
- motscsi[mot_cle] = ADAPTATION[mot_cle]
-#
- if ( niveau == 2 ) :
- if ( ADAPTATION["NIVE_MIN"] > ADAPTATION["NIVE_MAX"] ) :
- self.cr.fatal("<F> <MACR_ADAP_MAIL> Le niveau minimum doit etre inferieur au niveau maximum.")
- codret = codret + 1
-#
-# 4.3.1.5. ==> Numéro d'itération
-#
- if ( modhom == "ADAP" ) :
- motscsi["NITER"] = niter
-#
-# 4.3.1.6. ==> Suivi de la frontiere
-#
- if args.has_key("GROUP_MA") :
- if ( args["GROUP_MA"] != None ) :
- motscsi["GROUP_MA"] = args["GROUP_MA"]
-#
-# 4.3.1.7. ==> Bilan
-#
- motscfa["TRAITEMENT"] = _F(**motscsi)
-#
-# 4.3.2. ==> L'analyse
-#
- motscsi={}
- if ( NOMBRE != None ) : motscsi["NOMBRE" ] = NOMBRE
- if ( QUALITE != None ) : motscsi["QUALITE" ] = QUALITE
- if ( CONNEXITE != None ) : motscsi["CONNEXITE" ] = CONNEXITE
- if ( TAILLE != None ) : motscsi["TAILLE" ] = TAILLE
- if ( INTERPENETRATION != None ) : motscsi["INTERPENETRATION" ] = INTERPENETRATION
-#
- motscfa["ANALYSE"] = _F(**motscsi)
-#
-# 4.3.3. ==> La mise à jour de champs
+ prem = 1
+ for dico in Liste_Zones :
+ if prem :
+ l_aux = [dico]
+ prem = 0
+ else :
+ l_aux = dico_configuration["Zones"]
+ l_aux.append(dico)
+ dico_configuration["Zones"] = l_aux
+### if dico_configuration.has_key("Zones") :
+### print "dico_configuration[Zones] = ", dico_configuration["Zones"]
+#
+# 5.5. ==> La mise à jour de champs
#
prem = 1
for dico in Liste_Champs :
- motscsi={}
- if ( dico["Type_Champ"] == "CHAMP" ) :
+ dico_aux = {}
+ if ( dico["Type_Champ"] == "CHAMP_MAJ" ) :
Liste_aux = [ "NOM_MED", "COMPOSANTE" ]
if dico.has_key("NUME_ORDRE") :
Liste_aux.append("NUME_ORDRE")
for cle in Liste_aux :
if dico.has_key(cle) :
if ( dico[cle] != None ) :
- motscsi[cle] = dico[cle]
-### print motscsi
+ dico_aux[cle] = dico[cle]
+#gn print dico_aux
if prem :
- motscfa["MAJ_CHAM"] = [_F(**motscsi),]
+ l_aux = [dico_aux]
prem = 0
else :
- motscfa["MAJ_CHAM"].append(_F(**motscsi))
-#
-# 4.3.4. ==> La commande
-#
-# 4.3.4.1. ==> Les fichiers annexes
-#
- dico = {}
-#
- Nom_Fichier_Configuration = "HOMARD.Configuration"
- Fichier_Configuration = os.path.join(Rep_Calc_HOMARD_local,Nom_Fichier_Configuration)
- dico[Fichier_Configuration] = ("HOMARD_CONFIG","UNITE_CONF",unite)
-#
- if ( modhom != "ADAP" ) :
- unite = unite + 1
- Nom_Fichier_Donnees = "HOMARD.Donnees"
- Fichier_Donnees = os.path.join(Rep_Calc_HOMARD_local,Nom_Fichier_Donnees)
-# 1234567890123456
- dico[Fichier_Donnees] = ("HOMARD_DONN","UNITE_DONN",unite)
-#
-# 4.3.4.2. ==> L'ouverture de ces fichiers
-#
- for fic in dico.keys() :
- DEFI_FICHIER ( ACTION= "ASSOCIER", FICHIER = fic, UNITE = dico[fic][2],
- TYPE = "ASCII", ACCES = "NEW", INFO = INFO )
- motscfa[dico[fic][1]] = dico[fic][2]
-#
-# 4.3.4.3. ==> Ecriture
-#
-### print motscfa
- IMPR_FICO_HOMA ( INFO=INFO, LANGUE = LANGUE, NON_SIMPLEXE = NON_SIMPLEXE, **motscfa )
-#
-### for fic in dico.keys() :
-### print "\nContenu de ", fic
-### fichier = open (fic,"r")
-### les_lignes = fichier.readlines()
-### fichier.close()
-### for ligne in les_lignes :
-### print ligne[:-1]
-#
-# 4.3.4.4. ==> La fermeture des fichiers locaux
-# Remarque : il faut le faire ici pour que le gestionnaire de DEFI_FICHIER soit à jour
-# Remarque : aujourd'hui on est obligé de passer par le numéro d'unité logique
-#
- for fic in dico.keys() :
- DEFI_FICHIER ( ACTION= "LIBERER", UNITE = dico[fic][2], INFO = INFO )
-#
-# 4.4. ==> Ecriture de la commande d'exécution de homard
-# Remarque : dans la donnée de la version de HOMARD, il faut remplacer
-# le _ de la donnee par un ., qui
-# est interdit dans la syntaxe du langage de commandes ASTER
-# Remarque : il faut remplacer le N majuscule de la donnee par
-# un n minuscule, qui est interdit dans la syntaxe du langage
-# de commandes ASTER
-# Remarque : pour le nommage des fichiers d'échange entre ASTER et HOMARD, on utilise
-# la convention implicite du fort.n des entrees/sorties au format MED
+ l_aux = dico_configuration["Champs"]
+ l_aux.append(dico_aux)
+ dico_configuration["Champs"] = l_aux
+#gn if dico_configuration.has_key("Champs") :
+#gn print "dico_configuration[Champs] = ", dico_configuration["Champs"]
+#
+# 5.6. ==> Appel de la fonction de création
+#
+ donnees_homard = creation_donnees_homard.creation_donnees_homard ( self.nom, args, dico_configuration )
+ if ( INFO > 1 ) :
+ donnees_homard.quel_mode ( )
+ fic_homard_niter = donnees_homard.creation_configuration ( )
+ donnees_homard.ecrire_fichier_configuration ( )
+ if ( mode_homard == "INFO" ) :
+ Nom_Fichier_Donnees = donnees_homard.ecrire_fichier_donnees ( )
+ else :
+ Nom_Fichier_Donnees = "0"
#
- VERSION_HOMARD=string.replace(VERSION_HOMARD,"_",".")
- VERSION_HOMARD=string.replace(VERSION_HOMARD,"N","n")
- if ( VERSION_HOMARD[-6:]=="_PERSO" ):
-# motscsi["ARGUMENT"]=_F("TYPEXE"="-PERSO")
- VERSION_HOMARD=VERSION_HOMARD[:-6]
+# 5.7. ==> Impression eventuelle des fichiers créés
#
- if ( modhom == "ADAP" ) :
- Nom_Fichier_Donnees = "0"
+#gn#gn print "Répertoire ",Rep_Calc_HOMARD_global
+ os.system("ls -la "+Rep_Calc_HOMARD_global)
+ if ( INFO > 1 ) :
+ L_aux = ["HOMARD.Donnees" , "HOMARD.Configuration"]
+ else :
+ L_aux = [ ]
+ for nomfic in L_aux :
+ fic = os.path.join(Rep_Calc_HOMARD_global, nomfic)
+ if os.path.isfile (fic) :
+ print "\n\n=============================================================="
+ print "Contenu de", nomfic
+ fichier = open (fic,"r")
+ les_lignes = fichier.readlines()
+ fichier.close()
+ for ligne in les_lignes :
+ print ligne[:-1]
+ print "==============================================================\n"
+#gn if ( mode_homard == "ADAP" ) :
+#gn if args.has_key("MAJ_CHAM") :
+#gn if args["MAJ_CHAM"] is not None :
+#gn os.system("sleep 1000")
+#
+#====================================================================
+# 6. Ecriture de la commande d'exécution de homard
+#====================================================================
+#
+#
+#gn print "\.. Debut de 7."
+### Fichier_ASTER_vers_HOMARD_2 = os.path.join("/home/gnicolas" , "fort." + str(Unite_Fichier_ASTER_vers_HOMARD))
+### shutil.copyfile(Fichier_ASTER_vers_HOMARD,Fichier_ASTER_vers_HOMARD_2)
#
EXEC_LOGICIEL ( ARGUMENT = (_F(NOM_PARA=Rep_Calc_HOMARD_global), # nom du repertoire
_F(NOM_PARA=VERSION_HOMARD), # version de homard
LOGICIEL = homard
)
#
-# 4.5. ==> Ecriture de la commande de lecture des resultats med
-# Remarque :
-# La fonction self.DeclareOut(a,b) focntionne ainsi :
-# a est une chaine de caracteres
-# b est la variable déclarée dans la commande
-# le but est de associer le contenu de b à la variable locale qui sera désignée par a
-# Exemple :
-# self.DeclareOut("maillage_np1",ADAPTATION["MAILLAGE_NP1"])
-# ==> la variable maillage_np1 est identifiée à l'argument "MAILLAGE_NP1" du mot-clé ADAPTATION
+### if ( mode_homard == "ADAP" ) :
+### Fichier_HOMARD_vers_ASTER_2 = os.path.join("/home/gnicolas" , "fort." + str(Unite_Fichier_HOMARD_vers_ASTER))
+### shutil.copyfile(Fichier_HOMARD_vers_ASTER,Fichier_HOMARD_vers_ASTER_2)
#
- if ( modhom == "ADAP" ) :
+#====================================================================
+# 7. ==> Ecriture de la commande de lecture des resultats med
+# Remarque :
+# La fonction self.DeclareOut(a,b) fonctionne ainsi :
+# a est une chaine de caracteres
+# b est la variable déclarée dans la commande
+# le but est de associer le contenu de b à la variable locale qui sera désignée par a
+# Exemple :
+# self.DeclareOut("maillage_a_lire",args["MAILLAGE_NP1"])
+# ==> la variable maillage_a_lire est identifiée à l'argument "MAILLAGE_NP1"
+#====================================================================
#
-# 4.5.1. ==> Le maillage
+ if ( mode_homard == "ADAP" ) :
#
- self.DeclareOut("maillage_np1",ADAPTATION["MAILLAGE_NP1"])
+# 7.1. ==> Le maillage
+#
+#gn print "args = ",args
for dico in Liste_Maillages :
+#gn print dico
if ( dico["Action"] == "A_lire" ) :
- maillage_np1 = LIRE_MAILLAGE ( UNITE = Unite_Fichier_HOMARD_vers_ASTER,
+ self.DeclareOut("maillage_a_lire", dico["Nom_ASTER"])
+ maillage_a_lire = LIRE_MAILLAGE ( UNITE = Unite_Fichier_HOMARD_vers_ASTER,
FORMAT = "MED",
NOM_MED = dico["NOM_MED"],
VERI_MAIL = _F(VERIF="NON"), INFO_MED = INFO, INFO = INFO )
+ if ( dico["Type_Maillage"] == "MAILLAGE_NP1" ) :
+ maillage_np1 = maillage_a_lire
#
-# 4.5.2. ==> Les champs
+# 7.2. ==> Les champs
#
for dico in Liste_Champs :
- if ( dico["Type_Champ"] == "CHAMP" ) :
-### print dico
- self.DeclareOut("champ_maj",dico["CHAM_MAJ"])
- motscsi={}
+ if ( dico["Type_Champ"] == "CHAMP_MAJ" ) :
+#gn print dico
+ self.DeclareOut("champ_maj", dico["CHAM_MAJ"])
+ motscsi = {}
for cle in [ "NUME_ORDRE", "INST", "PRECISION", "CRITERE" ] :
if dico.has_key(cle) :
if ( dico[cle] != None ) :
NOM_MED = dico["NOM_MED"], NOM_CMP_IDEM = "OUI", TYPE_CHAM = dico["TYPE_CHAM"],
INFO = INFO, **motscsi )
#
-#--------------------------------------------------------------------
-# 5. Menage des fichiers MED et HOMARD devenus inutiles
-#--------------------------------------------------------------------
+#====================================================================
+# 8. Menage des fichiers MED et HOMARD devenus inutiles
+#====================================================================
#
- fic = os.path.join(Rep_Calc_HOMARD_global,"MAILL."+str(niter)+".HOM")
- Liste_aux = [ Fichier_ASTER_vers_HOMARD, Fichier_HOMARD_Entree, fic ]
- if ( modhom == "ADAP" ) :
+ Liste_aux = [ Fichier_ASTER_vers_HOMARD ]
+ if ( mode_homard == "ADAP" ) :
Liste_aux.append(Fichier_HOMARD_vers_ASTER)
- Liste_aux.append(Fichier_HOMARD_Sortie)
+ fic = os.path.join(Rep_Calc_HOMARD_global, fic_homard_niter)
+ Liste_aux.append(fic)
+#gn print "Liste_aux = ",Liste_aux
#
for fic in Liste_aux :
- if ( INFO > 1 ) : print "Destruction du fichier ", fic
- if os.path.islink(fic) :
- try :
- os.unlink(fic)
- except os.error,codret_partiel :
- self.cr.warn("Code d'erreur de unlink : " + str(codret_partiel[0]) + " : " + codret_partiel[1])
- self.cr.warn("Impossible d'enlever le lien sur le fichier : "+fic)
- codret = codret + 1
+ if ( INFO > 1 ) :
+ print "Destruction du fichier ", fic
if os.path.isfile(fic) :
try :
os.remove(fic)
except os.error,codret_partiel :
self.cr.warn("Code d'erreur de remove : " + str(codret_partiel[0]) + " : " + codret_partiel[1])
- self.cr.warn("Impossible de détruire le fichier : "+fic)
- codret = codret + 1
-### print os.listdir(Rep_Calc_ASTER)
-### print os.listdir(Rep_Calc_HOMARD_global)
+ UTMESS("F", self.nom, "Impossible de détruire le fichier : "+fic)
+#gn print "Répertoire ",Rep_Calc_HOMARD_global
+#gn os.system("ls -la "+Rep_Calc_HOMARD_global)
+#gn print "Répertoire ",Rep_Calc_ASTER
+#gn os.system("ls -la "+Rep_Calc_ASTER)
+#
+#====================================================================
+# C'est fini !
+#====================================================================
#
-#--------------------------------------------------------------------
-# 6. C'est fini !
-#--------------------------------------------------------------------
+#gn if ( mode_homard == "ADAP" ) :
+#gn os.system("sleep 1")
#
- return codret
+ return
-#@ MODIF macr_ascouf_calc_ops Macro DATE 08/02/2005 AUTEUR CIBHHLV L.VIVAN
+#@ MODIF macr_ascouf_calc_ops Macro DATE 22/05/2006 AUTEUR MCOURTOI M.COURTOIS
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
import math
import aster
from math import pi,sin,cos,sqrt,atan2
+ from Utilitai.Utmess import UTMESS
ier=0
# On recopie les mots cles affe_materiau et impr_table pour les proteger
mc_AFFE_MATERIAU=AFFE_MATERIAU
IMPR_TABLE =self.get_cmd('IMPR_TABLE' )
DEFI_FOND_FISS =self.get_cmd('DEFI_FOND_FISS' )
CALC_THETA =self.get_cmd('CALC_THETA' )
- CALC_G_THETA_T =self.get_cmd('CALC_G_THETA_T' )
- CALC_G_LOCAL_T =self.get_cmd('CALC_G_LOCAL_T' )
- POST_RCCM =self.get_cmd('POST_RCCM' )
- POST_RELEVE_T =self.get_cmd('POST_RELEVE_T' )
+ CALC_G =self.get_cmd('CALC_G' )
+ POST_RCCM =self.get_cmd('POST_RCCM' )
+ POST_RELEVE_T =self.get_cmd('POST_RELEVE_T' )
# La macro compte pour 1 dans la numerotation des commandes
self.set_icmd(1)
#
if CL_BOL_P2_GV!=None :
if TYPE_MAILLAGE=='SOUS_EPAIS_COUDE' :
- print '<A> <MACR_ASCOUF_CALC> la condition aux limites sur bol a section conique'
- print ' est ignoree pour un coude avec sous-epaisseurs'
+ message= ' la condition aux limites sur bol a section conique \n'
+ message=message+' est ignoree pour un coude avec sous-epaisseurs \n'
+ UTMESS('A', "MACR_ASCOUF_CALC", message)
elif (TYPE_MAILLAGE[:4]!='FISS') and (CL_BOL_P2_GV['AZIMUT']!=None) :
- ier=ier+1
- self.cr.fatal("""<E> <MACR_ASCOUF_CALC> mot-cle AZIMUT non autorise dans le cas d''un coude sain""")
- return ier
+ UTMESS('E', "MACR_ASCOUF_CALC", "mot-cle AZIMUT non autorise dans le cas d un coude sain")
#
if mc_IMPR_TABLE!=None :
FLAG = 0
if (mc_IMPR_TABLE['NOM_PARA']==None) and (mc_IMPR_TABLE['POSI_ANGUL']==None) and (mc_IMPR_TABLE['POSI_CURV_LONGI']==None) :
- ier=ier+1
- self.cr.fatal("""<E> <MACR_ASCOUF_CALC> POSI_ANGUL POSI_CURV_LONGI est obligatoire""")
+ UTMESS('E', "MACR_ASCOUF_CALC", "POSI_ANGUL POSI_CURV_LONGI est obligatoire")
return ier
if (mc_IMPR_TABLE['NOM_PARA']!=None) :
impr_table_nom_para= mc_IMPR_TABLE['NOM_PARA']
FLAG = 1
if (((impt['ANGLE']==None) and (impt['POSI_ANGUL']==None) and (impt['R_CINTR' ]==None)) or
((impt['ANGLE']==None) and (impt['R_CINTR' ]==None) and (impt['POSI_CURV_LONGI']==None)) ) :
- ier=ier+1
- self.cr.fatal("""<E> <MACR_ASCOUF_CALC> il faut renseigner : ANGLE, R_CINTR et POSI_ANGUL ou ANGLE, R_CINTR et POSI_CURV_LONGI""")
- return ier
+ UTMESS('E', "MACR_ASCOUF_CALC", "il faut renseigner : ANGLE, R_CINTR et POSI_ANGUL ou ANGLE, R_CINTR et POSI_CURV_LONGI")
if (mc_IMPR_TABLE['NOM_PARA']==None) : FLAG = 1
- if not FLAG : print '<A> <MACR_ASCOUF_CALC> ANGL_COUDE et ANGL_SOUS_EPAI sont inutiles dans ce cas'
+ if not FLAG : UTMESS('A', "MACR_ASCOUF_CALC","ANGL_COUDE et ANGL_SOUS_EPAI sont inutiles dans ce cas")
#
#------------------------------------------------------------------
#
COEF_MULT = COEFB1 ,
COEF_IMPO = 0.0 , )
- __conlim = AFFE_CHAR_MECA( MODELE = modele ,**motscles)
+ _conlim = AFFE_CHAR_MECA( MODELE = modele ,**motscles)
#
# --- commande AFFE_CHAR_MECA ---
# chargement mecanique : pres_rep, effet de fond
GROUP_MA = 'EXTUBE' ,
PRES = PRES_REP['PRES'] ,)
#
- __chpres = AFFE_CHAR_MECA( MODELE = modele ,**motscles)
+ _chpres = AFFE_CHAR_MECA( MODELE = modele ,**motscles)
#
# --- commande AFFE_CHAR_MECA ---
# chargement mecanique : torseur d efforts
#
if TORS_P1!=None :
- __chtor = [None]*6
+ _chtor = [None]*6
i=0
for tors in TORS_P1:
mcsimp={}
if tors['MY']!=None : mcsimp['MY']=tors['MY']
if tors['MZ']!=None : mcsimp['MZ']=tors['MZ']
mcfact=_F(GROUP_NO='P1',**mcsimp)
- __chtor[i] = AFFE_CHAR_MECA( MODELE = modele ,
- FORCE_NODALE = mcfact , )
+ _chtor[i] = AFFE_CHAR_MECA( MODELE = modele ,
+ FORCE_NODALE = mcfact , )
i=i+1
#
# --- commande STAT_NON_LINE ---
motscles={}
#
mcfex=[] # mot clé facteur EXCIT
- mcfex.append(_F(CHARGE=__conlim,))
+ mcfex.append(_F(CHARGE=_conlim,))
if ECHANGE!=None :
mcfex.append(_F(CHARGE=chmeth,))
if PRES_REP!=None:
if PRES_REP['FONC_MULT']!=None :
- mcfex.append(_F(CHARGE=__chpres,FONC_MULT=PRES_REP['FONC_MULT']))
+ mcfex.append(_F(CHARGE=_chpres,FONC_MULT=PRES_REP['FONC_MULT']))
else :
- mcfex.append(_F(CHARGE=__chpres,))
+ mcfex.append(_F(CHARGE=_chpres,))
if TORS_P1!=None:
i=0
for tors in TORS_P1 :
if tors['FONC_MULT']!=None :
- mcfex.append(_F(CHARGE=__chtor[i],FONC_MULT=tors['FONC_MULT']))
+ mcfex.append(_F(CHARGE=_chtor[i],FONC_MULT=tors['FONC_MULT']))
else :
- mcfex.append(_F(CHARGE=__chtor[i],))
+ mcfex.append(_F(CHARGE=_chtor[i],))
i=i+1
motscles['EXCIT'] =mcfex
#
fonfis=DEFI_FOND_FISS(MAILLAGE=MAILLAGE,
LEVRE_SUP=_F(GROUP_MA='FACE1'),
LEVRE_INF=_F(GROUP_MA='FACE2'),
- INFO=2,**motscles
+ INFO=INFO,**motscles
);
if THETA_3D!=None :
for thet in THETA_3D:
motscles = {}
if COMP_INCR!=None : motscles['COMP_INCR']=_F(RELATION=COMP_INCR['RELATION'])
if COMP_ELAS!=None : motscles['COMP_ELAS']=_F(RELATION=COMP_ELAS['RELATION'])
- _nogthe=CALC_G_THETA_T(
- RESULTAT =nomres,
- TOUT_ORDRE ='OUI',
- THETA =_nothet,
- **motscles
- );
+ _nogthe=CALC_G( RESULTAT =nomres,
+ OPTION='CALC_G_GLOB',
+ TOUT_ORDRE ='OUI',
+ THETA =_F(THETA=_nothet),**motscles);
#
IMPR_TABLE(TABLE=_nogthe,);
#
if COMP_INCR!=None : motscles['COMP_INCR']=_F(RELATION=COMP_INCR['RELATION'])
if COMP_ELAS!=None : motscles['COMP_ELAS']=_F(RELATION=COMP_ELAS['RELATION'])
if TYPE_MAILLAGE =='FISS_COUDE' :
- motscles['LISSAGE_THETA']='LEGENDRE'
- motscles['LISSAGE_G'] ='LEGENDRE'
+ motscles['LISSAGE']=_F(LISSAGE_THETA='LEGENDRE',
+ LISSAGE_G='LEGENDRE',
+ DEGRE=4,)
elif TYPE_MAILLAGE =='FISS_AXIS_DEB' :
- motscles['LISSAGE_THETA']='LAGRANGE'
- motscles['LISSAGE_G'] ='LAGRANGE'
- _nogloc=CALC_G_LOCAL_T(MODELE =modele,
- RESULTAT =nomres,
- TOUT_ORDRE ='OUI',
- CHAM_MATER =affmat,
- FOND_FISS =fonfis,
- DEGRE = 4,
- R_INF = thet['R_INF'],
- R_SUP = thet['R_SUP'],
- **motscles
- );
+ motscles['LISSAGE']=_F(LISSAGE_THETA='LAGRANGE',
+ LISSAGE_G='LAGRANGE',
+ DEGRE=4,)
+ _nogloc=CALC_G (MODELE =modele,
+ RESULTAT =nomres,
+ TOUT_ORDRE ='OUI',
+ CHAM_MATER =affmat,
+ THETA=_F( FOND_FISS =fonfis,
+ R_INF = thet['R_INF'],
+ R_SUP = thet['R_SUP'],),**motscles);
IMPR_TABLE(TABLE=_nogloc,);
#
-#@ MODIF macr_ascouf_mail_ops Macro DATE 09/05/2005 AUTEUR LEBOUVIE F.LEBOUVIER
+#@ MODIF macr_ascouf_mail_ops Macro DATE 22/05/2006 AUTEUR MCOURTOI M.COURTOIS
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# ======================================================================
-
+import os.path
from math import sqrt,cos,sin,pi,tan,log,fabs,ceil,fmod,floor
+import aster
+import string
+from Utilitai.Utmess import UTMESS
# ------------------------------------------------------------------------------
def ASCFON(RC,RM,EP,ORIEN,AZIM,AXEC,POS,Y):
"""
from Utilitai import funct_root
+ echo_mess=['MACR_ASCOUF_MAIL ASCFIS \n',]
if POS=='DEB_INT':
if (AZIM>=120.) and (AZIM<=240.0): X = RM-EP/2.0 - SUREP
else: X = RM-EP/2.0
else:
SF = BETAR*RC
SFP = SF
- if (GEOM=='COUDE'): print 'COTE AXIALE CENTRE FISSURE SUR COUDE : %.2f'%SF
- if (GEOM=='TUBE') : print 'COTE AXIALE CENTRE FISSURE SUR TUBE : %.2f'%SF
- print 'COTE AXIALE CENTRE FISSURE SUR PLAQUE : %.2f'%SFP
+ if (GEOM=='COUDE'): echo_mess.append( 'COTE AXIALE CENTRE FISSURE SUR COUDE : %.2f \n'%SF)
+ if (GEOM=='TUBE') : echo_mess.append( 'COTE AXIALE CENTRE FISSURE SUR TUBE : %.2f \n'%SF )
+ echo_mess.append( 'COTE AXIALE CENTRE FISSURE SUR PLAQUE : %.2f \n'%SFP)
#
# ON ENVISAGE LE CAS OU UNE PARTIE DE L AXE EST DANS LES
# DROITES DES EMBOUTS. LA TRANSFORMATION N EST FAITE QUE SUR LA
BEMB = abs(BINF)*sqrt(2.0)
elif (BINF>=0. and BSUP<=DIST):
BCOUD = 2.0*AXEC
- print 'PARTIE DU GRAND AXE DANS LE COUDE : %.2f'%BCOUD
- print 'PARTIE DU GRAND AXE DANS L EMBOUT : %.2f'%BEMB
+ echo_mess.append( 'PARTIE DU GRAND AXE DANS LE COUDE : %.2f \n'%BCOUD)
+ echo_mess.append( 'PARTIE DU GRAND AXE DANS L EMBOUT : %.2f \n'%BEMB)
#
# -- CALCUL DE LA TAILLE DU GRAND AXE FISSURE SUR LA PLAQUE
#
AXECP = BCOUD + BEMB
#
if GEOM=='COUDE':
- print 'TAILLE GRAND AXE COUDE DONNE : %.2f'%(2.*AXEC)
+ echo_mess.append( 'TAILLE GRAND AXE COUDE DONNE : %.2f \n'%(2.*AXEC))
elif GEOM=='TUBE':
- print 'TAILLE GRAND AXE TUBE DONNE : %.2f'%(2.*AXEC)
- print 'TAILLE GRAND AXE PLAQUE DEDUIT : %.2f'%AXECP
+ echo_mess.append( 'TAILLE GRAND AXE TUBE DONNE : %.2f \n'%(2.*AXEC))
+ echo_mess.append( 'TAILLE GRAND AXE PLAQUE DEDUIT : %.2f \n'%AXECP)
if NEWT:
- print 'METHODE DE NEWTON FISSURE A 45 DEGRES -->'
- print 'TAILLE GRAND AXE COUDE RECALCULE : %.2f'%AXECC
+ echo_mess.append( 'METHODE DE NEWTON FISSURE A 45 DEGRES --> \n')
+ echo_mess.append( 'TAILLE GRAND AXE COUDE RECALCULE : %.2f \n'%AXECC)
if GEOM=='COUDE' and BEMB>0. and BSUP>DIST :
SFP = ALPHA*2.*pi*RC/360. - AXECP/2. + BEMB
- print 'CORRECTION CENTRE : FISSURE A CHEVAL SUR EMBOUT'
- print 'ABSC. CURV. AXIALE CENTRE FISSURE SUR PLAQUE : %.2f'%SFP
+ echo_mess.append( 'CORRECTION CENTRE : FISSURE A CHEVAL SUR EMBOUT \n')
+ echo_mess.append( 'ABSC. CURV. AXIALE CENTRE FISSURE SUR PLAQUE : %.2f \n'%SFP)
if GEOM=='COUDE' and BEMB>0. and BINF<0. :
SFP = + AXECP/2. - BEMB
- print 'CORRECTION CENTRE : FISSURE A CHEVAL SUR EMBOUT'
- print 'ABSC. CURV. AXIALE CENTRE FISSURE SUR PLAQUE : %.2f'%SFP
+ echo_mess.append( 'CORRECTION CENTRE : FISSURE A CHEVAL SUR EMBOUT \n')
+ echo_mess.append( 'ABSC. CURV. AXIALE CENTRE FISSURE SUR PLAQUE : %.2f \n'%SFP)
#
# -- CORRECTION DU PETIT AXE DE LA FISSURE QUAND CELLE-CI SE TROUVE SUR
# LA ZONE DE SUREPAISSEUR
#
if SUREP!=0.:
AXEAP = AXEA * EP / ( EP + MU*SUREP )
- print '--> CORRECTION DUE A LA SUREPAISSEUR'
- print '--> TAILLE PETIT AXE PLAQUE : %.2f'%AXEAP
+ echo_mess.append( '--> CORRECTION DUE A LA SUREPAISSEUR \n' )
+ echo_mess.append( '--> TAILLE PETIT AXE PLAQUE : %.2f \n'%AXEAP )
else: AXEAP = AXEA
#
+ texte_final=string.join(echo_mess)
+ aster.affiche('MESSAGE',texte_final)
return AXEAP,AXECP,SFP
"""
ier=0
CG=pi/180.
+ echo_mess=['MACR_ASCOUF_MAIL ASCSEP \n',]
#
# --- BOUCLE SUR L ENSEMBLE DES SOUS-EPAISSEURS
#
i=0
for ssep in MCL_SOUS_EPAIS :
i=i+1
- print '-------------------------------------'
- print 'SOUS-EPAISSEUR NUMERO %d'%i
- print '-------------------------------------'
+ echo_mess.append( '-------------------------------------\n')
+ echo_mess.append( 'SOUS-EPAISSEUR NUMERO %d\n'%i)
+ echo_mess.append( '-------------------------------------\n')
#
# --- CAS DES SOUS-EPAISSEURS AXISYMETRIQUES
#
if ssep['TYPE']=='AXIS':
- print 'SOUS-EPAISSEUR AXISYMETRIQUE : '
- print 'CALCUL DE LA TAILLE LONGI ENVELOPPE EN INTRADOS (AZIMUT PI)'
+ echo_mess.append( 'SOUS-EPAISSEUR AXISYMETRIQUE : \n')
+ echo_mess.append( 'CALCUL DE LA TAILLE LONGI ENVELOPPE EN INTRADOS (AZIMUT PI)\n')
ssep.ICIRP = 2.*pi*RM
ssep.ISCP = pi*RM
ssep.IPHIC = 180.
ssep.ISCP = ssep['POSI_CURV_CIRC']*RM/(RM+EP/2.)
AZIMC = ssep.ISCP/RM
ssep.IPHIC = ssep['POSI_CURV_CIRC']/(RM+EP/2.)*180./pi
- print 'AZIMUT CENTRE SOUS-EPAISSEUR (DEGRES) : %.2f'%ssep.IPHIC
+ echo_mess.append( 'AZIMUT CENTRE SOUS-EPAISSEUR (DEGRES) : %.2f \n'%ssep.IPHIC)
else:
ssep.ISCP = ssep['AZIMUT']*pi*RM/180.
AZIMC = ssep['AZIMUT']*pi/180.
- print 'ABSC. CURV. CIRCONF. CENTRE SOUS-EPAISSEUR SUR COUDE : %.2f'%(AZIMC*(RM+EP/2.))
+ echo_mess.append( 'ABSC. CURV. CIRCONF. CENTRE SOUS-EPAISSEUR SUR COUDE : %.2f \n'%(AZIMC*(RM+EP/2.)))
#
# PASSAGE DANS LE REPERE PLAQUE (0,2PI) AVEC ORIGINE FLANC DROIT
# CAR L ORIGINE DES DONNEES CIRCONF. EST EN EXTRADOS
#
if ssep.ISCP>(3.*pi*RM/2.): ssep.ISCP = ssep.ISCP - 3.*pi*RM/2.
else: ssep.ISCP = ssep.ISCP + pi*RM/2.
- print 'ABSC. CURV. CIRCONF. CENTRE SOUS-EPAISSEUR SUR PLAQUE : %.2f'%ssep.ISCP
+ echo_mess.append( 'ABSC. CURV. CIRCONF. CENTRE SOUS-EPAISSEUR SUR PLAQUE : %.2f \n'%ssep.ISCP)
#
# -- CALCUL DE LA TAILLE CIRCONFERENTIELLE
# NB : MESURE FAITE EN PEAU EXTERNE SUR LE COUDE
#
ssep.ICIRP = ssep['AXE_CIRC']*(RM/(RM+EP/2.))
if ssep.ICIRP>(2.*pi*RM) :
- print ' <MACR_ASCOUF_MAIL> ASCSEP valeur hors domaine'
- print ' <MACR_ASCOUF_MAIL> sous-epaisseur numero : %d'%i
- print ' <MACR_ASCOUF_MAIL> taille axe circonferentiel : %.2f'%ssep.ICIRP
- print ' <MACR_ASCOUF_MAIL> bord plaque : %.2f'%2*pi*RM
- self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
- ier = ier+1
- return ier
- print 'TAILLE CIRCONFERENTIELLE SOUS-EPAISSEUR SUR PLAQUE : %.2f'%ssep.ICIRP
- print '<=> TAILLE EQUIVALENTE SUR LA CIRCONFERENCE (DEGRES) : %.2f'%(ssep.ICIRP*360./(2.*pi*RM))
+ texte_final=string.join(echo_mess)
+ aster.affiche("MESSAGE",texte_final)
+ message= ' ASCSEP valeur hors domaine \n'
+ message=message+' sous-epaisseur numero : %d \n'%i
+ message=message+' taille axe circonferentiel : %.2f \n'%ssep.ICIRP
+ message=message+' bord plaque : %.2f \n'%2*pi*RM
+ UTMESS('F', "MACR_ASCOUF_MAIL", message)
+ echo_mess.append( 'TAILLE CIRCONFERENTIELLE SOUS-EPAISSEUR SUR PLAQUE : %.2f \n'%ssep.ICIRP)
+ echo_mess.append( '<=> TAILLE EQUIVALENTE SUR LA CIRCONFERENCE (DEGRES) : %.2f \n'%(ssep.ICIRP*360./(2.*pi*RM)))
+
#
# -- CALCUL COTE AXIALE DU CENTRE SOUS-EPAISSEUR SUR LA PLAQUE
# EN FONCTION DE L ABSCISSE CURVILIGNE DONNEE SUR LE COUDE
if GEOM=='COUDE':
ssep.ISLP = ssep['POSI_CURV_LONGI']/(1.+(RM+EP/2.)/RC*cos(AZIMC))
AZIML = ssep.ISLP/RC
- print 'ANGLE COUDE CENTRE SOUS-EPAISSEUR (DEGRES) : %.2f'%(AZIML*180./pi)
+ echo_mess.append( 'ANGLE COUDE CENTRE SOUS-EPAISSEUR (DEGRES) : %.2f \n'%(AZIML*180./pi))
else :
ssep.ISLP = ssep['POSI_CURV_LONGI']
if (SYME in ('QUART','DEMI')) and (ssep.ISLP!=ALPHA*CG*RC/2.) :
- print ' <MACR_ASCOUF_MAIL> ASCSEP cas de symetrie :'
- print ' <MACR_ASCOUF_MAIL> la sous-epaisseur doit etre dans la section mediane du coude !'
- self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
- ier = ier+1
- return ier
+ texte_final=string.join(echo_mess)
+ aster.affiche("MESSAGE",texte_final)
+ message= ' ASCSEP cas de symetrie :\n'
+ message=message+ ' la sous-epaisseur doit etre dans la section mediane du coude !\n'
+ UTMESS('F', "MACR_ASCOUF_MAIL", message)
else :
if GEOM=='COUDE':
- print 'ABSC. CURV. AXIALE CENTRE SOUS-EPAISSEUR SUR COUDE : %.2f'%((ssep.BETA)*CG*(RC+(RM+EP/2.)*cos(AZIMC)))
+ echo_mess.append( 'ABSC. CURV. AXIALE CENTRE SOUS-EPAISSEUR SUR COUDE : %.2f \n'%((ssep.BETA)*CG*(RC+(RM+EP/2.)*cos(AZIMC))))
AZIML = (ssep.BETA)*CG
else :
- print 'ABSC. CURV. AXIALE CENTRE SOUS-EPAISSEUR SUR TUBE : %.2f'%((ssep.BETA)*CG*RC)
+ echo_mess.append( 'ABSC. CURV. AXIALE CENTRE SOUS-EPAISSEUR SUR TUBE : %.2f \n'%((ssep.BETA)*CG*RC) )
ssep.ISLP = (ssep.BETA)*CG*RC
if (SYME in ('QUART','DEMI')) and (ssep.BETA!=ALPHA/2.) :
- print ' <MACR_ASCOUF_MAIL> ASCSEP cas de symetrie :'
- print ' <MACR_ASCOUF_MAIL> la sous-epaisseur doit etre dans la section mediane du coude !'
- self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
- ier = ier+1
- return ier
- print 'ABSC. CURV. AXIALE CENTRE SOUS-EPAISSEUR SUR PLAQUE : %.2f'%ssep.ISLP
+ texte_final=string.join(echo_mess)
+ aster.affiche("MESSAGE",texte_final)
+ message= ' ASCSEP cas de symetrie :\n'
+ message=message+ ' la sous-epaisseur doit etre dans la section mediane du coude !\n'
+ UTMESS('F', "MACR_ASCOUF_MAIL", message)
+ echo_mess.append( 'ABSC. CURV. AXIALE CENTRE SOUS-EPAISSEUR SUR PLAQUE : %.2f \n'%ssep.ISLP)
#
# -- CALCUL DE LA TAILLE LONGITUDINALE
# NB : MESURE FAITE EN PEAU EXTERNE SUR LE COUDE
ssep.ILONP = BPLAQ+BEMB
if BEMB1>0.:
ssep.ISLP = ALPHA*CG*RC - ssep.ILONP/2. + BEMB1
- print 'CORRECTION CENTRE : SOUS-EP. A CHEVAL SUR EMBOUT'
- print 'ABSC. CURV. AXIALE CENTRE SOUS-EPAISSEUR SUR PLAQUE : %.2f'%ssep.ISLP
+ echo_mess.append( 'CORRECTION CENTRE : SOUS-EP. A CHEVAL SUR EMBOUT \n')
+ echo_mess.append( 'ABSC. CURV. AXIALE CENTRE SOUS-EPAISSEUR SUR PLAQUE : %.2f \n'%ssep.ISLP)
if BEMB2>0.:
ssep.ISLP = ssep.ILONP/2. - BEMB2
- print 'CORRECTION CENTRE : SOUS-EP. A CHEVAL SUR EMBOUT'
- print 'ABSC. CURV. AXIALE CENTRE SOUS-EPAISSEUR SUR PLAQUE : %.2f'%ssep.ISLP
+ echo_mess.append( 'CORRECTION CENTRE : SOUS-EP. A CHEVAL SUR EMBOUT \n')
+ echo_mess.append( 'ABSC. CURV. AXIALE CENTRE SOUS-EPAISSEUR SUR PLAQUE : %.2f \n'%ssep.ISLP)
if ssep.ISLP<0. : ssep.ISLP = 0.
if (ssep.ISLP>ALPHA*CG*RC) : ssep.ISLP = ALPHA*CG*RC
#
# ON CORRIGE SA POSITION EN LE METTANT A L INTERFACE SINON CA PLANTE
# DANS LA PROC DE MAILLAGE (A AMELIORER)
#
- print 'TAILLE LONGITUDINALE SOUS-EPAISSEUR SUR PLAQUE : %.2f'%ssep.ILONP
- print '<=> TAILLE EQUIVALENTE PAR RAPPORT A L ANGLE DU COUDE (DEGRES): %.2f'%(ssep.ILONP*360/(2*pi*RC))
+ echo_mess.append( 'TAILLE LONGITUDINALE SOUS-EPAISSEUR SUR PLAQUE : %.2f \n'%ssep.ILONP)
+ echo_mess.append( '<=> TAILLE EQUIVALENTE PAR RAPPORT A L ANGLE DU COUDE (DEGRES): %.2f \n'%(ssep.ILONP*360/(2*pi*RC)))
#
+ texte_final=string.join(echo_mess)
+ aster.affiche('MESSAGE',texte_final)
return ier
# ------------------------------------------------------------------------------
#
# --- tri du tableau des abscisses curvilignes circonf. plaque
#
+ echo_mess=['MACR_ASCOUF_MAIL ASCTCI \n',]
TAMPON = []
COORXG = []
COORYG = []
for ssep in MCL_SOUS_EPAIS :
i=i+1
if (ssep.ISCP>2.*pi*RM) or (ssep.ISCP<0.) :
- print ' <MACR_ASCOUF_MAIL> valeur hors domaine'
- print ' <MACR_ASCOUF_MAIL> SOUS-EPAISSEUR NUMERO :%d'%MCL_SOUS_EPAIS.index(ssep)
- print ' <MACR_ASCOUF_MAIL> ABSC. CURV. CIRCONF. :%.2f'%ssep.ISCP
- print ' <MACR_ASCOUF_MAIL> BORD PLAQUE :%.2f'%(2.*pi*RM)
- self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
- ier = ier+1
- return ier
+ texte_final=string.join(echo_mess)
+ aster.affiche("MESSAGE",texte_final)
+ message= ' valeur hors domaine \n'
+ message=message+ ' SOUS-EPAISSEUR NUMERO :%d'%MCL_SOUS_EPAIS.index(ssep)
+ message=message+ ' ABSC. CURV. CIRCONF. :%.2f \n'%ssep.ISCP
+ message=message+ ' BORD PLAQUE :%.2f \n'%(2.*pi*RM)
+ UTMESS('F', "MACR_ASCOUF_MAIL", message)
TAMPON.append((ssep.ISCP,i))
TAMPON.sort()
IABSC1=[]
for j in range(i):
IABSC1.append(TAMPON[j][1])
- print
- print 'TRI DES CENTRES ABSC. CURV. CIRCONF. :'
- print '------------------------------------'
+ echo_mess.append( ' \n')
+ echo_mess.append( 'TRI DES CENTRES ABSC. CURV. CIRCONF. :\n ')
+ echo_mess.append( '------------------------------------\n')
i=0
for ssep in TAMPON :
i=i+1
- print '%d) SOUS-EP NO %d <> XC = %.2f'%(i,ssep[1],ssep[0])
+ echo_mess.append( '%d) SOUS-EP NO %d <> XC = %.2f \n'%(i,ssep[1],ssep[0]) )
#
# --- calcul des abcisses droites et gauches des sous-epaisseurs
#
IABSC2=[]
for j in range(2*len(MCL_SOUS_EPAIS)):
IABSC2.append(TAMPON[j][1])
- print
- print 'TRI DES INTERVALLES G ET D ABSC. CURV. CIRCONF. :'
- print '-----------------------------------------------'
+ echo_mess.append( '\n')
+ echo_mess.append( 'TRI DES INTERVALLES G ET D ABSC. CURV. CIRCONF. :\n')
+ echo_mess.append( '-----------------------------------------------\n' )
for j in range(2*len(MCL_SOUS_EPAIS)):
if fmod(IABSC2[j],2):
- print '%d) SOUS-EP NO %d <> XG = %.2f'%(j+1,IABSC1[IABSC2[j]/2],TAMPON[j][0])
+ echo_mess.append( '%d) SOUS-EP NO %d <> XG = %.2f \n'%(j+1,IABSC1[IABSC2[j]/2],TAMPON[j][0]))
else:
- print '%d) SOUS-EP NO %d <> XD = %.2f'%(j+1,IABSC1[IABSC2[j]/2-1],TAMPON[j][0])
+ echo_mess.append( '%d) SOUS-EP NO %d <> XD = %.2f \n'%(j+1,IABSC1[IABSC2[j]/2-1],TAMPON[j][0]))
#
+ texte_final=string.join(echo_mess)
+ aster.affiche('MESSAGE',texte_final)
return TAMPON,IABSC1,IABSC2,COORXD,COORXG
# ------------------------------------------------------------------------------
#
# tri du tableau des abscisses curvilignes axiales plaque
#
+ echo_mess=['MACR_ASCOUF_MAIL ASCTLO \n',]
ALPHAR = 2.*ALPHA*pi/360.
TAMPON = []
i=0
for ssep in MCL_SOUS_EPAIS :
i=i+1
if (ssep.ISLP>ALPHAR*RC) or (ssep.ISLP<0.) :
- print ' <MACR_ASCOUF_MAIL> valeur hors domaine'
- print ' <MACR_ASCOUF_MAIL> SOUS-EPAISSEUR NUMERO :%d'%MCL_SOUS_EPAIS.index(ssep)
- print ' <MACR_ASCOUF_MAIL> ABSC. CURV. LONGIT. :%.2f'%ssep.ISLP
- print ' <MACR_ASCOUF_MAIL> BORDS PLAQUE :%.2f'%(ALPHAR*RC)
- self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
- ier = ier+1
- return ier
+ texte_final=string.join(echo_mess)
+ aster.affiche("MESSAGE",texte_final)
+ message= ' valeur hors domaine \n'
+ message=message+ ' SOUS-EPAISSEUR NUMERO :%d \n'%MCL_SOUS_EPAIS.index(ssep)
+ message=message+ ' ABSC. CURV. LONGIT. :%.2f \n'%ssep.ISLP
+ message=message+ ' BORDS PLAQUE :%.2f \n'%(ALPHAR*RC)
+ UTMESS('F', "MACR_ASCOUF_MAIL", message)
TAMPON.append((ssep.ISLP,i))
TAMPON.sort()
IORDO1=[]
for j in range(i):
IORDO1.append(TAMPON[j][1])
- print
- print 'TRI DES CENTRES ABSC. CURV. LONGIT. :'
- print '------------------------------------'
+ echo_mess.append( '\n')
+ echo_mess.append( 'TRI DES CENTRES ABSC. CURV. LONGIT. : \n')
+ echo_mess.append( '------------------------------------ \n')
i=0
for ssep in TAMPON :
i=i+1
- print '%d) SOUS-EP NO %d <> YC = %.2f'%(i,ssep[1],ssep[0])
+ echo_mess.append( '%d) SOUS-EP NO %d <> YC = %.2f \n'%(i,ssep[1],ssep[0]))
#
# calcul des abscisses sup. et inf. des sous-ep.
#
YI=ALPHAR*RC-(MCL_SOUS_EPAIS[bid[1]-1].ILONP-(MCL_SOUS_EPAIS[bid[1]-1]['AXE_LONGI'])/2.)
YS=ALPHAR*RC+(MCL_SOUS_EPAIS[bid[1]-1]['AXE_LONGI'])/2.
if YI<(-LTCHAR):
- print ' <MACR_ASCOUF_MAIL> valeur hors domaine'
- print ' <MACR_ASCOUF_MAIL> SOUS-EPAISSEUR NUMERO :',bid[1]
- print ' <MACR_ASCOUF_MAIL> BORD INFERIEUR :',YI
- print ' <MACR_ASCOUF_MAIL> BORD PLAQUE :',-LTCHAR
- self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
- ier = ier+1
- return ier
+ texte_final=string.join(echo_mess)
+ aster.affiche("MESSAGE",texte_final)
+ message= ' valeur hors domaine \n'
+ message=message+ ' SOUS-EPAISSEUR NUMERO :%d \n'%bid[1]
+ message=message+ ' BORD INFERIEUR :%.2f \n'%YI
+ message=message+ ' BORDS PLAQUE :%.2f \n'%(-1*LTCHAR)
+ UTMESS('F', "MACR_ASCOUF_MAIL", message)
if YS>(ALPHAR*RC+LTCLIM):
- print ' <MACR_ASCOUF_MAIL> valeur hors domaine'
- print ' <MACR_ASCOUF_MAIL> SOUS-EPAISSEUR NUMERO :',bid[1]
- print ' <MACR_ASCOUF_MAIL> BORD INFERIEUR :',YS
- print ' <MACR_ASCOUF_MAIL> BORD PLAQUE :',ALPHAR*RC+LTCLIM
- self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
- ier = ier+1
- return ier
+ texte_final=string.join(echo_mess)
+ aster.affiche("MESSAGE",texte_final)
+ message= ' valeur hors domaine \n'
+ message=message+ ' SOUS-EPAISSEUR NUMERO :%d \n'%bid[1]
+ message=message+ ' BORD INFERIEUR :%.2f \n'%YI
+ message=message+ ' BORDS PLAQUE :%.2f \n'%(ALPHAR*RC+LTCLIM)
+ UTMESS('F', "MACR_ASCOUF_MAIL", message)
COORYI.append(YI)
COORYS.append(YS)
#
IORDO2=[]
for j in range(2*len(MCL_SOUS_EPAIS)):
IORDO2.append(TAMPON[j][1])
- print
- print 'TRI DES INTERVALLES I ET S ABSC. CURV. LONGIT. :'
- print '-----------------------------------------------'
+ echo_mess.append( '\n')
+ echo_mess.append( 'TRI DES INTERVALLES I ET S ABSC. CURV. LONGIT. : \n')
+ echo_mess.append( '----------------------------------------------- \n')
for j in range(2*len(MCL_SOUS_EPAIS)):
if fmod(IORDO2[j],2):
- print '%d) SOUS-EP NO %d <> YI = %.2f'%(j+1,IORDO1[IORDO2[j]/2],TAMPON[j][0])
+ echo_mess.append( '%d) SOUS-EP NO %d <> YI = %.2f \n'%(j+1,IORDO1[IORDO2[j]/2],TAMPON[j][0]))
else:
- print '%d) SOUS-EP NO %d <> YS = %.2f'%(j+1,IORDO1[IORDO2[j]/2-1],TAMPON[j][0])
+ echo_mess.append( '%d) SOUS-EP NO %d <> YS = %.2f \n'%(j+1,IORDO1[IORDO2[j]/2-1],TAMPON[j][0]))
#
+ texte_final=string.join(echo_mess)
+ aster.affiche('MESSAGE',texte_final)
return TAMPON,IORDO1,IORDO2,COORYI,COORYS
#
#
#
# calcul du nombre d'elements longi. et circonf. dans les sous-epaisseurs:
#
- print
- print 'DETERMINATION DU NOMBRE D''ELEMENTS DANS LES SOUS-EPAISSEURS :'
- print '------------------------------------------------------------'
+ echo_mess=['MACR_ASCOUF_MAIL ASCNBE \n',]
+ echo_mess.append( '\n')
+ echo_mess.append( 'DETERMINATION DU NOMBRE D''ELEMENTS DANS LES SOUS-EPAISSEURS :\n')
+ echo_mess.append( '------------------------------------------------------------\n')
NLX=[0]*len(MCL_SOUS_EPAIS)
NLY=[0]*len(MCL_SOUS_EPAIS)
for j in range(len(BD)):
if ((COORXG[l]<COORXD[l] and BG[j]>=COORXG[l] and BD[j]<=COORXD[l])\
or (COORXG[l]>=COORXD[l] and (BG[j]<=COORXG[l] or BD[j]>=COORXD[l]))):
NLX[i]=NLX[i]+NBEL
- print 'SOUS-EP NO %d ZONE CIRC. NO %d NB ELEM. = %d'%(i+1,j+1,NBEL)
+ echo_mess.append( 'SOUS-EP NO %d ZONE CIRC. NO %d NB ELEM. = %d \n'%(i+1,j+1,NBEL))
for j in range(len(BS)):
if INDSEY[j]!=0:
l=IORDO1[i]-1
if (BI[j]>=COORYI[l] and BS[j]<=COORYS[l]):
NLY[i]=NLY[i]+NBEL
- print 'SOUS-EP NO %d ZONE LONGI. NO %d NB ELEM. = %d'%(i+1,j+1,NBEL)
+ echo_mess.append( 'SOUS-EP NO %d ZONE LONGI. NO %d NB ELEM. = %d \n'%(i+1,j+1,NBEL) )
for j in range(len(NLX)):
- print 'SOUS-EP NO %d NBE TOTAL ELEMENTS CIRCONF. : %d'%(j+1,NLX[j])
- print 'SOUS-EP NO %d NBE TOTAL ELEMENTS LONGI. : %d'%(j+1,NLY[j])
+ echo_mess.append( 'SOUS-EP NO %d NBE TOTAL ELEMENTS CIRCONF. : %d \n'%(j+1,NLX[j]))
+ echo_mess.append( 'SOUS-EP NO %d NBE TOTAL ELEMENTS LONGI. : %d \n'%(j+1,NLY[j]))
#
+ texte_final=string.join(echo_mess)
+ aster.affiche('MESSAGE',texte_final)
return NLX,NLY
#
################################################################################
# ------------------------------------------------------------------------------
def ASCSYM(MCL_SOUS_EPAIS,RM,RC,ALPHA,LTCHAR,LTCLIM):
ier=0
+ echo_mess=['MACR_ASCOUF_MAIL ASCSYM \n',]
DERAFC = 18.
DERAFL = 5.
INDSEX = []
INDSEX.append(1)
- print
- print 'ZONES APRES RECOUVREMENT ABSC. CURV. CIRCONF. :'
- print '---------------------------------------------'
+ echo_mess.append( '\n')
+ echo_mess.append( 'ZONES APRES RECOUVREMENT ABSC. CURV. CIRCONF. :\n')
+ echo_mess.append( '--------------------------------------------- \n')
EPS=0.000000000001
NZONEX=len(BG)
for j in range(NZONEX) :
if ( fabs(BG[j]) < EPS ) and ( fabs(BD[j]) < EPS ) :
- print 'ZONE NO %d BORNE GAUCHE = %.2f'\
- ' / BORNE DROITE = %.2f * SOUS-EPAISSEUR'%(j+1,BG[j],BD[j])
+ echo_mess.append( 'ZONE NO %d BORNE GAUCHE = %.2f'\
+ ' / BORNE DROITE = %.2f * SOUS-EPAISSEUR \n'%(j+1,BG[j],BD[j]) )
else:
- print 'ZONE NO %d BORNE GAUCHE = %.2f'\
- ' / BORNE DROITE = %.2f'%(j+1,BG[j],BD[j])
+ echo_mess.append( 'ZONE NO %d BORNE GAUCHE = %.2f \n'\
+ ' / BORNE DROITE = %.2f \n'%(j+1,BG[j],BD[j]))
# tri des donnees sous-epaisseurs en axial
DNY.append(0)
INDSEY.append(0)
INDSEY.append(1)
- print
- print 'ZONES APRES RECOUVREMENT ABSC. CURV. LONGIT. :'
- print '-----------------------------------------------'
+ echo_mess.append( '\n')
+ echo_mess.append( 'ZONES APRES RECOUVREMENT ABSC. CURV. LONGIT. : \n')
+ echo_mess.append( '----------------------------------------------- \n')
NZONEY=len(BI)
for j in range(NZONEY) :
if ( fabs(BI[j]) < EPS ) and ( fabs(BS[j]) < EPS ) :
- print 'ZONE NO %d <> BORNE INF. = %.2f'\
- ' / BORNE SUP. = %.2f * SOUS-EPAISSEUR'%(j+1,BI[j],BS[j])
+ echo_mess.append( 'ZONE NO %d <> BORNE INF. = %.2f \n'\
+ ' / BORNE SUP. = %.2f * SOUS-EPAISSEUR'%(j+1,BI[j],BS[j]))
else:
- print 'ZONE NO %d <> BORNE INF. = %.2f'\
- ' / BORNE SUP. = %.2f'%(j+1,BI[j],BS[j])
+ echo_mess.append( 'ZONE NO %d <> BORNE INF. = %.2f \n'\
+ ' / BORNE SUP. = %.2f'%(j+1,BI[j],BS[j]))
# calcul du nombre d'elements longi. et circonf. dans les soue-ep
NLX,NLY=ASCNBE(MCL_SOUS_EPAIS,COORXG,COORXD,COORYI,COORYS,BD,BG,BS,BI,
DNX,DNY,RM,RC,INDSEX,INDSEY,IABSC1,IORDO1)
+ texte_final=string.join(echo_mess)
+ aster.affiche('MESSAGE',texte_final)
return ier,NLX,NLY,NZONEX,NZONEY,BG,BD,BI,BS,INDBG,INDBD,INDBI,INDBS,DNX,DNY
################################################################################
################################################################################
# ------------------------------------------------------------------------------
def ASCPRE(MCL_SOUS_EPAIS,RM,RC,ALPHA,SYME,LTCHAR,LTCLIM):
ier=0
+ echo_mess=['MACR_ASCOUF_MAIL ASCPRE \n',]
ALPHAR = 2.*ALPHA*pi/360.
DERAFC = 18.
DERAFL = 5.
EPSI = 0.001
NBSEP = len(MCL_SOUS_EPAIS)
- print 'RECHERCHE DES ZONES DE SOUS-EPAISSEURS DANS LE COUDE\n'
+ echo_mess.append( 'RECHERCHE DES ZONES DE SOUS-EPAISSEURS DANS LE COUDE\n' )
# tri des donnees sous-epaisseurs en circonferentiel
TAMPON,IABSC1,IABSC2,COORXD,COORXG=ASCTCI(MCL_SOUS_EPAIS,RM)
# un centre de sous-ep.
if fabs(BG[NZONEX-1]-BD[NZONEX-1])<EPSI: NZONEX = NZONEX-1
- print
- print 'ZONES APRES RECOUVREMENT ABSC. CURV. CIRCONF. :'
- print '-----------------------------------------------'
+ echo_mess.append( '\n')
+ echo_mess.append( 'ZONES APRES RECOUVREMENT ABSC. CURV. CIRCONF. : \n')
+ echo_mess.append( '----------------------------------------------- \n')
for j in range(NZONEX) :
if INDBG[j]==0 and INDBD[j]==0 :
- print 'ZONE NO',j+1,'<> BORNE GAUCHE = %.2f'\
- ' / BORNE DROITE = %.2f * SOUS-EPAISSEUR'%(BG[j],BD[j])
+ echo_mess.append( 'ZONE NO %d <> BORNE GAUCHE = %.2f \n'\
+ ' / BORNE DROITE = %.2f * SOUS-EPAISSEUR'%(j+1,BG[j],BD[j]))
else:
- print 'ZONE NO',j+1,'<> BORNE GAUCHE = %.2f'\
- ' / BORNE DROITE = %.2f'%(BG[j],BD[j])
+ echo_mess.append( 'ZONE NO %d <> BORNE GAUCHE = %.2f \n'\
+ ' / BORNE DROITE = %.2f'%(j+1,BG[j],BD[j]))
# --- tri des donnees sous-ep. en axial
INDSEY.append(0)
else:pass
- print
- print 'ZONES APRES RECOUVREMENT ABSC. CURV. LONGIT. :'
- print '-----------------------------------------------'
+ echo_mess.append( '\n')
+ echo_mess.append( 'ZONES APRES RECOUVREMENT ABSC. CURV. LONGIT. :\n')
+ echo_mess.append( '----------------------------------------------- \n')
for j in range(NZONEY) :
if INDBI[j]==0 and INDBS[j]==0 :
- print 'ZONE NO',j+1,'<> BORNE INF. = %.2f'\
- ' / BORNE SUP. = %.2f * SOUS-EPAISSEUR'%(BI[j],BS[j])
+ echo_mess.append( 'ZONE NO %d <> BORNE INF. = %.2f \n'\
+ ' / BORNE SUP. = %.2f * SOUS-EPAISSEUR'%(j+1,BI[j],BS[j]))
else:
- print 'ZONE NO',j+1,'<> BORNE INF. = %.2f'\
- ' / BORNE SUP. = %.2f '%(BI[j],BS[j])
+ echo_mess.append( 'ZONE NO %d <> BORNE INF. = %.2f \n'\
+ ' / BORNE SUP. = %.2f '%(j+1,BI[j],BS[j]))
# calcul du nombre d'elements longi. et circonf. dans les sous-ep
NLX,NLY=ASCNBE(MCL_SOUS_EPAIS,COORXG,COORXD,COORYI,COORYS,BD,BG,BS,BI,
DNX,DNY,RM,RC,INDSEX,INDSEY,IABSC1,IORDO1)
+ texte_final=string.join(echo_mess)
+ aster.affiche('MESSAGE',texte_final)
return ier,NLX,NLY,NZONEX,NZONEY,BG,BD,BI,BS,INDBG,INDBD,INDBI,INDBS,DNX,DNY
+
################################################################################
################################################################################
################################################################################
texte=texte+'nivmag = '+str(NIVMAG) +POIVIR
texte=texte+'*\n'
texte=texte+'* FIN PARAMETRES UTILISATEUR\n'
- texte=texte+'opti donn '
- texte=texte+"'"+loc_datg+'ascouf_fiss_v4.datg'+"';\n"
+ texte = texte + open(os.path.join(loc_datg, 'ascouf_fiss_v4.datg'), 'r').read()
fdgib=open(nomFichierDATG,'w')
fdgib.write(texte)
fdgib.close()
texte=texte+" sousep . 1 = 'non'"+POIVIR
texte=texte+'*\n'
texte=texte+'* FIN PARAMETRES UTILISATEUR \n'
- texte=texte+'opti donn '
- texte=texte+"'"+loc_datg+'ascouf_ssep_mono_v1.datg'+"'"+POIVIR
+ texte = texte + open(os.path.join(loc_datg, 'ascouf_ssep_mono_v1.datg'), 'r').read()
fdgib=open(nomFichierDATG,'w')
fdgib.write(texte)
fdgib.close()
texte=texte+'axisym = table '+POIVIR
texte=texte+'sousep = table '+POIVIR
texte=texte+'* \n'
- texte=texte+'opti donn '
- texte=texte+"'"+loc_datg+'ascouf_ssep_mult_v1.datg'+"';\n"
+ texte = texte + open(os.path.join(loc_datg, 'ascouf_ssep_mult_v1.datg'), 'r').read()
fdgib=open(nomFichierDATG,'w')
fdgib.write(texte)
fdgib.close()
texte=texte+'nzgv = '+str(NZGV) +POIVIR
texte=texte+'*\n'
texte=texte+'* FIN PARAMETRES UTILISATEUR\n'
- texte=texte+'opti donn '
- texte=texte+"'"+loc_datg+'ascouf_regl_v1.datg'+"';\n"
+ texte = texte + open(os.path.join(loc_datg, 'ascouf_regl_v1.datg'), 'r').read()
fdgib=open(nomFichierDATG,'w')
fdgib.write(texte)
fdgib.close()
else:
NBTRAN = 1
if COUDE['SYME']!='ENTIER':
- print ' <MACR_ASCOUF_MAIL> les quart et demi structure'
- print ' <MACR_ASCOUF_MAIL> ne peuvent etre realisees '
- print ' <MACR_ASCOUF_MAIL> sur un modele comportant une transition '
- print ' <MACR_ASCOUF_MAIL> d epaisseur '
- self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
- ier = ier+1
- return ier
+ message= ' les quart et demi structure \n'
+ message=message+' ne peuvent etre realisees \n'
+ message=message+' sur un modele comportant une transition \n'
+ message=message+' d epaisseur \n'
+ UTMESS('F', "MACR_ASCOUF_MAIL", message)
#
DEXT = COUDE['DEXT_T1']
EP1 = COUDE['EPAIS_T1']
E = EP1
#
if COUDE['SYME']!='ENTIER' and (LTCHAR!=LTCLIM) :
- print ' <MACR_ASCOUF_MAIL> les deux embouts doivent etre'
- print ' <MACR_ASCOUF_MAIL> de meme longueur pour les cas de symetrie '
- self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
- ier = ier+1
- return ier
+ message= ' les deux embouts doivent etre \n'
+ message=message+' de meme longueur pour les cas de symetrie \n'
+ UTMESS('F', "MACR_ASCOUF_MAIL", message)
#
LAMOR = 3.0/2.0 * sqrt( RM*RM*RM / EP1)
if LTCHAR<LAMOR :
- print ' <MACR_ASCOUF_MAIL> longueur d embout P1 inferieure'
- print ' <MACR_ASCOUF_MAIL> a la longueur d amortissement = ',LAMOR
- print ' <A> <MACR_ASCOUF_MAIL> alarme'
+ message= ' longueur d embout P1 inferieure \n'
+ message=message+' a la longueur d amortissement = %.2f \n'%LAMOR
+ UTMESS('A', "MACR_ASCOUF_MAIL", message)
#
LAMOR = 3.0/2.0 * sqrt( RM2*RM2*RM2 / EP2)
if LTCLIM<LAMOR :
- print ' <MACR_ASCOUF_MAIL> longueur d embout P2 inferieure'
- print ' <MACR_ASCOUF_MAIL> a la longueur d amortissement = ',LAMOR
- print ' <A> <MACR_ASCOUF_MAIL> alarme'
+ message= ' longueur d embout P2 inferieure \n'
+ message=message+' a la longueur d amortissement = %.2f \n'%LAMOR
+ UTMESS('A', "MACR_ASCOUF_MAIL", message)
#
if TYPBOL!=None:
if TYPBOL[:1]=='GV' :
- print ' <MACR_ASCOUF_MAIL> la condition aux limites raccord'
- print ' <MACR_ASCOUF_MAIL> 3d-poutre appliquee avec la macro de calcul'
- print ' <MACR_ASCOUF_MAIL> ascouf n est pas licite avec un embout'
- print ' <MACR_ASCOUF_MAIL> de type conique'
- print ' <A> <MACR_ASCOUF_MAIL> alarme'
+ message= ' la condition aux limites raccord \n'
+ message=message+' 3d-poutre appliquee avec la macro de calcul \n '
+ message=message+' ascouf n est pas licite avec un embout \n'
+ message=message+' de type conique \n'
+ UTMESS('A', "MACR_ASCOUF_MAIL", message)
#
################################################################################
# --- caracteristiques de la fissure ---
#
if FISS_COUDE!=None:
if NBEP!=3:
- print ' <MACR_ASCOUF_MAIL> le nombre d elements dans l epaisseur'
- print ' <MACR_ASCOUF_MAIL> du coude n est pas parametrable pour'
- print ' <MACR_ASCOUF_MAIL> un coude avec fissure'
- print ' <MACR_ASCOUF_MAIL> mot-cle NB_ELEM_EPAIS ignore'
- print ' <A> <MACR_ASCOUF_MAIL> alarme'
+ message= ' le nombre d elements dans l epaisseur \n'
+ message=message+' du coude n est pas parametrable pour \n'
+ message=message+' un coude avec fissure \n'
+ message=message+' mot-cle NB_ELEM_EPAIS ignore \n'
+ UTMESS('A', "MACR_ASCOUF_MAIL", message)
FPROF = FISS_COUDE['PROFONDEUR']
FAXI = FISS_COUDE['AXIS']
if FAXI=='NON' and FISS_COUDE['LONGUEUR']==None :
- print ' <MACR_ASCOUF_MAIL> pour les fissures non axisymetriques'
- print ' <MACR_ASCOUF_MAIL> la longueur doit etre specifiee '
- self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
- ier = ier+1
- return ier
+ message= ' pour les fissures non axisymetriques \n'
+ message=message+' la longueur doit etre specifiee \n'
+ UTMESS('F', "MACR_ASCOUF_MAIL", message)
if FAXI=='OUI' and FISS_COUDE['LONGUEUR']!=None :
- print ' <MACR_ASCOUF_MAIL> la fissure est axisymetrique : on ne'
- print ' <MACR_ASCOUF_MAIL> tient pas compte de la longueur specifiee'
- print ' <A> <MACR_ASCOUF_MAIL> alarme'
+ message= ' la fissure est axisymetrique : on ne \n'
+ message=message+' tient pas compte de la longueur specifiee \n'
+ UTMESS('A', "MACR_ASCOUF_MAIL", message)
if FISS_COUDE['LONGUEUR']!=None : FLONG = FISS_COUDE['LONGUEUR']
if FAXI=='OUI' :
#### on prend une marge de securite a cause des modifs dans ascfis
DGAXEC = FLONG/2.0
DC = DGAXEC
if ORIEN!=90.0 and NBTRAN!=0 :
- print ' <MACR_ASCOUF_MAIL> avec une transition d epaisseur'
- print ' <MACR_ASCOUF_MAIL> la fissure doit obligatoirement etre transverse '
- self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
- ier = ier+1
- return ier
+ message= ' avec une transition d epaisseur \n'
+ message=message+' la fissure doit obligatoirement etre transverse \n'
+ UTMESS('F', "MACR_ASCOUF_MAIL", message)
if ORIEN!=90.0 and NBTRAN!=0 :
- print ' <MACR_ASCOUF_MAIL> avec une transition d epaisseur'
- print ' <MACR_ASCOUF_MAIL> la fissure doit obligatoirement etre transverse '
- self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
- ier = ier+1
- return ier
+ message= ' avec une transition d epaisseur \n'
+ message=message+' la fissure doit obligatoirement etre transverse \n'
+ UTMESS('F', "MACR_ASCOUF_MAIL", message)
if ORIEN!=90.0 and COUDE['SYME']!='ENTIER' :
- print ' <MACR_ASCOUF_MAIL> l orientation de la fissure doit'
- print ' <MACR_ASCOUF_MAIL> etre transverse (orien : 90.) pour modeliser '
- print ' <MACR_ASCOUF_MAIL> un quart ou une demi structure '
- self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
- ier = ier+1
- return ier
+ message= ' l orientation de la fissure doit \n'
+ message=message+' etre transverse (orien : 90.) pour modeliser \n'
+ message=message+' un quart ou une demi structure \n'
+ UTMESS('F', "MACR_ASCOUF_MAIL", message)
if ORIEN!=90.0 and FAXI=='OUI' :
- print ' <MACR_ASCOUF_MAIL> la fissure est axisymetrique : son'
- print ' <MACR_ASCOUF_MAIL> orientation doit etre transverse (ORIEN : 90.)'
- self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
- ier = ier+1
- return ier
+ message= ' la fissure est axisymetrique : son \n'
+ message=message+' orientation doit etre transverse (ORIEN : 90.) \n'
+ UTMESS('F', "MACR_ASCOUF_MAIL", message)
#
################################################################################
# --- caracteristiques des sous epaisseurs ---
if SOUS_EPAIS_MULTI!=None : MCL_SOUS_EPAIS = SOUS_EPAIS_MULTI
if SOUS_EPAIS_COUDE!=None : MCL_SOUS_EPAIS = SOUS_EPAIS_COUDE
if SOUS_EPAIS_MULTI!=None and NBTRAN!=0 :
- print ' <MACR_ASCOUF_MAIL> il ne peut pas y avoir plusieurs'
- print ' <MACR_ASCOUF_MAIL> sous-epaisseurs en meme temps qu une'
- print ' <MACR_ASCOUF_MAIL> transition d epaisseur : si une seule'
- print ' <MACR_ASCOUF_MAIL> sous-epaisseur utiliser sous_epais_coude'
- self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
- ier = ier+1
- return ier
+ message= ' il ne peut pas y avoir plusieurs \n'
+ message=message+' sous-epaisseurs en meme temps qu une \n'
+ message=message+' transition d epaisseur : si une seule \n'
+ message=message+' sous-epaisseur utiliser sous_epais_coude \n'
+ UTMESS('F', "MACR_ASCOUF_MAIL", message)
if SOUS_EPAIS_COUDE!=None and FISS_COUDE!=None and NBTRAN!=0 :
- print ' <MACR_ASCOUF_MAIL> avec une transition d epaisseur'
- print ' <MACR_ASCOUF_MAIL> il doit obligatoirement y avoir un defaut'
- print ' <MACR_ASCOUF_MAIL> soit une fissure soit une sous-epaisseur'
- self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
- ier = ier+1
- return ier
+ message= ' avec une transition d epaisseur'
+ message=message+' il doit obligatoirement y avoir un defaut \n'
+ message=message+' soit une fissure soit une sous-epaisseur \n'
+ UTMESS('F', "MACR_ASCOUF_MAIL", message)
if MCL_SOUS_EPAIS!=None :
AZIM = 90.0
if MCL_SOUS_EPAIS.__class__.__name__ !='MCList' : MCL_SOUS_EPAIS=[MCL_SOUS_EPAIS,]
if len(MCL_SOUS_EPAIS)!=1 and COUDE['SYME']!='ENTIER' :
- print ' <MACR_ASCOUF_MAIL> ne modeliser qu une seule'
- print ' <MACR_ASCOUF_MAIL> sous-epaisseur pour un quart ou demi-coude'
- self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
- ier = ier+1
- return ier
+ message= ' ne modeliser qu une seule \n'
+ message=message+' sous-epaisseur pour un quart ou demi-coude\n '
+ UTMESS('F', "MACR_ASCOUF_MAIL", message)
for ssep in MCL_SOUS_EPAIS :
isep=isep+1
if ssep['AXE_CIRC']!=None and ssep['TYPE']=='AXIS' :
- print ' <MACR_ASCOUF_MAIL> vous ne pouvez declarer la sous-'
- print ' <MACR_ASCOUF_MAIL> epaisseur comme axisymetrique et donner'
- print ' <MACR_ASCOUF_MAIL> une taille d axe circonferentiel'
- self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
- ier = ier+1
- return ier
+ message= ' vous ne pouvez declarer la sous- \n'
+ message=message+' epaisseur comme axisymetrique et donner \n'
+ message=message+' une taille d axe circonferentiel \n'
+ UTMESS('F', "MACR_ASCOUF_MAIL", message)
if ssep['AXE_CIRC']==None and ssep['TYPE']=='ELLI' :
- print ' <MACR_ASCOUF_MAIL> vous devez donner une taille d axe'
- print ' <MACR_ASCOUF_MAIL> circonferentiel pour une sous-epaisseur de'
- print ' <MACR_ASCOUF_MAIL> type elliptique'
- self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
- ier = ier+1
- return ier
+ message= ' vous devez donner une taille d axe \n'
+ message=message+' circonferentiel pour une sous-epaisseur de \n'
+ message=message+' type elliptique \n'
+ UTMESS('F', "MACR_ASCOUF_MAIL", message)
if ssep['POSI_CURV_LONGI']!=None:
if ssep['POSI_CURV_LONGI']>(ALPHA*RC*pi/180.0) :
- print ' <MACR_ASCOUF_MAIL> valeur hors domaine de validite'
- print ' <MACR_ASCOUF_MAIL> sous-epaisseur numero :',isep
- print ' <MACR_ASCOUF_MAIL> abscisse curv. longit. :',ssep['POSI_CURV_LONGI']
- print ' <MACR_ASCOUF_MAIL> valeur maximale autorisee :',(ALPHA*RC*pi/180.0)
- self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
- ier = ier+1
- return ier
+ message= ' valeur hors domaine de validite \n'
+ message=message+' sous-epaisseur numero : %d \n'%isep
+ message=message+' abscisse curv. longit. : %.2f \n'%ssep['POSI_CURV_LONGI']
+ message=message+' valeur maximale autorisee : %.2f \n'%(ALPHA*RC*pi/180.0)
+ UTMESS('F', "MACR_ASCOUF_MAIL", message)
LDEFAU = ssep['POSI_CURV_LONGI'] + ssep['AXE_LONGI']/2.0
BETA = 0.0
else:
BETA=ssep['POSI_ANGUL']
if (BETA<0.) or (BETA>ALPHA) :
- print ' <MACR_ASCOUF_MAIL> valeur hors domaine de validite'
- print ' <MACR_ASCOUF_MAIL> sous-epaisseur numero :',isep
- print ' <MACR_ASCOUF_MAIL> position angulaire centre sous-ep :',BETA
- print ' <MACR_ASCOUF_MAIL> valeur limite autorisee :',ALPHA
- self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
- ier = ier+1
- return ier
+ message= ' valeur hors domaine de validite \n'
+ message=message+' sous-epaisseur numero : %d \n'%isep
+ message=message+' position angulaire centre sous-ep : %.2f \n'%BETA
+ message=message+' valeur limite autorisee : %.2f \n'%ALPHA
+ UTMESS('F', "MACR_ASCOUF_MAIL", message)
LDEFAU = (BETA*RC*pi/180.0) + ssep['AXE_LONGI']/2.0
#
if ssep['POSI_CURV_CIRC']!=None:
if ssep['POSI_CURV_CIRC']>(2*pi*RM) :
- print ' <MACR_ASCOUF_MAIL> valeur hors domaine de validite'
- print ' <MACR_ASCOUF_MAIL> sous-epaisseur numero :',isep
- print ' <MACR_ASCOUF_MAIL> abscisse curv. circonf. :',ssep['POSI_CURV_CIRC']
- print ' <MACR_ASCOUF_MAIL> valeur maximale autorisee :',(2*pi*RM)
- self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
- ier = ier+1
- return ier
+ message= ' valeur hors domaine de validite \n'
+ message=message+' sous-epaisseur numero : %d \n'%isep
+ message=message+' abscisse curv. circonf. : %.2f \n'%ssep['POSI_CURV_CIRC']
+ message=message+' valeur limite autorisee : %.2f \n'%(2*pi*RM)
+ UTMESS('F', "MACR_ASCOUF_MAIL", message)
if ssep['POSI_CURV_CIRC']!=(pi*RM) and ssep['TYPE']=='AXIS':
- print ' <MACR_ASCOUF_MAIL> le centre d une sous-epaisseur'
- print ' <MACR_ASCOUF_MAIL> axisymetrique est impose en intrados (pi*RM)'
- self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
- ier = ier+1
- return ier
+ message= ' le centre d une sous-epaisseur \n'
+ message=message+' axisymetrique est impose en intrados (pi*RM) \n'
+ UTMESS('F', "MACR_ASCOUF_MAIL", message)
else:
ssep.IPHIC=ssep['AZIMUT']
if ssep['AZIMUT']!=180. and ssep['TYPE']=='AXIS':
- print ' <MACR_ASCOUF_MAIL> le centre d une sous-epaisseur'
- print ' <MACR_ASCOUF_MAIL> axisymetrique est impose en intrados'
- print ' <MACR_ASCOUF_MAIL> l azimut est fixe a 180 degres'
- self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
- ier = ier+1
- return ier
+ message= ' le centre d une sous-epaisseur \n'
+ message=message+' axisymetrique est impose en intrados \n'
+ message=message+' l azimut est fixe a 180 degres \n'
+ UTMESS('F', "MACR_ASCOUF_MAIL", message)
# l_ITYPE.append(ssep['TYPE' ])
# l_ICIRC.append(ssep['AXE_CIRC' ])
# l_ILONC.append(ssep['AXE_LONGI' ])
# l_IEVID.append(ssep['EMPREINTE' ])
if SOUS_EPAIS_COUDE!=None and COUDE['NB_ELEM_EPAIS']!=3 :
- print ' <MACR_ASCOUF_MAIL> le nombre d elements dans l'
- print ' <MACR_ASCOUF_MAIL> epaisseur du coude n est pas parametrable pour'
- print ' <MACR_ASCOUF_MAIL> la version 2 de la procedure de plaque avec sous'
- print ' <MACR_ASCOUF_MAIL> -epaisseur : mot-cle NB_ELEM_EPAIS ignore'
- print ' <A> <MACR_ASCOUF_MAIL> alarme'
+ message= ' le nombre d elements dans l \n'
+ message=message+' epaisseur du coude n est pas parametrable pour \n'
+ message=message+' la version 2 de la procedure de plaque avec sous \n'
+ message=message+' -epaisseur : mot-cle NB_ELEM_EPAIS ignore \n'
+ UTMESS('A', "MACR_ASCOUF_MAIL", message)
#
################################################################################
# --- verifications de coherences ---
# donnees globales
if COUDE['TRANSFORMEE']=='COUDE' or COUDE['TRAN_EPAIS']=='NON' :
if SUREP<0. or SUREP>(RM-EP1/2.0):
- print ' <MACR_ASCOUF_MAIL> valeur hors domaine de validite'
- print ' <MACR_ASCOUF_MAIL> surepaisseur :',SUREP
- print ' <MACR_ASCOUF_MAIL> valeur limite autorisee (RM-EP1/2) :',(RM-EP1/2.0)
- self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
- ier = ier+1
- return ier
+ message= ' valeur hors domaine de validite \n'
+ message=message+' surepaisseur : \n',SUREP
+ message=message+' valeur limite autorisee (RM-EP1/2) : %.2f \n'%(RM-EP1/2.0)
+ UTMESS('F', "MACR_ASCOUF_MAIL", message)
if RC<=(RM+EP1/2.0):
- print ' <MACR_ASCOUF_MAIL> valeur hors domaine de validite'
- print ' <MACR_ASCOUF_MAIL> le rayon de cintrage :',RC
- print ' <MACR_ASCOUF_MAIL> doit etre superieur a (RM+EP1/2) :',(RM+EP1/2.0)
- self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
- ier = ier+1
- return ier
+ message= ' valeur hors domaine de validite \n'
+ message=message+' le rayon de cintrage : %.2f \n',RC
+ message=message+' doit etre superieur a (RM+EP1/2) : %.2f \n'%(RM+EP1/2.0)
+ UTMESS('F', "MACR_ASCOUF_MAIL", message)
#
# coude fissure
#
if FISS_COUDE!=None:
if (RM/EP1)<5. or (RM/EP1)>50.:
- print ' <MACR_ASCOUF_MAIL> valeur hors domaine de validite (5,50)'
- print ' <MACR_ASCOUF_MAIL> rapport RM/EP1 :',(RM/EP1)
- self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
- ier = ier+1
- return ier
+ message= ' valeur hors domaine de validite (5,50) \n'
+ message=message+' rapport RM/EP1 : %.2f \n'%(RM/EP1)
+ UTMESS('F', "MACR_ASCOUF_MAIL", message)
if FISS_COUDE['ABSC_CURV']!=None:
if SF<0. or SF>(ALPHA*RC*pi/180.0) :
- print ' <MACR_ASCOUF_MAIL> valeur hors domaine de validite'
- print ' <MACR_ASCOUF_MAIL> abscisse curviligne centre fissure :',SF
- print ' <MACR_ASCOUF_MAIL> valeur limite autorisee :',(ALPHA*RC*pi/180.0)
- self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
- ier = ier+1
- return ier
+ message= ' valeur hors domaine de validite \n'
+ message=message+' abscisse curviligne centre fissure : %.2f \n'%SF
+ message=message+' valeur limite autorisee : %.2f \n'%(ALPHA*RC*pi/180.0)
+ UTMESS('F', "MACR_ASCOUF_MAIL", message)
if (NT-2*(NT/2))!=0:
- print ' <MACR_ASCOUF_MAIL> valeur hors domaine de validite'
- print ' <MACR_ASCOUF_MAIL> nombre de tranches :',NT
- self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
- ier = ier+1
- return ier
+ message= ' valeur hors domaine de validite \n'
+ message=message+' nombre de tranches : %d \n'%NT
+ UTMESS('F', "MACR_ASCOUF_MAIL", message)
if FISS_COUDE['ABSC_CURV'] and ((BETA<0.) or (BETA>ALPHA)):
- print ' <MACR_ASCOUF_MAIL> valeur hors domaine de validite'
- print ' <MACR_ASCOUF_MAIL> position angulaire centre fissure :',BETA
- print ' <MACR_ASCOUF_MAIL> posi_angul doit etre >= 0 et <= ',ALPHA
- self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
- ier = ier+1
- return ier
+ message= ' valeur hors domaine de validite \n'
+ message=message+' position angulaire centre fissure : %.2f \n'%BETA
+ message=message+' posi_angul doit etre >= 0 et <= %.2f \n'%ALPHA
+ UTMESS('F', "MACR_ASCOUF_MAIL", message)
#
# transition d epaisseur
#
LCOUDE = ALPHA * RC * pi / 180.0
DEXT = 2.0*RM + EP1
if (LTRAN<LDEFAU) and (LTRAN>LCOUDE) :
- print ' <MACR_ASCOUF_MAIL> valeur hors domaine de validite'
- print ' <MACR_ASCOUF_MAIL> debut transition d epaisseur :',LTRAN
- print ' <MACR_ASCOUF_MAIL> valeur minimale autorisee :',LDEFAU
- print ' <MACR_ASCOUF_MAIL> valeur maximale autorisee :',LCOUDE
- self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
- ier = ier+1
- return ier
+ message= ' valeur hors domaine de validite \n'
+ message=message+' debut transition d epaisseur : %.2f \n'%LTRAN
+ message=message+' valeur minimale autorisee : %.2f \n'%LDEFAU
+ message=message+' valeur maximale autorisee : %.2f \n'%LCOUDE
+ UTMESS('F', "MACR_ASCOUF_MAIL", message)
if (TETA1<0.) or (TETA1>30.) :
- print ' <MACR_ASCOUF_MAIL> valeur hors domaine de validite'
- print ' <MACR_ASCOUF_MAIL> angle de transition TETA1 :',TETA1
- print ' <MACR_ASCOUF_MAIL> valeur minimale autorisee :',0.
- print ' <MACR_ASCOUF_MAIL> valeur maximale autorisee :',30.
- self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
- ier = ier+1
- return ier
+ message= ' valeur hors domaine de validite \n'
+ message=message+' angle de transition TETA1 : %.2f \n'%TETA1
+ message=message+' valeur minimale autorisee : %.2f \n'%0.
+ message=message+' valeur maximale autorisee : %.2f \n'%30.
+ UTMESS('F', "MACR_ASCOUF_MAIL", message)
#
# transition d epaisseur a une pente
#
if NBTRAN==1:
if (EP1<12.) or (EP1>80.) :
- print ' <MACR_ASCOUF_MAIL> valeur hors domaine de validite'
- print ' <MACR_ASCOUF_MAIL> epaisseur avant la transition :',EP1
- print ' <MACR_ASCOUF_MAIL> valeur minimale autorisee :',12.
- print ' <MACR_ASCOUF_MAIL> valeur maximale autorisee :',80.
- self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
- ier = ier+1
- return ier
+ message= ' valeur hors domaine de validite \n'
+ message=message+' epaisseur avant la transition : %.2f \n'%EP1
+ message=message+' valeur minimale autorisee : %.2f \n'%12.
+ message=message+' valeur maximale autorisee : %.2f \n'%80.
+ UTMESS('F', "MACR_ASCOUF_MAIL", message)
if (EP2<20.) or (EP2>110.) :
- print ' <MACR_ASCOUF_MAIL> valeur hors domaine de validite'
- print ' <MACR_ASCOUF_MAIL> epaisseur apres la transition :',EP2
- print ' <MACR_ASCOUF_MAIL> valeur minimale autorisee :',20.
- print ' <MACR_ASCOUF_MAIL> valeur maximale autorisee :',110.
- self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
- ier = ier+1
- return ier
+ message= ' valeur hors domaine de validite \n'
+ message=message+' epaisseur apres la transition : %.2f \n'%EP2
+ message=message+' valeur minimale autorisee : %.2f \n'%20.
+ message=message+' valeur maximale autorisee : %.2f \n'%110.
+ UTMESS('F', "MACR_ASCOUF_MAIL", message)
if (EP1>EP2) :
- print ' <MACR_ASCOUF_MAIL> l epaisseur avant la transition'
- print ' <MACR_ASCOUF_MAIL> doit etre inferieure '
- print ' <MACR_ASCOUF_MAIL> a celle apres la transition'
- self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
- ier = ier+1
- return ier
+ message= ' l epaisseur avant la transition \n'
+ message=message+' doit etre inferieure \n'
+ message=message+' a celle apres la transition \n'
+ UTMESS('F', "MACR_ASCOUF_MAIL", message)
LTRANF = LTRAN + ((EP2-EP1)/(tan(TETA1)))
if (LTRANF>LCOUDE) :
- print ' <MACR_ASCOUF_MAIL> valeur hors domaine de validite'
- print ' <MACR_ASCOUF_MAIL> fin transition d epaisseur :',LTRANF
- print ' <MACR_ASCOUF_MAIL> valeur limite autorisee :',LCOUDE
- self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
- ier = ier+1
- return ier
+ message= ' valeur hors domaine de validite \n'
+ message=message+' fin transition d epaisseur : %.2f \n'%LTRANF
+ message=message+' valeur limite autorisee : %.2f \n'%LCOUDE
+ UTMESS('F', "MACR_ASCOUF_MAIL", message)
if DEXT<112. or DEXT>880. :
- print ' <MACR_ASCOUF_MAIL> valeur hors domaine de validite'
- print ' <MACR_ASCOUF_MAIL> diam ext du tube avant transition:',DEXT
- print ' <MACR_ASCOUF_MAIL> valeur minimum autorisee :',112.
- print ' <MACR_ASCOUF_MAIL> valeur maximum autorisee :',880.
- self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
- ier = ier+1
- return ier
+ message= ' valeur hors domaine de validite\n'
+ message=message+' diam ext du tube avant transition: %.2f \n'%DEXT
+ message=message+' valeur minimum autorisee : %.2f \n'%112.
+ message=message+' valeur maximum autorisee : %.2f \n'%880.
+ UTMESS('F', "MACR_ASCOUF_MAIL", message)
#
# transition d epaisseur a une pente
#
else:
if (TETA2<0.) or (TETA2>45.) :
- print ' <MACR_ASCOUF_MAIL> valeur hors domaine de validite'
- print ' <MACR_ASCOUF_MAIL> angle de transition TETA2 :',TETA2
- print ' <MACR_ASCOUF_MAIL> valeur minimale autorisee :',0.
- print ' <MACR_ASCOUF_MAIL> valeur maximale autorisee :',45.
- self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
- ier = ier+1
- return ier
+ message= ' valeur hors domaine de validite\n'
+ message=message+' angle de transition TETA2: %.2f \n'%TETA2
+ message=message+' valeur minimum autorisee : %.2f \n'%0.
+ message=message+' valeur maximum autorisee : %.2f \n'%45.
+ UTMESS('F', "MACR_ASCOUF_MAIL", message)
if (EP1<7.) or (EP1>35.) :
- print ' <MACR_ASCOUF_MAIL> valeur hors domaine de validite'
- print ' <MACR_ASCOUF_MAIL> epaisseur avant 1ere transition :',EP1
- print ' <MACR_ASCOUF_MAIL> valeur minimale autorisee :',7.
- print ' <MACR_ASCOUF_MAIL> valeur maximale autorisee :',35.
- self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
- ier = ier+1
- return ier
+ message= ' valeur hors domaine de validite\n'
+ message=message+' epaisseur avant 1ere transition: %.2f \n'%EP1
+ message=message+' valeur minimum autorisee : %.2f \n'%7.
+ message=message+' valeur maximum autorisee : %.2f \n'%35.
+ UTMESS('F', "MACR_ASCOUF_MAIL", message)
if (EP2<15.) or (EP2>40.) :
- print ' <MACR_ASCOUF_MAIL> valeur hors domaine de validite'
- print ' <MACR_ASCOUF_MAIL> epaisseur avant 2eme transition :',EP2
- print ' <MACR_ASCOUF_MAIL> valeur minimale autorisee :',15.
- print ' <MACR_ASCOUF_MAIL> valeur maximale autorisee :',40.
- self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
- ier = ier+1
- return ier
+ message= ' valeur hors domaine de validite\n'
+ message=message+' epaisseur avant 2eme transition: %.2f \n'%EP2
+ message=message+' valeur minimum autorisee : %.2f \n'%15.
+ message=message+' valeur maximum autorisee : %.2f \n'%40.
+ UTMESS('F', "MACR_ASCOUF_MAIL", message)
if (EPI<15.) or (EPI>40.) :
- print ' <MACR_ASCOUF_MAIL> valeur hors domaine de validite'
- print ' <MACR_ASCOUF_MAIL> epaisseur intermediaire :',EPI
- print ' <MACR_ASCOUF_MAIL> valeur minimale autorisee :',15.
- print ' <MACR_ASCOUF_MAIL> valeur maximale autorisee :',40.
- self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
- ier = ier+1
- return ier
+ message= ' valeur hors domaine de validite\n'
+ message=message+' epaisseur intermediaire: %.2f \n'%EPI
+ message=message+' valeur minimum autorisee : %.2f \n'%15.
+ message=message+' valeur maximum autorisee : %.2f \n'%40.
+ UTMESS('F', "MACR_ASCOUF_MAIL", message)
if (EP1>EPI) :
- print ' <MACR_ASCOUF_MAIL> valeur hors domaine de validite'
- print ' <MACR_ASCOUF_MAIL> l epaisseur avant la transition'
- print ' <MACR_ASCOUF_MAIL> doit etre inferieure a l epaisseur intermediaire'
- self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
- ier = ier+1
- return ier
+ message= ' valeur hors domaine de validite\n'
+ message=message+' l epaisseur avant la transition \n'
+ message=message+' doit etre inferieure a l epaisseur intermediaire \n'
+ UTMESS('F', "MACR_ASCOUF_MAIL", message)
if (EP2<EPI) :
- print ' <MACR_ASCOUF_MAIL> valeur hors domaine de validite'
- print ' <MACR_ASCOUF_MAIL> l epaisseur apres la transition'
- print ' <MACR_ASCOUF_MAIL> doit etre inferieure a l epaisseur intermediaire'
- self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
- ier = ier+1
- return ier
+ message= ' valeur hors domaine de validite\n'
+ message=message+' l epaisseur apres la transition \n'
+ message=message+' doit etre inferieure a l epaisseur intermediaire \n'
+ UTMESS('F', "MACR_ASCOUF_MAIL", message)
LTRANF = LTRAN + (EPI-EP1)/(tan(TETA1))
LTRANF = LTRANF + (EP2-EPI)/(tan(TETA2))
if (LTRANF>LCOUDE) :
- print ' <MACR_ASCOUF_MAIL> valeur hors domaine de validite'
- print ' <MACR_ASCOUF_MAIL> fin transition d epaisseur :',LTRANF
- print ' <MACR_ASCOUF_MAIL> valeur limite autorisee :',LCOUDE
- self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
- ier = ier+1
- return ier
+ message= ' valeur hors domaine de validite\n'
+ message=message+' fin transition d epaisseur: %.2f \n'%LTRANF
+ message=message+' valeur limite autorisee : %.2f \n'%LCOUDE
+ UTMESS('F', "MACR_ASCOUF_MAIL", message)
if (DEXT<77.) or (DEXT>355.) :
- print ' <MACR_ASCOUF_MAIL> valeur hors domaine de validite'
- print ' <MACR_ASCOUF_MAIL> diam ext du tube avant transition:',LTRANF
- print ' <MACR_ASCOUF_MAIL> valeur minimale autorisee :',77.
- print ' <MACR_ASCOUF_MAIL> valeur maximale autorisee :',355.
- self.cr.fatal("<F> <MACR_ASCOUF_MAIL> erreur donnees ")
- ier = ier+1
- return ier
+ message= ' valeur hors domaine de validite\n'
+ message=message+' diam ext du tube avant transition: %.2f \n'%LTRANF
+ message=message+' valeur minimum autorisee : %.2f \n'%77.
+ message=message+' valeur maximum autorisee : %.2f \n'%355.
+ UTMESS('F', "MACR_ASCOUF_MAIL", message)
#
################################################################################
# --- calcul taille initiale des defauts sur la plaque ---
if logiel=='GIBI98' : logiel = loc_gibi+'gibi98'
elif logiel=='GIBI2000': logiel = loc_gibi+'gibi2000'
else :
- self.cr.fatal("<F> <MACR_ASCOUF_MAIL> seuls gibi98 et gibi2000 sont appelableS")
- ier = ier+1
- return ier
+ UTMESS('F', "MACR_ASCOUF_MAIL", "seuls gibi98 et gibi2000 sont appelables")
#
# --- ecriture sur le fichier .datg de la procedure ---
#
-#@ MODIF macr_aspic_calc_ops Macro DATE 08/02/2005 AUTEUR CIBHHLV L.VIVAN
+#@ MODIF macr_aspic_calc_ops Macro DATE 09/05/2006 AUTEUR REZETTE C.REZETTE
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
FOND_FISS_1,FOND_FISS_2,CHARGE,RESU_THER,AFFE_MATERIAU,EQUILIBRE,
PRES_REP,ECHANGE,TORS_CORP,TORS_TUBU,COMP_INCR,COMP_ELAS,
THETA_3D,OPTION,SOLVEUR,CONVERGENCE,NEWTON,RECH_LINEAIRE,
- INCREMENT,PAS_AZIMUT,IMPRESSION,INFO,TITRE ,**args):
+ INCREMENT,PAS_AZIMUT,IMPRESSION,INFO,TITRE,BORNES ,**args):
"""
Ecriture de la macro MACR_ASPIC_CALC
"""
from Accas import _F
import types
+ from Utilitai.Utmess import UTMESS
ier=0
#------------------------------------------------------------------
# On recopie le mot cle affe_materiau pour le proteger
POST_RCCM =self.get_cmd('POST_RCCM' )
DEFI_FOND_FISS =self.get_cmd('DEFI_FOND_FISS' )
CALC_THETA =self.get_cmd('CALC_THETA' )
- CALC_G_THETA_T =self.get_cmd('CALC_G_THETA_T' )
- CALC_G_LOCAL_T =self.get_cmd('CALC_G_LOCAL_T' )
+ CALC_G =self.get_cmd('CALC_G' )
IMPR_RESU =self.get_cmd('IMPR_RESU' )
# La macro compte pour 1 dans la numerotation des commandes
i=i+1
MRCCM=mate['MATER']
if i>1 :
- ier=ier+1
- self.cr.fatal("""<E> <MACR_ASPIC_CALC> vous affectez plus d un materiau contenant l option rccm""")
- return ier
+ UTMESS('E', "MACR_ASPIC_CALC", "vous affectez plus d un materiau contenant l option rccm")
#
if (TYPE_MAILLAGE[:4]=='SAIN') and (TUBULURE==None) :
- ier=ier+1
- self.cr.fatal("""<E> <MACR_ASPIC_CALC> pour les piquages sains, TUBULURE doit etre renseigne""")
- return ier
+ UTMESS('E', "MACR_ASPIC_CALC", "pour les piquages sains, TUBULURE doit etre renseigne")
#
if EQUILIBRE['NOEUD'] not in ('P1_CORP','P2_CORP') :
- ier=ier+1
- self.cr.fatal("""<E> <MACR_ASPIC_CALC> EQUILIBRE[NOEUD] : on attend 'P1_CORP ' ou 'P2_CORP'""")
- return ier
+ UTMESS('E', "MACR_ASPIC_CALC", "EQUILIBRE[NOEUD] : on attend P1_CORP ou P2_CORP")
#
if PRES_REP['EFFE_FOND']=='OUI' :
if PRES_REP['NOEUD']==None :
- ier=ier+1
- self.cr.fatal("""<E> <MACR_ASPIC_CALC> il faut preciser un noeud pour EFFE_FOND""")
- return ier
+ UTMESS('E', "MACR_ASPIC_CALC", "il faut preciser un noeud pour EFFE_FOND")
if PRES_REP['NOEUD'] not in ('P1_CORP','P2_CORP') :
- ier=ier+1
- self.cr.fatal("""<E> <MACR_ASPIC_CALC> PRES_REP[NOEUD] : on attend 'P1_CORP' ou 'P2_CORP'""")
- return ier
+ UTMESS('E', "MACR_ASPIC_CALC", "PRES_REP[NOEUD] : on attend P1_CORP ou P2_CORP")
if PRES_REP['NOEUD']==EQUILIBRE['NOEUD'] :
- ier=ier+1
- self.cr.fatal("""<E> <MACR_ASPIC_CALC> on ne peut appliquer un EFFE_FOND sur PRES_REP[NOEUD] car ce noeud est bloque""")
- return ier
+ UTMESS('E', "MACR_ASPIC_CALC", "on ne peut appliquer un EFFE_FOND sur PRES_REP[NOEUD] car ce noeud est bloque")
#
if TORS_CORP!=None :
for tors in TORS_CORP :
if tors['NOEUD'] not in ('P1_CORP','P2_CORP') :
- ier=ier+1
- self.cr.fatal("""<E> <MACR_ASPIC_CALC> TORS_CORP[NOEUD] : on attend 'P1_CORP' ou 'P2_CORP'""")
- return ier
+ UTMESS('E', "MACR_ASPIC_CALC", "TORS_CORP[NOEUD] : on attend P1_CORP ou P2_CORP")
if tors['NOEUD']==EQUILIBRE['NOEUD'] :
- ier=ier+1
- self.cr.fatal("""<E> <MACR_ASPIC_CALC> on ne peut appliquer un torseur sur TORS_CORP[NOEUD] car ce noeud est bloque""")
- return ier
+ UTMESS('E', "MACR_ASPIC_CALC", "on ne peut appliquer un torseur sur TORS_CORP[NOEUD] car ce noeud est bloque")
#
if (TYPE_MAILLAGE[:4]=='SAIN') and (THETA_3D!=None) :
- ier=ier+1
- self.cr.fatal("""<E> <MACR_ASPIC_CALC> si TYPE_MAILLAGE SAIN : mecanique de la rupture impossible""")
- return ier
+ UTMESS('E', "MACR_ASPIC_CALC", "si TYPE_MAILLAGE SAIN : mecanique de la rupture impossible")
#
if OPTION in ('CALC_G_MAX','CALC_G_MAX_LOCAL') :
if BORNES==None :
- ier=ier+1
- self.cr.fatal("""<E> <MACR_ASPIC_CALC> mot-clef <BORNES> obligatoire avec cette option""")
- return ier
+ UTMESS('E', "MACR_ASPIC_CALC", "mot-clef <BORNES> obligatoire avec cette option")
#
if IMPRESSION!=None :
if IMPRESSION['FORMAT'] in ('IDEAS','CASTEM') :
if IMPRESSION['NOM_CHAM']==None :
- ier=ier+1
- self.cr.fatal("""<E> <MACR_ASPIC_CALC> impression de resultats demandée sans preciser le nom des champs
- cf. la documentation utilisateur : U4.PC.20.""")
- return ier
+ UTMESS('E', "MACR_ASPIC_CALC", "impression de resultats demandée sans preciser le nom des champs cf. la documentation utilisateur : U4.PC.20.")
#
#------------------------------------------------------------------
#
AEFOCO = 'EXCORP1'
ATORCO = 'P1_CORP'
LINTC = 'L_INT_C1'
- __conlim = AFFE_CHAR_MECA( MODELE = modele ,
+ _conlim = AFFE_CHAR_MECA( MODELE = modele ,
LIAISON_ELEM = ( _F( OPTION ='3D_POU' ,
GROUP_MA_1='EXCORP1',
GROUP_NO_2='P1_CORP'),
_F(GROUP_MA =AEFOCO,
GROUP_MA_INT=LINTC,
PRES =PRES_REP['PRES']))
- __chpres = AFFE_CHAR_MECA( MODELE = modele ,**motscles)
+ _chpres = AFFE_CHAR_MECA( MODELE = modele ,**motscles)
#
# --- commande AFFE_CHAR_MECA ---
# chargement mecanique : torseur sur le corps
#
if TORS_CORP!=None:
- __chtrc = [None]*6
+ _chtrc = [None]*6
i=0
for tors in TORS_CORP :
mcsimp={}
if tors['MY']!=None : mcsimp['MY']=tors['MY']
if tors['MZ']!=None : mcsimp['MZ']=tors['MZ']
mcfact=_F(GROUP_NO=ATORCO,**mcsimp)
- __chtrc[i] = AFFE_CHAR_MECA( MODELE = modele ,
+ _chtrc[i] = AFFE_CHAR_MECA( MODELE = modele ,
FORCE_NODALE = mcfact , )
i=i+1
#
# chargement mecanique : torseur sur la tubulure
#
if TORS_TUBU!=None:
- __chtrt = [None]*6
+ _chtrt = [None]*6
i=0
for tors in TORS_TUBU :
mcsimp={}
if tors['MY']!=None : mcsimp['MY']=tors['MY']
if tors['MZ']!=None : mcsimp['MZ']=tors['MZ']
mcfact=_F(GROUP_NO='P_TUBU ',**mcsimp)
- __chtrt[i] = AFFE_CHAR_MECA( MODELE = modele ,
+ _chtrt[i] = AFFE_CHAR_MECA( MODELE = modele ,
FORCE_NODALE = mcfact , )
i=i+1
#
motscles={}
#
mcfex=[] # mot clé facteur EXCIT
- mcfex.append(_F(CHARGE=__conlim,))
+ mcfex.append(_F(CHARGE=_conlim,))
if ECHANGE!=None :
mcfex.append(_F(CHARGE=chmeth,))
if PRES_REP['FONC_MULT']!=None :
- mcfex.append(_F(CHARGE=__chpres,FONC_MULT=PRES_REP['FONC_MULT']))
+ mcfex.append(_F(CHARGE=_chpres,FONC_MULT=PRES_REP['FONC_MULT']))
else :
- mcfex.append(_F(CHARGE=__chpres,))
+ mcfex.append(_F(CHARGE=_chpres,))
if TORS_CORP!=None:
i=0
for tors in TORS_CORP :
if tors['FONC_MULT']!=None :
- mcfex.append(_F(CHARGE=__chtrc[i],FONC_MULT=tors['FONC_MULT']))
+ mcfex.append(_F(CHARGE=_chtrc[i],FONC_MULT=tors['FONC_MULT']))
else :
- mcfex.append(_F(CHARGE=__chtrc[i],))
+ mcfex.append(_F(CHARGE=_chtrc[i],))
i=i+1
if TORS_TUBU!=None:
i=0
for tors in TORS_TUBU :
if tors['FONC_MULT']!=None :
- mcfex.append(_F(CHARGE=__chtrt[i],FONC_MULT=tors['FONC_MULT']))
+ mcfex.append(_F(CHARGE=_chtrt[i],FONC_MULT=tors['FONC_MULT']))
else :
- mcfex.append(_F(CHARGE=__chtrt[i],))
+ mcfex.append(_F(CHARGE=_chtrt[i],))
i=i+1
motscles['EXCIT'] =mcfex
#
R_INF = tht3d['R_INF'],
R_SUP = tht3d['R_SUP'], ) )
#
-# --- commande CALC_G_THETA_T ---
+# --- commande CALC_G (3D GLOBAL) ---
#
montit = 'G_THETA AVEC R_INF = '+str(tht3d['R_INF'])+' ET R_SUP = '+str(tht3d['R_SUP'])
motscles={}
if COMP_ELAS!=None: motscles['COMP_ELAS']= _F(TOUT = 'OUI',
RELATION = COMP_ELAS['RELATION'],)
if COMP_INCR!=None: motscles['COMP_INCR']= _F(RELATION = COMP_INCR['RELATION'],)
- print motscles
- __gtheta = CALC_G_THETA_T( MODELE = modele,
- CHAM_MATER = affmat,
- THETA = __theta,
- RESULTAT = nomres,
- TOUT_ORDRE = 'OUI',
- TITRE = montit,**motscles)
+ __gtheta = CALC_G ( MODELE = modele,
+ CHAM_MATER = affmat,
+ THETA = _F(THETA=__theta),
+ OPTION = 'CALC_G_GLOB',
+ RESULTAT = nomres,
+ TOUT_ORDRE = 'OUI',
+ TITRE = montit,**motscles)
IMPR_TABLE(TABLE = __gtheta, )
#
# recherche du g max
mcfact.append(_F( NUME_ORDRE = born['NUME_ORDRE'] ,
VALE_MIN = born['VALE_MIN' ] ,
VALE_MAX = born['VALE_MAX' ] ) )
- __gbil = CALC_G_THETA_T( MODELE = modele,
- CHAM_MATER = affmat,
- THETA = __theta,
- RESULTAT = nomres,
- TOUT_ORDRE = 'OUI',
- COMP_ELAS = _F(TOUT = 'OUI',
- RELATION = COMP_ELAS['RELATION'],),
- TITRE = montit,
- OPTION = OPTION,
- BORNES = mcfact,)
+ __gbil = CALC_G( MODELE = modele,
+ CHAM_MATER = affmat,
+ THETA = _F(THETA=__theta),
+ RESULTAT = nomres,
+ TOUT_ORDRE = 'OUI',
+ COMP_ELAS = _F(TOUT = 'OUI',
+ RELATION = COMP_ELAS['RELATION'],),
+ TITRE = montit,
+ OPTION = 'G_MAX_GLOB',
+ BORNES = mcfact,)
IMPR_TABLE(TABLE = __gbil, )
#
-# --- commande CALC_G_LOCAL_T ---
+# --- commande CALC_G (3D LOCAL) ---
#
montit = 'G_LOCAL AVEC R_INF = '+str(tht3d['R_INF'])+' ET R_SUP = '+str(tht3d['R_SUP'])
motscles={}
if COMP_ELAS!=None: motscles['COMP_ELAS' ]= _F(TOUT = 'OUI',
RELATION = COMP_ELAS['RELATION'],)
if FERME:
- motscles['LISSAGE_THETA']= 'LAGRANGE'
- motscles['LISSAGE_G' ]= 'LAGRANGE'
- __glocal = CALC_G_LOCAL_T( MODELE = modele,
- CHAM_MATER = affmat,
- FOND_FISS = fond3d[j],
- RESULTAT = nomres,
- TOUT_ORDRE = 'OUI',
- R_INF = tht3d['R_INF'],
- R_SUP = tht3d['R_SUP'],
- TITRE = montit,**motscles)
+ motscles['LISSAGE']=_F(LISSAGE_THETA= 'LAGRANGE',
+ LISSAGE_G= 'LAGRANGE',)
+ __glocal = CALC_G( MODELE = modele,
+ CHAM_MATER = affmat,
+ THETA=_F( FOND_FISS = fond3d[j],
+ R_INF = tht3d['R_INF'],
+ R_SUP = tht3d['R_SUP'],),
+ RESULTAT = nomres,
+ TOUT_ORDRE = 'OUI',
+ TITRE = montit,**motscles)
+ IMPR_TABLE(TABLE = __glocal, )
#
# recherche du g max local
#
motscles={}
mcfact=[]
if FERME:
- motscles['LISSAGE_THETA']= 'LAGRANGE'
- motscles['LISSAGE_G' ]= 'LAGRANGE'
+ motscles['LISSAGE']=_F(LISSAGE_THETA= 'LAGRANGE',
+ LISSAGE_G= 'LAGRANGE',)
for born in BORNES :
mcfact.append(_F( NUME_ORDRE = born['NUME_ORDRE'] ,
VALE_MIN = born['VALE_MIN' ] ,
VALE_MAX = born['VALE_MAX' ] ) )
motscles['BORNES']=mcfact
- __glbil = CALC_G_LOCAL_T( MODELE = modele,
- CHAM_MATER = affmat,
- FOND_FISS = fond3d[j],
- RESULTAT = nomres,
- TOUT_ORDRE = 'OUI',
- COMP_ELAS = _F(TOUT = 'OUI',
- RELATION = COMP_ELAS['RELATION'],),
- TITRE = montit,
- OPTION = 'CALC_G_MAX',
- R_INF = tht3d['R_INF'],
- R_SUP = tht3d['R_SUP'],**motscles)
+ __glbil = CALC_G( MODELE = modele,
+ CHAM_MATER = affmat,
+ THETA=_F( FOND_FISS = fond3d[j],
+ R_INF = tht3d['R_INF'],
+ R_SUP = tht3d['R_SUP'],),
+ RESULTAT = nomres,
+ TOUT_ORDRE = 'OUI',
+ COMP_ELAS = _F(TOUT = 'OUI',
+ RELATION = COMP_ELAS['RELATION'],),
+ TITRE = montit,
+ OPTION = 'G_MAX',**motscles)
IMPR_TABLE(TABLE = __glbil, )
#
# --- commande IMPR_RESU ---
else : ncham=[IMPRESSION['NOM_CHAM'],]
if len(ncham)==3 : motscles['NOM_CHAM' ]=('DEPL','EQUI_ELNO_SIGM')
elif (len(ncham)==1) and (ncham[0][:4]!='TEMP') :
- motscles['NOM_CHAM' ]= ncham[0]['NOM_CHAM']
+ motscles['NOM_CHAM' ]= ncham[0]
elif (len(ncham)==2) and (ncham[0][:4]!='TEMP') and (ncham[1][:4]!='TEMP') :
- motscles['NOM_CHAM' ]=(ncham[0]['NOM_CHAM'],ncham[1]['NOM_CHAM'])
+ motscles['NOM_CHAM' ]=(ncham[0],ncham[1])
elif (len(ncham)==2) and (ncham[0][:4]=='TEMP') :
- motscles['NOM_CHAM' ]= ncham[1]['NOM_CHAM']
+ motscles['NOM_CHAM' ]= ncham[1]
elif (len(ncham)==2) and (ncham[1][:4]=='TEMP') :
- motscles['NOM_CHAM' ]= ncham[0]['NOM_CHAM']
+ motscles['NOM_CHAM' ]= ncham[0]
if IMPRESSION['TOUT_ORDRE']!=None :
motscles['TOUT_ORDRE']= IMPRESSION['TOUT_ORDRE']
elif IMPRESSION['NUME_ORDRE']!=None :
if IMPRESSION['FORMAT'] in ('IDEAS','CASTEM') :
if len(ncham)==3 : motscles['NOM_CHAM' ]=('TEMP',)
elif (len(ncham)==1) and (ncham[0][:4]=='TEMP') :
- motscles['NOM_CHAM' ]= ncham[0]['NOM_CHAM']
+ motscles['NOM_CHAM' ]= ncham[0]
elif (len(ncham)==2) and (ncham[0][:4]=='TEMP') :
- motscles['NOM_CHAM' ]= ncham[0]['NOM_CHAM']
+ motscles['NOM_CHAM' ]= ncham[0]
elif (len(ncham)==2) and (ncham[1][:4]=='TEMP') :
- motscles['NOM_CHAM' ]= ncham[1]['NOM_CHAM']
+ motscles['NOM_CHAM' ]= ncham[1]
if IMPRESSION['TOUT_ORDRE']!=None :
motscles['TOUT_ORDRE']= IMPRESSION['TOUT_ORDRE']
elif IMPRESSION['NUME_ORDRE']!=None :
motsclei['VERSION' ]= IMPRESSION['VERSION']
if IMPRESSION['FORMAT']=='CASTEM' :
motsclei['NIVE_GIBI' ]= IMPRESSION['NIVE_GIBI']
- mcfresu.append(_F(RESULTAT=nomres,**motscles))
+ mcfresu.append(_F(RESULTAT=resuth,**motscles))
IMPR_RESU( MODELE = modele,
RESU = mcfresu,
FORMAT=IMPRESSION['FORMAT'],**motsclei)
-#@ MODIF macr_aspic_mail_ops Macro DATE 14/09/2004 AUTEUR MCOURTOI M.COURTOIS
+#@ MODIF macr_aspic_mail_ops Macro DATE 22/05/2006 AUTEUR MCOURTOI M.COURTOIS
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# ======================================================================
-
-from math import sqrt,cos,sin,pi,pow,tan
+import os.path
+from math import sqrt, cos, sin, pi, pow, tan
# Ecriture du fichier GIBI principal (dgib) - ASPID0
def write_file_dgib_ASPID0(nomFichierDATG,UNITD, EPT1, DET1, D1, D2, EPT2, DET2, ZMAX, H,
ALPHA, JEU, EPC, DEC, XMAX, TYPMAI, THETA, TYPELE,
- ITYPSO, DPENE, NIVMAG, loc_datg) :
-
+ ITYPSO, DPENE, NIVMAG, loc_datg):
+ import aster
# Ouverture du fichier d'entrée de commandes
fdgib=open(nomFichierDATG,'w')
- POIVIR = ' ; \n'
- texte='****************************************************************\n'
- texte=texte+'opti echo 0 ; \n'
- texte=texte+'epT1 = '+str(EPT1) +POIVIR
- texte=texte+'DeT1 = '+str(DET1) +POIVIR
- texte=texte+'d1 = '+str(D1) +POIVIR
- texte=texte+'d2 = '+str(D2) +POIVIR
- texte=texte+'epT2 = '+str(EPT2) +POIVIR
- texte=texte+'DeT2 = '+str(DET2) +POIVIR
- texte=texte+'Zmax = '+str(ZMAX) +POIVIR
- texte=texte+'type_s = '+str(ITYPSO) +POIVIR
- texte=texte+'d_pene = '+str(DPENE) +POIVIR
- texte=texte+'h = '+str(H) +POIVIR
- texte=texte+'angl_s = '+str(ALPHA) +POIVIR
- texte=texte+'jeu = '+str(JEU) +POIVIR
- texte=texte+'epC = '+str(EPC) +POIVIR
- texte=texte+'DeC = '+str(DEC) +POIVIR
- texte=texte+'Xmax = '+str(XMAX) +POIVIR
- texte=texte+'typmai = MOT '+TYPMAI +POIVIR
- texte=texte+'theta = '+str(THETA) +POIVIR
- texte=texte+'typele = MOT '+TYPELE +POIVIR
- texte=texte+'typ_eque = MOT '+'SAINE' +POIVIR
- texte=texte+'nivmag = '+str(NIVMAG) +POIVIR
- texte=texte+'* \n'
- texte=texte+'opti donn '
- texte=texte+"'"+loc_datg+'aspic.datg'+"';\n"
- print texte
+ texte = """
+****************************************************************
+opti echo 0;
+epT1 = %s;
+DeT1 = %s;
+d1 = %s;
+d2 = %s;
+epT2 = %s;
+DeT2 = %s;
+Zmax = %s;
+type_s = %s;
+d_pene = %s;
+h = %s;
+angl_s = %s;
+jeu = %s;
+epC = %s;
+DeC = %s;
+Xmax = %s;
+typmai = MOT %s;
+theta = %s;
+typele = MOT %s;
+typ_eque = MOT SAINE;
+nivmag = %s;
+****************************************************************
+""" % (EPT1, DET1, D1, D2, EPT2, DET2, ZMAX, ITYPSO, DPENE, H,
+ ALPHA, JEU, EPC, DEC, XMAX, TYPMAI, THETA, TYPELE, NIVMAG)
+ aster.affiche('MESSAGE',texte + ' + aspic.datg...\n')
+ texte = texte + open(os.path.join(loc_datg, 'aspic.datg'), 'r').read()
fdgib.write(texte)
fdgib.close()
A,C,EPS, RC0, NS,NC,NT,POSI, NDT,FETIRF,FETIRP,
TFISS,ZETA,ITYPSO,DPENE, NIVMAG, loc_datg) :
+ import aster
# Ouverture du fichier d'entrée de commandes
fdgib=open(nomFichierDATG,'w')
POIVIR = ' ; \n'
texte=texte+'typ_eque = MOT '+'FISS_LON' +POIVIR
texte=texte+'nivmag = '+str(NIVMAG) +POIVIR
texte=texte+'* \n'
- texte=texte+'opti donn '
- texte=texte+"'"+loc_datg+'aspic_v2.datg'+"';\n"
- print texte
+ aster.affiche('MESSAGE',texte + ' + aspic_v2.datg...\n')
+ texte = texte + open(os.path.join(loc_datg, 'aspic_v2.datg'), 'r').read()
fdgib.write(texte)
fdgib.close()
ALP,BETA, NS, NC, NT, POSI ,NDT,NSDT,TFISS,
ZETA,ITYPSO,DPENE, NIVMAG, loc_datg) :
#
+ import aster
CALPHA = cos(ALPHA*pi/180.)
SALPHA = sin(ALPHA*pi/180.)
CTHETA = cos(THETA*pi/180.)
EPSIL = STHETA * tan(ALPHA*pi/180.0)
PHI = (EPSIL * ZA) - YA
DELTA = pow(PHI,2) - ((1 + pow(EPSIL,2))*(pow(PHI,2) - (pow((DEC/2.0),2)*pow(EPSIL,2))))
- if (THETA > 0) :
+ if (STHETA > 0) :
YD = ( sqrt(DELTA) - PHI) / (1.0 + pow(EPSIL,2))
else :
- YD = ( -1.0*sqrt(DELTA) - PHI) / (1.0 + pow(EPSIL,2))
+ YD = ( -1.0*sqrt(DELTA) - PHI) / (1.0 + pow(EPSIL,2))
ZD = sqrt(pow((DEC/2.0),2) - pow(YD,2))
ZN0 = ZD0 - A*CALPHA
XN = XN0 * CTHETA
YN = XN0 * STHETA
+ DNXY = sqrt(pow(XD,2) + pow(YD,2)) - sqrt(pow(XN,2) + pow(YN,2))
+ DNXY0 = XD0 - XN0
+ RAPP = DNXY/DNXY0
+ # Correction necessaire dans le cas theta et/ou alpha grand
+ if (RAPP < 0.5) :
+ DXY = sqrt(pow(XD,2) + pow(YD,2) )
+ XN = XN * DXY/XD0
+ YN = YN * DXY/XD0
SGAMN = YN / ZN0
ZN = ZN0 * sqrt(1.0 - pow(SGAMN,2))
D0N0 = sqrt( pow((XD0 - XN0),2) + pow((ZD0 - ZN0),2) )
EPSIL = STHETA * TGALP
PHI = (EPSIL * ZA) - YA
DELTA = pow(PHI,2) - (1.0 + pow(EPSIL,2))*(pow(PHI,2) - pow((DEC/2.0),2)*pow(EPSIL,2))
- if (THETA > 0) :
+ if (STHETA > 0) :
YD = (sqrt(DELTA) - PHI) / (1.0 + pow(EPSIL,2))
else :
YD = (-1.0*sqrt(DELTA) - PHI) / (1.0 + pow(EPSIL,2))
ECART = (RAPP - 1.0) * B0N0
A = A + ECART
- print ' <MACR_ASPIC_MAIL> CORRECTION PROFONDEUR DEFAUT'
- print ' PROFONDEUR SUR PIQUAGE : ', AOLD
- print ' PROFONDEUR SUR EQUERRE : ', A
+ message= ' <MACR_ASPIC_MAIL> CORRECTION PROFONDEUR DEFAUT \n'
+ message=message+ ' PROFONDEUR SUR PIQUAGE : %.2f \n'%AOLD
+ message=message+ ' PROFONDEUR SUR EQUERRE : %.2f \n'%A
+ aster.affiche('MESSAGE',message)
# Ouverture du fichier d'entrée de commandes
texte=texte+'nivmag = '+str(NIVMAG) +POIVIR
texte=texte+'* \n'
texte=texte+'list epc ;\n'
- texte=texte+'opti donn '
- texte=texte+"'"+loc_datg+'aspic.datg'+"';\n"
- print texte
+ aster.affiche('MESSAGE',texte + ' + aspic.datg...\n')
+ texte = texte + open(os.path.join(loc_datg, 'aspic.datg'), 'r').read()
fdgib.write(texte)
fdgib.close()
from Accas import _F
import types
import aster
+ from Utilitai.Utmess import UTMESS
ier=0
# On importe les definitions des commandes a utiliser dans la macro
TYPSOU= TUBULURE['TYPE' ]
DPENE = TUBULURE['L_PENETR' ]
if TYPSOU=='TYPE_2' and DPENE>0.0 :
- self.cr.fatal("<F> <MACR_ASPIC_MAIL> les piquages penetrants sont autorises uniquement avec les soudures de type 1")
- ier = ier+1
- return ier
+ UTMESS('F', "MACR_ASPIC_MAIL", "les piquages penetrants sont autorises uniquement avec les soudures de type 1")
if TYPSOU=='TYPE_2' :
ITYPSO = 2
else :
ZMAXC = LZMAX + ( DEC/2.0 ) + D1 + D2
LOK = ( abs(ZMAX-ZMAXC) <= EPSI * abs(ZMAXC) )
if not LOK :
- print ' <MACR_ASPIC_MAIL> erreur donnees'
- print ' <MACR_ASPIC_MAIL> Z_MAX FOURNIE : ', ZMAX
- print ' <MACR_ASPIC_MAIL> Z_MAX CALCULEE : ', ZMAXC
- self.cr.fatal("<F> <MACR_ASPIC_MAIL> erreur donnees ")
- ier = ier+1
- return ier
+ message= ' erreur donnees \n'
+ message=message+ ' Z_MAX FOURNIE : %.2f \n'%ZMAX
+ message=message+ ' Z_MAX CALCULEE : %.2f \n'%ZMAXC
+ UTMESS('F', "MACR_ASPIC_MAIL", message)
RMC = ( DEC - EPC ) / 2.0
VAL1 = 1.5 * sqrt( RMC**3 / EPC )
VAL2 = 3.0 * sqrt( RMC * EPC )
XMAXC = LXMAX + ( DET1 / 2.0 )
LOK = ( abs(XMAX-XMAXC) <= EPSI * abs(XMAXC) )
if not LOK :
- print ' <MACR_ASPIC_MAIL> erreur donnees'
- print ' <MACR_ASPIC_MAIL> Z_MAX FOURNIE : ', ZMAX
- print ' <MACR_ASPIC_MAIL> Z_MAX CALCULEE : ', ZMAXC
- self.cr.fatal("<F> <MACR_ASPIC_MAIL> erreur donnees ")
- ier = ier+1
- return ier
- print ' MACR_ASPIC_MAIL / X_MAX CALCULEE : ',XMAX
- print ' MACR_ASPIC_MAIL / Z_MAX CALCULEE : ',XMAXC
+ message= ' erreur donnees \n'
+ message=message+ ' Z_MAX FOURNIE : %.2f \n'%ZMAX
+ message=message+ ' Z_MAX CALCULEE : %.2f \n'%ZMAXC
+ UTMESS('F', "MACR_ASPIC_MAIL", message)
+ message= ' MACR_ASPIC_MAIL / X_MAX CALCULEE : %.2f \n'%XMAX
+ message=message+ ' MACR_ASPIC_MAIL / Z_MAX CALCULEE : %.2f \n'%XMAXC
+ aster.affiche('MESSAGE',message)
#
# --- caracteristiques de la fissure ---
#
N1 = 1
else : N1 = 0
if (TFISS=='DEB_INT') and (POSI=='INCLINE') and (DPENE>0.0) and (JEU>0.0) :
- print ' <MACR_ASPIC_MAIL> erreur donnees'
- print ' <MACR_ASPIC_MAIL> dans le cas de fissures'
- print ' <MACR_ASPIC_MAIL> inclinees debouchant en peau interne avec'
- print ' <MACR_ASPIC_MAIL> piquage penetrant le jeu doit etre nul'
- self.cr.fatal("<F> <MACR_ASPIC_MAIL> erreur donnees ")
- ier = ier+1
- return ier
+ message= ' erreur donnees \n'
+ message=message+ ' dans le cas de fissures \n'
+ message=message+ ' inclinees debouchant en peau interne avec \n'
+ message=message+ ' piquage penetrant le jeu doit etre nul \n'
+ UTMESS('F', "MACR_ASPIC_MAIL", message)
ZETA = 0.5
if TFISS not in ('DEB_INT','DEB_EXT') :
if FISS_SOUDURE['LIGA_INT']==None :
- print ' <MACR_ASPIC_MAIL> erreur donnees'
- print ' <MACR_ASPIC_MAIL> dans le cas de fissures internes'
- print ' <MACR_ASPIC_MAIL> (NON_DEB) le ligament inferieur est obligatoire'
- self.cr.fatal("<F> <MACR_ASPIC_MAIL> erreur donnees ")
- ier = ier+1
- return ier
+ message= ' erreur donnees \n'
+ message=message+ ' dans le cas de fissures internes\n'
+ message=message+ ' (NON_DEB) le ligament inferieur est obligatoire \n'
+ UTMESS('F', "MACR_ASPIC_MAIL", message)
LIGA = FISS_SOUDURE['LIGA_INT']
if POSI=='DROIT' :
if ITYPSO==1 : ZETA = (A+LIGA)/(EPC+H)
if ITYPSO==1 : ZETA = (A+LIGA)*cos(ALPHA*pi/180.0)/EPC
else : ZETA = (A+LIGA)*cos(ALPHA*pi/180.0)/EPT1
if ZETA < 0.1 :
- self.cr.fatal("<F> <MACR_ASPIC_MAIL> dans le cas de fissures internes (NON_DEB) le ligament est trop petit ")
- ier = ier+1
- return ier
+ UTMESS('F', "MACR_ASPIC_MAIL", "dans le cas de fissures internes (NON_DEB) le ligament est trop petit ")
if ZETA > 0.9 :
- self.cr.fatal("<F> <MACR_ASPIC_MAIL> dans le cas de fissures internes (NON_DEB) le ligament est trop grand ")
- ier = ier+1
- return ier
+ UTMESS('F', "MACR_ASPIC_MAIL", "dans le cas de fissures internes (NON_DEB) le ligament est trop grand ")
if LIGA < 0.1*EPC :
- self.cr.fatal("<F> <MACR_ASPIC_MAIL> dans le cas de fissures internes (NON_DEB) le ligament est trop petit ")
- ier = ier+1
- return ier
+ UTMESS('F', "MACR_ASPIC_MAIL", "dans le cas de fissures internes (NON_DEB) le ligament est trop petit ")
if (LIGA + 2.0*A) > 0.9*EPC :
- self.cr.fatal("<F> <MACR_ASPIC_MAIL> dans le cas de fissures internes (NON_DEB) le ligament est trop grand ")
- ier = ier+1
- return ier
+ UTMESS('F', "MACR_ASPIC_MAIL", "dans le cas de fissures internes (NON_DEB) le ligament est trop grand ")
if N1==0 :
if FISCOU :
- self.cr.fatal("<F> <MACR_ASPIC_MAIL> dans le cas de fissures courte il faut preciser la longueur ")
- ier = ier+1
- return ier
+ UTMESS('F', "MACR_ASPIC_MAIL", "dans le cas de fissures courte il faut preciser la longueur")
if AXIS=='NON' :
- self.cr.fatal("<F> <MACR_ASPIC_MAIL> dans le cas de la fissure longue il faut preciser la longueur ou axis=oui ")
- ier = ier+1
- return ier
+ UTMESS('F', "MACR_ASPIC_MAIL", "dans le cas de la fissure longue il faut preciser la longueur ou axis=oui ")
C = 0.0
else :
- if AXIS=='OUI' : print '<A> <MACR_ASPIC_MAIL> fissure axisymetrique : le mot clef <LONGUEUR> ne doit pas etre renseigne'
+ if AXIS=='OUI' : UTMESS('A', "MACR_ASPIC_MAIL", "fissure axisymetrique : le mot clef <LONGUEUR> ne doit pas etre renseigne")
C = 0.5 * C
LEQU=2.*(pi*(DEC-EPC)-DET1+2.*EPT1)
#
if logiel=='GIBI98' : logiel = loc_gibi+'gibi98'
elif logiel=='GIBI2000': logiel = loc_gibi+'gibi2000'
else :
- self.cr.fatal("<F> <MACR_ASPIC_MAIL> seuls gibi98 et gibi2000 sont appelableS")
- ier = ier+1
- return ier
+ UTMESS('F', "MACR_ASPIC_MAIL", "seuls gibi98 et gibi2000 sont appelables ")
#
# --- ecriture sur le fichier .datg de la procedure ---
#
IMPR_RESU( RESU = impr_resu,
FORMAT = impr['FORMAT'],**motscles )
#
+#
+# --- Verification profondeur fissure (courte débouchante) ---
+#
+ if FISCOU and not (TFISS=='NON_DEB') :
+ nomres=DEFI_GROUP( reuse=nomres,
+ MAILLAGE=nomres,
+ CREA_GROUP_NO=(_F( GROUP_MA = 'LEVRTUBU',),
+ _F( NOM = 'FONDORDO',
+ GROUP_MA = 'FONDFISS',
+ OPTION = 'NOEUD_ORDO',),),);
+
+ nommail=nomres.nom
+ coord =aster.getvectjev(nommail.ljust(8)+'.COORDO .VALE')
+ collgrno=aster.getcolljev(nommail.ljust(8)+'.GROUPENO')
+
+ grfo=collgrno['FONDORDO']
+ Nbno = len(grfo)
+ listx = [None]*Nbno
+ listy = [None]*Nbno
+ listz = [None]*Nbno
+ k = 0
+ for node in grfo:
+ listx[k] = coord[3*(node-1)]
+ listy[k] = coord[3*(node-1)+1]
+ listz[k] = coord[3*(node-1)+2]
+ k = k+1
+
+ XAB = listx[Nbno-1] - listx[0]
+ YAB = listy[Nbno-1] - listy[0]
+ ZAB = listz[Nbno-1] - listz[0]
+ AB = sqrt(XAB*XAB + YAB*YAB +ZAB*ZAB)
+ d = 0
+ for k in range(0,Nbno) :
+ XAM = listx[k] - listx[0]
+ YAM = listy[k] - listy[0]
+ ZAM = listz[k] - listz[0]
+ Xvect = YAB*ZAM-ZAB*YAM
+ Yvect = ZAB*XAM-XAB*ZAM
+ Zvect = XAB*YAM-YAB*XAM
+ AM = sqrt(Xvect*Xvect+ Yvect*Yvect +Zvect*Zvect)
+ dk = AM/AB
+ if dk > d :
+ XC = listx[k]
+ YC = listy[k]
+ ZC = listz[k]
+ d = max(dk, d)
+
+ grlev=collgrno['LEVRTUBU']
+ Nbnol = len(grlev)
+ listxl = [None]*Nbnol
+ listyl = [None]*Nbnol
+ listzl = [None]*Nbnol
+ k = 0
+ for node in grlev:
+ listxl[k] = coord[3*(node-1)]
+ listyl[k] = coord[3*(node-1)+1]
+ listzl[k] = coord[3*(node-1)+2]
+ k = k+1
+ dist = 0
+ for k in range(0,Nbnol) :
+ XAM = listxl[k] - listx[0]
+ YAM = listyl[k] - listy[0]
+ ZAM = listzl[k] - listz[0]
+ Scal = (XAB*XAM + YAB*YAM + ZAB*ZAM)/(AB*AB)
+ if (abs(Scal) < 0.51) and (abs(Scal) > 0.49) :
+ Xk = listxl[k] -XC
+ Yk = listyl[k] -YC
+ Zk = listzl[k] -ZC
+ dk = sqrt(Xk**2+ Yk**2 +Zk**2)
+ dist = max(dk, dist)
+
+ texte="<MACR_ASPIC_MAIL> PROFONDEUR DE LA FISSURE DANS LE MAILLAGE : %.2f \n"%dist
+ aster.affiche('MESSAGE',texte)
+#
return ier
+
-#@ MODIF macr_cabri_calc_ops Macro DATE 14/09/2004 AUTEUR MCOURTOI M.COURTOIS
+#@ MODIF macr_cabri_calc_ops Macro DATE 07/10/2005 AUTEUR CIBHHPD L.SALMONA
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
def macr_cabri_calc_ops(self,MAILLAGE,MODELE_MECA,MODELE_THER,CHAR_THER,
- CHAR_MECA,RESU_THER,
+ CHAR_MECA,RESU_THER,RESO_INTE,
AFFE_MATERIAU,DEFI_CHAR_THER,DEFI_CHAR_MECA,RELATION,SOLVEUR,CONVERGENCE,NEWTON,
INCREMENT,CHAM_MATER,**args):
"""
# On met certains mots-clefs dans des variables locales pour les proteger
affemateriau = AFFE_MATERIAU
mail = MAILLAGE
-
+ resointe = RESO_INTE
# On importe les definitions des commandes a utiliser dans la macro
# Le nom de la variable doit etre obligatoirement le nom de la commande
_F(CHARGE=cl_me11,),
),
SOLVEUR = solveur,
- COMP_INCR =_F(RELATION=relation,),
+ COMP_INCR =_F(RELATION=relation,RESO_INTE=resointe),
NEWTON = newton,
INCREMENT = increment,
CONVERGENCE = convergence,
_F(CHARGE=cl_me11,),
),
SOLVEUR = solveur,
- COMP_ELAS =_F(RELATION=relation,),
+ COMP_ELAS =_F(RELATION=relation,RESO_INTE=resointe),
NEWTON = newton,
INCREMENT = increment,
CONVERGENCE = convergence,
-#@ MODIF macr_cara_poutre_ops Macro DATE 14/09/2004 AUTEUR MCOURTOI M.COURTOIS
+#@ MODIF macr_cara_poutre_ops Macro DATE 27/02/2006 AUTEUR DURAND C.DURAND
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
"""
import types
from Accas import _F
+ from Utilitai.Utmess import UTMESS
ier=0
# On importe les definitions des commandes a utiliser dans la macro
# Le nom de la variable doit etre obligatoirement le nom de la commande
INTE_MAIL_2D =self.get_cmd('INTE_MAIL_2D')
POST_RELEVE_T =self.get_cmd('POST_RELEVE_T')
IMPR_TABLE =self.get_cmd('IMPR_TABLE')
- IMPR_CO =self.get_cmd('IMPR_CO')
+ CREA_TABLE =self.get_cmd('CREA_TABLE')
# La macro compte pour 1 dans la numerotation des commandes
- #self.icmd=1
self.set_icmd(1)
- # Le concept sortant (de type tabl_cara_geom) est nommé 'nomres' dans
+ # Le concept sortant (de type table_sdaster) est nommé 'nomres' dans
# le contexte de la macro
self.DeclareOut('nomres',self.sd)
# if GROUP_MA_BORD and GROUP_MA:
# if not LIAISON:
-# ier=ier+1
-# self.cr.fatal("<F> <MACR_CARA_POUTRE> Avec GROUP_MA, il faut obligatoirement preciser LIAISON, LONGUEUR ET MATERIAU")
-# return ier
+# UTMESS('F', "MACR_CARA_POUTRE", "Avec GROUP_MA, il faut obligatoirement preciser LIAISON, LONGUEUR ET MATERIAU")
#
__nomlma=LIRE_MAILLAGE(UNITE=UNITE_MAILLAGE,)
AFFE=_F(TOUT='OUI',
MATER=__nomdma,), )
+
# --- CALCUL DES CARACTERISTIQUES GEOMETRIQUES DE LA SECTION :
# ------------------------------------------------------
if SYME_Y : motsimps['SYME_Y'] = SYME_Y
motsimps['ORIG_INER'] = ORIG_INER
mfact=_F(TOUT='OUI',**motsimps)
- nomres=POST_ELEM(MODELE=__nomamo,
- CHAM_MATER=__nomama,
- CARA_GEOM=mfact )
-
+ __cageo=POST_ELEM(MODELE=__nomamo,
+ CHAM_MATER=__nomama,
+ CARA_GEOM=mfact )
# nb : si GROUP_MA n existe pas : le mot clé est ignoré
#
# ==================================================================
if GROUP_MA_BORD and not GROUP_MA:
+
# --- TRANSFORMATION DES GROUP_MA EN GROUP_NO SUR-LESQUELS
# --- ON POURRA APPLIQUER DES CONDITIONS DE TEMPERATURE IMPOSEE :
# ---------------------------------------------------------
# ---------------------------------------------------------------
__nomapi=CREA_MAILLAGE(MAILLAGE=__nomlma,
- REPERE=_F(TABLE=nomres,
+ REPERE=_F(TABLE=__cageo,
NOM_ORIG='CDG', ), )
# --- AFFECTATION DU PHENOMENE 'THERMIQUE' AU MODELE EN VUE DE
if args.has_key('GROUP_MA_INTE'):
lgmaint=args['GROUP_MA_INTE']
if lgmaint != None :
- motscles['CARA_POUTRE']=_F(CARA_GEOM=nomres,
+ motscles['CARA_POUTRE']=_F(CARA_GEOM=__cageo,
LAPL_PHI=__tempe1,
RT=__rt,
TOUT='OUI',
OPTION='CARA_TORSION',
GROUP_MA_INTE=args['GROUP_MA_INTE'],)
else:
- motscles['CARA_POUTRE']=_F(CARA_GEOM=nomres,
+ motscles['CARA_POUTRE']=_F(CARA_GEOM=__cageo,
LAPL_PHI=__tempe1,
RT=__rt,
TOUT='OUI',
OPTION='CARA_TORSION', )
- nomres=POST_ELEM(reuse=nomres,
- MODELE=__nomoth,
- CHAM_MATER=__chmath,
- **motscles )
+ __cator=POST_ELEM(MODELE=__nomoth,
+ CHAM_MATER=__chmath,
+ **motscles )
# --- CALCUL DES COEFFICIENTS DE CISAILLEMENT ET DES COORDONNEES DU
# --- CENTRE DE CISAILLEMENT/TORSION :
# ------------------------------
- nomres=POST_ELEM(reuse=nomres,
- MODELE=__nomoth,
- CHAM_MATER=__chmath,
- CARA_POUTRE=_F(CARA_GEOM=nomres,
- LAPL_PHI_Y=__tempe2,
- LAPL_PHI_Z=__tempe3,
- TOUT='OUI',
- OPTION='CARA_CISAILLEMENT',), )
+ __cacis=POST_ELEM(MODELE=__nomoth,
+ CHAM_MATER=__chmath,
+ CARA_POUTRE=_F(CARA_GEOM=__cator,
+ LAPL_PHI_Y=__tempe2,
+ LAPL_PHI_Z=__tempe3,
+ TOUT='OUI',
+ OPTION='CARA_CISAILLEMENT',), )
#
# ----------
__nomapt=CREA_MAILLAGE(MAILLAGE=__nomapi,
- REPERE=_F(TABLE=nomres,
+ REPERE=_F(TABLE=__cacis,
NOM_ORIG='TORSION',) )
# --- AFFECTATION DU PHENOMENE 'THERMIQUE' AU MODELE EN VUE DE
# --- CALCUL DE L INERTIE DE GAUCHISSEMENT :
# -------------------------------------
- nomres=POST_ELEM(reuse=nomres,
- MODELE=__nomot2,
+ nomres=POST_ELEM(MODELE=__nomot2,
CHAM_MATER=__chmat2,
- CARA_POUTRE=_F(CARA_GEOM=nomres,
+ CARA_POUTRE=_F(CARA_GEOM=__cacis,
LAPL_PHI=__tempe4,
TOUT='OUI',
OPTION='CARA_GAUCHI'), )
if GROUP_MA_BORD and GROUP_MA:
+# --- CALCUL DES CARACTERISTIQUES GEOMETRIQUES DE LA SECTION :
+# ------------------------------------------------------
+
if type(GROUP_MA_BORD)==types.StringType :
l_group_ma_bord=[GROUP_MA_BORD,]
else:
l_noeud= args['NOEUD']
if len(l_group_ma)!=len(l_group_ma_bord):
- ier=ier+1
- self.cr.fatal("<F> <MACR_CARA_POUTRE> GROUP_MA et GROUP_MA_BORD incoherents")
- return ier
+ UTMESS('F', "MACR_CARA_POUTRE", "GROUP_MA et GROUP_MA_BORD incoherents")
if args.has_key('NOEUD') and (len(l_group_ma)!=len(l_noeud)):
- ier=ier+1
- self.cr.fatal("<F> <MACR_CARA_POUTRE> GROUP_MA et NOEUD incoherents")
- return ier
+ UTMESS('F', "MACR_CARA_POUTRE", "GROUP_MA et NOEUD incoherents")
+ __catp2=__cageo
for i in range(0,len(l_group_ma_bord)):
# --- TRANSFORMATION DES GROUP_MA EN GROUP_NO SUR-LESQUELS
# ---------------------------------------------------------------
__nomapi=CREA_MAILLAGE(MAILLAGE=__nomlma,
- REPERE=_F(TABLE=nomres,
+ REPERE=_F(TABLE=__cageo,
NOM_ORIG='CDG',
GROUP_MA=l_group_ma[i], ), )
# --- CALCUL DE LA CONSTANTE DE TORSION :
# ---------------------------------
- nomres=POST_ELEM(reuse=nomres,
- MODELE=__nomoth,
- CHAM_MATER=__chmath,
- CARA_POUTRE=_F(CARA_GEOM=nomres,
- LAPL_PHI=__tempe1,
- RT=__rt,
- GROUP_MA=l_group_ma[i],
- OPTION='CARA_TORSION' ), )
+ __catp1=POST_ELEM(MODELE=__nomoth,
+ CHAM_MATER=__chmath,
+ CARA_POUTRE=_F(CARA_GEOM=__catp2,
+ LAPL_PHI=__tempe1,
+ RT=__rt,
+ GROUP_MA=l_group_ma[i],
+ OPTION='CARA_TORSION' ), )
# --- CALCUL DES COEFFICIENTS DE CISAILLEMENT ET DES COORDONNEES DU
# --- CENTRE DE CISAILLEMENT/TORSION :
# ------------------------------
- nomres=POST_ELEM(reuse=nomres,
- MODELE=__nomoth,
- CHAM_MATER=__chmath,
- CARA_POUTRE=_F(CARA_GEOM=nomres,
- LAPL_PHI_Y=__tempe2,
- LAPL_PHI_Z=__tempe3,
- GROUP_MA=l_group_ma[i],
- LONGUEUR=args['LONGUEUR'],
- MATERIAU=args['MATERIAU'],
- LIAISON =args['LIAISON'],
- OPTION='CARA_CISAILLEMENT' ), )
+ __catp2=POST_ELEM(MODELE=__nomoth,
+ CHAM_MATER=__chmath,
+ CARA_POUTRE=_F(CARA_GEOM=__catp1,
+ LAPL_PHI_Y=__tempe2,
+ LAPL_PHI_Z=__tempe3,
+ GROUP_MA=l_group_ma[i],
+ LONGUEUR=args['LONGUEUR'],
+ MATERIAU=args['MATERIAU'],
+ LIAISON =args['LIAISON'],
+ OPTION='CARA_CISAILLEMENT' ), )
+ IMPR_TABLE(TABLE=__catp2)
+ dprod = __catp2.EXTR_TABLE().dict_CREA_TABLE()
+ nomres = CREA_TABLE(**dprod)
+ if not GROUP_MA_BORD :
+ nomres=POST_ELEM(MODELE=__nomamo,
+ CHAM_MATER=__nomama,
+ CARA_GEOM=mfact )
IMPR_TABLE(TABLE=nomres)
return ier
-#@ MODIF macr_lign_coupe_ops Macro DATE 24/05/2005 AUTEUR MCOURTOI M.COURTOIS
+#@ MODIF macr_lign_coupe_ops Macro DATE 09/05/2006 AUTEUR GALENNE E.GALENNE
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
def crea_mail_lig_coup(dimension,lignes,groups):
import os,sys,copy
+ from Utilitai.Utmess import UTMESS
# construction du maillage au format Aster des segments de lignes de coupe
########################################################################
-def macr_lign_coupe_ops(self,RESULTAT,UNITE_MAILLAGE,LIGN_COUPE,NOM_CHAM,MODELE,**args):
+def macr_lign_coupe_ops(self,RESULTAT,UNITE_MAILLAGE,LIGN_COUPE,NOM_CHAM,
+ MODELE,GROUP_MA,MAILLE,**args):
"""
Ecriture de la macro MACR_LIGN_COUPE
"""
import os,string,types
from Accas import _F
from Noyau.N_utils import AsType
- import aster
+ import aster,math
from Utilitai.UniteAster import UniteAster
+ from Utilitai.Utmess import UTMESS
ier=0
# On importe les definitions des commandes a utiliser dans la macro
PROJ_CHAMP =self.get_cmd('PROJ_CHAMP')
POST_RELEVE_T =self.get_cmd('POST_RELEVE_T')
CREA_TABLE =self.get_cmd('CREA_TABLE')
+ MODI_REPERE =self.get_cmd('MODI_REPERE')
# La macro compte pour 1 dans la numerotation des commandes
- #self.icmd=1
self.set_icmd(1)
nomresu=RESULTAT.nom
n_modele=string.strip(l_modele[0])
if n_modele=='' :
if MODELE==None:
- ier=ier+1
- self.cr.fatal("<F> <MACR_LIGN_COUPE> nom du modele absent dans le concept resultat "+nomresu)
- return ier
+ UTMESS('F', "MACR_LIGN_COUPE", "nom du modele absent dans le concept resultat "+nomresu)
else : n_modele=MODELE.nom
l_mailla=aster.getvectjev(n_modele.ljust(8)+'.MODELE .NOMA')
n_mailla=string.strip(l_mailla[0])
elif m['GROUP_NO']!=None :
ngrno=m['GROUP_NO'].ljust(8).upper()
if ngrno not in collgrno.keys() :
- ier=ier+1
- self.cr.fatal("<F> <MACR_LIGN_COUPE> le group_no "+ngrno+" n est pas dans le maillage "+n_mailla)
- return ier
+ UTMESS('F', "MACR_LIGN_COUPE", "le group_no "+ngrno+" n est pas dans le maillage "+n_mailla)
grpn=collgrno[ngrno]
l_coor_group=[ngrno,]
for node in grpn:
groups.append(l_coor_group)
if minidim!=dime:
- ier=ier+1
- self.cr.fatal("<F> <MACR_LIGN_COUPE> dimensions de maillage et de coordonnees incoherentes")
- return ier
+ UTMESS('F', "MACR_LIGN_COUPE", "dimensions de maillage et de coordonnees incoherentes")
# Création du maillage des NB_POINTS segments entre COOR_ORIG et COOR_EXTR
PHENOMENE='THERMIQUE',
MODELISATION='PLAN',),);
+ motscles={}
+ motscles['VIS_A_VIS']=[]
+ if GROUP_MA != None :
+ motscles['VIS_A_VIS'].append(_F(GROUP_MA_1 = GROUP_MA,TOUT_2='OUI'),)
+ if MAILLE != None :
+ motscles['VIS_A_VIS'].append(_F(MAILLE_1 = MAILLE,TOUT_2='OUI'),)
+
__recou=PROJ_CHAMP(METHODE='ELEM',
RESULTAT=RESULTAT,
MODELE_1=self.jdc.current_context[n_modele],
MODELE_2=__mocou,
TYPE_CHAM='NOEU',
- NOM_CHAM=NOM_CHAM,);
+ NOM_CHAM=NOM_CHAM, **motscles);
+
+
+
+ # Expression des contraintes aux noeuds ou des déplacements dans le repere local
+ __remodr=__recou
+ if AsType(RESULTAT).__name__ in ('evol_elas','evol_noli') :
+ for m in LIGN_COUPE :
+ if m['VECT_Y'] !=None :
+ epsi=0.00000001
+ # --- determination des angles nautiques
+ cx1=m['COOR_EXTR'][0]-m['COOR_ORIG'][0]
+ cx2=m['COOR_EXTR'][1]-m['COOR_ORIG'][1]
+ cx3=0.
+ if dime == 3:
+ cx3=m['COOR_EXTR'][2]-m['COOR_ORIG'][2]
+ nvx=math.sqrt(cx1**2+cx2**2+cx3**2)
+ if abs(nvx) < epsi:
+ UTMESS('F', "MACR_LIGN_COUPE", "definition incorrecte de la ligne de coupe")
+ cx1=cx1/nvx
+ cx2=cx2/nvx
+ cx3=cx3/nvx
+ cy1=m['VECT_Y'][0]
+ cy2=m['VECT_Y'][1]
+ cy3=0.
+ if dime == 3:
+ cy3=m['VECT_Y'][2]
+ nvy=math.sqrt(cy1**2+cy2**2+cy3**2)
+ if abs(nvy) < epsi:
+ UTMESS('F', "MACR_LIGN_COUPE", "valeurs incorrectes pour VECT_Y")
+ cy1=cy1/nvy
+ cy2=cy2/nvy
+ cy3=cy3/nvy
+ if ((abs(cx1-cy1)<epsi and abs(cx2-cy2)<epsi and abs(cx3-cy3)<epsi) or \
+ (abs(cx1+cy1)<epsi and abs(cx2+cy2)<epsi and abs(cx3+cy3)<epsi)):
+ UTMESS('F', "MACR_LIGN_COUPE", "valeurs incorrectes pour VECT_Y: x colineaire a y")
+ if abs(cx1*cy1+cx2*cy2+cx3*cy3) > epsi :
+ cz1=cx2*cy3-cx3*cy2
+ cz2=cx3*cy1-cx1*cy3
+ cz3=cx1*cy2-cx2*cy1
+ nvz=math.sqrt(cz1**2+cz2**2+cz3**2)
+ cz1=cz1/nvz
+ cz2=cz2/nvz
+ cz3=cz3/nvz
+ cy1=cz2*cx3-cz3*cx2
+ cy2=cz3*cx1-cz1*cx3
+ cy3=cz1*cx2-cz2*cx1
+ nvy=math.sqrt(cy1**2+cy2**2+cy3**2)
+ cy1=cy1/nvy
+ cy2=cy2/nvy
+ cy3=cy3/nvy
+ UTMESS('A','MACR_LIGN_COUPE','LE VECTEUR Y N EST PAS ORTHOGONAL A LA LIGNE DE COUPE'
+ +'LE VECTEUR Y A ETE ORTHONORMALISE POUR VOUS')
+ UTMESS('A','MACR_LIGN_COUPE','VECT_Y=('+str(cy1)+','+str(cy2)+','+str(cy3)+')')
+ else:
+ cz1=cx2*cy3-cx3*cy2
+ cz2=cx3*cy1-cx1*cy3
+ cz3=cx1*cy2-cx2*cy1
+ beta=0.
+ gamma=0.
+ if dime ==2:
+ alpha = math.atan2(cx2,cx1)
+ else:
+ if cx1**2 + cx2**2 > epsi :
+ alpha=math.atan2(cx2,cx1)
+ beta=math.asin(cx3)
+ gamma=math.atan2(cy3,cz3)
+ else:
+ alpha=math.atan2(cy1,cz1)
+ beta=math.asin(cx3)
+ gamma=0.
+ alpha=alpha*180/math.pi
+ beta=beta*180/math.pi
+ gamma=gamma*180/math.pi
+
+ # --- MODI_REPERE
+ motscles={}
+ motscles['MODI_CHAM']=[]
+ motscles['DEFI_REPERE']=[]
+ # MODI_CHAM
+ if NOM_CHAM == 'DEPL':
+ if dime == 2:
+ LCMP=['DX','DY']
+ TYPE_CHAM='VECT_2D'
+ elif dime ==3 :
+ LCMP=['DX','DY','DZ']
+ TYPE_CHAM='VECT_3D'
+ motscles['MODI_CHAM'].append(_F(NOM_CHAM=NOM_CHAM,NOM_CMP=LCMP,TYPE_CHAM=TYPE_CHAM),)
+ elif NOM_CHAM in ('SIGM_NOEU_DEPL','SIGM_NOEU_SIEF','SIGM_NOEU_ELGA','SIGM_NOEU_COQU'):
+ if dime == 2:
+ LCMP=['SIXX','SIYY','SIZZ','SIXY']
+ TYPE_CHAM='TENS_2D'
+ elif dime ==3 :
+ LCMP=['SIXX','SIYY','SIZZ','SIXY','SIXZ','SIYZ']
+ TYPE_CHAM='TENS_3D'
+ motscles['MODI_CHAM'].append(_F(NOM_CHAM=NOM_CHAM,NOM_CMP=LCMP,TYPE_CHAM=TYPE_CHAM),)
+ # DEFI_REPERE
+ ANGL_NAUT=[]
+ ANGL_NAUT.append(alpha)
+ if dime ==3:
+ ANGL_NAUT.append(beta)
+ ANGL_NAUT.append(gamma)
+ motscles['DEFI_REPERE'].append(_F(REPERE='UTILISATEUR',ANGL_NAUT=ANGL_NAUT),)
+ __remodr=MODI_REPERE(RESULTAT=__recou,**motscles)
+
+
# Production d'une table pour toutes les lignes de coupe
if m['INTITULE'] !=None : intitl=m['INTITULE']
else : intitl=groupe
mcACTION.append( _F(INTITULE = intitl,
- RESULTAT = __recou,
+ RESULTAT = __remodr,
GROUP_NO = groupe,
NOM_CHAM = NOM_CHAM,
TOUT_CMP = 'OUI',
-#@ MODIF macr_recal_ops Macro DATE 14/03/2005 AUTEUR DURAND C.DURAND
+#@ MODIF macr_recal_ops Macro DATE 08/11/2005 AUTEUR ASSIRE A.ASSIRE
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
def macr_recal_ops(self,UNITE_ESCL, RESU_EXP, POIDS, LIST_PARA, RESU_CALC,
ITER_MAXI, RESI_GLOB_RELA,UNITE_RESU,PARA_DIFF_FINI,
- GRAPHIQUE, **args ):
+ GRAPHIQUE, INFO, **args ):
"""Macro commande réalisant le recalage de modèles Aster""",
# Initialisation du compteur d'erreurs
ier=0
- # On essaie d'importer Numeric -> ERREUR FATALE
- try:
- import Numeric
- except ImportError:
- ier=ier+1
- self.cr.fatal("<F> <MACR_RECAL> Le module Numeric de Python n'a pu etre chargé")
- return ier
- # On essaie d'importer Gnuplot -> PAS DE GRAPHIQUE
- try:
- import Gnuplot
- gnuplot=1
- except ImportError:
- gnuplot=0
- import string
- import copy
- import types
+
+ import string, copy, types, Numeric
import Macro
from Cata import cata
from Cata.cata import DEFI_LIST_REEL
- from Macro.recal import gestion,transforme_list_Num,calcul_F,graphique
+ from Macro.recal import gestion,transforme_list_Num,calcul_F
from Macro import reca_message
from Macro import reca_algo
from Macro import reca_interp
+ from Macro import reca_graphique
+
+ try:
+ from Utilitai.Utmess import UTMESS
+ except ImportError:
+ def UTMESS(code,sprg,texte):
+ fmt='\n <%s> <%s> %s\n\n'
+ print fmt % (code,sprg,texte)
+
+ # Test du mot-clé GRAPHIQUE
+ if GRAPHIQUE:
+ dGRAPHIQUE=GRAPHIQUE[0].cree_dict_valeurs(GRAPHIQUE[0].mc_liste)
+ if dGRAPHIQUE.has_key('FORMAT') and dGRAPHIQUE['FORMAT'] == 'GNUPLOT':
+ # On essaie d'importer Gnuplot -> PAS DE GRAPHIQUE
+ try:
+ import Gnuplot
+ except ImportError:
+ GRAPHIQUE == None
+ UTMESS('A','MACR_RECAL',"Le logiciel Gnuplot ou le module python Gnuplot.py n'est pas disponible. On desactive l'affichage des courbes.")
+
# La macro compte pour 1 dans l'execution des commandes
- #self.icmd=1
self.set_icmd(1)
self.DeclareOut('nomres',self.sd)
#_____________________________________________
texte_erreur = gestion(UNITE_ESCL,LIST_PARA,RESU_CALC,RESU_EXP,POIDS,GRAPHIQUE,UNITE_RESU)
if (texte_erreur != ""):
- ier=ier+1
- texte_erreur='<F> <MACR_RECAL>'+texte_erreur
- self.cr.fatal(texte_erreur)
- return ier
+ UTMESS('F', "MACR_RECAL", texte_erreur)
#_____________________________________________
#
A = Dim.adim_sensi(A)
residu = reca_algo.test_convergence(gradient_init,erreur,A,s)
Mess.affiche_result_iter(iter,J,val,residu,Act,UNITE_RESU)
- if (gnuplot):
- if (GRAPHIQUE):
+
+ # Affichage des courbes
+ if GRAPHIQUE:
GRAPHE_UL_OUT=GRAPHIQUE['UNITE']
interactif=(GRAPHIQUE['INTERACTIF']=='OUI')
- graphique(L_F,RESU_EXP,RESU_CALC,iter,GRAPHE_UL_OUT,interactif)
+ reca_graphique.graphique(GRAPHIQUE['FORMAT'],L_F,RESU_EXP,RESU_CALC,iter,GRAPHE_UL_OUT,interactif)
+
# On teste un manque de temps CPU
restant,temps_iter,err=reca_algo.temps_CPU(self,restant,temps_iter)
if (err==1):
ier=ier+1
return ier
+
#_____________________________________________
#
# FIN DES ITERATIONS
-#@ MODIF macro_elas_mult_ops Macro DATE 14/09/2004 AUTEUR MCOURTOI M.COURTOIS
+#@ MODIF macro_elas_mult_ops Macro DATE 05/09/2005 AUTEUR DURAND C.DURAND
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
ier=0
import types
from Accas import _F
+ from Utilitai.Utmess import UTMESS
# On met le mot cle NUME_DDL dans une variable locale pour le proteger
numeddl=NUME_DDL
CALC_ELEM =self.get_cmd('CALC_ELEM')
CALC_NO =self.get_cmd('CALC_NO')
# La macro compte pour 1 dans la numerotation des commandes
- #self.icmd=1
self.set_icmd(1)
# Le concept sortant (de type mult_elas ou fourier_elas) est nommé
ifour=1 # mot clé MODE_FOURIER présent sous CAS_CHARGE
tyresu = 'FOURIER_ELAS'
if ielas==1 and ifour==1:
- ier=ier+1
- self.cr.fatal("""<F> <MACRO_ELAS_MULT> On ne peut avoir a la fois NOM_CAS et MODE_FOURIER""")
- return ier
+ UTMESS('F', "MACRO_ELAS_MULT", "On ne peut avoir a la fois NOM_CAS et MODE_FOURIER")
if (numeddl in self.sdprods) or (numeddl==None):
# Si le concept numeddl est dans self.sdprods ou n est pas nommé
-#@ MODIF macro_matr_ajou_ops Macro DATE 14/09/2004 AUTEUR MCOURTOI M.COURTOIS
+#@ MODIF macro_matr_ajou_ops Macro DATE 05/09/2005 AUTEUR DURAND C.DURAND
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
"""
from Accas import _F
import types
+ import aster
+ from Utilitai.Utmess import UTMESS
ier=0
# On importe les definitions des commandes a utiliser dans la macro
self.set_icmd(1)
if len(FLUIDE)==1 :
- print '<I> <MACRO_MATR_AJOU> tout le domaine fluide specifie dans GROUP_MA_INTERF et GROUP_MA_FLUIDE'
- print ' sera affecte par la masse volumique RHO = ',FLUIDE['RHO']
+ message= '<I> <MACRO_MATR_AJOU> tout le domaine fluide specifie dans GROUP_MA_INTERF et GROUP_MA_FLUIDE \n'
+ message=message+ ' sera affecte par la masse volumique RHO = '+str(FLUIDE['RHO'])+' \n'
+ aster.affiche('MESSAGE',message)
if FLUIDE['GROUP_MA']!=None :
- print '<I> <MACRO_MATR_AJOU> cas fluide simple : le group_ma dans lequel vous affectez la masse'
- print 'volumique RHO doit etre la reunion de GROUP_MA_INTERF et GROUP_MA_FLUIDE.'
+ message= '<I> <MACRO_MATR_AJOU> cas fluide simple : le group_ma dans lequel vous affectez la masse \n'
+ message=message+ 'volumique RHO doit etre la reunion de GROUP_MA_INTERF et GROUP_MA_FLUIDE. \n'
+ aster.affiche('MESSAGE',message)
else :
for flu in FLUIDE :
if flu['GROUP_MA']==None :
- self.cr.fatal("<F> <MACRO_MATR_AJOU> cas fluides multiples : precisez le GROUP_MA dans lequel vous affectez la masse volumique RHO.")
- ier=ier+1
- return ier
+ UTMESS('F', "MACRO_MATR_AJOU", "cas fluides multiples : precisez le GROUP_MA dans lequel vous affectez la masse volumique RHO")
IOCFLU=len(FLUIDE)
if DDL['GROUP_NO']!=None : mfact=_F(GROUP_NO=DDL['GROUP_NO'],TEMP=DDL['PRES_FLUIDE'])
affimp.append(mfact)
if nflui==0:
- self.cr.fatal("<F> <MACRO_MATR_AJOU> PRES_FLUIDE obligatoire une fois")
- ier=ier+1
- return ier
+ UTMESS('F', "MACRO_MATR_AJOU", "PRES_FLUIDE obligatoire une fois")
__CHARGE=AFFE_CHAR_THER( MODELE = __NOMFLU,
TEMP_IMPO = affimp )
if MODE_MECA !=None : mostcles['MODE_MECA'] =MODE_MECA
elif DEPL_IMPO !=None : mostcles['CHAM_NO'] =DEPL_IMPO
else :
- self.cr.fatal("<F> <MACRO_MATR_AJOU> amortissement ajoute sur modele generalise non encore implante")
- ier=ier+1
- return ier
+ UTMESS('F', "MACRO_MATR_AJOU", "amortissement ajoute sur modele generalise non encore implante")
AMORAJ = CALC_MATR_AJOU(MODELE_FLUIDE = __NOMFLU,
MODELE_INTERFACE = __NOMINT,
if MODE_MECA !=None : mostcles['MODE_MECA'] =MODE_MECA
elif DEPL_IMPO !=None : mostcles['CHAM_NO'] =DEPL_IMPO
else :
- self.cr.fatal("<F> <MACRO_MATR_AJOU> rigidite ajoutee sur modele generalise non encore implante")
- ier=ier+1
- return ier
+ UTMESS('F', "MACRO_MATR_AJOU", "rigidite ajoute sur modele generalise non encore implante")
RIGIAJ = CALC_MATR_AJOU(MODELE_FLUIDE = __NOMFLU,
MODELE_INTERFACE = __NOMINT,
-#@ MODIF macro_matr_asse_ops Macro DATE 01/04/2005 AUTEUR VABHHTS J.PELLET
+#@ MODIF macro_matr_asse_ops Macro DATE 30/01/2006 AUTEUR DURAND C.DURAND
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
Ecriture de la macro MACRO_MATR_ASSE
"""
ier=0
+ from Utilitai.Utmess import UTMESS
# On met le mot cle NUME_DDL dans une variable locale pour le proteger
numeddl=NUME_DDL
NUME_DDL =self.get_cmd('NUME_DDL')
ASSE_MATRICE =self.get_cmd('ASSE_MATRICE')
# La macro compte pour 1 dans la numerotation des commandes
- #self.icmd=1
self.set_icmd(1)
if SOLVEUR:
else:
renum='RCMK'
if renum not in ('SANS','RCMK'):
- ier=ier+1
- self.cr.fatal("<F> <MACRO_MATR_ASSE> Avec methode LDLT, RENUM doit etre SANS ou RCMK.")
- return ier
+ UTMESS('F', "MACRO_MATR_ASSE", "Avec methode LDLT, RENUM doit etre SANS ou RCMK")
elif methode=='MULT_FRONT':
if SOLVEUR['RENUM']:
renum=SOLVEUR['RENUM']
else:
renum='MDA'
if renum not in ('MDA','MD','METIS'):
- ier=ier+1
- self.cr.fatal("<F> <MACRO_MATR_ASSE> Avec methode MULT_FRONT, RENUM doit etre MDA, MD ou RCMK.")
- return ier
+ UTMESS('F', "MACRO_MATR_ASSE", "Avec methode MULT_FRONT, RENUM doit etre MDA, MD ou RCMK")
elif methode=='MUMPS':
if SOLVEUR['RENUM']:
renum=SOLVEUR['RENUM']
else:
renum='SANS'
if renum not in ('SANS',):
- ier=ier+1
- self.cr.fatal("<F> <MACRO_MATR_ASSE> Avec methode MUMPS, RENUM doit etre SANS.")
- return ier
+ UTMESS('F', "MACRO_MATR_ASSE", "Avec methode MUMPS, RENUM doit etre SANS")
elif methode=='GCPC':
if SOLVEUR['RENUM']:
renum=SOLVEUR['RENUM']
else:
renum='SANS'
if renum not in ('SANS','RCMK'):
- ier=ier+1
- self.cr.fatal("<F> <MACRO_MATR_ASSE> Avec methode GCPC, RENUM doit etre SANS ou RCMK.")
- return ier
+ UTMESS('F', "MACRO_MATR_ASSE", "Avec methode GCPC, RENUM doit etre SANS ou RCMK")
else:
methode='MULT_FRONT'
renum ='MDA'
option=m['OPTION']
if iocc == 1 and lnume == 1 and option not in ('RIGI_MECA','RIGI_MECA_LAGR',
'RIGI_THER','RIGI_ACOU') :
- ier=ier+1
- self.cr.fatal("<F> <MACRO_MATR_ASSE> UNE DES OPTIONS DOIT ETRE RIGI_MECA OU RIGI_THER OU RIGI_ACOU OU RIGI_MECA_LAGR")
- return ier
+ UTMESS('F', "MACRO_MATR_ASSE", "UNE DES OPTIONS DOIT ETRE RIGI_MECA OU RIGI_THER OU RIGI_ACOU OU RIGI_MECA_LAGR")
motscles={'OPTION':option}
if option == 'AMOR_MECA':
if (not lrigel or not lmasel):
- ier=ier+1
- self.cr.fatal("""<F> <MACRO_MATR_ASSE> POUR CALCULER AMOR_MECA, IL FAUT AVOIR CALCULE
- RIGI_MECA ET MASS_MECA AUPARAVANT (DANS LE MEME APPEL)""")
- return ier
+ UTMESS('F', "MACRO_MATR_ASSE", "POUR CALCULER AMOR_MECA, IL FAUT AVOIR CALCULE RIGI_MECA ET MASS_MECA AUPARAVANT (DANS LE MEME APPEL)")
if CHAM_MATER != None:
motscles['RIGI_MECA'] =rigel
motscles['MASS_MECA'] =masel
try : motscles['PROPAGATION'] =m['PROPAGATION']
except IndexError : pass
- print motscles
- __a=CALC_MATR_ELEM(MODELE=MODELE,**motscles)
+ _a=CALC_MATR_ELEM(MODELE=MODELE,**motscles)
if option == 'RIGI_MECA':
- rigel = __a
+ rigel = _a
lrigel = 1
if option == 'MASS_MECA':
- masel = __a
+ masel = _a
lmasel = 1
if lnume and option in ('RIGI_MECA','RIGI_THER','RIGI_ACOU','RIGI_MECA_LAGR'):
self.DeclareOut('num',numeddl)
# On peut passer des mots cles egaux a None. Ils sont ignores
- num=NUME_DDL(MATR_RIGI=__a,METHODE=methode,RENUM=renum)
+ num=NUME_DDL(MATR_RIGI=_a,METHODE=methode,RENUM=renum)
else:
num=numeddl
self.DeclareOut('mm',m['MATRICE'])
- mm=ASSE_MATRICE(MATR_ELEM=__a,NUME_DDL=num)
+ mm=ASSE_MATRICE(MATR_ELEM=_a,NUME_DDL=num)
return ier
-#@ MODIF macro_miss_3d_ops Macro DATE 03/11/2004 AUTEUR ACBHHCD G.DEVESA
+#@ MODIF macro_miss_3d_ops Macro DATE 20/03/2006 AUTEUR ACBHHCD G.DEVESA
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
def macro_miss_3d_ops(self,UNITE_IMPR_ASTER,UNITE_OPTI_MISS,
UNITE_MODELE_SOL,UNITE_RESU_IMPE,
- PROJET,REPERTOIRE,OPTION,VERSION,**args):
+ PROJET,REPERTOIRE,OPTION,VERSION,
+ UNITE_RESU_FORC,PARAMETRE,**args):
"""
Ecriture de la macro MACRO_MISS_3D
"""
import types
from Accas import _F
+ from Utilitai.Utmess import UTMESS
+ from types import TupleType, ListType
ier=0
# On importe les definitions des commandes a utiliser dans la macro
DEFI_FICHIER =self.get_cmd('DEFI_FICHIER')
EXEC_LOGICIEL =self.get_cmd('EXEC_LOGICIEL')
# La macro compte pour 1 dans la numerotation des commandes
- #self.icmd=1
self.set_icmd(1)
DEFI_FICHIER(ACTION='LIBERER',UNITE=UNITE_IMPR_ASTER)
popti = 'fort.'+str(UNITE_OPTI_MISS)
pdsol = 'fort.'+str(UNITE_MODELE_SOL)
primp = 'fort.'+str(UNITE_RESU_IMPE)
-
+ prfor = 'fort.'+str(UNITE_RESU_FORC)
+
+ l_para = ['FREQ_MIN','FREQ_MAX','FREQ_PAS','Z0','RFIC','SURF',
+ 'FICH_RESU_IMPE','FICH_RESU_FORC','DREF','ALGO',
+ 'OFFSET_MAX','OFFSET_NB','SPEC_MAX','SPEC_NB','ISSF',
+ 'FICH_POST_TRAI','CONTR_NB','CONTR_LISTE','LFREQ_NB',
+ 'LFREQ_LISTE']
+ if PARAMETRE != None and PARAMETRE['LFREQ_NB'] != None:
+ if len(PARAMETRE['LFREQ_LISTE']) != PARAMETRE['LFREQ_NB']:
+ UTMESS('F', 'MACRO_MISS3D', 'Longueur de LFREQ_LISTE incorrecte')
+ if PARAMETRE != None and PARAMETRE['CONTR_NB'] != None:
+ if len(PARAMETRE['CONTR_LISTE']) != 3*PARAMETRE['CONTR_NB']:
+ UTMESS('F', 'MACRO_MISS3D', 'Longueur de CONTR_LISTE incorrecte')
+
+ dpara = {}
+ for cle in l_para:
+ if cle in ('SURF', 'ISSF'):
+ dpara[cle] = 'NON'
+ else:
+ dpara[cle] = '0'
+ if PARAMETRE != None and PARAMETRE[cle] != None:
+ if type(PARAMETRE[cle]) in (TupleType, ListType):
+ dpara[cle] = ' '.join([str(s) for s in PARAMETRE[cle]])
+ else:
+ dpara[cle] = str(PARAMETRE[cle])
+
EXEC_LOGICIEL(
LOGICIEL=miss3d,
ARGUMENT=(_F(NOM_PARA=MODUL2),
_F(NOM_PARA=popti),
_F(NOM_PARA=pdsol),
_F(NOM_PARA=primp),
- _F(NOM_PARA=VERSION), ),
+ _F(NOM_PARA=VERSION),
+ _F(NOM_PARA=dpara['FREQ_MIN']),
+ _F(NOM_PARA=dpara['FREQ_MAX']),
+ _F(NOM_PARA=dpara['FREQ_PAS']),
+ _F(NOM_PARA=dpara['Z0']),
+ _F(NOM_PARA=dpara['SURF']),
+ _F(NOM_PARA=dpara['RFIC']),
+ _F(NOM_PARA=dpara['FICH_RESU_IMPE']),
+ _F(NOM_PARA=dpara['FICH_RESU_FORC']),
+ _F(NOM_PARA=dpara['DREF']),
+ _F(NOM_PARA=dpara['ALGO']),
+ _F(NOM_PARA=dpara['OFFSET_MAX']),
+ _F(NOM_PARA=dpara['OFFSET_NB']),
+ _F(NOM_PARA=dpara['SPEC_MAX']),
+ _F(NOM_PARA=dpara['SPEC_NB']),
+ _F(NOM_PARA=dpara['ISSF']),
+ _F(NOM_PARA=dpara['FICH_POST_TRAI']),
+ _F(NOM_PARA=dpara['CONTR_NB']),
+ _F(NOM_PARA=dpara['CONTR_LISTE']),
+ _F(NOM_PARA=dpara['LFREQ_NB']),
+ _F(NOM_PARA=dpara['LFREQ_LISTE']),
+ _F(NOM_PARA=prfor),
+ ),
)
return ier
-#@ MODIF macro_mode_meca_ops Macro DATE 30/11/2004 AUTEUR MCOURTOI M.COURTOIS
+#@ MODIF macro_mode_meca_ops Macro DATE 14/06/2005 AUTEUR DURAND C.DURAND
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
EXTR_MODE =self.get_cmd('EXTR_MODE')
DETRUIRE =self.get_cmd('DETRUIRE')
# La macro compte pour 1 dans la numerotation des commandes
- #self.icmd=1
self.set_icmd(1)
nompro=None
-#@ MODIF macro_proj_base_ops Macro DATE 14/09/2004 AUTEUR MCOURTOI M.COURTOIS
+#@ MODIF macro_proj_base_ops Macro DATE 05/09/2005 AUTEUR DURAND C.DURAND
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
Ecriture de la macro MACRO_PROJ_BASE
"""
ier=0
+ from Utilitai.Utmess import UTMESS
# On importe les definitions des commandes a utiliser dans la macro
NUME_DDL_GENE =self.get_cmd('NUME_DDL_GENE')
PROJ_MATR_BASE =self.get_cmd('PROJ_MATR_BASE')
PROJ_VECT_BASE =self.get_cmd('PROJ_VECT_BASE')
# La macro compte pour 1 dans la numerotation des commandes
- #self.icmd=1
self.set_icmd(1)
_num=NUME_DDL_GENE(BASE=BASE,NB_VECT=NB_VECT,STOCKAGE=PROFIL)
if m['MATR_ASSE'] : motscles['MATR_ASSE'] =m['MATR_ASSE']
elif m['MATR_ASSE_GENE']: motscles['MATR_ASSE_GENE']=m['MATR_ASSE_GENE']
else:
- ier=ier+1
- self.cr.fatal("<F> <MACRO_PROJ_BASE> MATR_ASSE et MATR_ASSE_GENE absents")
- return ier
+ UTMESS('F', "MACRO_PROJ_BASE", "MATR_ASSE et MATR_ASSE_GENE absents")
self.DeclareOut('mm',m['MATRICE'])
mm=PROJ_MATR_BASE(BASE=BASE,NUME_DDL_GENE=_num,**motscles)
if v['VECT_ASSE'] : motscles['VECT_ASSE'] =v['VECT_ASSE']
elif v['VECT_ASSE_GENE']: motscles['VECT_ASSE_GENE']=v['VECT_ASSE_GENE']
else:
- ier=ier+1
- self.cr.fatal("<F> <MACRO_PROJ_BASE>MATR_ASSE et MATR_ASSE_GENE absents")
- return ier
+ UTMESS('F', "MACRO_PROJ_BASE", "MATR_ASSE et MATR_ASSE_GENE absents")
motscles['TYPE_VECT']=v['TYPE_VECT']
self.DeclareOut('vv',v['VECTEUR'])
vv=PROJ_VECT_BASE(BASE=BASE,NUME_DDL_GENE=_num,**motscles)
--- /dev/null
+#@ MODIF post_k1_k2_k3_ops Macro DATE 22/05/2006 AUTEUR REZETTE C.REZETTE
+# -*- coding: iso-8859-1 -*-
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2006 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+
+def veri_tab(tab,nom,ndim) :
+ from Utilitai.Utmess import UTMESS
+ macro = 'POST_K1_K2_K3'
+ for label in ('DX','DY','COOR_X','COOR_Y','ABSC_CURV') :
+ if label not in tab.para :
+ message='le label '+label+' doit etre present dans la table : '+nom
+ UTMESS('F', macro, message)
+ if ndim==3 :
+ if 'DZ' not in tab.para :
+ message='le label DZ doit etre present dans la table : '+nom
+ UTMESS('F', macro, message)
+ if 'COOR_Z' not in tab.para :
+ message='le label COOR_Z doit etre present dans la table : '+nom
+ UTMESS('F', macro, message)
+
+def cross_product(a,b):
+ cross = [0]*3
+ cross[0] = a[1]*b[2]-a[2]*b[1]
+ cross[1] = a[2]*b[0]-a[0]*b[2]
+ cross[2] = a[0]*b[1]-a[1]*b[0]
+ return cross
+
+def post_k1_k2_k3_ops(self,MODELISATION,FOND_FISS,MATER,RESULTAT,
+ TABL_DEPL_SUP,TABL_DEPL_INF,ABSC_CURV_MAXI,PREC_VIS_A_VIS,
+ TOUT_ORDRE,NUME_ORDRE,LIST_ORDRE,INST,LIST_INST,SYME_CHAR,
+ INFO,VECT_K1,TITRE,**args):
+ """
+ Macro POST_K1_K2_K3
+ Calcul des facteurs d'intensité de contraintes en 2D et en 3D
+ par extrapolation des sauts de déplacements sur les lèvres de
+ la fissure. Produit une table.
+ """
+ import aster
+ import string
+ import copy
+ import math
+ import Numeric
+ from Numeric import array,asarray,Float,sqrt,matrixmultiply,transpose,sign,resize,dot,multiply
+ from math import pi
+ from types import ListType, TupleType
+ from Accas import _F
+ from Utilitai.Table import Table, merge
+ EnumTypes = (ListType, TupleType)
+
+ macro = 'POST_K1_K2_K3'
+ from Accas import _F
+ from Utilitai.Utmess import UTMESS
+
+ ier = 0
+ # La macro compte pour 1 dans la numerotation des commandes
+ self.set_icmd(1)
+
+ # Le concept sortant (de type table_sdaster ou dérivé) est tab
+ self.DeclareOut('tabout', self.sd)
+
+ # On importe les definitions des commandes a utiliser dans la macro
+ # Le nom de la variable doit etre obligatoirement le nom de la commande
+ CREA_TABLE = self.get_cmd('CREA_TABLE')
+ CALC_TABLE = self.get_cmd('CALC_TABLE')
+ IMPR_TABLE = self.get_cmd('IMPR_TABLE')
+ POST_RELEVE_T = self.get_cmd('POST_RELEVE_T')
+ DETRUIRE = self.get_cmd('DETRUIRE')
+ MACR_LIGN_COUPE = self.get_cmd('MACR_LIGN_COUPE')
+
+# ------------------------------------------------------------------
+# CARACTERISTIQUES MATERIAUX
+# ------------------------------------------------------------------
+ matph = aster.getvectjev( string.ljust(MATER.nom,8)+'.MATERIAU.NOMRC ')
+ phenom=None
+ for cmpt in matph :
+ if cmpt[:4]=='ELAS' :
+ phenom=cmpt
+ break
+ if phenom==None : UTMESS('F', macro, 'IL FAUT DEFINIR ELAS DANS DEFI_MATERIAU')
+# --- RECHERCHE SI LE MATERIAU DEPEND DE LA TEMPERATURE:
+ valk = aster.getvectjev( string.ljust(MATER.nom,8)+'.'+phenom[:10]+'.VALK')
+ valk = [x.strip() for x in valk]
+ valr = aster.getvectjev( string.ljust(MATER.nom,8)+'.'+phenom[:10]+'.VALR')
+ dicmat=dict(zip(valk,valr))
+# --- PROPRIETES MATERIAUX DEPENDANTES DE LA TEMPERATURE
+ Tempe3D = False
+ if dicmat.has_key('TEMP_DEF') and FOND_FISS and RESULTAT :
+# on recupere juste le nom du resultat thermique
+ ndim = 3
+ Lchar = aster.getvectjev(string.ljust(RESULTAT.nom,8)+'.0000.EXCIT.LCHA ')
+ for i in range(len(Lchar)):
+ resuth = aster.getvectjev(Lchar[i][0:8]+'.CHME.TEMPE.TEMP ')
+ if resuth !=None :
+ Tempe3D = True
+ break
+ elif dicmat.has_key('TEMP_DEF') and not Tempe3D :
+ message = 'LES PROPRIETES MATERIAUX, NECESSAIRES AUX CALCULS \n'
+ message = message +'DES COEFFICIENTS D INTENSITE DES CONTRAINTES, ONT ETE OBTENUES A LA\n'
+ message = message +'TEMPERATURE DE REFERENCE DU MATERIAU ET NON A LA TEMPERATURE CALCULEE.'
+ UTMESS('A', macro, message)
+ nompar = ('TEMP',)
+ valpar = (dicmat['TEMP_DEF'],)
+ nomres=['E','NU']
+ valres,codret = MATER.RCVALE('ELAS',nompar,valpar,nomres,'F')
+ e = valres[0]
+ nu = valres[1]
+
+
+# --- PROPRIETES MATERIAUX INDEPENDANTES DE LA TEMPERATURE
+ else :
+ e = dicmat['E']
+ nu = dicmat['NU']
+
+ if not Tempe3D :
+ coefd3 = 0.
+ coefd = e * sqrt(2.*pi)
+ unmnu2 = 1. - nu**2
+ unpnu = 1. + nu
+ if MODELISATION=='3D' :
+ UTMESS('I', macro, 'l operateur CALC_G -option CALC_K_G- calcule plus precisement les K1 K2 K3')
+ ndim = 3
+ coefd = coefd / ( 8.0 * unmnu2 )
+ coefd3 = e*sqrt(2*pi) / ( 8.0 * unpnu )
+ coefg = unmnu2 / e
+ coefg3 = unpnu / e
+ elif MODELISATION=='AXIS' :
+ ndim = 2
+ coefd = coefd / ( 8. * unmnu2 )
+ coefg = unmnu2 / e
+ coefg3 = unpnu / e
+ elif MODELISATION=='D_PLAN' :
+ UTMESS('I', macro, 'l operateur CALC_G -option CALC_K_G- calcule plus precisement les K1 K2')
+ ndim = 2
+ coefd = coefd / ( 8. * unmnu2 )
+ coefg = unmnu2 / e
+ coefg3 = unpnu / e
+ elif MODELISATION=='C_PLAN' :
+ UTMESS('I', macro, 'l operateur CALC_G -option CALC_K_G- calcule plus precisement les K1 K2')
+ ndim = 2
+ coefd = coefd / 8.
+ coefg = 1. / e
+ coefg3 = unpnu / e
+ else :
+ UTMESS('F', macro, 'modélisation non implantée')
+
+
+# ------------------------------------------------------------------
+# CAS FOND_FISS
+# ------------------------------------------------------------------
+ if FOND_FISS :
+ MAILLAGE = args['MAILLAGE']
+ NOEUD = args['NOEUD']
+ SANS_NOEUD = args['SANS_NOEUD']
+ GROUP_NO = args['GROUP_NO']
+ SANS_GROUP_NO = args['SANS_GROUP_NO']
+ TOUT = args['TOUT']
+ TYPE_MAILLAGE = args['TYPE_MAILLAGE']
+ NB_NOEUD_COUPE = args['NB_NOEUD_COUPE']
+ LNOFO = aster.getvectjev(string.ljust(FOND_FISS.nom,8)+'.FOND .NOEU ')
+ RECOL = False
+# Cas double fond de fissure : par convention les noeuds sont ceux de fond_inf
+ if LNOFO==None :
+ RECOL = True
+ LNOFO = aster.getvectjev(string.ljust(FOND_FISS.nom,8)+'.FOND_INF .NOEU ')
+ if LNOFO==None : UTMESS('F', macro, 'PROBLEME A LA RECUPERATION DES NOEUDS DU FOND DE FISSURE')
+ LNOFO = map(string.rstrip,LNOFO)
+ Nbfond = len(LNOFO)
+
+# ----------Mots cles TOUT, NOEUD, SANS_NOEUD -------------
+ Typ = aster.getvectjev(string.ljust(FOND_FISS.nom,8)+'.FOND .TYPE ')
+ if (Typ[0]=='SEG2 ') or (Typ[0]=='SEG3 ' and TOUT=='OUI') :
+ pas = 1
+ elif (Typ[0]=='SEG3 ') :
+ pas = 2
+ else :
+ UTMESS('F', macro, 'TYPE DE MAILLES DU FOND DE FISSURE NON DEFINI')
+####
+ NO_SANS = []
+ NO_AVEC = []
+ if GROUP_NO!=None :
+ collgrno=aster.getcolljev(string.ljust(MAILLAGE.nom,8)+'.GROUPENO')
+ cnom = aster.getvectjev(string.ljust(MAILLAGE.nom,8)+'.NOMNOE')
+ if type(GROUP_NO) not in EnumTypes : GROUP_NO = (GROUP_NO,)
+ for m in range(len(GROUP_NO)) :
+ ngrno=GROUP_NO[m].ljust(8).upper()
+ if ngrno not in collgrno.keys() :
+ UTMESS('F', macro, "LE GROUP_NO "+ngrno+" N EST PAS DANS LE MAILLAGE")
+ for i in range(len(collgrno[ngrno])) : NO_AVEC.append(cnom[collgrno[ngrno][i]-1])
+ NO_AVEC= map(string.rstrip,NO_AVEC)
+ if NOEUD!=None :
+ if type(NOEUD) not in EnumTypes : NO_AVEC = (NOEUD,)
+ else : NO_AVEC = NOEUD
+ if SANS_GROUP_NO!=None :
+ collgrno=aster.getcolljev(string.ljust(MAILLAGE.nom,8)+'.GROUPENO')
+ cnom = aster.getvectjev(string.ljust(MAILLAGE.nom,8)+'.NOMNOE')
+ if type(SANS_GROUP_NO) not in EnumTypes : SANS_GROUP_NO = (SANS_GROUP_NO,)
+ for m in range(len(SANS_GROUP_NO)) :
+ ngrno=SANS_GROUP_NO[m].ljust(8).upper()
+ if ngrno not in collgrno.keys() :
+ UTMESS('F', macro, "LE GROUP_NO "+ngrno+" N EST PAS DANS LE MAILLAGE")
+ for i in range(len(collgrno[ngrno])) : NO_SANS.append(cnom[collgrno[ngrno][i]-1])
+ NO_SANS= map(string.rstrip,NO_SANS)
+ if SANS_NOEUD!=None :
+ if type(SANS_NOEUD) not in EnumTypes : NO_SANS = (SANS_NOEUD,)
+ else : NO_SANS = SANS_NOEUD
+# Creation de la liste des noeuds du fond a traiter : Lnf1
+ Lnf1 = []
+ Nbf1 = 0
+ if len(NO_AVEC)!=0 :
+ for i in range(len(NO_AVEC)) :
+ if NO_AVEC[i] in LNOFO :
+ Lnf1.append(NO_AVEC[i])
+ Nbf1 = Nbf1 +1
+ else :
+ UTMESS('F', macro, 'LE NOEUD %s N APPARTIENT PAS AU FOND DE FISSURE'%NO_AVEC[i])
+ else :
+ for i in range(0,Nbfond,pas) :
+ if not (LNOFO[i] in NO_SANS) :
+ Lnf1.append(LNOFO[i])
+ Nbf1 = Nbf1 +1
+
+##### Cas maillage libre###########
+# creation des directions normales et macr_lign_coup
+ if TYPE_MAILLAGE =='LIBRE':
+ if not RESULTAT : UTMESS('F', macro, 'MOT CLE RESULTAT OBLIGATOIRE POUR TYPE_MAILLAGE = LIBRE')
+ Lnofon = Lnf1
+ Nbnofo = Nbf1
+ ListmaS = aster.getvectjev(string.ljust(FOND_FISS.nom,8)+'.LEVRESUP .MAIL ')
+ if SYME_CHAR=='SANS':
+ ListmaI = aster.getvectjev(string.ljust(FOND_FISS.nom,8)+'.LEVREINF .MAIL ')
+ __NCOFON=POST_RELEVE_T(ACTION=_F(INTITULE='Tab pour coordonnees noeuds du fond',
+ NOEUD=LNOFO,
+ RESULTAT=RESULTAT,
+ NOM_CHAM='DEPL',NUME_ORDRE=1,NOM_CMP=('DX',),
+ OPERATION='EXTRACTION',),);
+ tcoorf=__NCOFON.EXTR_TABLE()
+ DETRUIRE(CONCEPT=_F(NOM=__NCOFON),INFO=1)
+ nbt = len(tcoorf['NOEUD'].values()['NOEUD'])
+ xs=array(tcoorf['COOR_X'].values()['COOR_X'][:nbt],Float)
+ ys=array(tcoorf['COOR_Y'].values()['COOR_Y'][:nbt],Float)
+ if ndim==2 : zs=Numeric.zeros(nbval,Float)
+ elif ndim==3 : zs=array(tcoorf['COOR_Z'].values()['COOR_Z'][:nbt],Float)
+ ns = tcoorf['NOEUD'].values()['NOEUD'][:nbt]
+ ns = map(string.rstrip,ns)
+ l_coorf = [[ns[i],xs[i],ys[i],zs[i]] for i in range(0,nbt)]
+ l_coorf = [(i[0],i[1:]) for i in l_coorf]
+ d_coorf = dict(l_coorf)
+# Calcul des normales a chaque noeud du fond
+ v1 = array(VECT_K1)
+ VN = [None]*Nbfond
+ absfon = [0,]
+ DTANOR = aster.getvectjev(string.ljust(FOND_FISS.nom,8)+'.DTAN_ORIGINE')
+ if DTANOR != None :
+ VN[0] = array(DTANOR)
+ else :
+ Pfon2 = array([d_coorf[LNOFO[0]][0],d_coorf[LNOFO[0]][1],d_coorf[LNOFO[0]][2]])
+ Pfon3 = array([d_coorf[LNOFO[1]][0],d_coorf[LNOFO[1]][1],d_coorf[LNOFO[1]][2]])
+ VT = (Pfon3 - Pfon2)/sqrt(dot(transpose(Pfon3-Pfon2),Pfon3-Pfon2))
+ VN[i] = array(cross_product(VT,v1))
+ for i in range(1,Nbfond-1):
+ Pfon1 = array([d_coorf[LNOFO[i-1]][0],d_coorf[LNOFO[i-1]][1],d_coorf[LNOFO[i-1]][2]])
+ Pfon2 = array([d_coorf[LNOFO[i]][0],d_coorf[LNOFO[i]][1],d_coorf[LNOFO[i]][2]])
+ Pfon3 = array([d_coorf[LNOFO[i+1]][0],d_coorf[LNOFO[i+1]][1],d_coorf[LNOFO[i+1]][2]])
+ absf = sqrt(dot(transpose(Pfon1-Pfon2),Pfon1-Pfon2)) + absfon[i-1]
+ absfon.append(absf)
+ VT = (Pfon3 - Pfon2)/sqrt(dot(transpose(Pfon3-Pfon2),Pfon3-Pfon2))
+ VT = VT+(Pfon2 - Pfon1)/sqrt(dot(transpose(Pfon2-Pfon1),Pfon2-Pfon1))
+ VN[i] = array(cross_product(VT,v1))
+ VN[i] = VN[i]/sqrt(dot(transpose(VN[i]),VN[i]))
+ i = Nbfond-1
+ Pfon1 = array([d_coorf[LNOFO[i-1]][0],d_coorf[LNOFO[i-1]][1],d_coorf[LNOFO[i-1]][2]])
+ Pfon2 = array([d_coorf[LNOFO[i]][0],d_coorf[LNOFO[i]][1],d_coorf[LNOFO[i]][2]])
+ absf = sqrt(dot(transpose(Pfon1-Pfon2),Pfon1-Pfon2)) + absfon[i-1]
+ absfon.append(absf)
+ DTANEX = aster.getvectjev(string.ljust(FOND_FISS.nom,8)+'.DTAN_EXTREMITE')
+ if DTANEX != None :
+ VN[i] = array(DTANEX)
+ else :
+ VT = (Pfon2 - Pfon1)/sqrt(dot(transpose(Pfon2-Pfon1),Pfon2-Pfon1))
+ VN[i] = array(cross_product(VT,v1))
+ dicoF = dict([(LNOFO[i],absfon[i]) for i in range(Nbfond)])
+ dicVN = dict([(LNOFO[i],VN[i]) for i in range(Nbfond)])
+#Extraction dep sup/inf sur les normales
+ TlibS = [None]*Nbf1
+ TlibI = [None]*Nbf1
+ if NB_NOEUD_COUPE < 3 :
+ message = 'LE NOMBRE DE NOEUDS NB_NOEUD_COUPE DOIT ETRE SUPERIEUR A 3 : ON PREND LA VALEUR PAR DEFAUT'
+ UTMESS('A', macro, message)
+ NB_NOEUD_COUPE = 5
+ MOD = aster.getvectjev(string.ljust(RESULTAT.nom,19)+'.MODL ')
+ if MOD==None : UTMESS('F', macro, 'PROBLEME A LA RECUPERATION DU MODELE DANS LA SD RESULTAT FOURNIE')
+ MOD = map(string.rstrip,MOD)
+ MODEL = self.jdc.sds_dict[MOD[0]]
+ for i in range(Nbf1):
+ Porig = array(d_coorf[Lnf1[i]] )
+ Pextr = Porig - ABSC_CURV_MAXI*dicVN[Lnf1[i]]
+ TlibS[i] = MACR_LIGN_COUPE(RESULTAT=RESULTAT,
+ NOM_CHAM='DEPL',MODELE=MODEL, MAILLE = ListmaS,
+ LIGN_COUPE=_F(NB_POINTS=NB_NOEUD_COUPE,COOR_ORIG=(Porig[0],Porig[1],Porig[2],),
+ COOR_EXTR=(Pextr[0],Pextr[1],Pextr[2]),),);
+ if SYME_CHAR=='SANS':
+ TlibI[i] = MACR_LIGN_COUPE(RESULTAT=RESULTAT,
+ NOM_CHAM='DEPL',MODELE=MODEL, MAILLE = ListmaI,
+ LIGN_COUPE=_F(NB_POINTS=NB_NOEUD_COUPE,COOR_ORIG=(Porig[0],Porig[1],Porig[2],),
+ COOR_EXTR=(Pextr[0],Pextr[1],Pextr[2]),),);
+
+
+##### Cas maillage regle###########
+ else:
+# ---------- Dictionnaires des levres -------------
+ NnormS = aster.getvectjev(string.ljust(FOND_FISS.nom,8)+'.SUPNORM .NOEU ')
+ if NnormS==None : UTMESS('F', macro, 'PROBLEME A LA RECUPERATION DES NOEUDS DES LEVRES')
+ NnormS = map(string.rstrip,NnormS)
+ if LNOFO[0]==LNOFO[-1] : Nbfond=Nbfond-1 # Cas fond de fissure ferme
+ NnormS = [[LNOFO[i],NnormS[i*20:(i+1)*20]] for i in range(0,Nbfond)]
+ NnormS = [(i[0],i[1][0:]) for i in NnormS]
+ dicoS = dict(NnormS)
+ if SYME_CHAR=='SANS':
+ NnormI = aster.getvectjev(string.ljust(FOND_FISS.nom,8)+'.INFNORM .NOEU ')
+ NnormI = map(string.rstrip,NnormI)
+ NnormI = [[LNOFO[i],NnormI[i*20:(i+1)*20]] for i in range(0,Nbfond)]
+ NnormI = [(i[0],i[1][0:]) for i in NnormI]
+ dicoI = dict(NnormI)
+
+# ---------- Dictionnaire des coordonnees -------------
+ if RESULTAT :
+ Ltot = LNOFO
+ for i in range(Nbf1) :
+ for k in range(0,20) :
+ if dicoS[Lnf1[i]][k] !='': Ltot.append(dicoS[Lnf1[i]][k])
+ if SYME_CHAR=='SANS':
+ for i in range(Nbf1) :
+ for k in range(0,20) :
+ if dicoI[Lnf1[i]][k] !='': Ltot.append(dicoI[Lnf1[i]][k])
+ Ltot=dict([(i,0) for i in Ltot]).keys()
+ __NCOOR=POST_RELEVE_T(ACTION=_F(INTITULE='Tab pour coordonnees noeuds des levres',
+ NOEUD=Ltot,
+ RESULTAT=RESULTAT,
+ NOM_CHAM='DEPL',NUME_ORDRE=1,NOM_CMP=('DX',),
+ OPERATION='EXTRACTION',),);
+ tcoor=__NCOOR.EXTR_TABLE()
+ DETRUIRE(CONCEPT=_F(NOM=__NCOOR),INFO=1)
+ else :
+ if SYME_CHAR=='SANS':
+ __NCOOR=CALC_TABLE(TABLE=TABL_DEPL_SUP,
+ ACTION=_F(OPERATION = 'COMB',NOM_PARA='NOEUD',TABLE=TABL_DEPL_INF,))
+ tcoor=__NCOOR.EXTR_TABLE()
+ DETRUIRE(CONCEPT=_F(NOM=__NCOOR),INFO=1)
+ else :
+ tcoor=TABL_DEPL_SUP.EXTR_TABLE()
+ nbt = len(tcoor['NOEUD'].values()['NOEUD'])
+ xs=array(tcoor['COOR_X'].values()['COOR_X'][:nbt],Float)
+ ys=array(tcoor['COOR_Y'].values()['COOR_Y'][:nbt],Float)
+ if ndim==2 : zs=Numeric.zeros(nbval,Float)
+ elif ndim==3 : zs=array(tcoor['COOR_Z'].values()['COOR_Z'][:nbt],Float)
+ ns = tcoor['NOEUD'].values()['NOEUD'][:nbt]
+ ns = map(string.rstrip,ns)
+ l_coor = [[ns[i],xs[i],ys[i],zs[i]] for i in range(0,nbt)]
+ l_coor = [(i[0],i[1:]) for i in l_coor]
+ d_coor = dict(l_coor)
+
+# ---------- Abscisse curviligne du fond -------------
+ absfon = [0,]
+ for i in range(Nbfond-1) :
+ Pfon1 = array([d_coor[LNOFO[i]][0],d_coor[LNOFO[i]][1],d_coor[LNOFO[i]][2]])
+ Pfon2 = array([d_coor[LNOFO[i+1]][0],d_coor[LNOFO[i+1]][1],d_coor[LNOFO[i+1]][2]])
+ absf = sqrt(dot(transpose(Pfon1-Pfon2),Pfon1-Pfon2)) + absfon[i]
+ absfon.append(absf)
+ dicoF = dict([(LNOFO[i],absfon[i]) for i in range(Nbfond)])
+
+
+# ---Noeuds LEVRE_SUP et LEVRE_INF: ABSC_CURV_MAXI et PREC_VIS_A_VIS-----
+
+ NBTRLS = 0
+ NBTRLI = 0
+ Lnosup = [None]*Nbf1
+ Lnoinf = [None]*Nbf1
+ Nbnofo = 0
+ Lnofon = []
+ precv = PREC_VIS_A_VIS
+ if ABSC_CURV_MAXI!=None : rmax = ABSC_CURV_MAXI
+ else : rmax = 100
+ precn = precv * rmax
+ rmprec= rmax*(1.+precv/10.)
+ for i in range(0,Nbf1) :
+ Pfon = array([d_coor[Lnf1[i]][0],d_coor[Lnf1[i]][1],d_coor[Lnf1[i]][2]])
+ Tmpsup = []
+ Tmpinf = []
+ itots = 0
+ itoti = 0
+ NBTRLS = 0
+ NBTRLI = 0
+ for k in range(0,20) :
+ if dicoS[Lnf1[i]][k] !='':
+ itots = itots +1
+ Nsup = dicoS[Lnf1[i]][k]
+ Psup = array([d_coor[Nsup][0],d_coor[Nsup][1],d_coor[Nsup][2]])
+ abss = sqrt(dot(transpose(Pfon-Psup),Pfon-Psup))
+ if abss<rmprec :
+ NBTRLS = NBTRLS +1
+ Tmpsup.append(dicoS[Lnf1[i]][k])
+ if SYME_CHAR=='SANS':
+ if dicoI[Lnf1[i]][k] !='':
+ itoti = itoti +1
+ Ninf = dicoI[Lnf1[i]][k]
+ Pinf = array([d_coor[Ninf][0],d_coor[Ninf][1],d_coor[Ninf][2]])
+ absi = sqrt(dot(transpose(Pfon-Pinf),Pfon-Pinf))
+# On verifie que les noeuds sont en vis a vis
+ if abss<rmprec :
+ dist = sqrt(dot(transpose(Psup-Pinf),Psup-Pinf))
+ if dist>precn :
+ message= 'LES NOEUDS NE SONT PAS EN VIS-A-VIS \n'
+ message=message+'DANS LE PLAN PERPENDICULAIRE AU NOEUD %s \n'%Lnf1[i]
+ UTMESS('A', macro, message)
+ else :
+ NBTRLI = NBTRLI +1
+ Tmpinf.append(dicoI[Lnf1[i]][k])
+# On verifie qu il y a assez de noeuds
+ if NBTRLS < 3 :
+ message= 'IL MANQUE DES POINTS DANS LE PLAN DEFINI PAR LA LEVRE \n'
+ message=message+'SUPERIEURE ET PERPENDICULAIRE AU FOND %s :\n'%Lnf1[i]
+ if itots<3 : message=message+' Augmenter PREC_NORM dans DEFI_FOND_FISS \n'
+ else : message=message+' Augmenter ABSC_CURV_MAXI'
+ if Lnf1[i]==LNOFO[0] or Lnf1[i]==LNOFO[-1]: message=message+' OU VERIFIER LES TANGENTES EXTREMITES'
+ UTMESS('A',macro, message)
+ elif (SYME_CHAR=='SANS') and (NBTRLI < 3) :
+ message= 'IL MANQUE DES POINTS DANS LE PLAN DEFINI PAR LA LEVRE \n'
+ message=message+'INFERIEURE ET PERPENDICULAIRE AU FOND %s :\n'%Lnf1[i]
+ if itoti<3 : message=message+' Augmenter PREC_NORM dans DEFI_FOND_FISS \n'
+ else : message=message+' Augmenter ABSC_CURV_MAXI'
+ if Lnf1[i]==LNOFO[0] or Lnf1[i]==LNOFO[-1]: message=message+' OU VERIFIER LES TANGENTES EXTREMITES'
+ UTMESS('A',macro, message)
+ else :
+ Lnosup[Nbnofo] = Tmpsup
+ if SYME_CHAR=='SANS' : Lnoinf[Nbnofo] = Tmpinf
+ Lnofon.append(Lnf1[i])
+ Nbnofo = Nbnofo+1
+
+ else :
+ Nbnofo = 1
+
+# ----------Recuperation de la temperature au fond -------------
+ if Tempe3D :
+ resuth = map(string.rstrip,resuth)
+ Rth = self.jdc.sds_dict[resuth[0]]
+ __TEMP=POST_RELEVE_T(ACTION=_F(INTITULE='Temperature fond de fissure',
+ NOEUD=Lnofon,TOUT_CMP='OUI',
+ RESULTAT=Rth,NOM_CHAM='TEMP',TOUT_ORDRE='OUI',
+ OPERATION='EXTRACTION',),);
+ tabtemp=__TEMP.EXTR_TABLE()
+ DETRUIRE(CONCEPT=_F(NOM=__TEMP),INFO=1)
+
+
+# ------------------------------------------------------------------
+# BOUCLE SUR NOEUDS DU FOND
+# ------------------------------------------------------------------
+ for ino in range(0,Nbnofo) :
+ if FOND_FISS and INFO==2 :
+ texte="\n\n--> TRAITEMENT DU NOEUD DU FOND DE FISSURE: %s"%Lnofon[ino]
+ aster.affiche('MESSAGE',texte)
+# ------------------------------------------------------------------
+# TABLE 'DEPSUP'
+# ------------------------------------------------------------------
+ if FOND_FISS :
+ if TYPE_MAILLAGE =='LIBRE':
+ tabsup=TlibS[ino].EXTR_TABLE()
+ DETRUIRE(CONCEPT=_F(NOM=TlibS[ino]),INFO=1)
+ elif RESULTAT :
+ __TSUP=POST_RELEVE_T(ACTION=_F(INTITULE='Deplacement SUP',
+ NOEUD=Lnosup[ino],
+ RESULTAT=RESULTAT,
+ NOM_CHAM='DEPL',
+ TOUT_ORDRE='OUI',
+ NOM_CMP=('DX','DY','DZ',),
+ OPERATION='EXTRACTION',),);
+ tabsup=__TSUP.EXTR_TABLE()
+ DETRUIRE(CONCEPT=_F(NOM=__TSUP),INFO=1)
+ else :
+ tabsup=TABL_DEPL_SUP.EXTR_TABLE()
+ veri_tab(tabsup,TABL_DEPL_SUP.nom,ndim)
+ Ls = [string.ljust(Lnosup[ino][i],8) for i in range(len(Lnosup[ino]))]
+ tabsup=tabsup.NOEUD==Ls
+ else :
+ tabsup=TABL_DEPL_SUP.EXTR_TABLE()
+ veri_tab(tabsup,TABL_DEPL_SUP.nom,ndim)
+
+# ------------------------------------------------------------------
+# TABLE 'DEPINF'
+# ------------------------------------------------------------------
+ if SYME_CHAR=='SANS':
+ if FOND_FISS :
+ if TYPE_MAILLAGE =='LIBRE':
+ tabinf=TlibI[ino].EXTR_TABLE()
+ DETRUIRE(CONCEPT=_F(NOM=TlibI[ino]),INFO=1)
+ elif RESULTAT :
+ __TINF=POST_RELEVE_T(ACTION=_F(INTITULE='Deplacement INF',
+ NOEUD=Lnoinf[ino],
+ RESULTAT=RESULTAT,
+ NOM_CHAM='DEPL',
+ TOUT_ORDRE='OUI',
+ NOM_CMP=('DX','DY','DZ',),
+ OPERATION='EXTRACTION',),);
+ tabinf=__TINF.EXTR_TABLE()
+ DETRUIRE(CONCEPT=_F(NOM=__TINF),INFO=1)
+ else :
+ tabinf=TABL_DEPL_INF.EXTR_TABLE()
+ if TABL_DEPL_INF==None : UTMESS('F', macro, 'TABL_DEPL_SUP et TABL_DEPL_INF sont obligatoires si SYME_CHAR=SANS')
+ veri_tab(tabinf,TABL_DEPL_INF.nom,ndim)
+ Li = [string.ljust(Lnoinf[ino][i],8) for i in range(len(Lnoinf[ino]))]
+ tabinf=tabinf.NOEUD==Li
+ else :
+ if TABL_DEPL_INF==None : UTMESS('F', macro, 'TABL_DEPL_SUP et TABL_DEPL_INF sont obligatoires si SYME_CHAR=SANS')
+ tabinf=TABL_DEPL_INF.EXTR_TABLE()
+ veri_tab(tabinf,TABL_DEPL_INF.nom,ndim)
+
+
+# ------------------------------------------------------------------
+# LES INSTANTS DE POST-TRAITEMENT
+# ------------------------------------------------------------------
+ if 'INST' in tabsup.para :
+ l_inst=None
+ l_inst_tab=tabsup['INST'].values()['INST']
+ l_inst_tab=dict([(i,0) for i in l_inst_tab]).keys() #elimine les doublons
+ if LIST_ORDRE !=None or NUME_ORDRE !=None :
+ l_ord_tab = tabsup['NUME_ORDRE'].values()['NUME_ORDRE']
+ l_ord_tab=dict([(i,0) for i in l_ord_tab]).keys()
+ d_ord_tab= [[l_ord_tab[i],l_inst_tab[i]] for i in range(0,len(l_ord_tab))]
+ d_ord_tab= [(i[0],i[1]) for i in d_ord_tab]
+ d_ord_tab = dict(d_ord_tab)
+ if NUME_ORDRE !=None :
+ if type(NUME_ORDRE) not in EnumTypes : NUME_ORDRE=(NUME_ORDRE,)
+ l_ord=list(NUME_ORDRE)
+ elif LIST_ORDRE !=None :
+ l_ord= aster.getvectjev(string.ljust(LIST_ORDRE.nom,19)+'.VALE')
+ l_inst = []
+ for ord in l_ord :
+ if ord in l_ord_tab : l_inst.append(d_ord_tab[ord])
+ else :
+ message ='LE NUMERO D ORDRE %i N A PAS ETE ETE TROUVE DANS LA TABLE\n'%ord
+ UTMESS('F', macro, message)
+ if INST !=None or LIST_INST !=None :
+ CRITERE = args['CRITERE']
+ PRECISION = args['PRECISION']
+ else :
+ l_inst=l_inst_tab
+ PRECISION = 1.E-6
+ CRITERE='ABSOLU'
+ if INST !=None :
+ if type(INST) not in EnumTypes : INST=(INST,)
+ l_inst=list(INST)
+ elif LIST_INST !=None : l_inst=LIST_INST.Valeurs()
+ if l_inst !=None :
+ for inst in l_inst :
+ if CRITERE=='RELATIF' and inst!=0.: match=[x for x in l_inst_tab if abs((inst-x)/inst)<PRECISION]
+ else : match=[x for x in l_inst_tab if abs(inst-x)<PRECISION]
+ if len(match)==0 :
+ message = 'PAS D INSTANT TROUVE DANS LA TABLE POUR L INSTANT %f\n'%inst
+ UTMESS('F', macro, message)
+ if len(match)>=2 :
+ message = 'PLUSIEURS INSTANTS TROUVES DANS LA TABLE POUR L INSTANT %f\n'%inst
+ UTMESS('F', macro, message)
+ else :
+ l_inst = l_inst_tab
+ else :
+ l_inst = [None,]
+
+# ------------------------------------------------------------------
+# BOUCLE SUR LES INSTANTS
+# ------------------------------------------------------------------
+ for iord in range(len(l_inst)) :
+ inst=l_inst[iord]
+ if INFO==2 and inst!=None:
+ texte="==> INSTANT: %f"%inst
+ aster.affiche('MESSAGE',texte)
+ if inst!=None:
+ if PRECISION == None : PRECISION = 1.E-6
+ if CRITERE == None : CRITERE='ABSOLU'
+ if inst==0. :
+ tabsupi=tabsup.INST.__eq__(VALE=inst,CRITERE='ABSOLU',PRECISION=PRECISION)
+ if SYME_CHAR=='SANS': tabinfi=tabinf.INST.__eq__(VALE=inst,CRITERE='ABSOLU',PRECISION=PRECISION)
+ else :
+ tabsupi=tabsup.INST.__eq__(VALE=inst,CRITERE=CRITERE,PRECISION=PRECISION)
+ if SYME_CHAR=='SANS': tabinfi=tabinf.INST.__eq__(VALE=inst,CRITERE=CRITERE,PRECISION=PRECISION)
+ else :
+ tabsupi=tabsup
+ if SYME_CHAR=='SANS': tabinfi=tabinf
+
+# --- LEVRE SUP : "ABSC_CURV" CROISSANTES, < RMAX ET DEP ---
+ abscs = getattr(tabsupi,'ABSC_CURV').values()
+ if not FOND_FISS :
+ refs=copy.copy(abscs)
+ refs.sort()
+ if refs!=abscs : UTMESS('F', macro, 'ABSC_CURV NON CROISSANTS POUR TABL_DEPL_INF')
+ if ABSC_CURV_MAXI!=None : rmax = ABSC_CURV_MAXI
+ else : rmax = abscs[-1]
+ precv = PREC_VIS_A_VIS
+ rmprec= rmax*(1.+precv/10.)
+ refsc=[x for x in refs if x<rmprec]
+ nbval = len(refsc)
+ else :
+ nbval=len(abscs)
+ abscs=array(abscs[:nbval])
+ coxs=array(tabsupi['COOR_X'].values()['COOR_X'][:nbval],Float)
+ coys=array(tabsupi['COOR_Y'].values()['COOR_Y'][:nbval],Float)
+ if ndim==2 : cozs=Numeric.zeros(nbval,Float)
+ elif ndim==3 : cozs=array(tabsupi['COOR_Z'].values()['COOR_Z'][:nbval],Float)
+
+ if FOND_FISS and not RESULTAT : #tri des noeuds avec abscisse
+ Pfon = array([d_coor[Lnofon[ino]][0],d_coor[Lnofon[ino]][1],d_coor[Lnofon[ino]][2]])
+ abscs = sqrt((coxs-Pfon[0])**2+(coys-Pfon[1])**2+(cozs-Pfon[2])**2)
+ tabsupi['Abs_fo'] = abscs
+ tabsupi.sort('Abs_fo')
+ abscs = getattr(tabsupi,'Abs_fo').values()
+ abscs=array(abscs[:nbval])
+ coxs=array(tabsupi['COOR_X'].values()['COOR_X'][:nbval],Float)
+ coys=array(tabsupi['COOR_Y'].values()['COOR_Y'][:nbval],Float)
+ if ndim==2 : cozs=Numeric.zeros(nbval,Float)
+ elif ndim==3 : cozs=array(tabsupi['COOR_Z'].values()['COOR_Z'][:nbval],Float)
+
+ if FOND_FISS and INFO==2 and iord==0 and not TYPE_MAILLAGE =='LIBRE':
+ for ks in range(0,nbval) :
+ texte="NOEUD RETENU POUR LA LEVRE SUP: %s %f"%(Lnosup[ino][ks],abscs[ks])
+ aster.affiche('MESSAGE',texte)
+ dxs=array(tabsupi['DX'].values()['DX'][:nbval],Float)
+ dys=array(tabsupi['DY'].values()['DY'][:nbval],Float)
+ if ndim==2 : dzs=Numeric.zeros(nbval,Float)
+ elif ndim==3 : dzs=array(tabsupi['DZ'].values()['DZ'][:nbval],Float)
+
+# --- LEVRE INF : "ABSC_CURV" CROISSANTES et < RMAX ---
+ if SYME_CHAR=='SANS':
+ absci = getattr(tabinfi,'ABSC_CURV').values()
+ if not FOND_FISS :
+ refi=copy.copy(absci)
+ refi.sort()
+ if refi!=absci : UTMESS('F', macro, 'ABSC_CURV NON CROISSANTS POUR TABL_DEPL_SUP')
+ refic=[x for x in refi if x<rmprec]
+ nbvali=len(refic)
+ else :
+ nbvali=len(absci)
+ if nbvali!=nbval :
+ message= 'DIFFERENCE DE POINTS ENTRE LA LEVRE SUPERIEURE ET LA LEVRE INFERIEURE'
+ if FOND_FISS : message=message+' POUR TRAITER LE NOEUD %.s \n'%Lnofon[i]
+ message=message+' Nombre de points - levre superieure : %i\n'%len(refsc)
+ message=message+' Nombre de points - levre inferieure : %i\n'%len(refic)
+ UTMESS('A',macro, message)
+ nbval=min(nbval,nbvali)
+ absci=array(absci[:nbval])
+ coxi=array(tabinfi['COOR_X'].values()['COOR_X'][:nbval],Float)
+ coyi=array(tabinfi['COOR_Y'].values()['COOR_Y'][:nbval],Float)
+ if ndim==2 : cozi=Numeric.zeros(nbval,Float)
+ elif ndim==3 : cozi=array(tabinfi['COOR_Z'].values()['COOR_Z'][:nbval],Float)
+# --- ON VERIFIE QUE LES NOEUDS SONT EN VIS_A_VIS (SYME=SANS) ---
+ if not FOND_FISS :
+ precn = precv * rmax
+ dist=(coxs-coxi)**2+(coys-coyi)**2+(cozs-cozi)**2
+ dist=sqrt(dist)
+ for d in dist :
+ if d>precn : UTMESS('F', macro, 'LES NOEUDS NE SONT PAS EN VIS_A_VIS')
+
+ if FOND_FISS and not RESULTAT :#tri des noeuds avec abscisse
+ Pfon = array([d_coor[Lnofon[ino]][0],d_coor[Lnofon[ino]][1],d_coor[Lnofon[ino]][2]])
+ absci = sqrt((coxi-Pfon[0])**2+(coyi-Pfon[1])**2+(cozi-Pfon[2])**2)
+ tabinfi['Abs_fo'] = absci
+ tabinfi.sort('Abs_fo')
+ absci = getattr(tabinfi,'Abs_fo').values()
+ absci=array(abscs[:nbval])
+ coxi=array(tabinfi['COOR_X'].values()['COOR_X'][:nbval],Float)
+ coyi=array(tabinfi['COOR_Y'].values()['COOR_Y'][:nbval],Float)
+ if ndim==2 : cozi=Numeric.zeros(nbval,Float)
+ elif ndim==3 : cozi=array(tabinfi['COOR_Z'].values()['COOR_Z'][:nbval],Float)
+
+ dxi=array(tabinfi['DX'].values()['DX'][:nbval],Float)
+ dyi=array(tabinfi['DY'].values()['DY'][:nbval],Float)
+ if ndim==2 : dzi=Numeric.zeros(nbval,Float)
+ elif ndim==3 : dzi=array(tabinfi['DZ'].values()['DZ'][:nbval],Float)
+
+ if FOND_FISS and INFO==2 and iord==0 and not TYPE_MAILLAGE =='LIBRE':
+ for ki in range(0,nbval) :
+ texte="NOEUD RETENU POUR LA LEVRE INF: %s %f"%(Lnoinf[ino][ki],absci[ki])
+ aster.affiche('MESSAGE',texte)
+
+# --- TESTS NOMBRE DE NOEUDS---
+ if nbval<3 :
+ message= 'IL FAUT AU MOINS TROIS NOEUDS DANS LE PLAN DEFINI PAR LES LEVRES ET PERPENDICULAIRE AU FOND DE FISSURE'
+ if FOND_FISS : message=message+'Noeud %.s \n'%Lnofon[ino]
+ message=message+' : augmenter ABSC_CURV_MAXI\n'
+ UTMESS('F',macro, message)
+
+# ---------- CALCUL PROP. MATERIAU AVEC TEMPERATURE -----------
+ if Tempe3D :
+ tempeno=tabtemp.NOEUD==Lnofon[ino]
+ tempeno=tempeno.INST.__eq__(VALE=inst,CRITERE='ABSOLU',PRECISION=PRECISION)
+ nompar = ('TEMP',)
+ valpar = (tempeno.TEMP.values()[0],)
+ nomres=['E','NU']
+ valres,codret = MATER.RCVALE('ELAS',nompar,valpar,nomres,'F')
+ e = valres[0]
+ nu = valres[1]
+ coefd = e * sqrt(2.*pi) / ( 8.0 * (1. - nu**2))
+ coefd3 = e*sqrt(2*pi) / ( 8.0 * (1. + nu))
+ coefg = (1. - nu**2) / e
+ coefg3 = (1. + nu) / e
+
+# ------------------------------------------------------------------
+# CHANGEMENT DE REPERE
+# ------------------------------------------------------------------
+#
+# 1 : VECTEUR NORMAL AU PLAN DE LA FISSURE
+# ORIENTE LEVRE INFERIEURE VERS LEVRE SUPERIEURE
+# 2 : VECTEUR NORMAL AU FOND DE FISSURE EN M
+# 3 : VECTEUR TANGENT AU FOND DE FISSURE EN M
+#
+ if SYME_CHAR=='SANS' :
+ vo = array([( coxs[-1]+coxi[-1] )/2.,( coys[-1]+coyi[-1] )/2.,( cozs[-1]+cozi[-1] )/2.])
+ ve = array([( coxs[0 ]+coxi[0 ] )/2.,( coys[0 ]+coyi[0 ] )/2.,( cozs[0 ]+cozi[0 ] )/2.])
+ else :
+ vo = array([ coxs[-1], coys[-1], cozs[-1]])
+ ve = array([ coxs[0], coys[0], cozs[0]])
+ v1 = array(VECT_K1)
+ v2 = ve-vo
+ v2 = v2/sqrt(v2[0]**2+v2[1]**2+v2[2]**2)
+ v1p = sum(v2*v1)
+ v1 = v1-v1p*v2
+ v1 = v1/sqrt(v1[0]**2+v1[1]**2+v1[2]**2)
+ v3 = array([v1[1]*v2[2]-v2[1]*v1[2],v1[2]*v2[0]-v2[2]*v1[0],v1[0]*v2[1]-v2[0]*v1[1]])
+ pgl = asarray([v1,v2,v3])
+ dpls = asarray([dxs,dys,dzs])
+ dpls = matrixmultiply(pgl,dpls)
+ if SYME_CHAR=='SANS' :
+ dpli = asarray([dxi,dyi,dzi])
+ dpli = matrixmultiply(pgl,dpli)
+ else :
+ dpli = [multiply(dpls[0],-1.),dpls[1],dpls[2]]
+# ------------------------------------------------------------------
+# CALCUL DES K1, K2, K3
+# ------------------------------------------------------------------
+ saut=(dpls-dpli)
+ isig=sign(transpose(resize(saut[:,-1],(nbval-1,3))))
+ isig=sign(isig+0.001)
+ saut=saut*array([[coefd]*nbval,[coefd]*nbval,[coefd3]*nbval])
+ saut=saut**2
+ ksig = isig[:,1]
+ ksig = array([ksig,ksig])
+ ksig = transpose(ksig)
+ kgsig=resize(ksig,(1,6))[0]
+ if INFO==2 :
+ mcfact=[]
+ mcfact.append(_F(PARA='ABSC_CURV' ,LISTE_R=abscs.tolist() ))
+ mcfact.append(_F(PARA='DEPL_SUP_DX',LISTE_R=dpls[0].tolist() ))
+ mcfact.append(_F(PARA='DEPL_INF_DX',LISTE_R=dpli[0].tolist() ))
+ mcfact.append(_F(PARA='SAUT_DX' ,LISTE_R=saut[0].tolist() ))
+ mcfact.append(_F(PARA='DEPL_SUP_DY',LISTE_R=dpls[1].tolist() ))
+ mcfact.append(_F(PARA='DEPL_INF_DY',LISTE_R=dpli[1].tolist() ))
+ mcfact.append(_F(PARA='SAUT_DY' ,LISTE_R=saut[1].tolist() ))
+ if ndim==3 :
+ mcfact.append(_F(PARA='DEPL_SUP_DZ',LISTE_R=dpls[2].tolist() ))
+ mcfact.append(_F(PARA='DEPL_INF_DZ',LISTE_R=dpli[2].tolist() ))
+ mcfact.append(_F(PARA='SAUT_DZ' ,LISTE_R=saut[2].tolist() ))
+ __resu0=CREA_TABLE(LISTE=mcfact,TITRE='--> SAUTS')
+ aster.affiche('MESSAGE',__resu0.EXTR_TABLE().__repr__())
+ DETRUIRE(CONCEPT=_F(NOM=__resu0),INFO=1)
+# ------------------------------------------------------------------
+# --- METHODE 1 ---
+# ------------------------------------------------------------------
+ x1 = abscs[1:-1]
+ x2 = abscs[2: ]
+ y1 = saut[:,1:-1]/x1
+ y2 = saut[:,2: ]/x2
+ k = abs(y1-x1*(y2-y1)/(x2-x1))
+ g = coefg*(k[0]+k[1])+coefg3*k[2]
+ kg1 = [max(k[0]),min(k[0]),max(k[1]),min(k[1]),max(k[2]),min(k[2])]
+ kg1 = sqrt(kg1)*kgsig
+ kg1=Numeric.concatenate([kg1,[max(g),min(g)]])
+ vk = sqrt(k)*isig[:,:-1]
+ if INFO==2 :
+ mcfact=[]
+ mcfact.append(_F(PARA='ABSC_CURV_1' ,LISTE_R=x1.tolist() ))
+ mcfact.append(_F(PARA='ABSC_CURV_2' ,LISTE_R=x2.tolist() ))
+ mcfact.append(_F(PARA='K1' ,LISTE_R=vk[0].tolist() ))
+ mcfact.append(_F(PARA='K2' ,LISTE_R=vk[1].tolist() ))
+ if ndim==3 :
+ mcfact.append(_F(PARA='K3' ,LISTE_R=vk[2].tolist() ))
+ mcfact.append(_F(PARA='G' ,LISTE_R=g.tolist() ))
+ __resu1=CREA_TABLE(LISTE=mcfact,TITRE='--> METHODE 1')
+ aster.affiche('MESSAGE',__resu1.EXTR_TABLE().__repr__())
+ DETRUIRE(CONCEPT=_F(NOM=__resu1),INFO=1)
+# ------------------------------------------------------------------
+# --- METHODE 2 ---
+# ------------------------------------------------------------------
+ x1 = abscs[1: ]
+ y1 = saut[:,1:]
+ k = abs(y1/x1)
+ g = coefg*(k[0]+k[1])+coefg3*k[2]
+ kg2= [max(k[0]),min(k[0]),max(k[1]),min(k[1]),max(k[2]),min(k[2])]
+ kg2 = sqrt(kg2)*kgsig
+ kg2=Numeric.concatenate([kg2,[max(g),min(g)]])
+ vk = sqrt(k)*isig
+ if INFO==2 :
+ mcfact=[]
+ mcfact.append(_F(PARA='ABSC_CURV' ,LISTE_R=x1.tolist() ))
+ mcfact.append(_F(PARA='K1' ,LISTE_R=vk[0].tolist() ))
+ mcfact.append(_F(PARA='K2' ,LISTE_R=vk[1].tolist() ))
+ if ndim==3 :
+ mcfact.append(_F(PARA='K3' ,LISTE_R=vk[2].tolist() ))
+ mcfact.append(_F(PARA='G' ,LISTE_R=g.tolist() ))
+ __resu2=CREA_TABLE(LISTE=mcfact,TITRE='--> METHODE 2')
+ aster.affiche('MESSAGE',__resu2.EXTR_TABLE().__repr__())
+ DETRUIRE(CONCEPT=_F(NOM=__resu2),INFO=1)
+# ------------------------------------------------------------------
+# --- METHODE 3 ---
+# ------------------------------------------------------------------
+ x1 = abscs[:-1]
+ x2 = abscs[1: ]
+ y1 = saut[:,:-1]
+ y2 = saut[:,1: ]
+ k = (sqrt(y2)*sqrt(x2)+sqrt(y1)*sqrt(x1))*(x2-x1)
+ k = Numeric.sum(transpose(k))
+ de = abscs[-1]
+ vk = (k/de**2)*isig[:,0]
+ g = coefg*(vk[0]**2+vk[1]**2)+coefg3*vk[2]**2
+ kg3=Numeric.concatenate([[vk[0]]*2,[vk[1]]*2,[vk[2]]*2,[g]*2])
+ if INFO==2 :
+ mcfact=[]
+ mcfact.append(_F(PARA='K1' ,LISTE_R=vk[0] ))
+ mcfact.append(_F(PARA='K2' ,LISTE_R=vk[1] ))
+ if ndim==3 :
+ mcfact.append(_F(PARA='K3' ,LISTE_R=vk[2] ))
+ mcfact.append(_F(PARA='G' ,LISTE_R=g ))
+ __resu3=CREA_TABLE(LISTE=mcfact,TITRE='--> METHODE 3')
+ aster.affiche('MESSAGE',__resu3.EXTR_TABLE().__repr__())
+ DETRUIRE(CONCEPT=_F(NOM=__resu3),INFO=1)
+# ------------------------------------------------------------------
+# CREATION DE LA TABLE
+# ------------------------------------------------------------------
+ kg=array([kg1,kg2,kg3])
+ kg=transpose(kg)
+ mcfact=[]
+ if TITRE != None :
+ titre = TITRE
+ else :
+ v = aster.__version__
+ titre = 'ASTER %s - CONCEPT CALCULE PAR POST_K1_K2_K3 LE &DATE A &HEURE \n'%v
+ if FOND_FISS :
+ mcfact.append(_F(PARA='NOEUD_FOND',LISTE_K=[Lnofon[ino],]*3))
+ mcfact.append(_F(PARA='ABSC_CURV',LISTE_R=[dicoF[Lnofon[ino]]]*3))
+ mcfact.append(_F(PARA='METHODE',LISTE_I=(1,2,3)))
+ mcfact.append(_F(PARA='K1_MAX' ,LISTE_R=kg[0].tolist() ))
+ mcfact.append(_F(PARA='K1_MIN' ,LISTE_R=kg[1].tolist() ))
+ mcfact.append(_F(PARA='K2_MAX' ,LISTE_R=kg[2].tolist() ))
+ mcfact.append(_F(PARA='K2_MIN' ,LISTE_R=kg[3].tolist() ))
+ if ndim==3 :
+ mcfact.append(_F(PARA='K3_MAX' ,LISTE_R=kg[4].tolist() ))
+ mcfact.append(_F(PARA='K3_MIN' ,LISTE_R=kg[5].tolist() ))
+ mcfact.append(_F(PARA='G_MAX' ,LISTE_R=kg[6].tolist() ))
+ mcfact.append(_F(PARA='G_MIN' ,LISTE_R=kg[7].tolist() ))
+ if (ino==0 and iord==0) and inst==None :
+ tabout=CREA_TABLE(LISTE=mcfact,TITRE = titre)
+ elif iord==0 and ino==0 and inst!=None :
+ mcfact=[_F(PARA='INST' ,LISTE_R=[inst,]*3 )]+mcfact
+ tabout=CREA_TABLE(LISTE=mcfact,TITRE = titre)
+ else :
+ if inst!=None : mcfact=[_F(PARA='INST' ,LISTE_R=[inst,]*3 )]+mcfact
+ __tabi=CREA_TABLE(LISTE=mcfact,)
+ npara = ['K1_MAX','METHODE']
+ if inst!=None : npara.append('INST')
+ if FOND_FISS : npara.append('NOEUD_FOND')
+ tabout=CALC_TABLE(reuse=tabout,TABLE=tabout,TITRE = titre,
+ ACTION=_F(OPERATION = 'COMB',NOM_PARA=npara,TABLE=__tabi,))
+
+# Tri pour conserver le meme ordre que operateur initial en fortran
+ if len(l_inst)!=1 and FOND_FISS :
+ tabout=CALC_TABLE(reuse=tabout,TABLE=tabout,
+ ACTION=_F(OPERATION = 'TRI',NOM_PARA=('INST','ABSC_CURV','METHODE'),ORDRE='CROISSANT'))
+
+ return ier
+
-#@ MODIF reca_algo Macro DATE 14/03/2005 AUTEUR DURAND C.DURAND
+#@ MODIF reca_algo Macro DATE 31/01/2006 AUTEUR MCOURTOI M.COURTOIS
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
import Numeric
-from Numeric import take
+from Numeric import take, size
import copy,os
import LinearAlgebra
from Cata.cata import INFO_EXEC_ASTER
from Cata.cata import DETRUIRE
from Accas import _F
+from Utilitai.Utmess import UTMESS
def calcul_gradient(A,erreur):
temps_iter=(temps_iter_old + (restant_old-restant))/2.
if ((temps_iter>0.96*restant)or(restant<0.)):
err=1
- self.cr.fatal("<F> <MACR_RECAL> Arret de MACR_RECAL par manque de temps CPU")
+ UTMESS('F', "MACR_RECAL", 'Arret de MACR_RECAL par manque de temps CPU')
return restant,temps_iter,err
dval[i]=borne_inf[i]-val[i]
s[i]=-1.
if (len(I)!=0):
- # xi=-Q(I)-1.(d(I)+Q(I,Act).dval(Act))
- xi=-LinearAlgebra.solve_linear_equations(take(take(Q,I),I,1),(take(d,I)+Numeric.dot(take(take(Q,I),Act,1),take(Dim.adim(dval),Act))))
+ # xi=-Q(I)-1.(d(I)+Q(I,Act).dval(Act))
+ t_QI = take(Q, I)
+ t_tQI_Act = take(t_QI, Act, 1)
+ t_adim_Act = take(Dim.adim(dval), Act)
+ if size(t_tQI_Act) > 0 and size(t_adim_Act) > 0:
+ smemb = take(d, I) + Numeric.dot(t_tQI_Act, t_adim_Act)
+ else:
+ smemb = take(d, I)
+ xi=-LinearAlgebra.solve_linear_equations(take(t_QI, I, 1), smemb)
for i in Numeric.arange(len(I)):
dval[I[i]]=xi[i]*val_init[I[i]]
if (len(Act)!=0):
res.write('\n\nval_ini= '+Numeric.array2string(val_init,array_output=1,separator=','))
res.write('\n\nborne_inf= '+Numeric.array2string(borne_inf,array_output=1,separator=','))
res.write('\n\nborne_sup= '+Numeric.array2string(borne_sup,array_output=1,separator=','))
- self.cr.fatal("<F> <MACR_RECAL> Erreur dans l'algorithme de bornes de MACR_RECAL")
+ UTMESS('F', "MACR_RECAL", "Erreur dans l'algorithme de bornes de MACR_RECAL")
return
newval=copy.copy(val+dval)
return newval,s,l,Act
--- /dev/null
+#@ MODIF reca_graphique Macro DATE 08/11/2005 AUTEUR ASSIRE A.ASSIRE
+# -*- coding: iso-8859-1 -*-
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2005 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+
+import string, copy, Numeric, types
+import Cata
+from Cata.cata import DEFI_FICHIER, IMPR_FONCTION
+from Utilitai.Utmess import UTMESS
+from Accas import _F
+
+try:
+ import Gnuplot
+except:
+ pass
+
+
+#_____________________________________________
+#
+# IMPRESSIONS GRAPHIQUES
+#_____________________________________________
+
+def graphique(FORMAT, L_F, res_exp, reponses, iter, UL_out, interactif):
+
+ if FORMAT=='XMGRACE':
+ for i in range(len(L_F)):
+ _tmp = []
+ courbe1 = res_exp[i]
+ _tmp.append( { 'ABSCISSE': courbe1[:,0].tolist(), 'ORDONNEE': courbe1[:,1].tolist(), 'COULEUR': 1 } )
+ courbe2 = L_F[i]
+ _tmp.append( { 'ABSCISSE': courbe2[:,0].tolist(), 'ORDONNEE': courbe2[:,1].tolist(), 'COULEUR': 2 } )
+
+ motscle2= {'COURBE': _tmp }
+ if interactif: motscle2['PILOTE']= 'INTERACTIF'
+ else: motscle2['PILOTE']= 'POSTSCRIPT'
+
+# DEFI_FICHIER(UNITE=int(UL_out), ACCES='NEW',)
+
+ IMPR_FONCTION(FORMAT='XMGRACE',
+ UNITE=int(UL_out),
+ TITRE='Courbe de : ' + reponses[i][0],
+ SOUS_TITRE='Iteration : ' + str(iter),
+ LEGENDE_X=reponses[i][1],
+ LEGENDE_Y=reponses[i][2],
+ **motscle2
+ );
+# DEFI_FICHIER(ACTION='LIBERER',UNITE=int(UL_out),)
+
+ elif FORMAT=='GNUPLOT':
+ graphe=[]
+ impr=Gnuplot.Gnuplot()
+ Gnuplot.GnuplotOpts.prefer_inline_data=1
+ impr('set data style linespoints')
+ impr('set grid')
+ impr('set pointsize 2.')
+ impr('set terminal postscript color')
+ impr('set output "fort.'+str(UL_out)+'"')
+
+ for i in range(len(L_F)):
+ if interactif:
+ graphe.append(Gnuplot.Gnuplot(persist=0))
+ graphe[i]('set data style linespoints')
+ graphe[i]('set grid')
+ graphe[i]('set pointsize 2.')
+ graphe[i].xlabel(reponses[i][1])
+ graphe[i].ylabel(reponses[i][2])
+ graphe[i].title(reponses[i][0]+' Iteration '+str(iter))
+ graphe[i].plot(Gnuplot.Data(L_F[i],title='Calcul'),Gnuplot.Data(res_exp[i],title='Experimental'))
+ graphe[i]('pause 5')
+
+ impr.xlabel(reponses[i][1])
+ impr.ylabel(reponses[i][2])
+ impr.title(reponses[i][0]+' Iteration '+str(iter))
+ impr.plot(Gnuplot.Data(L_F[i],title='Calcul'),Gnuplot.Data(res_exp[i],title='Experimental'))
+
+ else:
+ pass
-#@ MODIF reca_interp Macro DATE 14/09/2004 AUTEUR MCOURTOI M.COURTOIS
+#@ MODIF reca_interp Macro DATE 05/09/2005 AUTEUR DURAND C.DURAND
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
import Numeric
import Macro
from Macro.recal import calcul_F
+from Utilitai.Utmess import UTMESS
#===========================================================================================
try:
L_J[i] = L_J[i]/L_J_init[i]
except ZeroDivisionError:
+ message= 'Problème de division par zéro dans la normalisation de la fonctionnelle.\n'
+ message=message+'Une des valeurs de la fonctionnelle initiale est nulle ou inférieure à la précision machine : %.2f \n'%L_J_init
fic=open(os.getcwd()+'/fort.'+str(unite_resu),'a')
- fic.write('\n Problème de division par zéro dans la normalisation de la fonctionnelle.')
- fic.write('\n Une des valeurs de la fonctionnelle initiale est nulle ou inférieure à la précision machine :'+ str(L_J_init))
+ fic.write(message)
fic.close()
- self.cr.fatal("<F> <MACR_RECAL> Problème de division par zéro dans la normalisation de la fonctionnelle.\nUne des valeurs de la fonctionnelle initiale est nulle ou inférieure à la précision machine :"+ str(L_J_init))
- return
+ UTMESS('F', "MACR_RECAL", message)
J = Numeric.sum(L_J)
J = J/len(L_J)
try:
L_A[j][i,k] = -1*(F_interp[j][i] - F_perturbe_interp[j][i])/h
except ZeroDivisionError:
+ message= 'Probleme de division par zéro dans le calcul de la matrice de sensiblité\n '
+ message=message+'Le parametre '+para[k]+'est nul ou plus petit que la précision machine \n'
fic=open(os.getcwd()+'/fort.'+str(unite_resu),'a')
- fic.write('\n Probleme de division par zéro dans le calcul de la matrice de sensiblité')
- fic.write('\n Le parametre '+para[k]+'est nul ou plus petit que la précision machine')
- fic.close()
- self.cr.fatal("<F> <MACR_RECAL> Probleme de division par zéro dans le calcul de la matrice de sensiblité.\n Le parametre "+para[k]+"est nul ou plus petit que la précision machine")
- return
+ fic.write(message)
+ fic.close()
+ UTMESS('F', "MACR_RECAL", message)
#on construit la matrice de sensiblité sous forme d'un tab num
dim =[]
for i in range(len(L_A)):
-#@ MODIF recal Macro DATE 14/03/2005 AUTEUR DURAND C.DURAND
+#@ MODIF recal Macro DATE 08/11/2005 AUTEUR ASSIRE A.ASSIRE
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
-import string
-import copy
-import Numeric
-import types
-import Gnuplot
+import string, copy, Numeric, types
+# import Gnuplot
import Cata
-from Cata.cata import INCLUDE,DETRUIRE
+from Cata.cata import INCLUDE, DETRUIRE, FIN, EXEC_LOGICIEL, DEFI_FICHIER, IMPR_TABLE, LIRE_TABLE, INFO_EXEC_ASTER, EXTR_TABLE
+from Utilitai.Utmess import UTMESS
from Accas import _F
-import os
+import os, aster, cPickle, sys
+
+# try:
+# import Gnuplot
+# except: pass
+
+try:
+ from Utilitai.Utmess import UTMESS
+except ImportError:
+ def UTMESS(code,sprg,texte):
+ fmt='\n <%s> <%s> %s\n\n'
+ print fmt % (code,sprg,texte)
#_____________________________________________
#_____________________________________________
-# Transforme les donneés entrées par l'utilsateur en tableau Numeric
+# Transforme les données entrées par l'utilisateur en tableau Numeric
def transforme_list_Num(parametres,res_exp):
dim_para = len(parametres) #donne le nb de parametres
val_para = Numeric.zeros(dim_para,Numeric.Float)
Fichier_Resu.append('Lrep=[]'+'\n')
for i in range(len(reponses)):
Fichier_Resu.append('t'+str(reponses[i][0])+'='+str(reponses[i][0])+'.EXTR_TABLE()'+'\n')
- Fichier_Resu.append('F = '+'t'+str(reponses[i][0])+'.Array('+"'"+str(reponses[i][1])+"'"+','+"'"+str(reponses[i][2])+"'"+')'+'\n')
- Fichier_Resu.append('Lrep.append(F)'+'\n')
+ Fichier_Resu.append('_F_ = '+'t'+str(reponses[i][0])+'.Array('+"'"+str(reponses[i][1])+"'"+','+"'"+str(reponses[i][2])+"'"+')'+'\n')
+ Fichier_Resu.append('Lrep.append(_F_)'+'\n')
#ouverture du fichier fort.3 et mise a jour de celui ci
x=open('fort.'+str(UL),'w')
x.close()
return self.g_context['Lrep']
-#_____________________________________________
-#
-# IMPRESSIONS GRAPHIQUES
-#_____________________________________________
-
-def graphique(L_F,res_exp,reponses,iter,UL_out,interactif):
- graphe=[]
- impr=Gnuplot.Gnuplot()
- Gnuplot.GnuplotOpts.prefer_inline_data=1
- impr('set data style linespoints')
- impr('set grid')
- impr('set pointsize 2.')
- impr('set terminal postscript color')
- impr('set output "fort.'+str(UL_out)+'"')
- for i in range(len(L_F)):
- if interactif:
- graphe.append(Gnuplot.Gnuplot(persist=0))
- graphe[i]('set data style linespoints')
- graphe[i]('set grid')
- graphe[i]('set pointsize 2.')
- graphe[i].xlabel(reponses[i][1])
- graphe[i].ylabel(reponses[i][2])
- graphe[i].title(reponses[i][0]+' Iteration '+str(iter))
- graphe[i].plot(Gnuplot.Data(L_F[i],title='Calcul'),Gnuplot.Data(res_exp[i],title='Experimental'))
- graphe[i]('pause 5')
-#
- impr.xlabel(reponses[i][1])
- impr.ylabel(reponses[i][2])
- impr.title(reponses[i][0]+' Iteration '+str(iter))
- impr.plot(Gnuplot.Data(L_F[i],title='Calcul'),Gnuplot.Data(res_exp[i],title='Experimental'))
-
#_____________________________________________
#
-#@ MODIF stanley_ops Macro DATE 30/11/2004 AUTEUR MCOURTOI M.COURTOIS
+#@ MODIF stanley_ops Macro DATE 15/05/2006 AUTEUR ASSIRE A.ASSIRE
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
-def stanley_ops(self,RESULTAT,MODELE,CHAM_MATER,CARA_ELEM,**args):
+def stanley_ops(self,RESULTAT,MODELE,CHAM_MATER,CARA_ELEM,DISPLAY,**args):
"""
Importation et lancement de Stanley
from Accas import _F
from Noyau.N_utils import AsType
from Utilitai.Utmess import UTMESS
+ from Utilitai.UniteAster import UniteAster
ier=0
# La macro compte pour 1 dans la numerotation des commandes
- self.icmd=1
+ self.set_icmd(1)
+ # Redefinition eventuelle du DISPLAY
+ if DISPLAY:
+ UTMESS('I','STANLEY', 'Redefinition du DISPLAY vers : ' + DISPLAY)
+ os.environ['DISPLAY'] = DISPLAY
+
+ # Mode validation de la non-regression
+ if args['UNITE_VALIDATION']:
+ UTMESS('I','STANLEY', 'Stanley fonctionne en mode validation de non-regresion')
+ UL = UniteAster()
+ FICHIER_VALID=UL.Nom(args['UNITE_VALIDATION'])
+ else:
+ FICHIER_VALID=None
# On ne lance Stanley que si la variable DISPLAY est définie
if os.environ.has_key('DISPLAY'):
import Stanley
from Stanley import stanley
-
+
if (RESULTAT and MODELE and CHAM_MATER):
_MAIL = aster.getvectjev( string.ljust(MODELE.nom,8) + '.MODELE .NOMA ' )
_MAIL = string.strip(_MAIL[0])
else:
stanley.STANLEY(RESULTAT,MAILLAGE,MODELE,CHAM_MATER,None)
else:
- stanley.PRE_STANLEY()
+ stanley.PRE_STANLEY(FICHIER_VALID)
else:
UTMESS('A','STANLEY',
STANLEY ne pourra pas fonctionner. On l'ignore.
Si vous etes en Interactif, cochez le bouton Suivi Interactif
- dans ASTK.""")
+ dans ASTK.
+
+ Vous pouvez également préciser votre DISPLAY dans les arguments
+ de la commande STANLEY :
+
+ STANLEY(DISPLAY='adresse_ip:0.0');""")
return ier
-#@ MODIF test_fichier_ops Macro DATE 03/11/2004 AUTEUR MCOURTOI M.COURTOIS
+#@ MODIF test_fichier_ops Macro DATE 22/05/2006 AUTEUR MCOURTOI M.COURTOIS
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
+import sys
+import os.path
+import re
+from math import floor, log10
+from types import StringType
+import md5
+
#-------------------------------------------------------------------------------
-def test_fichier_ops(self, UNITE, FICHIER, NB_CHIFFRE, EPSILON, VALE_K, INFO, **args):
+def test_fichier_ops(self, FICHIER, NB_CHIFFRE, EPSILON, VALE_K, INFO, **args):
"""
Macro TEST_FICHIER permettant de tester la non-regression d'un fichier
'a une tolerance' pres pour les nombres reels en calculant
le md5sum.
"""
- import aster
- from Accas import _F
- ier=0
+ ier = 0
# La macro compte pour 1 dans la numerotation des commandes
- #self.icmd=1
self.set_icmd(1)
# On importe les definitions des commandes a utiliser dans la macro
DETRUIRE = self.get_cmd('DETRUIRE')
CREA_TABLE = self.get_cmd('CREA_TABLE')
TEST_TABLE = self.get_cmd('TEST_TABLE')
-
- import os.path
- import re
- from types import StringType
+
+ import aster
+ from Accas import _F
from Macro.test_fichier_ops import md5file
+ from Utilitai.Utmess import UTMESS
# vérifie la syntaxe des expressions régulières fournies
- l_regexp=[]
+ l_regexp = []
if args['EXPR_IGNORE']:
if type(args['EXPR_IGNORE']) is StringType:
lexp = [args['EXPR_IGNORE']]
lexp = args['EXPR_IGNORE']
for exp in lexp:
try:
- obj=re.compile(exp)
+ obj = re.compile(exp)
except re.error, s:
- print '<F> <TEST_FICHIER> <INVALID_REGEXP> '+str(s)+' pour "'+exp+'"'
+ UTMESS('F', 'TEST_FICHIER',
+ '<INVALID_REGEXP> %s pour %s' % (str(s), repr(exp)))
else:
l_regexp.append(exp)
- if len(l_regexp) < len(lexp):
- self.cr.fatal(' <F> <TEST_FICHIER> Expression régulière invalide (voir <INVALID_REGEXP>)')
-
- is_ok=0
+ is_ok = 0
# vérifier que le fichier a été fermé
tinfo__ = INFO_EXEC_ASTER(LISTE_INFO='ETAT_UNITE', FICHIER=FICHIER)
- if tinfo__['ETAT_UNITE',1].find('OUVERT')>-1:
- print "<A> <TEST_FICHIER> LE FICHIER N'A PAS ETE FERME :\n",FICHIER
+ if tinfo__['ETAT_UNITE', 1].find('OUVERT')>-1:
+ UTMESS('A', 'TEST_FICHIER',
+ "LE FICHIER N'A PAS ETE FERME :\n%s" % FICHIER)
# fichier correctement fermé
else:
# calcule le md5sum du fichier
ier, mdsum = md5file(FICHIER, NB_CHIFFRE, EPSILON, l_regexp, INFO)
if ier != 0:
- if ier==4:
- texte_erreur='Fichier inexistant : '+FICHIER
+ if ier == 4:
+ texte_erreur = 'Fichier inexistant : '+FICHIER
else:
- texte_erreur='Erreur dans md5file, code retour = '+str(ier)
- texte_erreur='<S> <TEST_FICHIER> '+texte_erreur
+ texte_erreur = 'Erreur dans md5file, code retour = '+str(ier)
+ texte_erreur = '<S> <TEST_FICHIER> '+texte_erreur
# aujourd'hui, je ne sais pas déclencher autre chose que <F>...
self.cr.fatal(texte_erreur)
return ier
# comparaison a la reference
if INFO > 0 :
- print ' %-20s : %32s' % ('REFERENCE',VALE_K)
- print
+ aster.affiche('MESSAGE', ' %-20s : %32s\n' % ('REFERENCE', VALE_K))
if mdsum == VALE_K:
- is_ok=1
+ is_ok = 1
# produit le TEST_TABLE
- tab1__=CREA_TABLE(LISTE=(_F(PARA='TEST',
- TYPE_K='K8',
- LISTE_K='VALEUR ',),
- _F(PARA='BOOLEEN',
- LISTE_I=is_ok,),),)
+ tab1__ = CREA_TABLE(LISTE=(_F(PARA='TEST',
+ TYPE_K='K8',
+ LISTE_K='VALEUR ',),
+ _F(PARA='BOOLEEN',
+ LISTE_I=is_ok,),),)
if args['REFERENCE'] == 'NON_REGRESSION':
- TEST_TABLE(UNITE=UNITE,
- TABLE=tab1__,
+ TEST_TABLE(TABLE=tab1__,
FILTRE=_F(NOM_PARA='TEST',
VALE_K='VALEUR ',),
NOM_PARA='BOOLEEN',
REFERENCE=args['REFERENCE'],
VERSION=args['VERSION'],)
else:
- TEST_TABLE(UNITE=UNITE,
- TABLE=tab1__,
+ TEST_TABLE(TABLE=tab1__,
FILTRE=_F(NOM_PARA='TEST',
VALE_K='VALEUR ',),
NOM_PARA='BOOLEEN',
#-------------------------------------------------------------------------------
-def md5file(fich,nbch,epsi,regexp_ignore=[],info=0):
+def sign(x):
+ return int(x/abs(x))
+
+def _round(x, n, exp):
+ v = x * 10**(-exp+n)
+ val = int(v + sign(x)*0.4999)
+ return val
+
+def entier_ini(x, nbch, exp=None):
+ #if exp is None:
+ #exp = int(floor(log10(abs(x))))
+ val = _round(x, nbch-1, exp)
+ return val, exp-nbch+1
+
+def entier_triple(x, nbch, exp_epsi):
+ #if abs(x) <= 10**exp_epsi:
+ #return '0'
+ y = _round(x * 10**(-exp_epsi), 0, 0) * 10**exp_epsi
+ exp = int(floor(log10(abs(y))))
+ z1, e1 = entier_ini(y, nbch+2, exp)
+ z2, e2 = entier_ini(z1 * 10**e1, nbch+1, exp)
+ z3, e3 = entier_ini(z2 * 10**e2, nbch, exp)
+ return '%sE%d' % (z3, e3)
+
+#-------------------------------------------------------------------------------
+def md5file(fich, nbch, epsi,
+ regexp_ignore=[], info=0, output=None, format_func=entier_triple):
"""
Cette methode retourne le md5sum d'un fichier en arrondissant les nombres
reels a la valeur significative.
epsi : valeur en deca de laquelle on prend 0
regexp_ignore : liste d'expressions régulières permettant d'ignorer
certaines lignes
+ output : pour rediriger l'interprétation du fichier (INFO=2)
+ dans le fichier de nom `output`,
+ info : on affiche le résumé si info>0
+ format_func : on peut préciser une autre fonction pour formatter
+ les réels...
OUT :
code retour : 0 si ok, >0 sinon
md5sum
- """
- import os.path
- import re
- import string
- import math
- import md5
+
+ NE PAS AJOUTER D'IMPORT QUI RENDRAIT CETTE FONCTION
+ INUTILISABLE EN DEHORS DE CODE_ASTER.
+ """
+ if output != None:
+ try:
+ sys.stdout = open(output, 'w')
+ except IOError, msg:
+ print "Erreur d'écriture sur %s : %s" % (output, msg)
+
# 1 Mo 10 Mo 100 Mo
# v0 2.6 s 20.4 s 196.6 s
# v1 2.0 s 10.3 s 94.9 s (pas de distinction entier/reel)
# remplacer le try/except par if re.search(...), 80% plus lent
+ # v2 10.7 s
if not os.path.isfile(fich):
return 4, ''
- f=open(fich,'r')
- format_float='%'+str(nbch+7)+'.'+str(nbch)+'g'
- m=md5.new()
- i=0
+ f = open(fich,'r')
+ m = md5.new()
+ exp_epsi = int(floor(log10(abs(epsi))))
+ i = 0
for ligne in f:
- i=i+1
- if info>=2:
- print 'LIGNE',i,
- keep=True
+ i = i+1
+ if info >= 2:
+ print 'LIGNE', i,
+ keep = True
for exp in regexp_ignore:
- if re.search(exp,ligne):
- keep=False
- if info>=2:
+ if re.search(exp, ligne):
+ keep = False
+ if info >= 2:
print ' >>>>>>>>>> IGNOREE <<<<<<<<<<',
break
if keep:
- #r=string.split(ligne)
# découpe des nombres collés : 1.34E-142-1.233D+09
- r=string.split(re.sub('([0-9]+)\-','\g<1> -',ligne))
+ ligne = re.sub('([0-9]+)\-', '\g<1> -', ligne)
+ # conversion des DOUBLE fortran en 'E'
+ ligne = re.sub('([0-9]+)[dD]([\-\+]{0,1}[0-9]+)', '\g<1>E\g<2>', ligne)
+ r = ligne.split()
for x in r:
try:
- if abs(float(x))<epsi:
- s='0'
+ xv = float(x)
+ if abs(xv)<epsi:
+ s = '0'
else:
- s=format_float % float(x)
+ #s = format_float % float(x)
+ s = format_func(xv, nbch, exp_epsi)
except ValueError:
- s=x
- if info>=2:
+ s = x
+ if info >= 2:
print (' %'+str(nbch+7)+'s') % s,
m.update(s)
- if info>=2:
+ if info >= 2:
print
f.close()
- md5sum=m.hexdigest()
- if info>=1:
- form=' %-20s : %32s'
- print form % ('Fichier',fich)
- print form % ('Nombre de lignes',str(i))
- print form % ('Format des reels',format_float)
- print form % ('Epsilon',str(epsi))
- print form % ('md5sum',md5sum)
+ md5sum = m.hexdigest()
+
+ affich_resu = True
+ if info >= 1:
+ while affich_resu:
+ form = ' %-20s : %32s'
+ print form % ('Fichier', fich)
+ print form % ('Nombre de lignes', str(i))
+ #print form % ('Format des reels',format_float)
+ print form % ('Nombre de chiffres', str(nbch))
+ print form % ('Epsilon', str(epsi))
+ print form % ('md5sum', md5sum)
+ if output == None:
+ affich_resu = False
+ else:
+ sys.stdout = sys.__stdout__
+ output = None
return 0, md5sum
+
+
+#-------------------------------------------------------------------------------
+if __name__ == '__main__':
+ from optparse import OptionParser, OptionGroup
+
+ p = OptionParser(usage='usage: %s a_tester [options]' % sys.argv[0])
+ p.add_option('-n', '--nbch',
+ action='store', dest='nbch', type='int', default=6,
+ help='nombre de chiffres significatifs')
+ p.add_option('-e', '--epsilon',
+ action='store', dest='epsi', type='float', default=1.e-14,
+ help='epsilon en dessous duquel on considère les nombres nuls')
+ p.add_option('--expr_ignore',
+ action='store', dest='exp', type='string',
+ help='expression régulière à ignorer')
+ p.add_option('-o', '--output',
+ action='store', dest='output', type='string', default='output.txt',
+ help='fichier de sortie')
+ opts, args = p.parse_args()
+
+ if len(args)<1:
+ p.print_usage()
+ sys.exit(1)
+ if opts.exp is None:
+ exp = []
+ else:
+ exp = [opts.exp]
+
+ print 'Lignes retenues dans %s' % opts.output
+ iret = md5file(args[0], opts.nbch, opts.epsi,
+ regexp_ignore=exp, info=2, output=opts.output)
+
rep_macro = os.path.join(prefs.REPINI,'Cata/cataSTA8')
sys.path.insert(0,rep_macro)
from cata import *
+from math import ceil
+from Extensions import param2
+pi=param2.Variable('pi',pi)
-#& MODIF ENTETE DATE 12/05/2005 AUTEUR DURAND C.DURAND
+#& MODIF ENTETE DATE 22/05/2006 AUTEUR MCOURTOI M.COURTOIS
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
from Accas import *
from Accas import _F
import string
-import types
+from types import TupleType, ListType, StringType, InstanceType
import Numeric
from math import sin,cos,tan,asin,acos,atan2,atan,sinh,cosh,tanh,exp,log,log10
from math import sqrt,pi
import ops
-# pas d'import aster, Utilitai... pour ne pas gener eficas
-from Utilitai.t_fonction import t_fonction,t_fonction_c,t_nappe
-
try:
import aster
except:
pass
-#
__version__="$Name: $"
-__Id__="$Id: cata_STA8.py,v 1.2 2005/06/03 10:22:14 eficas Exp $"
-#
+__Id__="$Id: cata.py,v 1.1.6.2 2006/06/20 12:14:36 pnoyret Exp $"
+
+EnumTypes = (ListType, TupleType)
+
+# -----------------------------------------------------------------------------
JdC = JDC_CATA(code='ASTER',
execmodul=None,
regles = (AU_MOINS_UN('DEBUT','POURSUITE'),
ASSD.__init__(self,**args)
self.valeur=valeur
+ def __adapt__(self,validator):
+ if validator.name == "list":
+ #validateur liste,cardinalité
+ return (self,)
+ elif validator.name == "type":
+ #validateur type
+ return validator.adapt(self.valeur or 0)
+ else:
+ #validateur into et valid
+ return self
+
+class reel(ASSD):
+ def __init__(self,valeur=None,**args):
+ ASSD.__init__(self,**args)
+ self.valeur=valeur
+
+ def __call__(self):
+ return self.valeur
+
+ def __adapt__(self,validator):
+ if validator.name == "list":
+ #validateur liste,cardinalité
+ return (self,)
+ elif validator.name == "type":
+ #validateur type
+ return validator.adapt(self.valeur or 0.)
+ else:
+ #validateur into et valid
+ return self
+
+
+# -----------------------------------------------------------------------------
# Type geometriques
class no (GEOM):pass
class grno(GEOM):pass
class ma (GEOM):pass
class grma(GEOM):pass
-
-
+# -----------------------------------------------------------------------------
# Autres
-
class cabl_precont (ASSD):pass
class cara_elem (ASSD):pass
class cham_mater (ASSD):pass
class interf_dyna_clas(ASSD):pass
class interspfact (ASSD):pass
class listis_sdaster (ASSD):pass
-class mater_sdaster (ASSD):pass
class melasflu_sdaster(ASSD):pass
class nume_ddl_sdaster(ASSD):pass
class nume_ddl_gene (ASSD):pass
class tran_gene (ASSD):pass
class type_flui_stru (ASSD):pass
+# -----------------------------------------------------------------------------
# modeles :
-#--------------------------------
class modele_sdaster (ASSD):pass
class modele_gene (ASSD):
def LIST_SOUS_STRUCT(self) :
""" retourne la liste des sous structures du modele generalise
la liste des macro-elements sous-jacents"""
+ if self.par_lot():
+ raise Accas.AsException("Erreur dans modele_gene.LIST_SOUS_STRUCT en PAR_LOT='OUI'")
nommodgen=self.get_name()
ncham=nommodgen+(8-len(nommodgen))*' '
ssno=aster.getvectjev(ncham+(14-len(ncham))*' '+'.MODG.SSNO')
return [([ssno[ind], ssme[ind+1]]) for ind in range(len(ssno))]
def LIST_LIAIS_STRUCT(self) :
""" retourne la liste des liaisons entre sous structures du modele generalise sous la forme :
- [ (ss1, nom_liais1, ss2 , nom_liais2), ...] """
+ [ (ss1, nom_liais1, ss2 , nom_liais2), ...] """
+ if self.par_lot() :
+ raise Accas.AsException("Erreur dans modele_gene.LIST_LIAIS_STRUCT en PAR_LOT='OUI'")
nommodgen=self.get_name()
ncham=nommodgen+(8-len(nommodgen))*' '
lidf=aster.getcolljev(ncham+(14-len(ncham))*' '+'.MODG.LIDF')
return [([(lidf[ind][indb]) for indb in range(4)]) for ind in lidf]
+# -----------------------------------------------------------------------------
+# materiau
+class mater_sdaster(ASSD):
+ def RCVALE(self, phenomene, nompar=(), valpar=(), nomres=(), stop='F'):
+ """Appel à la routine fortran RCVALE pour récupérer les valeurs des
+ propriétés du matériau.
+ """
+ if self.par_lot() :
+ raise Accas.AsException("Erreur dans mater.RCVALE en PAR_LOT='OUI'")
+ from Utilitai.Utmess import UTMESS
+ # vérification des arguments
+ if not nompar in EnumTypes:
+ nompar = tuple(nompar)
+ if not valpar in EnumTypes:
+ valpar = tuple(valpar)
+ if not nomres in EnumTypes:
+ nomres = tuple(nomres)
+ if len(nompar) != len(valpar):
+ UTMESS('F', 'RCVALE', """Arguments incohérents :
+ Nom des paramètres : %s
+ Valeur des paramètres : %s""" \
+ % (', '.join(nompar), ', '.join([repr(v) for v in valpar])))
+ if len(nomres) < 1:
+ UTMESS('F', 'RCVALE', 'Argument invalide : "nomres" vide !')
+ # appel à l'interface Python/C
+ return aster.rcvale(self.nom, phenomene, nompar, valpar, nomres, stop)
+
+# -----------------------------------------------------------------------------
# macro-elements :
-#--------------------------------
class macr_elem_dyna (ASSD):
def NBRE_MODES(self) :
""" retourne le nombre de modes total, dynamiques et d'interface """
+ if self.par_lot() :
+ raise Accas.AsException("Erreur dans macr_elem_dyna.NBRE_MODES en PAR_LOT='OUI'")
nommacr=self.get_name()
ncham=nommacr+(8-len(nommacr))*' '
ncham=nommacr+(8-len(nommacr))*' '+'.MAEL'
- nombase=aster.getvectjev(ncham+(19-len(ncham))*' '+'.REFE')[0]
+ nombase=aster.getvectjev(ncham+'_REFE')[0]
nbmode=Numeric.array(aster.getvectjev(nombase[0:8]+(19-len(nombase[0:8]))*' '+'.UTIL'))
nbmodtot=nbmode[1]
nbmoddyn=nbmode[2]
nbmodint=nbmode[3]
return [nbmodtot,nbmoddyn,nbmodint]
-
+
def EXTR_MATR_GENE(self,typmat) :
- """ retourne les valeurs des matrices generalisees reelles
+ """ retourne les valeurs des matrices generalisees reelles
dans un format Numerical Array
typmat='MASS_GENE' pour obtenir la matrice de masse generalisee
typmat='RIGI_GENE' pour obtenir la matrice de raideur generalisee
typmat='AMOR_GENE' pour obtenir la matrice d'amortissement generalisee
Attributs retourne
- self.valeurs : Numeric.array contenant les valeurs """
+ if self.par_lot() :
+ raise Accas.AsException("Erreur dans macr_elem_dyna.EXTR_MATR_GENE en PAR_LOT='OUI'")
nommacr=self.get_name()
if (typmat=='MASS_GENE') :
- ext='.MAEL.MASS '
- elif (typmat=='RIGI_GENE') :
- ext='.MAEL.RAID '
- elif (typmat=='AMOR_GENE') :
- ext='.MAEL.AMOR '
+ ext='.MAEL_MASS'
+ elif (typmat=='RIGI_GENE') :
+ ext='.MAEL_RAID'
+ elif (typmat=='AMOR_GENE') :
+ ext='.MAEL_AMOR'
else:
raise Accas.AsException("Le type de la matrice est incorrect")
ncham=nommacr+(8-len(nommacr))*' '+ext
- desc=Numeric.array(aster.getvectjev(ncham+(19-len(ncham))*' '+'.DESC'))
+ print ncham
+ desc=Numeric.array(aster.getvectjev(ncham+'_DESC'))
-# On teste si le DESC du vecteur existe
+ # On teste si le DESC du vecteur existe
if (desc==None):
raise Accas.AsException("L'objet matrice n'existe pas ou \
est mal cree par Code Aster")
- tmp=Numeric.array(aster.getvectjev(ncham+(19-len(ncham))*' '+'.VALE'))
+ tmp=Numeric.array(aster.getvectjev(ncham+'_VALE'))
matrice=Numeric.zeros([desc[1],desc[1]],Numeric.Float)
for j in range(desc[1]+1):
for i in range(j):
matrice[j-1,i]=tmp[k]
matrice=(matrice+Numeric.transpose(matrice))
for i in range(desc[1]):
- matrice[i,i]=0.5*matrice[i,i]
+ matrice[i,i]=0.5*matrice[i,i]
return matrice
def RECU_MATR_GENE(self,typmat,matrice) :
- """ envoie les valeurs d'un Numerical Array dans des matrices generalisees
+ """ envoie les valeurs d'un Numerical Array dans des matrices generalisees
reelles definies dans jeveux
typmat='MASS_GENE' pour obtenir la matrice de masse generalisee
typmat='RIGI_GENE' pour obtenir la matrice de raideur generalisee
typmat='AMOR_GENE' pour obtenir la matrice d'amortissement generalisee
Attributs ne retourne rien """
+ if self.par_lot() :
+ raise Accas.AsException("Erreur dans macr_elem_dyna.RECU_MATR_GENE en PAR_LOT='OUI'")
from Utilitai.Utmess import UTMESS
-# avertissement generique
+ # avertissement generique
UTMESS('A','RECU_MATR_GENE',' ATTENTION, VOUS ALLEZ ECRASER DES CONCEPTS EXISTANTS')
nommacr=self.get_name()
if (typmat=='MASS_GENE') :
- ext='.MAEL.MASS '
- elif (typmat=='RIGI_GENE') :
- ext='.MAEL.RAID '
- elif (typmat=='AMOR_GENE') :
- ext='.MAEL.AMOR '
+ ext='.MAEL_MASS'
+ elif (typmat=='RIGI_GENE') :
+ ext='.MAEL_RAID'
+ elif (typmat=='AMOR_GENE') :
+ ext='.MAEL_AMOR'
else:
raise Accas.AsException("Le type de la matrice \
est incorrect")
ncham=nommacr+(8-len(nommacr))*' '+ext
- desc=Numeric.array(aster.getvectjev(ncham+(19-len(ncham))*' '+'.DESC'))
+ desc=Numeric.array(aster.getvectjev(ncham+'_DESC'))
-# On teste si le DESC de la matrice jeveux existe
+ # On teste si le DESC de la matrice jeveux existe
if (desc==None):
raise Accas.AsException("L'objet matrice n'existe pas ou \
est mal cree par Code Aster")
Numeric.asarray(matrice)
-# On teste si la matrice python est de dimension 2
- if (len(Numeric.shape(matrice))<>2):
+ # On teste si la matrice python est de dimension 2
+ if (len(Numeric.shape(matrice))<>2):
raise Accas.AsException("La dimension de la matrice \
est incorrecte")
-# On teste si les tailles de la matrice jeveux et python sont identiques
+ # On teste si les tailles de la matrice jeveux et python sont identiques
if (tuple([desc[1],desc[1]])<>Numeric.shape(matrice)) :
raise Accas.AsException("La dimension de la matrice \
est incorrecte")
for i in range(j):
k=j*(j-1)/2+i
tmp[k]=matrice[j-1,i]
- aster.putvectjev(ncham+(19-len(ncham))*' '+'.VALE',len(tmp),tuple((
+ aster.putvectjev(ncham+'_VALE',len(tmp),tuple((
range(1,len(tmp)+1))),tuple(tmp),tuple(tmp),1)
return
-
class macr_elem_stat (ASSD):pass
+# -----------------------------------------------------------------------------
# liste :
-#--------------------------------
class listr8_sdaster (ASSD):
- def Valeurs(self) :
- """
- Retourne la liste des valeurs : [val1, ..., valN]
- """
- vale=string.ljust(self.get_name(),19)+'.VALE'
- return list(aster.getvectjev(vale))
+ def Valeurs(self) :
+ """
+ Retourne la liste des valeurs : [val1, ..., valN]
+ """
+ if not self.par_lot():
+ vale='%-19s.VALE' % self.get_name()
+ t_vale = aster.getvectjev(vale)
+ if t_vale == None:
+ UTMESS('F', 'listr8.Valeurs', "Objet '%s' inexistant" % vale)
+ return list(t_vale)
+ else:
+ raise Accas.AsException("Erreur dans listr8.Valeurs en PAR_LOT='OUI'")
+# -----------------------------------------------------------------------------
# post-traitement :
-#--------------------------------
class post_comp_cham_el :
def __init__(self,valeurs,maille=None,point=None,sous_point=None) :
self.valeurs=valeurs
self.valeurs=valeurs
self.noeud=noeud
+# -----------------------------------------------------------------------------
# maillage :
-#--------------------------------
class maillage_sdaster(ASSD):
def LIST_GROUP_NO(self) :
- """ retourne la liste des groupes de noeuds sous la forme :
+ """ retourne la liste des groupes de noeuds sous la forme :
[ (gno1, nb noeuds gno1), ...] """
- nommail=self.get_name()
- dic_gpno=aster.getcolljev(nommail.ljust(8)+".GROUPENO")
- return [(gpno.strip(),len(dic_gpno[gpno])) for gpno in dic_gpno]
+ if self.par_lot() :
+ raise Accas.AsException("Erreur dans maillage.LIST_GROUP_NO en PAR_LOT='OUI'")
+ nommail=self.get_name()
+ dic_gpno=aster.getcolljev(nommail.ljust(8)+".GROUPENO")
+ return [(gpno.strip(),len(dic_gpno[gpno])) for gpno in dic_gpno]
def LIST_GROUP_MA(self) :
- """ retourne la liste des groupes de mailles sous la forme :
+ """ retourne la liste des groupes de mailles sous la forme :
[ (gma1, nb mailles gma1, dime max des mailles gma1), ...] """
- nommail=self.get_name()
- nommail=nommail.ljust(8)
- ngpma=[]
- ltyma =aster.getvectjev("&CATA.TM.NOMTM")
- catama=aster.getcolljev("&CATA.TM.TMDIM")
- dic_gpma=aster.getcolljev(nommail+".GROUPEMA")
- dimama=[catama[ltyma[ma-1]][0] for ma in aster.getvectjev(nommail+".TYPMAIL")]
- for grp in dic_gpma.keys():
- dim=max([dimama[ma-1] for ma in dic_gpma[grp]])
- ngpma.append((grp.strip(),len(dic_gpma[grp]),dim))
- return ngpma
-
+ if self.par_lot() :
+ raise Accas.AsException("Erreur dans maillage.LIST_GROUP_MA en PAR_LOT='OUI'")
+ nommail=self.get_name()
+ nommail=nommail.ljust(8)
+ ngpma=[]
+ ltyma =aster.getvectjev("&CATA.TM.NOMTM")
+ catama=aster.getcolljev("&CATA.TM.TMDIM")
+ dic_gpma=aster.getcolljev(nommail+".GROUPEMA")
+ dimama=[catama[ltyma[ma-1]][0] for ma in aster.getvectjev(nommail+".TYPMAIL")]
+ for grp in dic_gpma.keys():
+ dim=max([dimama[ma-1] for ma in dic_gpma[grp]])
+ ngpma.append((grp.strip(),len(dic_gpma[grp]),dim))
+ return ngpma
class squelette (maillage_sdaster):pass
-# cham_gd_sdaster (carte_sdaster,cham_no_sdaster,cham_elem_sdaster)
-#--------------------------------
-
+# -----------------------------------------------------------------------------
+# champ_gd/carte
class cham_gd_sdaster(ASSD):pass
-
-# cham_gd_sdaster/carte_sdaster :
-#--------------------------------
class carte_sdaster (cham_gd_sdaster):pass
-class carte_dbel_r (carte_sdaster):pass
-class carte_depl_c (carte_sdaster):pass
-class carte_depl_f (carte_sdaster):pass
-class carte_depl_r (carte_sdaster):pass
-class carte_durt_r (carte_sdaster):pass
-class carte_ener_r (carte_sdaster):pass
-class carte_epsi_r (carte_sdaster):pass
-class carte_erreur (carte_sdaster):pass
-class carte_flux_r (carte_sdaster):pass
-class carte_g_depl_r (carte_sdaster):pass
-class carte_geom_r (carte_sdaster):pass
-class carte_hydr_r (carte_sdaster):pass
-class carte_inst_r (carte_sdaster):pass
-class carte_inte_r (carte_sdaster):pass
-class carte_irra_r (carte_sdaster):pass
-class carte_neut_f (carte_sdaster):pass
-class carte_neut_r (carte_sdaster):pass
-class carte_pres_r (carte_sdaster):pass
-class carte_sief_r (carte_sdaster):pass
-class carte_sour_r (carte_sdaster):pass
-class carte_temp_f (carte_sdaster):pass
-class carte_temp_r (carte_sdaster):pass
-class carte_var2_r (carte_sdaster):pass
-class carte_vnor_c (carte_sdaster):pass
-class carte_corr_r (carte_sdaster):pass
-
-
-# cham_gd_sdaster/cham_elem_sdaster :
-#--------------------------------
-class cham_elem_sdaster(cham_gd_sdaster):
+# -----------------------------------------------------------------------------
+# cham_elem
+class cham_elem(cham_gd_sdaster):
def EXTR_COMP(self,comp,lgma,topo=0) :
- """ retourne les valeurs de la composante comp du champ sur la liste
- de groupes de mailles lgma avec eventuellement l'info de la
+ """ retourne les valeurs de la composante comp du champ sur la liste
+ de groupes de mailles lgma avec eventuellement l'info de la
topologie si topo>0. Si lgma est une liste vide, c'est equivalent
a un TOUT='OUI' dans les commandes aster
Attributs retourne
- self.maille : numero de mailles
- self.point : numero du point dans la maille
- self.sous_point : numero du sous point dans la maille """
-
-
- ncham=self.get_name()
- ncham=ncham+(8-len(ncham))*' '
- nchams=ncham[0:7]+'S'
- ncmp=comp+(8-len(comp))*' '
-
- aster.prepcompcham(ncham,nchams,ncmp,"EL ",topo,lgma)
-
- valeurs=Numeric.array(aster.getvectjev(nchams+(19-len(ncham))*' '+'.V'))
-
- if (topo>0) :
- maille=(aster.getvectjev(nchams+(19-len(ncham))*' '+'.M'))
- point=(aster.getvectjev(nchams+(19-len(ncham))*' '+'.P'))
- sous_point=(aster.getvectjev(nchams+(19-len(ncham))*' '+'.SP'))
- else :
- maille=None
- point=None
- sous_point=None
-
- aster.prepcompcham("__DETR__",nchams,ncmp,"EL ",topo,lgma)
-
- return post_comp_cham_el(valeurs,maille,point,sous_point)
-
-class cham_elem_crit_r(cham_elem_sdaster):pass
-class cham_elem_dbel_r(cham_elem_sdaster):pass
-class cham_elem_depl_c(cham_elem_sdaster):pass
-class cham_elem_depl_f(cham_elem_sdaster):pass
-class cham_elem_depl_r(cham_elem_sdaster):pass
-class cham_elem_dommag(cham_elem_sdaster):pass
-class cham_elem_durt_r(cham_elem_sdaster):pass
-class cham_elem_ener_r(cham_elem_sdaster):pass
-class cham_elem_epsi_c(cham_elem_sdaster):pass
-class cham_elem_epsi_r(cham_elem_sdaster):pass
-class cham_elem_erreur(cham_elem_sdaster):pass
-class cham_elem_facy_r(cham_elem_sdaster):pass
-class cham_elem_flux_r(cham_elem_sdaster):pass
-class cham_elem_g_depl(cham_elem_sdaster):pass
-class cham_elem_geom_r(cham_elem_sdaster):pass
-class cham_elem_hydr_r(cham_elem_sdaster):pass
-class cham_elem_inst_r(cham_elem_sdaster):pass
-class cham_elem_inte_r(cham_elem_sdaster):pass
-class cham_elem_irra_r(cham_elem_sdaster):pass
-class cham_elem_neut_f(cham_elem_sdaster):pass
-class cham_elem_neut_r(cham_elem_sdaster):pass
-class cham_elem_pres_r(cham_elem_sdaster):pass
-class cham_elem_sief_c(cham_elem_sdaster):pass
-class cham_elem_sief_r(cham_elem_sdaster):pass
-class cham_elem_sour_r(cham_elem_sdaster):pass
-class cham_elem_spma_r(cham_elem_sdaster):pass
-class cham_elem_temp_f(cham_elem_sdaster):pass
-class cham_elem_temp_r(cham_elem_sdaster):pass
-class cham_elem_vari_r(cham_elem_sdaster):pass
-class cham_elem_vnor_c(cham_elem_sdaster):pass
-
-
-# cham_gd/cham_no :
-#--------------------------------
-class cham_no_sdaster(cham_gd_sdaster):
+ if self.par_lot() :
+ raise Accas.AsException("Erreur dans cham_elem.EXTR_COMP en PAR_LOT='OUI'")
+
+ ncham=self.get_name()
+ ncham=ncham+(8-len(ncham))*' '
+ nchams=ncham[0:7]+'S'
+ ncmp=comp+(8-len(comp))*' '
+
+ aster.prepcompcham(ncham,nchams,ncmp,"EL ",topo,lgma)
+
+ valeurs=Numeric.array(aster.getvectjev(nchams+(19-len(ncham))*' '+'.V'))
+
+ if (topo>0) :
+ maille=(aster.getvectjev(nchams+(19-len(ncham))*' '+'.M'))
+ point=(aster.getvectjev(nchams+(19-len(ncham))*' '+'.P'))
+ sous_point=(aster.getvectjev(nchams+(19-len(ncham))*' '+'.SP'))
+ else :
+ maille=None
+ point=None
+ sous_point=None
+
+ aster.prepcompcham("__DETR__",nchams,ncmp,"EL ",topo,lgma)
+
+ return post_comp_cham_el(valeurs,maille,point,sous_point)
+
+# -----------------------------------------------------------------------------
+# cham_no :
+class cham_no_sdaster(cham_gd_sdaster):
def EXTR_COMP(self,comp,lgno,topo=0) :
- """ retourne les valeurs de la composante comp du champ sur la liste
- de groupes de noeuds lgno avec eventuellement l'info de la
+ """ retourne les valeurs de la composante comp du champ sur la liste
+ de groupes de noeuds lgno avec eventuellement l'info de la
topologie si topo>0. Si lgno est une liste vide, c'est equivalent
a un TOUT='OUI' dans les commandes aster
Attributs retourne
- self.valeurs : Numeric.array contenant les valeurs
Si on a demande la topo (i.e. self.topo = 1) :
- self.noeud : numero de noeud """
-
-
- ncham=self.get_name()
- ncham=ncham+(8-len(ncham))*' '
- nchams=ncham[0:7]+'S'
- ncmp=comp+(8-len(comp))*' '
-
- aster.prepcompcham(ncham,nchams,ncmp,"NO ",topo,lgno)
-
- valeurs=Numeric.array(aster.getvectjev(nchams+(19-len(ncham))*' '+'.V'))
-
- if (topo>0) :
- noeud=(aster.getvectjev(nchams+(19-len(ncham))*' '+'.N'))
- else :
- noeud=None
-
- aster.prepcompcham("__DETR__",nchams,ncmp,"NO ",topo,lgno)
-
- return post_comp_cham_no(valeurs,noeud)
-
-class cham_no_dbel_r (cham_no_sdaster):pass
-class cham_no_depl_c (cham_no_sdaster):pass
-class cham_no_depl_f (cham_no_sdaster):pass
-class cham_no_depl_r (cham_no_sdaster):pass
-class cham_no_durt_r (cham_no_sdaster):pass
-class cham_no_ener_r (cham_no_sdaster):pass
-class cham_no_epsi_r (cham_no_sdaster):pass
-class cham_no_erreur (cham_no_sdaster):pass
-class cham_no_facy_r (cham_no_sdaster):pass
-class cham_no_flux_r (cham_no_sdaster):pass
-class cham_no_g_depl_r (cham_no_sdaster):pass
-class cham_no_geom_r (cham_no_sdaster):pass
-class cham_no_hydr_r (cham_no_sdaster):pass
-class cham_no_inst_r (cham_no_sdaster):pass
-class cham_no_inte_r (cham_no_sdaster):pass
-class cham_no_irra_r (cham_no_sdaster):pass
-class cham_no_neut_f (cham_no_sdaster):pass
-class cham_no_neut_r (cham_no_sdaster):pass
-class cham_no_pres_c (cham_no_sdaster):pass
-class cham_no_pres_r (cham_no_sdaster):pass
-class cham_no_sief_r (cham_no_sdaster):pass
-class cham_no_sour_r (cham_no_sdaster):pass
-class cham_no_spma_r (cham_no_sdaster):pass
-class cham_no_temp_c (cham_no_sdaster):pass
-class cham_no_temp_f (cham_no_sdaster):pass
-class cham_no_temp_r (cham_no_sdaster):pass
-class cham_no_vanl_r (cham_no_sdaster):pass
-class cham_no_var2_r (cham_no_sdaster):pass
-class cham_no_vnor_c (cham_no_sdaster):pass
+ if self.par_lot() :
+ raise Accas.AsException("Erreur dans cham_no.EXTR_COMP en PAR_LOT='OUI'")
+ ncham=self.get_name()
+ ncham=ncham+(8-len(ncham))*' '
+ nchams=ncham[0:7]+'S'
+ ncmp=comp+(8-len(comp))*' '
-# resultat_sdaster : (evol_sdaster,mode_stat,mode_meca)
-#--------------------------------------
+ aster.prepcompcham(ncham,nchams,ncmp,"NO ",topo,lgno)
+
+ valeurs=Numeric.array(aster.getvectjev(nchams+(19-len(ncham))*' '+'.V'))
+
+ if (topo>0) :
+ noeud=(aster.getvectjev(nchams+(19-len(ncham))*' '+'.N'))
+ else :
+ noeud=None
+
+ aster.prepcompcham("__DETR__",nchams,ncmp,"NO ",topo,lgno)
+
+ return post_comp_cham_no(valeurs,noeud)
+# -----------------------------------------------------------------------------
+# resultat_sdaster : (evol_sdaster,mode_stat,mode_meca)
class resultat_sdaster(ASSD):
def LIST_CHAMPS (self) :
+ if self.par_lot() :
+ raise Accas.AsException("Erreur dans resultat.LIST_CHAMPS en PAR_LOT='OUI'")
return aster.GetResu(self.get_name(), "CHAMPS")
def LIST_NOM_CMP (self) :
+ if self.par_lot() :
+ raise Accas.AsException("Erreur dans resultat.LIST_NOM_CMP en PAR_LOT='OUI'")
return aster.GetResu(self.get_name(), "COMPOSANTES")
def LIST_VARI_ACCES (self) :
+ if self.par_lot() :
+ raise Accas.AsException("Erreur dans resultat.LIST_VARI_ACCES en PAR_LOT='OUI'")
return aster.GetResu(self.get_name(), "VARI_ACCES")
def LIST_PARA (self) :
+ if self.par_lot() :
+ raise Accas.AsException("Erreur dans resultat.LIST_PARA en PAR_LOT='OUI'")
return aster.GetResu(self.get_name(), "PARAMETRES")
+class resultat_jeveux(resultat_sdaster):
+ """Classe permettant d'accéder à un resultat jeveux qui n'a pas d'ASSD associée,
+ c'est le cas des concepts résultats (table, evol_xxxx) dérivés."""
+ def __init__(self,nom_jeveux):
+ self.nom=nom_jeveux
+
+# -----------------------------------------------------------------------------
class acou_harmo (resultat_sdaster):pass
class base_modale (resultat_sdaster):pass
class comb_fourier (resultat_sdaster):pass
class mult_elas (resultat_sdaster):pass
class theta_geom (resultat_sdaster):pass
+# -----------------------------------------------------------------------------
# resultat_sdaster/evol_sdaster :
-#--------------------------------
class evol_sdaster(resultat_sdaster):pass
class evol_char(evol_sdaster):pass
class evol_elas(evol_sdaster):pass
class evol_ther(evol_sdaster):pass
class evol_varc(evol_sdaster):pass
+# -----------------------------------------------------------------------------
# resultat_sdaster/mode_stat :
-#--------------------------------
class mode_stat(resultat_sdaster):pass
class mode_stat_depl(mode_stat):pass
class mode_stat_acce(mode_stat):pass
class mode_stat_forc(mode_stat):pass
+# -----------------------------------------------------------------------------
# resultat_sdaster/mode_meca :
-#--------------------------------
class mode_meca(resultat_sdaster):pass
class mode_meca_c(mode_meca):pass
+# -----------------------------------------------------------------------------
# types 'fonction' :
-#--------------------------------
class fonction_class(ASSD):
def Valeurs(self):pass
def Parametres(self):
le type jeveux (FONCTION, FONCT_C, NAPPE) n'est pas retourne,
le dictionnaire peut ainsi etre fourni a CALC_FONC_INTERP tel quel.
"""
- if hasattr(self,'etape') and self.etape.nom=='DEFI_FONCTION' :
+ if not self.par_lot():
+ TypeProl={'E':'EXCLU', 'L':'LINEAIRE', 'C':'CONSTANT' }
+ objev = '%-19s.PROL' % self.get_name()
+ prol = aster.getvectjev(objev)
+ if prol == None:
+ UTMESS('F', 'fonction.Parametres', "Objet '%s' inexistant" % objev)
+ dico={
+ 'INTERPOL' : [prol[1][0:3],prol[1][4:7]],
+ 'NOM_PARA' : string.strip(prol[2][0:16]),
+ 'NOM_RESU' : string.strip(prol[3][0:16]),
+ 'PROL_DROITE' : TypeProl[prol[4][1]],
+ 'PROL_GAUCHE' : TypeProl[prol[4][0]],
+ }
+ elif hasattr(self,'etape') and self.etape.nom=='DEFI_FONCTION' :
dico={
'INTERPOL' : self.etape['INTERPOL'],
'NOM_PARA' : self.etape['NOM_PARA'],
'PROL_DROITE' : self.etape['PROL_DROITE'],
'PROL_GAUCHE' : self.etape['PROL_GAUCHE'],
}
- if type(dico['INTERPOL'])==types.TupleType :
+ if type(dico['INTERPOL'])==TupleType :
dico['INTERPOL']=list(dico['INTERPOL'])
- elif type(dico['INTERPOL'])==types.StringType :
+ elif type(dico['INTERPOL'])==StringType :
dico['INTERPOL']=[dico['INTERPOL'],]
if len(dico['INTERPOL'])==1 :
dico['INTERPOL']=dico['INTERPOL']*2
- else :
- TypeProl={'E':'EXCLU', 'L':'LINEAIRE', 'C':'CONSTANT' }
- prol=aster.getvectjev(string.ljust(self.get_name(),19)+'.PROL')
- dico={
- 'INTERPOL' : [prol[1][0:3],prol[1][4:7]],
- 'NOM_PARA' : string.strip(prol[2][0:16]),
- 'NOM_RESU' : string.strip(prol[3][0:16]),
- 'PROL_DROITE' : TypeProl[prol[4][1]],
- 'PROL_GAUCHE' : TypeProl[prol[4][0]],
- }
+ else:
+ raise Accas.AsException("Erreur dans fonction.Parametres en PAR_LOT='OUI'")
return dico
def Trace(self,FORMAT='TABLEAU',**kargs):
"""Tracé d'une fonction"""
+ if self.par_lot() :
+ raise Accas.AsException("Erreur dans fonction.Trace en PAR_LOT='OUI'")
from Utilitai.Graph import Graph
gr=Graph()
gr.AjoutCourbe(Val=self.Valeurs(),
Lab=[self.Parametres()['NOM_PARA'],self.Parametres()['NOM_RESU']])
gr.Trace(FORMAT=FORMAT,**kargs)
+
class fonction_sdaster(fonction_class):
def convert(self,arg='real'):
"""
Retourne un objet de la classe t_fonction
représentation python de la fonction
"""
+ from Utilitai.t_fonction import t_fonction,t_fonction_c
if arg=='real' :
return t_fonction(self.Absc(),
self.Ordo(),
"""
Retourne deux listes de valeurs : abscisses et ordonnees
"""
- if hasattr(self,'etape') and self.etape.nom=='DEFI_FONCTION' :
+ if not self.par_lot():
+ vale = '%-19s.VALE' % self.get_name()
+ lbl = aster.getvectjev(vale)
+ if lbl == None:
+ UTMESS('F', 'fonction.Valeurs', "Objet '%s' inexistant" % vale)
+ lbl = list(lbl)
+ dim=len(lbl)/2
+ lx=lbl[0:dim]
+ ly=lbl[dim:2*dim]
+ return [lx,ly]
+ elif hasattr(self,'etape') and self.etape.nom=='DEFI_FONCTION' :
if self.etape['VALE']!=None:
lbl=list(self.etape['VALE'])
dim=len(lbl)
elif self.etape['VALE_PARA']!=None:
return [self.etape['VALE_PARA'].Valeurs(),self.etape['VALE_FONC'].Valeurs()]
else :
- vale=string.ljust(self.get_name(),19)+'.VALE'
- lbl=list(aster.getvectjev(vale))
- dim=len(lbl)/2
- lx=lbl[0:dim]
- ly=lbl[dim:2*dim]
- return [lx,ly]
+ raise Accas.AsException("Erreur dans fonction.Valeurs en PAR_LOT='OUI'")
def Absc(self):
"""Retourne la liste des abscisses"""
return self.Valeurs()[0]
def __call__(self,val):
### Pour EFICAS : substitution de l'instance de classe
### parametre par sa valeur
- if type(val)==types.InstanceType : val=val.valeur
+ if type(val)==InstanceType:
+ val=val.valeur
###
__ff=self.convert()
return __ff(val)
+
class para_sensi(fonction_sdaster): pass
+
class fonction_c(fonction_class):
def convert(self,arg='real'):
"""
Retourne un objet de la classe t_fonction ou t_fonction_c,
représentation python de la fonction complexe
"""
+ from Utilitai.t_fonction import t_fonction,t_fonction_c
if arg=='real' :
return t_fonction(self.Absc(),
self.Ordo(),
"""
Retourne trois listes de valeurs : abscisses, parties reelles et imaginaires.
"""
- if self.etape.nom=='DEFI_FONCTION' :
- lbl=list(self.etape['VALE_C'])
- dim=len(lbl)
- lx=[lbl[i] for i in range(0,dim,3)]
- lr=[lbl[i] for i in range(1,dim,3)]
- li=[lbl[i] for i in range(2,dim,3)]
- return [lx,lr,li]
- else :
- vale=string.ljust(self.get_name(),19)+'.VALE'
- lbl=list(aster.getvectjev(vale))
+ if not self.par_lot():
+ vale = '%-19s.VALE' % self.get_name()
+ lbl = aster.getvectjev(vale)
+ if lbl == None:
+ UTMESS('F', 'fonction.Valeurs', "Objet '%s' inexistant" % vale)
+ lbl = list(lbl)
dim=len(lbl)/3
lx=lbl[0:dim]
lr=[]
lr.append(lbl[dim+2*i])
li.append(lbl[dim+2*i+1])
return [lx,lr,li]
+ if self.etape.nom=='DEFI_FONCTION' :
+ lbl=list(self.etape['VALE_C'])
+ dim=len(lbl)
+ lx=[lbl[i] for i in range(0,dim,3)]
+ lr=[lbl[i] for i in range(1,dim,3)]
+ li=[lbl[i] for i in range(2,dim,3)]
+ return [lx,lr,li]
+ else :
+ raise Accas.AsException("Erreur dans fonction_c.Valeurs en PAR_LOT='OUI'")
def Absc(self):
"""Retourne la liste des abscisses"""
return self.Valeurs()[0]
return self.Valeurs()[2]
def Trace(self,FORMAT='TABLEAU',**kargs):
"""Tracé d'une fonction complexe"""
+ if self.par_lot() :
+ raise Accas.AsException("Erreur dans fonction_c.Trace en PAR_LOT='OUI'")
from Utilitai.Graph import Graph
gr=Graph()
gr.AjoutCourbe(Val=self.Valeurs(),
def __call__(self,val):
### Pour EFICAS : substitution de l'instance de classe
### parametre par sa valeur
- import types
- if type(val)==types.InstanceType : val=val.valeur
+ if type(val)==InstanceType:
+ val=val.valeur
###
__ff=convert(self)
return __ff(val)
+
class nappe_sdaster(fonction_class):
def convert(self):
"""
Retourne un objet de la classe t_nappe, représentation python de la nappe
"""
+ from Utilitai.t_fonction import t_fonction,t_nappe
para=self.Parametres()
vale=self.Valeurs()
l_fonc=[]
Retourne la liste des valeurs du parametre,
et une liste de couples (abscisses,ordonnees) de chaque fonction.
"""
- nsd=string.ljust(self.get_name(),19)
+ if self.par_lot():
+ raise Accas.AsException("Erreur dans nappe.Valeurs en PAR_LOT='OUI'")
+ nsd = '%-19s' % self.get_name()
dicv=aster.getcolljev(nsd+'.VALE')
# les cles de dicv sont 1,...,N (indice du parametre)
lpar=aster.getvectjev(nsd+'.PARA')
+ if lpar == None:
+ UTMESS('F', 'fonction.Valeurs', "Objet '%s' inexistant" % (nsd+'.PARA'))
lval=[]
for k in range(len(dicv)):
lbl=dicv[k+1]
le dictionnaire peut ainsi etre fourni a CALC_FONC_INTERP tel quel,
et une liste de dictionnaire des parametres de chaque fonction.
"""
+ if self.par_lot():
+ raise Accas.AsException("Erreur dans nappe.Parametres en PAR_LOT='OUI'")
TypeProl={'E':'EXCLU', 'L':'LINEAIRE', 'C':'CONSTANT' }
- prol=aster.getvectjev(string.ljust(self.get_name(),19)+'.PROL')
+ objev = '%-19s.PROL' % self.get_name()
+ prol=aster.getvectjev(objev)
+ if prol == None:
+ UTMESS('F', 'fonction.Parametres', "Objet '%s' inexistant" % objev)
dico={
'INTERPOL' : [prol[1][0:3],prol[1][4:7]],
'NOM_PARA' : string.strip(prol[2][0:16]),
return self.Valeurs()[0]
def Trace(self,FORMAT='TABLEAU',**kargs):
"""Tracé d'une nappe"""
+ if self.par_lot():
+ raise Accas.AsException("Erreur dans nappe.Trace en PAR_LOT='OUI'")
from Utilitai.Graph import Graph
gr=Graph()
lv=self.Valeurs()[1]
gr.AjoutCourbe(Val=[lx,ly], Lab=[dp['NOM_PARA_FONC'],dp['NOM_RESU']])
gr.Trace(FORMAT=FORMAT,**kargs)
+# -----------------------------------------------------------------------------
# matr_asse :
-#--------------------------------
class matr_asse(ASSD):pass
class matr_asse_gene(matr_asse):pass
class matr_asse_gene_r(matr_asse_gene):
def EXTR_MATR_GENE(self) :
- """ retourne les valeurs de la matrice generalisee reelle
+ """ retourne les valeurs de la matrice generalisee reelle
dans un format Numerical Array
Attributs retourne
- self.valeurs : Numeric.array contenant les valeurs """
+ if self.par_lot():
+ raise Accas.AsException("Erreur dans matr_asse_gene.EXTR_MATR_GENE en PAR_LOT='OUI'")
ncham=self.get_name()
ncham=ncham+(8-len(ncham))*' '
desc=Numeric.array(aster.getvectjev(ncham+(19-len(ncham))*' '+'.DESC'))
-# On teste si le DESC de la matrice existe
+ # On teste si le DESC de la matrice existe
if (desc==None):
raise Accas.AsException("L'objet matrice n'existe pas ou \
est mal cree par Code Aster")
-# Si le stockage est plein
+ # Si le stockage est plein
if desc[2]==2 :
- tmp=Numeric.array(aster.getcolljev(ncham+(19-len(ncham))*' '+'.VALE')[1])
+ tmp=Numeric.array(aster.getcolljev(ncham+(19-len(ncham))*' '+'.VALM')[1])
valeur=Numeric.zeros([desc[1],desc[1]],Numeric.Float)
for j in range(desc[1]+1):
for i in range(j):
valeur[j-1,i]=tmp[k]
valeur=(valeur+Numeric.transpose(valeur))
for i in range(desc[1]):
- valeur[i,i]=0.5*valeur[i,i]
-# Si le stockage est diagonal
- elif desc[2]==1 :
- tmp=Numeric.array(aster.getcolljev(ncham+(19-len(ncham))*' '+'.VALE')[1])
+ valeur[i,i]=0.5*valeur[i,i]
+ # Si le stockage est diagonal
+ elif desc[2]==1 :
+ tmp=Numeric.array(aster.getcolljev(ncham+(19-len(ncham))*' '+'.VALM')[1])
valeur=Numeric.zeros([desc[1],desc[1]],Numeric.Float)
for i in range(desc[1]):
valeur[i,i]=tmp[i]
-# Sinon on arrete tout
+ # Sinon on arrete tout
else:
raise KeyError
return valeur
def RECU_MATR_GENE(self,matrice) :
- """ envoie les valeurs d'un Numerical Array dans des matrices
+ """ envoie les valeurs d'un Numerical Array dans des matrices
generalisees reelles definies dans jeveux
Attributs ne retourne rien """
+ if self.par_lot():
+ raise Accas.AsException("Erreur dans matr_asse_gene.RECU_MATR_GENE en PAR_LOT='OUI'")
from Utilitai.Utmess import UTMESS
-# avertissement generique
+ # avertissement generique
UTMESS('A','RECU_MATR_GENE',' ATTENTION, VOUS ALLEZ ECRASER DES CONCEPTS EXISTANTS')
ncham=self.get_name()
ncham=ncham+(8-len(ncham))*' '
desc=Numeric.array(aster.getvectjev(ncham+(19-len(ncham))*' '+'.DESC'))
-# On teste si le DESC de la matrice existe
+ # On teste si le DESC de la matrice existe
if (desc==None):
raise Accas.AsException("L'objet matrice n'existe pas ou \
est mal cree par Code Aster")
Numeric.asarray(matrice)
-# On teste si la dimension de la matrice python est 2
+ # On teste si la dimension de la matrice python est 2
if (len(Numeric.shape(matrice))<>2) :
raise Accas.AsException("La dimension de la matrice est incorrecte ")
-# On teste si les tailles des matrices jeveux et python sont identiques
+ # On teste si les tailles des matrices jeveux et python sont identiques
if (tuple([desc[1],desc[1]])<>Numeric.shape(matrice)) :
raise Accas.AsException("La taille de la matrice est incorrecte ")
-# Si le stockage est plein
+ # Si le stockage est plein
if desc[2]==2 :
taille=desc[1]*desc[1]/2.0+desc[1]/2.0
tmp=Numeric.zeros([int(taille)],Numeric.Float)
for i in range(j):
k=j*(j-1)/2+i
tmp[k]=matrice[j-1,i]
- aster.putcolljev(ncham+(19-len(ncham))*' '+'.VALE',len(tmp),tuple((\
- range(1,len(tmp)+1))),tuple(tmp),tuple(tmp),1)
-# Si le stockage est diagonal
- elif desc[2]==1 :
+ aster.putcolljev(ncham+(19-len(ncham))*' '+'.VALM',len(tmp),tuple((\
+ range(1,len(tmp)+1))),tuple(tmp),tuple(tmp),1)
+ # Si le stockage est diagonal
+ elif desc[2]==1 :
tmp=Numeric.zeros(desc[1],Numeric.Float)
for j in range(desc[1]):
tmp[j]=matrice[j,j]
- aster.putcolljev(ncham+(19-len(ncham))*' '+'.VALE',len(tmp),tuple((\
- range(1,len(tmp)+1))),tuple(tmp),tuple(tmp),1)
-# Sinon on arrete tout
+ aster.putcolljev(ncham+(19-len(ncham))*' '+'.VALM',len(tmp),tuple((\
+ range(1,len(tmp)+1))),tuple(tmp),tuple(tmp),1)
+ # Sinon on arrete tout
else:
raise KeyError
return
-
+
class matr_asse_gene_c(matr_asse_gene):
def EXTR_MATR_GENE(self) :
- """ retourne les valeurs de la matrice generalisee complexe
+ """ retourne les valeurs de la matrice generalisee complexe
dans un format Numerical Array
Attributs retourne
- self.valeurs : Numeric.array contenant les valeurs """
+ if self.par_lot():
+ raise Accas.AsException("Erreur dans matr_asse_gene_c.EXTR_MATR_GENE en PAR_LOT='OUI'")
ncham=self.get_name()
ncham=ncham+(8-len(ncham))*' '
if (desc==None):
raise Accas.AsException("L'objet matrice n'existe pas ou \
est mal cree par Code Aster ")
-# Si le stockage est plein
+ # Si le stockage est plein
if desc[2]==2 :
- tmp=Numeric.array(aster.getcolljev(ncham+(19-len(ncham))*' '+'.VALE')[1])
+ tmp=Numeric.array(aster.getcolljev(ncham+(19-len(ncham))*' '+'.VALM')[1])
valeur=Numeric.zeros([desc[1],desc[1]],Numeric.Complex)
for j in range(desc[1]+1):
for i in range(j):
valeur[j-1,i]=tmp[k]
valeur=(valeur+Numeric.transpose(valeur))
for i in range(desc[1]):
- valeur[i,i]=0.5*valeur[i,i]
-# Si le stockage est diagonal
- elif desc[2]==1 :
- tmp=Numeric.array(aster.getcolljev(ncham+(19-len(ncham))*' '+'.VALE')[1])
+ valeur[i,i]=0.5*valeur[i,i]
+ # Si le stockage est diagonal
+ elif desc[2]==1 :
+ tmp=Numeric.array(aster.getcolljev(ncham+(19-len(ncham))*' '+'.VALM')[1])
valeur=Numeric.zeros([desc[1],desc[1]],Numeric.Complex)
for i in range(desc[1]):
valeur[i,i]=tmp[i]
-# Sinon on arrete tout
+ # Sinon on arrete tout
else:
raise KeyError
return valeur
def RECU_MATR_GENE(self,matrice) :
- """ envoie les valeurs d'un Numerical Array dans des matrices
+ """ envoie les valeurs d'un Numerical Array dans des matrices
generalisees reelles definies dans jeveux
Attributs ne retourne rien """
+ if self.par_lot():
+ raise Accas.AsException("Erreur dans matr_asse_gene_c.RECU_MATR_GENE en PAR_LOT='OUI'")
from Utilitai.Utmess import UTMESS
-# avertissement generique
+ # avertissement generique
UTMESS('A','RECU_MATR_GENE',' ATTENTION, VOUS ALLEZ ECRASER DES CONCEPTS EXISTANTS')
Numeric.asarray(matrice)
ncham=ncham+(8-len(ncham))*' '
desc=Numeric.array(aster.getvectjev(ncham+(19-len(ncham))*' '+'.DESC'))
-# On teste si le DESC de la matrice existe
+ # On teste si le DESC de la matrice existe
if (desc==None):
raise Accas.AsException("L'objet matrice n'existe pas ou \
est mal cree par Code Aster")
Numeric.asarray(matrice)
-# On teste si la dimension de la matrice python est 2
+ # On teste si la dimension de la matrice python est 2
if (len(Numeric.shape(matrice))<>2) :
raise Accas.AsException("La dimension de la matrice est incorrecte ")
-# On teste si la taille de la matrice jeveux et python est identique
+ # On teste si la taille de la matrice jeveux et python est identique
if (tuple([desc[1],desc[1]])<>Numeric.shape(matrice)) :
raise Accas.AsException("La taille de la matrice est incorrecte ")
-# Si le stockage est plein
+ # Si le stockage est plein
if desc[2]==2 :
taille=desc[1]*desc[1]/2.0+desc[1]/2.0
tmpr=Numeric.zeros([int(taille)],Numeric.Float)
k=j*(j-1)/2+i
tmpr[k]=matrice[j-1,i].real
tmpc[k]=matrice[j-1,i].imag
- aster.putvectjev(ncham+(19-len(ncham))*' '+'.VALE',len(tmpr),tuple((\
- range(1,len(tmpr)+1))),tuple(tmpr),tuple(tmpc),1)
-# Si le stockage est diagonal
- elif desc[2]==1 :
+ aster.putvectjev(ncham+(19-len(ncham))*' '+'.VALM',len(tmpr),tuple((\
+ range(1,len(tmpr)+1))),tuple(tmpr),tuple(tmpc),1)
+ # Si le stockage est diagonal
+ elif desc[2]==1 :
tmpr=Numeric.zeros(desc[1],Numeric.Float)
tmpc=Numeric.zeros(desc[1],Numeric.Float)
for j in range(desc[1]):
tmpr[j]=matrice[j,j].real
tmpc[j]=matrice[j,j].imag
- aster.putvectjev(ncham+(19-len(ncham))*' '+'.VALE',len(tmpr),tuple((\
- range(1,len(tmpr)+1))),tuple(tmpr),tuple(tmpc),1)
-# Sinon on arrete tout
+ aster.putvectjev(ncham+(19-len(ncham))*' '+'.VALM',len(tmpr),tuple((\
+ range(1,len(tmpr)+1))),tuple(tmpr),tuple(tmpc),1)
+ # Sinon on arrete tout
else:
raise KeyError
return
-
+# -----------------------------------------------------------------------------
class matr_asse_gd(matr_asse):pass
class matr_asse_depl_c(matr_asse_gd):pass
class matr_asse_depl_r(matr_asse_gd):pass
class matr_asse_temp_c(matr_asse_gd):pass
class matr_asse_temp_r(matr_asse_gd):pass
+# -----------------------------------------------------------------------------
# matr_elem :
-#--------------------------------
class matr_elem(ASSD):pass
class matr_elem_depl_c(matr_elem):pass
class matr_elem_depl_r(matr_elem):pass
class matr_elem_pres_c(matr_elem):pass
class matr_elem_temp_r(matr_elem):pass
-
-
-
+# -----------------------------------------------------------------------------
# table :
-#--------------------------------
class table_sdaster(ASSD):
- def __getitem__(self,key):
- requete=string.ljust(key[0],24)
- tblp=string.ljust(self.get_name(),19)+'.TBLP'
- tabnom=list(aster.getvectjev(tblp))
+ def __getitem__(self,key):
+ from Utilitai.Utmess import UTMESS
+ if self.par_lot():
+ raise Accas.AsException("Erreur dans table.__getitem__ en PAR_LOT='OUI'")
+ requete = '%-24s' % key[0]
+ tblp = '%-19s.TBLP' % self.get_name()
+ tabnom = aster.getvectjev(tblp)
+ if tabnom == None:
+ UTMESS('F', 'TABLE[]', "Objet '%s' inexistant" % tblp)
for i in range(len(tabnom)) :
if tabnom[i]==requete: break
resu=aster.getvectjev(tabnom[i+2])
+ if resu == None:
+ UTMESS('F', 'TABLE[]', "Objet '%s' inexistant" % tabnom[i+2])
exist=aster.getvectjev(tabnom[i+3])
+ if exist == None:
+ UTMESS('F', 'TABLE[]', "Objet '%s' inexistant" % tabnom[i+3])
if key[1]>len(resu) or exist[key[1]-1]==0:
raise KeyError
else:
return resu[key[1]-1]
- def EXTR_TABLE(self) :
+
+ def TITRE(self):
+ """Retourne le titre d'une table Aster
+ (Utile pour récupérer le titre et uniquement le titre d'une table dont
+ on souhaite manipuler la dérivée).
+ """
+ if self.par_lot():
+ raise Accas.AsException("Erreur dans table.TITRE en PAR_LOT='OUI'")
+ titj=aster.getvectjev('%-19s.TITR' % self.get_name())
+ if titj<>None:
+ titr='\n'.join(titj)
+ else:
+ titr=''
+ return titr
+
+ def EXTR_TABLE(self) :
"""Produit un objet Table à partir du contenu d'une table Aster
"""
def Nonefy(l1,l2) :
if l2==0 : return None
else : return l1
+ if self.par_lot():
+ raise Accas.AsException("Erreur dans table.EXTR_TABLE en PAR_LOT='OUI'")
from Utilitai.Table import Table
- tblp=string.ljust(self.get_name(),19)+'.TBLP'
- tabnom=list(aster.getvectjev(tblp))
+ # titre
+ titr = self.TITRE()
+ # récupération des paramètres
+ v_tblp = aster.getvectjev('%-19s.TBLP' % self.get_name())
+ if v_tblp == None:
+ # retourne une table vide
+ return Table(titr=titr)
+ tabnom=list(v_tblp)
nparam=len(tabnom)/4
lparam=[tabnom[4*i:4*i+4] for i in range(nparam)]
dval={}
d={}
for p in lpar : d[p]=dval[p][i]
lisdic.append(d)
- # titre
- titj=aster.getvectjev(self.get_name().ljust(19)+'.TITR')
- if titj<>None:
- titr='\n'.join(titj)
- else:
- titr=''
return Table(lisdic, lpar, ltyp, titr)
+# -----------------------------------------------------------------------------
class table_jeveux(table_sdaster):
"""Classe permettant d'accéder à une table jeveux qui n'a pas d'ASSD associée,
c'est le cas des concepts résultats (table, evol_xxxx) dérivés."""
def __init__(self,nom_jeveux):
self.nom=nom_jeveux
-class tabl_aire_int (table_sdaster):pass
-class tabl_calc_g_loca(table_sdaster):pass
-class tabl_calc_g_th (table_sdaster):pass
-class tabl_cara_geom (table_sdaster):pass
-class tabl_char_limite(table_sdaster):pass
-class tabl_ener_elas (table_sdaster):pass
-class tabl_ener_pot (table_sdaster):pass
-class tabl_ener_cin (table_sdaster):pass
-class tabl_trav_ext (table_sdaster):pass
-class tabl_ener_totale(table_sdaster):pass
-class tabl_indic_ener (table_sdaster):pass
-class tabl_indic_seuil(table_sdaster):pass
-class tabl_intsp (table_sdaster):pass
-class tabl_mass_iner (table_sdaster):pass
-class tabl_post_alea (table_sdaster):pass
-class tabl_post_beta (table_sdaster):pass
-class tabl_post_dyna (table_sdaster):pass
-class tabl_post_f_alea(table_sdaster):pass
-class tabl_post_fatig (table_sdaster):pass
-class tabl_post_gouj2e(table_sdaster):pass
-class tabl_post_k (table_sdaster):pass
-class tabl_post_rccm (table_sdaster):pass
-class tabl_post_rele (table_sdaster):pass
-class tabl_post_simpli(table_sdaster):pass
-class tabl_post_usur (table_sdaster):pass
-class tabl_reca_weib (table_sdaster):pass
-class tabl_rice_tracey(table_sdaster):pass
-class tabl_texture (table_sdaster):pass
-class tabl_trc (table_sdaster):pass
-class tabl_weibull (table_sdaster):pass
-
-
+# -----------------------------------------------------------------------------
# vect_asse :
-#--------------------------------
class vect_asse(ASSD):pass
-class vect_asse_gene(vect_asse):pass
-class vect_asse_gene_r(vect_asse_gene):
- def EXTR_VECT_GENE(self) :
- """ retourne les valeurs du vecteur generalisee
+
+class vect_asse_gene(vect_asse):
+ def EXTR_VECT_GENE_R(self) :
+ """ retourne les valeurs du vecteur generalisee
dans un format Numerical Array
Attributs retourne
- self.valeurs : Numeric.array contenant les valeurs """
-
+ if self.par_lot():
+ raise Accas.AsException("Erreur dans vect_asse_gene_r.EXTR_VECT_GENE en PAR_LOT='OUI'")
ncham=self.get_name()
ncham=ncham+(8-len(ncham))*' '
valeur=Numeric.array(aster.getvectjev(ncham+(19-len(ncham))*' '+'.VALE'))
-
return valeur
- def RECU_VECT_GENE(self,vecteur) :
- """ envoie les valeurs d'un Numerical Array dans un vecteur generalise
+ def RECU_VECT_GENE_R(self,vecteur) :
+ """ envoie les valeurs d'un Numerical Array dans un vecteur generalise
reel definie dans jeveux
Attributs ne retourne rien """
+ if self.par_lot():
+ raise Accas.AsException("Erreur dans vect_asse_gene_r.RECU_VECT_GENE en PAR_LOT='OUI'")
from Utilitai.Utmess import UTMESS
-# avertissement generique
+ # avertissement generique
UTMESS('A','RECU_VECT_GENE',' ATTENTION, VOUS ALLEZ ECRASER DES CONCEPTS EXISTANTS')
Numeric.asarray(vecteur)
ncham=self.get_name()
ncham=ncham+(8-len(ncham))*' '
desc=Numeric.array(aster.getvectjev(ncham+(19-len(ncham))*' '+'.DESC'))
-# On teste si le DESC du vecteur existe
+ # On teste si le DESC du vecteur existe
if (desc==None):
raise Accas.AsException("L'objet vecteur n'existe pas ou \
est mal cree par Code Aster")
-# On teste si la taille du vecteur jeveux et python est identique
+ # On teste si la taille du vecteur jeveux et python est identique
if desc[1]<>Numeric.shape(vecteur)[0] :
raise Accas.AsException("La taille du vecteur python est incorrecte")
aster.putvectjev(ncham+(19-len(ncham))*' '+'.VALE',len(vecteur),tuple((\
- range(1,len(vecteur)+1))),tuple(vecteur),tuple(vecteur),1)
+ range(1,len(vecteur)+1))),tuple(vecteur),tuple(vecteur),1)
return
-
-class vect_asse_gene_c(vect_asse_gene):
- def EXTR_VECT_GENE(self) :
- """ retourne les valeurs du vecteur generalisee
+ def EXTR_VECT_GENE_C(self) :
+ """ retourne les valeurs du vecteur generalisee
dans un format Numerical Array
Attributs retourne
- self.valeurs : Numeric.array contenant les valeurs """
+ if self.par_lot():
+ raise Accas.AsException("Erreur dans vect_asse_gene_c.EXTR_VECT_GENE en PAR_LOT='OUI'")
ncham=self.get_name()
ncham=ncham+(8-len(ncham))*' '
return valeur
- def RECU_VECT_GENE(self,vecteur) :
- """ envoie les valeurs d'un Numerical Array dans un vecteur generalise
+ def RECU_VECT_GENE_C(self,vecteur) :
+ """ envoie les valeurs d'un Numerical Array dans un vecteur generalise
complexe definie dans jeveux
Attributs ne retourne rien """
+ if self.par_lot():
+ raise Accas.AsException("Erreur dans vect_asse_gene_c.RECU_VECT_GENE en PAR_LOT='OUI'")
from Utilitai.Utmess import UTMESS
-# avertissement generique
+ # avertissement generique
UTMESS('A','RECU_VECT_GENE',' ATTENTION, VOUS ALLEZ ECRASER DES CONCEPTS EXISTANTS')
Numeric.asarray(vecteur)
ncham=self.get_name()
ncham=ncham+(8-len(ncham))*' '
desc=Numeric.array(aster.getvectjev(ncham+(19-len(ncham))*' '+'.DESC'))
-# On teste si le DESC de la matrice existe
+ # On teste si le DESC de la matrice existe
if (desc==None):
raise Accas.AsException("L'objet vecteur n'existe pas ou \
est mal cree par Code Aster")
-# On teste si la taille de la matrice jeveux et python est identique
+ # On teste si la taille de la matrice jeveux et python est identique
if desc[1]<>Numeric.shape(vecteur)[0] :
raise Accas.AsException("La taille du vecteur python est incorrecte")
tmpr=vecteur.real
tmpc=vecteur.imag
aster.putvectjev(ncham+(19-len(ncham))*' '+'.VALE',len(tmpr),tuple((
- range(1,len(tmpr)+1))),tuple(tmpr),tuple(tmpc),1)
+ range(1,len(tmpr)+1))),tuple(tmpr),tuple(tmpc),1)
return
-
+# -----------------------------------------------------------------------------
# vect_elem :
-#--------------------------------
class vect_elem(ASSD):pass
class vect_elem_depl_r(vect_elem):pass
class vect_elem_pres_c(vect_elem):pass
class vect_elem_pres_r(vect_elem):pass
class vect_elem_temp_r(vect_elem):pass
-#& MODIF COMMUN DATE 26/04/2005 AUTEUR LAVERNE J.LAVERNE
+#& MODIF COMMUN DATE 09/05/2006 AUTEUR JMBHH01 J.M.PROIX
# CONFIGURATION MANAGEMENT OF EDF VERSION
+# RESPONSABLE JMBHH01 J.M.PROIX
# ======================================================================
# COPYRIGHT (C) 1991 - 2003 EDF R&D WWW.CODE-ASTER.ORG
# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
def C_COMP_INCR() : return FACT(statut='f',min=1,max='**', #COMMUN#
RELATION =SIMP(statut='o',typ='TXM',defaut="VMIS_ISOT_TRAC",
into=( "ELAS",
+ "ELAS_HYPER",
"VMIS_ISOT_TRAC",
"VISC_ISOT_TRAC",
"VMIS_ISOT_LINE",
"META_V_CL_PT_RE",
"VMIS_CINE_LINE",
"VISC_TAHERI",
- "CHABOCHE",
"VISCOCHAB",
+ "VMIS_CIN1_CHAB",
+ "VMIS_CIN2_CHAB",
"VISC_CIN1_CHAB",
"VISC_CIN2_CHAB",
"POLY_CFC",
"LEMAITRE",
"LEMAITRE_IRRA",
"LEMA_SEUIL",
+ "IRRAD3M",
"ZIRC_CYRA2",
"VISC_IRRA_LOG",
"GRAN_IRRA_LOG",
"NADAI_B",
"DIS_CONTACT",
"DIS_CHOC",
+ "DIS_GRICRA",
"DIS_GOUJ2E_PLAS",
"DIS_GOUJ2E_ELAS",
"GRILLE_ISOT_LINE",
"BARCELONE",
"LAIGLE",
"DRUCKER_PRAGER",
- "OHNO",
+ "HOEK_BROWN",
+ "HOEK_BROWN_EFF",
+ "HOEK_BROWN_TOT",
"GRANGER_FP",
"GRANGER_FP_INDT",
"GRANGER_FP_V",
"KIT_THM",
"KIT_THHM",
"VMIS_ASYM_LINE",
- "ELAS_THM",
- "SURF_ETAT_NSAT",
- "SURF_ETAT_SATU",
- "CAM_CLAY_THM",
+ "ELAS_THER",
"KIT_DDI",
"GLRC",
"SANS",
"GATT_MONERIE",
) ),
ELAS =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
+ ELAS_HYPER =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
SANS =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
CORR_ACIER =SIMP(statut='c',typ='I',defaut=3,into=(3,)),
VMIS_ISOT_TRAC =SIMP(statut='c',typ='I',defaut=2,into=(2,)),
META_V_CL_RE =SIMP(statut='c',typ='I',defaut=6,into=(6,)),
META_V_CL_PT_RE =SIMP(statut='c',typ='I',defaut=6,into=(6,)),
VMIS_CINE_LINE =SIMP(statut='c',typ='I',defaut=7,into=(7,)),
- CHABOCHE =SIMP(statut='c',typ='I',defaut=14,into=(14,)),
VISCOCHAB =SIMP(statut='c',typ='I',defaut=28,into=(28,)),
+ VMIS_CIN1_CHAB =SIMP(statut='c',typ='I',defaut=8,into=(8,)),
+ VMIS_CIN2_CHAB =SIMP(statut='c',typ='I',defaut=14,into=(14,)),
VISC_CIN1_CHAB =SIMP(statut='c',typ='I',defaut=8,into=(8,)),
VISC_CIN2_CHAB =SIMP(statut='c',typ='I',defaut=14,into=(14,)),
POLY_CFC =SIMP(statut='c',typ='I',defaut=1688,into=(1688,)),
ROUSS_VISC =SIMP(statut='c',typ='I',defaut=3,into=(3,)),
VMIS_POU_LINE =SIMP(statut='c',typ='I',defaut=9,into=(9,)),
VMIS_POU_FLEJOU =SIMP(statut='c',typ='I',defaut=9 ,into=(9,)),
- ASSE_CORN =SIMP(statut='c',typ='I',defaut=4,into=(4,)),
+ ASSE_CORN =SIMP(statut='c',typ='I',defaut=7,into=(7,)),
ARME =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
NORTON_HOFF =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
LEMAITRE =SIMP(statut='c',typ='I',defaut=2,into=(2,)),
LEMA_SEUIL =SIMP(statut='c',typ='I',defaut=2,into=(2,)),
+ IRRAD3M =SIMP(statut='c',typ='I',defaut=5,into=(5,)),
LEMAITRE_IRRA =SIMP(statut='c',typ='I',defaut=2,into=(2,)),
ZIRC_CYRA2 =SIMP(statut='c',typ='I',defaut=2,into=(2,)),
ZIRC_EPRI =SIMP(statut='c',typ='I',defaut=2,into=(2,)),
GRILLE_PINTO_MEN=SIMP(statut='c',typ='I',defaut=16,into=(16,)),
DIS_CONTACT =SIMP(statut='c',typ='I',defaut=6,into=(6,)),
DIS_CHOC =SIMP(statut='c',typ='I',defaut=7,into=(7,)),
+ DIS_GRICRA =SIMP(statut='c',typ='I',defaut=5,into=(5,)),
DIS_GOUJ2E_PLAS =SIMP(statut='c',typ='I',defaut=2,into=(2,)),
DIS_GOUJ2E_ELAS =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
PINTO_MENEGOTTO =SIMP(statut='c',typ='I',defaut=8,into=(8,)),
BARCELONE =SIMP(statut='c',typ='I',defaut=5,into=(5,)),
LAIGLE =SIMP(statut='c',typ='I',defaut=4,into=(4,)),
DRUCKER_PRAGER =SIMP(statut='c',typ='I',defaut=3,into=(3,)),
- OHNO =SIMP(statut='c',typ='I',defaut=32,into=(32,)),
+ HOEK_BROWN =SIMP(statut='c',typ='I',defaut=3,into=(3,)),
+ HOEK_BROWN_EFF =SIMP(statut='c',typ='I',defaut=3,into=(3,)),
+ HOEK_BROWN_TOT =SIMP(statut='c',typ='I',defaut=3,into=(3,)),
GRANGER_FP =SIMP(statut='c',typ='I',defaut=55,into=(55,)),
GRANGER_FP_INDT =SIMP(statut='c',typ='I',defaut=55,into=(55,)),
GRANGER_FP_V =SIMP(statut='c',typ='I',defaut=55,into=(55,)),
"BARCELONE",
"LAIGLE",
"DRUCKER_PRAGER",
- "ELAS_THM",
- "SURF_ETAT_NSAT",
- "SURF_ETAT_SATU",
- "CAM_CLAY_THM",
+ "HOEK_BROWN_EFF",
+ "HOEK_BROWN_TOT",
+ "ELAS_THER",
"MAZARS",
"ENDO_ISOT_BETON",
# THMC
"GAZ",
"LIQU_SATU",
- "LIQU_SATU_GAT",
"LIQU_GAZ_ATM",
"LIQU_VAPE_GAZ",
"LIQU_AD_GAZ_VAPE",
"LIQU_VAPE",
- "LIQU_NSAT_GAT",
"LIQU_GAZ",
# HYDR
"HYDR_UTIL",
"GRANGER_FP_V",
"BETON_UMLV_FP",
"ROUSS_PR",
- "CHABOCHE",
- "OHNO",
"NADAI_B",
"BETON_DOUBLE_DP",
),),
- ELAS_THM =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
- SURF_ETAT_NSAT =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
- SURF_ETAT_SATU =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
- CAM_CLAY_THM =SIMP(statut='c',typ='I',defaut=6,into=(6,)),
+ ELAS_THER =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
GAZ =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
LIQU_SATU =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
- LIQU_SATU_GAT =SIMP(statut='c',typ='I',defaut=2,into=(2,)),
LIQU_GAZ_ATM =SIMP(statut='c',typ='I',defaut=2,into=(2,)),
LIQU_VAPE_GAZ =SIMP(statut='c',typ='I',defaut=3,into=(3,)),
LIQU_AD_GAZ_VAPE=SIMP(statut='c',typ='I',defaut=3,into=(3,)),
LIQU_VAPE =SIMP(statut='c',typ='I',defaut=3,into=(3,)),
- LIQU_NSAT_GAT =SIMP(statut='c',typ='I',defaut=3,into=(3,)),
LIQU_GAZ =SIMP(statut='c',typ='I',defaut=2,into=(2,)),
HYDR_UTIL =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
HYDR =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
ACIER =SIMP(statut='c',typ='I',defaut=5,into=(5,)),
ZIRC =SIMP(statut='c',typ='I',defaut=3,into=(3,)),
- DEFORMATION =SIMP(statut='f',typ='TXM',defaut="PETIT",into=("PETIT","PETIT_REAC","SIMO_MIEHE","GREEN_GR","GREEN",)),
+ DEFORMATION =SIMP(statut='f',typ='TXM',defaut="PETIT",
+ into=("PETIT","PETIT_REAC","SIMO_MIEHE","GREEN_GR","GREEN","COROTATIONNEL")),
ALGO_C_PLAN =SIMP(statut='f',typ='TXM',defaut="ANALYTIQUE",into=("DEBORST","ANALYTIQUE",)),
ALGO_1D =SIMP(statut='f',typ='TXM',defaut="ANALYTIQUE",into=("DEBORST","ANALYTIQUE",)),
regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),),
TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ RESI_INTE_RELA =SIMP(statut='f',typ='R',defaut= 1.0E-6),
+ ITER_INTE_MAXI =SIMP(statut='f',typ='I',defaut= 10 ),
+ ITER_INTE_PAS =SIMP(statut='f',typ='I',defaut= 0 ),
+ RESO_INTE =SIMP(statut='f',typ='TXM',defaut="IMPLICITE",
+ into=("RUNGE_KUTTA_2","RUNGE_KUTTA_4","IMPLICITE")),
) ;
-#& MODIF COMMUN DATE 08/02/2005 AUTEUR CIBHHPD L.SALMONA
+#& MODIF COMMUN DATE 04/04/2006 AUTEUR CIBHHLV L.VIVAN
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2003 EDF R&D WWW.CODE-ASTER.ORG
"EQUI_NOEU_EPME",
"EQUI_NOEU_EPSI",
"EQUI_NOEU_SIGM",
- "ERRE_ELEM_NOZ1",
- "ERRE_ELEM_NOZ2",
- "ERRE_ELGA_NORE",
- "ERRE_ELNO_ELGA",
- "ERRE_NOEU_ELGA",
- "ERTH_ELEM_TEMP",
- "ERTH_ELNO_ELEM",
+ "ERRE_ELEM_SIGM",
+ "ERRE_ELEM_TEMP",
+ "ERRE_ELNO_ELEM",
+ "ERRE_NOEU_ELEM",
+ "ERZ1_ELEM_SIGM",
+ "ERZ2_ELEM_SIGM",
+ "QIRE_ELEM_SIGM",
+ "QIRE_ELNO_ELEM",
+ "QIZ1_ELEM_SIGM",
+ "QIZ2_ELEM_SIGM",
+ "SING_ELEM",
+ "SING_ELNO_ELEM",
"ETOT_ELEM",
"ETOT_ELGA",
"ETOT_ELNO_ELGA",
"FVOL_2D",
"FVOL_3D",
"GRAD_NOEU_THETA",
- "HYDR_ELGA",
"HYDR_ELNO_ELGA",
"HYDR_NOEU_ELGA",
"INDI_LOCA_ELGA",
"VITE_ABSOLU",
"VITE_VENT",
)
-#& MODIF COMMUN DATE 16/06/2004 AUTEUR DURAND C.DURAND
+#& MODIF COMMUN DATE 04/04/2006 AUTEUR CIBHHLV L.VIVAN
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2005 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# ce fichier contient la liste des noms des grandeurs de CODE_ASTER
+def C_NOM_GRANDEUR() : return ( #COMMUN#
+"ABSC_R",
+"ADRSJEVE",
+"ADRSJEVN",
+"CAARPO",
+"CACABL",
+"CACOQU",
+"CADISA",
+"CADISK",
+"CADISM",
+"CAFI_R",
+"CAGEBA",
+"CAGEPO",
+"CAGNBA",
+"CAGNPO",
+"CAMASS",
+"CAORIE",
+"CAPOUF",
+"CARCRI",
+"CASECT",
+"CHLI_R",
+"CODE_I",
+"COEH_F",
+"COEH_R",
+"COMPOR",
+"CORR_R",
+"CRRU_R",
+"DBEL_R",
+"DCEL_I",
+"DDLI_C",
+"DDLI_F",
+"DDLI_R",
+"DDLM_C",
+"DDLM_R",
+"DEPL_C",
+"DEPL_F",
+"DEPL_R",
+"DOMMAG",
+"DURT_R",
+"ENER_R",
+"EPSI_F",
+"EPSI_R",
+"ERREUR",
+"FACY_R",
+"FELECR",
+"FISS_R",
+"FLAPLA",
+"FLUN_F",
+"FLUN_R",
+"FLUX_F",
+"FLUX_R",
+"FORC_C",
+"FORC_F",
+"FORC_R",
+"FREQ_R",
+"FTHM_F",
+"FTHM_R",
+"G",
+"GEOM_R",
+"G_DEPL_R",
+"HARMON",
+"HYDR_R",
+"IMPE_C",
+"IMPE_F",
+"IMPE_R",
+"IND_LOCA",
+"INFC_R",
+"INST_R",
+"INTE_R",
+"INTLOC",
+"IRRA_R",
+"ITECREL",
+"ITEDEC",
+"J",
+"LISTMA",
+"MACOMP",
+"MASS_R",
+"MATE_F",
+"NBSP_I",
+"NEUT_F",
+"NEUT_I",
+"NEUT_K16",
+"NEUT_K24",
+"NEUT_K8",
+"NEUT_R",
+"NUMC_I",
+"NUMMOD",
+"ONDE_F",
+"ONDE_R",
+"PESA_R",
+"PILO_K",
+"PILO_R",
+"POSI",
+"PREC",
+"PRES_C",
+"PRES_F",
+"PRES_R",
+"RAYO_F",
+"RAYO_R",
+"RCCM_K",
+"RCCM_R",
+"RESCREL",
+"RICE_TRA",
+"ROTA_R",
+"SECTION",
+"SIEF_C",
+"SIEF_R",
+"SIZZ_R",
+"SOUR_F",
+"SOUR_R",
+"SPMA_R",
+"STAOUDYN",
+"TEMP_C",
+"TEMP_F",
+"TEMP_R",
+"THETA",
+"VALO_R",
+"VANL_R",
+"VAR2_R",
+"VARI_R",
+"VENTCX_F",
+"VNOR_C",
+"VNOR_F",
+"VOISIN",
+"WEIBULL",
+"XCONTAC",
+ )
+#& MODIF COMMUN DATE 27/06/2005 AUTEUR D6BHHJP J.P.LEFEBVRE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
"DX","DY","DZ","DRX","DRY","DRZ","TEMP","TSEC",
"INST","X","Y","Z","EPSI","META","FREQ","PULS","DSP",
"AMOR","ABSC","SIGM","HYDR","SECH","PORO","SAT",
- "PGAZ","PCAP","VITE","ENDO","NORM","EPAIS",)
-#& MODIF COMMUN DATE 03/11/2004 AUTEUR CIBHHPD L.SALMONA
+ "PGAZ","PCAP","VITE","ENDO","NORM","EPAIS",
+ "NEUT1","NEUT2",)
+#& MODIF COMMUN DATE 27/06/2005 AUTEUR D6BHHJP J.P.LEFEBVRE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
# ======================================================================
#
# ce fichier contient la liste des "into" possibles pour le mot cle TYPE_CHAM
-# c'est a dire les noms des types de champ des SD RESULTAT (DATA de la routine RSCRSD)
-def C_TYPE_CHAM_INTO() : return ("ACCE", #COMMUN#
- "CART_CORR_R",
- "NOEU_DBEL_R", "ELEM_DBEL_R", "ELNO_DBEL_R", "ELGA_DBEL_R",
- "NOEU_DEPL_C", "ELEM_DEPL_C", "ELNO_DEPL_C", "ELGA_DEPL_C",
- "CART_DEPL_F", "NOEU_DEPL_F", "ELEM_DEPL_F", "ELNO_DEPL_F", "ELGA_DEPL_F",
- "CART_DEPL_R", "NOEU_DEPL_R", "ELEM_DEPL_R", "ELNO_DEPL_R", "ELGA_DEPL_R",
- "NOEU_DURT_R", "ELEM_DURT_R", "ELNO_DURT_R", "ELGA_DURT_R",
- "CART_ENER_R", "NOEU_ENER_R", "ELEM_ENER_R", "ELNO_ENER_R", "ELGA_ENER_R",
- "NOEU_EPSI_R", "ELEM_EPSI_R", "ELNO_EPSI_R", "ELGA_EPSI_R",
- "NOEU_ERREUR", "ELEM_ERREUR", "ELNO_ERREUR", "ELGA_ERREUR",
- "NOEU_FLUX_R", "ELEM_FLUX_R", "ELNO_FLUX_R", "ELGA_FLUX_R",
- "CART_GEOM_R", "NOEU_GEOM_R", "ELEM_GEOM_R", "ELNO_GEOM_R", "ELGA_GEOM_R",
- "NOEU_G_DEPL_R","ELEM_G_DEPL_R","ELNO_G_DEPL_R","ELGA_G_DEPL_R",
- "NOEU_HYDR_R", "ELEM_HYDR_R", "ELNO_HYDR_R", "ELGA_HYDR_R",
- "NOEU_INST_R", "ELEM_INST_R", "ELNO_INST_R", "ELGA_INST_R",
- "NOEU_INTE_R", "ELEM_INTE_R", "ELNO_INTE_R", "ELGA_INTE_R",
- "CART_IRRA_R", "NOEU_IRRA_R", "ELEM_IRRA_R", "ELNO_IRRA_R", "ELGA_IRRA_R",
- "NOEU_META_R", "ELEM_META_R", "ELNO_META_R", "ELGA_META_R",
- "NOEU_NEUT_F", "ELEM_NEUT_F", "ELNO_NEUT_F", "ELGA_NEUT_F",
- "CART_NEUT_R", "NOEU_NEUT_R", "ELEM_NEUT_R", "ELNO_NEUT_R", "ELGA_NEUT_R",
- "NOEU_PRES_R", "ELEM_PRES_R", "ELNO_PRES_R", "ELGA_PRES_R",
- "CART_SIEF_R", "NOEU_SIEF_R", "ELEM_SIEF_R", "ELNO_SIEF_R", "ELGA_SIEF_R",
- "NOEU_SOUR_R", "ELEM_SOUR_R", "ELNO_SOUR_R", "ELGA_SOUR_R",
- "CART_TEMP_F", "NOEU_TEMP_F", "ELEM_SPMA_R", "ELNO_TEMP_F", "ELGA_TEMP_F",
- "CART_TEMP_R", "NOEU_TEMP_R", "ELEM_TEMP_F", "ELNO_TEMP_R", "ELGA_TEMP_R",
- "CART_VAR2_R", "NOEU_VAR2_R", "ELEM_TEMP_R", "ELNO_VARI_R", "ELGA_VARI_R",
- "NOEU_VNOR_C", "ELEM_VARI_R", "ELNO_VNOR_C", "ELGA_VNOR_C",
- "ELEM_VNOR_C",
- )
-#& MODIF COMMANDE DATE 09/05/2005 AUTEUR MJBHHPE J.L.FLEJOU
+def C_TYPE_CHAM_INTO() : #COMMUN#
+ l=[]
+ for gd in C_NOM_GRANDEUR() :
+ for typ in ("ELEM","ELNO","ELGA","CART","NOEU") :
+ l.append(typ+"_"+gd)
+ return tuple(l)
+
+#& MODIF COMMANDE DATE 09/05/2006 AUTEUR JMBHH01 J.M.PROIX
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
reentrant='n',
UIinfo={"groupes":("Modélisation",)},
regles=(AU_MOINS_UN('POUTRE','BARRE','COQUE','CABLE','DISCRET','DISCRET_2D','MASSIF',
- 'ASSE_GRIL','GRILLE','AFFE_SECT','AFFE_FIBRE','RIGI_PARASOL'),),
+ 'GRILLE','AFFE_SECT','AFFE_FIBRE','RIGI_PARASOL'),),
MODELE =SIMP(statut='o',typ=modele_sdaster ),
INFO =SIMP(statut='f',typ='I', defaut= 1 ,into=(1,2) ),
VERIF =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',into=("MAILLE","NOEUD") ),
#============================================================================
DISCRET =FACT(statut='f',max='**',
- regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
- NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
REPERE =SIMP(statut='f',typ='TXM',into=("LOCAL","GLOBAL") ),
AMOR_HYST =SIMP(statut='f',typ='R' ),
CARA =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=1,
# affection des caractéristiques de RIGIDITE/AMORTISSEMENT
b_K_T_D_N =BLOC(condition = "(CARA=='K_T_D_N')or(CARA=='A_T_D_N')",
- VALE =SIMP(statut='o',typ='R',min=3 ,max=3 ),),
+ regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ VALE =SIMP(statut='o',typ='R',min=3 ,max=3 ),),
b_K_T_D_L =BLOC(condition = "(CARA=='K_T_D_L')or(CARA=='A_T_D_L')",
+ regles=(UN_PARMI('MAILLE','GROUP_MA'),),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
VALE =SIMP(statut='o',typ='R',min=3 ,max=3 ),),
b_K_TR_D_N =BLOC(condition = "(CARA=='K_TR_D_N')or(CARA=='A_TR_D_N')",
+ regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
VALE =SIMP(statut='o',typ='R',min=6 ,max=6 ),),
b_K_TR_D_L =BLOC(condition = "(CARA=='K_TR_D_L')or(CARA=='A_TR_D_L')",
+ regles=(UN_PARMI('MAILLE','GROUP_MA'),),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
VALE =SIMP(statut='o',typ='R',min=6 ,max=6 ),),
b_K_T_N =BLOC(condition = "(CARA=='K_T_N')or(CARA=='A_T_N')",
+ regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
VALE =SIMP(statut='o',typ='R',min=6 ,max=6 ),),
b_K_T_L =BLOC(condition = "(CARA=='K_T_L')or(CARA=='A_T_L')",
+ regles=(UN_PARMI('MAILLE','GROUP_MA'),),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
VALE =SIMP(statut='o',typ='R',min=21,max=21),),
b_K_TR_N =BLOC(condition = "(CARA=='K_TR_N')or(CARA=='A_TR_N')",
+ regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
VALE =SIMP(statut='o',typ='R',min=21,max=21),),
b_K_TR_L =BLOC(condition = "(CARA=='K_TR_L')or(CARA=='A_TR_L')",
+ regles=(UN_PARMI('MAILLE','GROUP_MA'),),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
VALE =SIMP(statut='o',typ='R',min=78,max=78),),
# affection des caractéristiques de MASSE
b_M_T_D_N =BLOC(condition = "CARA=='M_T_D_N'",
fr="NOEUD: 1 valeur de masse",
+ regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
VALE =SIMP(statut='o',typ='R',min=1 ,max=1 ),),
b_M_TR_D_N =BLOC(condition = "CARA=='M_TR_D_N'",
fr="NOEUD: 1 valeur de masse, 6 valeurs du tenseur d'inertie, 3 composantes du vecteur d'excentricité",
+ regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
VALE =SIMP(statut='o',typ='R',min=10,max=10),),
b_M_T_N =BLOC(condition = "CARA=='M_T_N'",
fr="NOEUD: 6 valeurs de masse (triangulaire supérieure par colonne)",
+ regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
VALE =SIMP(statut='o',typ='R',min=6 ,max=6 ),),
b_M_T_L =BLOC(condition = "CARA=='M_T_L'",
fr="SEGMENT: 21 valeurs de masse (triangulaire supérieure par colonne)",
+ regles=(UN_PARMI('MAILLE','GROUP_MA'),),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
VALE =SIMP(statut='o',typ='R',min=21,max=21),),
b_M_TR_N =BLOC(condition = "CARA=='M_TR_N'",
fr="NOEUD: 21 valeurs de masse (triangulaire supérieure par colonne)",
+ regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
VALE =SIMP(statut='o',typ='R',min=21,max=21),),
b_M_TR_L =BLOC(condition = "CARA=='M_TR_L'",
fr="SEGMENT: 78 valeurs de masse (triangulaire supérieure par colonne)",
+ regles=(UN_PARMI('MAILLE','GROUP_MA'),),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
VALE =SIMP(statut='o',typ='R',min=78,max=78),),
),
#============================================================================
DISCRET_2D =FACT(statut='f',max='**',
- regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
- NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
REPERE =SIMP(statut='f',typ='TXM',into=("LOCAL","GLOBAL") ),
AMOR_HYST =SIMP(statut='f',typ='R' ),
CARA =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=1,
# affection des caractéristiques de RIGIDITE/AMORTISSEMENT
b_K_T_D_N =BLOC(condition = "(CARA=='K_T_D_N')or(CARA=='A_T_D_N')",
+ regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
VALE =SIMP(statut='o',typ='R',min=2 ,max=2 ),),
b_K_T_D_L =BLOC(condition = "(CARA=='K_T_D_L')or(CARA=='A_T_D_L')",
+ regles=(UN_PARMI('MAILLE','GROUP_MA'),),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
VALE =SIMP(statut='o',typ='R',min=2 ,max=2 ),),
b_K_TR_D_N =BLOC(condition = "(CARA=='K_TR_D_N')or(CARA=='A_TR_D_N')",
+ regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
VALE =SIMP(statut='o',typ='R',min=3 ,max=3 ),),
b_K_TR_D_L =BLOC(condition = "(CARA=='K_TR_D_L')or(CARA=='A_TR_D_L')",
+ regles=(UN_PARMI('MAILLE','GROUP_MA'),),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
VALE =SIMP(statut='o',typ='R',min=3 ,max=3 ),),
b_K_T_N =BLOC(condition = "(CARA=='K_T_N')or(CARA=='A_T_N')",
+ regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
VALE =SIMP(statut='o',typ='R',min=3 ,max=3 ),),
b_K_T_L =BLOC(condition = "(CARA=='K_T_L')or(CARA=='A_T_L')",
+ regles=(UN_PARMI('MAILLE','GROUP_MA'),),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
VALE =SIMP(statut='o',typ='R',min=10,max=10),),
b_K_TR_N =BLOC(condition = "(CARA=='K_TR_N')or(CARA=='A_TR_N')",
+ regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
VALE =SIMP(statut='o',typ='R',min=6 ,max=6),),
b_K_TR_L =BLOC(condition = "(CARA=='K_TR_L')or(CARA=='A_TR_L')",
+ regles=(UN_PARMI('MAILLE','GROUP_MA'),),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
VALE =SIMP(statut='o',typ='R',min=21,max=21),),
# affection des caractéristiques de MASSE
b_M_T_D_N =BLOC(condition = "CARA=='M_T_D_N'",
fr="NOEUD: 1 valeur de masse",
+ regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
VALE =SIMP(statut='o',typ='R',min=1 ,max=1 ),),
b_M_TR_D_N =BLOC(condition = "CARA=='M_TR_D_N'",
fr="NOEUD: 1 valeur de masse(m), 1 valeur d'inertie(Izz), 2 composantes du vecteur d'excentricité(ex,ey) ",
+ regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
VALE =SIMP(statut='o',typ='R',min=4 ,max=4 ),),
b_M_T_N =BLOC(condition = "CARA=='M_T_N'",
fr="NOEUD: 3 valeurs de masse (triangulaire supérieure par colonne)",
+ regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
VALE =SIMP(statut='o',typ='R',min=3 ,max=3 ),),
b_M_T_L =BLOC(condition = "CARA=='M_T_L'",
fr="SEGMENT: 10 valeurs de masse (triangulaire supérieure par colonne)",
+ regles=(UN_PARMI('MAILLE','GROUP_MA'),),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
VALE =SIMP(statut='o',typ='R',min=10,max=10),),
b_M_TR_N =BLOC(condition = "CARA=='M_TR_N'",
fr="NOEUD: 6 valeurs de masse (triangulaire supérieure par colonne)",
+ regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
VALE =SIMP(statut='o',typ='R',min=6 ,max=6 ),),
b_M_TR_L =BLOC(condition = "CARA=='M_TR_L'",
fr="SEGMENT: 21 valeurs de masse (triangulaire supérieure par colonne)",
+ regles=(UN_PARMI('MAILLE','GROUP_MA'),),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
VALE =SIMP(statut='o',typ='R',min=21,max=21),),
),
UNITE_RESU_IMPE =SIMP(statut='f',typ='I',defaut=30),
),
-#============================================================================
- ASSE_GRIL =FACT(statut='f',max='**',
- regles=(UN_PARMI('MAILLE','GROUP_MA'),),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- CARA =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',
- into=("K_TR_D_N","K_TR_D_L_T","K_TR_D_L_N",) ),
- VALE =SIMP(statut='o',typ='R',max='**'),
- PAS_T =SIMP(statut='o',typ='R'),
- PAS_N =SIMP(statut='o',typ='R'),
- ANGL_REP =SIMP(statut='o',typ='R',max='**'),
- COEF_ECHELLE =SIMP(statut='o',typ='R'),
- ),
-
-
#============================================================================
AFFE_SECT =FACT(statut='f',max='**',
regles=(AU_MOINS_UN('GROUP_MA','MAILLE'),
DDL =SIMP(statut='o',typ='TXM',max='**'),
),
) ;
-#& MODIF COMMANDE DATE 28/01/2005 AUTEUR VABHHTS J.PELLET
+#& MODIF COMMANDE DATE 05/09/2005 AUTEUR CIBHHLV L.VIVAN
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
raise AsException("type de concept resultat non prevu")
AFFE_CHAR_CINE=OPER(nom="AFFE_CHAR_CINE",op= 101,sd_prod=affe_char_cine_prod
- ,fr="Affectation de conditions aux limites cinématiques pour traitement sans dualisation",
+ ,fr="Affectation de conditions aux limites cinématiques constantes pour un traitement sans dualisation",
reentrant='n',
UIinfo={"groupes":("Modélisation",)},
regles=(AU_MOINS_UN('MECA_IMPO','THER_IMPO','ACOU_IMPO'),
MODELE =SIMP(statut='o',typ=modele_sdaster ),
MECA_IMPO =FACT(statut='f',max='**',
regles=(UN_PARMI('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD'),
- AU_MOINS_UN('DX','DY','DZ','DRX','DRY','DRZ','GRX','PRES','TEMP','PHI'),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- DX =SIMP(statut='f',typ='R' ),
- DY =SIMP(statut='f',typ='R' ),
- DZ =SIMP(statut='f',typ='R' ),
- DRX =SIMP(statut='f',typ='R' ),
- DRY =SIMP(statut='f',typ='R' ),
- DRZ =SIMP(statut='f',typ='R' ),
- GRX =SIMP(statut='f',typ='R' ),
- PRES =SIMP(statut='f',typ='R' ),
- TEMP =SIMP(statut='f',typ='R' ),
- PHI =SIMP(statut='f',typ='R' ),
+ AU_MOINS_UN('DX','DY','DZ','DRX','DRY','DRZ','GRX','PRES','PHI',
+ 'TEMP','PRE1','PRE2','UI2','UI3','VI2','VI3','WI2','WI3','UO2',
+ 'UO3','VO2','VO3','WO2','WO3','UI4','UI5','VI4','VI5','WI4',
+ 'WI5','UO4','UO5','VO4','VO5','WO4','WO5','UI6','UO6','VI6',
+ 'VO6','WI6','WO6','WO','WI1','WO1','GONF','DCX','DCY','DCZ',
+ 'H1X','H1Y','H1Z','E1X','E1Y','E1Z','E2X','E2Y','E2Z',
+ 'E3X','E3Y','E3Z','E4X','E4Y','E4Z'),),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ DX =SIMP(statut='f',typ='R' ),
+ DY =SIMP(statut='f',typ='R' ),
+ DZ =SIMP(statut='f',typ='R' ),
+ DRX =SIMP(statut='f',typ='R' ),
+ DRY =SIMP(statut='f',typ='R' ),
+ DRZ =SIMP(statut='f',typ='R' ),
+ GRX =SIMP(statut='f',typ='R' ),
+ PRES =SIMP(statut='f',typ='R' ),
+ PHI =SIMP(statut='f',typ='R' ),
+ TEMP =SIMP(statut='f',typ='R' ),
+ PRE1 =SIMP(statut='f',typ='R' ),
+ PRE2 =SIMP(statut='f',typ='R' ),
+ UI2 =SIMP(statut='f',typ='R' ),
+ UI3 =SIMP(statut='f',typ='R' ),
+ UI4 =SIMP(statut='f',typ='R' ),
+ UI5 =SIMP(statut='f',typ='R' ),
+ UI6 =SIMP(statut='f',typ='R' ),
+ UO2 =SIMP(statut='f',typ='R' ),
+ UO3 =SIMP(statut='f',typ='R' ),
+ UO4 =SIMP(statut='f',typ='R' ),
+ UO5 =SIMP(statut='f',typ='R' ),
+ UO6 =SIMP(statut='f',typ='R' ),
+ VI2 =SIMP(statut='f',typ='R' ),
+ VI3 =SIMP(statut='f',typ='R' ),
+ VI4 =SIMP(statut='f',typ='R' ),
+ VI5 =SIMP(statut='f',typ='R' ),
+ VI6 =SIMP(statut='f',typ='R' ),
+ VO2 =SIMP(statut='f',typ='R' ),
+ VO3 =SIMP(statut='f',typ='R' ),
+ VO4 =SIMP(statut='f',typ='R' ),
+ VO5 =SIMP(statut='f',typ='R' ),
+ VO6 =SIMP(statut='f',typ='R' ),
+ WI2 =SIMP(statut='f',typ='R' ),
+ WI3 =SIMP(statut='f',typ='R' ),
+ WI4 =SIMP(statut='f',typ='R' ),
+ WI5 =SIMP(statut='f',typ='R' ),
+ WI6 =SIMP(statut='f',typ='R' ),
+ WO2 =SIMP(statut='f',typ='R' ),
+ WO3 =SIMP(statut='f',typ='R' ),
+ WO4 =SIMP(statut='f',typ='R' ),
+ WO5 =SIMP(statut='f',typ='R' ),
+ WO6 =SIMP(statut='f',typ='R' ),
+ WO =SIMP(statut='f',typ='R' ),
+ WI1 =SIMP(statut='f',typ='R' ),
+ WO1 =SIMP(statut='f',typ='R' ),
+ GONF =SIMP(statut='f',typ='R' ),
+ DCX =SIMP(statut='f',typ='R' ),
+ DCY =SIMP(statut='f',typ='R' ),
+ DCZ =SIMP(statut='f',typ='R' ),
+ H1X =SIMP(statut='f',typ='R' ),
+ H1Y =SIMP(statut='f',typ='R' ),
+ H1Z =SIMP(statut='f',typ='R' ),
+ E1X =SIMP(statut='f',typ='R' ),
+ E1Y =SIMP(statut='f',typ='R' ),
+ E1Z =SIMP(statut='f',typ='R' ),
+ E2X =SIMP(statut='f',typ='R' ),
+ E2Y =SIMP(statut='f',typ='R' ),
+ E2Z =SIMP(statut='f',typ='R' ),
+ E3X =SIMP(statut='f',typ='R' ),
+ E3Y =SIMP(statut='f',typ='R' ),
+ E3Z =SIMP(statut='f',typ='R' ),
+ E4X =SIMP(statut='f',typ='R' ),
+ E4Y =SIMP(statut='f',typ='R' ),
+ E4Z =SIMP(statut='f',typ='R' ),
),
THER_IMPO =FACT(statut='f',max='**',
regles=(UN_PARMI('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD'),
),
INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
) ;
-#& MODIF COMMANDE DATE 28/01/2005 AUTEUR VABHHTS J.PELLET
+#& MODIF COMMANDE DATE 05/09/2005 AUTEUR CIBHHLV L.VIVAN
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
if THER_IMPO != None : return char_cine_ther
raise AsException("type de concept resultat non prevu")
-AFFE_CHAR_CINE_F=OPER(nom="AFFE_CHAR_CINE_F",op= 108,sd_prod=affe_char_cine_f_prod
- ,fr="Affectation de conditions aux limites cinématiques pour traitement sans dualisation",
+AFFE_CHAR_CINE_F=OPER(nom="AFFE_CHAR_CINE_F",op= 108,sd_prod=affe_char_cine_f_prod,
+ fr="Affectation de conditions aux limites cinématiques fonction d'un (ou plusieurs) paramètres"
+ +" pour un traitement sans dualisation",
reentrant='n',
UIinfo={"groupes":("Modélisation",)},
regles=(AU_MOINS_UN('MECA_IMPO','THER_IMPO'),
),
INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
) ;
-#& MODIF COMMANDE DATE 24/05/2005 AUTEUR MABBAS M.ABBAS
+#& MODIF COMMANDE DATE 03/05/2006 AUTEUR MABBAS M.ABBAS
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
# RESPONSABLE G8BHHXD X.DESROCHES
-
-AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op= 7,sd_prod=char_meca
- ,fr="Affectation de charges et conditions aux limites mécaniques constantes",
+AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op= 7,sd_prod=char_meca,
+ fr="Affectation de charges et conditions aux limites mécaniques constantes",
reentrant='n',
UIinfo={"groupes":("Modélisation",)},
regles=(AU_MOINS_UN('DDL_IMPO','FACE_IMPO','CHAMNO_IMPO','LIAISON_DDL','LIAISON_XFEM','FORCE_NODALE',
'FORCE_ELEC','INTE_ELEC','PESANTEUR','ROTATION','IMPE_FACE',
'VITE_FACE','TEMP_CALCULEE','RELA_CINE_BP','EPSI_INIT','CONTACT',
'LIAISON_GROUP','LIAISON_UNIF','FLUX_THM_REP',
- 'LIAISON_SOLIDE','LIAISON_ELEM','ONDE_FLUI','PRES_CALCULEE',
+ 'LIAISON_SOLIDE','LIAISON_ELEM','ONDE_FLUI',
'EPSA_CALCULEE','LIAISON_CHAMNO','VECT_ASSE','LIAISON_COQUE',
- 'LIAISON_MAIL','LIAISON_CYCL','FORCE_TUYAU','SECH_CALCULEE','HYDR_CALCULEE',
- 'EFFE_FOND','EVOL_CHAR','ARLEQUIN','DDL_POUTRE','GRAPPE_FLUIDE'),
- EXCLUS('PRES_CALCULEE','EVOL_CHAR'),),
- VERI_DDL =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+ 'LIAISON_MAIL','LIAISON_CYCL','FORCE_TUYAU','SECH_CALCULEE',
+ 'EFFE_FOND','EVOL_CHAR','ARLEQUIN','DDL_POUTRE','GRAPPE_FLUIDE',
+ 'LIAISON_UNILATER'),
+ ),
VERI_NORM =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
MODELE =SIMP(statut='o',typ=(modele_sdaster) ),
TEMP_CALCULEE =SIMP(statut='f',fr="Champ de température issu d'un autre calcul",
- typ=(evol_ther,cham_no_temp_r,carte_temp_r,carte_temp_f ) ),
- HYDR_CALCULEE =SIMP(statut='f',fr="Champ d hydratation issu d'un autre calcul",
- typ=evol_ther ),
+ typ=(evol_ther,cham_no_sdaster,carte_sdaster) ),
SECH_CALCULEE =SIMP(statut='f',fr="Champ de séchage issu d'un autre calcul",
- typ=(evol_ther,cham_no_temp_r,carte_temp_r,carte_temp_f ) ),
+ typ=(evol_ther,cham_no_sdaster,carte_sdaster ) ),
EPSA_CALCULEE =SIMP(statut='f',fr="Champ de déformation anélastique issu d'un autre calcul",
typ=evol_noli ),
-# A TERME PRES_CALCULEE N'EXISTERA PLUS
EVOL_CHAR =SIMP(statut='f',fr="Champ de pression issu d'un autre calcul",
typ=evol_char ),
- PRES_CALCULEE =SIMP(statut='f',fr="Champ de pression issu d'un autre calcul",
- typ=evol_char ),
PESANTEUR =SIMP(statut='f',typ='R',fr="Champ de pesanteur",min=4,max=4),
ROTATION =SIMP(statut='f',typ='R',fr="Champ de rotation", min=4,max=4),
CENTRE =SIMP(statut='f',typ='R',defaut=(0.,0.,0.),max=3),),
DDL_IMPO =FACT(statut='f',max='**',
+ fr="Impose à des noeuds une ou plusieurs valeurs de déplacement (ou de certaines grandeurs asscociées)",
regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD'),
AU_MOINS_UN('DX','DY','DZ','DRX','DRY','DRZ','GRX','PRES','PHI',
'TEMP','PRE1','PRE2','UI2','UI3','VI2','VI3','WI2','WI3','UO2',
'UO3','VO2','VO3','WO2','WO3','UI4','UI5','VI4','VI5','WI4',
'WI5','UO4','UO5','VO4','VO5','WO4','WO5','UI6','UO6','VI6',
- 'VO6','WI6','WO6','WO','WI1','WO1','GONF','LIAISON'),),
+ 'VO6','WI6','WO6','WO','WI1','WO1','GONF','LIAISON','DCX',
+ 'DCY','DCZ','H1X','H1Y','H1Z','E1X','E1Y','E1Z','E2X','E2Y','E2Z',
+ 'E3X','E3Y','E3Z','E4X','E4Y','E4Z','LAGS_C'),),
TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
WI1 =SIMP(statut='f',typ='R' ),
WO1 =SIMP(statut='f',typ='R' ),
GONF =SIMP(statut='f',typ='R' ),
+ DCX =SIMP(statut='f',typ='R' ),
+ DCY =SIMP(statut='f',typ='R' ),
+ DCZ =SIMP(statut='f',typ='R' ),
+ H1X =SIMP(statut='f',typ='R' ),
+ H1Y =SIMP(statut='f',typ='R' ),
+ H1Z =SIMP(statut='f',typ='R' ),
+ E1X =SIMP(statut='f',typ='R' ),
+ E1Y =SIMP(statut='f',typ='R' ),
+ E1Z =SIMP(statut='f',typ='R' ),
+ E2X =SIMP(statut='f',typ='R' ),
+ E2Y =SIMP(statut='f',typ='R' ),
+ E2Z =SIMP(statut='f',typ='R' ),
+ E3X =SIMP(statut='f',typ='R' ),
+ E3Y =SIMP(statut='f',typ='R' ),
+ E3Z =SIMP(statut='f',typ='R' ),
+ E4X =SIMP(statut='f',typ='R' ),
+ E4Y =SIMP(statut='f',typ='R' ),
+ E4Z =SIMP(statut='f',typ='R' ),
+ LAGS_C =SIMP(statut='f',typ='R' ),
),
DDL_POUTRE =FACT(statut='f',max='**',
+ fr="Bloque des DDLs dans un repère local d'une poutre",
regles=(AU_MOINS_UN('GROUP_NO','NOEUD'),
AU_MOINS_UN('DX','DY','DZ','DRX','DRY','DRZ'),
UN_PARMI('VECT_Y','ANGL_VRIL'),),
FACE_IMPO =FACT(statut='f',max='**',
+ fr="Impose à tous les noeuds d'une face une ou plusieurs valeurs de déplacement (ou de certaines grandeurs associées)",
regles=(UN_PARMI('GROUP_MA','MAILLE',),
AU_MOINS_UN('DX','DY','DZ','DRX','DRY','DRZ','GRX','PRES','PHI',
'TEMP','PRE1','PRE2','DNOR','DTAN'),
# rajout d'un mot clé REPERE :/ LOCAL /GLOBAL
GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ SANS_GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ SANS_MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
DX =SIMP(statut='f',typ='R' ),
DY =SIMP(statut='f',typ='R' ),
DZ =SIMP(statut='f',typ='R' ),
),
CHAMNO_IMPO =FACT(statut='f',max='**',
- fr="imposer des ddls aux valeurs d'un concept cham_no_sdaster",
+ fr="Impose des DDLs aux valeurs d'un concept cham_no_sdaster",
# type de cham_no_sdaster CO()
CHAM_NO =SIMP(statut='o',typ=cham_no_sdaster), #CO()
COEF_MULT =SIMP(statut='o',typ='R' ),
LIAISON_DDL =FACT(statut='f',max='**',
- fr="Définir une relation linéaire entre des ddls de deux ou plusieurs noeuds",
+ fr="Définit une relation linéaire entre des DDLs de deux ou plusieurs noeuds",
regles=(UN_PARMI('GROUP_NO','NOEUD'),),
GROUP_NO =SIMP(statut='f',typ=grno ,max='**'),
NOEUD =SIMP(statut='f',typ=no ,max='**'),
),
LIAISON_OBLIQUE =FACT(statut='f',max='**',
- fr="Appliquer à des noeuds une valeur de déplacement dans un repere oblique",
+ fr="Applique à des noeuds la meme valeur de déplacement définie composante par composante"
+ +" dans un repère oblique quelconque",
regles=(UN_PARMI('GROUP_NO','NOEUD'),
UN_PARMI('DX','DY','DZ','DRX','DRY','DRZ'),),
GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
),
LIAISON_GROUP =FACT(statut='f',max='**',
- fr="Définir des relations linéaires entre certains ddls de couples de noeuds",
+ fr="Définit la meme relation linéaire entre certains DDLs de couples de noeuds",
regles=(UN_PARMI('GROUP_MA_1','MAILLE_1','GROUP_NO_1','NOEUD_1'),
UN_PARMI('GROUP_MA_2','MAILLE_2','GROUP_NO_2','NOEUD_2'),
EXCLUS('GROUP_MA_1','GROUP_NO_2'),
),
LIAISON_MAIL =FACT(statut='f',max='**',
+ fr="Définit des relations linéaires permettant de recoller deux bords d'une structure",
regles=(AU_MOINS_UN('GROUP_MA_MAIT','MAILLE_MAIT'),
AU_MOINS_UN('GROUP_MA_ESCL','MAILLE_ESCL','GROUP_NO_ESCL','NOEUD_ESCL'),
PRESENT_PRESENT('DDL_MAIT','DDL_ESCL'),),
),
LIAISON_CYCL =FACT(statut='f',max='**',
+ fr="Définit des relations linéaires permettant de recoller les bords de deux parties symétriquement cycliques",
regles=(AU_MOINS_UN('GROUP_MA_MAIT1','MAILLE_MAIT1'),
AU_MOINS_UN('GROUP_MA_ESCL','MAILLE_ESCL','GROUP_NO_ESCL','NOEUD_ESCL'),
PRESENT_PRESENT('DDL_MAIT','DDL_ESCL'),
),
- LIAISON_SOLIDE =FACT(statut='f',fr="Modéliser une partie indéformable d'une structure",max='**',
+ LIAISON_SOLIDE =FACT(statut='f',fr="Modélise une partie indéformable d'une structure",max='**',
regles=(UN_PARMI('GROUP_NO','NOEUD','GROUP_MA','MAILLE'),),
GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
NUME_LAGR =SIMP(statut='f',typ='TXM',defaut="NORMAL",into=("NORMAL","APRES") ),
),
- LIAISON_ELEM =FACT(statut='f',fr="Raccorder une poutre à une partie massive 3D ou une coque",max='**',
+ LIAISON_ELEM =FACT(statut='f',max='**',
+ fr="Modélise le raccord d'une partie massive 3D avec une poutre ou avec un tuyau, le raccord d'une coque"
+ +" avec une poutre ou avec un tuyau",
regles=(UN_PARMI('GROUP_MA_1','MAILLE_1'),
UN_PARMI('GROUP_NO_2','NOEUD_2'),),
OPTION =SIMP(statut='o',typ='TXM',into=("3D_TUYAU","3D_POU","COQ_POU","COQ_TUYAU") ),
),
LIAISON_UNIF =FACT(statut='f',max='**',
- fr="Imposer une meme valeur (inconnue) à des ddls d'un emsemble de noeuds",
+ fr="Impose une meme valeur (inconnue) à des DDLs d'un ensemble de noeuds",
regles=(UN_PARMI('GROUP_NO','NOEUD','GROUP_MA','MAILLE'),),
GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
),
LIAISON_CHAMNO =FACT(statut='f',max='**',
- fr="définir une relation linéaire entre tous les ddls d'un concept cham_no_sdaster",
+ fr="Définit une relation linéaire entre tous les DDLs présents dans un concept CHAM_NO",
# type de cham_no_sdaster CO()
CHAM_NO =SIMP(statut='o',typ=cham_no_sdaster), #CO()
COEF_IMPO =SIMP(statut='o',typ='R' ),
LIAISON_XFEM =SIMP(statut='f',typ='TXM',into=("OUI","NON"),defaut="NON" ),
- VECT_ASSE =SIMP(statut='f',typ=cham_no_depl_r ),
+ VECT_ASSE =SIMP(statut='f',typ=cham_no_sdaster ),
+#
+# LIAISON UNILATERALE
+#
+ LIAISON_UNILATER=FACT(statut='f',max='**',
+ fr="Définit les zones soumises à des conditions de liaison unilaterale (inegalite sur un DDL)",
+ regles=(UN_PARMI('GROUP_MA','MAILLE','GROUP_NO','NOEUD'),),
+
+ GROUP_MA =SIMP(statut='f',typ=grma ,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno ,validators=NoRepeat(),max='**'),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- CONTACT =FACT(statut='f',fr="Imposer du contact avec ou sans frottement",max='**',
- regles=(UN_PARMI('GROUP_MA_ESCL','MAILLE_ESCL'),),
- APPARIEMENT =SIMP(statut='f',typ='TXM',defaut="MAIT_ESCL",
- into=("NON","NODAL","MAIT_ESCL","MAIT_ESCL_SYME")),
+ SANS_NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ SANS_GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+
+ NB_RESOL =SIMP(statut='f',typ='I', defaut=10 ),
+
+ NOM_CMP =SIMP(statut='o',typ='TXM',max='**'),
+
+ COEF_IMPO =SIMP(statut='f',typ='R'),
+ COEF_MULT =SIMP(statut='f',typ='R',max='**'),
+
+ METHODE =SIMP(statut='f',typ='TXM',defaut="CONTRAINTE",
+ into=("CONTRAINTE","GCPC",) ),
+
+
+ ),
+#
+# CONTACT
+#
+ CONTACT =FACT(statut='f',max='**',
+ fr="Définit les zones soumises à des conditions de contact unilatéral avec ou sans frottement",
+ regles=(UN_PARMI('GROUP_MA_ESCL','MAILLE_ESCL'),),
+ APPARIEMENT =SIMP(statut='f',typ='TXM',defaut="MAIT_ESCL",
+ into=("NON","NODAL","MAIT_ESCL","MAIT_ESCL_SYME")),
RECHERCHE =SIMP(statut='f',typ='TXM',defaut="NOEUD_BOUCLE",
into=("NOEUD_BOUCLE","NOEUD_VOISIN")),
LISSAGE =SIMP(statut='f',typ='TXM',defaut="NON",
into=("OUI","NON")),
+ DIST_POUTRE =SIMP(statut='f',typ='TXM',defaut="NON", into=("OUI","NON")),
+ DIST_COQUE =SIMP(statut='f',typ='TXM',defaut="NON", into=("OUI","NON")),
NORMALE =SIMP(statut='f',typ='TXM',defaut="MAIT",
into=("MAIT","MAIT_ESCL")),
METHODE =SIMP(statut='f',typ='TXM',defaut="CONTRAINTE",
- into=("VERIF","CONTRAINTE","LAGRANGIEN","PENALISATION","CONTINUE") ),
+ into=("VERIF","CONTRAINTE","LAGRANGIEN","PENALISATION","CONTINUE","GCP") ),
PROJECTION =SIMP(statut='f',typ='TXM',defaut="LINEAIRE",
into=("LINEAIRE","QUADRATIQUE") ),
GROUP_MA_MAIT =SIMP(statut='f',typ=grma ,validators=NoRepeat(),max='**'),
MAILLE_MAIT =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
GROUP_MA_ESCL =SIMP(statut='f',typ=grma ,validators=NoRepeat(),max='**'),
MAILLE_ESCL =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ b_cara =BLOC(condition = "DIST_POUTRE == 'OUI' or DIST_COQUE == 'OUI'",
+ CARA_ELEM =SIMP(statut='o',typ=(cara_elem) ),
+ ),
b_verif =BLOC(condition = "METHODE == 'VERIF' ",
fr="Paramètres de la méthode sans calcul de contact",
DIST_MAIT =SIMP(statut='f',typ='R'),
DIST_ESCL =SIMP(statut='f',typ='R'),
VECT_NORM_ESCL =SIMP(statut='f',typ='R',max=3),
- VECT_Y =SIMP(statut='f',typ='R',min=3,max=3),
+ VECT_ORIE_POU =SIMP(statut='f',typ='R',min=3,max=3),
),
b_active =BLOC(condition = "METHODE == 'CONTRAINTE' ",
),
TOLE_PROJ_EXT =SIMP(statut='f',typ='R' ,defaut=0.50),
TOLE_PROJ_INT =SIMP(statut='f',typ='R' ,defaut=0.001),
- TOLE_REAC_GEOM =SIMP(statut='f',typ='R' ,defaut=0.05),
STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",
into=("OUI","NON")),
NB_RESOL =SIMP(statut='f',typ='I', defaut=10 ),
into=("AUTOMATIQUE","CONTROLE","SANS")),
b_reac_sans =BLOC(condition = "REAC_GEOM == 'SANS' ",
fr="Paramètre de la réactualisation géométrique",
-
- STOP_REAC_GEOM =SIMP(statut='f',typ='TXM',defaut="NON",
- into=("OUI","NON")),
),
b_reac_geom =BLOC(condition = "REAC_GEOM == 'CONTROLE' ",
fr="Paramètre de la réactualisation géométrique",
NB_REAC_GEOM =SIMP(statut='o',typ='I'),
-
- STOP_REAC_GEOM =SIMP(statut='f',typ='TXM',defaut="ALARME",
- into=("OUI","NON")),
+
),
b_reac_auto =BLOC(condition = "REAC_GEOM == 'AUTOMATIQUE' ",
fr="Paramètre de la réactualisation géométrique auto",
- NB_REAC_MAXI =SIMP(statut='o',typ='I',defaut = 10),
),
SANS_NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
SANS_GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
COEF_IMPO =SIMP(statut='f',typ='R'),
COEF_MULT_ESCL =SIMP(statut='f',typ='R'),
VECT_NORM_ESCL =SIMP(statut='f',typ='R',max=3),
- VECT_Y =SIMP(statut='f',typ='R',min=3,max=3),
+ VECT_ORIE_POU =SIMP(statut='f',typ='R',min=3,max=3),
DIST_MAIT =SIMP(statut='f',typ='R'),
DIST_ESCL =SIMP(statut='f',typ='R'),
FROTTEMENT =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","COULOMB",) ),
TOLE_PROJ_EXT =SIMP(statut='f',typ='R' ,defaut=0.50),
TOLE_PROJ_INT =SIMP(statut='f',typ='R' ,defaut=0.001),
- TOLE_REAC_GEOM =SIMP(statut='f',typ='R' ,defaut=0.05),
STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",
into=("OUI","NON")),
NB_RESOL =SIMP(statut='f',typ='I', defaut=10 ),
REAC_GEOM =SIMP(statut='f',typ='TXM',defaut="AUTOMATIQUE",
into=("AUTOMATIQUE","CONTROLE","SANS")),
b_reac_sans =BLOC(condition = "REAC_GEOM == 'SANS' ",fr="Paramètre de la réactualisation géométrique",
- VERI_REAC_GEOM =SIMP(statut='f',typ='TXM',defaut="ALARME",
- into=("ALARME","ERREUR","NON")),
),
b_reac_geom =BLOC(condition = "REAC_GEOM == 'CONTROLE' ",fr="Paramètre de la réactualisation géométrique",
NB_REAC_GEOM =SIMP(statut='o',typ='I'),
-
- VERI_REAC_GEOM =SIMP(statut='f',typ='TXM',defaut="ALARME",
- into=("ALARME","ERREUR","NON")),
+
),
b_reac_auto =BLOC(condition = "REAC_GEOM == 'AUTOMATIQUE' ",
fr="Paramètre de la réactualisation géométrique auto",
- NB_REAC_MAXI =SIMP(statut='o',typ='I',defaut = 10),
- ),
-
+ ),
+
SANS_NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
SANS_GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
SANS_NOEUD_QUAD =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
DIST_MAIT =SIMP(statut='f',typ='R'),
DIST_ESCL =SIMP(statut='f',typ='R'),
+
+ regles=(EXCLUS('VECT_Y','VECT_ORIE_POU')),
+
VECT_Y =SIMP(statut='f',typ='R',min=3,max=3),
+ VECT_ORIE_POU =SIMP(statut='f',typ='R',min=3,max=3),
b_frottement =BLOC(condition = "FROTTEMENT == 'COULOMB' ",fr="Paramètres du frottement de Coulomb",
COULOMB =SIMP(statut='o',typ='R',),
COEF_MATR_FROT =SIMP(statut='f',typ='R',defaut=0.E+0),
FROTTEMENT =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","COULOMB",) ),
TOLE_PROJ_EXT =SIMP(statut='f',typ='R' ,defaut=0.50),
TOLE_PROJ_INT =SIMP(statut='f',typ='R' ,defaut=0.001),
- TOLE_REAC_GEOM =SIMP(statut='f',typ='R' ,defaut=0.05),
STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",
into=("OUI","NON")),
NB_RESOL =SIMP(statut='f',typ='I', defaut=10 ),
REAC_GEOM =SIMP(statut='f',typ='TXM',defaut="AUTOMATIQUE",
into=("AUTOMATIQUE","CONTROLE","SANS")),
b_reac_sans =BLOC(condition = "REAC_GEOM == 'SANS' ",fr="Paramètre de la réactualisation géométrique",
- VERI_REAC_GEOM =SIMP(statut='f',typ='TXM',defaut="ALARME",
- into=("ALARME","ERREUR","NON")),
),
b_reac_geom =BLOC(condition = "REAC_GEOM == 'CONTROLE' ",fr="Paramètre de la réactualisation géométrique",
NB_REAC_GEOM =SIMP(statut='o',typ='I'),
-
- VERI_REAC_GEOM =SIMP(statut='f',typ='TXM',defaut="ALARME",
- into=("ALARME","ERREUR","NON")),
),
b_reac_auto =BLOC(condition = "REAC_GEOM == 'AUTOMATIQUE' ",
fr="Paramètre de la réactualisation géométrique auto",
- NB_REAC_MAXI =SIMP(statut='o',typ='I',defaut = 10),
),
SANS_NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
SANS_NOEUD_QUAD =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
DIST_MAIT =SIMP(statut='f',typ='R'),
DIST_ESCL =SIMP(statut='f',typ='R'),
+ regles=(EXCLUS('VECT_Y','VECT_ORIE_POU')),
VECT_Y =SIMP(statut='f',typ='R',min=3,max=3),
+ VECT_ORIE_POU =SIMP(statut='f',typ='R',min=3,max=3),
b_frottement =BLOC(condition = "FROTTEMENT == 'COULOMB' ",fr="Paramètres du frottement de Coulomb",
COULOMB =SIMP(statut='o',typ='R',),
b_continue =BLOC(condition = "METHODE == 'CONTINUE' ",
fr="Paramètres de la méthode continue (contact avec ou sans frottement)",
+# regles=(UN_PARMI('GLISSIERE','FROTTEMENT'),),
NOM_CHAM =SIMP(statut='f',typ='TXM',defaut="DEPL",into=("DEPL","VITE")),
+ GLISSIERE =SIMP(statut='f',typ='TXM',defaut="NON",
+ into=("OUI","NON")),
+ b_glissiere =BLOC(condition = "GLISSIERE == 'OUI' ",
+ ALARME_JEU =SIMP(statut='f',typ='R',defaut=0.),
+ ),
FROTTEMENT =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","COULOMB",) ),
- INTEGRATION =SIMP(statut='f',typ='TXM',defaut="NOEUD",into=("GAUSS","NOEUD","SIMPSON","SIMPSON1","SIMPSON2")),
+ COMPLIANCE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON",) ),
+ INTEGRATION =SIMP(statut='f',typ='TXM',defaut="NOEUD",into=("GAUSS","NOEUD","SIMPSON","SIMPSON1","SIMPSON2",
+ "NCOTES","NCOTES1","NCOTES2")),
COEF_REGU_CONT =SIMP(statut='f',typ='R',defaut=100.E+0),
MODL_AXIS =SIMP(statut='o',typ='TXM',into=("OUI","NON")),
FORMULATION =SIMP(statut='f',typ='TXM',defaut="DEPL",into=("DEPL","VITE")),
DIRE_APPA =SIMP(statut='f',typ='R',max=3,defaut=(0.,0.,0.,)),
ITER_GEOM_MAXI =SIMP(statut='f',typ='I',defaut=2),
ITER_CONT_MAXI =SIMP(statut='f',typ='I',defaut=30),
+ DIST_MAIT =SIMP(statut='f',typ='R',defaut=0.),
+ DIST_ESCL =SIMP(statut='f',typ='R',defaut=0.),
+ VECT_ORIE_POU =SIMP(statut='f',typ='R',min=3,max=3),
+ TOLE_PROJ_EXT =SIMP(statut='f',typ='R' ,defaut=0.50),
CONTACT_INIT =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON",) ),
+ b_compliance =BLOC(condition = "COMPLIANCE == 'OUI' ",fr="Parametres de la compliance",
+ ASPERITE =SIMP(statut='o',typ='R',),
+ E_N =SIMP(statut='o',typ='R',),
+ E_V =SIMP(statut='f',typ='R',defaut=0.E+0),),
b_frottement =BLOC(condition = "FROTTEMENT == 'COULOMB' ",fr="Paramètres du frottement de Coulomb",
COULOMB =SIMP(statut='o',typ='R',),
+ SANS_NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ SANS_GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ VECT_Y =SIMP(statut='f',typ='R',min=3,max=3),
+ VECT_Z =SIMP(statut='f',typ='R',min=3,max=3),
ITER_FROT_MAXI =SIMP(statut='f',typ='I',defaut=2),
COEF_REGU_FROT =SIMP(statut='f',typ='R',defaut=100.E+0),
SEUIL_INIT =SIMP(statut='f',typ='R',defaut=0.E+0),),),
+
+ b_gcp =BLOC(condition = "METHODE == 'GCP' ",
+ fr="Paramètres de la méthode du gradient conjugué projeté (contact uniquement)",
+ regles=(EXCLUS('DIST_ESCL','COEF_IMPO'),
+ EXCLUS('DIST_MAIT','COEF_IMPO'),),
+ NOM_CHAM =SIMP(statut='f',typ='TXM',defaut="DEPL",
+ into=("DEPL","PRES","TEMP","PRE1","PRE2")),
+ RESI_ABSO =SIMP(statut='o',typ='R',
+ fr="Critère de convergence (niveau d'interpénétration autorisé)"),
+ REAC_ITER =SIMP(statut='f',typ='I',defaut=3, fr="Fréquence de réinitialisation de la conjugaison"),
+ TOLE_PROJ_EXT =SIMP(statut='f',typ='R' ,defaut=0.50),
+ TOLE_PROJ_INT =SIMP(statut='f',typ='R' ,defaut=0.001),
+ TOLE_REAC_GEOM =SIMP(statut='f',typ='R' ,defaut=0.05),
+ STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",
+ into=("OUI","NON")),
+ REAC_GEOM =SIMP(statut='f',typ='TXM',defaut="AUTOMATIQUE",
+ into=("AUTOMATIQUE","CONTROLE","SANS")),
+ b_reac_sans =BLOC(condition = "REAC_GEOM == 'SANS' ",
+ fr="Paramètre de la réactualisation géométrique",
+
+ STOP_REAC_GEOM =SIMP(statut='f',typ='TXM',defaut="NON",
+ into=("OUI","NON")),
+ ),
+ b_reac_geom =BLOC(condition = "REAC_GEOM == 'CONTROLE' ",
+ fr="Paramètre de la réactualisation géométrique",
+ NB_REAC_GEOM =SIMP(statut='o',typ='I'),
+
+ STOP_REAC_GEOM =SIMP(statut='f',typ='TXM',defaut="ALARME",
+ into=("OUI","NON")),
+ ),
+ b_reac_auto =BLOC(condition = "REAC_GEOM == 'AUTOMATIQUE' ",
+ fr="Paramètre de la réactualisation géométrique auto",
+ NB_REAC_MAXI =SIMP(statut='o',typ='I',defaut = 10),
+ ),
+ SANS_NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ SANS_GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ SANS_NOEUD_QUAD =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
+ COEF_IMPO =SIMP(statut='f',typ='R'),
+ COEF_MULT_ESCL =SIMP(statut='f',typ='R'),
+ VECT_NORM_ESCL =SIMP(statut='f',typ='R',max=3),
+ VECT_ORIE_POU =SIMP(statut='f',typ='R',min=3,max=3),
+ DIST_MAIT =SIMP(statut='f',typ='R'),
+ DIST_ESCL =SIMP(statut='f',typ='R'),
+ ),
),
- FORCE_NODALE =FACT(statut='f',fr="Imposer des forces nodales en des noeuds",max='**',
+ FORCE_NODALE =FACT(statut='f',fr="Applique à des noeuds des forces nodales",max='**',
regles=(AU_MOINS_UN('GROUP_NO','NOEUD'),
AU_MOINS_UN('FX','FY','FZ','MX','MY','MZ' ),),
GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
),
FORCE_FACE =FACT(statut='f',max='**',
- fr="Appliquer des forces surfaciques sur une face d'éléments volumiques",
+ fr="Applique des forces surfaciques sur une face d'élément volumique",
regles=(AU_MOINS_UN('GROUP_MA','MAILLE'),
AU_MOINS_UN('FX','FY','FZ'),),
GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
),
FORCE_ARETE =FACT(statut='f',max='**',
- fr="Appliquer des forces linéiques à une arete d élément volumique ou de coque",
+ fr="Applique des forces linéiques à une arete d'élément volumique ou de coque",
regles=(AU_MOINS_UN('GROUP_MA','MAILLE',),
AU_MOINS_UN('FX','FY','FZ','MX','MY','MZ' ),),
GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
),
FORCE_CONTOUR =FACT(statut='f',max='**',
- fr="Appliquer des forces linéiques au bord d'un domaine 2D ou AXIS_FOURIER",
+ fr="Applique des forces linéiques au bord d'un domaine 2D ou AXIS ou AXIS_FOURIER",
regles=(AU_MOINS_UN('GROUP_MA','MAILLE'),
AU_MOINS_UN('FX','FY','FZ','MX','MY','MZ'),),
GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
),
FORCE_INTERNE =FACT(statut='f',max='**',
- fr="Appliquer des forces volumiques (2D ou 3D) à un domaine volumique",
+ fr="Applique des forces volumiques (2D ou 3D) à un domaine volumique",
regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
AU_MOINS_UN('FX','FY','FZ' ),),
),
PRES_REP =FACT(statut='f',max='**',
- fr="Appliquer une pression à un domaine de milieu continu 2D ou 3D",
+ fr="Applique une pression à un domaine de milieu continu 2D ou 3D, ou à un domaine de coques et tuyaux",
regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
AU_MOINS_UN('PRES','CISA_2D' ),),
CISA_2D =SIMP(statut='f',typ='R' ),
),
- EFFE_FOND =FACT(statut='f',fr="Imposer un effet de fond",max='**',
+ EFFE_FOND =FACT(statut='f',max='**',
+ fr="Calcul l'effet de fond sur une branche de tuyauterie (modélisation 3D) soumise à une pression",
regles=(AU_MOINS_UN('GROUP_MA','MAILLE'),),
GROUP_MA_INT =SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**'),
GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
),
EPSI_INIT =FACT(statut='f',max='**',
- fr="Appliquer un chargement de déformation initiale à un volume 3D ou 2D",
+ fr="Applique un chargement de déformation initiale à un élément 2D, 3D ou de structure",
regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
AU_MOINS_UN('EPXX','EPYY','EPZZ','EPXY','EPXZ','EPYZ','EPX',
),
ARLEQUIN =FACT(statut='f',min=1,max='**',
+ fr="Définit les paramètres de la méthode Arlequin",
GROUP_MA_1 =SIMP(statut='o',typ=grma,max='**'),
GROUP_MA_2 =SIMP(statut='o',typ=grma,max='**'),
GROUP_MA_COLL =SIMP(statut='f',typ=grma,max='**'),
POIDS_GROSSIER =SIMP(statut='f',typ='R'),
POIDS_FIN =SIMP(statut='f',typ='R'),),
- FORCE_POUTRE =FACT(statut='f',fr="Appliquer des forces linéiques sur des poutres",max='**',
+ FORCE_POUTRE =FACT(statut='f',max='**',
+ fr="Applique des forces linéiques sur des éléments de type poutre",
regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
AU_MOINS_UN('FX','FY','FZ','N','VY','VZ'),
),
- FORCE_TUYAU =FACT(statut='f',fr="imposer une pression dans un élément TUYAU",max='**',
+ FORCE_TUYAU =FACT(statut='f',max='**',
+ fr="Applique une pression sur des éléments TUYAU",
regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),),
TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
PRES =SIMP(statut='f',typ='R' ),
),
- FORCE_COQUE =FACT(statut='f',fr="Appliquer des forces surfaciques sur des coques",max='**',
+ FORCE_COQUE =FACT(statut='f',max='**',
+ fr="Applique des forces surfaciques sur des éléments de types coques",
regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
AU_MOINS_UN('FX','FY','FZ','MX','MY','MZ','PRES','F1','F2','F3','MF1','MF2'),
GRAPPE_FLUIDE =FACT(statut='f',max='**',
+ fr="Définit les données de calcul des forces fluides lors des études de chute de grappe",
regles=(EXCLUS('GROUP_NO_EXTR','NOEUD_EXTR'),
EXCLUS('GROUP_NO_ORIG','NOEUD_ORIG'),
PRESENT_PRESENT('CARA_HYDR','VALE_HYDR'),
fr="direction d'application de la force de plaquage",),
b_CDG =BLOC(condition = "(APPL_FORC_ARCHI == 'CDG') or (APPL_FORC_FPLAQ == 'CDG') or \
(APPL_FORC_FMEC == 'CDG') or (APPL_FORC_FTG == 'CDG')",
- MASS_INER =SIMP(statut='o',typ=tabl_mass_iner ),
+ MASS_INER =SIMP(statut='o',typ=table_sdaster ),
),
UNITE_IMPR_FORCE =SIMP(statut='f',typ='I',
fr="unité d'impression des forces",),
),
LIAISON_COQUE =FACT(statut='f',max='**',
+ fr="Permet de représenter le raccord entre des éléments de coques au moyen des relations linéaires",
GROUP_MA_1 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
MAILLE_1 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
GROUP_NO_1 =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
),
RELA_CINE_BP =FACT(statut='f',max='**',
+ fr="Etablir des relations cinématiques permettant de relier les noeuds cable aux noeuds du béton, et spécifier"
+ +" la prise en compte des contraintes initiales dans les cables",
CABLE_BP =SIMP(statut='o',typ=cabl_precont ),
SIGM_BPEL =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
RELA_CINE =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
),
FORCE_ELEC =FACT(statut='f',max='**',
- fr="Force de Laplace due à la présence d'un conducteur rectiligne secondaire non maillé",
+ fr="Appliquer la force de LAPLACE agissant sur un conducteur principal, due à la présence d'un conducteur"
+ +" secondaire droit",
regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),),
INTE_ELEC =FACT(statut='f',max='**',
- fr="Force de Laplace due à la présence d'un conducteur non rectiligne secondaire",
+ fr="Appliquer la force de LAPLACE agissant sur un conducteur principal, due à la présence d'un conducteur"
+ +" secondaire non nécessairement droit",
regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
AU_MOINS_UN('GROUP_MA_2','MAILLE_2','TRANS','SYME'),
),
- IMPE_FACE =FACT(statut='f',fr="Appliquer une impédance acoustique à une face",max='**',
+ IMPE_FACE =FACT(statut='f',fr="Applique une impédance acoustique à une face",max='**',
regles=(AU_MOINS_UN('GROUP_MA','MAILLE' ),),
GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
IMPE =SIMP(statut='o',typ='R' ),
),
- VITE_FACE =FACT(statut='f',fr="Imposer des vitesses acoustiquesnormales à une face",max='**',
+ VITE_FACE =FACT(statut='f',fr="Impose des vitesses normales à une face (phénomène ACOUSTIQUE), ",max='**',
regles=(AU_MOINS_UN('GROUP_MA','MAILLE'),),
GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- ONDE_FLUI =FACT(statut='f',fr="Appliquer une amplitude de pression d onde incidente",max='**',
+ ONDE_FLUI =FACT(statut='f',max='**',
+ fr="Applique une amplitude de pression d'onde incidente sinusoidale arrivant normalement à une face",
regles=(AU_MOINS_UN('GROUP_MA','MAILLE'),),
GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
),
FLUX_THM_REP =FACT(statut='f',max='**',
+ fr="Applique à un domaine de milieu continu 2D ou 3D un flux de chaleur et/ou un apport de masse fluide"
+ +" (flux hydraulique)",
regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
AU_MOINS_UN('FLUN','FLUN_HYDR1','FLUN_HYDR2'),),
) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 24/08/2005 AUTEUR MABBAS M.ABBAS
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
MODELE =SIMP(statut='o',typ=modele_sdaster ),
VERI_DDL =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
DDL_IMPO =FACT(statut='f',max='**',
+ fr="Impose à des noeuds une ou plusieurs valeurs de déplacement (ou de certaines grandeurs asscociées)",
regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD',),
AU_MOINS_UN('DX','DY','DZ','DRX','DRY','DRZ','GRX','PRES','PHI','LIAISON', ),),
TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
PHI =SIMP(statut='f',typ='C' ),
),
FORCE_POUTRE =FACT(statut='f',max='**',
+ fr="Applique des forces linéiques sur des éléments de type poutre",
regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
AU_MOINS_UN('FX','FY','FZ','N','VY','VZ',),
VZ =SIMP(statut='f',typ='C' ),
),
LIAISON_DDL =FACT(statut='f',max='**',
+ fr="Définit une relation linéaire entre les DDLs de deux ou plusieurs noeuds",
regles=(UN_PARMI('GROUP_NO','NOEUD', ),),
GROUP_NO =SIMP(statut='f',typ=grno,max='**'),
NOEUD =SIMP(statut='f',typ=no ,max='**'),
),
INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
) ;
-#& MODIF COMMANDE DATE 24/05/2005 AUTEUR MABBAS M.ABBAS
+#& MODIF COMMANDE DATE 03/05/2006 AUTEUR MABBAS M.ABBAS
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# ======================================================================
# RESPONSABLE G8BHHXD X.DESROCHES
AFFE_CHAR_MECA_F=OPER(nom="AFFE_CHAR_MECA_F",op=7,sd_prod=char_meca,
- fr="Affectation de charges et conditions aux limites mécaniques fonction d une grandeur",
+ fr="Affectation de charges et conditions aux limites mécaniques fonction d'un (ou plusieurs) paramètres",
reentrant='n',
UIinfo={"groupes":("Modélisation",)},
regles=(AU_MOINS_UN('DDL_IMPO','FACE_IMPO','LIAISON_DDL','FORCE_NODALE',
'PRES_REP','FORCE_POUTRE','VITE_FACE','IMPE_FACE','ONDE_PLANE',
'LIAISON_OBLIQUE','EPSI_INIT','LIAISON_GROUP','LIAISON_UNIF',
'LIAISON_SOLIDE','FORCE_COQUE','LIAISON_COQUE','FORCE_TUYAU',
- 'CONTACT','EFFE_FOND','FLUX_THM_REP'),),
+
+'CONTACT','EFFE_FOND','FLUX_THM_REP','LIAISON_UNILATER'),),
VERI_DDL =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
VERI_NORM =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
MODELE =SIMP(statut='o',typ=modele_sdaster),
DDL_IMPO =FACT(statut='f',max='**',
+ fr="Impose à des noeuds une ou plusieurs valeurs de déplacement (ou de certaines grandeurs asscociées) fournies"
+ +" par l'intermédiaire d'un concept fonction ",
regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD'),
AU_MOINS_UN('DX','DY','DZ','DRX','DRY','DRZ','GRX','PRES','PHI',
- 'TEMP','PRE1','PRE2','LIAISON',),),
+ 'TEMP','PRE1','PRE2','LIAISON','DCX','DCY','DCZ','H1X',
+ 'H1Y','H1Z','E1X','E1Y','E1Z','E2X','E2Y','E2Z',
+ 'E3X','E3Y','E3Z','E4X','E4Y','E4Z','LAGS_C'),),
TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
PRE1 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
PRE2 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ DCX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ DCY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ DCZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ H1X =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ H1Y =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ H1Z =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ E1X =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ E1Y =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ E1Z =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ E2X =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ E2Y =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ E2Z =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ E3X =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ E3Y =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ E3Z =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ E4X =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ E4Y =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ E4Z =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ LAGS_C =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
),
FACE_IMPO =FACT(statut='f',max='**',
+ fr="Impose à tous les noeuds d'une face une ou plusieurs valeurs de déplacement (ou de certaines grandeurs associées)"
+ +" fournies par l'intérmédiaire d'un concept fonction",
regles=(UN_PARMI('GROUP_MA','MAILLE'),
AU_MOINS_UN('DX','DY','DZ','DRX','DRY','DRZ','GRX','PRES','PHI','TEMP','PRE1','PRE2','DNOR','DTAN'),
EXCLUS('DNOR','DX'),
# rajout d un mot cle REPERE : / GLOBAL / LOCAL
GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ SANS_GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ SANS_MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
DX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
DY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
DZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
),
LIAISON_DDL =FACT(statut='f',max='**',
- fr="Définir une relation linéaire entre des ddls de deux ou plusieurs noeuds",
+ fr="Définit une relation linéaire entre des DDLs de deux ou plusieurs noeuds, les valeurs sont fournies par"
+ +" l'intermediaire d'un concept de type fonction",
regles=(UN_PARMI('GROUP_NO','NOEUD'),),
GROUP_NO =SIMP(statut='f',typ=grno,max='**'),
NOEUD =SIMP(statut='f',typ=no ,max='**'),
),
LIAISON_OBLIQUE =FACT(statut='f',max='**',
- fr="Définir des relations linéaires entre certains ddls de couples de noeuds",
+ fr="Applique à des noeuds la meme valeur de déplacement définie composante par composante dans un repère oblique"
+ +" quelconque, les valeurs sont fournis par l'intermédiaire d'un concept fonction",
regles=(UN_PARMI('GROUP_NO','NOEUD'),
UN_PARMI('DX','DY','DZ','DRX','DRY','DRZ'),),
GROUP_NO =SIMP(statut='f',typ=grno,max='**'),
),
LIAISON_GROUP =FACT(statut='f',max='**',
- fr="Définir des relations linéaires entre certains ddls de couples de noeuds",
+ fr="Définit la meme relation linéaire entre certains DDLs de couples de noeuds, les valeurs sont fournies par"
+ +" l'intermédiaire de concept fonction",
regles=(UN_PARMI('GROUP_MA_1','MAILLE_1','GROUP_NO_1','NOEUD_1'),
UN_PARMI('GROUP_MA_2','MAILLE_2','GROUP_NO_2','NOEUD_2'),
EXCLUS('GROUP_MA_1','GROUP_NO_2'),
ANGL_NAUT =SIMP(statut='f',typ='R',max=3),
CENTRE =SIMP(statut='f',typ='R',max=3),
),
+#
+# LIAISON UNILATERALE
+#
+ LIAISON_UNILATER=FACT(statut='f',max='**',
+ fr="Définit les zones soumises à des conditions de liaison unilaterale (inegalite sur un DDL)",
+ regles=(UN_PARMI('GROUP_MA','MAILLE','GROUP_NO','NOEUD'),),
+
+ GROUP_MA =SIMP(statut='f',typ=grma ,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno ,validators=NoRepeat(),max='**'),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+
+ SANS_NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ SANS_GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+
+ NB_RESOL =SIMP(statut='f',typ='I', defaut=10 ),
+
+ NOM_CMP =SIMP(statut='o',typ='TXM',max='**'),
+
+ COEF_IMPO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ COEF_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),max='**'),
- CONTACT =FACT(statut='f',fr="Imposer du contact avec ou sans frottement",max='**',
+ METHODE =SIMP(statut='f',typ='TXM',defaut="CONTRAINTE",
+ into=("CONTRAINTE","GCPC",) ),
+
+
+ ),
+ CONTACT =FACT(statut='f',
+ fr="Définit les zones soumises à des conditions de contact unilatéral avec ou \sans frottement, certaines valeurs"
+ +" sont données par l'intermédiaire de concept fonction",max='**',
regles=(UN_PARMI('GROUP_MA_ESCL','MAILLE_ESCL'),),
APPARIEMENT =SIMP(statut='f',typ='TXM',defaut="MAIT_ESCL",
into=("NON","NODAL","MAIT_ESCL","MAIT_ESCL_SYME")),
RECHERCHE =SIMP(statut='f',typ='TXM',defaut="NOEUD_BOUCLE",into=("NOEUD_BOUCLE","NOEUD_VOISIN")),
LISSAGE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
+ DIST_POUTRE =SIMP(statut='f',typ='TXM',defaut="NON", into=("OUI","NON")),
+ DIST_COQUE =SIMP(statut='f',typ='TXM',defaut="NON", into=("OUI","NON")),
NORMALE =SIMP(statut='f',typ='TXM',defaut="MAIT",into=("MAIT","MAIT_ESCL")),
METHODE =SIMP(statut='f',typ='TXM',defaut="CONTRAINTE",
- into=("CONTRAINTE","VERIF","LAGRANGIEN","PENALISATION","CONTINUE") ),
+ into=("CONTRAINTE","VERIF","LAGRANGIEN","PENALISATION","CONTINUE","GCP") ),
PROJECTION =SIMP(statut='f',typ='TXM',defaut="LINEAIRE",into=("LINEAIRE","QUADRATIQUE") ),
GROUP_MA_MAIT =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
MAILLE_MAIT =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
GROUP_MA_ESCL =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
MAILLE_ESCL =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ b_cara =BLOC(condition = "DIST_POUTRE == 'OUI' or DIST_COQUE == 'OUI'",
+ CARA_ELEM =SIMP(statut='o',typ=(cara_elem) ),
+ ),
b_verif =BLOC(condition = "METHODE == 'VERIF' ",
fr="Paramètres de la méthode sans calcul de contact",
DIST_MAIT =SIMP(statut='f',typ='R'),
DIST_ESCL =SIMP(statut='f',typ='R'),
VECT_NORM_ESCL =SIMP(statut='f',typ='R',max=3),
- VECT_Y =SIMP(statut='f',typ='R',min=3,max=3),
+ VECT_ORIE_POU =SIMP(statut='f',typ='R',min=3,max=3),
),
b_active =BLOC(condition = "METHODE == 'CONTRAINTE' ",
),
TOLE_PROJ_EXT =SIMP(statut='f',typ='R' ,defaut=0.50),
TOLE_PROJ_INT =SIMP(statut='f',typ='R' ,defaut=0.001),
- TOLE_REAC_GEOM =SIMP(statut='f',typ='R' ,defaut=0.05),
STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",
into=("OUI","NON")),
NB_RESOL =SIMP(statut='f',typ='I', defaut=10 ),
b_reac_sans =BLOC(condition = "REAC_GEOM == 'SANS' ",
fr="Parametre de la reactualisation geometrique",
- VERI_REAC_GEOM =SIMP(statut='f',typ='TXM',defaut="ALARME",
- into=("ALARME","ERREUR","NON")),
),
b_reac_geom =BLOC(condition = "REAC_GEOM == 'CONTROLE' ",
fr="Parametre de la reactualisation geometrique",
NB_REAC_GEOM =SIMP(statut='o',typ='I'),
- VERI_REAC_GEOM =SIMP(statut='f',typ='TXM',defaut="ALARME",
- into=("ALARME","ERREUR","NON")),
),
b_reac_auto =BLOC(condition = "REAC_GEOM == 'AUTOMATIQUE' ",
fr="Parametre de la reactualisation geometrique auto",
- NB_REAC_MAXI =SIMP(statut='o',typ='I',defaut = 10),
),
SANS_NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
SANS_GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
COEF_IMPO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
COEF_MULT_ESCL =SIMP(statut='f',typ='R'),
VECT_NORM_ESCL =SIMP(statut='f',typ='R',max=3),
- VECT_Y =SIMP(statut='f',typ='R',min=3,max=3),
+ VECT_ORIE_POU =SIMP(statut='f',typ='R',min=3,max=3),
DIST_MAIT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
DIST_ESCL =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
),
FROTTEMENT =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","COULOMB",) ),
TOLE_PROJ_EXT =SIMP(statut='f',typ='R' ,defaut=0.50),
TOLE_PROJ_INT =SIMP(statut='f',typ='R' ,defaut=0.001),
- TOLE_REAC_GEOM =SIMP(statut='f',typ='R' ,defaut=0.05),
STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",
into=("OUI","NON")),
NB_RESOL =SIMP(statut='f',typ='I', defaut=10 ),
REAC_GEOM =SIMP(statut='f',typ='TXM',defaut="AUTOMATIQUE",
into=("AUTOMATIQUE","CONTROLE","SANS")),
b_reac_sans =BLOC(condition = "REAC_GEOM == 'SANS' ",fr="Parametre de la reactualisation geometrique",
- VERI_REAC_GEOM =SIMP(statut='f',typ='TXM',defaut="ALARME",
- into=("ALARME","ERREUR","NON")),
),
b_reac_geom =BLOC(condition = "REAC_GEOM == 'CONTROLE' ",fr="Parametre de la reactualisation geometrique",
NB_REAC_GEOM =SIMP(statut='o',typ='I'),
-
- VERI_REAC_GEOM =SIMP(statut='f',typ='TXM',defaut="ALARME",
- into=("ALARME","ERREUR","NON")),
+
),
b_reac_auto =BLOC(condition = "REAC_GEOM == 'AUTOMATIQUE' ",
fr="Parametre de la reactualisation geometrique auto",
- NB_REAC_MAXI =SIMP(statut='o',typ='I',defaut = 10),
),
SANS_NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
SANS_NOEUD_QUAD =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
DIST_MAIT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
DIST_ESCL =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ regles=(EXCLUS('VECT_Y','VECT_ORIE_POU')),
VECT_Y =SIMP(statut='f',typ='R',min=3,max=3),
-
+ VECT_ORIE_POU =SIMP(statut='f',typ='R',min=3,max=3),
b_frottement =BLOC(condition = "FROTTEMENT == 'COULOMB' ",fr="Paramètres du frottement de Coulomb",
COULOMB =SIMP(statut='o',typ='R',),
COEF_MATR_FROT =SIMP(statut='f',typ='R',defaut=0.E+0),
FROTTEMENT =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","COULOMB",) ),
TOLE_PROJ_EXT =SIMP(statut='f',typ='R' ,defaut=0.50),
TOLE_PROJ_INT =SIMP(statut='f',typ='R' ,defaut=0.001),
- TOLE_REAC_GEOM =SIMP(statut='f',typ='R' ,defaut=0.05),
STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",
into=("OUI","NON")),
NB_RESOL =SIMP(statut='f',typ='I', defaut=10 ),
REAC_GEOM =SIMP(statut='f',typ='TXM',defaut="AUTOMATIQUE",
into=("AUTOMATIQUE","CONTROLE","SANS")),
b_reac_sans =BLOC(condition = "REAC_GEOM == 'SANS' ",fr="Paramètre de la réactualisation géométrique",
- VERI_REAC_GEOM =SIMP(statut='f',typ='TXM',defaut="ALARME",
- into=("ALARME","ERREUR","NON")),
),
b_reac_geom =BLOC(condition = "REAC_GEOM == 'CONTROLE' ",fr="Paramètre de la réactualisation géométrique",
NB_REAC_GEOM =SIMP(statut='o',typ='I'),
-
- VERI_REAC_GEOM =SIMP(statut='f',typ='TXM',defaut="ALARME",
- into=("ALARME","ERREUR","NON")),
),
b_reac_auto =BLOC(condition = "REAC_GEOM == 'AUTOMATIQUE' ",
fr="Paramètre de la réactualisation géométrique auto",
- NB_REAC_MAXI =SIMP(statut='o',typ='I',defaut = 10),
),
SANS_NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
SANS_GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
SANS_NOEUD_QUAD =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
DIST_MAIT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
DIST_ESCL =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ regles=(EXCLUS('VECT_Y','VECT_ORIE_POU')),
VECT_Y =SIMP(statut='f',typ='R',min=3,max=3),
-
+ VECT_ORIE_POU =SIMP(statut='f',typ='R',min=3,max=3),
b_frottement =BLOC(condition = "FROTTEMENT == 'COULOMB' ",fr="Paramètres du frottement de Coulomb",
COULOMB =SIMP(statut='o',typ='R',),
E_T =SIMP(statut='f',typ='R',
),),
b_continue =BLOC(condition = "METHODE == 'CONTINUE' ",
fr="Paramètres de la méthode continue (contact avec ou sans frottement)",
+# regles=(UN_PARMI('GLISSIERE','FROTTEMENT'),),
NOM_CHAM =SIMP(statut='f',typ='TXM',defaut="DEPL",into=("DEPL",)),
+ GLISSIERE =SIMP(statut='f',typ='TXM',defaut="NON",
+ into=("OUI","NON")),
+ b_glissiere =BLOC(condition = "GLISSIERE == 'OUI' ",
+ ALARME_JEU =SIMP(statut='f',typ='R',defaut=0.),
+ ),
FROTTEMENT =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","COULOMB",) ),
- INTEGRATION =SIMP(statut='f',typ='TXM',defaut="NOEUD",into=("GAUSS","NOEUD","SIMPSON","SIMPSON1","SIMPSON2")),
+ COMPLIANCE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON",) ),
+ INTEGRATION =SIMP(statut='f',typ='TXM',defaut="NOEUD",into=("GAUSS","NOEUD","SIMPSON","SIMPSON1","SIMPSON2",
+ "NCOTES","NCOTES1","NCOTES2")),
COEF_REGU_CONT =SIMP(statut='f',typ='R',defaut=100.E+0),
FORMULATION =SIMP(statut='f',typ='TXM',defaut="DEPL",into=("DEPL","VITE")),
MODL_AXIS =SIMP(statut='o',typ='TXM',into=("OUI","NON")),
DIRE_APPA =SIMP(statut='f',typ='R',max=3),
ITER_GEOM_MAXI =SIMP(statut='f',typ='I',defaut=2),
ITER_CONT_MAXI =SIMP(statut='f',typ='I',defaut=30),
+ DIST_MAIT =SIMP(statut='f',typ='R'),
+ DIST_ESCL =SIMP(statut='f',typ='R'),
+ CONTACT_INIT =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON",) ),
+ b_compliance =BLOC(condition = "COMPLIANCE == 'OUI' ",fr="Parametres de la compliance",
+ ASPERITE =SIMP(statut='o',typ='R',),
+ E_N =SIMP(statut='o',typ='R',),
+ E_V =SIMP(statut='f',typ='R',defaut=0.E+0),),
b_frottement =BLOC(condition = "FROTTEMENT == 'COULOMB' ",fr="Paramètres du frottement de Coulomb",
COULOMB =SIMP(statut='o',typ='R',),
+ SANS_NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ SANS_GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ VECT_Y =SIMP(statut='f',typ='R',min=3,max=3),
+ VECT_Z =SIMP(statut='f',typ='R',min=3,max=3),
ITER_FROT_MAXI =SIMP(statut='f',typ='I',defaut=2),
COEF_REGU_FROT =SIMP(statut='f',typ='R',defaut=100.E+0),
SEUIL_INIT =SIMP(statut='f',typ='I',defaut=0),),),
+
+ b_gcp =BLOC(condition = "METHODE == 'GCP' ",
+ fr="Paramètres de la méthode du gradient conjugué projeté (contact uniquement)",
+ regles=(EXCLUS('DIST_ESCL','COEF_IMPO'),
+ EXCLUS('DIST_MAIT','COEF_IMPO'),),
+ NOM_CHAM =SIMP(statut='f',typ='TXM',defaut="DEPL",
+ into=("DEPL","PRES","TEMP","PRE1","PRE2")),
+ RESI_ABSO =SIMP(statut='o',typ='R',
+ fr="Critère de convergence (niveau d'interpénétration autorisé)"),
+ REAC_ITER =SIMP(statut='f',typ='I',defaut=3, fr="Fréquence de réinitialisation de la conjugaison"),
+ TOLE_PROJ_EXT =SIMP(statut='f',typ='R' ,defaut=0.50),
+ TOLE_PROJ_INT =SIMP(statut='f',typ='R' ,defaut=0.001),
+ TOLE_REAC_GEOM =SIMP(statut='f',typ='R' ,defaut=0.05),
+ STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",
+ into=("OUI","NON")),
+ REAC_GEOM =SIMP(statut='f',typ='TXM',defaut="AUTOMATIQUE",
+ into=("AUTOMATIQUE","CONTROLE","SANS")),
+ b_reac_sans =BLOC(condition = "REAC_GEOM == 'SANS' ",
+ fr="Paramètre de la réactualisation géométrique",
+
+ STOP_REAC_GEOM =SIMP(statut='f',typ='TXM',defaut="NON",
+ into=("OUI","NON")),
+ ),
+ b_reac_geom =BLOC(condition = "REAC_GEOM == 'CONTROLE' ",
+ fr="Paramètre de la réactualisation géométrique",
+ NB_REAC_GEOM =SIMP(statut='o',typ='I'),
+
+ STOP_REAC_GEOM =SIMP(statut='f',typ='TXM',defaut="ALARME",
+ into=("OUI","NON")),
+ ),
+ b_reac_auto =BLOC(condition = "REAC_GEOM == 'AUTOMATIQUE' ",
+ fr="Paramètre de la réactualisation géométrique auto",
+ NB_REAC_MAXI =SIMP(statut='o',typ='I',defaut = 10),
+ ),
+ SANS_NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ SANS_GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ SANS_NOEUD_QUAD =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
+ COEF_IMPO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ COEF_MULT_ESCL =SIMP(statut='f',typ='R'),
+ VECT_NORM_ESCL =SIMP(statut='f',typ='R',max=3),
+ VECT_ORIE_POU =SIMP(statut='f',typ='R',min=3,max=3),
+ DIST_MAIT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ DIST_ESCL =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ ),
),
LIAISON_UNIF =FACT(statut='f',max='**',
- fr="Imposer une meme valeur (inconnue) a des ddls d un emsemble de noeuds",
+ fr="Impose une meme valeur (inconnue) à des DDLs d'un ensemble de noeuds",
regles=(UN_PARMI('GROUP_NO','NOEUD','GROUP_MA','MAILLE'),),
GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
),
LIAISON_SOLIDE =FACT(statut='f',max='**',
- fr="Modéliser une partie indéformable d une structure",
+ fr="Modélise une partie indéformable d'une structure",
regles=(UN_PARMI('GROUP_NO','NOEUD','GROUP_MA','MAILLE'),),
GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
FORCE_NODALE =FACT(statut='f',max='**',
+ fr="Applique à des noeuds des forces nodales dont les valeurs des composantes sont fournies par l'intermédiaire"
+ +" d'un concept fonction",
regles=(UN_PARMI('GROUP_NO','NOEUD'),
AU_MOINS_UN('FX','FY','FZ','MX','MY','MZ'),),
GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
),
FORCE_FACE =FACT(statut='f',max='**',
+ fr="Applique des forces surfaciques sur une face d'élément volumique dont les valeurs des composantes sont fournies"
+ +" par l'intermédiaire d'un concept fonction",
regles=(AU_MOINS_UN('GROUP_MA','MAILLE'),
AU_MOINS_UN('FX','FY','FZ'),),
GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
FZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
),
FORCE_ARETE =FACT(statut='f',max='**',
+ fr="Applique des forces linéiques à une arete d'élément volumique ou de coque dont les valeurs des composantes sont"
+ +" fournies par l'intermédiaire d'un concept fonction",
regles=(AU_MOINS_UN('GROUP_MA','MAILLE'),
AU_MOINS_UN('FX','FY','FZ','MX','MY','MZ'),),
GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
MZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
),
FORCE_CONTOUR =FACT(statut='f',max='**',
+ fr="Applique des forces linéiques au bord d'un domaine 2D ou AXIS ou AXIS_FOURIER, dont les valeurs des composantes"
+ +" sont fournies par l'intermédiaire d'un concept fonction",
regles=(AU_MOINS_UN('GROUP_MA','MAILLE'),
AU_MOINS_UN('FX','FY','FZ','MX','MY','MZ'),),
GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
),
FORCE_INTERNE =FACT(statut='f',max='**',
+ fr="Applique des forces volumiques (2D ou 3D) à un domaine volumique, dont les valeurs des composantes sont fournies"
+ +" par l'intermédiaire d'un concept fonction",
regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
AU_MOINS_UN('FX','FY','FZ'),),
),
PRES_REP =FACT(statut='f',max='**',
+ fr="Applique une pression à un domaine de milieu continu 2D ou 3D ou à un domaine de coques et tuyaux, dont les"
+ +" valeurs imposées (pression et/ou cisaillement) sont fournies par l'intermédiaire d'un concept fonction",
regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
AU_MOINS_UN('PRES','CISA_2D'),),
CISA_2D =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
),
- EFFE_FOND =FACT(statut='f',fr="Imposer un effet de fond",max='**',
+ EFFE_FOND =FACT(statut='f',max='**',
+ fr="Calcul l'effet de fond sur une branche de tuyauterie (modélisation 3D) soumise"
+ +" à une pression dont la valeur est fournie par l'intermédiaire d'un concept fonction",
regles=(AU_MOINS_UN('GROUP_MA','MAILLE'),),
GROUP_MA_INT =SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**'),
GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
),
EPSI_INIT =FACT(statut='f',max='**',
+ fr="Applique un chargement de déformation initiale à un élément 2D, 3D ou de structure dont les composantes"
+ +" du tenseur de déformation sont fournies par l'intermédiaire d'un concept fonction",
regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
AU_MOINS_UN('EPXX','EPYY','EPZZ','EPXY','EPXZ','EPYZ'),),
),
FORCE_POUTRE =FACT(statut='f',max='**',
+ fr="Applique des forces linéiques sur des éléments de type poutre dont les valeurs sont fournies par"
+ +" l'intermédiaire d'un concept fonction",
regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
AU_MOINS_UN('FX','FY','FZ','N','VY','VZ'),
),
FORCE_TUYAU =FACT(statut='f',max='**',
+ fr="Applique une pression sur des éléments TUYAU, la valeur est fournie par l'intermédiaire d'un concept fonction",
regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),),
TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
),
FORCE_COQUE =FACT(statut='f',max='**',
+ fr="Applique des forces surfaciques sur des éléments de types coques dont les valeurs sont fournies par"
+ +" l'intermédiaires d'un concept fonction",
regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
AU_MOINS_UN('FX','FY','FZ','MX','MY','MZ','PRES','F1','F2','F3','MF1','MF2'),
),
LIAISON_COQUE =FACT(statut='f',max='**',
+ fr="Permet de représenter le raccord entre des éléments de coques au moyen des relations linéaires",
GROUP_MA_1 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
MAILLE_1 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
GROUP_NO_1 =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
VITE_FACE =FACT(statut='f',max='**',
+ fr="Impose des vitesses normales à une face (phénomène ACOUSTIQUE) dont les valeurs sont fournies par"
+ +" l'intermédiaire d'un concept fonction",
regles=(AU_MOINS_UN('GROUP_MA','MAILLE'),
PRESENT_ABSENT('GROUP_MA','MAILLE'),),
GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
VNOR =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ),
),
IMPE_FACE =FACT(statut='f',max='**',
+ fr="Applique à une face une impédance acoustique dont la valeur est fournie par l'intermédiaire"
+ +" d'un concept fonction",
regles=(AU_MOINS_UN('GROUP_MA','MAILLE'),
PRESENT_ABSENT('GROUP_MA','MAILLE'),),
GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
IMPE =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ),
),
ONDE_PLANE =FACT(statut='f',max='**',
+ fr="Impose un chargement sismique par onde plane dont la valeur est fournie par l'intermédiaire"
+ +" d'un concept fonction",
DIRECTION =SIMP(statut='o',typ='R',max='**'),
TYPE_ONDE =SIMP(statut='o',typ='TXM' ),
FONC_SIGNAL =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ),
FLUX_THM_REP =FACT(statut='f',max='**',
+ fr="Applique à un domaine continue 2D ou 3D un flux de chaleur et/ou un apport de masse fluide (flux hydraulique)"
+ +" dont les valeurs des flux sont fournies par l'intermédiaire d'un concept fonction",
regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
AU_MOINS_UN('FLUN','FLUN_HYDR1','FLUN_HYDR2'),),
) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
AFFE_CHAR_OPS011=OPER(nom="AFFE_CHAR_OPS011",op= 190,sd_prod=char_ther,
- fr=" ",
+ fr="Affectation de charges et conditions limites thermiques spécifique à CARA_TORSION",
reentrant='n',
UIinfo={"groupes":("Outils métier",)},
regles=(AU_MOINS_UN('CARA_TORSION', ),),
),
INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ),
) ;
-#& MODIF COMMANDE DATE 11/01/2005 AUTEUR VABHHTS J.PELLET
+#& MODIF COMMANDE DATE 16/05/2006 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
regles=(AU_MOINS_UN('TEMP_IMPO','SOURCE','FLUX_REP','ECHANGE',
'ECHANGE_PAROI','GRAD_TEMP_INIT','LIAISON_DDL','LIAISON_GROUP',
'LIAISON_UNIF','LIAISON_CHAMNO','RAYONNEMENT','LIAISON_MAIL' ),),
- VERI_DDL =SIMP(statut='f',typ='TXM',into=("OUI","NON"),defaut="OUI"),
MODELE =SIMP(statut='o',typ=(modele_sdaster) ),
TEMP_IMPO =FACT(statut='f',max='**',
FLUN =SIMP(statut='f',typ='R'),
FLUN_INF =SIMP(statut='f',typ='R'),
FLUN_SUP =SIMP(statut='f',typ='R'),
- CARA_TORSION =SIMP(statut='f',typ=tabl_aire_int ),
+ CARA_TORSION =SIMP(statut='f',typ=table_sdaster),
),
GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
SOUR =SIMP(statut='f',typ='R'),
- SOUR_CALCULEE =SIMP(statut='f',typ=(cham_elem_sour_r) ),
+ SOUR_CALCULEE =SIMP(statut='f',typ=(cham_elem) ),
),
GRAD_TEMP_INIT =FACT(statut='f',max='**',
),
CONVECTION =FACT(statut='f',max='**',
- VITESSE =SIMP(statut='o',typ=(cham_no_depl_r) ),
+ VITESSE =SIMP(statut='o',typ=(cham_no_sdaster) ),
),
INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ),
) ;
-#& MODIF COMMANDE DATE 30/06/2004 AUTEUR MCOURTOI M.COURTOIS
+#& MODIF COMMANDE DATE 21/02/2006 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
AFFE_CHAR_THER_F=OPER(nom="AFFE_CHAR_THER_F",op=33,sd_prod=char_ther,
- fr="Affectation de charges et conditions aux limites thermiques fonction dune grandeur (temps, ...)",
+ fr="Affectation de charges et conditions aux limites thermiques fonction d'un (ou plusieurs)"
+ +" paramètres (temps, ...)",
reentrant='n',
UIinfo={"groupes":("Modélisation",)},
regles=(AU_MOINS_UN('TEMP_IMPO','SOURCE','FLUX_REP','FLUX_NL','ECHANGE',
'ECHANGE_PAROI','LIAISON_DDL','LIAISON_GROUP','LIAISON_UNIF',
'GRAD_TEMP_INIT','RAYONNEMENT'),),
- VERI_DDL =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
MODELE =SIMP(statut='o',typ=(modele_sdaster) ),
TEMP_IMPO =FACT(statut='f',max='**',
),
CONVECTION =FACT(statut='f',max='**',
- VITESSE =SIMP(statut='o',typ=(cham_no_depl_r) ),
+ VITESSE =SIMP(statut='o',typ=cham_no_sdaster ),
),
INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ),
) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 25/04/2006 AUTEUR CIBHHPD L.SALMONA
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# ======================================================================
# RESPONSABLE VABHHTS J.PELLET
AFFE_MATERIAU=OPER(nom="AFFE_MATERIAU",op=6,sd_prod=cham_mater,
- fr="Affectation de caractéristiques de matériaux à un maillage",
+ fr="Affecter des matériaux à des zones géométriques d'un maillage",
reentrant='n',
UIinfo={"groupes":("Modélisation",)},
MAILLAGE =SIMP(statut='o',typ=maillage_sdaster),
MODELE =SIMP(statut='f',typ=modele_sdaster),
+
+ # affectation du nom du matériau :
+ # -------------------------------
AFFE =FACT(statut='o',max='**',
regles=(UN_PARMI('TOUT','GROUP_MA','MAILLE'),),
TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
TEMP_REF =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
SECH_REF =SIMP(statut='f',typ='R',val_min=0.E+0),
),
+
+ # affectation des variables de commande :
+ # --------------------------------------------------
+ # un mot clé caché qui ne sert qu'à boucler sur les VARC possibles :
+ LIST_NOM_VARC =SIMP(statut='c',typ='TXM', defaut=("CORR","IRRA","HYDR","NEUT1","NEUT2")),
+
+ AFFE_VARC =FACT(statut='f',max='**',
+
+ regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
+ PRESENT_ABSENT('GROUP_MA','TOUT'),
+ PRESENT_ABSENT('MAILLE','TOUT'),
+ UN_PARMI('EVOL','CHAMP_GD'),),
+
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), # [défaut]
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+
+ CHAMP_GD =SIMP(statut='f',typ=cham_gd_sdaster,),
+ B_CHAMP_GD =BLOC(condition="CHAMP_GD!=None",
+ NOM_VARC =SIMP(statut='o',typ='TXM', into=("CORR","IRRA","HYDR","NEUT1","NEUT2")),
+ ),
+ EVOL =SIMP(statut='f',typ=evol_sdaster,),
+ B_EVOL =BLOC(condition="EVOL!=None",
+ NOM_VARC =SIMP(statut='o',typ='TXM', into=("CORR","IRRA","HYDR","NEUT1","NEUT2")),
+ B_NOM_CORR =BLOC(condition="NOM_VARC=='CORR'", NOM_CHAM=SIMP(statut='f',typ='TXM',defaut= 'CORR',),),
+ B_NOM_IRRA =BLOC(condition="NOM_VARC=='IRRA'", NOM_CHAM=SIMP(statut='f',typ='TXM',defaut= 'IRRA',),),
+ B_NOM_HYDR =BLOC(condition="NOM_VARC=='HYDR'", NOM_CHAM=SIMP(statut='f',typ='TXM',defaut= 'HYDR_ELNO_ELGA',),),
+ B_NOM_NEUT1 =BLOC(condition="NOM_VARC=='NEUT1'", NOM_CHAM=SIMP(statut='f',typ='TXM',defaut= 'NEUT',),),
+ B_NOM_NEUT2 =BLOC(condition="NOM_VARC=='NEUT2'", NOM_CHAM=SIMP(statut='f',typ='TXM',defaut= 'NEUT',),),
+ PROL_DROITE =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU") ),
+ PROL_GAUCHE =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU") ),
+ ),
+ VALE_REF =SIMP(statut='f',typ='R'),
+ ),
+
+ # mots clés cachés pour les variables de commande NEUTi :
+ # -------------------------------------------------------
+ VARC_NEUT1 =FACT(statut='d',
+ NOM_VARC =SIMP(statut='c',typ='TXM',defaut="NEUT1"),
+ GRANDEUR =SIMP(statut='c',typ='TXM',defaut="NEUT_R"),
+ CMP_GD =SIMP(statut='c',typ='TXM',max=1,min=1,defaut=("X1")),
+ CMP_VARC =SIMP(statut='c',typ='TXM',max=1,min=1,defaut=("NEUT1")),
+ ),
+ VARC_NEUT2 =FACT(statut='d',
+ NOM_VARC =SIMP(statut='c',typ='TXM',defaut="NEUT2"),
+ GRANDEUR =SIMP(statut='c',typ='TXM',defaut="NEUT_R"),
+ CMP_GD =SIMP(statut='c',typ='TXM',max=1,min=1,defaut=("X1")),
+ CMP_VARC =SIMP(statut='c',typ='TXM',max=1,min=1,defaut=("NEUT2")),
+ ),
+
+ # mots clés cachés pour variable de commande TEMP :
+ # --------------------------------------------------
+ VARC_TEMP =FACT(statut='d',
+ NOM_VARC =SIMP(statut='c',typ='TXM',defaut="TEMP"),
+ GRANDEUR =SIMP(statut='c',typ='TXM',defaut="TEMP_R"),
+ CMP_GD =SIMP(statut='c',typ='TXM',max=1,min=1,defaut=("TEMP",)),
+ CMP_VARC =SIMP(statut='c',typ='TXM',max=1,min=1,defaut=("TEMP",)),
+ ),
+
+ # mots clés cachés pour variable de commande SECH :
+ # --------------------------------------------------
+ VARC_SECH =FACT(statut='d',
+ NOM_VARC =SIMP(statut='c',typ='TXM',defaut="SECH"),
+ GRANDEUR =SIMP(statut='c',typ='TXM',defaut="TEMP_R"),
+ CMP_GD =SIMP(statut='c',typ='TXM',max=1,min=1,defaut=("TEMP",)),
+ CMP_VARC =SIMP(statut='c',typ='TXM',max=1,min=1,defaut=("SECH",)),
+ VALE_DEF =SIMP(statut='c',typ='R',max=1,min=1,defaut=(0.,)),
+ ),
+
+ # mots clés cachés pour variable de commande HYDR :
+ # --------------------------------------------------
+ VARC_HYDR =FACT(statut='d',
+ NOM_VARC =SIMP(statut='c',typ='TXM',defaut="HYDR"),
+ GRANDEUR =SIMP(statut='c',typ='TXM',defaut="HYDR_R"),
+ CMP_GD =SIMP(statut='c',typ='TXM',max=1,min=1,defaut=("HYDR",)),
+ CMP_VARC =SIMP(statut='c',typ='TXM',max=1,min=1,defaut=("HYDR",)),
+ VALE_DEF =SIMP(statut='c',typ='R',max=1,min=1,defaut=(0.,)),
+ ),
+
+ # mots clés cachés pour variable de commande CORR :
+ # --------------------------------------------------
+ VARC_CORR =FACT(statut='d',
+ NOM_VARC =SIMP(statut='c',typ='TXM',defaut="CORR"),
+ GRANDEUR =SIMP(statut='c',typ='TXM',defaut="CORR_R"),
+ CMP_GD =SIMP(statut='c',typ='TXM',max=1,min=1,defaut=("CORR",)),
+ CMP_VARC =SIMP(statut='c',typ='TXM',max=1,min=1,defaut=("CORR",)),
+ ),
+
+ # mots clés cachés pour variable de commande IRRA :
+ # --------------------------------------------------
+ VARC_IRRA =FACT(statut='d',
+ NOM_VARC =SIMP(statut='c',typ='TXM',defaut="IRRA"),
+ GRANDEUR =SIMP(statut='c',typ='TXM',defaut="IRRA_R"),
+ CMP_GD =SIMP(statut='c',typ='TXM',max=1,min=1,defaut=("IRRA",)),
+ CMP_VARC =SIMP(statut='c',typ='TXM',max=1,min=1,defaut=("IRRA",)),
+ VALE_DEF =SIMP(statut='c',typ='R',max=1,min=1,defaut=(0.,)),
+ ),
+
+ # mots clés cachés pour variable de commande EPSA :
+ # --------------------------------------------------
+ VARC_EPSA =FACT(statut='d',
+ NOM_VARC =SIMP(statut='c',typ='TXM',defaut="EPSA"),
+ GRANDEUR =SIMP(statut='c',typ='TXM',defaut="EPSI_R"),
+ CMP_GD =SIMP(statut='c',typ='TXM',max=6,min=6,defaut=("EPXX","EPYY","EPZZ","EPXY","EPXZ","EPYZ",)),
+ CMP_VARC =SIMP(statut='c',typ='TXM',max=6,min=6,defaut=("EPXX","EPYY","EPZZ","EPXY","EPXZ","EPYZ",)),
+ VALE_DEF =SIMP(statut='c',typ='R',max=6,min=6,defaut=( 0., 0., 0., 0., 0., 0., )),
+ ),
) ;
-#& MODIF COMMANDE DATE 26/04/2005 AUTEUR LAVERNE J.LAVERNE
+
+
+#& MODIF COMMANDE DATE 09/05/2006 AUTEUR JMBHH01 J.M.PROIX
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# RESPONSABLE JMBHH01 J.M.PROIX
AFFE_MODELE=OPER(nom="AFFE_MODELE",op=18,sd_prod=modele_sdaster,
UIinfo={"groupes":("Modélisation",)},
- fr="Affectation des éléments finis sur le maillage",reentrant='n',
+ fr="Définir le phénomène physique modélisé et le type d'éléments finis sur le maillage",reentrant='n',
regles=(AU_MOINS_UN('AFFE','AFFE_SOUS_STRUC'),),
MAILLAGE =SIMP(statut='o',typ=(maillage_sdaster) ),
INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
"3D_FAISCEAU",
"3D_FLUI_ABSO",
"3D_FLUIDE",
- "3D_HHM" ,
- "3D_HM",
"3D_INCO",
"3D_JOINT_CT",
"3D_SI",
- "3D_THH",
- "3D_THHM",
- "3D_THM",
"3D_GRAD_EPSI",
"3D_GRAD_VARI",
"3D_XFEM",
- "APPUI_REP",
- "ASSE_GRIL",
"AXIS",
"AXIS_FLUI_STRU",
"AXIS_FLUIDE",
"AXIS_FOURIER",
- "AXIS_HHM",
- "AXIS_HM",
"AXIS_INCO",
"AXIS_NS",
"AXIS_SI",
- "AXIS_THH",
- "AXIS_THHM",
- "AXIS_THM",
"AXIS_GRAD_VARI",
"AXIS_JOINT",
"AXIS_ELDI",
"BARRE",
"2D_BARRE",
"C_PLAN",
+ "C_PLAN_X",
"C_PLAN_NS",
"C_PLAN_SI",
"C_PLAN_GRAD_EPSI",
"COQUE_C_PLAN",
"COQUE_D_PLAN",
"D_PLAN",
+ "D_PLAN_X",
"D_PLAN_GRAD_EPSI",
"D_PLAN_GRAD_VARI",
"D_PLAN_NS",
"PLAN_JOINT",
"PLAN_ELDI",
"D_PLAN_ABSO",
- "D_PLAN_HHM",
- "D_PLAN_HM",
"D_PLAN_INCO",
"D_PLAN_SI",
- "D_PLAN_THH",
- "D_PLAN_THHM",
- "D_PLAN_THM",
- "3D_HHMD",
- "3D_HMD",
- "3D_THHD",
- "3D_THVD",
- "3D_THHMD",
- "3D_THMD",
- "AXIS_HH2MD",
- "AXIS_HHMD",
- "AXIS_HMD",
- "AXIS_THHD",
- "AXIS_THH2D",
- "AXIS_THVD",
- "AXIS_THHMD",
- "AXIS_THH2MD",
- "AXIS_THMD",
- "D_PLAN_HHMD",
- "D_PLAN_HH2MD",
- "D_PLAN_HMD",
- "D_PLAN_THHD",
- "D_PLAN_THH2D",
- "D_PLAN_THVD",
- "D_PLAN_THH2MD",
- "D_PLAN_THHMD",
- "D_PLAN_THMD",
"DIS_T",
"DIS_TR",
"DKT",
"Q4G",
"TUYAU_3M",
"TUYAU_6M",
- "SHB8"
+ "SHB8",
+ "D_PLAN_HHM",
+ "D_PLAN_HM",
+ "D_PLAN_THH",
+ "D_PLAN_THHM",
+ "D_PLAN_THM",
+ "D_PLAN_HHMD",
+ "D_PLAN_HH2MD",
+ "D_PLAN_HMD",
+ "D_PLAN_THHD",
+ "D_PLAN_THH2D",
+ "D_PLAN_THVD",
+ "D_PLAN_THH2MD",
+ "D_PLAN_THHMD",
+ "D_PLAN_THMD",
+ "D_PLAN_HHMS",
+ "D_PLAN_HH2MS",
+ "D_PLAN_HMS",
+ "D_PLAN_THHS",
+ "D_PLAN_THH2S",
+ "D_PLAN_THVS",
+ "D_PLAN_THH2MS",
+ "D_PLAN_THHMS",
+ "D_PLAN_THMS",
+ "AXIS_THH",
+ "AXIS_THHM",
+ "AXIS_THM",
+ "AXIS_HHM",
+ "AXIS_HM",
+ "AXIS_HH2MD",
+ "AXIS_HHMD",
+ "AXIS_HMD",
+ "AXIS_THHD",
+ "AXIS_THH2D",
+ "AXIS_THVD",
+ "AXIS_THHMD",
+ "AXIS_THH2MD",
+ "AXIS_THMD",
+ "AXIS_HH2MS",
+ "AXIS_HHMS",
+ "AXIS_HMS",
+ "AXIS_THHS",
+ "AXIS_THH2S",
+ "AXIS_THVS",
+ "AXIS_THHMS",
+ "AXIS_THH2MS",
+ "AXIS_THMS",
+ "3D_HHM" ,
+ "3D_HM",
+ "3D_THH",
+ "3D_THV",
+ "3D_THHM",
+ "3D_THM",
+ "3D_HHMD",
+ "3D_HMD",
+ "3D_THHD",
+ "3D_THVD",
+ "3D_THHMD",
+ "3D_THMD",
+ "3D_HHMS",
+ "3D_HMS",
+ "3D_THHS",
+ "3D_THVS",
+ "3D_THHMS",
+ "3D_THMS",
+ "3D_THH2MD",
+ "3D_THH2MS",
+ "3D_HH2MD",
+ "3D_HH2MS",
+ "3D_THH2S",
+ "3D_THH2D",
+
) ) ),
b_thermique =BLOC( condition = "PHENOMENE=='THERMIQUE'",
),
) ;
-#& MODIF COMMANDE DATE 23/08/2004 AUTEUR CIBHHLV L.VIVAN
+#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# ======================================================================
AIDE=PROC(nom="AIDE",op=42,
UIinfo={"groupes":("Modélisation",)},
- fr="Interrogation sur le catalogue des commandes et les concepts produits",
+ fr="Interroger et imprimer une documentation partielle sur les noms des concepts déjà définis et sur les couples"
+ +" (type d'éléments, option) disponibles dans la version.",
regles=(AU_MOINS_UN('CONCEPT','TYPE_ELEM', ),),
UNITE =SIMP(statut='f',typ='I',defaut=8),
TYPE_ELEM =FACT(fr="couple type_elem option",statut='f',
into=("TOUT_TYPE","CREER","A_CREER",) ),
),
) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# ======================================================================
# RESPONSABLE VABHHTS J.PELLET
ASSE_MAILLAGE=OPER(nom="ASSE_MAILLAGE",op= 105,sd_prod=maillage_sdaster,
- fr="Assembler deux maillages sous un seul nom",
+ fr="Assembler deux maillages pour en former un nouveau",
reentrant='n',
UIinfo={"groupes":("Maillage",)},
MAILLAGE_1 = SIMP(statut='o',typ=maillage_sdaster,),
OPTION =SIMP(statut='o',typ='TXM',into=("RIGI_GENE","MASS_GENE","AMOR_GENE") ),
),
) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
raise AsException("type de concept resultat non prevu")
ASSE_MATRICE=OPER(nom="ASSE_MATRICE",op=12,sd_prod=asse_matrice_prod,
- fr="Construction d une matrice assemblée",reentrant='n',
+ fr="Construction d'une matrice assemblée",reentrant='n',
UIinfo={"groupes":("Matrices/vecteurs",)},
MATR_ELEM =SIMP(statut='o',
typ=(matr_elem_depl_r,matr_elem_depl_c,matr_elem_temp_r,matr_elem_pres_c) ),
CHAR_CINE =SIMP(statut='f',typ=(char_cine_meca,char_cine_ther,char_cine_acou) ),
INFO =SIMP(statut='f',typ='I',into=(1,2) ),
) ;
-#& MODIF COMMANDE DATE 18/04/2005 AUTEUR NICOLAS O.NICOLAS
+#& MODIF COMMANDE DATE 21/02/2006 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
-ASSE_VECT_GENE=OPER(nom="ASSE_VECT_GENE",op= 140,sd_prod=vect_asse_gene_r,
- fr="Assemblage de vecteurs de chargement en coordonnées généralisées",
+ASSE_VECT_GENE=OPER(nom="ASSE_VECT_GENE",op= 140,sd_prod=vect_asse_gene,
+ fr="Projection des chargements sur la base modale d'une sous structure",
reentrant='n',
UIinfo={"groupes":("Matrices/vecteurs",)},
NUME_DDL_GENE =SIMP(statut='o',typ=nume_ddl_gene ),
b_nume =BLOC(condition = "METHODE == 'CLASSIQUE'",
CHAR_SOUS_STRUC =FACT(statut='o',max='**',
SOUS_STRUC =SIMP(statut='o',typ='TXM' ),
- VECT_ASSE =SIMP(statut='o',typ=cham_no_depl_r ),
+ VECT_ASSE =SIMP(statut='o',typ=cham_no_sdaster ),
),
),
) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 21/02/2006 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
# RESPONSABLE VABHHTS J.PELLET
-def asse_vecteur_prod(VECT_ELEM,**args):
- if AsType(VECT_ELEM) == vect_elem_depl_r : return cham_no_depl_r
- if AsType(VECT_ELEM) == vect_elem_temp_r : return cham_no_temp_r
- if AsType(VECT_ELEM) == vect_elem_pres_r : return cham_no_pres_r
- if AsType(VECT_ELEM) == vect_elem_pres_c : return cham_no_pres_c
- raise AsException("type de concept resultat non prevu ")
-
-ASSE_VECTEUR=OPER(nom="ASSE_VECTEUR",op=13,sd_prod=asse_vecteur_prod,
- fr="Assemblage d un second membre",reentrant='n',
+
+ASSE_VECTEUR=OPER(nom="ASSE_VECTEUR",op=13,sd_prod=cham_no_sdaster,
+ fr="Construire un champ aux noeuds par assemblage de vecteurs élémentaires",reentrant='n',
UIinfo={"groupes":("Matrices/vecteurs",)},
VECT_ELEM =SIMP(statut='o',typ=vect_elem,max='**'),
NUME_DDL =SIMP(statut='o',typ=nume_ddl_sdaster ),
INFO =SIMP(statut='f',typ='I',into=(1,2,) ),
) ;
-#& MODIF COMMANDE DATE 30/06/2004 AUTEUR MCOURTOI M.COURTOIS
+#& MODIF COMMANDE DATE 03/01/2006 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
COOR_CENTRE =SIMP(statut='f',typ='R',max=3),
),
AMOR_INTERNE =FACT(statut='o',
- ENER_POT =SIMP(statut='o',typ=tabl_ener_pot ),
+ ENER_POT =SIMP(statut='o',typ=table_sdaster ),
GROUP_MA =SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**'),
AMOR_REDUIT =SIMP(statut='o',typ='R',max='**'),
),
SEUIL =SIMP(statut='f',typ='R',defaut= 0.3 ),
),
) ;
-#& MODIF COMMANDE DATE 24/01/2005 AUTEUR DURAND C.DURAND
+#& MODIF COMMANDE DATE 16/05/2006 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
# RESPONSABLE JMBHH01 J.M.PROIX
-def calc_cham_elem_prod(OPTION,**args):
-
-
-# options thermiques
-
- if OPTION == "FLUX_ELGA_TEMP" : return cham_elem_flux_r
- if OPTION == "FLUX_ELNO_TEMP" : return cham_elem_flux_r
-
-# options acoustiques
-
- if OPTION == "PRES_ELNO_DBEL" : return cham_elem_dbel_r
- if OPTION == "PRES_ELNO_REEL" : return cham_elem_pres_r
- if OPTION == "PRES_ELNO_IMAG" : return cham_elem_pres_r
-
-# autres options
- if OPTION == "COOR_ELGA" : return cham_elem_geom_r
-
- raise AsException("type de concept resultat non prevu")
-
-CALC_CHAM_ELEM=OPER(nom="CALC_CHAM_ELEM",op=38,sd_prod=calc_cham_elem_prod,
- fr="Calcul de champs par éléments à partir de champs solution ou de champs par éléments",
+CALC_CHAM_ELEM=OPER(nom="CALC_CHAM_ELEM",op=38,sd_prod=cham_elem,
+ fr="Calculer un champ élémentaire en thermique et en accoustique à partir de champs déjà calculés",
reentrant='n',
UIinfo={"groupes":("Post traitements",)},
MODELE =SIMP(statut='o',typ=modele_sdaster),
"COOR_ELGA"), ),
b_thermique =BLOC(condition="OPTION in ('FLUX_ELNO_TEMP','FLUX_ELGA_TEMP',)",
- TEMP =SIMP(statut='o',typ=(cham_no_temp_r,)),
+ TEMP =SIMP(statut='o',typ=(cham_no_sdaster,)),
),
b_acoustique =BLOC(condition="OPTION in ('PRES_ELNO_DBEL','PRES_ELNO_REEL','PRES_ELNO_IMAG',)",
- PRES =SIMP(statut='o',typ=(cham_no_pres_c,)),
+ PRES =SIMP(statut='o',typ=(cham_no_sdaster,)),
),
COEF_MULT =SIMP(statut='f',typ='R'), ),
INST =SIMP(statut='f',typ='R',defaut= 0.E+0),
- ACCE =SIMP(statut='f',typ=cham_no_depl_r),
+ ACCE =SIMP(statut='f',typ=cham_no_sdaster),
NUME_COUCHE =SIMP(statut='f',typ='I',defaut= 1),
NIVE_COUCHE =SIMP(statut='f',typ='TXM',defaut="MOY",into=("SUP","INF","MOY") ),
MODE_FOURIER =SIMP(statut='f',typ='I',defaut= 0 ),
ANGLE =SIMP(statut='f',typ='I',defaut= 0),
) ;
-#& MODIF COMMANDE DATE 24/01/2005 AUTEUR LEBOUVIE F.LEBOUVIER
+#& MODIF COMMANDE DATE 21/02/2006 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
# RESPONSABLE VABHHTS J.PELLET
-def calc_char_cine_prod(CHAR_CINE,**args):
- if AsType(CHAR_CINE) == char_cine_meca : return cham_no_depl_r
- if AsType(CHAR_CINE) == char_cine_ther : return cham_no_temp_r
- if AsType(CHAR_CINE) == char_cine_acou : return cham_no_pres_c
- raise AsException("type de concept resultat non prevu")
-CALC_CHAR_CINE=OPER(nom="CALC_CHAR_CINE",op= 102,sd_prod=calc_char_cine_prod,
+CALC_CHAR_CINE=OPER(nom="CALC_CHAR_CINE",op= 102,sd_prod=cham_no_sdaster,
fr="Calcul des seconds membres associés à des charges cinématiques (conditions aux limites non dualisées)",
reentrant='n',
UIinfo={"groupes":("Matrices/vecteurs",)},
INST =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2 ) ),
) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 21/02/2006 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
def calc_char_seisme_prod(MATR_MASS,**args ):
- if AsType(MATR_MASS) == matr_asse_depl_r : return cham_no_depl_r
+ if AsType(MATR_MASS) == matr_asse_depl_r : return cham_no_sdaster
raise AsException("type de concept resultat non prevu")
CALC_CHAR_SEISME=OPER(nom="CALC_CHAR_SEISME",op= 92,sd_prod=calc_char_seisme_prod,
- reentrant='n',
+ reentrant='n',fr="Calcul du chargement sismique",
UIinfo={"groupes":("Matrices/vecteurs",)},
regles=(UN_PARMI('MONO_APPUI','MODE_STAT' ),),
MATR_MASS =SIMP(statut='o',typ=matr_asse_depl_r,fr="Matrice de masse" ),
),
TITRE =SIMP(statut='f',typ='TXM',max='**'),
) ;
-#& MODIF COMMANDE DATE 08/02/2005 AUTEUR CIBHHPD L.SALMONA
+#& MODIF COMMANDE DATE 10/05/2006 AUTEUR MCOURTOI M.COURTOIS
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
fr="Résultat d'une commande globale"),
regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','FREQ','NUME_MODE',
- 'NOEUD_CMP','LIST_INST','LIST_FREQ','LIST_ORDRE','NOM_CAS'),),
+ 'NOEUD_CMP','LIST_INST','LIST_FREQ','LIST_ORDRE','NOM_CAS'),
+ CONCEPT_SENSIBLE("SEPARE"),
+ DERIVABLE('RESULTAT'),),
TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
NUME_MODE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
"EPOT_ELEM_DEPL","ECIN_ELEM_DEPL","ENEL_ELGA","ENEL_ELNO_ELGA",
"ETOT_ELGA","ETOT_ELNO_ELGA","ETOT_ELEM",
# estimateurs erreur
- "SIGM_NOZ1_ELGA","ERRE_ELEM_NOZ1","SIGM_NOZ2_ELGA","ERRE_ELEM_NOZ2",
- "SIRE_ELNO_DEPL","ERRE_ELGA_NORE","ERRE_ELNO_ELGA",
+ "SIGM_NOZ1_ELGA","ERZ1_ELEM_SIGM","SIGM_NOZ2_ELGA","ERZ2_ELEM_SIGM",
+ "SIRE_ELNO_DEPL","ERRE_ELEM_SIGM","ERRE_ELNO_ELEM",
+ "QIRE_ELEM_SIGM","QIRE_ELNO_ELEM","QIZ1_ELEM_SIGM","QIZ2_ELEM_SIGM",
+ "SING_ELEM","SING_ELNO_ELEM",
# CRIT
"EQUI_ELNO_SIGM","EQUI_ELGA_SIGM","CRIT_ELNO_RUPT",
"EQUI_ELNO_EPSI","EQUI_ELGA_EPSI","EQUI_ELNO_EPME","EQUI_ELGA_EPME",
PLAN = SIMP(statut='f',typ='TXM',defaut="MAIL",into=("SUP","INF","MOY","MAIL"),
fr="Plan de calcul pour les plaques excentrées" ),
-
+ b_erre_qi =BLOC(condition = "OPTION in ('QIRE_ELEM_SIGM','QIZ1_ELEM_SIGM','QIZ2_ELEM_SIGM') or \
+ (type(OPTION)==type(()) and 'QIRE_ELEM_SIGM' in OPTION) or \
+ (type(OPTION)==type(()) and 'QIZ1_ELEM_SIGM' in OPTION) or \
+ (type(OPTION)==type(()) and 'QIZ2_ELEM_SIGM' in OPTION)",
+ RESU_DUAL=SIMP(statut='o',typ=evol_elas,fr="resultat du probleme dual"),),
+
+ b_sing =BLOC(condition= "OPTION == 'SING_ELEM' or \
+ (type(OPTION)==type(()) and 'SING_ELEM' in OPTION)",
+ PREC_ERR=SIMP(statut='o',typ='R',val_min= 0.,val_max= 1.,
+ fr="precision demandee pour calculer la carte de taille des elements"),),
+
EXCIT =FACT(statut='f',max='**',
fr="Charges contenant les températures, les efforts répartis pour les poutres...",
regles=(EXCLUS('FONC_MULT','FONC_MULT_C','COEF_MULT','COEF_MULT_C'),),
),
b_indi_erre =BLOC( condition = "TYPE_OPTION=='INDI_ERRE'",
- OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',defaut="ERRE_ELGA_NORE",
- into=("SIGM_NOZ1_ELGA","ERRE_ELEM_NOZ1","SIGM_NOZ2_ELGA","ERRE_ELEM_NOZ2",
- "SIRE_ELNO_DEPL","ERRE_ELGA_NORE","ERRE_ELNO_ELGA",
- ) ),
- EXCIT =FACT(statut='f',max='**',fr="charge contenant les temperatures",
+ OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',defaut="ERRE_ELEM_SIGM",
+ into=("SIGM_NOZ1_ELGA","ERZ1_ELEM_SIGM","SIGM_NOZ2_ELGA","ERZ2_ELEM_SIGM",
+ "SIRE_ELNO_DEPL","ERRE_ELEM_SIGM","ERRE_ELNO_ELEM",
+ "QIRE_ELEM_SIGM","QIRE_ELNO_ELEM","QIZ1_ELEM_SIGM","QIZ2_ELEM_SIGM",
+ "SING_ELEM","SING_ELNO_ELEM",
+ )),
+
+ b_erre_qi =BLOC(condition = "OPTION in ('QIRE_ELEM_SIGM','QIZ1_ELEM_SIGM','QIZ2_ELEM_SIGM') or \
+ (type(OPTION)==type(()) and 'QIRE_ELEM_SIGM' in OPTION) or \
+ (type(OPTION)==type(()) and 'QIZ1_ELEM_SIGM' in OPTION) or \
+ (type(OPTION)==type(()) and 'QIZ2_ELEM_SIGM' in OPTION)",
+ RESU_DUAL=SIMP(statut='o',typ=evol_elas,fr="resultat du probleme dual"),),
+
+ b_sing =BLOC(condition= "OPTION == 'SING_ELEM' or \
+ (type(OPTION)==type(()) and 'SING_ELEM' in OPTION)",
+ PREC_ERR=SIMP(statut='o',typ='R',val_min= 0.,val_max=1.,
+ fr="precision demandee pour calculer la de taille des elements" ),),
+
+ EXCIT =FACT(statut='f',max='**',fr="charge contenant les temperatures",
CHARGE =SIMP(statut='o',typ=(char_meca,char_ther,char_acou) ),),
),
),
"EXTR_ELGA_VARI","EXTR_ELNO_VARI",
# CRIT
"EQUI_ELNO_SIGM","EQUI_ELGA_SIGM","SIEQ_ELNO_TUYO","EPEQ_ELNO_TUYO",
- "ERRE_ELGA_NORE","ERRE_ELNO_ELGA","ERRE_ELEM_NOZ1","ERRE_ELEM_NOZ2",
+ "ERRE_ELEM_SIGM","ERRE_ELNO_ELEM","ERZ1_ELEM_SIGM","ERZ2_ELEM_SIGM",
+ "QIRE_ELEM_SIGM","QIRE_ELNO_ELEM","QIZ1_ELEM_SIGM","QIZ2_ELEM_SIGM",
"EQUI_ELNO_EPSI","EQUI_ELGA_EPSI","EQUI_ELNO_EPME","EQUI_ELGA_EPME",
"DCHA_ELNO_SIGM","DCHA_ELGA_SIGM","RADI_ELNO_SIGM","RADI_ELGA_SIGM",
- "ENDO_ELGA","ENDO_ELNO_ELGA","INDI_LOCA_ELGA",
- "ENDO_ELNO_SIGA","ENDO_ELNO_SINO",
+ "ENDO_ELGA","ENDO_ELNO_ELGA","INDI_LOCA_ELGA","SING_ELEM",
+ "SING_ELNO_ELEM","ENDO_ELNO_SIGA","ENDO_ELNO_SINO",
"PMPB_ELNO_SIEF","PMPB_ELGA_SIEF","ENEL_ELGA","ENEL_ELNO_ELGA",
"ETOT_ELGA","ETOT_ELNO_ELGA","ETOT_ELEM","VALE_NCOU_MAXI"),
),
NOM_CHAM =SIMP(statut='f',typ='TXM',fr="Nom du champ pour VALE_NCOU_MAXI"),
NOM_CMP =SIMP(statut='f',typ='TXM',fr="Nom de la composante pour VALE_NCOU_MAXI"),
PLAN = SIMP(statut='f',typ='TXM',defaut="MAIL",into=("SUP","INF","MOY","MAIL") ),
-
+
+ b_erre_qi =BLOC(condition = "OPTION in ('QIRE_ELEM_SIGM','QIZ1_ELEM_SIGM','QIZ2_ELEM_SIGM') or \
+ (type(OPTION)==type(()) and 'QIRE_ELEM_SIGM' in OPTION) or \
+ (type(OPTION)==type(()) and 'QIZ1_ELEM_SIGM' in OPTION) or \
+ (type(OPTION)==type(()) and 'QIZ2_ELEM_SIGM' in OPTION)",
+ RESU_DUAL=SIMP(statut='o',typ=(evol_elas,evol_noli),fr="resultat du probleme dual"),),
+
+ b_sing =BLOC(condition= "OPTION == 'SING_ELEM' or \
+ (type(OPTION)==type(()) and 'SING_ELEM' in OPTION)",
+ PREC_ERR=SIMP(statut='o',typ='R',val_min= 0.,val_max=1.,
+ fr="precision demandee pour calculer la carte de taille des elements" ),),
+
+
b_extr = BLOC( condition = "OPTION in ('EXTR_ELNO_VARI','EXTR_ELGA_VARI')",
NOM_VARI =SIMP(statut='o',typ='TXM',min= 1,max=1,fr="nom de la variable à extraire",
into=("DPORO","DRHOLQ","DPVP","SATLIQ","EVP","IND_ETA","D","IND_END","TEMP_MAX","GAMP","PCR",
b_indi_erre =BLOC( condition = "TYPE_OPTION=='INDI_ERRE'",
- OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',defaut="ERRE_ELGA_NORE",
- into=("ERRE_ELGA_NORE","ERRE_ELNO_ELGA","ERRE_ELEM_NOZ1","ERRE_ELEM_NOZ2",
+ OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',defaut="ERRE_ELEM_SIGM",
+ into=("ERRE_ELEM_SIGM","ERRE_ELNO_ELEM","ERZ1_ELEM_SIGM","ERZ2_ELEM_SIGM",
"DCHA_ELNO_SIGM","DCHA_ELGA_SIGM","RADI_ELNO_SIGM","RADI_ELGA_SIGM",
- ) ),
+ "QIRE_ELEM_SIGM","QIRE_ELNO_ELEM","QIZ1_ELEM_SIGM","QIZ2_ELEM_SIGM",
+ "SING_ELEM","SING_ELNO_ELEM",) ),
+
+ b_erre_qi =BLOC(condition = "OPTION in ('QIRE_ELEM_SIGM','QIZ1_ELEM_SIGM','QIZ2_ELEM_SIGM') or \
+ (type(OPTION)==type(()) and 'QIRE_ELEM_SIGM' in OPTION) or \
+ (type(OPTION)==type(()) and 'QIZ1_ELEM_SIGM' in OPTION) or \
+ (type(OPTION)==type(()) and 'QIZ2_ELEM_SIGM' in OPTION)",
+ RESU_DUAL =SIMP(statut='o',typ=(evol_elas,evol_noli),fr="resultat du probleme dual")),
+
+ b_sing =BLOC(condition= "OPTION == 'SING_ELEM' or \
+ (type(OPTION)==type(()) and 'SING_ELEM' in OPTION)",
+ PREC_ERR=SIMP(statut='o',typ='R',val_min= 0.,val_max=1.,
+ fr="precision demandee pour calculer la carte de taille des elements" ),),
+
b_indic = BLOC( condition ="OPTION in ('DCHA_ELNO_SIGM','DCHA_ELGA_SIGM','RADI_ELNO_SIGM','RADI_ELGA_SIGM') or\
(type(OPTION)==type(()) and 'DCHA_ELNO_SIGM' in OPTION) or\
(type(OPTION)==type(()) and 'DCHA_ELGA_SIGM' in OPTION) or\
OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',
into=("DEUL_ELGA_TEMP","DETE_ELNO_DLTE","FLUX_ELGA_TEMP","FLUX_ELNO_TEMP",
"HYDR_ELNO_ELGA","DURT_ELGA_META","DURT_ELNO_META",
- "SOUR_ELGA_ELEC","ERTH_ELEM_TEMP","ERTH_ELNO_ELEM",),),
+ "SOUR_ELGA_ELEC","ERRE_ELEM_TEMP","ERRE_ELNO_ELEM",),),
EXCIT =FACT(statut='f',max='**',
regles=(EXCLUS('FONC_MULT','FONC_MULT_C','COEF_MULT','COEF_MULT_C'),),
CHARGE =SIMP(statut='o',typ=char_ther ),
PUIS_PULS =SIMP(statut='f',typ='I'),
TYPE_CHARGE =SIMP(statut='f',typ='TXM',defaut="FIXE",into=("FIXE",),),),
),
-
+
SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**',
fr="Liste des paramètres de sensibilité.",
ang="List of sensitivity parameters"),
INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
TITRE =SIMP(statut='f',typ='TXM',max='**'),
) ;
-#& MODIF COMMANDE DATE 10/01/2005 AUTEUR F1BHHAJ J.ANGLES
+#& MODIF COMMANDE DATE 16/05/2006 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
def calc_fatigue_prod(TYPE_CALCUL,OPTION,**args):
- if TYPE_CALCUL == "CUMUL_DOMMAGE" : return cham_elem_dommag
- if TYPE_CALCUL == "FATIGUE_MULTI" and OPTION == "DOMA_ELGA": return cham_elem_facy_r
- if TYPE_CALCUL == "FATIGUE_MULTI" and OPTION == "DOMA_NOEUD": return cham_no_facy_r
+ if TYPE_CALCUL == "CUMUL_DOMMAGE" : return cham_elem
+ if TYPE_CALCUL == "FATIGUE_MULTI" and OPTION == "DOMA_ELGA": return cham_elem
+ if TYPE_CALCUL == "FATIGUE_MULTI" and OPTION == "DOMA_NOEUD": return cham_no_sdaster
raise AsException("type de calcul non prevu")
CALC_FATIGUE=OPER(nom="CALC_FATIGUE",op= 151,sd_prod=calc_fatigue_prod,reentrant='n',
- fr="Calcul d un cham de dommage ou d un cisaillement maximal dans le plan critique.",
+ fr="Calculer un champ de dommage de fatigue subit par une structure et déterminer le plan critique"
+ +" dans lequel le cisaillement est maximal.",
UIinfo={"groupes":("Post traitements",)},
TYPE_CALCUL = SIMP(statut='o',typ='TXM',
METHODE =SIMP(statut='o',typ='TXM',into=("CERCLE_EXACT",) ),
),
b_non_period =BLOC(condition = "TYPE_CHARGE == 'NON_PERIODIQUE'",
- CRITERE =SIMP(statut='o',typ='TXM',into=("DOMM_MAXI","DANG_VAN_MODI_AV") ),
+ CRITERE =SIMP(statut='o',typ='TXM',into=("DOMM_MAXI","DANG_VAN_MODI_AV","FATEMI_SOCIE") ),
PROJECTION =SIMP(statut='o',typ='TXM',into=("UN_AXE", "DEUX_AXES") ),
- DELTA_OSCI = SIMP(statut='f',typ='R',defaut= 0.0E+0),
+ DELTA_OSCI =SIMP(statut='f',typ='R',defaut= 0.0E+0),
),
b_fati_grmano =BLOC(condition = "(GROUP_MA != None or MAILLE != None or GROUP_NO != None or NOEUD != None)",
MAILLAGE =SIMP(statut='o',typ=maillage_sdaster ),
INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ),
) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# ======================================================================
CALC_FLUI_STRU=OPER(nom="CALC_FLUI_STRU",op= 144,sd_prod=melasflu_sdaster,
reentrant='n',
+ fr="Calculer les paramètres modaux d'une structure soumise à un écoulement",
UIinfo={"groupes":("Matrices/vecteurs",)},
- VITE_FLUI =FACT(statut='o',
+ VITE_FLUI =FACT(statut='f',
fr="Définir la plage de vitesse fluide étudiée",
- VITE_MIN =SIMP(statut='o',typ='R' ),
- VITE_MAX =SIMP(statut='o',typ='R' ),
- NB_POIN =SIMP(statut='o',typ='I' ),
+ VITE_MIN =SIMP(statut='f',typ='R' ),
+ VITE_MAX =SIMP(statut='f',typ='R' ),
+ NB_POIN =SIMP(statut='f',typ='I' ),
),
BASE_MODALE =FACT(statut='o',
- regles=(UN_PARMI('AMOR_REDUIT','AMOR_UNIF'),),
+ regles=(AU_MOINS_UN('AMOR_REDUIT','AMOR_UNIF','AMOR_REDUIT_CONN'),),
MODE_MECA =SIMP(statut='o',typ=mode_meca ),
NUME_ORDRE =SIMP(statut='f',typ='I',max='**'),
- AMOR_REDUIT =SIMP(statut='f',typ='R',max='**'),
- AMOR_UNIF =SIMP(statut='f',typ='R' ),
+ AMOR_REDUIT =SIMP(statut='f',typ='R',max='**',val_min=0.E+00),
+ AMOR_UNIF =SIMP(statut='f',typ='R',val_min=0.E+00 ),
+ AMOR_REDUIT_CONN=SIMP(statut='f',typ='R',max='**',val_min=0.E+00),
),
TYPE_FLUI_STRU =SIMP(statut='o',typ=type_flui_stru ),
IMPRESSION =FACT(statut='f',
DEFORMEE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
),
) ;
-#& MODIF COMMANDE DATE 07/03/2005 AUTEUR DURAND C.DURAND
+#& MODIF COMMANDE DATE 02/05/2006 AUTEUR MCOURTOI M.COURTOIS
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
-def calc_fonc_interp_prod(FONCTION,**args):
- if AsType(FONCTION) ==nappe_sdaster : return nappe_sdaster
- elif AsType(FONCTION)==fonction_sdaster : return fonction_sdaster
- elif AsType(FONCTION)==fonction_c : return fonction_c
- elif AsType(FONCTION)==formule : return fonction_sdaster
- elif AsType(FONCTION)==para_sensi : return para_sensi
- raise AsException("type de concept resultat non prevu")
+def calc_fonc_interp_prod(FONCTION, NOM_PARA_FONC, **args):
+ if AsType(FONCTION) == nappe_sdaster:
+ return nappe_sdaster
+ elif AsType(FONCTION) == fonction_sdaster:
+ return fonction_sdaster
+ elif AsType(FONCTION) == fonction_c:
+ return fonction_c
+ elif AsType(FONCTION) == formule:
+ if NOM_PARA_FONC != None:
+ return nappe_sdaster
+ return fonction_sdaster
+ elif AsType(FONCTION) == para_sensi:
+ return para_sensi
+ raise AsException("type de concept resultat non prevu")
CALC_FONC_INTERP=OPER(nom="CALC_FONC_INTERP",op= 134,sd_prod=calc_fonc_interp_prod,
docu="U4.32.01-e",reentrant='n',
+ fr="Définit une fonction (ou une nappe) à partir d'une fonction FORMULE à 1 ou 2 variables",
UIinfo={"groupes":("Fonction",)},
regles=(UN_PARMI('VALE_PARA','LIST_PARA'),),
FONCTION =SIMP(statut='o',typ=(formule,fonction_sdaster,nappe_sdaster,fonction_c) ),
TITRE =SIMP(statut='f',typ='TXM',max='**'),
INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2 ) ),
) ;
-#& MODIF COMMANDE DATE 24/05/2005 AUTEUR MCOURTOI M.COURTOIS
+#& MODIF COMMANDE DATE 19/09/2005 AUTEUR DURAND C.DURAND
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
if (AsType(vale) == fonction_sdaster ) : return fonction_c
if (AsType(vale) == fonction_c) : return fonction_sdaster
if (CORR_ACCE != None): return fonction_sdaster
- if (LISS_ENVELOP!= None): return AsType(LISS_ENVELOP[0]['FONCTION'])
+ if (LISS_ENVELOP!= None): return nappe_sdaster
if (PUISSANCE != None): return AsType(PUISSANCE[0]['FONCTION'])
if (ABS != None): return fonction_sdaster
raise AsException("type de concept resultat non prevu")
CALC_FONCTION=MACRO(nom="CALC_FONCTION",op=calc_fonction_ops,sd_prod=calc_fonction_prod
- ,fr="Opérations mathématiques sur des concepts de type fonction, fonction_c ou nappe",
+ ,fr="Effectue des opérations mathématiques sur des concepts de type fonction",
reentrant='n',
UIinfo={"groupes":("Fonction",)},
regles=(UN_PARMI('DERIVE','INTEGRE','SPEC_OSCI','COMB','COMB_C','ENVELOPPE',
COEF =SIMP(statut='f',typ='R',defaut= 0.E+0,fr="Valeur de la constante d intégration" ),
),
LISS_ENVELOP = FACT(statut='f',fr="Lissage d une enveloppe",
- FONCTION =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster) ),
- AMOR =SIMP(statut='f',typ='R',max='**'),
- FREQ_MIN =SIMP(statut='f',typ='R'),
- FREQ_MAX =SIMP(statut='f',typ='R'),
- FREQ_CREUX =SIMP(statut='f',typ='R',max='**'),
- ELARG =SIMP(statut='f',typ='TXM',defaut="GLOBAL",into=("GLOBAL","LOCAL") ),
- b_elarg_glob = BLOC ( condition = " (ELARG=='GLOBAL') ",
- GAUCHE =SIMP(statut='f',typ='R',defaut =10.0E0 ),
- DROITE =SIMP(statut='f',typ='R',defaut =10.0E0 ),
- ),
- b_elarg_loc = BLOC ( condition = " (ELARG=='LOCAL') ",
- FREQ_1 =SIMP(statut='o',typ='R'),
- FREQ_2 =SIMP(statut='o',typ='R' ),
- GAUCHE =SIMP(statut='f',typ='R',defaut =10.0E0 ),
- DROITE =SIMP(statut='f',typ='R',defaut =10.0E0 ),
- ),
- TOLE_LISS =SIMP(statut='f',typ='R',defaut=25.0E0),
- ECH_FREQ_REF = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
- b_oui =BLOC ( condition = "(ECH_FREQ_REF=='OUI') ",
- regles=(UN_PARMI("LIST_FREQ", "AMOR_ECH"),),
- LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster ),
- AMOR_ECH =SIMP(statut='f',typ='R',max='**'),
- ),
+ NAPPE =SIMP(statut='o',typ=nappe_sdaster ),
+ FREQ_MIN =SIMP(statut='f',typ='R',defaut =0.2),
+ FREQ_MAX =SIMP(statut='f',typ='R',defaut =35.5),
+ ELARG =SIMP(statut='f',typ='R',defaut =0.1 ),
+ TOLE_LISS =SIMP(statut='f',typ='R',defaut =0.25 ),
),
SPEC_OSCI =FACT(statut='f',fr="Spectre d'oscillateur",
METHODE =SIMP(statut='f',typ='TXM',defaut="NIGAM",into=("NIGAM",) ),
PROL_GAUCHE_FONC=SIMP(statut='f',typ='TXM',into=("CONSTANT","LINEAIRE","EXCLU") ),
INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
)
-#& MODIF COMMANDE DATE 22/02/2005 AUTEUR DURAND C.DURAND
+#& MODIF COMMANDE DATE 21/02/2006 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
-CALC_FORC_AJOU=OPER(nom="CALC_FORC_AJOU",op=199,sd_prod=vect_asse_gene_r,
- fr="calcul de la force ajoutee ",
+CALC_FORC_AJOU=OPER(nom="CALC_FORC_AJOU",op=199,sd_prod=vect_asse_gene,
+ fr="Calculer l'effet de surpression hydrodynamique due au mouvement d'entrainement de la structure"
+ +" en analyse sismique",
reentrant ='n',
UIinfo={"groupes":("Matrices/vecteurs",)},
),
) ;
-#& MODIF COMMANDE DATE 11/10/2004 AUTEUR LEBOUVIE F.LEBOUVIER
+#& MODIF COMMANDE DATE 29/05/2006 AUTEUR GALENNE E.GALENNE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-CALC_G_LOCAL_T=OPER(nom="CALC_G_LOCAL_T",op=77,sd_prod=tabl_calc_g_loca,
- fr="Calcul du taux de restitution local d énergie",reentrant='n',
- UIinfo={"groupes":("Post traitements",)},
- MODELE =SIMP(statut='f',typ=modele_sdaster),
- CHAM_MATER =SIMP(statut='f',typ=cham_mater),
- regles=(UN_PARMI('RESULTAT','DEPL'),
- PRESENT_PRESENT('VITE','ACCE'),
- UN_PARMI('R_INF','R_INF_FO'),
- PRESENT_PRESENT('R_INF','R_SUP'),
- PRESENT_PRESENT('R_INF_FO','R_SUP_FO'), ),
- FOND_FISS =SIMP(statut='f',typ=fond_fiss),
- DEPL =SIMP(statut='f',typ=cham_no_depl_r),
- VITE =SIMP(statut='f',typ=cham_no_depl_r),
- ACCE =SIMP(statut='f',typ=cham_no_depl_r),
- RESULTAT =SIMP(statut='f',typ=(evol_elas,evol_noli,dyna_trans),),
- b_extrac =BLOC(condition="RESULTAT != None",fr="extraction d un champ",
- regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','INST','LIST_INST'),),
- TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
- LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster),
- INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
- LIST_INST =SIMP(statut='f',typ=listr8_sdaster),
-
- b_acce_reel =BLOC(condition="(INST != None)or(LIST_INST != None)",
- PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-6),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
- ),
- ),
- EXCIT =FACT(statut='f',max='**',
- CHARGE =SIMP(statut='o',typ=(char_meca,char_cine_meca)),
- FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- TYPE_CHARGE =SIMP(statut='f',typ='TXM',defaut="FIXE",into=("FIXE",) ),
- ),
- SYME_CHAR =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SYME","ANTI","SANS") ),
-
- COMP_ELAS =FACT(statut='f',
- RELATION =SIMP(statut='f',typ='TXM',defaut="ELAS",
- into=("ELAS","ELAS_VMIS_LINE","ELAS_VMIS_TRAC") ),
- ELAS =SIMP(statut='f',typ='I',defaut=1,into=(1,) ),
- ELAS_VMIS_LINE =SIMP(statut='f',typ='I',defaut=1,into=(1,) ),
- ELAS_VMIS_TRAC =SIMP(statut='f',typ='I',defaut=1,into=(1,) ),
- DEFORMATION =SIMP(statut='f',typ='TXM',defaut="PETIT",into=("PETIT","GREEN") ),
- regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**'),
- ),
-
- COMP_INCR =FACT(statut='f',
- RELATION =SIMP(statut='f',typ='TXM',defaut="ELAS",
- into=("ELAS","VMIS_ISOT_TRAC","VMIS_ISOT_LINE","VMIS_CINE_LINE") ),
- ELAS =SIMP(statut='f',typ='I',defaut=1,into=(1,) ),
- VMIS_ISOT_TRAC =SIMP(statut='f',typ='I',defaut=2,into=(2,) ),
- VMIS_ISOT_LINE =SIMP(statut='f',typ='I',defaut=2,into=(2,) ),
- DEFORMATION =SIMP(statut='f',typ='TXM',defaut="PETIT",into=("PETIT","PETIT_REAC") ),
- regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**'),
- ),
-
- ETAT_INIT =FACT(statut='f',
- SIGM =SIMP(statut='f',typ=cham_elem_sief_r),
- DEPL =SIMP(statut='f',typ=cham_no_depl_r),
- ),
-
- OPTION =SIMP(statut='f',typ='TXM',defaut="CALC_G",
- into=("CALC_G","CALC_K_G","CALC_G_LGLO","G_BILINEAIRE","CALC_G_MAX") ),
- b_g =BLOC(condition="OPTION=='CALC_G'",
- LISSAGE_THETA =SIMP(statut='f',typ='TXM',defaut="LEGENDRE",into=("LEGENDRE","LAGRANGE") ),
- LISSAGE_G =SIMP(statut='f',typ='TXM',defaut="LEGENDRE",into=("LEGENDRE","LAGRANGE","LAGRANGE_NO_NO",) ),
- ),
- b_g_lglo =BLOC(condition="OPTION=='CALC_G_LGLO'",
- PROPAGATION =SIMP(statut='o',typ='R'),
- THETA =SIMP(statut='o',typ=theta_geom),
- DIRE_THETA =SIMP(statut='f',typ=cham_no_depl_r),
- LISSAGE_THETA =SIMP(statut='f',typ='TXM',defaut="LEGENDRE",into=("LEGENDRE","LAGRANGE") ),
- LISSAGE_G =SIMP(statut='f',typ='TXM',defaut="LEGENDRE",into=("LEGENDRE","LAGRANGE","LAGRANGE_NO_NO",) ),
- ),
- b_g_bilin =BLOC(condition="OPTION=='G_BILINEAIRE'",
- LISSAGE_THETA =SIMP(statut='f',typ='TXM',defaut="LEGENDRE",into=("LEGENDRE","LAGRANGE") ),
- LISSAGE_G =SIMP(statut='f',typ='TXM',defaut="LEGENDRE",into=("LEGENDRE","LAGRANGE") ),
- ),
- b_k_g =BLOC(condition="OPTION=='CALC_K_G'",
- LISSAGE_THETA =SIMP(statut='f',typ='TXM',defaut="LEGENDRE",into=("LEGENDRE","LAGRANGE") ),
- LISSAGE_G =SIMP(statut='f',typ='TXM',defaut="LEGENDRE",into=("LEGENDRE","LAGRANGE") ),
- FISSURE =SIMP(statut='o',typ=fiss_xfem,max=1),
- ),
- b_calc_g_max =BLOC(condition="OPTION=='CALC_G_MAX'",
- BORNES =FACT(statut='o',max='**',
- NUME_ORDRE =SIMP(statut='o',typ='I'),
- VALE_MIN =SIMP(statut='o',typ='R'),
- VALE_MAX =SIMP(statut='o',typ='R'),
- ),
- LISSAGE_THETA =SIMP(statut='f',typ='TXM',defaut="LEGENDRE",into=("LEGENDRE","LAGRANGE") ),
- LISSAGE_G =SIMP(statut='f',typ='TXM',defaut="LEGENDRE",into=("LEGENDRE","LAGRANGE") ),
- ),
-
- DEGRE =SIMP(statut='f',typ='I',defaut=5,into=(0,1,2,3,4,5,6,7) ),
-
- R_INF =SIMP(statut='f',typ='R'),
- R_SUP =SIMP(statut='f',typ='R'),
- R_INF_FO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- R_SUP_FO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
-
- TITRE =SIMP(statut='f',typ='TXM',max='**'),
- INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
-) ;
-#& MODIF COMMANDE DATE 11/10/2004 AUTEUR LEBOUVIE F.LEBOUVIER
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# COPYRIGHT (C) 1991 - 2006 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
-CALC_G_THETA_T=OPER(nom="CALC_G_THETA_T",op=53,sd_prod=tabl_calc_g_th,
- fr="Calcul du taux de restitution d énergie par la méthode theta en thermo-élasticité en 2D ou en 3D",
+CALC_G=OPER(nom="CALC_G",op=100,sd_prod=table_sdaster,
+ fr="Calcul du taux de restitution d'énergie par la méthode theta en thermo-élasticité"
+ +" et les facteurs d'intensité de contraintes.",
reentrant='f',
UIinfo={"groupes":("Post traitements",)},
regles=(UN_PARMI('RESULTAT','DEPL'),
PRESENT_PRESENT('VITE','ACCE'),
- EXCLUS('COMP_ELAS','COMP_INCR'),),
+ EXCLUS('COMP_ELAS','COMP_INCR'),
+ CONCEPT_SENSIBLE("ENSEMBLE"),
+ REUSE_SENSIBLE(),
+ DERIVABLE('RESULTAT'),),
MODELE =SIMP(statut='f',typ=modele_sdaster),
CHAM_MATER =SIMP(statut='f',typ=cham_mater),
- THETA =SIMP(statut='o',typ=(theta_geom,cham_no_depl_r),),
- DEPL =SIMP(statut='f',typ=cham_no_depl_r),
- VITE =SIMP(statut='f',typ=cham_no_depl_r),
- ACCE =SIMP(statut='f',typ=cham_no_depl_r),
- RESULTAT =SIMP(statut='f',typ=(evol_elas,evol_noli,dyna_trans),),
+
+ THETA =FACT(statut='o',
+ THETA =SIMP(statut='f',typ=(theta_geom,cham_no_sdaster),),
+ FOND_FISS =SIMP(statut='f',typ=fond_fiss,max=1),
+ FISSURE =SIMP(statut='f',typ=fiss_xfem,max=1),
+ regles=(EXCLUS('FOND_FISS','FISSURE'),),
+ b_theta =BLOC(condition="THETA == None",fr="calcul de theta",
+ regles=(UN_PARMI('R_INF','R_INF_FO'),
+ EXCLUS('MODULE','MODULE_FO'),
+ PRESENT_PRESENT('R_INF','R_SUP'),
+ PRESENT_PRESENT('R_INF_FO','R_SUP_FO'), ),
+ R_INF =SIMP(statut='f',typ='R'),
+ R_SUP =SIMP(statut='f',typ='R'),
+ MODULE =SIMP(statut='f',typ='R'),
+ DIRE_THETA =SIMP(statut='f',typ=cham_no_sdaster ),
+ DIRECTION =SIMP(statut='f',typ='R',max='**'),
+ R_INF_FO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ R_SUP_FO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ MODULE_FO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ ),
+ ),
+
+ DEPL =SIMP(statut='f',typ=cham_no_sdaster),
+ VITE =SIMP(statut='f',typ=cham_no_sdaster),
+ ACCE =SIMP(statut='f',typ=cham_no_sdaster),
+ RESULTAT =SIMP(statut='f',typ=(evol_elas,evol_noli,dyna_trans,mode_meca),),
b_extrac =BLOC(condition="RESULTAT != None",fr="extraction d un champ",
- regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','INST','LIST_INST'),),
+ regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','INST','LIST_INST',
+ 'TOUT_MODE','NUME_MODE','LIST_MODE','FREQ','LIST_FREQ',),),
TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster),
INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
LIST_INST =SIMP(statut='f',typ=listr8_sdaster),
-
- b_acce_reel =BLOC(condition="(INST != None)or(LIST_INST != None)",
+ TOUT_MODE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ NUME_MODE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
+ LIST_MODE =SIMP(statut='f',typ=listis_sdaster),
+ LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster),
+ FREQ =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
+
+ b_acce_reel =BLOC(condition="(INST != None)or(LIST_INST != None)or(FREQ != None)or(LIST_FREQ != None)",
PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-6),
CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
),
- ),
+ ),
EXCIT =FACT(statut='f',max='**',
CHARGE =SIMP(statut='o',typ=(char_meca,char_cine_meca)),
FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
MAILLE =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**'),
),
ETAT_INIT =FACT(statut='f',
- SIGM =SIMP(statut='f',typ=cham_elem_sief_r),
- DEPL =SIMP(statut='f',typ=cham_no_depl_r),
+ SIGM =SIMP(statut='f',typ=cham_elem),
+ DEPL =SIMP(statut='f',typ=cham_no_sdaster),
+ ),
+
+ LISSAGE =FACT(statut='d',
+ DEGRE =SIMP(statut='f',typ='I',defaut=5,into=(0,1,2,3,4,5,6,7) ),
+ LISSAGE_THETA =SIMP(statut='f',typ='TXM',defaut="LEGENDRE",into=("LEGENDRE","LAGRANGE"),),
+ LISSAGE_G =SIMP(statut='f',typ='TXM',defaut="LEGENDRE",into=("LEGENDRE","LAGRANGE","LAGRANGE_NO_NO"),),
),
- OPTION =SIMP(statut='f',typ='TXM',defaut="CALC_G",
- into=("CALC_G","CALC_G_LAGR","CALC_K_G","G_BILINEAIRE","CALC_G_MAX",) ),
- b_calc_g_max =BLOC(condition="OPTION=='CALC_G_MAX'",
+
+ OPTION =SIMP(statut='o',typ='TXM',max=1,defaut='CALC_G',
+ into=("CALC_G","CALC_G_GLOB","CALC_K_G","K_G_MODA","G_MAX","G_MAX_GLOB","G_BILI",
+ "G_BILI_GLOB","G_LAGR","G_LAGR_GLOB"),),
+
+ b_g_max =BLOC(condition="(OPTION=='G_MAX') or (OPTION=='G_MAX_GLOB')",
BORNES =FACT(statut='o',max='**',
NUME_ORDRE =SIMP(statut='o',typ='I'),
VALE_MIN =SIMP(statut='o',typ='R'),
VALE_MAX =SIMP(statut='o',typ='R'),
),
),
- b_calc_k_g =BLOC(condition="OPTION=='CALC_K_G'",
- FOND_FISS =SIMP(statut='o',typ=fond_fiss),
- ),
- b_calc_g_lagr =BLOC(condition="OPTION=='CALC_G_LAGR'",
- PROPAGATION =SIMP(statut='o',typ='R'),
- ),
-
+ PROPAGATION =SIMP(statut='f',typ='R'),
+ THETA_LAGR =SIMP(statut='f',typ=theta_geom),
+ DIRE_THETA_LAGR =SIMP(statut='f',typ=cham_no_sdaster),
SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**',
fr="Liste des paramètres de sensibilité.",
ang="List of sensitivity parameters"),
TITRE =SIMP(statut='f',typ='TXM',max='**'),
INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
-) ;
-#& MODIF COMMANDE DATE 30/06/2004 AUTEUR MCOURTOI M.COURTOIS
+);
+#& MODIF COMMANDE DATE 03/01/2006 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
-CALC_INTE_SPEC=OPER(nom="CALC_INTE_SPEC",op= 120,sd_prod=tabl_intsp,
- fr="Calcul d une matrice interspectrale d une fonction du temps",
+CALC_INTE_SPEC=OPER(nom="CALC_INTE_SPEC",op= 120,sd_prod=table_sdaster,
+ fr="Calcul d'une matrice interspectrale à partir d'une fonction du temps",
reentrant='n',
UIinfo={"groupes":("Fonction",)},
INST_INIT =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
TITRE =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'),
INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 21/02/2006 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
CALC_MATR_AJOU=OPER(nom="CALC_MATR_AJOU",op= 152,sd_prod=matr_asse_gene_r,
- fr="Calcul des matrices de masse, d amortissement ou de raideur ajoutées",
+ fr="Calcul des matrices de masse, d'amortissement ou de rigidité ajoutés",
reentrant='n',
UIinfo={"groupes":("Matrices/vecteurs",)},
regles=(EXCLUS('MODE_MECA','CHAM_NO','MODELE_GENE'),
CHAM_MATER =SIMP(statut='o',typ=cham_mater ),
CHARGE =SIMP(statut='o',typ=char_ther ),
MODE_MECA =SIMP(statut='f',typ=mode_meca ),
- CHAM_NO =SIMP(statut='f',typ=cham_no_depl_r ),
+ CHAM_NO =SIMP(statut='f',typ=cham_no_sdaster ),
MODELE_GENE =SIMP(statut='f',typ=modele_gene ),
NUME_DDL_GENE =SIMP(statut='f',typ=nume_ddl_gene ),
DIST_REFE =SIMP(statut='f',typ='R',defaut= 1.E-2 ),
),
),
) ;
-#& MODIF COMMANDE DATE 28/01/2005 AUTEUR VABHHTS J.PELLET
+#& MODIF COMMANDE DATE 16/05/2006 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
if OPTION == "AMOR_MECA" : return matr_elem_depl_r
if OPTION == "IMPE_MECA" : return matr_elem_depl_r
if OPTION == "ONDE_FLUI" : return matr_elem_depl_r
+ if OPTION == "AMOR_MECA_ABSO" : return matr_elem_depl_r
if OPTION == "RIGI_MECA_HYST" : return matr_elem_depl_c
if OPTION == "RIGI_THER" : return matr_elem_temp_r
if OPTION == "MASS_THER" : return matr_elem_temp_r
OPTION =SIMP(statut='o',typ='TXM',
into=("RIGI_MECA","MASS_MECA","RIGI_GEOM",
"AMOR_MECA","RIGI_THER","MASS_THER","IMPE_MECA",
- "ONDE_FLUI","MASS_FLUI_STRU","RIGI_FLUI_STRU",
+ "ONDE_FLUI","AMOR_MECA_ABSO","MASS_FLUI_STRU","RIGI_FLUI_STRU",
"RIGI_ROTA","MASS_MECA_DIAG","RIGI_ACOU",
"MASS_ID_MDEP_R","MASS_ID_MDNS_R","MASS_ID_MTEM_R","MASS_ID_MTNS_R",
"MASS_ACOU","AMOR_ACOU","RIGI_MECA_HYST",
b_rigi_geom =BLOC(condition = "OPTION=='RIGI_GEOM'",
MODELE =SIMP(statut='o',typ=modele_sdaster ),
CARA_ELEM =SIMP(statut='f',typ=cara_elem ),
- SIEF_ELGA =SIMP(statut='o',typ=cham_elem_sief_r ),
+ SIEF_ELGA =SIMP(statut='o',typ=cham_elem ),
MODE_FOURIER =SIMP(statut='f',typ='I',defaut= 0 ),
),
MASS_MECA =SIMP(statut='f',typ=matr_elem_depl_r ),
CHARGE =SIMP(statut='f',typ=char_meca,validators=NoRepeat(),max='**'),
),
-
+
+ b_amor_meca_abso =BLOC(condition = "OPTION=='AMOR_MECA_ABSO'",
+ regles=(AU_MOINS_UN('CARA_ELEM','RIGI_MECA'),
+ ENSEMBLE('RIGI_MECA','MASS_MECA','CHAM_MATER'), ),
+ MODELE =SIMP(statut='o',typ=modele_sdaster ),
+ CARA_ELEM =SIMP(statut='f',typ=cara_elem ),
+ CHAM_MATER =SIMP(statut='o',typ=cham_mater ),
+ RIGI_MECA =SIMP(statut='f',typ=matr_elem_depl_r ),
+ MASS_MECA =SIMP(statut='f',typ=matr_elem_depl_r ),
+ CHARGE =SIMP(statut='f',typ=char_meca,validators=NoRepeat(),max='**'),
+ ),
+
b_rigi_meca_hyst =BLOC( condition = "OPTION=='RIGI_MECA_HYST'",
MODELE =SIMP(statut='o',typ=modele_sdaster ),
CHARGE =SIMP(statut='f',typ=char_meca ,validators=NoRepeat(),max='**' ),
CHARGE =SIMP(statut='o',typ=char_meca,validators=NoRepeat(),max='**' ),
),
) ;
-#& MODIF COMMANDE DATE 04/04/2005 AUTEUR CIBHHPD L.SALMONA
+#& MODIF COMMANDE DATE 21/02/2006 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# ======================================================================
CALC_META=OPER(nom="CALC_META",op=194,sd_prod=evol_ther,reentrant='o',
UIinfo={"groupes":("Post traitements",)},
- fr="Calcule la métallurgie a partir du résultat du calcul thermique",
+ fr="Calcule l'évolution métallurgique à partir du résultat d'un calcul thermique",
MODELE =SIMP(statut='o',typ=modele_sdaster ),
CHAM_MATER =SIMP(statut='o',typ=cham_mater ),
RESULTAT =SIMP(statut='o',typ=evol_ther ),
ETAT_INIT =FACT(statut='o',
- regles=(UN_PARMI('NUME_INIT', 'INST_INIT', 'META_INIT_ELNO',),),
- EVOL_THER =SIMP(statut='f',typ=evol_ther ),
- NUME_INIT =SIMP(statut='f',typ='I' ),
- INST_INIT =SIMP(statut='f',typ='R'),
- b_inst =BLOC(condition="(INST_INIT != None)",
- PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
- ),
- META_INIT_ELNO =SIMP(statut='f',typ=carte_var2_r ),
+ regles=(UN_PARMI('EVOL_THER', 'META_INIT_ELNO'),),
+ EVOL_THER =SIMP(statut='f',typ=evol_ther ),
+ META_INIT_ELNO =SIMP(statut='f',typ=carte_sdaster ),
+ b_etat =BLOC(condition="EVOL_THER != None",
+ regles=(UN_PARMI('NUME_INIT', 'INST_INIT',),),
+ NUME_INIT =SIMP(statut='f',typ='I'),
+ INST_INIT =SIMP(statut='f',typ='R'),
+ b_inst =BLOC(condition="INST_INIT != None",
+ PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3),
+ CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") )
+ ),
+ ),
),
COMP_INCR =FACT(statut='o',max='**',
RELATION =SIMP(statut='o',typ='TXM',into=("ACIER","ZIRC",) ),
OPTION =SIMP(statut='f',typ='TXM'
,into=("META_ELNO_TEMP",) ),
) ;
-#& MODIF COMMANDE DATE 08/02/2005 AUTEUR CIBHHPD L.SALMONA
+#& MODIF COMMANDE DATE 10/05/2006 AUTEUR MCOURTOI M.COURTOIS
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
raise AsException("type de concept resultat non prevu")
CALC_NO=OPER(nom="CALC_NO",op= 106,sd_prod=calc_no_prod,reentrant='o',
+ fr="Enrichir une SD Résultat par des champs aux noeuds calculés à partir de champs aux éléments évalués aux noeuds",
UIinfo={"groupes":("Post traitements",)},
RESULTAT =SIMP(statut='o',typ=(evol_elas,dyna_trans,dyna_harmo,acou_harmo,mode_meca,
mode_acou,mode_stat,mode_stat_depl,mode_stat_acce,
ang="List of sensitivity parameters"),
regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','FREQ','NUME_MODE',
- 'NOEUD_CMP','LIST_INST','LIST_FREQ','LIST_ORDRE','NOM_CAS'),),
+ 'NOEUD_CMP','LIST_INST','LIST_FREQ','LIST_ORDRE','NOM_CAS'),
+ CONCEPT_SENSIBLE("SEPARE"),
+ DERIVABLE('RESULTAT'),),
TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
NUME_MODE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
"EPSI_NOEU_DEPL",
"EPSP_NOEU" ,"EPSP_NOEU_ZAC",
"EQUI_NOEU_EPME","EQUI_NOEU_EPSI","EQUI_NOEU_SIGM",
- "ERRE_NOEU_ELGA",
+ "ERRE_NOEU_ELEM","QIRE_NOEU_ELEM",
"FLUX_NOEU_TEMP",
"HYDR_NOEU_ELGA",
"INTE_NOEU_ACTI","INTE_NOEU_REAC",
GROUP_NO_RESU =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
NOEUD_RESU =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**'),
) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 16/05/2006 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2003 EDF R&D WWW.CODE-ASTER.ORG
# ===========================================================================
CALC_PRECONT=MACRO(nom="CALC_PRECONT",op=calc_precont_ops,sd_prod=evol_noli,
- fr="imposer la tension definie par le BPEL dans les cables",
- reentrant='f',
+ fr="Imposer la tension définie par le BPEL dans les cables",
+ reentrant='f',UIinfo={"groupe":("Modélisation",)},
reuse =SIMP(statut='f',typ='evol_noli'),
MODELE =SIMP(statut='o',typ=modele_sdaster),
CHAM_MATER =SIMP(statut='o',typ=cham_mater),
ITER_GLOB_MAXI =SIMP(statut='f',typ='I',defaut=10),
ITER_GLOB_ELAS =SIMP(statut='f',typ='I',defaut=25),
ARRET =SIMP(statut='f',typ='TXM',defaut="OUI"),
- RESI_INTE_RELA =SIMP(statut='f',typ='R'
- ,defaut= 1.0E-6),
- ITER_INTE_MAXI =SIMP(statut='f',typ='I',defaut= 10 ),
- ITER_INTE_PAS =SIMP(statut='f',typ='I',defaut= 0 ),
- RESO_INTE =SIMP(statut='f',typ='TXM',defaut="IMPLICITE",
- into=("RUNGE_KUTTA_2","RUNGE_KUTTA_4","IMPLICITE")),
),
ETAT_INIT =FACT(statut='f',
regles=(AU_MOINS_UN('EVOL_NOLI','DEPL','SIGM','VARI','VARI_NON_LOCAL',),
EXCLUS('EVOL_NOLI','VARI',),
EXCLUS('EVOL_NOLI','VARI_NON_LOCAL',),
EXCLUS('NUME_ORDRE','INST'), ),
- DEPL =SIMP(statut='f',typ=cham_no_depl_r),
- SIGM =SIMP(statut='f',typ=(cham_elem_sief_r,carte_sief_r)),
- VARI =SIMP(statut='f',typ=cham_elem_vari_r),
- VARI_NON_LOCAL =SIMP(statut='f',typ=cham_no_vanl_r),
+ DEPL =SIMP(statut='f',typ=cham_no_sdaster),
+ SIGM =SIMP(statut='f',typ=(carte_sdaster,cham_elem)),
+ VARI =SIMP(statut='f',typ=cham_elem),
+ VARI_NON_LOCAL =SIMP(statut='f',typ=cham_no_sdaster),
EVOL_NOLI =SIMP(statut='f',typ=evol_noli),
NUME_ORDRE =SIMP(statut='f',typ='I'),
INST =SIMP(statut='f',typ='R'),
COMP_INCR =C_COMP_INCR(),
) ;
-#& MODIF COMMANDE DATE 23/08/2004 AUTEUR CIBHHLV L.VIVAN
+#& MODIF COMMANDE DATE 10/05/2006 AUTEUR MCOURTOI M.COURTOIS
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2005 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# -*- coding: iso-8859-1 -*-
+
+# RESPONSABLE MCOURTOI M.COURTOIS
+
+def calc_table_prod(self, TABLE, **kargs):
+ """Typage du concept produit.
+ """
+ typ_table = AsType(TABLE)
+ if issubclass(typ_table, table_sdaster):
+ return typ_table
+ raise AsException("type de concept resultat non prevu")
+
+from Macro.calc_table_ops import calc_table_ops
+
+CALC_TABLE=MACRO(nom="CALC_TABLE",op=calc_table_ops, sd_prod=calc_table_prod,
+ fr="Opérations sur une table",
+ reentrant='f',
+ regles=(DERIVABLE('TABLE'),),
+ TABLE = SIMP(statut='o',typ=table_sdaster),
+ ACTION = FACT(statut='o', max='**',
+ fr = "Suite des opérations à effectuer sur la table",
+ OPERATION = SIMP(statut='o', typ='TXM',
+ into=('FILTRE', 'EXTR', 'RENOMME', 'TRI', 'COMB', 'OPER',)),
+
+ b_filtre = BLOC(condition="OPERATION == 'FILTRE'",
+ fr="Sélectionne les lignes de la table vérifiant un critère",
+ NOM_PARA = SIMP(statut='o',typ='TXM'),
+ CRIT_COMP = SIMP(statut='f',typ='TXM',defaut="EQ",
+ into=('EQ','NE','GT','LT','GE','LE','REGEXP',
+ 'VIDE','NON_VIDE','MAXI','ABS_MAXI','MINI','ABS_MINI'),),
+ b_vale = BLOC(condition = "(CRIT_COMP in ('EQ','NE','GT','LT','GE','LE'))",
+ regles=(UN_PARMI('VALE','VALE_I','VALE_K','VALE_C',),),
+ VALE = SIMP(statut='f',typ='R'),
+ VALE_I = SIMP(statut='f',typ='I'),
+ VALE_C = SIMP(statut='f',typ='C'),
+ VALE_K = SIMP(statut='f',typ='TXM'),
+ ),
+ b_regexp = BLOC(condition = "CRIT_COMP == 'REGEXP'",
+ VALE_K = SIMP(statut='f',typ='TXM'),
+ ),
+ b_crit = BLOC(condition = "CRIT_COMP in ('EQ','NE')",
+ CRITERE = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
+ PRECISION = SIMP(statut='f',typ='R',defaut= 1.0E-3 ),
+ ),
+ ),
+
+ b_extr = BLOC(condition="OPERATION == 'EXTR'",
+ fr="Extrait une ou plusieurs colonnes de la table",
+ NOM_PARA = SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',
+ fr="Noms des colonnes à extraire"),
+ ),
+
+ b_renomme = BLOC(condition="OPERATION == 'RENOMME'",
+ fr="Renomme un ou plusieurs paramètres de la table",
+ NOM_PARA = SIMP(statut='o', typ='TXM', validators=NoRepeat(), min=2, max=2,
+ fr="Couple (ancien nom du paramètre, nouveau nom du paramètre)",),
+ ),
+
+ b_tri = BLOC(condition="OPERATION == 'TRI'",
+ fr="Ordonne les lignes de la table selon les valeurs d'un ou plusieurs paramètres",
+ NOM_PARA = SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**'),
+ ORDRE = SIMP(statut='f',typ='TXM',defaut="CROISSANT",
+ into=("CROISSANT","DECROISSANT") ),
+ ),
+
+ b_comb = BLOC(condition="OPERATION == 'COMB'",
+ fr="Combine deux tables ayant éventuellement des paramètres communs",
+ TABLE = SIMP(statut='o',typ=table_sdaster,
+ fr="Table dont les colonnes vont venir surcharger la table initiale"),
+ NOM_PARA = SIMP(statut='f',typ='TXM',max='**',
+ fr="Noms des paramètres dont les valeurs doivent etre identiques dans les deux tables "\
+ "pour que les colonnes soient combinées"),
+ ),
+
+ b_oper = BLOC(condition="OPERATION == 'OPER'",
+ fr="Applique une formule dans laquelle les variables sont les paramètres de la table",
+ FORMULE = SIMP(statut='o',typ=formule,
+ fr="Formule à appliquer aux colonnes de la table"),
+ NOM_PARA = SIMP(statut='o',typ='TXM',
+ fr="Nom de la nouvelle colonne"),
+ ),
+ ),
+
+ SENSIBILITE = SIMP(statut='f',typ=(para_sensi,theta_geom),max=1,
+ fr="Paramètre de sensibilité",
+ ang="Sensitivity parameter"),
+ TITRE = SIMP(statut='f',typ='TXM',max='**',
+ fr="Titre de la table produite"),
+ INFO = SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
+)
+#& MODIF COMMANDE DATE 21/02/2006 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# ======================================================================
CALC_THETA=OPER(nom="CALC_THETA",op=54,sd_prod=theta_geom,reentrant='n',
UIinfo={"groupes":("Post traitements",)},
- fr="Affectation d un champ sur le maillage (mécanique de la rupture)",
+ fr="Définir un champ theta pour le calcul du taux de restitution d'énergie"
+ +" ou des facteurs d'intensité de contraintes",
regles=(UN_PARMI('THETA_2D','THETA_3D','THETA_BANDE'),
PRESENT_ABSENT('THETA_2D','DIRE_THETA'),
EXCLUS('DIRECTION','DIRE_THETA'),),
),
b_theta_3d =BLOC(condition="THETA_3D != None",
FOND_FISS =SIMP(statut='f',typ=fond_fiss),),
- DIRE_THETA =SIMP(statut='f',typ=(cham_no_depl_r) ),
+ DIRE_THETA =SIMP(statut='f',typ=cham_no_sdaster ),
DIRECTION =SIMP(statut='f',typ='R',max='**'),
THETA_2D =FACT(statut='f',max='**',
regles=(UN_PARMI('GROUP_NO','NOEUD'),),
FORMAT =SIMP(statut='f',typ='TXM',defaut="EXCEL",into=("EXCEL","AGRAF") ),
),
) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 16/05/2006 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
),
b_forc_noda =BLOC(condition = "OPTION=='FORC_NODA'",
- SIEF_ELGA =SIMP(statut='o',typ=cham_elem_sief_r),
+ SIEF_ELGA =SIMP(statut='o',typ=cham_elem),
CARA_ELEM =SIMP(statut='f',typ=cara_elem),
MODELE =SIMP(statut='f',typ=modele_sdaster),
),
INST =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
),
) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 16/05/2006 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
# RESPONSABLE G8BHHXD X.DESROCHES
-def comb_cham_elem_prod(COMB_R=None,COMB_C=None,COMB_FOURIER=None,**args):
- if COMB_R != None:
- vale=COMB_R[0]['CHAM_ELEM']
- elif COMB_C != None:
- vale=COMB_C[0]['CHAM_ELEM']
- elif COMB_FOURIER != None:
- vale=COMB_FOURIER[0]['CHAM_ELEM']
- else :
- raise AsException("type de concept resultat non prevu")
-
- if AsType(vale) == cham_elem_sief_r : return cham_elem_sief_r
- if AsType(vale) == cham_elem_flux_r : return cham_elem_flux_r
- if AsType(vale) == cham_elem_epsi_r : return cham_elem_epsi_r
- if AsType(vale) == cham_elem_ener_r : return cham_elem_ener_r
- if AsType(vale) == cham_elem_crit_r : return cham_elem_crit_r
- if AsType(vale) == cham_elem_dbel_r : return cham_elem_dbel_r
- if AsType(vale) == cham_elem_pres_r : return cham_elem_pres_r
- if AsType(vale) == cham_elem_sief_c : return cham_elem_sief_c
- raise AsException("type de concept resultat non prevu")
-
-COMB_CHAM_ELEM=OPER(nom="COMB_CHAM_ELEM",op= 139,sd_prod=comb_cham_elem_prod,reentrant='f',
- fr="Combinaison linéaire de champs par éléments",
+COMB_CHAM_ELEM=OPER(nom="COMB_CHAM_ELEM",op= 139,sd_prod=cham_elem,reentrant='f',
+ fr="Effectuer la combinaison linéaire de champs par éléments",
UIinfo={"groupes":("Résultats et champs",)},
regles=(UN_PARMI('COMB_R','COMB_C','COMB_FOURIER'),
PRESENT_PRESENT('COMB_FOURIER','ANGL'),),
COMB_R =FACT(statut='f',max='**',
PARTIE =SIMP(statut='f',typ='TXM',into=("REEL","IMAG") ),
COEF_R =SIMP(statut='o',typ='R'),
- CHAM_ELEM =SIMP(statut='o',
- typ=(cham_elem_sief_r,cham_elem_flux_r,cham_elem_epsi_r,
- cham_elem_ener_r,cham_elem_crit_r,cham_elem_dbel_r,
- cham_elem_pres_r,cham_elem_sief_c ) ),
+ CHAM_ELEM =SIMP(statut='o',typ=cham_elem),
),
COMB_C =FACT(statut='f',max='**',
regles=(UN_PARMI('COEF_R','COEF_C', ),),
COEF_R =SIMP(statut='f',typ='R'),
COEF_C =SIMP(statut='f',typ='C'),
- CHAM_ELEM =SIMP(statut='o',typ=(cham_elem_sief_r) ),
+ CHAM_ELEM =SIMP(statut='o',typ=cham_elem),
),
COMB_FOURIER =FACT(statut='f',max='**',
COEF_R =SIMP(statut='f',typ='R',defaut= 1.),
NUME_MODE =SIMP(statut='o',typ='I'),
TYPE_MODE =SIMP(statut='o',typ='TXM',into=("SYME","ANTI") ),
- CHAM_ELEM =SIMP(statut='o',typ=(cham_elem_sief_r,cham_elem_flux_r,cham_elem_epsi_r ) ),
+ CHAM_ELEM =SIMP(statut='o',typ=cham_elem),
),
ANGL =SIMP(statut='f',typ='R' ),
) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 21/02/2006 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
# RESPONSABLE G8BHHXD X.DESROCHES
-def comb_cham_no_prod(COMB_R,COMB_C,COMB_FOURIER,**args):
- if COMB_C != None:
- type_mat = AsType(COMB_C[0]['CHAM_NO'])
- if type_mat in (cham_no_depl_c,cham_no_depl_r) : return cham_no_depl_c
- if type_mat in (cham_no_temp_c,cham_no_temp_r) : return cham_no_temp_c
- if type_mat in (cham_no_pres_c,cham_no_pres_r) : return cham_no_pres_c
- elif COMB_R != None:
+def comb_cham_no_prod(COMB_R,**args):
+ typ=cham_no_sdaster
+ if COMB_R != None:
type_mat = AsType(COMB_R[0]['CHAM_NO'])
- if type_mat in (cham_no_depl_c,cham_no_depl_r) : return cham_no_depl_r
- if type_mat in (cham_no_temp_c,cham_no_temp_r) : return cham_no_temp_r
- if type_mat in (cham_no_pres_c,cham_no_pres_r) : return cham_no_pres_r
- if type_mat == matr_asse_gene_r : return matr_asse_gene_r
- elif COMB_FOURIER != None:
- type_mat = AsType(COMB_FOURIER[0]['CHAM_NO'])
- if type_mat == cham_no_temp_r : return cham_no_temp_r
- if type_mat == cham_no_depl_r : return cham_no_depl_r
- raise AsException("type de concept resultat non prevu")
-
+ if type_mat == matr_asse_gene_r : typ= matr_asse_gene_r
+ return typ
COMB_CHAM_NO=OPER(nom="COMB_CHAM_NO",op= 30,sd_prod=comb_cham_no_prod
- ,fr="Combinaison linéaire de champs aux noeuds",
+ ,fr="Effectuer la combinaison linéaire de champs aux noeuds",
reentrant='f',
UIinfo={"groupes":("Résultats et champs",)},
regles=(UN_PARMI('COMB_R','COMB_C','COMB_FOURIER'),),
COMB_R =FACT(statut='f',max='**',
PARTIE =SIMP(statut='f',typ='TXM',into=("REEL","IMAG",) ),
- CHAM_NO =SIMP(statut='o',typ=(cham_no_temp_r,cham_no_temp_c,cham_no_depl_r,cham_no_depl_c
- ,cham_no_pres_r,cham_no_pres_c ) ),
+ CHAM_NO =SIMP(statut='o',typ=cham_no_sdaster),
COEF_R =SIMP(statut='o',typ='R' ),
),
COMB_C =FACT(statut='f',max='**',
regles=(UN_PARMI('COEF_R','COEF_C' ),),
- CHAM_NO =SIMP(statut='o',typ=(cham_no_temp_r,cham_no_depl_r,cham_no_pres_r,cham_no_temp_c
- ,cham_no_depl_c,cham_no_pres_c ) ),
+ CHAM_NO =SIMP(statut='o',typ=cham_no_sdaster),
COEF_R =SIMP(statut='f',typ='R' ),
COEF_C =SIMP(statut='f',typ='C' ),
),
COMB_FOURIER =FACT(statut='f',max='**',
- CHAM_NO =SIMP(statut='o',typ=(cham_no_temp_r,cham_no_depl_r) ),
+ CHAM_NO =SIMP(statut='o',typ=cham_no_sdaster),
COEF_R =SIMP(statut='f',typ='R',defaut= 1. ),
NUME_MODE =SIMP(statut='o',typ='I' ),
TYPE_MODE =SIMP(statut='o',typ='TXM',into=("SYME","ANTI") ),
ANGL =SIMP(statut='o',typ='R' ),
),
) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# ======================================================================
# RESPONSABLE G8BHHXD X.DESROCHES
COMB_FOURIER=OPER(nom="COMB_FOURIER",op= 161,sd_prod=comb_fourier,
- reentrant='n',
+ reentrant='n',fr="Recombiner les modes de Fourier d'une SD Résultat dans des directions particulières",
UIinfo={"groupes":("Post traitements",)},
RESULTAT =SIMP(statut='o',typ=fourier_elas ),
ANGL =SIMP(statut='o',typ='R',max='**'),
NOM_CHAM =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=5,
into=("DEPL","REAC_NODA","SIEF_ELGA_DEPL","EPSI_ELNO_DEPL","SIGM_ELNO_DEPL") ),
) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
raise AsException("type de concept resultat non prevu")
COMB_MATR_ASSE=OPER(nom="COMB_MATR_ASSE",op= 31,sd_prod=comb_matr_asse_prod,
- fr="Combinaison linéaire de matrices assemblées",
+ fr="Effectuer la combinaison linéaire de matrices assemblées",
reentrant='f',
UIinfo={"groupes":("Résultats et champs",)},
regles=(UN_PARMI('COMB_R','COMB_C','CALC_AMOR_GENE' ),),
),
SANS_CMP =SIMP(statut='f',typ='TXM',into=("LAGR",) ),
) ;
-#& MODIF COMMANDE DATE 30/06/2004 AUTEUR MCOURTOI M.COURTOIS
+#& MODIF COMMANDE DATE 03/01/2006 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
LIST_AMOR =SIMP(statut='f',typ=listr8_sdaster ),
AMOR_GENE =SIMP(statut='f',typ=matr_asse_gene_r ),
- MASS_INER =SIMP(statut='f',typ=tabl_mass_iner ),
+ MASS_INER =SIMP(statut='f',typ=table_sdaster ),
CORR_FREQ =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
EXCIT =FACT(statut='o',max='**',
),
TITRE =SIMP(statut='f',typ='TXM',max='**'),
) ;
-#& MODIF COMMANDE DATE 28/01/2005 AUTEUR VABHHTS J.PELLET
+#& MODIF COMMANDE DATE 16/05/2006 AUTEUR REZETTE C.REZETTE
# RESPONSABLE VABHHTS J.PELLET
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
def crea_champ_prod(TYPE_CHAM,**args):
- import string
- grandeur=string.lower(TYPE_CHAM[5:])
-
if TYPE_CHAM[0:5] == "CART_" :
- uu="carte_"+grandeur
+ return carte_sdaster
elif TYPE_CHAM[0:5] == "NOEU_" :
- uu="cham_no_"+grandeur
+ return cham_no_sdaster
elif TYPE_CHAM[0:2] == "EL" :
- uu="cham_elem_"+grandeur
+ return cham_elem
else :
raise AsException("type de concept resultat_sdaster non prevu")
- vv=eval(uu) ; return vv
-
CREA_CHAMP=OPER(nom="CREA_CHAMP",op= 195,sd_prod=crea_champ_prod,
- fr=" ",reentrant='n',
+ fr="Création d'un champ ",reentrant='n',
UIinfo={"groupes":("Résultats et champs",)},
TYPE_CHAM =SIMP(statut='o',typ='TXM',into=C_TYPE_CHAM_INTO()),
# TYPE_CHAM doit etre de la forme : CART_xx, NOEU_xx, ELEM_xx, ELGA_xx ou ELNO_xx
- # ou xx est le nom d'une grandeur définie dans le catalogue des grandeurs
-
+ # ou xx est le nom d'une grandeur définie dans le catalogue des grandeurs
# SI CREATION D'UN CHAM_NO, POUR IMPOSER LA NUMEROTATION DES DDLS :
# ------------------------------------------------------------------
regles=(EXCLUS('NUME_DDL','CHAM_NO',)),
# ------------------------------------------------------------------
OPTION =SIMP(statut='f',typ='TXM'),
- OPERATION =SIMP(statut='o',typ='TXM',into=("AFFE","ASSE","EVAL","EXTR","DISC",) ),
+ OPERATION =SIMP(statut='o',typ='TXM',into=("AFFE","ASSE","EVAL","EXTR","DISC","NORMALE") ),
+# ------------------------------------------------------------------
+ b_norm =BLOC(condition = "OPERATION == 'NORMALE'",
+ regles=(AU_MOINS_UN('GROUP_MA','MAILLE',),),
+ MODELE =SIMP(statut='o',typ=(modele_sdaster) ),
+ GROUP_MA =SIMP(statut='f',typ=grma ,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ ),
+# ------------------------------------------------------------------
b_affe =BLOC(condition = "OPERATION == 'AFFE'",
regles=(UN_PARMI('MAILLAGE','MODELE'),),
MAILLAGE =SIMP(statut='f',typ=(maillage_sdaster) ),
VALE_F =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),max='**'),
),
),
+# ------------------------------------------------------------------
b_asse =BLOC(condition = "OPERATION == 'ASSE'",
regles=(UN_PARMI('MAILLAGE','MODELE'),),
MAILLAGE =SIMP(statut='f',typ=(maillage_sdaster) ),
GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- CHAM_GD =SIMP(statut='o',typ=(cham_gd_sdaster)),
+ CHAM_GD =SIMP(statut='o',typ=cham_gd_sdaster),
NOM_CMP =SIMP(statut='f',typ='TXM',max='**' ),
NOM_CMP_RESU =SIMP(statut='f',typ='TXM',max='**' ),
CUMUL =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON",) ),
COEF_R =SIMP(statut='f',typ='R',defaut= 1. ),
),
),
+# ------------------------------------------------------------------
b_eval =BLOC(condition = "OPERATION == 'EVAL'",
- CHAM_F =SIMP(statut='o',typ=(cham_gd_sdaster)),
- CHAM_PARA =SIMP(statut='o',typ=(cham_gd_sdaster),max='**'),
+ CHAM_F =SIMP(statut='o',typ=cham_gd_sdaster),
+ CHAM_PARA =SIMP(statut='o',typ=cham_gd_sdaster,max='**'),
),
+# ------------------------------------------------------------------
b_disc =BLOC(condition = "OPERATION == 'DISC'",
MODELE =SIMP(statut='f',typ=(modele_sdaster) ),
PROL_ZERO =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON",) ),
- CHAM_GD =SIMP(statut='o',typ=(cham_gd_sdaster)),
+ CHAM_GD =SIMP(statut='o',typ=cham_gd_sdaster),
),
+# ------------------------------------------------------------------
b_extr =BLOC(condition = "OPERATION == 'EXTR'",
- regles=(UN_PARMI('MAILLAGE','FISSURE','RESULTAT'),),
+ regles=(AU_MOINS_UN('MAILLAGE','FISSURE','RESULTAT','TABLE'),),
MAILLAGE =SIMP(statut='f',typ=(maillage_sdaster) ),
FISSURE =SIMP(statut='f',typ=(fiss_xfem) ),
RESULTAT =SIMP(statut='f',typ=(resultat_sdaster) ),
- b_extr_maillage =BLOC(condition = "MAILLAGE != None",
+ TABLE =SIMP(statut='f',typ=(table_sdaster),min=1,max=1),
+ b_extr_maillage =BLOC(condition = "MAILLAGE != None and TABLE == None",
NOM_CHAM =SIMP(statut='o',typ='TXM',into=("GEOMETRIE",)),
),
b_extr_fissure =BLOC(condition = "FISSURE != None",
- NOM_CHAM =SIMP(statut='o',typ='TXM',into=("LTNO","LNNO","GRLTNO","GRLNNO",)),
+ NOM_CHAM =SIMP(statut='o',typ='TXM',into=("LTNO","LNNO","GRLTNO","GRLNNO","STNO","STNOR","BASLOC")),
),
+ b_extr_table =BLOC(condition = "TABLE != None",
+ regles=( EXCLUS('MODELE','MAILLAGE'),
+ EXCLUS('PROL_ZERO','MAILLAGE'),),
+ MAILLAGE =SIMP(statut='f',typ=(maillage_sdaster),),
+ MODELE =SIMP(statut='f',typ=(modele_sdaster),),
+ OPTION =SIMP(statut='f',typ='TXM'),
+ PROL_ZERO =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON",) ),
+ ),
b_extr_resultat =BLOC(condition = "RESULTAT != None",
+ regles=(DERIVABLE('RESULTAT'),),
SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),
fr="Paramètre de sensibilité.",
ang="Sensitivity parameter"),
b_type_maxi =BLOC(condition = "TYPE_MAXI != None",
TYPE_RESU =SIMP(statut='o',typ='TXM',defaut="VALE",into=("VALE","INST",) ),
- regles=(AU_PLUS_UN('LIST_INST','LIST_FREQ','NUME_ORDRE','INST',
+ regles=(EXCLUS('TOUT_ORDRE','LIST_INST','LIST_FREQ','NUME_ORDRE','INST',
'FREQ','NUME_MODE','NOEUD_CMP','NOM_CAS','ANGL'),),
+ TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
LIST_INST =SIMP(statut='f',typ=(listr8_sdaster) ),
LIST_FREQ =SIMP(statut='f',typ=(listr8_sdaster) ),
NUME_ORDRE =SIMP(statut='f',typ='I',max='**'),
NOEUD_CMP =SIMP(statut='f',typ='TXM',max='**'),
NOM_CAS =SIMP(statut='f',typ='TXM',max='**'),
ANGL =SIMP(statut='f',typ='R',max='**'),
-
- b_tout =BLOC(condition = "(LIST_INST,LIST_FREQ,NUME_ORDRE,INST,\
- FREQ,NUME_MODE,NOEUD_CMP,NOM_CAS,ANGL)\
- ==(None ,None ,None ,None,\
- None,None ,None ,None ,None)",
- TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",),defaut="OUI",),
- ),
),
# si .not. TYPE_MAXI, on ne doit spécifier qu'un seul numéro d'ordre :
b_non_type_maxi =BLOC(condition = "TYPE_MAXI == None",
- regles=(AU_PLUS_UN('INST','FREQ','NUME_MODE','NOEUD_CMP','NOM_CAS','ANGL'),),
+ regles=(EXCLUS('NUME_ORDRE','INST','FREQ','NUME_MODE','NOEUD_CMP','NOM_CAS','ANGL'),),
+ NUME_ORDRE =SIMP(statut='f',typ='I'),
INST =SIMP(statut='f',typ='R'),
FREQ =SIMP(statut='f',typ='R'),
NUME_MODE =SIMP(statut='f',typ='I'),
NOM_CAS =SIMP(statut='f',typ='TXM'),
ANGL =SIMP(statut='f',typ='R'),
- b_nume_1 =BLOC(condition = "(INST,FREQ,NUME_MODE,NOEUD_CMP,NOM_CAS,ANGL)\
- ==(None,None,None ,None ,None ,None)",
- NUME_ORDRE =SIMP(statut='f',typ='I',defaut=1,),
- ),
-
INTERPOL =SIMP(statut='f',typ='TXM',defaut="NON",into=("NON","LIN",) ),
),
), # fin bloc b_extr
),
-# FIN DU CATALOGUE : INFO,TITRE ET TYPAGE DU RESULAT :
+# FIN DU CATALOGUE : INFO,TITRE ET TYPAGE DU RESULTAT :
#-----------------------------------------------------
INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2,) ),
TITRE =SIMP(statut='f',typ='TXM',max='**' ),
) ;
-#& MODIF COMMANDE DATE 26/04/2005 AUTEUR LAVERNE J.LAVERNE
+#& MODIF COMMANDE DATE 03/01/2006 AUTEUR REZETTE C.REZETTE
# RESPONSABLE MCOURTOI M.COURTOIS
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
CREA_MAILLAGE=OPER(nom="CREA_MAILLAGE",op= 167,sd_prod=maillage_sdaster,
- reentrant='n',
+ reentrant='n',fr="Crée un maillage à partir d'un maillage existant",
UIinfo={"groupes":("Maillage",)},
regles=(EXCLUS('ECLA_PG','CREA_MAILLE'),
EXCLUS('ECLA_PG','CREA_GROUP_MA'),
GROUP_MA =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
),
REPERE =FACT(statut='f',max='**',
- fr="changement de repère servant à déterminer les caractéristiques d une section de poutre",
- TABLE =SIMP(statut='o',typ=tabl_cara_geom,
+ fr="changement de repère servant à déterminer les caractéristiques d'une section de poutre",
+ TABLE =SIMP(statut='o',typ=table_sdaster,
fr="Nom de la table contenant les caractéristiques de la section de poutre" ),
NOM_ORIG =SIMP(statut='f',typ='TXM',into=("CDG","TORSION"),fr="Origine du nouveau repère" ),
NOM_ROTA =SIMP(statut='f',typ='TXM',into=("INERTIE",),fr="Direction du repére" ),
#
INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ),
) ;
-#& MODIF COMMANDE DATE 17/08/2004 AUTEUR DURAND C.DURAND
+#& MODIF COMMANDE DATE 24/01/2006 AUTEUR D6BHHJP J.P.LEFEBVRE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
if TYPE_RESU == "MULT_ELAS" : return mult_elas
if TYPE_RESU == "FOURIER_ELAS" : return fourier_elas
if TYPE_RESU == "EVOL_VARC" : return evol_varc
+ if TYPE_RESU == "EVOL_CHAR" : return evol_char
raise AsException("type de concept resultat non prevu")
CREA_RESU=OPER(nom="CREA_RESU",op=124,sd_prod=crea_resu_prod,reentrant='f',
UIinfo={"groupes":("Modélisation",)},
- fr="Engendrer ou enrichir une structure de donnees en affectant les cham_gd associes",
+ fr="Créer ou enrichir une structure de donnees resultat à partir de champs aux noeuds",
OPERATION =SIMP(statut='o',typ='TXM',into=("AFFE","ECLA_PG","PERM_CHAM","PROL_RTZ",),
fr="choix de la fonction a activer",),
b_affe =BLOC(condition = "OPERATION == 'AFFE'",
- TYPE_RESU =SIMP(statut='o',typ='TXM',into=("MULT_ELAS","EVOL_ELAS","EVOL_NOLI","FOURIER_ELAS",
- "EVOL_THER","EVOL_VARC",) ),
+ TYPE_RESU =SIMP(statut='o',position='global',typ='TXM',into=("MULT_ELAS","EVOL_ELAS","EVOL_NOLI","FOURIER_ELAS",
+ "EVOL_THER","EVOL_VARC","EVOL_CHAR",) ),
NOM_CHAM =SIMP(statut='o',typ='TXM',into=C_NOM_CHAM_INTO()),
AFFE =FACT(statut='o',max='**',
CHAM_MATER =SIMP(statut='f',typ=cham_mater),
CARA_ELEM =SIMP(statut='f',typ=cara_elem),
- # affectation de plusieurs instants à l'aide d'un champ aux noeuds de fonctions du temps:
- b_fonc =BLOC(condition = "AsType(CHAM_GD) in (cham_no_temp_f,cham_no_depl_f)",
+ b_mult_elas =BLOC(condition = "TYPE_RESU == 'MULT_ELAS' ",
+ NOM_CAS =SIMP(statut='f',typ='TXM' ),
+ ),
+ b_evol =BLOC(condition = "((TYPE_RESU=='EVOL_ELAS') or (TYPE_RESU=='EVOL_NOLI') or (TYPE_RESU=='EVOL_THER')\
+ or (TYPE_RESU=='EVOL_VARC') or (TYPE_RESU=='EVOL_CHAR'))",
+ regles=(UN_PARMI('INST','LIST_INST'),),
INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
LIST_INST =SIMP(statut='f',typ=listr8_sdaster),
NUME_INIT =SIMP(statut='f',typ='I', val_min=1),
PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3 ),
CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
),
-
- # affectation d'un seul nume_ordre :
- b_reel =BLOC(condition = "AsType(CHAM_GD) not in (cham_no_temp_f,cham_no_depl_f)",
- regles=(UN_PARMI('NOM_CAS','NUME_MODE','INST','LIST_INST'),),
- NOM_CAS =SIMP(statut='f',typ='TXM' ),
+ b_fourier =BLOC(condition = "TYPE_RESU == 'FOURIER_ELAS' ",
NUME_MODE =SIMP(statut='f',typ='I'),
TYPE_MODE =SIMP(statut='f',typ='TXM',defaut="SYME",into=("SYME","ANTI","TOUS") ),
- INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
- LIST_INST =SIMP(statut='f',typ=listr8_sdaster),
- NUME_INIT =SIMP(statut='f',typ='I', val_min=1),
- NUME_FIN =SIMP(statut='f',typ='I', val_min=1),
- PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3 ),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
),
),
),
PROL_RTZ =FACT(statut='o',
regles=(EXCLUS('INST','LIST_INST'),),
MAILLAGE_FINAL =SIMP(statut='o',typ=maillage_sdaster,),
- TABLE =SIMP(statut='o',typ=tabl_post_rele,fr="Table issue de post_releve_t"),
+ TABLE =SIMP(statut='o',typ=table_sdaster,fr="Table issue de post_releve_t"),
INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
LIST_INST =SIMP(statut='f',typ=listr8_sdaster),
b_acce_reel =BLOC(condition="(INST != None)or(LIST_INST != None)",
),
) ;
-#& MODIF COMMANDE DATE 20/09/2004 AUTEUR DURAND C.DURAND
+#& MODIF COMMANDE DATE 10/05/2006 AUTEUR MCOURTOI M.COURTOIS
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2003 EDF R&D WWW.CODE-ASTER.ORG
# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
-def crea_table_prod(TYPE_TABLE,**args):
- if TYPE_TABLE == "TABLE" : return table_sdaster
- if TYPE_TABLE == "TABL_CARA_GEOM" : return tabl_cara_geom
- if TYPE_TABLE == "TABL_POST_RELE" : return tabl_post_rele
- if TYPE_TABLE == "TABL_POST_USUR" : return tabl_post_usur
- if TYPE_TABLE == "TABL_POST_ALEA" : return tabl_post_alea
- if TYPE_TABLE == "TABL_INTE_SPEC" : return tabl_intsp
- raise AsException("type de concept resultat non prevu")
+CREA_TABLE=OPER(nom="CREA_TABLE",op= 36,sd_prod=table_sdaster,
+ fr="Création d'une table à partir d'une fonction ou de deux listes",
+ reentrant='f',UIinfo={"groupes":("Table",)},
-CREA_TABLE=OPER(nom="CREA_TABLE",op= 36,sd_prod=crea_table_prod,
- fr="Creation d'une table a partir d'une fonction ou de deux listes",
- reentrant='n',UIinfo={"groupes":("Table",)},
+ regles=(EXCLUS('FONCTION','LISTE'),),
- regles=(EXCLUS('FONCTION','LISTE')),
-
- TYPE_TABLE=SIMP(statut='f',typ='TXM',defaut="TABLE",
- into=("TABLE",
- "TABL_CARA_GEOM",
- "TABL_POST_RELE",
- "TABL_POST_USUR",
- "TABL_POST_ALEA",
- "TABL_INTE_SPEC" ) ),
- LISTE=FACT(statut='f',min=2,max='**',
+ LISTE=FACT(statut='f',max='**',
fr="Creation d'une table a partir de listes",
regles=(UN_PARMI('LISTE_I','LISTE_R','LISTE_K')),
- PARA=SIMP(statut='o',typ='TXM'),
- TYPE_K=SIMP(statut='f',typ='TXM',defaut='K8',
+ PARA =SIMP(statut='o',typ='TXM'),
+ TYPE_K =SIMP(statut='f',typ='TXM',defaut='K8',
into=('K8','K16','K24')),
NUME_LIGN=SIMP(statut='f',typ='I',max='**'),
- LISTE_I=SIMP(statut='f',typ='I',max='**'),
- LISTE_R=SIMP(statut='f',typ='R',max='**'),
- LISTE_K=SIMP(statut='f',typ='TXM', max='**')),
- FONCTION=FACT(statut='f',min=1,max=1,
+ LISTE_I =SIMP(statut='f',typ='I',max='**'),
+ LISTE_R =SIMP(statut='f',typ='R',max='**'),
+ LISTE_K =SIMP(statut='f',typ='TXM', max='**'),
+ ),
+ FONCTION=FACT(statut='f',
fr="Creation d'une table a partir d'une fonction",
- FONCTION=SIMP(statut='o',typ=fonction_sdaster),
- PARA=SIMP(statut='f',typ='TXM',min=2,max=2)),
+ FONCTION=SIMP(statut='o',typ=(fonction_c,fonction_sdaster)),
+ PARA=SIMP(statut='f',typ='TXM',min=2,max=2),
+ ),
+ b_fonction = BLOC(condition='FONCTION != None',
+ regles=(CONCEPT_SENSIBLE('SEPARE'), REUSE_SENSIBLE(),
+ DERIVABLE('FONCTION'),),
+ SENSIBILITE = SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**',
+ fr="Liste des paramètres de sensibilité.",
+ ang="List of sensitivity parameters"),
+ ),
TITRE=SIMP(statut='f',typ='TXM',max='**'),
) ;
-#& MODIF COMMANDE DATE 22/03/2005 AUTEUR D6BHHJP J.P.LEFEBVRE
+#& MODIF COMMANDE DATE 16/01/2006 AUTEUR D6BHHJP J.P.LEFEBVRE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# ======================================================================
DEBUT=MACRO(nom="DEBUT",op=ops.build_debut ,repetable='n',
UIinfo={"groupes":("Gestion du travail",)},
- fr="Ouverture d une étude. Allocation des ressources mémoire et disque",
+ fr="Ouverture d'une étude. Allocation des ressources mémoire et disque et fichiers",
sd_prod=ops.DEBUT,
PAR_LOT =SIMP(fr="mode de traitement des commandes",statut='f',typ='TXM',
into=("OUI","NON"),defaut="OUI"),
- FORMAT_HDF =SIMP(fr="sauvegarde de la base GLOBALE au format HDF",statut='f',
- typ='TXM',defaut="NON",into=("OUI","NON",) ),
+ IMPR_MACRO =SIMP(fr="affichage des sous-commandes produites par les macros dans le fichier mess",
+ statut='f',typ='TXM',into=("OUI","NON"),defaut="NON"),
+# FORMAT_HDF =SIMP(fr="sauvegarde de la base GLOBALE au format HDF",statut='f',
+# typ='TXM',defaut="NON",into=("OUI","NON",) ),
BASE =FACT(fr="définition des paramètres associés aux bases JEVEUX",
- statut='f',min=1,max=3,
+ statut='f',min=1,max=2,
FICHIER =SIMP(fr="nom de la base",statut='o',typ='TXM',
- into=('GLOBALE','VOLATILE','LOCALE'),),
+ into=('GLOBALE','VOLATILE'),),
TITRE =SIMP(statut='f',typ='TXM'),
CAS =SIMP(statut='f',typ='TXM'),
NMAX_ENRE =SIMP(fr="nombre maximum d enregistrements",statut='f',typ='I'),
VISU_EFICAS =SIMP(statut='f',typ='TXM',into=('OUI','NON'),defaut='OUI'),
UNITE =SIMP(statut='f',typ='I',defaut=15),
),
+ ERREUR =FACT(fr="comportement en cas d'erreur",statut='f',min=1,max=1,
+ ERREUR_F =SIMP(statut='f',typ='TXM',into=('ABORT','EXCEPTION'),defaut='ABORT'),
+ ),
DEBUG =FACT(fr="option de déboggage reservée aux développeurs",
statut='f',min=1,max=1,
JXVERI =SIMP(fr="vérifie l intégrité de la segmentation mémoire",
BORNE =SIMP(statut='f',typ='I',val_min=0,defaut=180)
),
);
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 03/10/2005 AUTEUR NICOLAS O.NICOLAS
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# ======================================================================
DEFI_BASE_MODALE=OPER(nom="DEFI_BASE_MODALE",op= 99,sd_prod=base_modale,
reentrant='f',
+ fr="Définit la base d'une sous-structuration dynamique ou d'une recombinaison modale",
UIinfo={"groupes":("Matrices/vecteurs",)},
- regles=(UN_PARMI('CLASSIQUE','RITZ','DIAG_MASS'),),
+ regles=(UN_PARMI('CLASSIQUE','RITZ','DIAG_MASS','ORTHO_BASE'),),
CLASSIQUE =FACT(statut='f',
INTERF_DYNA =SIMP(statut='o',typ=interf_dyna_clas ),
MODE_MECA =SIMP(statut='o',typ=mode_meca,max='**' ),
MULT_ELAS =SIMP(statut='f',typ=mult_elas ),
BASE_MODALE =SIMP(statut='f',typ=base_modale ),
),
+ b_ritz =BLOC(condition = "RITZ != None",
+ INTERF_DYNA =SIMP(statut='f',typ=interf_dyna_clas ),
+ NUME_REF =SIMP(statut='o',typ=nume_ddl_sdaster ),
+ ORTHO =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),
+ fr="Reorthonormalisation de la base de Ritz" ),
+ b_ortho =BLOC(condition = "ORTHO == 'OUI' ",
+ MATRICE =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_depl_c,matr_asse_gene_r,matr_asse_pres_r ) ),
+ ),
+ ),
DIAG_MASS =FACT(statut='f',max='**',
MODE_MECA =SIMP(statut='o',typ=mode_meca,max='**' ),
MODE_STAT =SIMP(statut='o',typ=(mode_stat_depl,mode_stat_acce,mode_stat_forc,) ),
),
-# le bloc conditionnel remplace-t-il PRESENT_PRESENT('RITZ','NUME_REF'),
-# PRESENT_ABSENT('INTERF_DYNA','CLASSIQUE'),
- b_ritz =BLOC(condition = "RITZ != None",
- INTERF_DYNA =SIMP(statut='f',typ=interf_dyna_clas ),
- NUME_REF =SIMP(statut='o',typ=nume_ddl_sdaster ),
+ ORTHO_BASE =FACT(statut='f',max='**',
+ BASE =SIMP(statut='o',typ=(mode_meca,mode_stat_depl,mode_stat_acce,mode_stat_forc,mult_elas,base_modale)),
+ MATRICE =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_depl_c,matr_asse_gene_r,matr_asse_pres_r ) ),
),
TITRE =SIMP(statut='f',typ='TXM',max='**'),
INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
) ;
-#& MODIF COMMANDE DATE 22/02/2005 AUTEUR DURAND C.DURAND
+#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2003 EDF R&D WWW.CODE-ASTER.ORG
# ===========================================================================
DEFI_CABLE_BP=MACRO(nom="DEFI_CABLE_BP",op=defi_cable_bp_ops,sd_prod=cabl_precont,
- fr="",
- reentrant='n',
+ fr="Calculer les profils initiaux de tension le long des cables de précontrainte d'une structure en béton",
+ reentrant='n',UIinfo={"groupe":("Modélisation",)},
regles=(ENSEMBLE('MAILLAGE','CONE'),),
MAILLAGE =SIMP(statut='f',typ=maillage_sdaster),
MODELE =SIMP(statut='o',typ=modele_sdaster ),
TITRE =SIMP(statut='f',typ='TXM',max='**' ),
INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
) ;
-#& MODIF COMMANDE DATE 24/08/2004 AUTEUR CIBHHPD S.VANDENBERGHE
+#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2003 EDF R&D WWW.CODE-ASTER.ORG
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
-DEFI_CABLE_OP=OPER(nom="DEFI_CABLE_OP",op= 180,sd_prod=cabl_precont,
- fr=" ",
- reentrant='n',
+DEFI_CABLE_OP=OPER(nom="DEFI_CABLE_OP",op= 180,sd_prod=cabl_precont,reentrant='n',
+ fr="Définit les profils initiaux de tension d'une structure en béton le long des cables de précontrainte"
+ +" (utilisée par la macro DEFI_CABLE_BP)",
UIinfo={"groupes":("Modélisation",)},
MODELE =SIMP(statut='o',typ=modele_sdaster ),
CHAM_MATER =SIMP(statut='o',typ=cham_mater ),
PRESENT =SIMP(statut='o',typ='TXM',min=2,max=2,into=("OUI","NON") ),
),
) ;
-#& MODIF COMMANDE DATE 27/09/2004 AUTEUR JMBHH01 J.M.PROIX
+#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
# RESPONSABLE JMBHH01 J.M.PROIX
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
DEFI_COMPOR=OPER(nom="DEFI_COMPOR",op=59,sd_prod=compor_sdaster,
- fr="Définition du comportement monocristallin",
+ fr="Définir le comportement d'un monocristal ou d'un polycristal",
reentrant='n',
UIinfo={"groupes":("Modélisation",)},
regles=(EXCLUS('MONOCRISTAL','POLYCRISTAL'),),
);
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
DEFI_CONSTANTE=OPER(nom="DEFI_CONSTANTE",op= 2,sd_prod=fonction_sdaster,
- fr="Définition d une fonction constante",
+ fr="Définir la valeur d'une grandeur invariante",
reentrant='n',
UIinfo={"groupes":("Fonction",)},
NOM_RESU =SIMP(statut='f',typ='TXM',defaut="TOUTRESU"),
VALE =SIMP(statut='o',typ='R',),
TITRE =SIMP(statut='f',typ='TXM',max='**'),
) ;
-#& MODIF COMMANDE DATE 23/08/2004 AUTEUR CIBHHLV L.VIVAN
+#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# ======================================================================
DEFI_COQU_MULT=OPER(nom="DEFI_COQU_MULT",op=56,sd_prod=mater_sdaster,reentrant='n',
UIinfo={"groupes":("Modélisation",)},
- fr="Définition d une coque composite couche par couche",
+ fr="Déterminer les caractéristiques matériaux homogénéisées d'une coque multicouche à partir"
+ +" des caractéristiques de chaque couche",
COUCHE =FACT(statut='o',max='**',
EPAIS =SIMP(statut='o',typ='R',val_min=0.E+0 ),
MATER =SIMP(statut='o',typ=(mater_sdaster) ),
UNITE =SIMP(statut='f',typ='I',defaut=8),
),
) ;
-#& MODIF COMMANDE DATE 11/05/2005 AUTEUR MCOURTOI M.COURTOIS
+#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2003 EDF R&D WWW.CODE-ASTER.ORG
DEFI_FICHIER=MACRO(nom="DEFI_FICHIER",op=ops.build_DEFI_FICHIER,sd_prod=DEFIC_prod,reentrant='n',
UIinfo={"groupes":("Gestion du travail",)},
- fr="Gestion d une unité logique : ajout, suppression",
+ fr="Ouvre ou ferme un fichier associé à un numéro d'unité logique",
ACTION =SIMP(statut='f',typ='TXM',into=("ASSOCIER","LIBERER","RESERVER"),defaut="ASSOCIER"),
INFO =SIMP(statut='f',typ='I',into=(1,2) ),
)
-#& MODIF COMMANDE DATE 25/01/2005 AUTEUR GENIAUT S.GENIAUT
+#& MODIF COMMANDE DATE 25/04/2006 AUTEUR CIBHHPD L.SALMONA
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
-DEFI_FISS_XFEM=OPER(nom="DEFI_FISS_XFEM",op= 41,sd_prod=fiss_xfem,reentrant='f',
+DEFI_FISS_XFEM=OPER(nom="DEFI_FISS_XFEM",op= 41,sd_prod=fiss_xfem,reentrant='n',
UIinfo={"groupes":("Modélisation",)},
- fr="Définition des caratéristiques d''une fissure avec XFEM",
+ fr="Définition des caratéristiques d'une fissure avec X-FEM",
MODELE =SIMP(statut='o',typ=modele_sdaster),
DEFI_FISS =FACT(statut='o',max=01,
GROUP_MA_FOND =SIMP(statut='f',typ=grma),
),
GROUP_MA_ENRI =SIMP(statut='o',typ=grma,max=01),
- ORIE_FOND =FACT(statut='o',max=01,
+ RAYON_ENRI =SIMP(statut='f',typ='R',defaut=0.E+0),
+ ORIE_FOND =FACT(statut='f',max=01,
PFON_INI =SIMP(statut='o',typ='R',max=03),
VECT_ORIE =SIMP(statut='o',typ='R',max=03),
PT_ORIGIN =SIMP(statut='o',typ='R',max=03),
),
CONTACT =FACT(statut='f',max=01,
NOM_CHAM =SIMP(statut='f',typ='TXM',defaut="DEPL",into=("DEPL",) ),
- FROTTEMENT =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","COULOMB",) ),
- INTEGRATION =SIMP(statut='f',typ='TXM',defaut="GAUSS",into=("GAUSS",) ),
+ FROTTEMENT =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","COULOMB",) ),
+ INTEGRATION =SIMP(statut='f',typ='TXM',defaut="FPG4",into=("GAUSS","FPG4","FPG6","FPG7",) ),
COEF_REGU_CONT =SIMP(statut='f',typ='R',defaut=100.E+0),
MODL_AXIS =SIMP(statut='f',typ='TXM',into=("NON",)),
ITER_CONT_MAXI =SIMP(statut='f',typ='I',defaut=30),
CONTACT_INIT =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON",) ),
- b_frottement =BLOC(condition = "FROTTEMENT == 'COULOMB' ",fr="Paramètres du frottement de Coulomb",
+ ALGO_LAGR =SIMP(statut='f',typ='TXM',defaut="VERSION1",into=("NON","VERSION1","VERSION2" , ) ),
+ COEF_ECHELLE =SIMP(statut='f',typ='R',defaut=1.E+6),
+ b_frottement =BLOC(condition = "FROTTEMENT == 'COULOMB' ",fr="Paramères du frottement de Coulomb",
COULOMB =SIMP(statut='o',typ='R',),
ITER_FROT_MAXI =SIMP(statut='f',typ='I',defaut=2),
COEF_REGU_FROT =SIMP(statut='f',typ='R',defaut=100.E+0),
),
INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2,3,) ),
) ;
-#& MODIF COMMANDE DATE 30/06/2004 AUTEUR MCOURTOI M.COURTOIS
+#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
DEFI_FLUI_STRU=OPER(nom="DEFI_FLUI_STRU",op= 143,sd_prod=type_flui_stru,
- reentrant='n',
+ reentrant='n',fr="Définit les caractéristiques nécessaires à l'étude dynamique d'une structure sous écoulement",
UIinfo={"groupes":("Maillage",)},
regles=( UN_PARMI('FAISCEAU_TRANS','GRAPPE','FAISCEAU_AXIAL','COQUE_COAX',),),
FAISCEAU_TRANS =FACT(statut='f',max='**',
+ regles=( ENSEMBLE('CSTE_CONNORS','NB_CONNORS','RHO_TUBE'),),
COUPLAGE =SIMP(statut='f',typ='TXM',into=("OUI","NON") ),
CARA_ELEM =SIMP(statut='f',typ=cara_elem ),
PROF_VITE_FLUI =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ),
UNITE_CD =SIMP(statut='f',typ='I',defaut=70),
UNITE_CK =SIMP(statut='f',typ='I',defaut=71),
PAS =SIMP(statut='f',typ='R' ),
+ CSTE_CONNORS =SIMP(statut='f',typ='R',min=2,max=2,val_min=0.E+00),
+ NB_CONNORS =SIMP(statut='f',typ='I',val_min=2,),
+ RHO_TUBE =SIMP(statut='f',typ='R' ),
),
GRAPPE =FACT(statut='f',
regles=(ENSEMBLE('GRAPPE_2','NOEUD','CARA_ELEM','MODELE','RHO_FLUI',),
),
INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# ======================================================================
DEFI_FONC_ELEC=OPER(nom="DEFI_FONC_ELEC",op=64,sd_prod=fonction_sdaster,reentrant='n',
UIinfo={"groupes":("Outils métier",)},
- fr="Définition d une fonction du temps pour calculer des forces de LAPLACE",
+ fr="Définir une fonction du temps intervenant dans le calcul des forces de LAPLACE",
regles=(UN_PARMI('COUR_PRIN','COUR'),
EXCLUS('COUR','COUR_SECO'), ),
FREQ =SIMP(statut='f',typ='R',defaut= 50.),
),
INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# ======================================================================
DEFI_FONC_FLUI=OPER(nom="DEFI_FONC_FLUI",op= 142,sd_prod=fonction_sdaster,
reentrant='n',
+ fr="Définit un profil de vitesse d'écoulement fluide le long d'une poutre",
UIinfo={"groupes":("Fonction",)},
MAILLAGE =SIMP(statut='o',typ=(maillage_sdaster) ),
NOEUD_INIT =SIMP(statut='o',typ=no),
INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2 ) ),
TITRE =SIMP(statut='f',typ='TXM',max='**'),
) ;
-#& MODIF COMMANDE DATE 16/06/2004 AUTEUR DURAND C.DURAND
+#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
raise AsException("type de concept resultat non prevu")
DEFI_FONCTION=OPER(nom="DEFI_FONCTION",op=3,sd_prod=defi_fonction_prod
- ,fr="Définition des valeurs réelles ou complexes d une fonction réelle",
+ ,fr="Définit une fonction réelle ou complexe d'une variable réelle",
reentrant='n',
UIinfo={"groupes":("Fonction",)},
regles=(UN_PARMI('VALE','VALE_C','VALE_PARA','NOEUD_PARA'),),
INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
TITRE =SIMP(statut='f',typ='TXM',max='**'),
) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 09/05/2006 AUTEUR GALENNE E.GALENNE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# ======================================================================
DEFI_FOND_FISS=OPER(nom="DEFI_FOND_FISS",op=55,sd_prod=fond_fiss,reentrant='n',
UIinfo={"groupes":("Post traitements",)},
- fr="Définition de lèvres et d un fond de fissure en 3D",
- regles=(UN_PARMI('FOND_FISS','FOND_FERME'),
+ fr="Définition de lèvres et d'un fond de fissure en 3D",
+ regles=(UN_PARMI('FOND_FISS','FOND_FERME','FOND_INF'),
EXCLUS('FOND_FERME','DTAN_ORIG'),
EXCLUS('FOND_FERME','DTAN_EXTR'),
EXCLUS('FOND_FERME','VECT_GRNO_ORIG'),
UN_PARMI('LEVRE_SUP','NORMALE'),
EXCLUS('LEVRE_INF','NORMALE'),
ENSEMBLE('DTAN_ORIG','DTAN_EXTR'),
+ ENSEMBLE('FOND_SUP','FOND_INF'),
+ EXCLUS('FOND_INF','FOND_FISS'),
+ EXCLUS('FOND_INF','FOND_FERME'),
ENSEMBLE('VECT_GRNO_ORIG','VECT_GRNO_EXTR'),
EXCLUS('DTAN_ORIG','VECT_GRNO_ORIG'),
EXCLUS('DTAN_EXTR','VECT_GRNO_EXTR') ,),
MAILLE_ORIG =SIMP(statut='f',typ=ma,),
GROUP_MA_ORIG =SIMP(statut='f',typ=ma,),
),
+ FOND_INF =FACT(statut='f',
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ NOEUD_ORIG =SIMP(statut='f',typ=no,),
+ GROUP_NO_ORIG =SIMP(statut='f',typ=grno,),
+ MAILLE_ORIG =SIMP(statut='f',typ=ma,),
+ GROUP_MA_ORIG =SIMP(statut='f',typ=ma,),
+ ),
+ FOND_SUP =FACT(statut='f',
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ NOEUD_ORIG =SIMP(statut='f',typ=no,),
+ GROUP_NO_ORIG =SIMP(statut='f',typ=grno,),
+ MAILLE_ORIG =SIMP(statut='f',typ=ma,),
+ GROUP_MA_ORIG =SIMP(statut='f',typ=ma,),
+ ),
LEVRE_SUP =FACT(statut='f',
regles=(UN_PARMI('GROUP_MA','MAILLE'),),
GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
),
NORMALE =SIMP(statut='f',typ='R',max='**'),
+ PREC_NORM =SIMP(statut='f',typ='R',defaut=0.1),
DTAN_ORIG =SIMP(statut='f',typ='R',max='**'),
DTAN_EXTR =SIMP(statut='f',typ='R',max='**'),
VECT_GRNO_ORIG =SIMP(statut='f',typ=grno,validators=NoRepeat(),max=2),
VECT_GRNO_EXTR =SIMP(statut='f',typ=grno,validators=NoRepeat(),max=2),
INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
) ;
-#& MODIF COMMANDE DATE 25/10/2004 AUTEUR CIBHHLV L.VIVAN
+#& MODIF COMMANDE DATE 04/07/2005 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
fr="Définition de nouveaux groupes de noeuds et/ou de mailles dans un concept maillage",
reentrant='o',
UIinfo={"groupes":("Maillage",)},
- regles=(AU_MOINS_UN('CREA_GROUP_MA','CREA_GROUP_NO'),),
+ regles=(AU_MOINS_UN('CREA_GROUP_MA','CREA_GROUP_NO','DETR_GROUP_NO','DETR_GROUP_MA'),),
MAILLAGE =SIMP(statut='o',typ=(maillage_sdaster,squelette) ),
-
+ DETR_GROUP_MA =FACT(statut='f',max='**',
+ NOM =SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**'),),
+ DETR_GROUP_NO =FACT(statut='f',max='**',
+ NOM =SIMP(statut='o',typ=grno,validators=NoRepeat(),max='**'),),
CREA_GROUP_MA =FACT(statut='f',max='**',
regles=(UN_PARMI('TOUT','GROUP_MA','MAILLE','INTERSEC','UNION','DIFFE','OPTION'),),
ALARME =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
INFO =SIMP(statut='f',typ='I',into=( 1 , 2 ) ),
) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 03/01/2006 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
-DEFI_INTE_SPEC=OPER(nom="DEFI_INTE_SPEC",op= 115,sd_prod=tabl_intsp,
- reentrant='n',
+DEFI_INTE_SPEC=OPER(nom="DEFI_INTE_SPEC",op= 115,sd_prod=table_sdaster,
+ reentrant='n',fr="Définit une matrice interspectrale",
UIinfo={"groupes":("Fonction",)},
DIMENSION =SIMP(statut='f',typ='I',defaut= 1 ),
TITRE =SIMP(statut='f',typ='TXM',max='**'),
INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
DEFI_INTERF_DYNA=OPER(nom="DEFI_INTERF_DYNA",op= 98,sd_prod=interf_dyna_clas,
reentrant='n',
UIinfo={"groupes":("Matrices/vecteurs",)},
+ fr="Définir les interfaces d'une structure et leur affecter un type",
NUME_DDL =SIMP(statut='o',typ=nume_ddl_sdaster ),
INTERFACE =FACT(statut='o',max='**',
regles=(ENSEMBLE('NOM','TYPE'),
FREQ =SIMP(statut='f',typ='R',defaut= 1.),
INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# ======================================================================
# RESPONSABLE VABHHTS J.PELLET
DEFI_LIST_ENTI=OPER(nom="DEFI_LIST_ENTI",op=22,sd_prod=listis_sdaster,
- fr="Définition d une suite croissante d entiers",
+ fr="Définir une liste d'entier strictement croissante",
reentrant='n',
UIinfo={"groupes":("Fonction",)},
regles=(UN_PARMI('VALE','DEBUT'),
INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
TITRE =SIMP(statut='f',typ='TXM',max='**'),
) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# ======================================================================
# RESPONSABLE VABHHTS J.PELLET
DEFI_LIST_REEL=OPER(nom="DEFI_LIST_REEL",op=24,sd_prod=listr8_sdaster,
- fr="Définition d une suite croissante de réels",
+ fr="Définir une liste de réels strictement croissante",
reentrant='n',
UIinfo={"groupes":("Fonction",)},
regles=(UN_PARMI('VALE','DEBUT',),
INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
TITRE =SIMP(statut='f',typ='TXM',max='**'),
) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# ======================================================================
# RESPONSABLE VABHHTS J.PELLET
DEFI_MAILLAGE=OPER(nom="DEFI_MAILLAGE",op= 88,sd_prod=maillage_sdaster,
- fr="Définition d un nouveau maillage à partir de macro éléments",
+ fr="Définition d'un nouveau maillage à partir de macro-éléments",
reentrant='n',
UIinfo={"groupes":("Maillage",)},
DEFI_MAILLE =FACT(statut='o',max='**',
GROUP_NO_FIN =SIMP(statut='f',typ=grno),
),
) ;
-#& MODIF COMMANDE DATE 18/04/2005 AUTEUR PBADEL P.BADEL
+#& MODIF COMMANDE DATE 29/05/2006 AUTEUR MJBHHPE J.L.FLEJOU
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
UIinfo={"groupes":("Modélisation",)},
regles=(EXCLUS('ELAS','ELAS_FO','ELAS_FLUI','ELAS_ISTR','ELAS_ISTR_FO','ELAS_ORTH',
'ELAS_ORTH_FO','ELAS_COQUE','ELAS_COQUE_FO',
- 'SURF_ETAT_SATU','CAM_CLAY_THM','SURF_ETAT_NSAT'),
+ 'ELAS_HYPER',),
EXCLUS('THER','THER_FO','THER_ORTH','THER_NL'),
EXCLUS('ECRO_LINE','ECRO_LINE_FO'),
EXCLUS('TAHERI','TAHERI_FO'),
EXCLUS('POLY_CFC','POLY_CFC_FO'),
EXCLUS('LEMAITRE','LEMAITRE_FO','ZIRC_CYRA2','ZIRC_EPRI','VISC_IRRA_LOG',
'LEMA_SEUIL','LEMA_SEUIL_FO','LEMAITRE_IRRA','LMARC_IRRA',),
- EXCLUS('OHNO','OHNO_FO'),
EXCLUS('LMARC','LMARC_FO'),
EXCLUS('VMIS_POUTRE','VMIS_POUTRE_FO'),
EXCLUS('VENDOCHAB','VENDOCHAB_FO'),
PRESENT_PRESENT('CAM_CLAY','ELAS'),
PRESENT_PRESENT('LAIGLE','ELAS'),
PRESENT_PRESENT('DRUCK_PRAGER','ELAS'),
+ PRESENT_PRESENT('HOEK_BROWN','ELAS'),
EXCLUS('MAZARS','MAZARS_FO'),
PRESENT_PRESENT('BAZANT_FD','ELAS_FO'),
EXCLUS('GLRC','GLRC_FO'),
PRESENT_PRESENT('JOINT_BA','ELAS'),
+ PRESENT_PRESENT('CABLE','ELAS'),
),
#
# comportement élastique
K_DESSIC =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
B_ENDOGE =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
FONC_DESORP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP","INST","HYDR","SECH",) ),
+ VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP","INST","HYDR","SECH","NEUT1","NEUT2",) ),
),
ELAS_FLUI =FACT(statut='f',
E =SIMP(statut='o',typ='R'),
YT =SIMP(statut='f',typ='R',defaut= 1. ),
YC =SIMP(statut='f',typ='R',defaut= 1. ),
S_LT =SIMP(statut='f',typ='R',defaut= 1. ),
+ AMOR_ALPHA =SIMP(statut='f',typ='R'),
+ AMOR_BETA =SIMP(statut='f',typ='R'),
+ AMOR_HYST =SIMP(statut='f',typ='R'),
),
ELAS_ORTH_FO =FACT(statut='f',
regles=(
ALPHA_T =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
ALPHA_N =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP","INST",) ),
+ AMOR_ALPHA =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ AMOR_BETA =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ AMOR_HYST =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
),
- ELAS_THM =FACT(statut='f',
- RHO_S =SIMP(statut='o',typ='R'),
- UN_SUR_KS =SIMP(statut='o',typ='R'),
- E =SIMP(statut='f',typ='R'),
- KB =SIMP(statut='f',typ='R'),
- D_KB_T =SIMP(statut='f',typ='R'),
- ALPHA_S =SIMP(statut='f',typ='R'),
- ALPHA_D =SIMP(statut='f',typ='R'),
- ),
- SURF_ETAT_SATU =FACT(statut='f',
- E_CHAR =SIMP(statut='o',typ='R'),
- E_DECHAR =SIMP(statut='o',typ='R'),
- XN =SIMP(statut='f',typ='R'),
- RF =SIMP(statut='f',typ='R'),
- EV_KB =SIMP(statut='f',typ='R'),
- EV_XM =SIMP(statut='f',typ='R'),
- D_E_T =SIMP(statut='f',typ='R'),
- ALPHA0 =SIMP(statut='f',typ='R'),
- ALPHA1 =SIMP(statut='f',typ='R'),
- ALPHA2 =SIMP(statut='f',typ='R'),
- ALPHA3 =SIMP(statut='f',typ='R'),
- ALPHA_S =SIMP(statut='f',typ='R'),
- ANG_FRT =SIMP(statut='o',typ='R'),
- COHE =SIMP(statut='o',typ='R'),
- RESI_TRAC =SIMP(statut='o',typ='R'),
- ),
- CAM_CLAY_THM =FACT(statut='f',
- NU =SIMP(statut='f',typ='R'),
- LAMBDA =SIMP(statut='o',typ='R'),
- KAPA =SIMP(statut='o',typ='R'),
- M =SIMP(statut='f',typ='R'),
- PRES_CRIT =SIMP(statut='f',typ='R'),
- GAMA =SIMP(statut='o',typ='R'),
- A0_PC =SIMP(statut='o',typ='R'),
- A1_PC =SIMP(statut='f',typ='R'),
- A2_PC =SIMP(statut='f',typ='R'),
- ALPHA0_PC =SIMP(statut='f',typ='R'),
- ALPHA1_PC =SIMP(statut='f',typ='R'),
- ALPHA2_PC =SIMP(statut='f',typ='R'),
- ALPHA3_PC =SIMP(statut='f',typ='R'),
- ALPHA_S =SIMP(statut='f',typ='R'),
- ),
- SURF_ETAT_NSAT =FACT(statut='f',
- E_CHAR =SIMP(statut='o',typ='R'),
- E_DECHAR =SIMP(statut='o',typ='R'),
- XN =SIMP(statut='f',typ='R'),
- RF =SIMP(statut='f',typ='R'),
- EV_KB =SIMP(statut='f',typ='R'),
- EV_XM =SIMP(statut='f',typ='R'),
- EV_A =SIMP(statut='f',typ='R'),
- EV_B =SIMP(statut='f',typ='R'),
- EV_CT =SIMP(statut='f',typ='R'),
- EV_SIGB =SIMP(statut='f',typ='R'),
- D_E_T =SIMP(statut='f',typ='R'),
- D_E_SUCC =SIMP(statut='f',typ='R'),
- ANG_FRT =SIMP(statut='o',typ='R'),
- COHE =SIMP(statut='o',typ='R'),
- D_COEH_SUCC =SIMP(statut='f',typ='R'),
- ANG_FRT_ULT =SIMP(statut='f',typ='R'),
- SUCC_ULTM =SIMP(statut='f',typ='R'),
- RESI_TRAC =SIMP(statut='f',typ='R'),
- A_SURF_SATU =SIMP(statut='f',typ='R'),
- B_SURF_SATU =SIMP(statut='f',typ='R'),
- C_SURF_SATU =SIMP(statut='f',typ='R'),
- D_SURF_SATU =SIMP(statut='f',typ='R'),
+ ELAS_HYPER =FACT(statut='f',
+ regles=(UN_PARMI('K','NU'),),
+ C10 =SIMP(statut='f',typ='R',defaut=0.0),
+ C01 =SIMP(statut='o',typ='R'),
+ C20 =SIMP(statut='f',typ='R',defaut=0.0),
+ K =SIMP(statut='f',typ='R'),
+ RHO =SIMP(statut='f',typ='R',defaut=0.0),
+ NU =SIMP(statut='f',typ='R',val_min=-1.E+0,val_max=0.5E+0),
),
ELAS_COQUE =FACT(statut='f',
regles=(EXCLUS('MEMB_L','M_LLLL',),
E_TAN =SIMP(statut='f',typ='R',defaut= 0.E+0),
),
CABLE =FACT(statut='f',
- E =SIMP(statut='o',typ='R'),
EC_SUR_E =SIMP(statut='f',typ='R',defaut= 1.E-4 ),
- RHO =SIMP(statut='f',typ='R'),
- ALPHA =SIMP(statut='f',typ='R'),
- AMOR_ALPHA =SIMP(statut='f',typ='R'),
- AMOR_BETA =SIMP(statut='f',typ='R'),
),
#
# comportement mécanique non linéaire
EPSI_0 =SIMP(statut='o',typ='R'),
M =SIMP(statut='o',typ='R'),
),
- CHABOCHE =FACT(statut='f',
- R_I =SIMP(statut='o',typ='R'),
- R_0 =SIMP(statut='o',typ='R'),
- B =SIMP(statut='o',typ='R'),
- K =SIMP(statut='o',typ='R'),
- W =SIMP(statut='o',typ='R'),
- A1 =SIMP(statut='o',typ='R'),
- A2 =SIMP(statut='o',typ='R'),
- C1 =SIMP(statut='o',typ='R'),
- C2 =SIMP(statut='o',typ='R'),
- ),
CIN1_CHAB =FACT(statut='f',
R_0 =SIMP(statut='o',typ='R'),
R_I =SIMP(statut='f',typ='R'),
VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP",) ),
),
POLY_CFC =FACT(statut='f',
- TEXTURE =SIMP(statut='o',typ=(tabl_texture) ),
+ TEXTURE =SIMP(statut='o',typ=(table_sdaster) ),
DL =SIMP(statut='f',typ='R'),
DA =SIMP(statut='f',typ='R'),
N =SIMP(statut='o',typ='R'),
C2 =SIMP(statut='o',typ='R'),
),
POLY_CFC_FO =FACT(statut='f',
- TEXTURE =SIMP(statut='o',typ=(tabl_texture) ),
+ TEXTURE =SIMP(statut='o',typ=(table_sdaster) ),
DL =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
DA =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
N =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
S =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP",) ),
),
+ IRRAD3M=FACT(statut='f',
+ R02 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ EPSI_U =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ RM =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ AI0 =SIMP(statut='o',typ='R',val_min=0.0),
+ ZETA =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ ETAI_S =SIMP(statut='o',typ='R',val_min=0.0),
+ R =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ ALPHA =SIMP(statut='o',typ='R',val_min=0.0),
+ PHI0 =SIMP(statut='o',typ='R',val_min=0.0),
+ KAPPA =SIMP(statut='f',typ='R',val_min=0.0,defaut=0.8,val_max=1.0),
+ VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP","IRRA") ),
+ ),
ZIRC_EPRI =FACT(statut='f',
FLUX_PHI =SIMP(statut='o',typ='R'),
R_P =SIMP(statut='o',typ='R'),
UN_SUR_M =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP",) ),
),
- OHNO =FACT(statut='f',
- R_I =SIMP(statut='o',typ='R'),
- R_0 =SIMP(statut='o',typ='R'),
- B =SIMP(statut='o',typ='R'),
- PHI =SIMP(statut='o',typ='R'),
- A1 =SIMP(statut='o',typ='R'),
- A2 =SIMP(statut='o',typ='R'),
- A3 =SIMP(statut='o',typ='R'),
- A4 =SIMP(statut='o',typ='R'),
- A5 =SIMP(statut='o',typ='R'),
- GAMMA1 =SIMP(statut='o',typ='R'),
- GAMMA2 =SIMP(statut='o',typ='R'),
- GAMMA3 =SIMP(statut='o',typ='R'),
- GAMMA4 =SIMP(statut='o',typ='R'),
- GAMMA5 =SIMP(statut='o',typ='R'),
- M1 =SIMP(statut='o',typ='R'),
- M2 =SIMP(statut='o',typ='R'),
- M3 =SIMP(statut='o',typ='R'),
- M4 =SIMP(statut='o',typ='R'),
- M5 =SIMP(statut='o',typ='R'),
- ),
- OHNO_FO =FACT(statut='f',
- R_I =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- R_0 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- B =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PHI =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- A1 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- A2 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- A3 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- A4 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- A5 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- GAMMA1 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- GAMMA2 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- GAMMA3 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- GAMMA4 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- GAMMA5 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- M1 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- M2 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- M3 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- M4 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- M5 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP",) ),
- ),
LMARC =FACT(statut='f',
DE_0 =SIMP(statut='o',typ='R'),
R_0 =SIMP(statut='o',typ='R'),
KZ =SIMP(statut='o',typ='R'),
KRX =SIMP(statut='o',typ='R'),
KRZ =SIMP(statut='o',typ='R'),
+ R_P0 =SIMP(statut='f',typ='R',defaut= 1.E+4 ),
),
DIS_CONTACT =FACT(statut='f',
RIGI_NOR =SIMP(statut='f',typ='R' ),
C_PRAGER_MZ =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("DRZ","INST","TEMP",) ),
),
+ DIS_GRICRA =FACT(statut='f',
+ KN_AX =SIMP(statut='o',typ='R' ),
+ KT_AX =SIMP(statut='o',typ='R' ),
+ COUL_AX =SIMP(statut='o',typ='R' ),
+ F_SER =SIMP(statut='f',typ='R' ),
+ F_SER_FO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ ET_AX =SIMP(statut='f',typ='R',defaut=1.e-7 ),
+ ET_ROT =SIMP(statut='f',typ='R',defaut=1.e-7 ),
+ ANG1 =SIMP(statut='f',typ='R' ),
+ ANG2 =SIMP(statut='f',typ='R' ),
+ PEN1 =SIMP(statut='f',typ='R' ),
+ PEN2 =SIMP(statut='f',typ='R' ),
+ PEN3 =SIMP(statut='f',typ='R' ),
+ ANG1_FO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ ANG2_FO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ PEN1_FO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ PEN2_FO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ PEN3_FO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
+ regles=(EXCLUS('ANG1','ANG1_FO',),
+ UN_PARMI('ANG1','ANG1_FO',),
+ EXCLUS('F_SER','F_SER_FO',),
+ UN_PARMI('F_SER','F_SER_FO',),
+ PRESENT_PRESENT('ANG1','ANG2','PEN1','PEN2','PEN3',),
+ PRESENT_PRESENT('ANG1_FO','ANG2_FO','PEN1_FO','PEN2_FO','PEN3_FO',),
+ ),
+ VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("DRZ","INST","TEMP",) ),
+ ),
NADAI_B =FACT(statut='f',
F_C =SIMP(statut='o',typ='R'),
F_T =SIMP(statut='o',typ='R'),
# comportement métallurgique
#
META_ACIER =FACT(statut='f',
- TRC =SIMP(statut='o',typ=(tabl_trc) ),
+ TRC =SIMP(statut='o',typ=(table_sdaster) ),
AR3 =SIMP(statut='o',typ='R'),
ALPHA =SIMP(statut='o',typ='R'),
MS0 =SIMP(statut='o',typ='R'),
# LE COMPORTEMENT DE COUPLAGE COMP_THM N EST VALABLE QUE POUR LES LOIS
# DE COUPLAGE : LIQU_SATU,LIQU_GAZ,GAZ,LIQU_GAZ_ATM,LIQU_VAPE_GAZ,LIQU_VAPE
# ET LIQU_AD_GAZ_VAPE
-# POUR LES LOIS DE COUPLAGE LIQU_SATU_GAT ET LIQU_NSAT_GAT
-# ON NE MODIFIE RIEN
# LA CORRESPONDANCE AVEC LES VARIABLES CACHEES EST LA SUIVANTE :
# 1 --> LIQU_SATU
# 2 --> GAZ
# 4 --> LIQU_VAPE_GAZ
# 5 --> LIQU_GAZ
# 6 --> LIQU_GAZ_ATM
-# 7 --> LIQU_SATU_GAT
-# 8 --> LIQU_NSAT_GAT
# 9 --> LIQU_AD_GAZ_VAPE
# =================================================================================
COMP_THM = SIMP(statut='f', typ='TXM',
"LIQU_GAZ_ATM" ,
"LIQU_VAPE_GAZ" ,
"LIQU_VAPE" ,
- "LIQU_SATU_GAT" ,
- "LIQU_NSAT_GAT" ,
"LIQU_AD_GAZ_VAPE" ,
) ),
# =================================================================================
VERI_P =SIMP(statut='c',typ='TXM',defaut=("TEMP",)),
),
),
-# =================================================================================
- b_liqusatugat = BLOC(condition = "COMP_THM == 'LIQU_SATU_GAT' ",
- fr="Paramètres nécessaires pour une loi de couplage de type LIQU_SATU_GAT",
- THM_LIQU =FACT(statut='f',
- RHO =SIMP(statut='o',typ='R'),
- UN_SUR_K =SIMP(statut='f',typ='R'),
- ALPHA =SIMP(statut='f',typ='R'),
- CP =SIMP(statut='f',typ='R'),
- VISC =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_VISC_TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- LAMBDA =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_LAMBDA_TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- COEF_HENRY =SIMP(statut='f',typ='R'),
- VERI_P =SIMP(statut='c',typ='TXM',defaut=("TEMP",)),
- ),
- THM_GAZ =FACT(statut='f',
- MASS_MOL =SIMP(statut='f',typ='R'),
- CP =SIMP(statut='f',typ='R'),
- VISC =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_VISC_TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- LAMBDA =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_LAMBDA_TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- VERI_P =SIMP(statut='c',typ='TXM',defaut=("TEMP",)),
- ),
- THM_VAPE_GAZ =FACT(statut='f',
- MASS_MOL =SIMP(statut='f',typ='R'),
- CP =SIMP(statut='f',typ='R'),
- VISC =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_VISC_TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- VERI_P =SIMP(statut='c',typ='TXM',defaut=("TEMP",)),
- ),
- THM_AIR_DISS = FACT(statut='f',
- CP = SIMP(statut='f',typ='R'),
- COEF_HENRY = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- VERI_P = SIMP(statut='c',typ='TXM',defaut=("TEMP",),),
- ),
- THM_INIT =FACT(statut='f',
- TEMP =SIMP(statut='o',typ='R'),
- PRE1 =SIMP(statut='o',typ='R'),
- PRE2 =SIMP(statut='o',typ='R'),
- PORO =SIMP(statut='o',typ='R'),
- PRES_VAPE =SIMP(statut='o',typ='R'),
- DEGR_SATU =SIMP(statut='f',typ='R'),
- PRES_ATMO =SIMP(statut='f',typ='R'),
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEE CACHEE ---------------------------------------------
-# ---------------------------------------------------------------------------------
- COMP_THM = SIMP(statut='c',typ='R',defaut= 7.0,),
- ),
- THM_DIFFU =FACT(statut='f',
- R_GAZ =SIMP(statut='o',typ='R'),
- RHO =SIMP(statut='f',typ='R'),
- CP =SIMP(statut='f',typ='R'),
- BIOT_COEF =SIMP(statut='f',typ='R'),
- SATU_PRES =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_SATU_PRES =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PESA_X =SIMP(statut='f',typ='R'),
- PESA_Y =SIMP(statut='f',typ='R'),
- PESA_Z =SIMP(statut='f',typ='R'),
- PERM_IN =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PERM_END =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- regles = (EXCLUS('PERM_IN','PERM_END','PERMIN_X',),
- PRESENT_PRESENT('PERMIN_X','PERMIN_Y','PERMIN_Z',), ),
- PERMIN_X =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PERMIN_Y =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PERMIN_Z =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PERM_LIQU =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_PERM_LIQU_SATU=SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PERM_GAZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_PERM_SATU_GAZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_PERM_PRES_GAZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICK =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_FICK_TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_FICK_GAZ_PRES =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- LAMBDA =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_LAMBDA_TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- SIGMA_T =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_SIGMA_T =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PERM_G_INTR =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- CHAL_VAPO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKV_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKV_PV = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKV_PG = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKV_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_FV_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_FV_PG = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKA_PA = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKA_PL = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKA_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_FA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- VERI_P = SIMP(statut='c',typ='TXM',defaut=("TEMP","SAT","PORO","PGAZ","PCAP","ENDO",) ),
- ),
- ),
- b_liqunsatgat = BLOC(condition = "COMP_THM == 'LIQU_NSAT_GAT' ",
- fr="Paramètres nécessaires pour une loi de couplage de type LIQU_NSAT_GAT",
- THM_LIQU =FACT(statut='f',
- RHO =SIMP(statut='o',typ='R'),
- UN_SUR_K =SIMP(statut='f',typ='R'),
- ALPHA =SIMP(statut='f',typ='R'),
- CP =SIMP(statut='f',typ='R'),
- VISC =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_VISC_TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- LAMBDA =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_LAMBDA_TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- COEF_HENRY =SIMP(statut='f',typ='R'),
- VERI_P =SIMP(statut='c',typ='TXM',defaut=("TEMP",)),
- ),
- THM_GAZ =FACT(statut='f',
- MASS_MOL =SIMP(statut='f',typ='R'),
- CP =SIMP(statut='f',typ='R'),
- VISC =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_VISC_TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- LAMBDA =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_LAMBDA_TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- VERI_P =SIMP(statut='c',typ='TXM',defaut=("TEMP",)),
- ),
- THM_AIR_DISS = FACT(statut='f',
- CP = SIMP(statut='f',typ='R'),
- COEF_HENRY = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- ),
- THM_VAPE_GAZ =FACT(statut='f',
- MASS_MOL =SIMP(statut='f',typ='R'),
- CP =SIMP(statut='f',typ='R'),
- VISC =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_VISC_TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- VERI_P =SIMP(statut='c',typ='TXM',defaut=("TEMP",)),
- ),
- THM_INIT =FACT(statut='f',
- TEMP =SIMP(statut='o',typ='R'),
- PRE1 =SIMP(statut='o',typ='R'),
- PRE2 =SIMP(statut='o',typ='R'),
- PORO =SIMP(statut='o',typ='R'),
- PRES_VAPE =SIMP(statut='o',typ='R'),
- DEGR_SATU =SIMP(statut='f',typ='R'),
- PRES_ATMO =SIMP(statut='f',typ='R'),
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEE CACHEE ---------------------------------------------
-# ---------------------------------------------------------------------------------
- COMP_THM = SIMP(statut='c',typ='R',defaut= 8.0,),
- ),
- THM_DIFFU =FACT(statut='f',
- R_GAZ =SIMP(statut='o',typ='R'),
- RHO =SIMP(statut='f',typ='R'),
- CP =SIMP(statut='f',typ='R'),
- BIOT_COEF =SIMP(statut='f',typ='R'),
- SATU_PRES =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_SATU_PRES =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PESA_X =SIMP(statut='f',typ='R'),
- PESA_Y =SIMP(statut='f',typ='R'),
- PESA_Z =SIMP(statut='f',typ='R'),
- PERM_IN =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PERM_END =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- regles = (EXCLUS('PERM_IN','PERM_END','PERMIN_X',),
- PRESENT_PRESENT('PERMIN_X','PERMIN_Y','PERMIN_Z',), ),
- PERMIN_X =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PERMIN_Y =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PERMIN_Z =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PERM_LIQU =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_PERM_LIQU_SATU=SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PERM_GAZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_PERM_SATU_GAZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_PERM_PRES_GAZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICK =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_FICK_TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_FICK_GAZ_PRES =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- LAMBDA =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_LAMBDA_TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- SIGMA_T =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_SIGMA_T =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PERM_G_INTR =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- CHAL_VAPO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKV_T =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKV_PV =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKV_PG =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKV_S =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_FV_T =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_FV_PG =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKA_T =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKA_PA =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKA_PL =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKA_S =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_FA_T =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- VERI_P =SIMP(statut='c',typ='TXM',defaut=("TEMP","SAT","PORO","PGAZ","PCAP","ENDO",) ),
- ),
- ),
# courbes et coefficients associés à la fatigue et au dommage
#
FATIGUE =FACT(statut='f',
VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP",) ),
),
CISA_PLAN_CRIT =FACT(statut='f',
- CRITERE =SIMP(statut='o',typ='TXM',into=("MATAKE","DANG_VAN_MODI_AC","DANG_VAN_MODI_AV","DOMM_MAXI") ),
+ CRITERE =SIMP(statut='o',typ='TXM',into=("MATAKE",
+ "DANG_VAN_MODI_AC",
+ "DANG_VAN_MODI_AV",
+ "DOMM_MAXI",
+ "FATEMI_SOCIE",
+ ) ),
b_critere_matake =BLOC(condition="CRITERE=='MATAKE'",
fr="Cisaillement plan critique critère de matake",
DOMM_B =SIMP(statut='o',typ='R'),
COEF_CISA_TRAC =SIMP(statut='o',typ='R',val_min=1.0E0,val_max=1.7321E0),
),
+
+ b_critere_fate_soci =BLOC(condition="CRITERE=='FATEMI_SOCIE'",
+ fr="Critère de Fatemi et Socie, en élasticité ou élastoplasticité, pour le cas amplitude variable",
+ FATSOC_A =SIMP(statut='o',typ='R'),
+ COEF_CISA_TRAC =SIMP(statut='o',typ='R',val_min=1.0E0,val_max=1.7321E0),
+ ),
),
#
# autres comportements ...
GC =SIMP(statut='o',typ='R'),
SIGM_C =SIMP(statut='f',typ='R'),
PENA_ADHERENCE =SIMP(statut='f',typ='R'),
- PENA_CONTACT =SIMP(statut='f',typ='R',defaut=1.),
+ PENA_CONTACT =SIMP(statut='f',typ='R',defaut=1.),
),
RUPT_FRAG_FO =FACT(statut='f',
GC =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
SIGM_C =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
PENA_ADHERENCE =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PENA_CONTACT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),defaut=1.),
+ PENA_CONTACT =SIMP(statut='f',typ='R',defaut=1.),
VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP",) ),
),
RCCM =FACT(statut='f',
TYPE_DP =SIMP(statut='c',typ='R',defaut= 2.0,),
),
),
+ HOEK_BROWN =FACT(statut='f',
+ GAMMA_RUP =SIMP(statut='o',typ='R'),
+ GAMMA_RES =SIMP(statut='o',typ='R'),
+ S_END =SIMP(statut='o',typ='R'),
+ S_RUP =SIMP(statut='o',typ='R'),
+ M_END =SIMP(statut='o',typ='R'),
+ M_RUP =SIMP(statut='o',typ='R'),
+ BETA =SIMP(statut='o',typ='R'),
+ ALPHAHB =SIMP(statut='o',typ='R'),
+ PHI_RUP =SIMP(statut='o',typ='R'),
+ PHI_RES =SIMP(statut='o',typ='R'),
+ PHI_END =SIMP(statut='f',typ='R'),
+ ),
#### MONOCRISTAL
ECOU_VISC1 =FACT(statut='f',
INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
) ;
-#& MODIF COMMANDE DATE 30/08/2004 AUTEUR NICOLAS O.NICOLAS
+#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# ======================================================================
DEFI_MODELE_GENE=OPER(nom="DEFI_MODELE_GENE",op= 126,sd_prod=modele_gene,
reentrant='n',
+ fr="Créer la structure globale à partir des sous-structures en sous-structuration dynamique",
UIinfo={"groupes":("Matrices/vecteurs",)},
SOUS_STRUC =FACT(statut='o',max='**',
NOM =SIMP(statut='o',typ='TXM' ),
),
INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
) ;
-#& MODIF COMMANDE DATE 30/06/2004 AUTEUR MCOURTOI M.COURTOIS
+#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
DEFI_NAPPE=OPER(nom="DEFI_NAPPE",op= 4,sd_prod=nappe_sdaster,
- fr="Définition des valeurs d une fonction de deux variables réelles",
+ fr="Définir une fonction réelle de deux variables réelles",
reentrant='n',
UIinfo={"groupes":("Fonction",)},
regles=(UN_PARMI('FONCTION','DEFI_FONCTION'),
VERIF =SIMP(statut='f',typ='TXM',into=("CROISSANT",) ),
TITRE =SIMP(statut='f',typ='TXM',max='**'),
) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
DEFI_OBSTACLE=OPER(nom="DEFI_OBSTACLE",op= 73,sd_prod=obstacle_sdaster
- ,fr="Définition d un obstacle plan perpendiculaire à une structure filaire",
+ ,fr="Définition d'un obstacle plan perpendiculaire à une structure filaire",
reentrant='n',
UIinfo={"groupes":("Modélisation",)},
TYPE =SIMP(statut='o',typ='TXM',defaut="CERCLE",
ang="Value of the parameter"),
TITRE =SIMP(statut='f',typ='TXM',max='**'),
) ;
-#& MODIF COMMANDE DATE 15/11/2004 AUTEUR ASSIRE A.ASSIRE
+#& MODIF COMMANDE DATE 30/08/2005 AUTEUR ASSIRE A.ASSIRE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
-# RESPONSABLE BOITEAU O.BOITEAU
+# RESPONSABLE ASSIRE A.ASSIRE
from Macro.defi_part_feti_ops import defi_part_feti_ops
DEFI_PART_FETI=MACRO(nom="DEFI_PART_FETI",op=defi_part_feti_ops,sd_prod=sd_feti_sdaster,
- reentrant='n',
+ reentrant='n',UIinfo={"groupe":("Maillage",)},
fr="Creation partitionnement en sous-domaines pour FETI",
- MAILLAGE =SIMP(statut='o',typ=maillage_sdaster),
+ regles=(UN_PARMI('MAILLAGE','MODELE'),),
+ MAILLAGE =SIMP(statut='f',typ=maillage_sdaster),
MODELE =SIMP(statut='f',typ=modele_sdaster),
- NB_PART =SIMP(statut='o',typ='I'),
+ NB_PART =SIMP(statut='o',typ='I',val_min=2),
EXCIT =FACT(statut='f',max='**',
CHARGE =SIMP(statut='f',typ=(char_meca,char_cine_meca)),),
- METHODE =SIMP(statut='o',typ='TXM',into=("PMETIS","KMETIS","AUTRE",), defaut="PMETIS" ),
- b_methode =BLOC(condition="METHODE == 'AUTRE'", fr="Autre logiciel",
- LOGICIEL =SIMP(statut='f',typ='TXM'),
- ),
+
+ # Methode de partitionnement
+ METHODE =SIMP(statut='f',typ='TXM',into=("PMETIS","SCOTCH","KMETIS",), defaut="SCOTCH" ),
+
+ LOGICIEL =SIMP(statut='f',typ='TXM'),
+
+ # Corrige les problemes possibles de non-connexite des sous-domaines
+ CORRECTION_CONNEX =SIMP(statut='f',typ='TXM',defaut='NON',into=('OUI','NON')),
+
+ # Permet de grouper des mailles dans un meme sous-doamine
+ GROUPAGE =FACT(statut='f',max='**',
+ GROUP_MA =SIMP(statut='o',typ=grma,),
+ ),
+ # Permet d'appliquer des poids sur certaines mailles
+ POIDS_MAILLES =FACT(statut='f',max='**',
+ GROUP_MA =SIMP(statut='o',typ=grma,),
+ POIDS =SIMP(statut='f',typ='I',val_min=2),
+ ),
+ # Prefixe pour le nom des group_ma definissant les sous-domaines
NOM_GROUP_MA =SIMP(statut='f',typ='TXM',defaut='SD' ),
- INFO =SIMP(statut='f',typ='I',into=(1, 2, 3, 4,5), defaut=1),
+
+ # Traiter les mailles de bords (elles sont enlevees du graphe puis reinjectees)
+ TRAITER_BORDS =SIMP(statut='f',typ='TXM',defaut='OUI',into=('OUI','NON') ),
+
+ # Si le mot-clé suivant est renseigné, crée de nouveau group_ma a partir des bords
+ # Note : le calcul FETI sera impossible
+ b_traiter_bords =BLOC(condition="TRAITER_BORDS == 'OUI'", fr="Crée t on des nouveaux group_ma",
+ NOM_GROUP_MA_BORD =SIMP(statut='f',typ='TXM'),
+ ),
+
+ INFO =SIMP(statut='f',typ='I',into=(1, 2), defaut=1),
);
#& MODIF COMMANDE DATE 22/02/2005 AUTEUR DURAND C.DURAND
# CONFIGURATION MANAGEMENT OF EDF VERSION
CHARGE =SIMP(statut='f',typ=(char_meca,char_cine_meca)),
),
);
-#& MODIF COMMANDE DATE 30/06/2004 AUTEUR MCOURTOI M.COURTOIS
+#& MODIF COMMANDE DATE 30/08/2005 AUTEUR ASSIRE A.ASSIRE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2005 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE ASSIRE A.ASSIRE
+
+DEFI_PART_PA_OPS=OPER(nom="DEFI_PART_PA_OPS",op=29,sd_prod=sd_feti_sdaster,
+ fr="Creation partitionnement en sous-domaines pour FETI",
+ docu="U4.00.00",reentrant='n',
+ UIinfo={"groupes":("Résolution",)},
+ MAILLAGE =SIMP(statut='o',typ=(maillage_sdaster,squelette) ),
+ MODELE =SIMP(statut='f',typ=(modele_sdaster)),
+ NB_PART =SIMP(statut='o',typ='I',),
+
+ # Methode de partitionnement
+ METHODE =SIMP(statut='f',typ='TXM',into=("PMETIS","SCOTCH","KMETIS",), defaut="SCOTCH" ),
+
+ LOGICIEL =SIMP(statut='f',typ='TXM'),
+
+ # Corrige les problemes possibles de non-connexite des sous-domaines
+ CORRECTION_CONNEX =SIMP(statut='f',typ='TXM',defaut='NON',into=('OUI','NON')),
+
+ # Permet de grouper des mailles dans un meme sous-doamine
+ GROUPAGE =FACT(statut='f',max='**',
+ GROUP_MA =SIMP(statut='o',typ=grma,),
+ ),
+ # Permet d'appliquer des poids sur certaines mailles
+ POIDS_MAILLES =FACT(statut='f',max='**',
+ GROUP_MA =SIMP(statut='o',typ=grma,),
+ POIDS =SIMP(statut='f',typ='I'),
+ ),
+ # Prefixe pour le nom des group_ma definissant les sous-domaines
+ NOM_GROUP_MA =SIMP(statut='f',typ='TXM',defaut='SD' ),
+
+ # Traiter les mailles de bords (elles sont enlevees du graphe puis reinjectees)
+ TRAITER_BORDS =SIMP(statut='f',typ='TXM',defaut='OUI',into=('OUI','NON') ),
+
+ # Si le mot-clé suivant est renseigné, crée de nouveau group_ma a partir des bords
+ # Note : le calcul FETI sera impossible
+ b_traiter_bords =BLOC(condition="TRAITER_BORDS == 'OUI'", fr="Crée t on des nouveaux group_ma",
+ NOM_GROUP_MA_BORD =SIMP(statut='f',typ='TXM'),
+ ),
+
+ INFO =SIMP(statut='f',typ='I',into=(1, 2), defaut=1),
+
+);
+#& MODIF COMMANDE DATE 03/01/2006 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
SPEC_FONC_FORME =FACT(statut='f',
regles=(UN_PARMI('INTE_SPEC','GRAPPE_1'),
ENSEMBLE('INTE_SPEC','FONCTION'),),
- INTE_SPEC =SIMP(statut='f',typ=tabl_intsp ),
+ INTE_SPEC =SIMP(statut='f',typ=table_sdaster),
FONCTION =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),max='**'),
GRAPPE_1 =SIMP(statut='f',typ='TXM',into=("DEBIT_180","DEBIT_300",) ),
NOEUD =SIMP(statut='o',typ=no),
),
SPEC_EXCI_POINT =FACT(statut='f',
regles=(UN_PARMI('INTE_SPEC','GRAPPE_2'),),
- INTE_SPEC =SIMP(statut='f',typ=tabl_intsp ),
+ INTE_SPEC =SIMP(statut='f',typ=table_sdaster),
GRAPPE_2 =SIMP(statut='f',typ='TXM',
into=("ASC_CEN","ASC_EXC","DES_CEN","DES_EXC",) ),
# Quels sont les statuts des mots cles à l interieur des deux blocs qui suivent
),
TITRE =SIMP(statut='f',typ='TXM',max='**'),
) ;
-#& MODIF COMMANDE DATE 15/02/2005 AUTEUR NICOLAS O.NICOLAS
+#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
DEFI_SQUELETTE=OPER(nom="DEFI_SQUELETTE",op= 110,sd_prod=squelette,
- fr="Définition d un maillage de visualisation",
+ fr="Définit un maillage pour visualiser les résultats d'une sous-structuration dynamique",
reentrant='n',
UIinfo={"groupes":("Maillage",)},
regles=(UN_PARMI('CYCLIQUE','MODELE_GENE','MAILLAGE'),
),
TITRE =SIMP(statut='f',typ='TXM',max='**'),
) ;
-#& MODIF COMMANDE DATE 22/11/2004 AUTEUR JMBHH01 J.M.PROIX
+#& MODIF COMMANDE DATE 03/01/2006 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
-DEFI_TEXTURE=OPER(nom="DEFI_TEXTURE",op= 181,sd_prod=tabl_texture,
- fr=" ",reentrant='n',
+DEFI_TEXTURE=OPER(nom="DEFI_TEXTURE",op= 181,sd_prod=table_sdaster,reentrant='n',
+ fr="Définir pour un materiau CFC, les orientations cristillographiques et leur système de glissement ",
UIinfo={"groupes":("Modélisation",)},
SYST_GLISSEMENT =FACT(statut='o',min=3,max=3,
N =SIMP(statut='o',typ='R',min=12,max=12 ),
),
TITRE =SIMP(statut='f',typ='TXM',max='**' ),
) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 03/01/2006 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
-DEFI_THER_JOULE=OPER(nom="DEFI_THER_JOULE",op= 121,sd_prod=fonction_sdaster,reentrant='n',
- UIinfo={"groupes":("Outils métier",)},
- fr="Calculer la fonction d évolution temporelle de température due à l effet JOULE dans un cable",
- LIST_INST =SIMP(statut='o',typ=listr8_sdaster),
- INST_CC_INIT =SIMP(statut='f',typ='R',defaut= 0.0E+0 ),
- INST_CC_FIN =SIMP(statut='f',typ='R',defaut= 1.0E+10),
- INST_RENC_INIT =SIMP(statut='f',typ='R',defaut= 1.0E+10),
- INST_RENC_FIN =SIMP(statut='f',typ='R',defaut= 1.0E+10),
- TEMP_EXT_POSE =SIMP(statut='f',typ='R',defaut= 15.0E+0),
- TEMP_EXT =SIMP(statut='f',typ='R',defaut= 15.0E+0),
- TEMP_RESI_REF =SIMP(statut='f',typ='R',defaut= 20.0E+0),
- PARA_COND_1D =FACT(statut='f',max='**',
- INTE_CC =SIMP(statut='f',typ='R',defaut= 0.0E+0),
- INTE_RENC =SIMP(statut='f',typ='R',defaut= 0.0E+0),
- A =SIMP(statut='f',typ='R',defaut= 1.0E+0),
- SECTION =SIMP(statut='f',typ='TXM',defaut="CERCLE",into=("CERCLE",) ),
- RESI_R0 =SIMP(statut='f',typ='R',defaut= 0.0E+0),
- RESI_R1 =SIMP(statut='f',typ='R',defaut= 0.E+0),
- RHO_CP =SIMP(statut='f',typ='R',defaut= 1.0E+0),
- COEF_H =SIMP(statut='f',typ='R',defaut= 40.0E+0),
- TEMP_INIT =SIMP(statut='f',typ='R',defaut= 15.0E+0),
+DEFI_TRC=OPER(nom="DEFI_TRC",op=94,sd_prod=table_sdaster,reentrant='n',
+ UIinfo={"groupes":("Modélisation",)},
+ fr="Définir d'un diagramme de transformations en refroidissement continu (TRC) de référence d'un acier"
+ +" pour les calculs métallurgiques.",
+ HIST_EXP =FACT(statut='o',max='**',
+ VALE =SIMP(statut='o',typ='R',max='**'),
+ ),
+ TEMP_MS =FACT(statut='o',max='**',
+ SEUIL =SIMP(statut='o',typ='R'),
+ AKM =SIMP(statut='o',typ='R'),
+ BKM =SIMP(statut='o',typ='R'),
+ TPLM =SIMP(statut='o',typ='R'),
+ ),
+ GRAIN_AUST =FACT(statut='f',max='**',
+ DREF =SIMP(statut='f',typ='R'),
+ A =SIMP(statut='f',typ='R'),
),
) ;
-
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 21/02/2006 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
-DEFI_TRC=OPER(nom="DEFI_TRC",op=94,sd_prod=tabl_trc,reentrant='n',
- UIinfo={"groupes":("Modélisation",)},
- fr="Définition d un diagramme de transformations en refroidissement continu d un acier",
- HIST_EXP =FACT(statut='o',max='**',
- VALE =SIMP(statut='o',typ='R',max='**'),
- ),
- TEMP_MS =FACT(statut='o',max='**',
- SEUIL =SIMP(statut='o',typ='R'),
- AKM =SIMP(statut='o',typ='R'),
- BKM =SIMP(statut='o',typ='R'),
- TPLM =SIMP(statut='o',typ='R'),
- ),
- GRAIN_AUST =FACT(statut='f',max='**',
- DREF =SIMP(statut='f',typ='R'),
- A =SIMP(statut='f',typ='R'),
- ),
-) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-DEPL_INTERNE=OPER(nom="DEPL_INTERNE",op=89,sd_prod=cham_no_depl_r,reentrant='n',
+DEPL_INTERNE=OPER(nom="DEPL_INTERNE",op=89,sd_prod=cham_no_sdaster,reentrant='n',
UIinfo={"groupes":("Matrices/vecteurs",)},
- fr="Récupération du champ de déplacement interne à une sous-structure",
- DEPL_GLOBAL =SIMP(statut='o',typ=cham_no_depl_r),
+ fr="Calculer le champ de déplacement à l'intérieur d'une sous-structure statique",
+ DEPL_GLOBAL =SIMP(statut='o',typ=cham_no_sdaster),
MAILLE =SIMP(statut='o',typ=ma,),
NOM_CAS =SIMP(statut='f',typ='TXM',defaut=" "),
) ;
-#& MODIF COMMANDE DATE 03/11/2004 AUTEUR MCOURTOI M.COURTOIS
+#& MODIF COMMANDE DATE 10/05/2006 AUTEUR MCOURTOI M.COURTOIS
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
-DETRUIRE=PROC(nom="DETRUIRE",op=-7,
+DETRUIRE=MACRO(nom="DETRUIRE",op=-7,
UIinfo={"groupes":("Gestion du travail",)},
- fr="Destruction d un concept utilisateur dans la base GLOBALE",
+ fr="Détruit des concepts utilisateurs dans la base GLOBALE ou des objets JEVEUX",
op_init=ops.detruire,
- regles=(UN_PARMI('CONCEPT','OBJET',),),
+ regles=(UN_PARMI('CONCEPT','OBJET',),),
CONCEPT =FACT(statut='f',max='**',
+ regles=(DERIVABLE('NOM'),),
NOM =SIMP(statut='o',typ=assd,validators=NoRepeat(),max='**'),
+ SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),
+ fr="Paramètre de sensibilité.",
+ ang="Sensitivity parameter",max='**'),
),
OBJET =FACT(statut='f',max='**',
CLASSE =SIMP(statut='f',typ='TXM',into=('G','V','L'),defaut='G'),
ALARME =SIMP(statut='f',typ='TXM',into=('OUI','NON'),defaut='OUI',),
INFO =SIMP(statut='f',typ='I',into=(1,2),defaut=2, ),
);
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 03/01/2006 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
-DIST_LIGN_3D=OPER(nom="DIST_LIGN_3D",op= 133,sd_prod=fonction_sdaster,reentrant='n',
- UIinfo={"groupes":("Outils métier",)},
- fr="Calcul sous forme d une fonction du temps de la distance minimale entre deux structures filaires",
- regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','INST','LIST_INST'),
- UN_PARMI('GROUP_MA_2','POIN_FIXE'),),
- MODELE =SIMP(statut='o',typ=modele_sdaster),
- RESULTAT =SIMP(statut='o',typ=(evol_elas,dyna_trans,evol_noli) ),
- TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",)),
- NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
- INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
- LIST_INST =SIMP(statut='f',typ=listr8_sdaster),
- LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster),
- PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3 ),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
- GROUP_MA_1 =SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**'),
- GROUP_MA_2 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- POIN_FIXE =SIMP(statut='f',typ='R',min=3,max=3),
- INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
-) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-DYNA_ALEA_MODAL=OPER(nom="DYNA_ALEA_MODAL",op= 131,sd_prod=tabl_intsp
- ,fr="Calcule la réponse spectrale d une structure linéaire sous une excitation connue par sa DSP",
+DYNA_ALEA_MODAL=OPER(nom="DYNA_ALEA_MODAL",op= 131,sd_prod=table_sdaster
+ ,fr="Calcul de la réponse spectrale d'une structure linéaire sous une excitation connue par sa DSP",
reentrant='n',
UIinfo={"groupes":("Résolution",)},
BASE_MODALE =FACT(statut='o',
# MODE_STAT devrait etre dans EXCIT car est utile et obligatoire que si NOM_CMP=depl_r, on pourrait
# ainsi rajouter un bloc du genre b_mod_stat= BLOC(condition = "(GRANDEUR == None) or (GRANDEUR == 'DEPL_R')",
EXCIT =FACT(statut='o',
- INTE_SPEC =SIMP(statut='o',typ=tabl_intsp ),
+ INTE_SPEC =SIMP(statut='o',typ=table_sdaster),
NUME_VITE_FLUI =SIMP(statut='f',typ='I' ),
OPTION =SIMP(statut='f',typ='TXM',defaut="TOUT",into=("TOUT","DIAG",) ),
MODAL =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
TITRE =SIMP(statut='f',typ='TXM',max='**'),
INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
) ;
-#& MODIF COMMANDE DATE 22/02/2005 AUTEUR DURAND C.DURAND
+#& MODIF COMMANDE DATE 10/05/2006 AUTEUR MCOURTOI M.COURTOIS
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
-def dyna_line_harm_prod(MATR_MASS,**args):
- if AsType(MATR_MASS) == matr_asse_depl_r : return dyna_harmo
- if AsType(MATR_MASS) == matr_asse_depl_c : return dyna_harmo
- if AsType(MATR_MASS) == matr_asse_pres_c : return acou_harmo
- if AsType(MATR_MASS) == matr_asse_gene_r : return harm_gene
- if AsType(MATR_MASS) == matr_asse_gene_c : return harm_gene
- raise AsException("type de concept resultat non prevu")
+def dyna_line_harm_prod(MATR_RIGI,**args):
+ if (AsType(MATR_RIGI) == matr_asse_depl_r) : return dyna_harmo
+ elif (AsType(MATR_RIGI) == matr_asse_depl_c) : return dyna_harmo
+ elif (AsType(MATR_RIGI) == matr_asse_pres_c) : return acou_harmo
+ elif (AsType(MATR_RIGI) == matr_asse_gene_r) : return harm_gene
+ elif (AsType(MATR_RIGI) == matr_asse_gene_c) : return harm_gene
+ raise AsException("type de concept resultat non prevu")
DYNA_LINE_HARM=OPER(nom="DYNA_LINE_HARM",op= 60,sd_prod=dyna_line_harm_prod,
- fr="Réponse dynamique complexe d un système à une excitation harmonique",
- reentrant='n',
+ fr="Calcul de la réponse dynamique complexe d'un système à une excitation harmonique",
+ reentrant='f',
UIinfo={"groupes":("Résolution",)},
regles=(PRESENT_ABSENT('AMOR_REDUIT','MATR_AMOR'),
PRESENT_ABSENT('AMOR_REDUIT','LIST_AMOR'),
PRESENT_ABSENT('MATR_AMOR','LIST_AMOR'),
- UN_PARMI('FREQ','LIST_FREQ'),),
+ UN_PARMI('FREQ','LIST_FREQ'),
+ CONCEPT_SENSIBLE('ENSEMBLE'),),
MODELE =SIMP(statut='f',typ=modele_sdaster ),
CHAM_MATER =SIMP(statut='f',typ=cham_mater ),
CARA_ELEM =SIMP(statut='f',typ=cara_elem ),
LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster ),
TOUT_CHAM =SIMP(statut='f',typ='TXM',into=("OUI",)),
NOM_CHAM =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=3,into=("DEPL","VITE","ACCE") ),
+ b_reuse =BLOC(condition = "reuse",fr="en mode concept reentrant : RESULTAT obligatoire",
+ RESULTAT =SIMP(statut='o',typ=(dyna_harmo,harm_gene)),
+ ),
EXCIT =FACT(statut='o',max='**',
regles=(UN_PARMI('VECT_ASSE','CHARGE'),
- UN_PARMI('FONC_MULT','FONC_MULT_C','COEF_MULT','COEF_MULT_C'),),
- VECT_ASSE =SIMP(statut='f',typ=(cham_no_depl_r,cham_no_depl_c,cham_no_pres_c,vect_asse_gene_r,vect_asse_gene_c ) ),
+ UN_PARMI('FONC_MULT','FONC_MULT_C','COEF_MULT','COEF_MULT_C'),
+ ),
+ VECT_ASSE =SIMP(statut='f',typ=(cham_no_sdaster,vect_asse_gene) ),
CHARGE =SIMP(statut='f',typ=char_meca ),
TYPE_CHARGE =SIMP(statut='f',typ='TXM',defaut="FIXE",into=("FIXE",) ),
FONC_MULT_C =SIMP(statut='f',typ=fonction_c ),
# Rajouter test icompatibilite vect_asse et sensibilite
# Peut-on aussi rajouter ici le test d incompatibilite charge complexe - derivation
# presents dans le Fortran
-#& MODIF COMMANDE DATE 30/06/2004 AUTEUR MCOURTOI M.COURTOIS
+#& MODIF COMMANDE DATE 10/05/2006 AUTEUR MCOURTOI M.COURTOIS
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
DYNA_LINE_TRAN=OPER(nom="DYNA_LINE_TRAN",op= 48,sd_prod=dyna_trans,
- fr="Réponse temporelle d un système à une excitation transitoire",
+ fr="Calcul de la réponse dynamique transitoire à une excitation temporelle quelconque",
reentrant='f',
UIinfo={"groupes":("Résolution",)},
# regles=(UN_PARMI('WILSON','DIFF_CENTRE','ADAPT'),),
- regles=(UN_PARMI('NEWMARK','WILSON','DIFF_CENTRE','ADAPT'),),
+ regles=(UN_PARMI('NEWMARK','WILSON','DIFF_CENTRE','ADAPT'),
+ CONCEPT_SENSIBLE('ENSEMBLE'),),
MODELE =SIMP(statut='f',typ=modele_sdaster ),
CHAM_MATER =SIMP(statut='f',typ=cham_mater ),
CARA_ELEM =SIMP(statut='f',typ=cara_elem ),
ADAPT =FACT(statut='f',
),
ETAT_INIT =FACT(statut='f',
- regles=(AU_MOINS_UN('DYNA_TRANS', 'DEPL_INIT', 'VITE_INIT',),
- PRESENT_ABSENT('DYNA_TRANS', 'DEPL_INIT', 'VITE_INIT'),),
+ regles=(AU_MOINS_UN('DYNA_TRANS', 'DEPL_INIT', 'VITE_INIT', 'ACCE_INIT'),
+ PRESENT_ABSENT('DYNA_TRANS', 'DEPL_INIT', 'VITE_INIT', 'ACCE_INIT'),),
DYNA_TRANS =SIMP(statut='f',typ=dyna_trans ),
b_dyna_trans =BLOC(condition = "DYNA_TRANS != None",
regles=(EXCLUS('NUME_INIT','INST_INIT' ),),
CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
),
),
- DEPL_INIT =SIMP(statut='f',typ=(cham_no_depl_r) ),
- VITE_INIT =SIMP(statut='f',typ=(cham_no_depl_r) ),
+ DEPL_INIT =SIMP(statut='f',typ=cham_no_sdaster),
+ VITE_INIT =SIMP(statut='f',typ=cham_no_sdaster),
+ ACCE_INIT =SIMP(statut='f',typ=cham_no_sdaster),
),
EXCIT =FACT(statut='f',max='**',
regles=(UN_PARMI('CHARGE','VECT_ASSE'),
PRESENT_PRESENT('ACCE','VITE','DEPL'),
# PRESENT_ABSENT('MULT_APPUI','FONC_MULT'),
),
- VECT_ASSE =SIMP(statut='f',typ=cham_no_depl_r ),
+ VECT_ASSE =SIMP(statut='f',typ=cham_no_sdaster),
CHARGE =SIMP(statut='f',typ=char_meca ),
FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
COEF_MULT =SIMP(statut='f',typ='R' ),
NB_MODE =SIMP(statut='f',typ='I',defaut= 9999 ),
REAC_VITE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
),
-# ce n est pas le mot clesolveur standard
+
SOLVEUR =FACT(statut='d',
- NPREC =SIMP(statut='f',typ='I',defaut= 8 ),
- STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
- RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ),
- NMAX_ITER =SIMP(statut='f',typ='I',defaut= 0 ),
+ METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC","MUMPS") ),
+
+ b_mult_front =BLOC(condition = "METHODE == 'MULT_FRONT' ",fr="Paramètres de la méthode multi frontale",
+ RENUM =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ),
+ ),
+
+ b_ldlt =BLOC(condition = "METHODE == 'LDLT' ",fr="Paramètres de la méthode LDLT",
+ RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("RCMK","SANS") ),
+ ),
+
+ b_ldlt_mult =BLOC(condition = "METHODE == 'LDLT' or METHODE == 'MULT_FRONT'",
+ fr="Paramètres relatifs à la non inversibilité de la matrice à factorise",
+ NPREC =SIMP(statut='f',typ='I',defaut=8),
+ STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+ ),
+
+ b_gcpc =BLOC(condition = "METHODE == 'GCPC' ", fr="Paramètres de la méthode du gradient conjugué",
+ PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC",),defaut="LDLT_INC" ),
+ NIVE_REMPLISSAGE=SIMP(statut='f',typ='I',defaut= 0 ),
+ RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ),
+ RESI_RELA =SIMP(statut='f',typ='R',defaut=1.E-6),
+ NMAX_ITER =SIMP(statut='f',typ='I',defaut= 0 ),
+ ),
+
+ b_mumps =BLOC(condition = "METHODE == 'MUMPS' ",fr="Paramètres de la méthode MUMPS",
+ TYPE_RESOL =SIMP(statut='f',typ='TXM',defaut='AUTO',into=('NONSYM','SYMGEN','SYMDEF','AUTO')),
+ PCENT_PIVOT =SIMP(statut='f',typ='I',defaut=20,),
+ RESI_RELA =SIMP(statut='f',typ='R',defaut=1.E-6),
+ ),
),
+
INCREMENT =FACT(statut='o',max='**',
regles=(UN_PARMI('LIST_INST','FONC_INST','PAS'),),
- LIST_INST =SIMP(statut='f',typ=listr8_sdaster ),
- FONC_INST =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
+ LIST_INST =SIMP(statut='f',typ=listr8_sdaster ),
+ FONC_INST =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
PAS =SIMP(statut='f',typ='R' ),
b_pas =BLOC(condition = "PAS != None",
INST_INIT =SIMP(statut='f',typ='R' ),
- INST_FIN =SIMP(statut='f',typ='R' ),
+ INST_FIN =SIMP(statut='f',typ='R' ),
),
b_list_fonc =BLOC(condition = "LIST_INST != None or FONC_INST != None",
regles=(EXCLUS('INST_FIN','NUME_FIN'),),
- NUME_FIN =SIMP(statut='f',typ='I' ),
- INST_FIN =SIMP(statut='f',typ='R' ),
+ NUME_FIN =SIMP(statut='f',typ='I' ),
+ INST_FIN =SIMP(statut='f',typ='R' ),
),
VITE_MIN =SIMP(statut='f',typ='TXM',defaut="NORM",into=("MAXI","NORM") ),
COEF_MULT_PAS =SIMP(statut='f',typ='R',defaut= 1.1 ),
CHAM_EXCLU =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',into=("DEPL","VITE","ACCE") ),
),
SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**',
- fr="Liste des param\350tres de sensibilit\351.",
+ fr="Liste des paramétres de sensibilité.",
ang="List of sensitivity parameters",
),
TITRE =SIMP(statut='f',typ='TXM',max='**'),
INFO =SIMP(statut='f',typ='I',into=(1,2) ),
) ;
-#& MODIF COMMANDE DATE 01/04/2005 AUTEUR VABHHTS J.PELLET
+#& MODIF COMMANDE DATE 16/05/2006 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
DYNA_NON_LINE=OPER(nom="DYNA_NON_LINE",op= 70,sd_prod=evol_noli,reentrant='f',
- fr="Analyse mécanique dynamique non linéaire",
+ fr="Calcul de l'évolution dynamique d'une structure dont le matériau ou la géométrie ont un comportement non linéaire",
UIinfo={"groupes":("Résolution",)},
regles=(AU_MOINS_UN('COMP_INCR','COMP_ELAS',),
- UN_PARMI('NEWMARK','HHT','TETA_METHODE', ),),
+ UN_PARMI('NEWMARK','HHT','TETA_METHODE',),
+ CONCEPT_SENSIBLE('ENSEMBLE'),),
MODELE =SIMP(statut='o',typ=modele_sdaster),
CHAM_MATER =SIMP(statut='o',typ=cham_mater),
MODE_STAT =SIMP(statut='f',typ=(mode_stat_depl,mode_stat_acce,mode_stat_forc,)),
MAILLE =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**',),
),
AMOR_MODAL =FACT(statut='f',
+ regles=(EXCLUS('AMOR_REDUIT','LIST_AMOR'),),
MODE_MECA =SIMP(statut='f',typ=mode_meca),
AMOR_REDUIT =SIMP(statut='f',typ='R',max='**' ),
+ LIST_AMOR =SIMP(statut='f',typ=listr8_sdaster ),
NB_MODE =SIMP(statut='f',typ='I',defaut= 9999 ),
REAC_VITE =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
),
- VARI_COMM =FACT(statut='f',
- regles=(AU_MOINS_UN('IRRA',),),
- IRRA =SIMP(statut='f',typ=evol_varc),
- CORROSION =SIMP(statut='f',typ=carte_corr_r),
- ),
COMP_INCR =C_COMP_INCR(),
COMP_ELAS =FACT(statut='f',max='**',
RELATION =SIMP(statut='o',typ='TXM',defaut="ELAS",
into=("ELAS","ELAS_VMIS_LINE","ELAS_VMIS_TRAC",
- "ELAS_POUTRE_GR","CABLE")),
+ "ELAS_POUTRE_GR","CABLE","ELAS_HYPER")),
ELAS =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
ELAS_VMIS_TRAC =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
ELAS_VMIS_LINE =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
+ ELAS_HYPER =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
ELAS_POUTRE_GR =SIMP(statut='c',typ='I',defaut=3,into=(3,)),
CABLE =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
DEFORMATION =SIMP(statut='f',typ='TXM',defaut="PETIT" ,into=("PETIT","GREEN","GREEN_GR",) ),
TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ RESI_INTE_RELA =SIMP(statut='f',typ='R',defaut= 1.0E-6),
+ ITER_INTE_MAXI =SIMP(statut='f',typ='I',defaut= 10 ),
+ ITER_INTE_PAS =SIMP(statut='f',typ='I',defaut= 0 ),
+ RESO_INTE =SIMP(statut='f',typ='TXM',defaut="IMPLICITE",
+ into=("RUNGE_KUTTA_2","RUNGE_KUTTA_4","IMPLICITE")),
),
#-------------------------------------------------------------------
b_reuse =BLOC(condition = "reuse",fr="en mode concept reentrant : ETAT_INIT obligatoire",
ETAT_INIT =FACT(statut='o',
- regles=(AU_MOINS_UN('EVOL_NOLI','DEPL','VITE','SIGM','VARI','VARI_NON_LOCAL',),
+ regles=(AU_MOINS_UN('EVOL_NOLI','DEPL','VITE','ACCE','SIGM','VARI','VARI_NON_LOCAL',),
EXCLUS('EVOL_NOLI','DEPL',),
EXCLUS('EVOL_NOLI','VITE'),
+ EXCLUS('EVOL_NOLI','ACCE'),
EXCLUS('EVOL_NOLI','SIGM',),
EXCLUS('EVOL_NOLI','VARI',),
EXCLUS('EVOL_NOLI','VARI_NON_LOCAL',),
EXCLUS('NUME_ORDRE','INST'), ),
- DEPL =SIMP(statut='f',typ=cham_no_depl_r),
- VITE =SIMP(statut='f',typ=cham_no_depl_r),
- SIGM =SIMP(statut='f',typ=(cham_elem_sief_r,carte_sief_r)),
- VARI =SIMP(statut='f',typ=cham_elem_vari_r),
- VARI_NON_LOCAL =SIMP(statut='f',typ=cham_no_vanl_r),
+ DEPL =SIMP(statut='f',typ=cham_no_sdaster),
+ VITE =SIMP(statut='f',typ=cham_no_sdaster),
+ ACCE =SIMP(statut='f',typ=cham_no_sdaster),
+ SIGM =SIMP(statut='f',typ=(cham_elem,carte_sdaster)),
+ VARI =SIMP(statut='f',typ=cham_elem),
+ VARI_NON_LOCAL =SIMP(statut='f',typ=cham_no_sdaster),
EVOL_NOLI =SIMP(statut='f',typ=evol_noli),
NUME_ORDRE =SIMP(statut='f',typ='I'),
INST =SIMP(statut='f',typ='R'),
),),
b_not_reuse =BLOC(condition = "not reuse",fr="en mode concept non reentrant : ETAT_INIT facultatif",
ETAT_INIT =FACT(statut='f',
- regles=(AU_MOINS_UN('EVOL_NOLI','DEPL','VITE','SIGM','VARI','VARI_NON_LOCAL',),
+ regles=(AU_MOINS_UN('EVOL_NOLI','DEPL','VITE','ACCE','SIGM','VARI','VARI_NON_LOCAL',),
EXCLUS('EVOL_NOLI','DEPL',),
EXCLUS('EVOL_NOLI','VITE'),
+ EXCLUS('EVOL_NOLI','ACCE'),
EXCLUS('EVOL_NOLI','SIGM',),
EXCLUS('EVOL_NOLI','VARI',),
EXCLUS('EVOL_NOLI','VARI_NON_LOCAL',),
EXCLUS('NUME_ORDRE','INST'), ),
- DEPL =SIMP(statut='f',typ=cham_no_depl_r),
- VITE =SIMP(statut='f',typ=cham_no_depl_r),
- SIGM =SIMP(statut='f',typ=(cham_elem_sief_r,carte_sief_r)),
- VARI =SIMP(statut='f',typ=cham_elem_vari_r),
- VARI_NON_LOCAL =SIMP(statut='f',typ=cham_no_vanl_r),
+ DEPL =SIMP(statut='f',typ=cham_no_sdaster),
+ VITE =SIMP(statut='f',typ=cham_no_sdaster),
+ ACCE =SIMP(statut='f',typ=cham_no_sdaster),
+ SIGM =SIMP(statut='f',typ=(cham_elem,carte_sdaster)),
+ VARI =SIMP(statut='f',typ=cham_elem),
+ VARI_NON_LOCAL =SIMP(statut='f',typ=cham_no_sdaster),
EVOL_NOLI =SIMP(statut='f',typ=evol_noli),
NUME_ORDRE =SIMP(statut='f',typ='I'),
INST =SIMP(statut='f',typ='R'),
DELTA =SIMP(statut='f',typ='R',defaut= 0.5),
),
HHT =FACT(statut='f',
- ALPHA =SIMP(statut='f',typ='R'
- ,defaut= -0.29999999999999999 ),
+ ALPHA =SIMP(statut='f',typ='R',defaut= -0.3 ),
+ MODI_EQUI =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
),
TETA_METHODE =FACT(statut='f',
TETA =SIMP(statut='f',typ='R'
REAC_ITER_ELAS =SIMP(statut='f',typ='I',defaut=0),
PAS_MINI_ELAS =SIMP(statut='f',typ='R',defaut=0.0E+0),
),
+ PARM_THETA =SIMP(statut='f',typ='R',defaut= 1. ),
SOLVEUR =FACT(statut='d',
METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC","MUMPS") ),
b_mult_front =BLOC(condition= "METHODE == 'MULT_FRONT' ",fr="Paramètres de la méthode multi frontale",
ITER_GLOB_MAXI =SIMP(statut='f',typ='I',defaut=10),
ITER_GLOB_ELAS =SIMP(statut='f',typ='I',defaut=25),
ARRET =SIMP(statut='f',typ='TXM',defaut="OUI"),
- RESI_INTE_RELA =SIMP(statut='f',typ='R'
- ,defaut= 1.0E-6),
- ITER_INTE_MAXI =SIMP(statut='f',typ='I',defaut= 10 ),
- ITER_INTE_PAS =SIMP(statut='f',typ='I',defaut= 0 ),
- RESO_INTE =SIMP(statut='f',typ='TXM',defaut="IMPLICITE",
- into=("RUNGE_KUTTA_2","RUNGE_KUTTA_4","IMPLICITE")),
+ ),
+#-------------------------------------------------------------------
+ SUIVI_DDL = FACT(statut='f',max=4,
+ regles=(UN_PARMI('NOEUD','MAILLE'),
+ PRESENT_PRESENT('MAILLE','POINT'),),
+ NUME_SUIVI =SIMP(statut='o',typ='I' ,min=1,max=4),
+ NOM_CHAM =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=1,
+ into=("DEPL","VITE","ACCE","SIEF_ELGA",
+ "VARI_ELGA","FORC_NODA","DEPL_ABSOLU","VITE_ABSOLU","ACCE_ABSOLU",)),
+ NOM_CMP =SIMP(statut='o',typ='TXM',max=1 ),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max=1),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max=1),
+ POINT =SIMP(statut='f',typ='I' ,validators=NoRepeat(),max=1),
+ ),
+
+ AFFICHAGE = FACT(statut='f',max=16,
+
+ UNITE = SIMP(statut='f',typ='I',val_min=1),
+
+ LONG_R = SIMP(statut='f',typ='I',defaut=12,val_min=1,val_max=12),
+ PREC_R = SIMP(statut='f',typ='I',defaut=5, val_min=1,val_max=8),
+ LONG_I = SIMP(statut='f',typ='I',defaut=6, val_min=1,val_max=12),
+
+ NOM_COLONNE = SIMP(statut='o',typ='TXM',defaut="STANDARD",
+ into=("STANDARD","MINIMUM",
+ "ITER_NEWT",
+ "INCR_TPS",
+ "RESI_RELA","RELA_NOEU",
+ "RESI_MAXI","MAXI_NOEU",
+ "RESI_REFE","REFE_NOEU",
+ "RELI_ITER","RELI_COEF",
+ "PILO_PARA",
+ "LAGR_ECAR","LAGR_INCR","LAGR_ITER",
+ "MATR_ASSE",
+ "ITER_DEBO",
+ "CTCD_ITER","CTCD_INFO","CTCD_GEOM","CTCD_NOEU",
+ "CTCC_GEOM","CTCC_FROT","CTCC_CONT",
+ "SUIV_1","SUIV_2","SUIV_3","SUIV_4",
+ ),
+ ),
+ b_residu = BLOC(condition = " NOM_COLONNE == 'RESI_RELA' or \
+ NOM_COLONNE == 'RESI_MAXI' or\
+ NOM_COLONNE == 'RESI_REFE' or\
+ NOM_COLONNE == 'CTCD_GEOM' or\
+ NOM_COLONNE == 'STANDARD' ",
+ INFO_RESIDU = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
+ ),
),
#-------------------------------------------------------------------
ARCHIVAGE =FACT(statut='f',
MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
POINT =SIMP(statut='f',typ='I' ,max='**'),
),
+#-------------------------------------------------------------------
+ CRIT_FLAMB =FACT(statut='f',min=1,max=1,
+ NB_FREQ =SIMP(statut='f',typ='I',max=1,defaut=3),
+ CHAR_CRIT =SIMP(statut='f',typ='R',min=2,max=2,defaut=(-10.0,10.),
+ fr="Valeur des deux charges critiques délimitant la bande de recherche en HPP"),
+ ),
+ MODE_VIBR =FACT(statut='f',min=1,max=1,
+ MATR_RIGI =SIMP(statut='f',typ='TXM',defaut="ELASTIQUE",into=("ELASTIQUE","TANGENTE") ),
+ NB_FREQ =SIMP(statut='f',typ='I',max=1,defaut=3),
+ ),
#-------------------------------------------------------------------
SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**',
fr="Liste des paramètres de sensibilité",
R =SIMP(statut='f',typ='R',defaut= 1000.),
ITER_PRIM_MAXI =SIMP(statut='f',typ='I',defaut= 10),
),
-#-------------------------------------------------------------------
- PARM_THETA =SIMP(statut='f',typ='R'
- ,defaut= 1. ),
#-------------------------------------------------------------------
INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
TITRE =SIMP(statut='f',typ='TXM',max='**'),
) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 03/01/2006 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
-DYNA_SPEC_MODAL=OPER(nom="DYNA_SPEC_MODAL",op= 147,sd_prod=tabl_intsp,
+DYNA_SPEC_MODAL=OPER(nom="DYNA_SPEC_MODAL",op= 147,sd_prod=table_sdaster,
fr="Calcul de la réponse par recombinaison modale d'une structure linéaire pour une excitation aléatoire",
reentrant='n',
UIinfo={"groupes":("Résolution",)},
BASE_ELAS_FLUI =SIMP(statut='o',typ=melasflu_sdaster ),
EXCIT =FACT(statut='o',
- INTE_SPEC_GENE =SIMP(statut='o',typ=tabl_intsp ),
+ INTE_SPEC_GENE =SIMP(statut='o',typ=table_sdaster),
),
OPTION =SIMP(statut='f',typ='TXM',defaut="TOUT",into=("TOUT","DIAG") ),
TITRE =SIMP(statut='f',typ='TXM',max='**'),
) ;
-#& MODIF COMMANDE DATE 12/04/2005 AUTEUR PBADEL P.BADEL
+#& MODIF COMMANDE DATE 16/05/2006 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2003 EDF R&D WWW.CODE-ASTER.ORG
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
#& RESPONSABLE
-DYNA_TRAN_EXPLI=OPER(nom="DYNA_TRAN_EXPLI",op= 70,sd_prod=evol_noli,reentrant='f',
- fr="Analyse mecanique dynamique explicite",
- regles=(AU_MOINS_UN('COMP_INCR','COMP_ELAS',),),
+DYNA_TRAN_EXPLI=OPER(nom="DYNA_TRAN_EXPLI",op= 70,sd_prod=evol_noli,reentrant='f',UIinfo={"groupe":("Résolution",)},
+ fr="Calcul de l'évolution dynamique d'une structure dont la géométrie ou le matériau ont un comportement"
+ +" non linéaire, par une méthode explicite sur les accélérations ",
+ regles=(AU_MOINS_UN('COMP_INCR','COMP_ELAS',),UN_PARMI('DIFF_CENT','TCHAMWA'),),
MODELE =SIMP(statut='o',typ=modele_sdaster),
CHAM_MATER =SIMP(statut='o',typ=cham_mater),
MODE_STAT =SIMP(statut='f',typ=(mode_stat_depl,mode_stat_acce,mode_stat_forc,)),
CARA_ELEM =SIMP(statut='f',typ=cara_elem),
+ MASS_DIAG =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
EXCIT =FACT(statut='o',max='**',
regles=(PRESENT_ABSENT('FONC_MULT','ACCE'),
PRESENT_PRESENT('ACCE','VITE','DEPL'),
GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
),
AMOR_MODAL =FACT(statut='f',
- MODE_MECA =SIMP(statut='f',typ=mode_meca),
+ MODE_MECA =SIMP(statut='o',typ=mode_meca),
AMOR_REDUIT =SIMP(statut='f',typ='R',max='**' ),
NB_MODE =SIMP(statut='f',typ='I',defaut= 9999 ),
REAC_VITE =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
),
- PROJ_MODAL =FACT(statut='f',
- MODE_MECA =SIMP(statut='f',typ=mode_meca),
+ PROJ_MODAL =FACT(statut='f',max='**',
+ MODE_MECA =SIMP(statut='o',typ=mode_meca),
NB_MODE =SIMP(statut='f',typ='I',defaut= 9999 ),
+ regles=(PRESENT_PRESENT('MASS_GENE','RIGI_GENE'),),
+ MASS_GENE =SIMP(statut='f',typ=matr_asse_gene_r),
+ RIGI_GENE =SIMP(statut='f',typ=matr_asse_gene_r),
+ AMOR_GENE =SIMP(statut='f',typ=matr_asse_gene_r),
+ ),
+ EXCIT_GENE =FACT(statut='f',
+ FONC_MULT =SIMP(statut='f',typ=fonction_sdaster,max='**' ),
+ VECT_GENE =SIMP(statut='f',typ=vect_asse_gene,max='**' ),
),
COMP_INCR =C_COMP_INCR(),
COMP_ELAS =FACT(statut='f',max='**',
RELATION =SIMP(statut='o',typ='TXM',defaut="ELAS",
into=("ELAS","ELAS_VMIS_LINE","ELAS_VMIS_TRAC",
- "ELAS_POUTRE_GR","CABLE")),
+ "ELAS_POUTRE_GR","CABLE","ELAS_HYPER")),
ELAS =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
ELAS_VMIS_TRAC =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
ELAS_VMIS_LINE =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
+ ELAS_HYPER =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
ELAS_POUTRE_GR =SIMP(statut='c',typ='I',defaut=3,into=(3,)),
CABLE =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
DEFORMATION =SIMP(statut='f',typ='TXM',defaut="PETIT" ,into=("PETIT","GREEN","GREEN_GR",) ),
TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ RESI_INTE_RELA =SIMP(statut='f',typ='R',defaut= 1.0E-6),
+ ITER_INTE_MAXI =SIMP(statut='f',typ='I',defaut= 10 ),
+ ITER_INTE_PAS =SIMP(statut='f',typ='I',defaut= 0 ),
+ RESO_INTE =SIMP(statut='f',typ='TXM',defaut="IMPLICITE",
+ into=("RUNGE_KUTTA_2","RUNGE_KUTTA_4","IMPLICITE")),
),
#-------------------------------------------------------------------
ETAT_INIT =FACT(statut='f',
- regles=(AU_MOINS_UN('EVOL_NOLI','DEPL','VITE','SIGM','VARI','VARI_NON_LOCAL',),
+ regles=(AU_MOINS_UN('EVOL_NOLI','DEPL','VITE','ACCE','SIGM','VARI','VARI_NON_LOCAL',),
EXCLUS('EVOL_NOLI','DEPL',),
EXCLUS('EVOL_NOLI','VITE'),
+ EXCLUS('EVOL_NOLI','ACCE'),
EXCLUS('EVOL_NOLI','SIGM',),
EXCLUS('EVOL_NOLI','VARI',),
EXCLUS('EVOL_NOLI','VARI_NON_LOCAL',),
EXCLUS('NUME_ORDRE','INST'), ),
- DEPL =SIMP(statut='f',typ=cham_no_depl_r),
- VITE =SIMP(statut='f',typ=cham_no_depl_r),
- SIGM =SIMP(statut='f',typ=(cham_elem_sief_r,carte_sief_r)),
- VARI =SIMP(statut='f',typ=cham_elem_vari_r),
- VARI_NON_LOCAL =SIMP(statut='f',typ=cham_no_vanl_r),
+ DEPL =SIMP(statut='f',typ=cham_no_sdaster),
+ VITE =SIMP(statut='f',typ=cham_no_sdaster),
+ ACCE =SIMP(statut='f',typ=cham_no_sdaster),
+ SIGM =SIMP(statut='f',typ=(cham_elem,carte_sdaster)),
+ VARI =SIMP(statut='f',typ=cham_elem),
+ VARI_NON_LOCAL =SIMP(statut='f',typ=cham_no_sdaster),
EVOL_NOLI =SIMP(statut='f',typ=evol_noli),
NUME_ORDRE =SIMP(statut='f',typ='I'),
INST =SIMP(statut='f',typ='R'),
VALE =SIMP(statut='f',typ='R'),
),
#-------------------------------------------------------------------
- NEWMARK =FACT(statut='d',
- ALPHA =SIMP(statut='f',typ='R',defaut= 0.25),
- DELTA =SIMP(statut='f',typ='R',defaut= 0.5),
+ DIFF_CENT =FACT(statut='f',
+ ),
+ TCHAMWA =FACT(statut='f',
+ PHI =SIMP(statut='f',typ='R',defaut= 1.05),
),
+ STOP_CFL =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")),
NEWTON =FACT(statut='c',
REAC_INCR =SIMP(statut='f',typ='I',defaut= 1 ),
PREDICTION =SIMP(statut='f',typ='TXM',into=("TANGENTE","ELASTIQUE") ),
REAC_ITER_ELAS =SIMP(statut='f',typ='I',defaut=0),
PAS_MINI_ELAS =SIMP(statut='f',typ='R',defaut=0.0E+0),
),
+ PARM_THETA =SIMP(statut='f',typ='R',defaut= 1. ),
SOLVEUR =FACT(statut='d',
METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC") ),
b_mult_front =BLOC(condition= "METHODE == 'MULT_FRONT' ",fr="Paramètres de la méthode multi frontale",
RESO_INTE =SIMP(statut='f',typ='TXM',defaut="IMPLICITE",
into=("RUNGE_KUTTA_2","RUNGE_KUTTA_4","IMPLICITE")),
),
+#-------------------------------------------------------------------
+ AFFICHAGE = FACT(statut='f',max=16,
+
+ UNITE = SIMP(statut='f',typ='I',val_min=1),
+
+ LONG_R = SIMP(statut='f',typ='I',defaut=12,val_min=1,val_max=12),
+ PREC_R = SIMP(statut='f',typ='I',defaut=5, val_min=1,val_max=8),
+ LONG_I = SIMP(statut='f',typ='I',defaut=6, val_min=1,val_max=12),
+
+ NOM_COLONNE = SIMP(statut='o',typ='TXM',defaut="STANDARD",
+ into=("STANDARD","MINIMUM",
+ "ITER_NEWT",
+ "INCR_TPS",
+ "RESI_RELA","RELA_NOEU",
+ "RESI_MAXI","MAXI_NOEU",
+ "RESI_REFE","REFE_NOEU",
+ "RELI_ITER","RELI_COEF",
+ "PILO_PARA",
+ "LAGR_ECAR","LAGR_INCR","LAGR_ITER",
+ "MATR_ASSE",
+ "ITER_DEBO",
+ "CTCD_ITER","CTCD_INFO","CTCD_GEOM","CTCD_NOEU",
+ "CTCC_GEOM","CTCC_FROT","CTCC_CONT",
+ "SUIV_1","SUIV_2","SUIV_3","SUIV_4",
+ ),
+ ),
+ b_residu = BLOC(condition = " NOM_COLONNE == 'RESI_RELA' or \
+ NOM_COLONNE == 'RESI_MAXI' or\
+ NOM_COLONNE == 'RESI_REFE' or\
+ NOM_COLONNE == 'CTCD_GEOM' or\
+ NOM_COLONNE == 'STANDARD' ",
+ INFO_RESIDU = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
+ ),
+ ),
#-------------------------------------------------------------------
ARCHIVAGE =FACT(statut='f',
regles=(EXCLUS('PAS_ARCH','LIST_INST','INST'),
R =SIMP(statut='f',typ='R',defaut= 1000.),
ITER_PRIM_MAXI =SIMP(statut='f',typ='I',defaut= 10),
),
-#-------------------------------------------------------------------
- PARM_THETA =SIMP(statut='f',typ='R'
- ,defaut= 1. ),
#-------------------------------------------------------------------
INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
TITRE =SIMP(statut='f',typ='TXM',max='**'),
) ;
-#& MODIF COMMANDE DATE 22/02/2005 AUTEUR DURAND C.DURAND
+#& MODIF COMMANDE DATE 21/02/2006 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
DYNA_TRAN_MODAL=OPER(nom="DYNA_TRAN_MODAL",op= 74,sd_prod=tran_gene,
- fr="Réponse dynamique transitoire en coordonnées généralisées par recombinaison modale",
+ fr="Calcul de la réponse dynamique transitoire d'un système amorti ou non en coordonées généralisées"
+ +" par superposition modale ou par sous structuration",
reentrant='f',
UIinfo={"groupes":("Résolution",)},
regles=(EXCLUS('AMOR_REDUIT','AMOR_GENE','LIST_AMOR'),
PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ),
CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
),
- DEPL_INIT_GENE =SIMP(statut='f',typ=vect_asse_gene_r ),
- VITE_INIT_GENE =SIMP(statut='f',typ=vect_asse_gene_r ),
+ DEPL_INIT_GENE =SIMP(statut='f',typ=vect_asse_gene ),
+ VITE_INIT_GENE =SIMP(statut='f',typ=vect_asse_gene ),
),
INCREMENT =FACT(statut='o',max='**',
INST_INIT =SIMP(statut='f',typ='R' ),
EXCLUS('MULT_APPUI','CORR_STAT'),
PRESENT_ABSENT('MULT_APPUI','COEF_MULT'),
PRESENT_ABSENT('MULT_APPUI','FONC_MULT'),),
- VECT_GENE =SIMP(statut='f',typ=vect_asse_gene_r ),
+ VECT_GENE =SIMP(statut='f',typ=vect_asse_gene ),
NUME_MODE =SIMP(statut='f',typ='I' ),
FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
COEF_MULT =SIMP(statut='f',typ='R' ),
D_FONC_DT2 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
),
CHOC =FACT(statut='f',max='**',
- regles=(UN_PARMI('NOEUD_1','GROUP_NO_1' ),
- PRESENT_ABSENT('NOEUD_1','GROUP_NO_1'),
- PRESENT_ABSENT('NOEUD_2','GROUP_NO_2'),),
+ regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD_1','GROUP_NO_1' ),
+ EXCLUS('NOEUD_2','GROUP_NO_2'),
+ PRESENT_ABSENT('GROUP_MA','NOEUD_2','GROUP_NO_2'),
+ PRESENT_ABSENT('MAILLE','NOEUD_2','GROUP_NO_2'),),
INTITULE =SIMP(statut='f',typ='TXM' ),
+ GROUP_MA =SIMP(statut='f',typ=grma),
+ MAILLE =SIMP(statut='f',typ=ma),
NOEUD_1 =SIMP(statut='f',typ=no),
NOEUD_2 =SIMP(statut='f',typ=no),
GROUP_NO_1 =SIMP(statut='f',typ=grno),
),
FLAMBAGE =FACT(statut='f',max='**',
regles=(UN_PARMI('NOEUD_1','GROUP_NO_1'),
- PRESENT_ABSENT('NOEUD_1','GROUP_NO_1'),
- PRESENT_ABSENT('NOEUD_2','GROUP_NO_2'),),
+ EXCLUS('NOEUD_2','GROUP_NO_2'),),
NOEUD_1 =SIMP(statut='f',typ=no),
NOEUD_2 =SIMP(statut='f',typ=no),
GROUP_NO_1 =SIMP(statut='f',typ=grno),
),
ANTI_SISM =FACT(statut='f',max='**',
regles=(UN_PARMI('NOEUD_1','GROUP_NO_1'),
- UN_PARMI('NOEUD_2','GROUP_NO_2'),
- PRESENT_ABSENT('NOEUD_1','GROUP_NO_1'),
- PRESENT_ABSENT('NOEUD_2','GROUP_NO_2'),),
+ UN_PARMI('NOEUD_2','GROUP_NO_2'),),
NOEUD_1 =SIMP(statut='f',typ=no),
NOEUD_2 =SIMP(statut='f',typ=no),
GROUP_NO_1 =SIMP(statut='f',typ=grno),
),
TITRE =SIMP(statut='f',typ='TXM',max='**'),
) ;
-#& MODIF COMMANDE DATE 23/08/2004 AUTEUR CIBHHLV L.VIVAN
+#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# RESPONSABLE VABHHTS J.PELLET
ENGENDRE_TEST=PROC(nom="ENGENDRE_TEST",op=178,
UIinfo={"groupes":("Impression",)},
+ fr="Engendre des tests pour la non régression du code (pour développeurs)",
regles=(UN_PARMI('TOUT','CO'),),
UNITE =SIMP(statut='f',typ='I',defaut=8),
TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
FORMAT_R =SIMP(statut='f',typ='TXM',defaut="1PE12.5"),
PREC_R =SIMP(statut='f',typ='TXM',defaut="1.E-5"),
) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
-EXEC_LOGICIEL=PROC(nom="EXEC_LOGICIEL",op= 183,fr="",
+EXEC_LOGICIEL=PROC(nom="EXEC_LOGICIEL",op= 183,
+ fr="Exécute un logiciel ou une commande système depuis Aster",
UIinfo={"groupes":("Impression",)},
LOGICIEL =SIMP(statut='f',typ='TXM' ),
ARGUMENT =FACT(statut='f',max='**',
NOM_PARA =SIMP(statut='f',typ='TXM' ),
),
) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 14/10/2005 AUTEUR CIBHHLV L.VIVAN
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
raise AsException("type de concept resultat non prevu")
EXTR_MODE=OPER(nom="EXTR_MODE",op= 168,sd_prod=extr_mode_prod,
- reentrant='n',
+ reentrant='n',fr="Extraire séléctivement des modes des structures de données modales",
UIinfo={"groupes":("Résolution",)},
FILTRE_MODE =FACT(statut='o',max='**',
regles=(UN_PARMI('TOUT_ORDRE','NUME_ORDRE','NUME_MODE','NUME_MODE_EXCLU','FREQ_MIN','CRIT_EXTR',),),
PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ),
),
b_crit_extr =BLOC(condition = "CRIT_EXTR != None",
- SEUIL =SIMP(statut='f',typ='R',defaut= 1.E-3 ),
+ regles=(AU_MOINS_UN('SEUIL','SEUIL_X','SEUIL_Y','SEUIL_Z'),),
+ SEUIL =SIMP(statut='f',typ='R'),
+ SEUIL_X =SIMP(statut='f',typ='R'),
+ SEUIL_Y =SIMP(statut='f',typ='R'),
+ SEUIL_Z =SIMP(statut='f',typ='R'),
),
),
TITRE =SIMP(statut='f',typ='TXM',max='**'),
CRIT_EXTR =SIMP(statut='f',typ='TXM',defaut="MASS_EFFE_UN",into=("MASS_EFFE_UN","MASS_GENE") ),
),
) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 10/05/2006 AUTEUR MCOURTOI M.COURTOIS
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
EXTR_RESU=OPER(nom="EXTR_RESU",op=176,sd_prod=extr_resu_prod,reentrant='f',
UIinfo={"groupes":("Résultats et champs",)},
+ fr="Extraire des champs au sein d'une SD Résultat",
+ regles=(CONCEPT_SENSIBLE('SEPARE'), REUSE_SENSIBLE(),
+ DERIVABLE('RESULTAT'),),
RESULTAT =SIMP(statut='o',typ=(evol_elas,dyna_trans,dyna_harmo,acou_harmo,mode_meca,
mode_acou,mode_stat_depl,mode_stat_acce,mode_stat_forc,evol_ther,evol_noli,
mult_elas,fourier_elas ) ),
TITRE =SIMP(statut='f',typ='TXM',max='**' ),
) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2003 EDF R&D WWW.CODE-ASTER.ORG
EXTR_TABLE=OPER(nom="EXTR_TABLE",op=173,sd_prod=extr_table_prod,reentrant='n',
UIinfo={"groupes":("Résultats et champs",)},
-
+ fr="Extraire d'une table la matrice de masse généralisée assemblée",
TYPE_RESU =SIMP(statut='o',typ='TXM',into=("MATR_ASSE_GENE_R",) ),
TABLE =SIMP(statut='o',typ=table_sdaster),
TITRE =SIMP(statut='f',typ='TXM',max='**' ),
) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
FACT_GRAD=OPER(nom="FACT_GRAD",op=85,sd_prod=fact_grad_prod,
UIinfo={"groupes":("Résolution",)},
- fr="Préconditionnement pour résolution par gradient conjugué",
+ fr="Construire une matrice de préconditionnement pour une résolution par gradient conjugué",
reentrant='n',
MATR_ASSE =SIMP(statut='o',
typ=(matr_asse_depl_r,matr_asse_temp_r,
NIVE_REMPLISSAGE=SIMP(statut='f',typ='I',defaut= 0 ),
INFO =SIMP(statut='f',typ='I',into=(1,2) ),
) ;
-#& MODIF COMMANDE DATE 01/04/2005 AUTEUR VABHHTS J.PELLET
+#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
if AsType(MATR_ASSE) == matr_asse_pres_c : return matr_asse_pres_c
raise AsException("type de concept resultat non prevu")
-FACT_LDLT=OPER(nom="FACT_LDLT",op=14,sd_prod=fact_ldlt_prod,fr="Factorisation en place ou hors place",
+FACT_LDLT=OPER(nom="FACT_LDLT",op=14,sd_prod=fact_ldlt_prod,
+ fr="Factoriser une matrice assemblée en un produit de deux matrices triangulaires",
reentrant='f',
UIinfo={"groupes":("Résolution",)},
regles=(EXCLUS('BLOC_DEBUT','DDL_DEBUT'),
TITRE =SIMP(statut='f',typ='TXM',max='**'),
INFO =SIMP(statut='f',typ='I',into=(1,2) ),
) ;
-#& MODIF COMMANDE DATE 23/08/2004 AUTEUR CIBHHLV L.VIVAN
+#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
-FIN=PROC(nom="FIN",op=9999,repetable='n',fr="Fin d'une étude",
+FIN=PROC(nom="FIN",op=9999,repetable='n',fr="Fin d'une étude, fin du travail engagé par une des commandes DEBUT ou POURSUITE",
UIinfo={"groupes":("Gestion du travail",)},
FORMAT_HDF =SIMP(fr="sauvegarde de la base GLOBALE au format HDF",statut='f',
typ='TXM',defaut="NON",into=("OUI","NON",) ),
statut='f',typ='TXM',defaut="OUI",into=("OUI","NON",) ),
UNITE =SIMP(statut='f',typ='I',defaut=6),
) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
FONC_FLUI_STRU=OPER(nom="FONC_FLUI_STRU",op= 169,sd_prod=fonction_sdaster,
- reentrant='n',
+ reentrant='n',fr="Crée une fonction constante paramètrée par l'abscisse curviligne",
UIinfo={"groupes":("Fonction",)},
TYPE_FLUI_STRU =SIMP(statut='o',typ=(type_flui_stru) ),
) ;
-#& MODIF COMMANDE DATE 22/11/2004 AUTEUR DURAND C.DURAND
+#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
FORMULE=FORM(nom="FORMULE",op_init=form_pyth_ops,op=-5,
sd_prod=formule,UIinfo={"groupes":("Fonction",)},
+ fr="Définit une formule réelle à partir de son expression mathématique",
VALE =SIMP(statut='f',typ='TXM'),
NOM_PARA =SIMP(statut='o',typ='TXM',max='**'),
);
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 03/01/2006 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
fr="Génération de la fonction temporelle à partir d une matrice interspectrale",
reentrant='n',
UIinfo={"groupes":("Fonction",)},
- INTE_SPEC =SIMP(statut='o',typ=tabl_intsp ),
+ INTE_SPEC =SIMP(statut='o',typ=table_sdaster),
NUME_VITE_FLUI =SIMP(statut='f',typ='I' ),
INTERPOL =SIMP(statut='f',typ='TXM',defaut="OUI",into=("NON","OUI") ),
b_interpol_oui =BLOC(condition = "INTERPOL == 'OUI' ",fr="Parametres cas interpolation autorisee",
INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
TITRE =SIMP(statut='f',typ='TXM',max='**'),
) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 11/07/2005 AUTEUR CAMBIER S.CAMBIER
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
# RESPONSABLE CAMBIER S.CAMBIER
-GENE_MATR_ALEA=OPER(nom="GENE_MATR_ALEA",op= 27,sd_prod=matr_asse_gene_r,
- fr="Generateur de matrice aleatoire",
+def gene_matr_alea_prod(MATR_MOYEN,**args ):
+ if (AsType(MATR_MOYEN) == matr_asse_gene_r ) : return matr_asse_gene_r
+ if (AsType(MATR_MOYEN) == macr_elem_dyna) : return macr_elem_dyna
+ raise AsException("type de concept resultat non prevu")
+
+GENE_MATR_ALEA=OPER(nom="GENE_MATR_ALEA",op= 27,
+#sd_prod=matr_asse_gene_r,
+sd_prod=gene_matr_alea_prod,
+ fr="Générer une réalisation d'une matrice aléatoire réelle sym. déf. positive ou d'un macro élément dynamique",
reentrant='n',
- UIinfo={"groupes":("Fonction",)},
- MATR_MOYEN = SIMP(statut='o', typ=matr_asse_gene_r),
- COEF_VAR = SIMP(statut='f', typ='R', defaut=0.1),
+ UIinfo={"groupes":("Matrice",)},
+ MATR_MOYEN = SIMP(statut='o', typ=(matr_asse_gene_r,macr_elem_dyna)),
+
+# cas matrice generalisee
+ b_matr =BLOC( condition = "AsType(MATR_MOYEN) in (matr_asse_gene_r,)",
+ COEF_VAR = SIMP(statut='f', typ='R', defaut=0.1, val_min=0.E+0 ,
+ fr="coefficient de variation de la matrice a generer" ),
+ ),
+# cas macr_elem_dyna
+ b_macr =BLOC( condition = "AsType(MATR_MOYEN) in (macr_elem_dyna,)",
+ fr="cas macr_elem_dyna (sous-structuratio)",
+ COEF_VAR_RIGI = SIMP(statut='f', typ='R', defaut=0.1, val_min=0.E+0 ,
+ fr="coefficient de variation de la matrice de raideur" ),
+ COEF_VAR_MASS = SIMP(statut='f', typ='R', defaut=0., val_min=0.E+0 ,
+ fr="coefficient de variation de la matrice de masse" ),
+ COEF_VAR_AMOR = SIMP(statut='f', typ='R', defaut=0., val_min=0.E+0 ,
+ fr="coefficient de variation de la matrice d'amortissement" ),),
+
INIT_ALEA =SIMP(statut='f',typ='I'),
) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 28/02/2006 AUTEUR VABHHTS J.PELLET
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
# RESPONSABLE CAMBIER S.CAMBIER
-GENE_VARI_ALEA=OPER(nom="GENE_VARI_ALEA",op= 28,sd_prod=table_sdaster,
- fr="Generateur de variable aleatoire",
- reentrant='n',
- UIinfo={"groupes":("Fonction",)},
+from Macro.gene_vari_alea_ops import gene_vari_alea_ops,gene_vari_alea_init
+GENE_VARI_ALEA=MACRO(nom="GENE_VARI_ALEA",
+ op_init=gene_vari_alea_init,op=gene_vari_alea_ops,
+ sd_prod=reel,reentrant='n',
+ fr="Générer une réalisation d'une variable aléatoire réelle de loi de probabilité donnée (Gamma ou Exponentielle)",
+ UIinfo={"groupes":("Fonction",)},
TYPE = SIMP(statut='f', typ='TXM', into=("EXP_TRONQUEE", "EXPONENTIELLE", "GAMMA"), defaut="GAMMA"),
b_gamma =BLOC(condition = "TYPE == 'GAMMA' ",fr="Parametres loi gamma",
VALE_MOY = SIMP(statut='f', typ='R', defaut=1.),
VALE_MOY = SIMP(statut='f', typ='R', defaut=0.),
BORNE_INF = SIMP(statut='f', typ='R', defaut=-1.),
BORNE_SUP = SIMP(statut='f', typ='R', defaut=1.),
- COEF_VAR = SIMP(statut='f', typ='R', defaut=0.1),
+ COEF_VAR = SIMP(statut='f', typ='R', defaut=0.1,val_min=0.),
),
INIT_ALEA =SIMP(statut='f',typ='I'),
-) ;
-
+)
#& MODIF COMMANDE DATE 23/08/2004 AUTEUR CIBHHLV L.VIVAN
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
VERSION =SIMP(statut='f',typ='I',defaut= 5,into=( 5 ,) ),
CHARGE =SIMP(statut='o',typ=char_meca,validators=NoRepeat(),max='**', ),
) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
IMPR_CLASSI=PROC(nom="IMPR_CLASSI",op= 114,
- UIinfo={"groupes":("Fonction",)},
+ UIinfo={"groupes":("Fonction",)},fr="Ecrit le résultat d'une analyse modale au format du code CLASSI",
regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','FREQ','NUME_MODE','LIST_FREQ',
'LIST_ORDRE' ),),
UNITE_CLASSI =SIMP(statut='o',typ='I' ),
),
AMOR =SIMP(statut='o',typ='R',max='**'),
) ;
-#& MODIF COMMANDE DATE 23/08/2004 AUTEUR CIBHHLV L.VIVAN
+#& MODIF COMMANDE DATE 10/05/2006 AUTEUR MCOURTOI M.COURTOIS
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
# RESPONSABLE VABHHTS J.PELLET
IMPR_CO=PROC(nom="IMPR_CO",op=17,
- UIinfo={"groupes":("Impression",)},
- fr="Impression du contenu d un concept utilisateur (pour développeur)",
- regles=(UN_PARMI('CO','CHAINE', ),),
- UNITE =SIMP(statut='f',typ='I',defaut=8),
- NIVEAU =SIMP(statut='f',typ='I',defaut=2,into=(0,1,2) ),
- ATTRIBUT =SIMP(statut='f',typ='TXM',defaut="NON",into=("NON","OUI") ),
- CONTENU =SIMP(statut='f',typ='TXM',defaut="OUI",into=("NON","OUI") ),
- BASE =SIMP(statut='f',typ='TXM',defaut="G",into=("","G","V","L") ),
- CO =SIMP(statut='f',typ=assd,validators=NoRepeat(),max='**'),
- CHAINE =SIMP(statut='f',typ='TXM'),
- POSITION =SIMP(statut='f',typ='I',defaut=1),
-) ;
-#& MODIF COMMANDE DATE 05/10/2004 AUTEUR CIBHHLV L.VIVAN
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE GNICOLAS G.NICOLAS
-IMPR_FICO_HOMA=PROC(nom="IMPR_FICO_HOMA",op= 189, docu="U7.04.01-b",
- UIinfo={"groupes":("Fonction",)},
- fr="Imprime le fichier de configuration de HOMARD.",
- ang="Writes the configuration file for HOMARD.",
-#
-# 1. Le niveau d'information
-#
- INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
-#
-# 2. Langue des messages issus de HOMARD
-#
- LANGUE =SIMP(statut='f',typ='TXM',defaut="FRANCAIS",
- into=("FRANCAIS","FRENCH","ANGLAIS","ENGLISH",),
- fr="Langue des messages issus de HOMARD.",
- ang="Language for HOMARD messages." ),
-#
-# 3. Le nom local du fichier de configuration HOMARD
-#
- UNITE_CONF =SIMP(statut='o',typ='I'),
-#
-# 4. Le nom local du fichier de données HOMARD
-#
- UNITE_DONN =SIMP(statut='f',typ='I'),
-#
-# 5. Gestion des éléments autres que des simplexes
-# 0 : autres elements refuses (defaut)
-# 1 : raffinement sur les simplexes, mais autres acceptes
-# 2 : tous
-#
- NON_SIMPLEXE = SIMP(statut='f',typ='I',defaut=0,into=(0,1,2),
- fr="Type d'éléments acceptés.",
- ang="Type of authorized elements." ),
-#
-# 6. Le type de traitement :
-#
- TRAITEMENT =FACT(statut='o',
-#
-# 6.1. TROIS CHOIX EXCLUSIFS :
-#
-# A. ADAPTATION PAR UN INDICATEUR D'ERREUR, AVEC TROIS VARIANTES :
-# . RAFFINEMENT ET DERAFFINEMENT
-# . RAFFINEMENT SEUL
-# . DERAFFINEMENT SEUL
-# B. ADAPTATION UNIFORME, AVEC DEUX VARIANTES :
-# . RAFFINEMENT SEUL
-# . DERAFFINEMENT SEUL
-# . RIEN : LE MAILLAGE EST LE MEME A LA SORTIE ET A L'ENTREE
-# C. INFORMATION SUR UN MAILLAGE
-#
- regles=( UN_PARMI('ADAPTATION','UNIFORME','INFORMATION'),),
- ADAPTATION =SIMP(statut='f',typ='TXM',
- fr="Adaptation libre",
- ang="Free adaptation",
- into=("RAFFINEMENT","DERAFFINEMENT","RAFF_DERA") ),
- UNIFORME =SIMP(statut='f',typ='TXM',
- fr="Adaptation uniforme",
- ang="Uniforme adaptation",
- into=("RAFFINEMENT","DERAFFINEMENT","RIEN") ),
- INFORMATION =SIMP(statut='f',typ='TXM',
- fr="Information sur un maillage",
- ang="Information on a mesh",
- into=("OUI",) ),
-#
-# 6.2. LES CONTRAINTES :
-#
-# 6.2.1. POUR DE L'ADAPTATION LIBRE, IL FAUT :
-# A. LE NUMERO D'ITERATION DU MAILLAGE DE DEPART
-# B. LE NOM MED DU MAILLAGE D'ENTREE
-# C. LE NOM MED DE L'INDICATEUR D'ERREUR
-# D. LE NUMERO D'ITERATION DU MAILLAGE DE DEPART
-# E. LA MISE A JOUR DE SOLUTION
-# F. LE NOM MED DU MAILLAGE DE SORTIE
-# REMARQUE : IL FAUT DES CRITERES, MAIS ON NE SAIT PAS LESQUELS
-#
-# 6.2.2. POUR DE L'ADAPTATION UNIFORME
-# IL FAUT :
-# A. LE NUMERO D'ITERATION DU MAILLAGE DE DEPART
-# B. LE NOM MED DU MAILLAGE DE SORTIE
-# IL NE FAUT PAS :
-# A. LE NOM MED DE L'INDICATEUR D'ERREUR
-# B. LE NOM DE LA COMPOSANTE DE L'INDICATEUR D'ERREUR
-# C. LES CRITERES
-# REMARQUE : A L'ITERATION 0, OU AUX ITERATIONS SUIVANTES SI MAJ DE SOLUTION,
-# IL FAUT LE NOM MED DU MAILLAGE D'ENTREE
-#
-# 6.2.3. POUR DE L'INFORMATION :
-# IL FAUT :
-# A. LE NOM MED DU MAILLAGE D'ENTREE
-# IL NE FAUT PAS :
-# A. LE NOM MED DE L'INDICATEUR D'ERREUR
-# B. LE NOM DE LA COMPOSANTE DE L'INDICATEUR D'ERREUR
-# C. LES CRITERES
-# D. LE NUMERO D'ITERATION DU MAILLAGE DE DEPART
-# E. LA MISE A JOUR DE SOLUTION
-#
- b_maillage_initial =BLOC(condition = "( INFORMATION != None ) or ( ADAPTATION != None ) ",
- fr="Nom MED du maillage en entrée",
- ang="MED name of the in-mesh",
- NOM_MED_MAILLAGE_N =SIMP(statut='o',typ='TXM',),
- ) ,
-#
- b_maillage_initial_uniforme =BLOC(condition = "( UNIFORME != None ) ",
- fr="Nom MED du maillage en entrée",
- ang="MED name of the in-mesh",
- NOM_MED_MAILLAGE_N =SIMP(statut='f',typ='TXM',),
- ) ,
-#
- b_iteration =BLOC(condition = "( UNIFORME != None ) or ( ADAPTATION != None ) ",
- fr="Nom MED du maillage en sortie, numero d'iteration",
- ang="MED name of the out-mesh, iteration rank",
- NITER =SIMP(statut='o',typ='I',
- fr="Numéro d'itération.",
- ang="Iteration number." ),
- NOM_MED_MAILLAGE_NP1 =SIMP(statut='o',typ='TXM',
- fr="Nom MED du maillage en sortie",
- ang="MED name of the out-mesh" ),
- ) ,
-#
- b_indicateur_d_erreur =BLOC(condition = "ADAPTATION != None",
- fr="Indicateur d'erreur",
- ang="Error indicator",
- regles=(AU_MOINS_UN('NUME_ORDRE','INST','RESULTAT'),
- EXCLUS('NUME_ORDRE','INST'),
- EXCLUS('NUME_ORDRE','RESULTAT'),
- PRESENT_PRESENT('RESULTAT','NOM_CHAM'),),
- NOM_MED =SIMP(statut='o',typ='TXM',
- fr="Nom MED de l'indicateur d'erreur.",
- ang="MED name of error indicator.",),
- COMPOSANTE =SIMP(statut='o',typ='TXM',
- fr="Nom de la composante de l'indicateur d'erreur retenue.",
- ang="Name of the selected component of the error indicator.",),
- NUME_ORDRE =SIMP(statut='f',typ='I',
- fr="Numero d'ordre de l'indicateur.",
- ang="Rank number of the error indicator.",),
- INST =SIMP(statut='f',typ='R',
- fr="Instant de l'indicateur.",
- ang="Instant of the error indicator.",),
- b_precision =BLOC(condition="(INST != None)",
- PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3,
- fr="Précision sur le choix de l'instant associé",
- ang="Accuracy over instant choice" ),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU"),
- fr="Critère de précision sur le choix de l'instant associé",
- ang="Accuracy criterium over instant choice" ),),
- RESULTAT =SIMP(statut='f',typ=(evol_elas,evol_noli,evol_ther),
- fr="Concept contenant l'indicateur.",
- ang="Conceipt wich contains the error indicator.",),
- NOM_CHAM =SIMP(statut='f',typ='TXM',
- fr="Nom du champ dans le résultat de l'indicateur.",
- ang="Name of the field of the error indicator.",),
- ) ,
-#
- b_critere_de_raffinement =BLOC( condition = "( ADAPTATION == 'RAFF_DERA' ) or ( ADAPTATION == 'RAFFINEMENT' )" ,
- fr="Critère de raffinement.",
- ang="Refinement threshold.",
- regles=(UN_PARMI ( 'CRIT_RAFF_ABS', 'CRIT_RAFF_REL', 'CRIT_RAFF_PE' ),),
- CRIT_RAFF_ABS =SIMP(statut='f',typ='R',
- fr="Critère absolu",
- ang="Absolute threshold" ),
- CRIT_RAFF_REL =SIMP(statut='f',typ='R',
- fr="Critère relatif",
- ang="Relative threshold" ),
- CRIT_RAFF_PE =SIMP(statut='f',typ='R',
- fr="Pourcentage d'éléments",
- ang="Percentage of elements" ),
- ) ,
-#
- b_critere_de_deraffinement =BLOC ( condition = "( ADAPTATION == 'RAFF_DERA' ) or ( ADAPTATION == 'DERAFFINEMENT' )" ,
- fr="Critère de déraffinement.",
- ang="Unrefinement threshold.",
- regles=(UN_PARMI ( 'CRIT_DERA_ABS', 'CRIT_DERA_REL', 'CRIT_DERA_PE' ),),
- CRIT_DERA_ABS =SIMP(statut='f',typ='R' ,
- fr="Critère absolu",
- ang="Absolute threshold" ),
- CRIT_DERA_REL =SIMP(statut='f',typ='R',
- fr="Critère relatif",
- ang="Relative threshold" ),
- CRIT_DERA_PE =SIMP(statut='f',typ='R',
- fr="Pourcentage d'éléments",
- ang="Percentage of elements" ),
- ) ,
-#
- b_niveau_maximum =BLOC ( condition = " ( ADAPTATION == 'RAFF_DERA' ) or ( ADAPTATION == 'RAFFINEMENT' ) or \
- ( UNIFORME == 'RAFFINEMENT' )" ,
- NIVE_MAX =SIMP(statut='f',typ='I',
- fr="Niveau maximum de profondeur de raffinement",
- ang="Maximum level for refinement"),
- ) ,
-#
- b_niveau_minimum =BLOC ( condition = " ( ADAPTATION == 'RAFF_DERA' ) or ( ADAPTATION == 'DERAFFINEMENT' ) or \
- ( UNIFORME == 'DERAFFINEMENT' )" ,
- NIVE_MIN =SIMP(statut='f',typ='I',
- fr="Niveau minimum de déraffinement",
- ang="Minimum level for unrefinement" ),
- ) ,
-#
-# 6.3. Le suivi de frontiere eventuel :
-#
- NOM_MED_MAILLAGE_FRONTIERE =SIMP(statut='f',typ='TXM',
- fr="Nom MED du maillage de la frontiere à suivre",
- ang="MED name of the boundary mesh" ),
-#
- b_frontiere_1 =BLOC ( condition = "NOM_MED_MAILLAGE_FRONTIERE != None" ,
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**',
- fr="Groupes définissant la frontière",
- ang="Groups which define the boundary" ),
- ) ,
-#
- ),
-#
-# 7. Mise à jour de champs sur le nouveau maillage
-#
- MAJ_CHAM =FACT(statut='f',max='**',
- fr="Mise à jour de champs sur le nouveau maillage.",
- ang="Updating of fields over the new mesh.",
- regles=(AU_MOINS_UN('NUME_ORDRE','INST','RESULTAT'),
- EXCLUS('NUME_ORDRE','INST'),
- EXCLUS('NUME_ORDRE','RESULTAT'),
- PRESENT_PRESENT('RESULTAT','NOM_CHAM'),),
- NOM_MED =SIMP(statut='o',typ='TXM',
- fr="Nom MED du champ à mettre à jour.",
- ang="MED name of field.",),
- NUME_ORDRE =SIMP(statut='f',typ='I',
- fr="Numero d'ordre du champ à mettre à jour.",
- ang="Rank number of field.",),
- INST =SIMP(statut='f',typ='R',
- fr="Instant du champ à mettre à jour.",
- ang="Instant of field.",),
- b_precision =BLOC(condition="(INST != None)",
- PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3,
- fr="Précision sur le choix de l'instant associé",
- ang="Accuracy over instant choice" ),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU"),
- fr="Critère de précision sur le choix de l'instant associé",
- ang="Accuracy criterium over instant choice" ),),
- RESULTAT =SIMP(statut='f',typ=(evol_elas,evol_noli,evol_ther),
- fr="Concept contenant le champ à mettre à jour.",
- ang="Conceipt wich contains the field.",),
- NOM_CHAM =SIMP(statut='f',typ='TXM',
- fr="Nom du champ dans le résultat du champ à mettre à jour.",
- ang="Name of the field.",),
- ),
-#
-# 8. L'ANALYSE DU MAILLAGE
-#
- ANALYSE =FACT(statut='f',
- fr="Analyse du maillage.",
- ang="Mesh analysis.",
-#
-# 5 CHOIX NON EXCLUSIFS, AVEC DEUX VARIANTES (OUI/NON) :
-# A. NOMBRE DES ELEMENTS
-# B. QUALITE DES ELEMENTS
-# C. INTERPENETRATION DES ELEMENTS
-# D. CONNEXITE DU MAILLAGE
-# E. TAILLE DES DIFFERENTS SOUS-DOMAINES
-#
- regles=(AU_MOINS_UN('NOMBRE','QUALITE','INTERPENETRATION','CONNEXITE','TAILLE'),),
-#
- NOMBRE =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON"),
- fr="Nombre de noeuds et éléments du maillage",
- ang="Number of nodes and elements in the mesh" ),
-#
- QUALITE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),
- fr="Qualité du maillage",
- ang="Mesh quality" ),
-#
- INTERPENETRATION=SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),
- fr="Controle de la non interpénétration des éléments.",
- ang="Overlapping checking." ),
-#
- CONNEXITE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),
- fr="Connexité du maillage.",
- ang="Mesh connexity." ),
-#
- TAILLE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),
- fr="Tailles des sous-domaines du maillage.",
- ang="Sizes of mesh sub-domains." ),
-#
- ),
-#
+ UIinfo={"groupes":("Impression",)},
+ fr="Imprimer tous les objets JEVEUX qui constituent un concept utilisateur existant (pour les développeurs)",
+ regles=(UN_PARMI('CONCEPT','CHAINE','TOUT' ),),
+
+ UNITE =SIMP(statut='f',typ='I',defaut=8),
+ NIVEAU =SIMP(statut='f',typ='I',defaut=2,into=(-1,0,1,2) ),
+ ATTRIBUT =SIMP(statut='f',typ='TXM',defaut="NON",into=("NON","OUI") ),
+ CONTENU =SIMP(statut='f',typ='TXM',defaut="OUI",into=("NON","OUI") ),
+ BASE =SIMP(statut='f',typ='TXM',defaut="G",into=(" ","G","V","L") ),
+ CONCEPT =FACT(statut='f',max='**',
+ regles=(DERIVABLE('NOM'),),
+ NOM =SIMP(statut='o',typ=assd,validators=NoRepeat(),max='**'),
+ SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),
+ fr="Paramètre de sensibilité.",
+ ang="Sensitivity parameter",max='**'),),
+ CHAINE =SIMP(statut='f',typ='TXM'),
+ POSITION =SIMP(statut='f',typ='I',defaut=1),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
) ;
-#& MODIF COMMANDE DATE 15/11/2004 AUTEUR MCOURTOI M.COURTOIS
+#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
from Macro.impr_fonction_ops import impr_fonction_ops
IMPR_FONCTION=MACRO(nom="IMPR_FONCTION",op=impr_fonction_ops,sd_prod=None,
- fr="Impression de fonctions sur fichiers, les valeurs ayant été récupérées par RECU_FONCTION",
+ fr="Imprime le contenu d'objets de type fonction ou liste de réels dans un fichier destiné à un traceur de courbe",
UIinfo={"groupes":("Fonction",)},
FORMAT =SIMP(statut='o',typ='TXM',position='global',defaut='TABLEAU',
into=("TABLEAU","AGRAF","XMGRACE",),),
),
INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
) ;
-#& MODIF COMMANDE DATE 17/05/2005 AUTEUR CIBHHLV L.VIVAN
+#& MODIF COMMANDE DATE 21/02/2006 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
IMPR_GENE=PROC(nom="IMPR_GENE",op= 157,
- fr="Calcul du dommage subi par une structure soumise à une sollicitation de type aléatoire",
+ fr="Imprimer le résultat d'un calcul dynamique en variables généralisées au format RESULTAT",
UIinfo={"groupes":("Impression",)},
FORMAT =SIMP(statut='f',typ='TXM',defaut="RESULTAT",into=("RESULTAT",) ),
UNITE =SIMP(statut='f',typ='I',defaut=8),
EXCLUS('TOUT_CHAM','NOM_CHAM'),
EXCLUS('TOUT_PARA','NOM_PARA'),),
# faut-il faire des blocs selon le type de RESU_GENE
- RESU_GENE =SIMP(statut='o',typ=(vect_asse_gene_r, tran_gene, mode_gene, harm_gene)),
+ RESU_GENE =SIMP(statut='o',typ=(vect_asse_gene, tran_gene, mode_gene, harm_gene)),
TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster ),
- TOUT_MODE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- NUME_MODE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
LIST_INST =SIMP(statut='f',typ=listr8_sdaster ),
TOUT_INST =SIMP(statut='f',typ='TXM',into=("OUI",) ),
FREQ =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster ),
- b_prec_crit =BLOC(condition = "LIST_FREQ != None or FREQ != None",
- PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",
+ TOUT_MODE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ NUME_MODE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
+ PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ),
+ CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",
into=("RELATIF","ABSOLU") ),
- ),
TOUT_CMP_GENE =SIMP(statut='f',typ='TXM',into=("OUI","NON") ),
NUME_CMP_GENE =SIMP(statut='f',typ='I',max='**'),
TOUT_CHAM =SIMP(statut='f',typ='TXM',into=("OUI","NON") ),
INFO_GENE =SIMP(statut='f',typ='TXM',into=("OUI","NON") ),
),
) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# ======================================================================
IMPR_JEVEUX=PROC(nom="IMPR_JEVEUX",op=16,
UIinfo={"groupes":("Impression",)},
- fr="Impression de caractéristiques d'objets JEVEUX (pour développeur)",
+ fr="Imprimer le contenu des objets créés par JEVEUX (pour développeur)",
ENTITE =SIMP(fr="choix de l'observation",statut='o',typ='TXM',
into=("DISQUE","MEMOIRE","REPERTOIRE",
"OBJET","ATTRIBUT","SYSTEME") ),
),
COMMENTAIRE =SIMP(statut='f',typ='TXM' ),
) ;
-#& MODIF COMMANDE DATE 23/08/2004 AUTEUR CIBHHLV L.VIVAN
+#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# ======================================================================
IMPR_MACR_ELEM=PROC(nom="IMPR_MACR_ELEM",op= 160,
UIinfo={"groupes":("Impression",)},
+ fr="Impression d'une structure de données MACR_ELEM_DYNA au format IDEAS MISS3D PLEXUS ou CADYRO",
MACR_ELEM_DYNA =SIMP(statut='o',typ=macr_elem_dyna ),
FORMAT =SIMP(statut='f',typ='TXM',defaut="IDEAS",
into=("MISS_3D","IDEAS","CADYRO","PLEXUS") ),
),
) ;
-#& MODIF COMMANDE DATE 08/02/2005 AUTEUR CIBHHLV L.VIVAN
+#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
IMPR_MATRICE=PROC(nom="IMPR_MATRICE",op= 159,
- fr="Impression des matrices élémentaires et des matrices assemblées",
+ fr="Imprimer sur un fichier au format IDEAS ou RESULTAT des matrices élémentaires et assemblées",
UIinfo={"groupes":("Impression",)},
regles=(AU_MOINS_UN('MATR_ELEM','MATR_ASSE'),),
# ======================================================================
),
# ======================================================================
) ;
-#& MODIF COMMANDE DATE 30/06/2004 AUTEUR MCOURTOI M.COURTOIS
+#& MODIF COMMANDE DATE 21/02/2006 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# ======================================================================
IMPR_MISS_3D=PROC(nom="IMPR_MISS_3D",op= 162,
UIinfo={"groupes":("Impression",)},
+ fr="Impression des données d'entrée pour une étude sismique avec MISS3D",
regles=(UN_PARMI('INST_INIT','FREQ_INIT'),
PRESENT_PRESENT('INST_INIT','INST_FIN'),
PRESENT_PRESENT('FREQ_INIT','FREQ_FIN'),),
MACR_ELEM_DYNA =SIMP(statut='o',typ=macr_elem_dyna ),
EXCIT =FACT(statut='f',max='**',
regles=(UN_PARMI('FONC_MULT','COEF_MULT' ),),
- VECT_ASSE =SIMP(statut='f',typ=cham_no_depl_r ),
+ VECT_ASSE =SIMP(statut='f',typ=cham_no_sdaster),
FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
COEF_MULT =SIMP(statut='f',typ='R' ),
),
UNITE =SIMP(statut='f',typ='I',defaut=38),
INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
) ;
-#& MODIF COMMANDE DATE 12/04/2005 AUTEUR CIBHHPD L.SALMONA
+#& MODIF COMMANDE DATE 10/05/2006 AUTEUR MCOURTOI M.COURTOIS
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# ======================================================================
IMPR_RESU=PROC(nom="IMPR_RESU",op=39,
UIinfo={"groupes":("Impression",)},
- fr="Impression du résultat d un calcul (différents formats)",
+ fr="Imprimer un maillage et/ou les résultats d'un calcul (différents formats)",
MODELE =SIMP(statut='f',typ=modele_sdaster),
FORMAT =SIMP(statut='f',typ='TXM',position='global',defaut="RESULTAT",
b_sensibilite =BLOC(condition="RESULTAT != None",
fr="Définition des paramètres de sensibilité",
ang="Definition of sensitivity parameters",
+ regles=(DERIVABLE('RESULTAT'),),
SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**',
fr="Liste des paramètres de sensibilité.",
ang="List of sensitivity parameters"),),
+# b_partie =BLOC(condition="""((AsType(RESULTAT)==dyna_harmo) or
+# (AsType(CHAM_GD)!=carte_sdaster)) and ((FORMAT=='CASTEM') or (FORMAT=='GMSH'))""",
+ PARTIE =SIMP(statut='f',typ='TXM',into=("REEL","IMAG") ),
+# ),
b_extrac =BLOC(condition="RESULTAT != None",
fr="extraction d un champ de grandeur",
regles=(EXCLUS('TOUT_CHAM','NOM_CHAM'),
),
###
b_topologie=BLOC(condition="""((CHAM_GD != None)or(RESULTAT != None))and\
- ((FORMAT == 'RESULTAT')or(FORMAT == 'IDEAS'))""",
- fr="sélection des entités toplogiques",
+ ((FORMAT == 'RESULTAT')or(FORMAT == 'IDEAS')or(FORMAT == 'MED'))""",
+ fr="sélection des entités topologiques",
TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
PREC_SHIFT =SIMP(statut='f',typ='R',defaut= 1.E-2 ),
SEUIL_FREQ =SIMP(statut='f',typ='R',defaut= 1.E-2 ),
) ;
-#& MODIF COMMANDE DATE 15/11/2004 AUTEUR MCOURTOI M.COURTOIS
+#& MODIF COMMANDE DATE 10/05/2006 AUTEUR MCOURTOI M.COURTOIS
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
IMPR_TABLE=MACRO(nom="IMPR_TABLE",op=impr_table_ops,sd_prod=None,
UIinfo={"groupes":("Impression",)},
- fr="Impression d un concept de type table_sdaster",
+ fr="Impression du contenu d'une table dans un fichier",
+ regles=(DERIVABLE("TABLE"),),
TABLE =SIMP(statut='o',typ=table_sdaster),
SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**',
fr="Liste des paramètres de sensibilité.",
UNITE = SIMP(statut='o',typ='I'),
INFO = SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
);
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# ======================================================================
INCLUDE_MATERIAU=MACRO(nom="INCLUDE_MATERIAU",op=-14,
UIinfo={"groupes":("Modélisation",)},
- fr=" ",
+ fr="Récupérer les caractéristiques d'un matériau dans le Catalogue Materiaux d'Aster ",
sd_prod=ops.INCLUDE_MATERIAU,op_init=ops.INCLUDE_context,fichier_ini=0,
NOM_AFNOR =SIMP(statut='o',typ='TXM' ),
TYPE_MODELE =SIMP(statut='o',typ='TXM',into=("REF","PAR") ),
),
INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
)
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# RESPONSABLE G8BHHXD X.DESROCHES
INTE_MAIL_2D=OPER(nom="INTE_MAIL_2D",op=50,sd_prod=courbe_sdaster,
UIinfo={"groupes":("Post traitements",)},
- fr="Définition d une courbe sur un maillage 2D",reentrant='n',
+ fr="Définition d'une courbe dans un maillage 2D",reentrant='n',
MAILLAGE =SIMP(statut='o',typ=(maillage_sdaster) ),
PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3),
INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# RESPONSABLE G8BHHXD X.DESROCHES
INTE_MAIL_3D=OPER(nom="INTE_MAIL_3D",op=96,sd_prod=surface_sdaster,
UIinfo={"groupes":("Post traitements",)},
- fr="Définition d un chemin sur un maillage 3D",reentrant='n',
+ fr="Définir un chemin de type segment de droite dans un maillage 3D",reentrant='n',
MAILLAGE =SIMP(statut='o',typ=maillage_sdaster),
TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-6),
INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 16/05/2006 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# homologue dans macr_adap_mail
import string
#
- if TYPE_CHAM[0:5] == "NOEU_" : return eval("cham_no_"+string.lower(TYPE_CHAM[5:]))
- if TYPE_CHAM == "ELEM_G_DEPL_R" : return cham_elem_g_depl
- if TYPE_CHAM[0:5] == "ELEM_" : return eval("cham_elem_"+string.lower(TYPE_CHAM[5:]))
- if TYPE_CHAM == "ELNO_G_DEPL_R" : return cham_elem_g_depl
- if TYPE_CHAM[0:5] == "ELNO_" : return eval("cham_elem_"+string.lower(TYPE_CHAM[5:]))
- if TYPE_CHAM == "ELGA_G_DEPL_R" : return cham_elem_g_depl
- if TYPE_CHAM[0:5] == "ELGA_" : return eval("cham_elem_"+string.lower(TYPE_CHAM[5:]))
+ if TYPE_CHAM[0:5] == "NOEU_" : return cham_no_sdaster
+ if TYPE_CHAM[0:2] == "EL" : return cham_elem
raise AsException("type de concept resultat non prevu")
LIRE_CHAMP=OPER(nom="LIRE_CHAMP",op= 192,sd_prod=lire_champ_prod,
- fr="Lire un champ dans un fichier et le stocker dans un concept.",
- reentrant='n',
+ fr="Lire un champ dans un fichier au format MED et le stocker dans un concept.",
+ reentrant='n',UIinfo={"groupe":("Résultats et champs",)},
MAILLAGE =SIMP(statut='o',typ=maillage_sdaster,),
FORMAT =SIMP(statut='f',typ='TXM',defaut="MED",into=("MED",),),
UNITE =SIMP(statut='f',typ='I',defaut= 81,),
),
INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ),
) ;
-#& MODIF COMMANDE DATE 20/09/2004 AUTEUR DURAND C.DURAND
+#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
raise AsException("type de concept resultat non prevu")
LIRE_FONCTION=MACRO(nom="LIRE_FONCTION",op=lire_fonction_ops,sd_prod=lire_fonction_prod,
- fr="Lecture d une fonction ou d une nappe dans un fichier ",
+ fr="Lit les valeurs réelles dans un fichier de données représentant une fonction et"
+ +" crée un concept de type fonction ou nappe",
reentrant='n',
UIinfo={"groupes":("Fonction",)},
FORMAT =SIMP(statut='f',typ='TXM',into=("LIBRE",),defaut="LIBRE" ),
INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
TITRE =SIMP(statut='f',typ='TXM',max='**'),
) ;
-#& MODIF COMMANDE DATE 20/09/2004 AUTEUR DURAND C.DURAND
+#& MODIF COMMANDE DATE 21/02/2006 AUTEUR REZETTE C.REZETTE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2005 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+LIRE_FORC_MISS=OPER(nom="LIRE_FORC_MISS",op= 179,sd_prod=vect_asse_gene,
+ fr="Création d un vecteur assemblé à partir de base modale",
+ reentrant='n',
+ UIinfo={"groupes":("Matrices/vecteurs",)},
+ BASE =SIMP(statut='o',typ=base_modale ),
+ NUME_DDL_GENE =SIMP(statut='o',typ=nume_ddl_gene ),
+ FREQ_EXTR =SIMP(statut='o',typ='R',max=1),
+ NOM_CMP =SIMP(statut='o',typ='TXM',into=("DX","DY","DZ") ),
+ NOM_CHAM =SIMP(statut='f',typ='TXM',into=("DEPL","VITE","ACCE"),defaut="DEPL"),
+ UNITE_RESU_FORC =SIMP(statut='f',typ='I',defaut=30),
+) ;
+
+#& MODIF COMMANDE DATE 08/11/2005 AUTEUR ACBHHCD G.DEVESA
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2005 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+LIRE_IMPE_MISS=OPER(nom="LIRE_IMPE_MISS",op= 164,sd_prod=matr_asse_gene_c,
+ fr="Création d une matrice assemblée à partir de base modale",
+ reentrant='n',
+ UIinfo={"groupes":("Matrices/vecteurs",)},
+ BASE =SIMP(statut='o',typ=base_modale ),
+ NUME_DDL_GENE =SIMP(statut='o',typ=nume_ddl_gene ),
+ FREQ_EXTR =SIMP(statut='o',typ='R',max=1),
+ UNITE_RESU_IMPE =SIMP(statut='f',typ='I',defaut=30),
+) ;
+
+#& MODIF COMMANDE DATE 03/01/2006 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
from Macro.lire_inte_spec_ops import lire_inte_spec_ops
-LIRE_INTE_SPEC=MACRO(nom="LIRE_INTE_SPEC",op=lire_inte_spec_ops,sd_prod=tabl_intsp,
- fr="Lecture sur un fichier externe de fonctions complexes pour créer une matrice interspectrale",
+LIRE_INTE_SPEC=MACRO(nom="LIRE_INTE_SPEC",op=lire_inte_spec_ops,sd_prod=table_sdaster,
+ fr="Lecture sur un fichier externe de fonctions complexes pour créer une matrice interspectrale",
reentrant='n',
UIinfo={"groupes":("Fonction",)},
UNITE =SIMP(statut='o',typ='I' ),
TITRE =SIMP(statut='f',typ='TXM',max='**'),
INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# ======================================================================
# RESPONSABLE VABHHTS J.PELLET
LIRE_MAILLAGE=OPER(nom="LIRE_MAILLAGE",op= 1,sd_prod=maillage_sdaster,
- fr="Lecture d'un fichier de maillage",
+ fr="Crée un maillage par lecture d'un fichier au format Aster ou Med",
ang="Readings of a mesh file",
reentrant='n',
UIinfo={"groupes":("Maillage",)},
INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ),
#
) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
raise AsException("type de concept resultat non prevu")
LIRE_MISS_3D=OPER(nom="LIRE_MISS_3D",op= 163,sd_prod=lire_miss_3d_prod,
- fr="Restitution au format MISS3D d une évolution harmonique ou transitoire",
+ fr="Restituer sur base physique une réponse harmonique ou transitoire issue de MISS3D",
reentrant='n',
UIinfo={"groupes":("Maillage",)},
MACR_ELEM_DYNA =SIMP(statut='o',typ=macr_elem_dyna ),
TYPE_RESU =SIMP(statut='f',typ='TXM',defaut="TRANS",into=("TRANS","HARMO") ),
TITRE =SIMP(statut='f',typ='TXM',max='**'),
) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
LIRE_PLEXUS=OPER(nom="LIRE_PLEXUS",op= 184,sd_prod=evol_char,
- fr=" ",
+ fr="Lire le fichier de résultats au format IDEAS produit par le logiciel EUROPLEXUS",
reentrant='n',
UIinfo={"groupes":("Maillage",)},
regles=(UN_PARMI('TOUT_ORDRE','NUME_ORDRE','INST','LIST_INST','LIST_ORDRE'),),
),
TITRE =SIMP(statut='f',typ='TXM',max='**'),
) ;
-#& MODIF COMMANDE DATE 11/05/2005 AUTEUR MCOURTOI M.COURTOIS
+#& MODIF COMMANDE DATE 03/10/2005 AUTEUR NICOLAS O.NICOLAS
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
)
LIRE_RESU=OPER(nom="LIRE_RESU",op=150,sd_prod=lire_resu_prod,reentrant='n',
- UIinfo={"groupes":("Maillage",)},
- fr="Lecture de champs aux noeuds ou par éléments aux noeuds sur un fichier IDEAS ou EnSight",
+ UIinfo={"groupes":("Résultats et champs",)},
+ fr="Lire dans un fichier, soit format IDEAS, soit au format ENSIGHT soit au format MED,"
+ +" des champs et les stocker dans une SD résultat",
# 0) mots clés généraux :
POSI_ORDRE =SIMP(statut='o',typ='I',min=2,max=2),
POSI_NUME_MODE =SIMP(statut='f',typ='I',min=2,max=2),
POSI_MASS_GENE =SIMP(statut='f',typ='I',min=2,max=2),
+ POSI_AMOR_GENE =SIMP(statut='f',typ='I',min=2,max=2),
POSI_INST =SIMP(statut='f',typ='I',min=2,max=2),
POSI_FREQ =SIMP(statut='f',typ='I',min=2,max=2),
NOM_CMP =SIMP(statut='o',typ='TXM',max='**'),),
),
),
) ;
-#& MODIF COMMANDE DATE 16/06/2004 AUTEUR DURAND C.DURAND
+#& MODIF COMMANDE DATE 03/04/2006 AUTEUR MCOURTOI M.COURTOIS
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
from Macro.lire_table_ops import lire_table_ops
-def lire_table_prod(self,TYPE_TABLE,**args):
- if TYPE_TABLE == "TABLE" : return table_sdaster
- if TYPE_TABLE == "TABL_CARA_GEOM" : return tabl_cara_geom
- if TYPE_TABLE == "TABL_POST_RELE" : return tabl_post_rele
- if TYPE_TABLE == "TABL_POST_USUR" : return tabl_post_usur
- if TYPE_TABLE == "TABL_POST_ALEA" : return tabl_post_alea
- raise AsException("type de concept resultat non prevu")
-
-LIRE_TABLE=MACRO(nom="LIRE_TABLE",op=lire_table_ops,sd_prod=lire_table_prod,
- fr="Lecture d un concept de type table",
- UIinfo={"groupes":("Maillage",)},
+LIRE_TABLE=MACRO(nom="LIRE_TABLE",op=lire_table_ops,sd_prod=table_sdaster,
+ fr="Lecture d'un fichier contenant une table",
+ UIinfo={"groupes":("Table",)},
UNITE =SIMP(statut='o',typ='I' ),
FORMAT =SIMP(statut='f',typ='TXM',into=("ASTER",),defaut="ASTER"),
NUME_TABLE =SIMP(statut='f',typ='I',defaut=1),
- TYPE_TABLE =SIMP(statut='f',typ='TXM',defaut="TABLE",
- into=("TABLE",
- "TABL_CARA_GEOM",
- "TABL_POST_RELE",
- "TABL_POST_USUR",
- "TABL_POST_ALEA" ) ),
- SEPARATEUR =SIMP(statut='o',typ='TXM'),
+ SEPARATEUR =SIMP(statut='f',typ='TXM',defaut=' '),
PARA =SIMP(statut='f',typ='TXM',max='**'),
TITRE =SIMP(statut='f',typ='TXM',max='**'),
) ;
-#& MODIF COMMANDE DATE 22/02/2005 AUTEUR DURAND C.DURAND
+#& MODIF COMMANDE DATE 13/02/2006 AUTEUR DURAND C.DURAND
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2005 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# ======================================================================
+
+MAC_MODES=OPER(nom="MAC_MODES",op= 141,sd_prod=table_sdaster,
+ fr="Normalisation de modes propres",
+ reentrant='n',
+ UIinfo={"groupes":("Résolution",)},
+ BASE_1 =SIMP(statut='o',typ=(mode_meca,mode_flamb,base_modale) ),
+ BASE_2 =SIMP(statut='o',typ=(mode_meca,mode_flamb,base_modale) ),
+ MATR_ASSE =SIMP(statut='f',typ=(matr_asse_depl_r,matr_asse_depl_c) ),
+ TITRE =SIMP(statut='f',typ='TXM',max='**'),
+ INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
+) ;
+#& MODIF COMMANDE DATE 02/06/2006 AUTEUR MCOURTOI M.COURTOIS
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# ======================================================================
# RESPONSABLE GNICOLAS G.NICOLAS
+
from Macro.macr_adap_mail_ops import macr_adap_mail_ops
def macr_adap_mail_prod(self,MAJ_CHAM,ADAPTATION,**args):
- maillage_np1=ADAPTATION['MAILLAGE_NP1']
+#
+# 0. Typage des structures produites
+#
+ maillage_np1=args['MAILLAGE_NP1']
self.type_sdprod(maillage_np1,maillage_sdaster)
+#
+ if ( args['MAILLAGE_NP1_ANNEXE'] is not None ) :
+ maillage_np1_annexe=args['MAILLAGE_NP1_ANNEXE']
+ self.type_sdprod(maillage_np1_annexe,maillage_sdaster)
+#
if MAJ_CHAM == None:return None
# Remarque : la liste qui suit doit etre conforme à son homologue de LIRE_CHAMP
for ch in MAJ_CHAM:
t=ch['TYPE_CHAM']
- if t[0:5] == "NOEU_":self.type_sdprod(ch['CHAM_MAJ'],eval("cham_no_"+string.lower(t[5:])))
- if t == "ELEM_G_DEPL_R":self.type_sdprod(ch['CHAM_MAJ'],cham_elem_g_depl)
- if t[0:5] == "ELEM_":self.type_sdprod(ch['CHAM_MAJ'],eval("cham_elem_"+string.lower(t[5:])))
- if t == "ELNO_G_DEPL_R":self.type_sdprod(ch['CHAM_MAJ'],cham_elem_g_depl)
- if t[0:5] == "ELNO_":self.type_sdprod(ch['CHAM_MAJ'],eval("cham_elem_"+string.lower(t[5:])))
- if t == "ELGA_G_DEPL_R":self.type_sdprod(ch['CHAM_MAJ'],cham_elem_g_depl)
- if t[0:5] == "ELGA_":self.type_sdprod(ch['CHAM_MAJ'],eval("cham_elem_"+string.lower(t[5:])))
+ if t[0:5] == "NOEU_":self.type_sdprod(ch['CHAM_MAJ'],cham_no_sdaster)
+ if t[0:2] == "EL": self.type_sdprod(ch['CHAM_MAJ'],cham_elem)
return None
+
MACR_ADAP_MAIL=MACRO(nom="MACR_ADAP_MAIL",op=macr_adap_mail_ops,sd_prod=macr_adap_mail_prod,
fr="Adapter un maillage avec le logiciel HOMARD.",
ang="Mesh adaptation with HOMARD software.",
- docu="U7.03.01-b",
+ docu="U7.03.01-b",UIinfo={"groupe":("Maillage",)},
#
# 1. Le niveau d'information
#
- INFO = SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
+ INFO = SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
#
# 2. Version de HOMARD
#
- VERSION_HOMARD = SIMP(statut='f',typ='TXM',defaut="V7_1",
- into=("V7_1", "V7_N", "V7_N_PERSO"),
- fr="Version de HOMARD",
- ang="HOMARD release"),
+ VERSION_HOMARD = SIMP(statut='f',typ='TXM',defaut="V8_2",
+ into=("V8_2", "V8_N", "V8_N_PERSO"),
+ fr="Version de HOMARD",
+ ang="HOMARD release"),
#
-# 3. Langue des messages issus de HOMARD
+# 3. Langue des messages produits par HOMARD
#
- LANGUE = SIMP(statut='f',typ='TXM',defaut="FRANCAIS",
- into=("FRANCAIS","FRENCH","ANGLAIS","ENGLISH",),
- fr="Langue des messages issus de HOMARD.",
- ang="Language for HOMARD messages." ),
+ LANGUE = SIMP(statut='f',typ='TXM',defaut="FRANCAIS",
+ into=("FRANCAIS","FRENCH","ANGLAIS","ENGLISH",),
+ fr="Langue des messages produits par HOMARD.",
+ ang="Language for HOMARD messages." ),
#
-# 4. Gestion des éléments autres que des simplexes
-# 0 : autres elements refuses
-# 1 : raffinement sur les simplexes, mais autres acceptes
-# 2 : tous (defaut)
+# 4. Les maillages
+# 4.1. Quel que soit le type de traitement, il faut donner :
+# A. Le concept du maillage initial (entree)
+# B. Le concept du maillage final (sortie)
#
- NON_SIMPLEXE = SIMP(statut='f',typ='I',defaut=2,into=(0,1,2),
- fr="Type d'éléments acceptés.",
- ang="Type of authorized elements." ),
+ MAILLAGE_N = SIMP(statut='o',typ=maillage_sdaster,
+ fr="Maillage avant adaptation",
+ ang="Mesh before adaptation" ),
#
-# 5. Le type de traitement :
+ MAILLAGE_NP1 = SIMP(statut='o',typ=CO,
+ fr="Maillage apres adaptation",
+ ang="Mesh after adaptation" ),
#
- ADAPTATION =FACT(statut='o',
- fr="Type d'adaptation",
- ang="Type of adaptation",
+# 4.2. Eventuellement, on peut produire un maillage annexe
+# Actuellement, c'est le maillage n+1, mais de degré différent.
#
-# 5.1. Deux choix d'adaptation exclusifs :
+ MAILLAGE_NP1_ANNEXE = SIMP(statut='f',typ=CO,
+ fr="Maillage annexe apres adaptation",
+ ang="Additional mesh after adaptation" ),
#
-# 5.1.
-# A. Selon un indicateur d'erreur, avec trois variantes :
-# . Raffinement et deraffinement
-# . Raffinement seul
-# . Deraffinement seul
-# B. Uniforme, avec trois variantes :
-# . Raffinement seul
-# . Deraffinement seul
-# . Rien : le maillage est le meme a la sortie et a l'entree
+# 5. Le pilotage de l'adaptation, avec les variantes suivantes :
+# . Raffinement et deraffinement, selon un champ d'indicateurs d'erreur
+# . Raffinement seul, selon un champ d'indicateurs d'erreur
+# . Deraffinement seul, selon un champ d'indicateurs d'erreur
+# . Raffinement seul, selon des zones geometriques
+# . Raffinement uniforme : toutes les mailles sont divisées
+# . Deraffinement uniforme : toutes les mailles sont regroupées
+# . Rien : le maillage est le meme a la sortie et a l'entree
#
- regles=(
- UN_PARMI('LIBRE','UNIFORME'),
- ),
- LIBRE = SIMP(statut='f',typ='TXM',
- into=("RAFF_DERA","RAFFINEMENT","DERAFFINEMENT"),
- fr="Adaptation selon un indicateur d'erreur.",
- ang="Adaptation among an error indicator" ),
- UNIFORME = SIMP(statut='f',typ='TXM',
- into=("RAFFINEMENT","DERAFFINEMENT","RIEN"),
- fr="Adaptation uniforme.",
- ang="Uniform adaptation" ),
+ ADAPTATION = SIMP(statut='o',typ='TXM',
+ into=("RAFF_DERA","RAFFINEMENT","DERAFFINEMENT","RAFFINEMENT_ZONE", \
+ "RAFFINEMENT_UNIFORME","DERAFFINEMENT_UNIFORME","RIEN"),
+ fr="Pilotage de l'adaptation : selon un indicateur d'erreur ou uniforme.",
+ ang="Adaptation control : among an error indicator or uniform" ),
+#
+# 6. Pour de l'adaptation libre, il faut un indicateur d'erreur
#
-# 5.2. Quel que soit le type de traitement, il faut donner :
-# A. Le concept du maillage initial
-# B. Le concept du maillage final
+ b_indicateur_d_erreur = BLOC( condition = " (ADAPTATION == 'RAFF_DERA') or \
+ (ADAPTATION == 'RAFFINEMENT') or \
+ (ADAPTATION == 'DERAFFINEMENT') " ,
+ fr="Pour une adaptation libre, choix de l'indicateur d'erreur ou d'une zone à raffiner",
+ ang="For free adaptation, selection of error indicator or zone",
#
- MAILLAGE_N = SIMP(statut='o',typ=maillage_sdaster,
- fr="Maillage avant adaptation",
- ang="Mesh before adaptation" ),
- MAILLAGE_NP1 = SIMP(statut='o',typ=CO,
- fr="Maillage apres adaptation",
- ang="Mesh after adaptation" ),
+ regles=(UN_PARMI('CHAM_GD','RESULTAT_N')),
#
-# 5.3. Pour de l'adaptation libre, il faut l'indicateur d'erreur
+# 6.1. Repérage de la zone à raffiner à l'aide d'un indicateur
#
+# 6.1.1. Sous forme de champ de grandeur
#
- b_indicateur_d_erreur =BLOC( condition = " LIBRE != None " ,
- fr="Choix de l'indicateur d'erreur",
- ang="Selection of error indicator",
+ CHAM_GD = SIMP(statut='f',typ=cham_gd_sdaster,
+ fr="Champ de grandeur Code_Aster contenant l'indicateur d'erreur",
+ ang="Code_Aster champ de grandeur with error indicator" ),
#
-# 5.3.1. Le nom du concept resultat_sdaster
+# 6.1.2. Sous forme de concept resultat_sdaster
#
- RESULTAT_N = SIMP(statut='o',typ=(evol_elas,evol_noli,evol_ther) ,
- fr="Concept resultat Code_Aster contenant l'indicateur d'erreur",
- ang="Result with error indicator" ),
+ RESULTAT_N = SIMP(statut='f',typ=(evol_elas,evol_noli,evol_ther) ,
+ fr="Concept resultat Code_Aster contenant l'indicateur d'erreur",
+ ang="Code_Aster result with error indicator" ),
#
-# 5.3.2. Le champ d'indicateur d'erreur
+ b_champ_indicateur = BLOC(condition="(RESULTAT_N != None)",
+ INDICATEUR = SIMP(statut='o',typ='TXM',
+ fr="Champ de l'indicateur d'erreur dans le résultat",
+ ang="Error indicator field in the result structure" ),
+ ),
#
- INDICATEUR = SIMP(statut='o',typ='TXM',
- fr="Champ de l'indicateur d'erreur",
- ang="Error indicator field" ),
+# 6.1.3. La composante retenue
#
-# 5.3.3. La composante retenue
+ b_composante = BLOC(condition=" (RESULTAT_N != None) or (CHAM_GD != None) ",
+ fr="Choix de la composante pour l'indicateur",
+ ang="Component selection for error indicator",
#
- NOM_CMP_INDICA = SIMP(statut='o',typ='TXM',
- fr="Composante retenue",
- ang="Selected component" ),
+ NOM_CMP_INDICA = SIMP(statut='o',typ='TXM',
+ fr="Composante retenue pour l'indicateur d'erreur",
+ ang="Selected component for error indicator" ),
#
-# 5.3.4. Le paramètre temporel pour l'indicateur
+ ),
#
- regles=(EXCLUS('NUME_ORDRE','INST'),),
+# 6.1.4. Le paramètre temporel pour l'indicateur
#
-# 5.3.4.1. Soit le numero d'ordre
+ b_parametre_temporel = BLOC(condition="(RESULTAT_N != None)",
+ fr="Choix éventuel du paramètre temporel pour l'indicateur",
+ ang="Time selection for error indicator (option)",
#
- NUME_ORDRE = SIMP(statut='f',typ='I',
- fr="Numero d ordre",
- ang="Rank" ),
+ regles=(EXCLUS('NUME_ORDRE','INST'),),
#
-# 5.3.4.2. Soit l'instant
-# 5.3.4.2.1. Sa valeur
+# 6.1.4.1. Soit le numero d'ordre
#
- INST = SIMP(statut='f',typ='R',
- fr="Instant associé",
- ang="Instant" ),
+ NUME_ORDRE = SIMP(statut='f',typ='I',
+ fr="Numero d ordre",
+ ang="Rank" ),
#
-# 5.3.4.2.2. La précision du choix de l'instant
+# 6.1.4.2. Soit l'instant
+# 6.1.4.2.1. Sa valeur
#
- b_precision =BLOC(condition="(INST != None)",
- PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3,
- fr="Précision sur le choix de l'instant associé",
- ang="Accuracy over instant choice" ),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU"),
- fr="Critère de précision sur le choix de l'instant associé",
- ang="Accuracy criterium over instant choice" ),),
+ INST = SIMP(statut='f',typ='R',
+ fr="Instant associé",
+ ang="Instant" ),
#
- ) ,
+# 6.1.4.2.2. La précision du choix de l'instant
#
-# 5.4. Les criteres pour de l'adaptation libre :
-# absolu, relatif, en proportion d'entite
-# 5.4.1. Pour le raffinement :
-#
- b_critere_de_raffinement =BLOC( condition = " ( LIBRE == 'RAFF_DERA' ) or ( LIBRE == 'RAFFINEMENT' ) " ,
- fr="Critère de raffinement.",
- ang="Refinement threshold.",
- regles=(UN_PARMI ( 'CRIT_RAFF_ABS', 'CRIT_RAFF_REL', 'CRIT_RAFF_PE' ),),
- CRIT_RAFF_ABS = SIMP(statut='f',typ='R',
- fr="Critère absolu",
- ang="Absolute threshold" ),
- CRIT_RAFF_REL = SIMP(statut='f',typ='R',
- fr="Critère relatif : fraction entre 0 et 1",
- ang="Relative threshold : ratio between 0 and 1" ),
- CRIT_RAFF_PE = SIMP(statut='f',typ='R',
- fr="Pourcentage d'éléments : fraction entre 0 et 1",
- ang="Percentage of elements : ratio between 0 and 1" ),
- ) ,
+ b_precision = BLOC(condition="(INST != None)",
+ fr="Choix de la précision du choix de l'instant",
+ ang="Selection for instant choice",
+ PRECISION = SIMP(statut='f',typ='R',defaut=1.0E-3,
+ fr="Précision sur le choix de l'instant associé",
+ ang="Accuracy over instant choice" ),
+ CRITERE = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU"),
+ fr="Critère de précision sur le choix de l'instant associé",
+ ang="Accuracy criterium over instant choice" ),
+ ),
#
-# 5.4.2. Pour le deraffinement :
-#
- b_critere_de_deraffinement =BLOC ( condition = " ( LIBRE == 'RAFF_DERA' ) or ( LIBRE == 'DERAFFINEMENT' ) " ,
- fr="Critère de déraffinement.",
- ang="Unrefinement threshold.",
- regles=(UN_PARMI ( 'CRIT_DERA_ABS', 'CRIT_DERA_REL', 'CRIT_DERA_PE' ),),
- CRIT_DERA_ABS = SIMP(statut='f',typ='R' ,
- fr="Critère absolu",
- ang="Absolute threshold" ),
- CRIT_DERA_REL = SIMP(statut='f',typ='R',
- fr="Critère relatif : fraction entre 0 et 1",
- ang="Relative threshold : ratio between 0 and 1" ),
- CRIT_DERA_PE = SIMP(statut='f',typ='R',
- fr="Pourcentage d'éléments : fraction entre 0 et 1",
- ang="Percentage of elements : ratio between 0 and 1" ),
- ) ,
+ ),
#
-# 5.5. Les niveaux extremes pour le maillage adapte
-# 5.5.1. Pour le raffinement :
+ ) ,
#
- b_niveau_maximum =BLOC ( condition = " ( LIBRE == 'RAFF_DERA' ) or ( LIBRE == 'RAFFINEMENT' ) or \
- ( UNIFORME == 'RAFFINEMENT' ) " ,
+# 7. Les criteres pour de l'adaptation libre avec un indicateur d'erreur :
+# absolu, relatif, en proportion d'entite
+# 7.1. Pour le raffinement :
+#
+ b_critere_de_raffinement = BLOC( condition = " (ADAPTATION == 'RAFF_DERA') or \
+ (ADAPTATION == 'RAFFINEMENT') " ,
+ fr="Critère de raffinement.",
+ ang="Refinement threshold.",
+#
+ regles=(UN_PARMI ( 'CRIT_RAFF_ABS', 'CRIT_RAFF_REL', 'CRIT_RAFF_PE' ),),
+#
+ CRIT_RAFF_ABS = SIMP(statut='f',typ='R',
+ fr="Critère absolu",
+ ang="Absolute threshold" ),
+ CRIT_RAFF_REL = SIMP(statut='f',typ='R',
+ fr="Critère relatif : fraction réelle entre 0. et 1.",
+ ang="Relative threshold : ratio between 0. and 1." ),
+ CRIT_RAFF_PE = SIMP(statut='f',typ='R',
+ fr="Pourcentage d'éléments : fraction réelle entre 0. et 1.",
+ ang="Percentage of elements : ratio between 0. and 1." ),
+ ) ,
+#
+# 7.2. Pour le deraffinement :
+#
+ b_critere_de_deraffinement = BLOC( condition = " (ADAPTATION == 'RAFF_DERA') or \
+ (ADAPTATION == 'DERAFFINEMENT') " ,
+ fr="Critère de déraffinement.",
+ ang="Unrefinement threshold.",
+#
+ regles=(UN_PARMI ( 'CRIT_DERA_ABS', 'CRIT_DERA_REL', 'CRIT_DERA_PE' ),),
+#
+ CRIT_DERA_ABS = SIMP(statut='f',typ='R' ,
+ fr="Critère absolu",
+ ang="Absolute threshold" ),
+ CRIT_DERA_REL = SIMP(statut='f',typ='R',
+ fr="Critère relatif : fraction réelle entre 0. et 1.",
+ ang="Relative threshold : ratio between 0. and 1." ),
+ CRIT_DERA_PE = SIMP(statut='f',typ='R',
+ fr="Pourcentage d'éléments : fraction réelle entre 0. et 1.",
+ ang="Percentage of elements : ratio between 0. and 1." ),
+ ) ,
+#
+# 8. Pour de l'adaptation par zone, définitions des zones
+# Remarque : on impose le 3D
+#
+ b_zone = BLOC( condition = " (ADAPTATION == 'RAFFINEMENT_ZONE') " ,
+ fr="Pour une adaptation selon une zone à raffiner",
+ ang="For adaptation among zone",
+ ZONE = FACT(statut='f',max='**',
+ fr="Définition de zones à raffiner.",
+ ang="Refined zone definition.",
+#
+ regles=(AU_MOINS_UN('X_MINI','X_CENTRE'),
+ EXCLUS('X_MINI','X_CENTRE',),
+ PRESENT_PRESENT('X_MINI','X_MAXI','Y_MINI','Y_MAXI','Z_MINI','Z_MAXI'),
+ PRESENT_PRESENT('X_CENTRE','Y_CENTRE','Z_CENTRE','RAYON'),),
+#
+# 6.2.1. Une boite parallelepipedique
+#
+ X_MINI = SIMP(statut='f',typ='R',
+ fr="Abscisse minimum de la boite",
+ ang="Minimum X for the box"),
+ X_MAXI = SIMP(statut='f',typ='R',
+ fr="Abscisse maximum de la boite",
+ ang="Maximum X for the box"),
+#
+ Y_MINI = SIMP(statut='f',typ='R',
+ fr="Orodnnée minimum de la boite",
+ ang="Minimum Y for the box"),
+ Y_MAXI = SIMP(statut='f',typ='R',
+ fr="Abscisse maximum de la boite",
+ ang="Maximum Y for the box"),
+#
+ Z_MINI = SIMP(statut='f',typ='R',
+ fr="Cote minimum de la boite",
+ ang="Minimum Z for the box"),
+ Z_MAXI = SIMP(statut='f',typ='R',
+ fr="Cote maximum de la boite",
+ ang="Maximum Z for the box"),
+#
+# 6.2.2. Une sphere
+#
+ X_CENTRE = SIMP(statut='f',typ='R',
+ fr="Abscisse du centre de la sphere",
+ ang="X for the center of the sphere"),
+ Y_CENTRE = SIMP(statut='f',typ='R',
+ fr="Ordonnee du centre de la sphere",
+ ang="Y for the center of the sphere"),
+ Z_CENTRE = SIMP(statut='f',typ='R',
+ fr="Cote du centre de la sphere",
+ ang="Z for the center of the sphere"),
+ RAYON = SIMP(statut='f',typ='R',
+ fr="Rayon de la sphere",
+ ang="Radius of the sphere"),
+#
+ ) ,
+#
+ ) ,
+#
+# 9. Les niveaux extremes pour le maillage adapte
+# 9.1. Pour le raffinement :
+#
+ b_niveau_maximum = BLOC( condition = " (ADAPTATION == 'RAFF_DERA') or \
+ (ADAPTATION == 'RAFFINEMENT') or \
+ (ADAPTATION == 'RAFFINEMENT_UNIFORME') or \
+ (ADAPTATION == 'RAFFINEMENT_ZONE') " ,
fr="Niveau maximum de profondeur de raffinement",
ang="Maximum level for refinement",
- NIVE_MAX = SIMP(statut='f',typ='I' ),
- ) ,
+ NIVE_MAX = SIMP(statut='f',typ='I',
+ fr="Niveau maximum de profondeur de raffinement",
+ ang="Maximum level for refinement"),
+ ) ,
#
-# 5.5.2. Pour le deraffinement :
+# 9.2. Pour le deraffinement :
#
- b_niveau_minimum =BLOC ( condition = " ( LIBRE == 'RAFF_DERA' ) or ( LIBRE == 'DERAFFINEMENT' ) or \
- ( UNIFORME == 'DERAFFINEMENT' ) " ,
+ b_niveau_minimum = BLOC( condition = " (ADAPTATION == 'RAFF_DERA') or \
+ (ADAPTATION == 'DERAFFINEMENT') or \
+ (ADAPTATION == 'DERAFFINEMENT_UNIFORME') " ,
fr="Niveau minimum de profondeur de déraffinement",
ang="Minimum level for unrefinement",
- NIVE_MIN = SIMP(statut='f',typ='I' ),
- ) ,
-#
- ),
+ NIVE_MIN = SIMP(statut='f',typ='I',
+ fr="Niveau minimum de profondeur de déraffinement",
+ ang="Minimum level for unrefinement"),
+ ) ,
#
-# 6. Suivi d'une frontiere
+# 10. Suivi d'une frontiere
#
- MAILLAGE_FRONTIERE = SIMP(statut='f',typ=maillage_sdaster,
+ MAILLAGE_FRONTIERE = SIMP(statut='f',typ=maillage_sdaster,
fr="Maillage de la frontiere à suivre",
ang="Boundary mesh" ),
#
- b_frontiere =BLOC( condition = " MAILLAGE_FRONTIERE != None " ,
- fr="Groupes définissant la frontière",
- ang="Groups which define the boundary",
- GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**' ),
- ) ,
+ b_frontiere = BLOC( condition = " MAILLAGE_FRONTIERE != None " ,
+ fr="Information complémentaire sur la frontière",
+ ang="Further information about boundary",
#
-# 7. Mise à jour de champs sur le nouveau maillage
+ GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**',
+ fr="Liste des groupes de mailles définissant la frontière",
+ ang="Mesh groups which define the boundary" ),
#
- MAJ_CHAM =FACT(statut='f',max='**',
- fr="Mise à jour de champs sur le nouveau maillage.",
- ang="Updating of fields over the new mesh.",
+ ) ,
#
-# 7.1. Le nom du champ qui contiendra le resultat de la mise a jour
+# 11. Mise à jour de champs sur le nouveau maillage
#
- CHAM_MAJ = SIMP(statut='o',typ=CO,
- fr="Nom du champ qui contiendra le champ mis à jour",
- ang="Name of the field for the updated field"),
+ MAJ_CHAM = FACT(statut='f',max='**',
+ fr="Mise à jour de champs sur le nouveau maillage.",
+ ang="Updating of fields over the new mesh.",
#
-# 7.2. Le type du champ qui contiendra le resultat de la mise a jour
+# 11.1. Le nom du champ de grandeur qui contiendra le resultat de la mise a jour
#
- TYPE_CHAM = SIMP(statut='o',typ='TXM',into=C_TYPE_CHAM_INTO(),
- fr="Type du champ qui contiendra le champ mis à jour",
- ang="Type of the field for the updated field" ),
+ CHAM_MAJ = SIMP(statut='o',typ=CO,
+ fr="Nom du champ de grandeur qui contiendra le champ mis à jour",
+ ang="Name of the field for the updated field"),
#
-# 7.3. Le nom du resultat du champ a interpoler
+# 11.2. Le type du champ qui contiendra le resultat de la mise a jour
#
- RESULTAT = SIMP(statut='o',
- typ=(evol_elas,evol_noli,evol_ther),
- fr="Resultat contenant le champ à mettre à jour",
- ang="Result with field to be updated" ),
+ TYPE_CHAM = SIMP(statut='o',typ='TXM',into=C_TYPE_CHAM_INTO(),
+ fr="Type du champ qui contiendra le champ mis à jour",
+ ang="Type of the field for the updated field" ),
#
-# 7.4. Le nom du champ a interpoler
+# 11.3. Le champ a interpoler
#
- NOM_CHAM = SIMP(statut='o',typ='TXM',
- fr="Nom du champ à mettre à jour",
- ang="Name of the field to be updated" ),
+ regles=(UN_PARMI('CHAM_GD','RESULTAT')),
#
-# 7.5. Le paramètre temporel pour le champ a interpoler
+# 11.3.1. Sous forme de champ de grandeur
#
- regles=(EXCLUS('NUME_ORDRE','INST'),),
+ CHAM_GD = SIMP(statut='f',typ=cham_gd_sdaster,
+ fr="Champ de grandeur Code_Aster contenant le champ à mettre à jour",
+ ang="Champ de grandeur with field to be updated" ),
#
-# 7.5.1. Soit le numero d'ordre
+# 11.3.2. Sous forme de champ dans un resultat
#
- NUME_ORDRE = SIMP(statut='f',typ='I',
- fr="Numero d ordre du champ à mettre à jour",
- ang="Rank of the field to be updated" ),
+ RESULTAT = SIMP(statut='f',typ=(evol_elas,evol_noli,evol_ther),
+ fr="Resultat contenant le champ à mettre à jour",
+ ang="Result with field to be updated" ),
#
-# 7.5.2. Soit l'instant
-# 7.5.2.1. Sa valeur
+ b_nom_du_champ = BLOC(condition="(RESULTAT != None)",
+ fr="Choix éventuel du nom du champ à interpoler",
+ ang="Selection for the name of the field (option)",
#
- INST = SIMP(statut='f',typ='R',
- fr="Instant associé",
- ang="Instant" ),
+ NOM_CHAM = SIMP(statut='o',typ='TXM',
+ fr="Nom du champ à mettre à jour",
+ ang="Name of the field to be updated" ),
#
-# 7.5.2.2. La précision du choix de l'instant
+ ),
#
- b_precision =BLOC(condition="(INST != None)",
- PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3,
- fr="Précision sur le choix de l'instant associé",
- ang="Accuracy over instant choice" ),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU"),
- fr="Critère de précision sur le choix de l'instant associé",
- ang="Accuracy criterium over instant choice" ),),
- ),
+# 11.4. Le paramètre temporel pour le champ a interpoler
#
-# 8. Les options d'analyse de maillage ; par defaut, on ne fait que les nombres
-# 8.1. Nombre de noeuds et éléments
+ b_parametre_temporel = BLOC(condition="(RESULTAT != None)",
+ fr="Choix éventuel du paramètre temporel pour le champ à interpoler",
+ ang="Time selection for the field (option)",
#
- NOMBRE = SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON"),
+ regles=(EXCLUS('NUME_ORDRE','INST'),),
+#
+# 11.4.1. Soit le numero d'ordre
+#
+ NUME_ORDRE = SIMP(statut='f',typ='I',
+ fr="Numero d ordre du champ à mettre à jour",
+ ang="Rank of the field to be updated" ),
+#
+# 11.4.2. Soit l'instant
+# 11.4.2.1. Sa valeur
+#
+ INST = SIMP(statut='f',typ='R',
+ fr="Instant associé",
+ ang="Instant" ),
+#
+# 11.4.2.2. La précision du choix de l'instant
+#
+ b_precision = BLOC(condition="(INST != None)",
+ fr="Choix de la précision du choix de l'instant",
+ ang="Selection for instant choice",
+#
+ PRECISION = SIMP(statut='f',typ='R',defaut=1.0E-3,
+ fr="Précision sur le choix de l'instant associé",
+ ang="Accuracy over instant choice" ),
+#
+ CRITERE = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU"),
+ fr="Critère de précision sur le choix de l'instant associé",
+ ang="Accuracy criterium over instant choice" ),
+#
+ ),
+#
+ ),
+ ),
+#
+# 12. Les options d'analyse de maillage ; par defaut, on ne fait que les nombres
+# 12.1. Nombre de noeuds et éléments
+#
+ NOMBRE = SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON"),
fr="Nombre de noeuds et éléments du maillage",
ang="Number of nodes and éléments in the mesh" ),
#
-# 8.2. Determination de la qualité des éléments du maillage
+# 12.2. Determination de la qualité des éléments du maillage
#
- QUALITE = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),
+ QUALITE = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),
fr="Qualité du maillage",
ang="Mesh quality" ),
#
-# 8.3. Connexite du maillage
+# 12.3. Connexite du maillage
#
- CONNEXITE = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),
+ CONNEXITE = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),
fr="Connexité du maillage.",
ang="Mesh connexity." ),
#
-# 8.4. Taille des sous-domaines du maillage
+# 12.4. Taille des sous-domaines du maillage
#
- TAILLE = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),
+ TAILLE = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),
fr="Tailles des sous-domaines du maillage.",
ang="Sizes of mesh sub-domains." ),
#
-# 8.5. Controle de la non-interpenetration des éléments
+# 12.5. Controle de la non-interpenetration des éléments
#
- INTERPENETRATION=SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),
+ INTERPENETRATION= SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),
fr="Controle de la non interpénétration des éléments.",
ang="Overlapping checking." ),
#
-) ;
-#& MODIF COMMANDE DATE 22/02/2005 AUTEUR DURAND C.DURAND
+# 13. Gestion des éléments autres que ceux compatibles avec HOMARD
+# "REFUSER" : ils sont refuses (defaut)
+# "IGNORER" : ils sont ignorés
+#
+ ELEMENTS_NON_HOMARD = SIMP(statut='f',typ='TXM',defaut="REFUSER",into=("REFUSER","IGNORER"),
+ fr="Acceptation d'éléments incompatibles avec HOMARD",
+ ang="Incompatible elements for HOMARD" ),
+#
+) ;
+#& MODIF COMMANDE DATE 07/10/2005 AUTEUR CIBHHPD L.SALMONA
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
return evol_noli
MACR_ASCOUF_CALC=MACRO(nom="MACR_ASCOUF_CALC",op=macr_ascouf_calc_ops,sd_prod=macr_ascouf_calc_prod,
- fr=" ",
+ fr="Réalise l'analyse thermomécanique du coude dont le maillage a été concu par MACR_ASCOUF_MAIL",
reentrant='n',
UIinfo={"groupes":("Outils métier",)},
regles=(UN_PARMI('COMP_INCR','COMP_ELAS'),),
COMP_INCR =FACT(statut='f',
RELATION =SIMP(statut='o',typ='TXM',into=("VMIS_ISOT_TRAC",) ),
VMIS_ISOT_TRAC =SIMP(statut='c',typ='I',defaut= 2,into=( 2 ,) ),
+ RESI_INTE_RELA =SIMP(statut='f',typ='R'
+ ,defaut= 1.0E-6),
+ ITER_INTE_MAXI =SIMP(statut='f',typ='I',defaut= 10 ),
+ ITER_INTE_PAS =SIMP(statut='f',typ='I',defaut= 0 ),
+ RESO_INTE =SIMP(statut='f',typ='TXM',defaut="IMPLICITE",
+ into=("RUNGE_KUTTA_2","RUNGE_KUTTA_4","IMPLICITE")),
),
COMP_ELAS =FACT(statut='f',
RELATION =SIMP(statut='o',typ='TXM',into=("ELAS","ELAS_VMIS_TRAC") ),
ELAS =SIMP(statut='c',typ='I',defaut= 1,into=( 1 ,) ),
ELAS_VMIS_TRAC =SIMP(statut='c',typ='I',defaut= 1,into=( 1 ,) ),
+ RESI_INTE_RELA =SIMP(statut='f',typ='R',defaut= 1.0E-6),
+ ITER_INTE_MAXI =SIMP(statut='f',typ='I',defaut= 10 ),
+ ITER_INTE_PAS =SIMP(statut='f',typ='I',defaut= 0 ),
+ RESO_INTE =SIMP(statut='f',typ='TXM',defaut="IMPLICITE",
+ into=("RUNGE_KUTTA_2","RUNGE_KUTTA_4","IMPLICITE")),
),
SOLVEUR =FACT(statut='d',
RESI_GLOB_RELA =SIMP(statut='f',typ='R'),
ITER_GLOB_MAXI =SIMP(statut='f',typ='I',defaut=10),
ARRET =SIMP(statut='f',typ='TXM',defaut="OUI"),
- RESI_INTE_RELA =SIMP(statut='f',typ='R'
- ,defaut= 1.0E-6),
- ITER_INTE_MAXI =SIMP(statut='f',typ='I',defaut= 10 ),
- ITER_INTE_PAS =SIMP(statut='f',typ='I',defaut= 0 ),
- RESO_INTE =SIMP(statut='f',typ='TXM',defaut="IMPLICITE",into=("RUNGE_KUTTA_2","RUNGE_KUTTA_4","IMPLICITE")),
),
NEWTON =FACT(statut='d',
INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ),
) ;
-#& MODIF COMMANDE DATE 17/08/2004 AUTEUR DURAND C.DURAND
+#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# RESPONSABLE F1BHHAJ J.ANGLES
from Macro.macr_ascouf_mail_ops import macr_ascouf_mail_ops
MACR_ASCOUF_MAIL=MACRO(nom="MACR_ASCOUF_MAIL",op=macr_ascouf_mail_ops,sd_prod=maillage_sdaster,
- fr=" ",reentrant='n',
- UIinfo={"groupes":("Outils métier",)},
+ fr="Engendre le maillage d'un coude sain ou comportant une fissure ou une (ou plusieurs) sous-épaisseur(s)",
+ UIinfo={"groupes":("Outils métier",)},reentrant='n',
regles=(EXCLUS('SOUS_EPAIS_COUDE','FISS_COUDE','SOUS_EPAIS_MULTI'),),
INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ),
) ;
-#& MODIF COMMANDE DATE 22/02/2005 AUTEUR DURAND C.DURAND
+#& MODIF COMMANDE DATE 07/10/2005 AUTEUR CIBHHPD L.SALMONA
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
return evol_noli
MACR_ASPIC_CALC=MACRO(nom="MACR_ASPIC_CALC",op=macr_aspic_calc_ops,sd_prod=macr_aspic_calc_prod,
- fr=" ",reentrant='n',
- UIinfo={"groupes":("Outils métier",)},
+ fr="Réalise un calcul prédéfini de piquages sains ou fissurés ainsi que les post-traitements associés ",
+ UIinfo={"groupes":("Outils métier",)},reentrant='n',
regles=(UN_PARMI('COMP_INCR','COMP_ELAS'),),
TYPE_MAILLAGE =SIMP(statut='o',typ='TXM',
COMP_INCR =FACT(statut='f',
RELATION =SIMP(statut='o',typ='TXM',into=("VMIS_ISOT_TRAC",) ),
VMIS_ISOT_TRAC =SIMP(statut='c',typ='I',defaut= 2,into=( 2 ,) ),
+ RESI_INTE_RELA =SIMP(statut='f',typ='R',defaut=1.0E-6),
+ ITER_INTE_MAXI =SIMP(statut='f',typ='I',defaut=10),
+ ITER_INTE_PAS =SIMP(statut='f',typ='I',defaut=0),
+ RESO_INTE =SIMP(statut='f',typ='TXM',defaut="IMPLICITE",
+ into=("RUNGE_KUTTA_2","RUNGE_KUTTA_4","IMPLICITE")),
),
COMP_ELAS =FACT(statut='f',
RELATION =SIMP(statut='o',typ='TXM',into=("ELAS","ELAS_VMIS_TRAC") ),
ELAS =SIMP(statut='c',typ='I',defaut= 1,into=( 1 ,) ),
ELAS_VMIS_TRAC =SIMP(statut='c',typ='I',defaut= 1,into=( 1 ,) ),
+ RESI_INTE_RELA =SIMP(statut='f',typ='R',defaut= 1.0E-6),
+ ITER_INTE_MAXI =SIMP(statut='f',typ='I',defaut= 10 ),
+ ITER_INTE_PAS =SIMP(statut='f',typ='I',defaut= 0 ),
+ RESO_INTE =SIMP(statut='f',typ='TXM',defaut="IMPLICITE",
+ into=("RUNGE_KUTTA_2","RUNGE_KUTTA_4","IMPLICITE")),
),
THETA_3D =FACT(statut='f',max='**',
RESI_GLOB_RELA =SIMP(statut='f',typ='R'),
ITER_GLOB_MAXI =SIMP(statut='f',typ='I',defaut=10),
ARRET =SIMP(statut='f',typ='TXM',defaut="OUI"),
- RESI_INTE_RELA =SIMP(statut='f',typ='R',defaut=1.0E-6),
- ITER_INTE_MAXI =SIMP(statut='f',typ='I',defaut=10),
- ITER_INTE_PAS =SIMP(statut='f',typ='I',defaut=0),
- RESO_INTE =SIMP(statut='f',typ='TXM',defaut="IMPLICITE",into=("RUNGE_KUTTA_2","RUNGE_KUTTA_4","IMPLICITE")),
),
NEWTON =FACT(statut='d',
TITRE =SIMP(statut='f',typ='TXM'),
)
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
from Macro.macr_aspic_mail_ops import macr_aspic_mail_ops
MACR_ASPIC_MAIL=MACRO(nom="MACR_ASPIC_MAIL",op= macr_aspic_mail_ops,sd_prod=maillage_sdaster,reentrant='n',
- fr=" ",
+ fr="Engendre le maillage d'un piquage sain ou avec fissure (longue ou courte)",
UIinfo={"groupes":("Outils métier",)},
EXEC_MAILLAGE =FACT(statut='o',
INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
) ;
-#& MODIF COMMANDE DATE 22/02/2005 AUTEUR DURAND C.DURAND
+#& MODIF COMMANDE DATE 07/10/2005 AUTEUR CIBHHPD L.SALMONA
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2003 EDF R&D WWW.CODE-ASTER.ORG
MACR_CABRI_CALC=MACRO(nom="MACR_CABRI_CALC",
op=macr_cabri_calc_ops,
sd_prod=macr_cabri_calc_prod,
- fr="Calcul d'une jonction boulonnée de tuyauterie",
+ fr="Calcul thermo-mécanique d'une jonction boulonnée de tuyauterie",
reentrant='n',
UIinfo={"groupes":("Outils métier",)},
MAILLAGE = SIMP(statut='o',typ=maillage_sdaster,),
REAC_ITER =SIMP(statut='f',typ='I',defaut=0),
EVOL_NOLI =SIMP(statut='f',typ=evol_noli),
),
+ RESO_INTE =SIMP(statut='f',typ='TXM',defaut="IMPLICITE",
+ into=("IMPLICITE",)),
CONVERGENCE =FACT(statut='d',
regles=(PRESENT_ABSENT('RESI_REFE_RELA','RESI_GLOB_MAXI','RESI_GLOB_RELA'),),
SIGM_REFE =SIMP(statut='f',typ='R'),
RESI_GLOB_RELA =SIMP(statut='f',typ='R'),
ITER_GLOB_MAXI =SIMP(statut='f',typ='I',defaut=10),
ITER_GLOB_ELAS =SIMP(statut='f',typ='I',defaut=25),
- RESO_INTE =SIMP(statut='f',typ='TXM',defaut="IMPLICITE",
- into=("IMPLICITE",)),
),
);
),
);
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 03/01/2006 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2003 EDF R&D WWW.CODE-ASTER.ORG
from Macro.macr_cara_poutre_ops import macr_cara_poutre_ops
-MACR_CARA_POUTRE=MACRO(nom="MACR_CARA_POUTRE",op=macr_cara_poutre_ops,sd_prod=tabl_cara_geom,
+MACR_CARA_POUTRE=MACRO(nom="MACR_CARA_POUTRE",op=macr_cara_poutre_ops,sd_prod=table_sdaster,
reentrant='n',
UIinfo={"groupes":("Modélisation",)},
- fr="caractéristiques d'une section transversale de poutre à partir d'un maillage 2D",
+ fr="Calculer les caractéristiques d'une section transversale de poutre à partir d'un maillage 2D de la section",
regles=(EXCLUS('SYME_X','GROUP_MA_BORD'),
EXCLUS('SYME_Y','GROUP_MA_BORD'),),
fr="type de conditions aux limites sur le plancher supérieur" ),
),
)
-#& MODIF COMMANDE DATE 22/02/2005 AUTEUR DURAND C.DURAND
+#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
MACR_ECLA_PG=MACRO(nom="MACR_ECLA_PG",op=macr_ecla_pg_ops,sd_prod=macr_ecla_pg_prod, reentrant='n',
UIinfo={"groupes":("Post traitements",)},
- fr="permettre la visualisation des champs aux points de Gauss d'une SD_RESULTAT.",
+ fr="Permettre la visualisation des champs aux points de Gauss d'une SD_RESULTAT sans lissage ni interpolation",
# SD résultat ,modèle et champs à "éclater" :
PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3),
CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",) ),
)
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
MACR_ELEM_DYNA=OPER(nom="MACR_ELEM_DYNA",op= 81,sd_prod=macr_elem_dyna,
- fr="Définition d un macro élément pour analyse modale ou harmonique par sous structuration dynamique",
+ fr="Définition d'un macro élément pour analyse modale ou harmonique par sous structuration dynamique",
reentrant='n',
UIinfo={"groupes":("Matrices/vecteurs",)},
regles=(EXCLUS('MATR_AMOR','AMOR_REDUIT' ),),
OPTION =SIMP(statut='f',typ='TXM',defaut="CLASSIQUE",into=("CLASSIQUE","RITZ",
"DIAG_MASS") ),
) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# ======================================================================
MACR_ELEM_STAT=OPER(nom="MACR_ELEM_STAT",op=86,sd_prod=macr_elem_stat,reentrant='f',
UIinfo={"groupes":("Matrices/vecteurs",)},
- fr="Définition d un macro-élément pour l analyse statique par sous structuration",
+ fr="Définition d'un macro-élément pour l'analyse statique par sous-structuration",
regles=(AU_MOINS_UN('DEFINITION','RIGI_MECA','MASS_MECA','CAS_CHARGE'),
ENSEMBLE('DEFINITION','EXTERIEUR'),),
DEFINITION =FACT(statut='f',
INST =SIMP(statut='f',typ='R',defaut=0.E+0),
),
) ;
-#& MODIF COMMANDE DATE 07/10/2004 AUTEUR GNICOLAS G.NICOLAS
+#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
from Macro.macr_fiab_impr_ops import macr_fiab_impr_ops
MACR_FIAB_IMPR=MACRO(nom="MACR_FIAB_IMPR",op=macr_fiab_impr_ops,
- docu="U7.04.41",
+ docu="U7.04.41",UIinfo={"groupe":("Impression",)},
fr="Imprimer les valeurs à transmettre au logiciel de fiabilité.",
ang="Print values for the fiability software",
#
),
#
);
-#& MODIF COMMANDE DATE 14/09/2004 AUTEUR MCOURTOI M.COURTOIS
+#& MODIF COMMANDE DATE 04/10/2005 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
#====
#
MACR_FIABILITE = MACRO ( nom="MACR_FIABILITE",op=macr_fiabilite_ops,
- docu="U7.03.31",
+ docu="U7.03.31",UIinfo={"groupe":("Post traitements",)},
sd_prod=macr_fiabilite_prod,
- fr="Faire de la mécanique fiabiliste.",
+ fr="Calcule les probabiltés de dépassement de seuil (mécanique de fiabilité).",
ang="Fiability mechanics.",
#
#====
#
# 6.2.6. ==> Les correlations entre les variables
#
- MATRICE = SIMP(statut="o",typ="R",max="**",
+ MATRICE = SIMP(statut="f",typ="R",max="**",
fr="Matrice de corrélation entre les variables.",
ang="Correlation matrix."),
#
),
#
);
-#& MODIF COMMANDE DATE 03/11/2004 AUTEUR MCOURTOI M.COURTOIS
+#& MODIF COMMANDE DATE 22/05/2006 AUTEUR MCOURTOI M.COURTOIS
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
from Macro.macr_adap_mail_ops import macr_adap_mail_ops
MACR_INFO_MAIL=MACRO(nom="MACR_INFO_MAIL",op=macr_adap_mail_ops,
- docu="U7.03.02-b",
+ docu="U7.03.02-b",UIinfo={"groupe":("Maillage",)},
fr="Donner des informations sur un maillage.",
ang="To give information about a mesh.",
#
# 1. Le niveau d'information
#
- INFO = SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
+ INFO = SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
#
# 2. Version de HOMARD
#
- VERSION_HOMARD = SIMP(statut='f',typ='TXM',defaut="V7_1",
- into=("V7_1", "V7_N", "V7_N_PERSO"),
- fr="Version de HOMARD",
- ang="HOMARD release"),
+ VERSION_HOMARD = SIMP(statut='f',typ='TXM',defaut="V8_2",
+ into=("V8_2", "V8_N", "V8_N_PERSO"),
+ fr="Version de HOMARD",
+ ang="HOMARD release"),
#
# 3. Langue des messages issus de HOMARD
#
- LANGUE = SIMP(statut='f',typ='TXM',defaut="FRANCAIS",
- into=("FRANCAIS","FRENCH","ANGLAIS","ENGLISH",),
- fr="Langue des messages issus de HOMARD.",
- ang="Language for HOMARD messages." ),
-#
-# 4. Gestion des éléments autres que des simplexes
-# 0 : autres elements refusés
-# 1 : analyse exclusivement sur les simplexes, mais autres éléments acceptés
-# 2 : tous (defaut)
+ LANGUE = SIMP(statut='f',typ='TXM',defaut="FRANCAIS",
+ into=("FRANCAIS","FRENCH","ANGLAIS","ENGLISH",),
+ fr="Langue des messages issus de HOMARD.",
+ ang="Language for HOMARD messages." ),
#
- NON_SIMPLEXE = SIMP(statut='f',typ='I',defaut=2,into=(0,1,2),
- fr="Acceptation d'éléments quad, hexa et penta",
- ang="quad, hexa and penta elements allowed" ),
+# 4. Le nom du maillage a analyser
#
-# 5. Le nom du maillage a analyser
+ MAILLAGE = SIMP(statut='o',typ=maillage_sdaster,
+ fr="Maillage à analyser.",
+ ang="Mesh to be checked." ),
#
- MAILLAGE = SIMP(statut='o',typ=maillage_sdaster,
- fr="Maillage à analyser.",
- ang="Mesh to be checked." ),
+# 5. Suivi d'une frontiere
#
-# 6. Suivi d'une frontiere
-#
- MAILLAGE_FRONTIERE = SIMP(statut='f',typ=maillage_sdaster,
+ MAILLAGE_FRONTIERE = SIMP(statut='f',typ=maillage_sdaster,
fr="Maillage de la frontiere à suivre",
ang="Boundary mesh" ),
#
- b_frontiere =BLOC( condition = " MAILLAGE_FRONTIERE != None " ,
- fr="Groupes définissant la frontière",
- ang="Groups which define the boundary",
- GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**' ),
- ) ,
+ b_frontiere = BLOC( condition = " MAILLAGE_FRONTIERE != None " ,
+ fr="Information complémentaire sur la frontière",
+ ang="Further information about boundary",
#
-# 7. Les options ; par defaut, on ne fait que les nombres
-# 7.1. Nombre de noeuds et elements
+ GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**',
+ fr="Groupes de mailles définissant la frontière",
+ ang="Mesh groups which define the boundary" ),
#
- NOMBRE = SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON"),
- fr="Nombre de noeuds et éléments du maillage",
- ang="Number of nodes and elements in the mesh" ),
+ ) ,
#
-# 7.2. Determination de la qualite des elements du maillage
+# 6. Les options ; par defaut, on controle tout
+# 6.1. Nombre de noeuds et elements
#
- QUALITE = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),
- fr="Qualité du maillage",
- ang="Mesh quality" ),
+ NOMBRE = SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON"),
+ fr="Nombre de noeuds et éléments du maillage",
+ ang="Number of nodes and elements in the mesh" ),
#
-# 7.3. Connexite du maillage
+# 6.2. Determination de la qualite des elements du maillage
#
- CONNEXITE = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),
- fr="Connexité du maillage.",
- ang="Mesh connexity." ),
+ QUALITE = SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON"),
+ fr="Qualité du maillage",
+ ang="Mesh quality" ),
#
-# 7.4. Taille des sous-domaines du maillage
+# 6.3. Connexite du maillage
#
- TAILLE = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),
- fr="Tailles des sous-domaines du maillage.",
- ang="Sizes of mesh sub-domains." ),
+ CONNEXITE = SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON"),
+ fr="Connexité du maillage.",
+ ang="Mesh connexity." ),
#
-# 7.5. Controle de la non-interpenetration des elements
+# 6.4. Taille des sous-domaines du maillage
#
- INTERPENETRATION=SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),
- fr="Controle de la non interpénétration des éléments.",
- ang="Overlapping checking." ),
+ TAILLE = SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON"),
+ fr="Tailles des sous-domaines du maillage.",
+ ang="Sizes of mesh sub-domains." ),
+#
+# 6.5. Controle de la non-interpenetration des elements
#
+ INTERPENETRATION=SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON"),
+ fr="Controle de la non interpénétration des éléments.",
+ ang="Overlapping checking." ),
+#
+# 7. Gestion des éléments autres que ceux compatibles avec HOMARD
+# "REFUSER" : ils sont refuses (defaut)
+# "IGNORER" : ils sont ignorés
+#
+ ELEMENTS_NON_HOMARD = SIMP(statut='f',typ='TXM',defaut="REFUSER",into=("REFUSER","IGNORER"),
+ fr="Acceptation d'éléments incompatibles avec HOMARD",
+ ang="Incompatible elements for HOMARD" ),
) ;
-#& MODIF COMMANDE DATE 14/02/2005 AUTEUR DURAND C.DURAND
+#& MODIF COMMANDE DATE 09/05/2006 AUTEUR GALENNE E.GALENNE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
MACR_LIGN_COUPE=MACRO(nom="MACR_LIGN_COUPE",op=macr_lign_coupe_ops,sd_prod=table_sdaster,
reentrant='n',
UIinfo={"groupes":("Outils métier",)},
- fr="extraction d un résultat sur des lignes de coupes définies par 2 points ou un group_no",
+ fr="Extraction des valeurs d'un résultat dans une ou plusieurs tables sur des lignes de coupe définies"
+ +" par deux points et un intervalle",
RESULTAT =SIMP(statut='o',typ=(evol_elas,evol_noli,evol_ther) ),
# extraction des résultats
b_meca =BLOC(condition = "AsType(RESULTAT) in (evol_elas,evol_noli)",fr="résultat mécanique",
),
UNITE_MAILLAGE =SIMP(statut='f',typ='I',defaut=25),
MODELE =SIMP(statut='f',typ=modele_sdaster ),
+ GROUP_MA =SIMP(statut='f',typ=grma),
+ MAILLE =SIMP(statut='f',typ=ma,max='**'),
+ regles=(EXCLUS('GROUP_MA','MAILLE'),),
LIGN_COUPE =FACT(statut='o',max='**',
regles=(UN_PARMI('NB_POINTS','GROUP_NO'),),
INTITULE =SIMP(statut='f',typ='TXM',),
- GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),),
+ GROUP_NO =SIMP(statut='f',typ=grno),
NB_POINTS =SIMP(statut='f',typ='I'),
b_nbpts = BLOC(condition = "NB_POINTS != None",
COOR_ORIG =SIMP(statut='o',typ='R',min=2,max=3),
- COOR_EXTR =SIMP(statut='o',typ='R',min=2,max=3), ),
+ COOR_EXTR =SIMP(statut='o',typ='R',min=2,max=3),
+ VECT_Y =SIMP(statut='f',typ='R',min=2,max=3),),
),
) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+
+
+#& MODIF COMMANDE DATE 08/11/2005 AUTEUR ASSIRE A.ASSIRE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
MACR_RECAL = MACRO(nom="MACR_RECAL",op=macr_recal_ops,
UIinfo={"groupes":("Résultats et champs",)},
sd_prod=macr_recal_prod,
- fr="Réalise le recalage de modèles Aster",
+ fr="Réalise le recalage des calculs Aster sur des résultats expérimentaux"
+ +" ou sur d'autres résultats de calculs",
UNITE_ESCL =SIMP(statut='o',typ='I'),
RESU_EXP =SIMP(statut='o',typ=assd,max='**'),
POIDS =SIMP(statut='f',typ=assd,max='**'),
PARA_DIFF_FINI =SIMP(statut='f',typ='R',defaut=0.001),
GRAPHIQUE =FACT(statut='d',
UNITE =SIMP(statut='f',typ='I',defaut=90),
- INTERACTIF =SIMP(statut='f',typ='TXM',defaut='NON',into=("OUI","NON")),)
+ FORMAT =SIMP(statut='f',typ='TXM',defaut='XMGRACE',into=("XMGRACE","GNUPLOT")),
+ INTERACTIF =SIMP(statut='f',typ='TXM',defaut='NON',into=("OUI","NON")),),
+ INFO =SIMP(statut='f',typ='I',defaut=1,into=( 1, 2 ) ),
) ;
-#& MODIF COMMANDE DATE 22/02/2005 AUTEUR DURAND C.DURAND
+#& MODIF COMMANDE DATE 04/04/2006 AUTEUR CIBHHLV L.VIVAN
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
MACRO_ELAS_MULT=MACRO(nom="MACRO_ELAS_MULT",op=macro_elas_mult_ops,sd_prod=macro_elas_mult_prod,reentrant='f',
UIinfo={"groupes":("Résolution",)},
+ fr="Calculer les réponses statiques linéaires pour différents cas de charges ou modes de Fourier",
regles=(UN_PARMI('CHAR_MECA_GLOBAL','CHAR_CINE_GLOBAL','LIAISON_DISCRET', ),),
MODELE =SIMP(statut='o',typ=modele_sdaster),
CHAM_MATER =SIMP(statut='f',typ=cham_mater),
"EPSI_ELGA_DEPL","EPSG_ELNO_DEPL","EPSG_ELGA_DEPL","EPSP_ELNO","EPSP_ELGA",
"ECIN_ELEM_DEPL","FLUX_ELGA_TEMP","FLUX_ELNO_TEMP","SOUR_ELGA_ELEC",
"PRES_ELNO_DBEL","PRES_ELNO_REEL","PRES_ELNO_IMAG","INTE_ELNO_ACTI",
- "INTE_ELNO_REAC","SIGM_NOZ1_ELGA","ERRE_ELEM_NOZ1","SIGM_NOZ2_ELGA",
- "ERRE_ELEM_NOZ2","VNOR_ELEM_DEPL","ERRE_ELNO_ELGA","SIRE_ELNO_DEPL",
- "ERRE_ELGA_NORE","EQUI_ELNO_SIGM","EQUI_ELGA_SIGM","EQUI_ELNO_EPSI",
+ "INTE_ELNO_REAC","SIGM_NOZ1_ELGA","ERZ1_ELEM_SIGM","SIGM_NOZ2_ELGA",
+ "ERZ2_ELEM_SIGM","VNOR_ELEM_DEPL","ERRE_ELNO_ELEM","SIRE_ELNO_DEPL",
+ "ERRE_ELEM_SIGM","EQUI_ELNO_SIGM","EQUI_ELGA_SIGM","EQUI_ELNO_EPSI",
+ "QIRE_ELEM_SIGM","QIRE_ELNO_ELEM","QIZ1_ELEM_SIGM","QIZ2_ELEM_SIGM",
"EQUI_ELGA_EPSI","FORC_NODA","REAC_NODA","EPSI_NOEU_DEPL","SIGM_NOEU_DEPL",
"EFGE_NOEU_DEPL","EQUI_NOEU_SIGM","EQUI_NOEU_EPSI","FLUX_NOEU_TEMP") ),
NUME_COUCHE =SIMP(statut='f',typ='I',defaut=1),
NIVE_COUCHE =SIMP(statut='f',typ='TXM',defaut="MOY",into=("SUP","INF","MOY")),
SOUS_TITRE =SIMP(statut='f',typ='TXM',max='**'),
- VECT_ASSE =SIMP(statut='f',typ=cham_no_depl_r),
+ VECT_ASSE =SIMP(statut='f',typ=cham_no_sdaster),
),
SOLVEUR =FACT(statut='d',
METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT") ),
INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2)),
TITRE =SIMP(statut='f',typ='TXM',max='**'),
) ;
-#& MODIF COMMANDE DATE 22/02/2005 AUTEUR DURAND C.DURAND
+#& MODIF COMMANDE DATE 21/02/2006 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
self.type_sdprod(MATR_RIGI_AJOU,matr_asse_gene_r)
if FORC_AJOU != None:
for m in FORC_AJOU:
- self.type_sdprod(m['VECTEUR'],vect_asse_gene_r)
+ self.type_sdprod(m['VECTEUR'],vect_asse_gene)
return None
MACRO_MATR_AJOU=MACRO(nom="MACRO_MATR_AJOU",op=macro_matr_ajou_ops,sd_prod=macro_matr_ajou_prod,
UIinfo={"groupes":("Matrices/vecteurs",)},
+ fr="Calculer de facon plus condensée qu'avec CALC_MATR_AJOU des matrices de masse, d'amortissement"
+ +" ou de rigidité ajoutés",
regles=(AU_MOINS_UN('MODE_MECA','DEPL_IMPO','MODELE_GENE'),
AU_MOINS_UN('MATR_MASS_AJOU','MATR_AMOR_AJOU','MATR_RIGI_AJOU'),
EXCLUS('MODE_MECA','DEPL_IMPO','MODELE_GENE'),
POTENTIEL =SIMP(statut='f',typ=evol_ther),
),
MODE_MECA =SIMP(statut='f',typ=mode_meca),
- DEPL_IMPO =SIMP(statut='f',typ=cham_no_depl_r),
+ DEPL_IMPO =SIMP(statut='f',typ=cham_no_sdaster),
MODELE_GENE =SIMP(statut='f',typ=modele_gene),
NUME_DDL_GENE =SIMP(statut='f',typ=nume_ddl_gene),
DIST_REFE =SIMP(statut='f',typ='R',defaut= 1.0E-2),
NOEUD_DOUBLE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
AVEC_MODE_STAT =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")),
)
-#& MODIF COMMANDE DATE 01/04/2005 AUTEUR VABHHTS J.PELLET
+#& MODIF COMMANDE DATE 16/05/2006 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
MACRO_MATR_ASSE=MACRO(nom="MACRO_MATR_ASSE",op=macro_matr_asse_ops,
UIinfo={"groupes":("Matrices/vecteurs",)},
sd_prod=macro_matr_asse_prod,
- fr="Calcul des matrices assemblées (matr_asse_gd) par exemple de rigidité, de masse ",
+ fr="Calcul des matrices assemblées (rigidité, masse, amortissement,...) ",
MODELE =SIMP(statut='o',typ=modele_sdaster),
CHAM_MATER =SIMP(statut='f',typ=cham_mater),
INST =SIMP(statut='f',typ='R',defaut=0.),
),
b_rigi_geom = BLOC( condition = "OPTION=='RIGI_GEOM'",
- SIEF_ELGA =SIMP(statut='o',typ=cham_elem_sief_r),
+ SIEF_ELGA =SIMP(statut='o',typ=cham_elem),
MODE_FOURIER =SIMP(statut='f',typ='I',defaut= 0),
),
TITRE =SIMP(statut='f',typ='TXM',max='**'),
INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
) ;
-#& MODIF COMMANDE DATE 03/11/2004 AUTEUR ACBHHCD G.DEVESA
+#& MODIF COMMANDE DATE 20/03/2006 AUTEUR ACBHHCD G.DEVESA
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
from Macro.macro_miss_3d_ops import macro_miss_3d_ops
-MACRO_MISS_3D=MACRO(nom="MACRO_MISS_3D",op=macro_miss_3d_ops,fr=" ",
+MACRO_MISS_3D=MACRO(nom="MACRO_MISS_3D",op=macro_miss_3d_ops,
+ fr="Préparation des données puis exécution du logiciel MISS3D",
UIinfo={"groupes":("Matrices/vecteurs",)},
OPTION =FACT(statut='o',
regles=(UN_PARMI('TOUT','MODULE'),),
UNITE_IMPR_ASTER=SIMP(statut='f',typ='I',defaut=25),
UNITE_OPTI_MISS =SIMP(statut='f',typ='I',defaut=26),
UNITE_MODELE_SOL=SIMP(statut='f',typ='I',defaut=27),
- UNITE_RESU_IMPE =SIMP(statut='f',typ='I',defaut=30),
+ UNITE_RESU_IMPE =SIMP(statut='f',typ='I',defaut=30),
+ UNITE_RESU_FORC =SIMP(statut='f',typ='I',defaut=0),
+ PARAMETRE =FACT(statut='f',
+ regles=(PRESENT_PRESENT('FREQ_MIN','FREQ_MAX','FREQ_PAS'),
+ PRESENT_PRESENT('CONTR_NB','CONTR_LISTE'),
+ PRESENT_PRESENT('LFREQ_NB','LFREQ_LISTE'),
+ PRESENT_PRESENT('OFFSET_MAX','OFFSET_NB'),
+ PRESENT_PRESENT('SPEC_MAX','SPEC_NB'),),
+ FREQ_MIN =SIMP(statut='f',typ='R'),
+ FREQ_MAX =SIMP(statut='f',typ='R'),
+ FREQ_PAS =SIMP(statut='f',typ='R'),
+ Z0 =SIMP(statut='f',typ='R'),
+ SURF =SIMP(statut='f',typ='TXM',into=("OUI","NON",),defaut="NON"),
+ RFIC =SIMP(statut='f',typ='R'),
+ FICH_RESU_IMPE =SIMP(statut='f',typ='TXM'),
+ FICH_RESU_FORC =SIMP(statut='f',typ='TXM'),
+ DREF =SIMP(statut='f',typ='R'),
+ ALGO =SIMP(statut='f',typ='TXM',into=("DEPL","REGU")),
+ OFFSET_MAX =SIMP(statut='f',typ='R'),
+ OFFSET_NB =SIMP(statut='f',typ='I'),
+ SPEC_MAX =SIMP(statut='f',typ='R'),
+ SPEC_NB =SIMP(statut='f',typ='I'),
+ ISSF =SIMP(statut='f',typ='TXM',into=("OUI","NON",),defaut="NON"),
+ FICH_POST_TRAI =SIMP(statut='f',typ='TXM'),
+ CONTR_NB =SIMP(statut='f',typ='I'),
+ CONTR_LISTE =SIMP(statut='f',typ='R',max='**'),
+ LFREQ_NB =SIMP(statut='f',typ='I'),
+ LFREQ_LISTE =SIMP(statut='f',typ='R',max='**'),
+ ),
) ;
-#& MODIF COMMANDE DATE 22/02/2005 AUTEUR DURAND C.DURAND
+#& MODIF COMMANDE DATE 03/01/2006 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
from Macro.macro_mode_meca_ops import macro_mode_meca_ops
MACRO_MODE_MECA=MACRO(nom="MACRO_MODE_MECA",op=macro_mode_meca_ops,sd_prod=mode_meca,
- reentrant='n',
+ reentrant='n',fr="Lancer une succession de calculs de modes propres réels",
UIinfo={"groupes":("Résolution",)},
MATR_A =SIMP(statut='o',typ=matr_asse_depl_r ),
MATR_B =SIMP(statut='o',typ=matr_asse_depl_r ),
STURM =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
),
NORM_MODE =FACT(statut='o',max='**',
- MASS_INER =SIMP(statut='o',typ=tabl_mass_iner ),
+ MASS_INER =SIMP(statut='o',typ=table_sdaster),
NORME =SIMP(statut='f',typ='TXM',defaut="TRAN_ROTA",
into=("MASS_GENE","RIGI_GENE","EUCL",
"EUCL_TRAN","TRAN","TRAN_ROTA") ),
into=("MASS_EFFE_UN","MASS_GENE",) ),
),
) ;
-#& MODIF COMMANDE DATE 22/02/2005 AUTEUR DURAND C.DURAND
+#& MODIF COMMANDE DATE 21/02/2006 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
self.type_sdprod(m['MATRICE'],matr_asse_gene_r)
if VECT_ASSE_GENE != None:
for v in VECT_ASSE_GENE:
- self.type_sdprod(v['VECTEUR'],vect_asse_gene_r)
+ self.type_sdprod(v['VECTEUR'],vect_asse_gene)
return None
MACRO_PROJ_BASE=MACRO(nom="MACRO_PROJ_BASE",op=macro_proj_base_ops,
+ regles=(AU_MOINS_UN('MATR_ASSE_GENE','VECT_ASSE_GENE')),
UIinfo={"groupes":("Matrices/vecteurs",)},
sd_prod=macro_proj_base_prod,
- fr="Projection des matrices et/ou vecteurs assemblés sur une base de vecteurs",
+ fr="Projection des matrices et/ou vecteurs assemblés sur une base (modale ou de RITZ)",
BASE =SIMP(statut='o',typ=(mode_meca,mode_stat,base_modale,mode_gene) ),
NB_VECT =SIMP(statut='f',typ='I',defaut= 9999),
PROFIL =SIMP(statut='f',typ='TXM',defaut="DIAG",into=("PLEIN","DIAG") ),
MATR_ASSE_GENE =FACT(statut='f',max='**',
MATRICE =SIMP(statut='o',typ=CO,),
+ regles=(UN_PARMI('MATR_ASSE','MATR_ASSE_GENE',),),
MATR_ASSE =SIMP(statut='f',typ=matr_asse_depl_r),
MATR_ASSE_GENE =SIMP(statut='f',typ=matr_asse_gene_r),
),
VECT_ASSE_GENE =FACT(statut='f',max='**',
VECTEUR =SIMP(statut='o',typ=CO,),
+ regles=(UN_PARMI('VECT_ASSE','VECT_ASSE_GENE',),),
TYPE_VECT =SIMP(statut='f',typ='TXM',defaut="FORC"),
- VECT_ASSE =SIMP(statut='f',typ=cham_no_depl_r),
- VECT_ASSE_GENE =SIMP(statut='f',typ=vect_asse_gene_r),
+ VECT_ASSE =SIMP(statut='f',typ=cham_no_sdaster),
+ VECT_ASSE_GENE =SIMP(statut='f',typ=vect_asse_gene),
),
INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# ======================================================================
MAJ_CATA=PROC(nom="MAJ_CATA",op=20,
UIinfo={"groupes":("Gestion du travail",)},
- fr="Compilation des catalogues de commandes et d éléments",
+ fr="Compilation des catalogues de commandes et d'éléments",
ELEMENT =FACT(statut='f',),
) ;
-#& MODIF COMMANDE DATE 01/04/2005 AUTEUR VABHHTS J.PELLET
+#& MODIF COMMANDE DATE 10/05/2006 AUTEUR MCOURTOI M.COURTOIS
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# ======================================================================
# RESPONSABLE VABHHTS J.PELLET
MECA_STATIQUE=OPER(nom="MECA_STATIQUE",op=46,sd_prod=evol_elas,
- fr="Analyse mécanique statique linéaire",reentrant='f',
+ fr="Résoudre un problème de mécanique statique linéaire",reentrant='f',
UIinfo={"groupes":("Résolution",)},
- regles=(EXCLUS("INST","LIST_INST"),
- AU_MOINS_UN('CHAM_MATER','CARA_ELEM',), ),
+ regles=(EXCLUS("INST","LIST_INST"),
+ AU_MOINS_UN('CHAM_MATER','CARA_ELEM',),
+ CONCEPT_SENSIBLE('ENSEMBLE'),),
MODELE =SIMP(statut='o',typ=modele_sdaster),
CHAM_MATER =SIMP(statut='f',typ=cham_mater,
fr="le CHAM_MATER est nécessaire, sauf si le modèle ne contient que des éléments discrets (modélisations DIS_XXX)",
NMAX_ITER =SIMP(statut='f',typ='I',defaut=0,val_min=0),
TYPE_REORTHO_DD =SIMP(statut='f',typ='TXM',defaut="GSM",into=("SANS","GS","GSM","IGSM") ),
NB_REORTHO_DD =SIMP(statut='f',typ='I',defaut=0,val_min=0),
+ NB_REORTHO_INST =SIMP(statut='f',typ='I',defaut=0,val_min=0),
PRE_COND =SIMP(statut='f',typ='TXM',defaut="LUMPE",into=("LUMPE","SANS") ),
SCALING =SIMP(statut='f',typ='TXM',defaut="MULT",into=("SANS","MULT") ),
VERIF_SDFETI =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
TEST_CONTINU =SIMP(statut='f',typ='R',defaut=1.E-8,val_min=0.),
- INFO_FETI =SIMP(statut='f',typ='TXM',defaut='FFFFFFFFF'),
- STOCKAGE_GI =SIMP(statut='f',typ='TXM',defaut="CAL",into=("OUI","NON","CAL") ),
+ INFO_FETI =SIMP(statut='f',typ='TXM',defaut='FFFFFFFFFFFFFFFFFFFFFFFF'),
+ STOCKAGE_GI =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON","CAL") ),
+ NB_SD_PROC0 =SIMP(statut='f',typ='I',defaut=0,val_min=0),
+ ACCELERATION_SM =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
),
b_mult_front =BLOC(condition = "METHODE == 'MULT_FRONT' ",fr="Paramètres de la méthode multi frontale",
ang="Name of the one fonction"),
) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
MODE_ITER_CYCL=OPER(nom="MODE_ITER_CYCL",op= 80,sd_prod=mode_cycl,
- fr="Modes propres d une structure à répétitivité cyclique à partir d une base de modes propres réels",
+ fr="Calcul des modes propres d'une structure à répétitivité cyclique à partir"
+ +" d'une base de modes propres réels",
reentrant='n',
UIinfo={"groupes":("Résolution",)},
BASE_MODALE =SIMP(statut='o',typ=base_modale ),
),
INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
) ;
-#& MODIF COMMANDE DATE 20/10/2004 AUTEUR DURAND C.DURAND
+#& MODIF COMMANDE DATE 10/05/2006 AUTEUR MCOURTOI M.COURTOIS
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
raise AsException("type de concept resultat non prevu")
MODE_ITER_INV=OPER(nom="MODE_ITER_INV",op= 44,sd_prod=mode_iter_inv_prod
- ,fr="Modes propres par itérations inverses ; valeurs propres et modes réels ou complexes",
+ ,fr="Calcul des modes propres par itérations inverses ; valeurs propres et modes réels ou complexes",
reentrant='n',
UIinfo={"groupes":("Résolution",)},
+ regles=(CONCEPT_SENSIBLE('ENSEMBLE'),),
MATR_A =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_gene_r,matr_asse_pres_r ) ),
MATR_B =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_gene_r,matr_asse_pres_r ) ),
MATR_C =SIMP(statut='f',typ=matr_asse_depl_r ),
INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
TITRE =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'),
) ;
-#& MODIF COMMANDE DATE 21/03/2005 AUTEUR DURAND C.DURAND
+#& MODIF COMMANDE DATE 10/05/2006 AUTEUR MCOURTOI M.COURTOIS
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
raise AsException("type de concept resultat non prevu")
MODE_ITER_SIMULT=OPER(nom="MODE_ITER_SIMULT",op= 45,sd_prod=mode_iter_simult_prod,
- fr="Modes propres par itérations simultanées ; valeurs propres et modes propres réels ou complexes",
+ fr="Calcul des modes propres par itérations simultanées ; valeurs propres et"
+ +" modes propres réels ou complexes",
reentrant='n',
UIinfo={"groupes":("Résolution",)},
+ regles=(CONCEPT_SENSIBLE('ENSEMBLE'),),
MATR_A =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_depl_c,matr_asse_gene_r,matr_asse_pres_r ) ),
MATR_B =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_gene_r,matr_asse_pres_r ) ),
MATR_C =SIMP(statut='f',typ=(matr_asse_depl_r,matr_asse_gene_r) ),
INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
TITRE =SIMP(statut='f',typ='TXM',max='**'),
) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
if (FORCE_NODALE != None) : return mode_stat_forc
raise AsException("type de concept resultat non prevu")
MODE_STATIQUE=OPER(nom="MODE_STATIQUE",op= 93,sd_prod=mode_stat_prod,
- fr="Calcul de modes statiques",
+ fr="Calcul de modes statiques pour un déplacement, une force ou une accélération unitaire imposé",
reentrant='n',
UIinfo={"groupes":("Résolution",)},
MATR_RIGI =SIMP(statut='o',typ=matr_asse_depl_r ),
TITRE =SIMP(statut='f',typ='TXM',max='**'),
INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2 ,) ),
) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# ======================================================================
MODI_BASE_MODALE=OPER(nom="MODI_BASE_MODALE",op= 149,sd_prod=mode_meca,
reentrant='f',
+ fr="Définir la base modale d'une structure sous écoulement",
UIinfo={"groupes":("Matrices/vecteurs",)},
# la commande modi_base _modale : reentrant = f ou o
regles=(EXCLUS('AMOR_UNIF','AMOR_REDUIT', ),),
INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ),
TITRE =SIMP(statut='f',typ='TXM',max='**'),
) ;
-#& MODIF COMMANDE DATE 14/09/2004 AUTEUR MCOURTOI M.COURTOIS
+#& MODIF COMMANDE DATE 21/02/2006 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# ======================================================================
# RESPONSABLE G8BHHXD X.DESROCHES
MODI_MAILLAGE=OPER(nom="MODI_MAILLAGE",op= 154,sd_prod=maillage_sdaster,
- fr="Modification de la connectivité de groupes de mailles 2D ou 3D affectées à la modélisation de contact",
+ fr="Effectuer des modifications sur un maillage existant: réorienter des mailles servant,"
+ +" à l'application d'une pression, à la modélisation du contact,...",
reentrant='o',
UIinfo={"groupes":("Maillage",)},
regles=(AU_MOINS_UN('ORIE_FISSURE','DEFORME','EQUE_PIQUA','ORIE_PEAU_2D',
DEFORME =FACT(statut='f',
OPTION =SIMP(statut='o',typ='TXM',into=("TRAN","TRAN_APPUI") ),
- DEPL =SIMP(statut='o',typ=cham_no_depl_r ),
+ DEPL =SIMP(statut='o',typ=cham_no_sdaster ),
b_deform =BLOC(condition = "OPTION=='TRAN_APPUI'",
GROUP_NO_APPUI = SIMP(statut='o',typ=grno,validators=NoRepeat(),max='**' ),
GROUP_NO_STRU = SIMP(statut='o',typ=grno,validators=NoRepeat(),max='**' ),),
),
INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
) ;
-#& MODIF COMMANDE DATE 05/07/2004 AUTEUR GENIAUT S.GENIAUT
+#& MODIF COMMANDE DATE 06/07/2005 AUTEUR GENIAUT S.GENIAUT
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
MODELE_IN =SIMP(statut='o',typ=modele_sdaster,min=01,max=01,),
FISSURE =SIMP(statut='o',typ=fiss_xfem,min=01,max=01,),
+ CRITERE =SIMP(statut='f',typ='R',defaut=1.1E-4),
INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2,)),
) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 03/01/2006 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
MODI_OBSTACLE=OPER(nom="MODI_OBSTACLE",op=182,sd_prod=obstacle_sdaster,
- fr=" ",reentrant='f',
+ fr="Calculer les obstacles dans les systèmes guidage-tube après usure",reentrant='f',
UIinfo={"groupes":("Modélisation",)},
regles=(PRESENT_ABSENT('R_MOBILE','CRAYON'),
PRESENT_PRESENT('V_USUR_TUBE','V_USUR_OBST'),),
V_USUR_TUBE =SIMP(statut='f',typ='R',max='**'),
V_USUR_OBST =SIMP(statut='f',typ='R',max='**'),
- TABL_USURE =SIMP(statut='f',typ=tabl_post_usur),
+ TABL_USURE =SIMP(statut='f',typ=table_sdaster),
INST =SIMP(statut='f',typ='R'),
OBSTACLE =SIMP(statut='f',typ=obstacle_sdaster),
GUIDE =SIMP(statut='o',typ=obstacle_sdaster),
PERCEMENT =SIMP(statut='f',typ='R',defaut=1),
INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 12/09/2005 AUTEUR CIBHHLV L.VIVAN
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
MODI_REPERE=OPER(nom="MODI_REPERE",op=191,sd_prod=modi_repere_prod,reentrant='n',
UIinfo={"groupes":("Résultats et champs",)},
- fr="Impression des resultats dans un repere cylindrique",
+ fr="Calcule des résultats dans le repère cylindrique",
RESULTAT =SIMP(statut='o',typ=(evol_elas,dyna_trans,dyna_harmo,mode_meca,
evol_noli,mult_elas,
evol_ther,base_modale,mode_flamb) ),
ORIGINE =SIMP(statut='f',typ='R',min=2,max=3),
AXE_Z =SIMP(statut='f',typ='R',min=3,max=3),
),
+ TITRE =SIMP(statut='f',typ='TXM',max='**'),
INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
) ;
-#& MODIF COMMANDE DATE 11/08/2004 AUTEUR A3BHHAE H.ANDRIAMBOLOLONA
+#& MODIF COMMANDE DATE 10/05/2006 AUTEUR MCOURTOI M.COURTOIS
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
raise AsException("type de concept resultat non prevu")
NORM_MODE=OPER(nom="NORM_MODE",op= 37,sd_prod=norm_mode_prod,
- fr="Normalisation de modes propres",
+ fr="Normer des modes propres en fonction d'un critère choisi par l'utilisateur",
reentrant='f',
UIinfo={"groupes":("Résolution",)},
- regles=(UN_PARMI('NORME','NOEUD','AVEC_CMP','SANS_CMP'),),
+ regles=(UN_PARMI('NORME','NOEUD','AVEC_CMP','SANS_CMP'),
+ CONCEPT_SENSIBLE('SEPARE'),
+ DERIVABLE('MODE'),),
MODE =SIMP(statut='o',typ=(mode_meca,mode_flamb) ),
NORME =SIMP(statut='f',typ='TXM',fr="Norme prédéfinie : masse généralisée, euclidienne,...",
into=("MASS_GENE","RIGI_GENE","EUCL","EUCL_TRAN","TRAN","TRAN_ROTA") ),
),
AVEC_CMP =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'),
SANS_CMP =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'),
- MASS_INER =SIMP(statut='f',typ=tabl_mass_iner ),
+ MASS_INER =SIMP(statut='f',typ=table_sdaster),
MODE_SIGNE =FACT(statut='f',fr="Imposer un signe sur une des composantes des modes",
NOEUD =SIMP(statut='o',typ=no,fr="Noeud ou sera imposé le signe"),
NOM_CMP =SIMP(statut='o',typ='TXM',fr="Composante du noeud ou sera imposé le signe" ),
),
INFO =SIMP(statut='f',typ='I',into=(1,2)),
) ;
-#& MODIF COMMANDE DATE 18/04/2005 AUTEUR NICOLAS O.NICOLAS
+#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
NUME_DDL_GENE=OPER(nom="NUME_DDL_GENE",op= 127,sd_prod=nume_ddl_gene,
- fr="Etablissement de la numérotation des ddl d un modèle établi en coordonnées généralisées",
+ fr="Etablissement de la numérotation des ddl d'un modèle établi en coordonnées généralisées",
reentrant='n',
UIinfo={"groupes":("Matrices/vecteurs",)},
regles=UN_PARMI('MODELE_GENE','BASE'),
NB_VECT =SIMP(statut='f',typ='I',defaut= 9999 ),
),
) ;
-#& MODIF COMMANDE DATE 09/05/2005 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2005 EDF R&D WWW.CODE-ASTER.ORG
# ======================================================================
POST_CHAM_XFEM=OPER(nom="POST_CHAM_XFEM",op= 196,sd_prod=resultat_sdaster,
reentrant='n',UIinfo={"groupes":("Post traitements",)},
- fr="expression des champs DEPL et SIEF_ELGA sur le maillage fissuré",
+ fr="Calcul des champs DEPL et SIEF_ELGA sur le maillage fissuré",
MAILLAGE = SIMP(statut='o',typ=maillage_sdaster),
MODELE = SIMP(statut='o',typ=modele_sdaster,),
RESULTAT = SIMP(statut='o',typ=resultat_sdaster),
NOM_CHAM = SIMP(statut='o',typ='TXM',into=("DEPL","SIEF_ELGA"),)
);
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 03/01/2006 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
-POST_DYNA_ALEA=OPER(nom="POST_DYNA_ALEA",op= 132,sd_prod=tabl_post_alea,
+POST_DYNA_ALEA=OPER(nom="POST_DYNA_ALEA",op= 132,sd_prod=table_sdaster,
fr="Traitements statistiques de résultats de type interspectre et impression sur fichiers",
reentrant='n',
UIinfo={"groupes":("Post traitements",)},
regles=(UN_PARMI('NOEUD_I','NUME_ORDRE_I','OPTION'),),
- INTE_SPEC =SIMP(statut='o',typ=tabl_intsp ),
+ INTE_SPEC =SIMP(statut='o',typ=table_sdaster),
NUME_VITE_FLUI =SIMP(statut='f',typ='I' ),
TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
NUME_ORDRE_I =SIMP(statut='f',typ='I',max='**' ),
TITRE =SIMP(statut='f',typ='TXM',max='**' ),
INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ),
) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 03/01/2006 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
-POST_DYNA_MODA_T=OPER(nom="POST_DYNA_MODA_T",op= 130,sd_prod=tabl_post_dyna,
- fr="Post-traitements en coordonnées généralisées issus de DYNA_TRAN_MODAL",
+POST_DYNA_MODA_T=OPER(nom="POST_DYNA_MODA_T",op= 130,sd_prod=table_sdaster,
+ fr="Post-traiter les résultats en coordonnées généralisées produit par DYNA_TRAN_MODAL",
reentrant='n',
UIinfo={"groupes":("Post traitements",)},
regles=(UN_PARMI('CHOC','RELA_EFFO_DEPL', ),),
INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ),
TITRE =SIMP(statut='f',typ='TXM',max='**' ),
) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 16/05/2006 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
# RESPONSABLE G8BHHXD X.DESROCHES
-def post_elem_prod( MASS_INER,ENER_POT,ENER_CIN,TRAV_EXT,WEIBULL,
- CARA_GEOM,CARA_POUTRE,RICE_TRACEY,CHAR_LIMITE,
- INDIC_ENER,INDIC_SEUIL,ENER_ELAS,ENER_TOTALE,
- AIRE_INTERNE,**args ):
- if MASS_INER != None : return tabl_mass_iner
- if ENER_POT != None : return tabl_ener_pot
- if ENER_CIN != None : return tabl_ener_cin
- if TRAV_EXT != None : return tabl_trav_ext
- if WEIBULL != None : return tabl_weibull
- if CARA_GEOM != None : return tabl_cara_geom
- if CARA_POUTRE != None : return tabl_cara_geom
- if RICE_TRACEY != None : return tabl_rice_tracey
- if CHAR_LIMITE != None : return tabl_char_limite
- if INDIC_ENER != None : return tabl_indic_ener
- if INDIC_SEUIL != None : return tabl_indic_seuil
- if ENER_ELAS != None : return tabl_ener_elas
- if ENER_TOTALE != None : return tabl_ener_totale
- if AIRE_INTERNE != None : return tabl_aire_int
- raise AsException("type de concept resultat_sdaster non prevu")
-
-POST_ELEM=OPER(nom="POST_ELEM",op=107,sd_prod=post_elem_prod,reentrant='f',
+POST_ELEM=OPER(nom="POST_ELEM",op=107,sd_prod=table_sdaster,reentrant='n',
UIinfo={"groupes":("Post traitements",)},
fr="Calcul de quantités globales (masse, inerties, énergie, ...) sur tout ou partie du modèle",
regles=(UN_PARMI('MASS_INER', 'ENER_POT', 'ENER_CIN','TRAV_EXT',
'WEIBULL', 'RICE_TRACEY', 'CARA_GEOM','CHAR_LIMITE',
'CARA_POUTRE', 'INDIC_ENER', 'INDIC_SEUIL',
- 'AIRE_INTERNE','ENER_ELAS','ENER_TOTALE'),
+ 'AIRE_INTERNE','ENER_ELAS','ENER_TOTALE','INTEGRALE'),
),
MASS_INER = FACT(statut='f',max='**',
NIVE_COUCHE = SIMP(statut='f',typ='TXM',defaut="MOY",into=("INF","SUP","MOY"),),
MODE_FOURIER = SIMP(statut='f',typ='I',defaut=0),
GEOMETRIE = SIMP(statut='f',typ='TXM',defaut="INITIALE",into=("INITIALE","DEFORMEE")),
- CHAM_GD = SIMP(statut='f',typ=(cham_no_depl_r,cham_no_temp_r,cham_elem_ener_r) ),
+ CHAM_GD = SIMP(statut='f',typ=(cham_no_sdaster,cham_elem) ),
RESULTAT = SIMP(statut='f',typ=(mode_meca,evol_elas,evol_noli,mult_elas,
fourier_elas,dyna_trans) ),
PRECISION = SIMP(statut='f',typ='R',defaut= 1.0E-3),
NIVE_COUCHE = SIMP(statut='f',typ='TXM',defaut="MOY",into=("INF","SUP","MOY"),),
ANGLE = SIMP(statut='f',typ='I',defaut=0),
MODE_FOURIER = SIMP(statut='f',typ='I',defaut=0),
- CHAM_GD = SIMP(statut='f',typ=(cham_no_depl_r,cham_no_temp_r,cham_elem_ener_r) ),
+ CHAM_GD = SIMP(statut='f',typ=(cham_no_sdaster,cham_elem) ),
RESULTAT = SIMP(statut='f',typ=(mode_meca,evol_elas,evol_ther,evol_noli,dyna_trans,mult_elas) ),
PRECISION = SIMP(statut='f',typ='R',defaut= 1.0E-3),
CRITERE = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")),
NIVE_COUCHE = SIMP(statut='f',typ='TXM',defaut="MOY",into=("INF","SUP","MOY"),),
ANGLE = SIMP(statut='f',typ='I',defaut=0),
MODE_FOURIER = SIMP(statut='f',typ='I',defaut=0),
- CHAM_GD = SIMP(statut='f',typ=(cham_no_depl_r,cham_no_temp_r,cham_elem_ener_r) ),
+ CHAM_GD = SIMP(statut='f',typ=(cham_no_sdaster,cham_elem) ),
RESULTAT = SIMP(statut='f',typ=(mode_meca,evol_elas,evol_ther,evol_noli,dyna_trans) ),
PRECISION = SIMP(statut='f',typ='R',defaut= 1.0E-3),
CRITERE = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")),
LIST_INST = SIMP(statut='f',typ=listr8_sdaster),
),
+ INTEGRALE = FACT(statut='f',max='**',
+ regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),),
+ TOUT = SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ NOM_CHAM = SIMP(statut='o',typ='TXM',into=C_NOM_CHAM_INTO()),
+ NOM_CMP = SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**'),
+ ),
+ b_integrale = BLOC(condition = "( INTEGRALE != None )",
+ fr="calcul de la moyenne d'une composante",
+ regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','INST','LIST_INST'),),
+ MODELE = SIMP(statut='f',typ=modele_sdaster),
+ RESULTAT = SIMP(statut='o',typ=(evol_noli,evol_ther,evol_elas) ),
+ PRECISION = SIMP(statut='f',typ='R',defaut= 1.0E-3),
+ CRITERE = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")),
+ TOUT_ORDRE = SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ NUME_ORDRE = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
+ LIST_ORDRE = SIMP(statut='f',typ=listis_sdaster),
+ INST = SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
+ LIST_INST = SIMP(statut='f',typ=listr8_sdaster),
+ ),
+
WEIBULL = FACT(statut='f',max='**',
regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),),
TOUT = SIMP(statut='f',typ='TXM',into=("OUI",) ),
NUME_COUCHE = SIMP(statut='f',typ='I',defaut=1),
NIVE_COUCHE = SIMP(statut='f',typ='TXM',defaut="MOY",into=("INF","SUP","MOY"),),
MODE_FOURIER = SIMP(statut='f',typ='I',defaut=0),
- CHAM_GD = SIMP(statut='f',typ=(cham_no_depl_r,cham_no_temp_r,cham_elem_ener_r) ),
+ CHAM_GD = SIMP(statut='f',typ=(cham_no_sdaster,cham_elem) ),
RESULTAT = SIMP(statut='f',typ=(evol_noli) ),
PRECISION = SIMP(statut='f',typ='R',defaut= 1.0E-3),
CRITERE = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")),
NUME_COUCHE = SIMP(statut='f',typ='I',defaut=1),
NIVE_COUCHE = SIMP(statut='f',typ='TXM',defaut="MOY",into=("INF","SUP","MOY"),),
MODE_FOURIER = SIMP(statut='f',typ='I',defaut=0),
- CHAM_GD = SIMP(statut='f',typ=(cham_no_depl_r,cham_no_temp_r,cham_elem_ener_r) ),
+ CHAM_GD = SIMP(statut='f',typ=(cham_no_sdaster,cham_elem) ),
RESULTAT = SIMP(statut='f',typ=(evol_noli) ),
PRECISION = SIMP(statut='f',typ='R',defaut= 1.0E-3),
CRITERE = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")),
TOUT = SIMP(statut='f',typ='TXM',into=("OUI",) ),
GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
GROUP_MA_INTE = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- CARA_GEOM = SIMP(statut='f',typ=tabl_cara_geom),
+ CARA_GEOM = SIMP(statut='o',typ=table_sdaster),
RT = SIMP(statut='f',typ='R'),
LAPL_PHI = SIMP(statut='f',typ=evol_ther),
LAPL_PHI_Y = SIMP(statut='f',typ=evol_ther),
INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 03/01/2006 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
-POST_FATI_ALEA=OPER(nom="POST_FATI_ALEA",op=170,sd_prod=tabl_post_f_alea,reentrant='n',
+POST_FATI_ALEA=OPER(nom="POST_FATI_ALEA",op=170,sd_prod=table_sdaster,reentrant='n',
UIinfo={"groupes":("Post traitements",)},
- fr="Calcul du dommage subi par une structure soumise à unesollicitation de type aléatoire",
+ fr="Calculer le dommage de fatigue subi par une structure soumise à une sollicitation de type aléatoire",
regles=(ENSEMBLE('MOMENT_SPEC_0','MOMENT_SPEC_2'),
PRESENT_PRESENT( 'MOMENT_SPEC_4','MOMENT_SPEC_0'),
UN_PARMI('TABL_POST_ALEA','MOMENT_SPEC_0'), ),
MOMENT_SPEC_0 =SIMP(statut='f',typ='R'),
MOMENT_SPEC_2 =SIMP(statut='f',typ='R'),
MOMENT_SPEC_4 =SIMP(statut='f',typ='R'),
- TABL_POST_ALEA =SIMP(statut='f',typ=tabl_post_alea),
+ TABL_POST_ALEA =SIMP(statut='f',typ=table_sdaster),
COMPTAGE =SIMP(statut='o',typ='TXM',into=("PIC","NIVEAU")),
DUREE =SIMP(statut='f',typ='R',defaut= 1.),
CORR_KE =SIMP(statut='f',typ='TXM',into=("RCCM",)),
MATER =SIMP(statut='o',typ=mater_sdaster),
TITRE =SIMP(statut='f',typ='TXM',max='**'),
) ;
-#& MODIF COMMANDE DATE 30/06/2004 AUTEUR MCOURTOI M.COURTOIS
+#& MODIF COMMANDE DATE 03/01/2006 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
-POST_FATIGUE=OPER(nom="POST_FATIGUE",op=136,sd_prod=tabl_post_fatig,reentrant='n',
+POST_FATIGUE=OPER(nom="POST_FATIGUE",op=136,sd_prod=table_sdaster,reentrant='n',
UIinfo={"groupes":("Post traitements",)},
- fr="Calcul du dommage subi par une structure soumise à une histoire de chargement",
+ fr="Calculer en un point, le dommage de fatigue subi par une structure soumise à une histoire de chargement",
CHARGEMENT = SIMP(statut='o',typ='TXM',into=("UNIAXIAL","PERIODIQUE","QUELCONQUE")),
INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
TITRE =SIMP(statut='f',typ='TXM',max='**'),
) ;
-#& MODIF COMMANDE DATE 01/02/2005 AUTEUR GALENNE E.GALENNE
+#& MODIF COMMANDE DATE 09/05/2006 AUTEUR GALENNE E.GALENNE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
# RESPONSABLE GALENNE E.GALENNE
-
-POST_K1_K2_K3=OPER(nom="POST_K1_K2_K3",op=188,sd_prod=tabl_post_k,
- fr="Calcul des FIC par extrapolation du champ de déplacements sur les lèvres de la fissure",
+from Macro.post_k1_k2_k3_ops import post_k1_k2_k3_ops
+POST_K1_K2_K3=MACRO(nom="POST_K1_K2_K3",op=post_k1_k2_k3_ops,sd_prod=table_sdaster,
+ fr="Calcul des facteurs d'intensité de contraintes en 2D et en 3D par extrapolation des sauts de déplacements"
+ +" sur les lèvres de la fissure",
reentrant='n',
UIinfo={"groupes":("Post traitements",)},
FOND_FISS =SIMP(statut='f',typ=fond_fiss),
b_fond_fiss =BLOC (condition="(FOND_FISS!= None)",
MAILLAGE = SIMP(statut='o',typ=maillage_sdaster),
+ TYPE_MAILLAGE = SIMP(statut='f',typ='TXM',into=("LIBRE","REGLE"),defaut="REGLE"),
+ NB_NOEUD_COUPE= SIMP(statut='f',typ='I' ,defaut=5 ),
NOEUD = SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
GROUP_NO = SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
SANS_NOEUD = SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
fr="Matériau homogène et isotrope cohérent avec celui utilisé pour le calcul des déplacements"),
RESULTAT =SIMP(statut='f',typ=(evol_elas,evol_noli),
fr="Table déplacement des noeuds de la lèvre supérieure et inférieure"),
- TABL_DEPL_SUP =SIMP(statut='f',typ=tabl_post_rele,
+ TABL_DEPL_SUP =SIMP(statut='f',typ=table_sdaster,
fr="Table issue de post_releve_t sur les noeuds de la lèvre supérieure"),
- TABL_DEPL_INF =SIMP(statut='f',typ=tabl_post_rele,
+ TABL_DEPL_INF =SIMP(statut='f',typ=table_sdaster,
fr="Table issue de post_releve_t sur les noeuds de la lèvre inférieure"),
ABSC_CURV_MAXI=SIMP(statut='f',typ='R',
fr="distance maximum à partir du fond de fissure à utiliser pour le calcul"),
fr="Vecteur normal au plan de fissure, orienté de la lèvre inférieure vers la lèvre supérieure"),
TITRE =SIMP(statut='f',typ='TXM',max='**'),
) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 03/01/2006 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
#
# ======================================================================
#
-POST_K_BETA=OPER(nom="POST_K_BETA",op=198,sd_prod=tabl_post_beta,
- fr="Calcul des FIC par la méthode K_BETA",
+POST_K_BETA=OPER(nom="POST_K_BETA",op=198,sd_prod=table_sdaster,
+ fr="Calcul des facteurs d'intensité de contraintes par la méthode K_BETA",
reentrant='n',
UIinfo={"groupes":("Post traitements",)},
MAILLAGE = SIMP(statut='o',typ=maillage_sdaster),
into=("CIRC","LONGI"),),
),
K1D = FACT(statut='o',max='**',
- TABL_MECA_REV = SIMP(statut='o',typ=(tabl_post_rele)),
- TABL_MECA_MDB = SIMP(statut='o',typ=(tabl_post_rele)),
- TABL_THER = SIMP(statut='o',typ=(tabl_post_rele)),
+ TABL_MECA_REV = SIMP(statut='o',typ=(table_sdaster)),
+ TABL_MECA_MDB = SIMP(statut='o',typ=(table_sdaster)),
+ TABL_THER = SIMP(statut='o',typ=(table_sdaster)),
INTITULE = SIMP(statut='o',typ='TXM' ),
),
TITRE = SIMP(statut='f',typ='TXM',max='**'),
);
-#& MODIF COMMANDE DATE 09/05/2005 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2005 EDF R&D WWW.CODE-ASTER.ORG
# ======================================================================
POST_MAIL_XFEM=OPER(nom="POST_MAIL_XFEM",op= 187,sd_prod=maillage_sdaster,
reentrant='n',UIinfo={"groupes":("Maillage",)},
- fr="maillage fissuré pour le post-traitement des éléments XFEM",
+ fr="Crée un maillage se conformant à la fissure pour le post-traitement des éléments XFEM",
MODELE = SIMP(statut='o',typ=modele_sdaster),
TITRE = SIMP(statut='f',typ='TXM',max='**'),
);
-#& MODIF COMMANDE DATE 21/03/2005 AUTEUR CIBHHLV L.VIVAN
+#& MODIF COMMANDE DATE 13/03/2006 AUTEUR CIBHHLV L.VIVAN
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
# RESPONSABLE JMBHH01 J.M.PROIX
-POST_RCCM=OPER(nom="POST_RCCM",op= 165,sd_prod=tabl_post_rccm,
+POST_RCCM=OPER(nom="POST_RCCM",op= 165,sd_prod=table_sdaster,
fr="Vérification des critères de niveau 0 et certains critères de niveau A du RCC-M-B3200 (Edition 1991)",
reentrant='n',
UIinfo={"groupes":("Post traitements",)},
TYPE_KE =SIMP(statut='f',typ='TXM',defaut="KE_MECA",into=("KE_MECA","KE_MIXTE"),
fr="Ke meca seul ou partition mecanique + thermique" ),
CHAR_MECA =FACT(statut='o',max='**',fr="Chargements mécaniques",
+ regles=(UN_PARMI('MX','MX_TUBU'),),
NUME_CHAR =SIMP(statut='o',typ='I',fr="numéro du chargement" ),
NOM_CHAR =SIMP(statut='f',typ='TXM',fr="nom du chargement" ),
TYPE_CHAR =SIMP(statut='f',typ='TXM',fr="nature du chargement",into=( "SEISME","AUTRE"),defaut="AUTRE",),
- FX =SIMP(statut='f',typ='R',fr="effort suivant x", ),
- FY =SIMP(statut='f',typ='R',fr="effort suivant y", ),
- FZ =SIMP(statut='f',typ='R',fr="effort suivant z", ),
- MX =SIMP(statut='o',typ='R',fr="moment suivant x", ),
- MY =SIMP(statut='o',typ='R',fr="moment suivant y", ),
- MZ =SIMP(statut='o',typ='R',fr="moment suivant z", ),
+ MX =SIMP(statut='f',typ='R',fr="moment suivant x", ),
+ MX_TUBU =SIMP(statut='f',typ='R',fr="moment suivant x, tubulure", ),
+ b_1_tenseur =BLOC( condition = "MX != None",
+ FX =SIMP(statut='f',typ='R',fr="effort suivant x", ),
+ FY =SIMP(statut='f',typ='R',fr="effort suivant y", ),
+ FZ =SIMP(statut='f',typ='R',fr="effort suivant z", ),
+ MY =SIMP(statut='o',typ='R',fr="moment suivant y", ),
+ MZ =SIMP(statut='o',typ='R',fr="moment suivant z", ),
+ ),
+ b_2_tenseurs =BLOC( condition = "MX_TUBU != None",
+ FX_TUBU =SIMP(statut='f',typ='R',fr="effort suivant x, tubulure", ),
+ FY_TUBU =SIMP(statut='f',typ='R',fr="effort suivant y, tubulure", ),
+ FZ_TUBU =SIMP(statut='f',typ='R',fr="effort suivant z, tubulure", ),
+ MY_TUBU =SIMP(statut='o',typ='R',fr="moment suivant y, tubulure", ),
+ MZ_TUBU =SIMP(statut='o',typ='R',fr="moment suivant z, tubulure", ),
+ FX_CORP =SIMP(statut='f',typ='R',fr="effort suivant x, corps du piquage", ),
+ FY_CORP =SIMP(statut='f',typ='R',fr="effort suivant y, corps du piquage", ),
+ FZ_CORP =SIMP(statut='f',typ='R',fr="effort suivant z, corps du piquage", ),
+ MX_CORP =SIMP(statut='o',typ='R',fr="moment suivant x, corps du piquage", ),
+ MY_CORP =SIMP(statut='o',typ='R',fr="moment suivant y, corps du piquage", ),
+ MZ_CORP =SIMP(statut='o',typ='R',fr="moment suivant z, corps du piquage", ),
+ ),
+
),
RESU_MECA_UNIT =FACT(statut='o',fr="resultats mécaniques unitaires",
- TABL_FX =SIMP(statut='f',typ=table_sdaster,
- fr="table relevé des contraintes pour chargement unitaire FX"),
- TABL_FY =SIMP(statut='f',typ=table_sdaster,
- fr="table relevé des contraintes pour chargement unitaire FY"),
- TABL_FZ =SIMP(statut='f',typ=table_sdaster,
- fr="table relevé des contraintes pour chargement unitaire FZ"),
- TABL_MX =SIMP(statut='o',typ=table_sdaster,
- fr="table relevé des contraintes pour chargement unitaire MX"),
- TABL_MY =SIMP(statut='o',typ=table_sdaster,
- fr="table relevé des contraintes pour chargement unitaire MY"),
- TABL_MZ =SIMP(statut='o',typ=table_sdaster,
- fr="table relevé des contraintes pour chargement unitaire MZ"),
+ regles=(UN_PARMI('TABL_MX','TABL_MX_TUBU'),),
+ TABL_MX =SIMP(statut='f',typ=table_sdaster,
+ fr="table relevé des contraintes pour chargement unitaire MX"),
+ TABL_MX_TUBU =SIMP(statut='f',typ=table_sdaster,
+ fr="table relevé des contraintes pour chargement unitaire MX_TUBU"),
+ b_1_tenseur =BLOC( condition = "TABL_MX != None",
+ TABL_FX =SIMP(statut='f',typ=table_sdaster,
+ fr="table relevé des contraintes pour chargement unitaire FX"),
+ TABL_FY =SIMP(statut='f',typ=table_sdaster,
+ fr="table relevé des contraintes pour chargement unitaire FY"),
+ TABL_FZ =SIMP(statut='f',typ=table_sdaster,
+ fr="table relevé des contraintes pour chargement unitaire FZ"),
+ TABL_MY =SIMP(statut='o',typ=table_sdaster,
+ fr="table relevé des contraintes pour chargement unitaire MY"),
+ TABL_MZ =SIMP(statut='o',typ=table_sdaster,
+ fr="table relevé des contraintes pour chargement unitaire MZ"),
+ ),
+ b_2_tenseurs =BLOC( condition = "TABL_MX_TUBU != None",
+ TABL_FX_TUBU =SIMP(statut='f',typ=table_sdaster,
+ fr="table relevé des contraintes pour chargement unitaire FX_TUBU"),
+ TABL_FY_TUBU =SIMP(statut='f',typ=table_sdaster,
+ fr="table relevé des contraintes pour chargement unitaire FY_TUBU"),
+ TABL_FZ_TUBU =SIMP(statut='f',typ=table_sdaster,
+ fr="table relevé des contraintes pour chargement unitaire FZ_TUBU"),
+ TABL_MY_TUBU =SIMP(statut='o',typ=table_sdaster,
+ fr="table relevé des contraintes pour chargement unitaire MY_TUBU"),
+ TABL_MZ_TUBU =SIMP(statut='o',typ=table_sdaster,
+ fr="table relevé des contraintes pour chargement unitaire MZ_TUBU"),
+ TABL_FX_CORP =SIMP(statut='f',typ=table_sdaster,
+ fr="table relevé des contraintes pour chargement unitaire FX_CORP"),
+ TABL_FY_CORP =SIMP(statut='f',typ=table_sdaster,
+ fr="table relevé des contraintes pour chargement unitaire FY_CORP"),
+ TABL_FZ_CORP =SIMP(statut='f',typ=table_sdaster,
+ fr="table relevé des contraintes pour chargement unitaire FZ_CORP"),
+ TABL_MX_CORP =SIMP(statut='o',typ=table_sdaster,
+ fr="table relevé des contraintes pour chargement unitaire MX_CORP"),
+ TABL_MY_CORP =SIMP(statut='o',typ=table_sdaster,
+ fr="table relevé des contraintes pour chargement unitaire MY_CORP"),
+ TABL_MZ_CORP =SIMP(statut='o',typ=table_sdaster,
+ fr="table relevé des contraintes pour chargement unitaire MZ_CORP"),
+ ),
TABL_PRES =SIMP(statut='o',typ=table_sdaster,
- fr="table relevé des contraintes pour chargement unitaire de pression"),
+ fr="table relevé des contraintes pour chargement unitaire de pression"),
),
+
RESU_THER =FACT(statut='f',max='**',fr="resultats thermiques",
NUME_RESU_THER =SIMP(statut='o',typ='I',fr="numéro de la table de résultat thermique" ),
TABL_RESU_THER =SIMP(statut='o',typ=table_sdaster,
),
),
) ;
-#& MODIF COMMANDE DATE 07/10/2004 AUTEUR GNICOLAS G.NICOLAS
+#& MODIF COMMANDE DATE 16/05/2006 AUTEUR REZETTE C.REZETTE
# ======================================================================
# CONFIGURATION MANAGEMENT OF EDF VERSION
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
# RESPONSABLE G8BHHXD X.DESROCHES
-POST_RELEVE_T=OPER(nom="POST_RELEVE_T",op=51,sd_prod=tabl_post_rele,reentrant='f',
+POST_RELEVE_T=OPER(nom="POST_RELEVE_T",op=51,sd_prod=table_sdaster,reentrant='f',
+ fr="Extraire des valeurs de composantes de champs de grandeurs pour y effectuer des calculs (moyenne,invariants,..)"
+ +" ou pour les exprimer dans d'autres repères",
UIinfo={"groupes":("Post traitements",)},
+
ACTION =FACT(statut='o',max='**',
- regles=(AU_MOINS_UN('CHEMIN','GROUP_NO','NOEUD'),
- EXCLUS('CHEMIN','GROUP_NO'),
- EXCLUS('CHEMIN','NOEUD'),
- PRESENT_ABSENT('CHEMIN','GROUP_MA','MAILLE'),
- UN_PARMI('RESULTAT','CHAM_GD'),
- UN_PARMI('TOUT_CMP','NOM_CMP','INVARIANT','ELEM_PRINCIPAUX','RESULTANTE'),
- PRESENT_PRESENT('TRAC_DIR','DIRECTION'),
- ENSEMBLE('MOMENT','POINT'),
- PRESENT_PRESENT('MOMENT','RESULTANTE'),
- PRESENT_ABSENT('TOUT_CMP','TRAC_DIR','TRAC_NOR'),
- EXCLUS('TRAC_DIR','TRAC_NOR'),
- PRESENT_PRESENT('ORIGINE','AXE_Z'),),
- INTITULE =SIMP(statut='o',typ='TXM'),
- CHEMIN =SIMP(statut='f',typ=(courbe_sdaster,surface_sdaster) ),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- FORMAT_C =SIMP(statut='f',typ='TXM',defaut="MODULE",into=("MODULE","REEL","IMAG")),
- CHAM_GD =SIMP(statut='f',typ=(cham_no_depl_r,cham_no_temp_r,cham_no_pres_r,cham_no_var2_r,
- cham_elem_sief_r,cham_elem_epsi_r,cham_elem_flux_r,cham_elem_crit_r,
- cham_elem_ener_r,cham_elem_dbel_r,cham_elem_pres_r,cham_elem_erreur,
- cham_elem_vari_r,cham_no_depl_c,cham_no_temp_c,cham_no_pres_c,
- cham_elem_sief_c,cham_elem_epsi_c,cham_no_facy_r)),
+ regles=(UN_PARMI('RESULTAT','CHAM_GD'),),
+
+ OPERATION =SIMP(statut='o',typ='TXM',into=("EXTRACTION","MOYENNE","EXTREMA"),validators=NoRepeat(),max=2),
+ INTITULE =SIMP(statut='o',typ='TXM'),
+
+ CHAM_GD =SIMP(statut='f',typ=(cham_no_sdaster,
+ cham_elem,),),
RESULTAT =SIMP(statut='f',typ=(evol_elas,evol_ther,evol_noli,dyna_trans,
mode_meca,mode_flamb,mode_acou,base_modale,mode_stat,
mult_elas,fourier_elas,dyna_harmo,acou_harmo)),
+
b_sensibilite =BLOC(condition="RESULTAT != None",
fr="Définition des paramètres de sensibilité",
ang="Definition of sensitivity parameters",
+ regles=(CONCEPT_SENSIBLE("SEPARE"), REUSE_SENSIBLE(),
+ DERIVABLE('RESULTAT'),),
SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**',
fr="Liste des paramètres de sensibilité.",
- ang="List of sensitivity parameters"),),
+ ang="List of sensitivity parameters"),
+ ),
b_extrac =BLOC(condition = "RESULTAT != None",fr="extraction des résultats",
- regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','NUME_MODE','LIST_MODE',
- 'INST','LIST_INST','FREQ','LIST_FREQ','NOEUD_CMP','NOM_CAS'), ),
+ regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','NUME_MODE','LIST_MODE',
+ 'INST','LIST_INST','FREQ','LIST_FREQ','NOEUD_CMP','NOM_CAS'), ),
NOM_CHAM =SIMP(statut='o',typ='TXM' ),
TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-6),
CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")),
),
- TOUT_CMP =SIMP(statut='f',typ='TXM',into=("OUI",)),
- NOM_CMP =SIMP(statut='f',typ='TXM',max='**'),
- INVARIANT =SIMP(statut='f',typ='TXM',into=("OUI",)),
- ELEM_PRINCIPAUX =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- RESULTANTE =SIMP(statut='f',typ='TXM',max='**'),
- MOMENT =SIMP(statut='f',typ='TXM',max='**'),
- POINT =SIMP(statut='f',typ='R',max='**'),
- REPERE =SIMP(statut='f',typ='TXM',defaut="GLOBAL",
+ b_extrema =BLOC(condition="OPERATION == 'EXTREMA'",
+ fr="recherche de MIN MAX",
+ regles=(EXCLUS('TOUT_CMP','NOM_CMP'),),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ TOUT_CMP =SIMP(statut='f',typ='TXM',into=("OUI",)),
+ NOM_CMP =SIMP(statut='f',typ='TXM',max='**'),
+ ),
+
+ b_autre =BLOC(condition="OPERATION != 'EXTREMA'",
+ fr="extraction et moyenne",
+ regles=(AU_MOINS_UN('CHEMIN','GROUP_NO','NOEUD'),
+ EXCLUS('CHEMIN','GROUP_NO'),
+ EXCLUS('CHEMIN','NOEUD'),
+ PRESENT_ABSENT('CHEMIN','GROUP_MA','MAILLE'),
+ UN_PARMI('TOUT_CMP','NOM_CMP','INVARIANT','ELEM_PRINCIPAUX','RESULTANTE'),
+ PRESENT_PRESENT('TRAC_DIR','DIRECTION'),
+ ENSEMBLE('MOMENT','POINT'),
+ PRESENT_PRESENT('MOMENT','RESULTANTE'),
+ PRESENT_ABSENT('TOUT_CMP','TRAC_DIR','TRAC_NOR'),
+ EXCLUS('TRAC_DIR','TRAC_NOR'),
+ PRESENT_PRESENT('ORIGINE','AXE_Z'),),
+
+ CHEMIN =SIMP(statut='f',typ=(courbe_sdaster,surface_sdaster) ),
+ TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
+ GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+
+ TOUT_CMP =SIMP(statut='f',typ='TXM',into=("OUI",)),
+ NOM_CMP =SIMP(statut='f',typ='TXM',max='**'),
+ INVARIANT =SIMP(statut='f',typ='TXM',into=("OUI",)),
+ ELEM_PRINCIPAUX =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ RESULTANTE =SIMP(statut='f',typ='TXM',max='**'),
+
+ MOMENT =SIMP(statut='f',typ='TXM',max='**'),
+ POINT =SIMP(statut='f',typ='R',max='**'),
+
+ REPERE =SIMP(statut='f',typ='TXM',defaut="GLOBAL",
into=("GLOBAL","LOCAL","POLAIRE","UTILISATEUR","CYLINDRIQUE"),),
- ANGL_NAUT =SIMP(statut='f',typ='R',min=3,max=3),
- ORIGINE =SIMP(statut='f',typ='R',min=3,max=3),
- AXE_Z =SIMP(statut='f',typ='R',min=3,max=3),
+ ANGL_NAUT =SIMP(statut='f',typ='R',min=3,max=3),
+ ORIGINE =SIMP(statut='f',typ='R',min=3,max=3),
+ AXE_Z =SIMP(statut='f',typ='R',min=3,max=3),
- TRAC_NOR =SIMP(statut='f',typ='TXM',into=("OUI",)),
- TRAC_DIR =SIMP(statut='f',typ='TXM',into=("OUI",)),
- DIRECTION =SIMP(statut='f',typ='R',max='**'),
+ TRAC_NOR =SIMP(statut='f',typ='TXM',into=("OUI",)),
+ TRAC_DIR =SIMP(statut='f',typ='TXM',into=("OUI",)),
+ DIRECTION =SIMP(statut='f',typ='R',max='**'),
- VECT_Y =SIMP(statut='f',typ='R',max='**'),
- MOYE_NOEUD =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")),
- OPERATION =SIMP(statut='o',typ='TXM',into=("EXTRACTION","MOYENNE"),validators=NoRepeat(),max=2),
+ VECT_Y =SIMP(statut='f',typ='R',max='**'),
+ MOYE_NOEUD =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")),
+ ),
+
+ FORMAT_C =SIMP(statut='f',typ='TXM',defaut="MODULE",into=("MODULE","REEL","IMAG")),
+
),
INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
TITRE =SIMP(statut='f',typ='TXM',max='**'),
) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-POST_SIMPLIFIE=OPER(nom="POST_SIMPLIFIE",op=185,sd_prod=tabl_post_simpli,
- fr=" ",reentrant='n',
- UIinfo={"groupes":("Outils métier",)},
- MATER =SIMP(statut='o',typ=(mater_sdaster) ),
- DEF_EQUI =FACT(statut='f',
- METHODE =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',defaut="UTO_2_3",
- into=("UTO_2_3",) ),
- EPAIS =SIMP(statut='o',typ='R'),
- LONG_FISS =SIMP(statut='o',typ='R'),
- LONG_LIGA_INT =SIMP(statut='o',typ='R'),
- DEXT =SIMP(statut='o',typ='R'),
- TEMP_ANALYSE =SIMP(statut='f',typ='R'),
- ),
-) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 03/01/2006 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
-POST_USURE=OPER(nom="POST_USURE",op=153,sd_prod=tabl_post_usur,reentrant='f',
+POST_USURE=OPER(nom="POST_USURE",op=153,sd_prod=table_sdaster,reentrant='f',
UIinfo={"groupes":("Post traitements",)},
- fr="Calcul des volumes d'usure et des profondeurs d'usure",
+ fr="Calcul des volumes d'usure et des profondeurs d'usure d'après la puissance d'usure",
regles=(UN_PARMI('TUBE_NEUF','RESU_GENE','PUIS_USURE'),
PRESENT_PRESENT('RESU_GENE','NOEUD','LOI_USURE'),
PRESENT_PRESENT('PUIS_USURE','LOI_USURE'),),
TUBE_NEUF =SIMP(statut='f',typ='TXM',into=("OUI",) ),
ETAT_INIT =FACT(statut='f',
- TABL_USURE =SIMP(statut='f',typ=tabl_post_usur),
+ TABL_USURE =SIMP(statut='f',typ=table_sdaster),
INST_INIT =SIMP(statut='f',typ='R'),
),
RESU_GENE =SIMP(statut='f',typ=tran_gene),
USURE_OBST =SIMP(statut='f',typ='TXM',into=("OUI",)),
),
b_tube_neuf =BLOC(condition = "TUBE_NEUF == 'OUI'",
- TABL_USURE =SIMP(statut='o',typ=tabl_post_usur),
+ TABL_USURE =SIMP(statut='o',typ=table_sdaster),
INST =SIMP(statut='f',typ='R'),
),
CONTACT =SIMP(statut='f',typ='TXM',into=("TUBE_BAV","TUBE_ALESAGE","TUBE_4_ENCO",
INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
TITRE =SIMP(statut='f',typ='TXM',max='**' ),
) ;
-#& MODIF COMMANDE DATE 30/06/2004 AUTEUR MCOURTOI M.COURTOIS
+#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# ======================================================================
POST_ZAC=OPER(nom="POST_ZAC",op= 175,sd_prod=mult_elas,reentrant='n',
UIinfo={"groupes":("Post traitements",)},
- fr="Donne l'état adapté ou accommodé d'une structure sous chargement cyclique élastique affine ou non",
+ fr="Déterminer l'état adapté ou accommodé par la méthode de Zarka-Casier d'une structure sous"
+ +" chargement cyclique élastique affine ou non",
MODELE =SIMP(statut='o',typ=modele_sdaster),
CHAM_MATER =SIMP(statut='o',typ=cham_mater),
EXCIT =FACT(statut='o',max='**',
CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")),
) ;
-#& MODIF COMMANDE DATE 22/03/2005 AUTEUR D6BHHJP J.P.LEFEBVRE
+#& MODIF COMMANDE DATE 16/01/2006 AUTEUR D6BHHJP J.P.LEFEBVRE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
-POURSUITE=MACRO(nom="POURSUITE",op=ops.build_poursuite,repetable='n',fr="Poursuite d une étude",
+POURSUITE=MACRO(nom="POURSUITE",op=ops.build_poursuite,repetable='n',
+ fr="Poursuite d'une étude à partir de la sauvegarde au format JEVEUX ou HDF de sa base globale",
sd_prod = ops.POURSUITE,
UIinfo={"groupes":("Gestion du travail",)},
op_init = ops.POURSUITE_context,fichier_ini = 1,
typ='TXM',defaut="NON",into=("OUI","NON",) ),
PAR_LOT =SIMP(fr="mode de traitement des commandes",statut='f',typ='TXM',
into=("OUI","NON"),defaut="OUI"),
- BASE =FACT(fr="définition des parmètres associés aux bases JEVEUX",
- statut='f',min=1,max=3,
+ IMPR_MACRO =SIMP(fr="affichage des sous-commandes produites par les macros dans le fichier mess",
+ statut='f',typ='TXM',into=("OUI","NON"),defaut="NON"),
+ BASE =FACT(fr="définition des paramètres associés aux bases JEVEUX",
+ statut='f',min=1,max=2,
FICHIER =SIMP(fr="nom de la base",statut='o',typ='TXM'),
TITRE =SIMP(statut='f',typ='TXM'),
CAS =SIMP(statut='f',typ='TXM'),
TITRE =SIMP(statut='f',typ='TXM'),
UNITE =SIMP(statut='f',typ='I'),
),
+ ERREUR =FACT(fr="comportement en cas d'erreur",statut='f',min=1,max=1,
+ ERREUR_F =SIMP(statut='f',typ='TXM',into=('ABORT','EXCEPTION'),defaut='ABORT'),
+ ),
DEBUG =FACT(fr="option de déboggage reservée aux développeurs",
statut='f',min=1,max=1,
JXVERI =SIMP(fr="vérifie l intégrité de la segmentation mémoire",
JEVEUX =SIMP(fr="force les déchargement sur disque",
statut='f',typ='TXM',into=('OUI','NON'),defaut='NON'),
ENVIMA =SIMP(fr="imprime les valeurs définies dans ENVIMA",
- statut='f',typ='TXM',into=('TES',)),
+ statut='f',typ='TXM',into=('TEST',)),
),
MEMOIRE =FACT(fr="mode de gestion mémoire utilisé",statut='f',min=1,max=1,
GESTION =SIMP(statut='f',typ='TXM',into=('COMPACTE','RAPIDE'),defaut='RAPIDE'),
UNITE =SIMP(statut='f',typ='I',defaut=15),
),
) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# ======================================================================
PRE_GIBI=PROC(nom="PRE_GIBI",op=49,
UIinfo={"groupes":("Gestion du travail",)},
- fr="Conversion d un fichier de maillage GIBI",
+ fr="Conversion d'un fichier de maillage GIBI au format Aster",
UNITE_GIBI =SIMP(statut='f',typ='I',defaut=19),
UNITE_MAILLAGE =SIMP(statut='f',typ='I',defaut=20),
) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
PRE_GMSH=PROC(nom="PRE_GMSH",op=47,
UIinfo={"groupes":("Gestion du travail",)},
- fr="Conversion d un fichier universel GMSH au format Aster",
+ fr="Conversion d'un fichier de maillage GMSH au format Aster",
UNITE_GMSH =SIMP(statut='f',typ='I',defaut=19),
UNITE_MAILLAGE =SIMP(statut='f',typ='I',defaut=20),
) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# ======================================================================
PRE_IDEAS=PROC(nom="PRE_IDEAS",op=47,
UIinfo={"groupes":("Gestion du travail",)},
- fr="Conversion d un fichier universel IDEAS-SUPERTAB au format Aster",
+ fr="Conversion d'un fichier universel IDEAS-SUPERTAB au format Aster",
UNITE_IDEAS =SIMP(statut='f',typ='I',defaut=19),
UNITE_MAILLAGE =SIMP(statut='f',typ='I',defaut=20),
CREA_GROUP_COUL =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 21/02/2006 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
-def prod_matr_cham_prod(MATR_ASSE,**args):
- if AsType(MATR_ASSE) == matr_asse_depl_r : return cham_no_depl_r
- if AsType(MATR_ASSE) == matr_asse_depl_c : return cham_no_depl_c
- if AsType(MATR_ASSE) == matr_asse_temp_r : return cham_no_temp_r
- if AsType(MATR_ASSE) == matr_asse_pres_c : return cham_no_pres_c
- raise AsException("type de concept resultat non prevu")
-PROD_MATR_CHAM=OPER(nom="PROD_MATR_CHAM",op= 156,sd_prod=prod_matr_cham_prod,
- fr="Effectuer le produit d une matrice par un vecteur",
+PROD_MATR_CHAM=OPER(nom="PROD_MATR_CHAM",op= 156,sd_prod=cham_no_sdaster,
+ fr="Effectuer le produit d'une matrice par un vecteur",
reentrant='n',
UIinfo={"groupes":("Résultats et champs",)},
MATR_ASSE =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_depl_c,matr_asse_temp_r,matr_asse_pres_c ) ),
- CHAM_NO =SIMP(statut='o',typ=(cham_no_depl_r,cham_no_depl_c,cham_no_temp_r,cham_no_pres_c ) ),
+ CHAM_NO =SIMP(statut='o',typ=cham_no_sdaster),
TITRE =SIMP(statut='f',typ='TXM',max='**'),
) ;
-#& MODIF COMMANDE DATE 21/03/2005 AUTEUR DURAND C.DURAND
+#& MODIF COMMANDE DATE 10/05/2006 AUTEUR MCOURTOI M.COURTOIS
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
if AsType(RESULTAT) == evol_elas : return evol_elas
if AsType(RESULTAT) == evol_noli : return evol_noli
if AsType(RESULTAT) == evol_char : return evol_char
+ if AsType(RESULTAT) == dyna_trans : return dyna_trans
if AsType(RESULTAT) == mode_meca : return mode_meca
if AsType(RESULTAT) == mode_stat_depl : return mode_stat_depl
if AsType(RESULTAT) == base_modale : return base_modale
- if AsType(CHAM_NO_REFE) == cham_no_depl_r : return cham_no_depl_r
- if AsType(CHAM_NO_REFE) == cham_no_depl_c : return cham_no_depl_c
- if AsType(CHAM_NO_REFE) == cham_no_pres_c : return cham_no_pres_c
- if AsType(CHAM_NO_REFE) == cham_no_temp_r : return cham_no_temp_r
- if AsType(CHAM_NO_REFE) == cham_no_epsi_r : return cham_no_epsi_r
- if AsType(CHAM_NO_REFE) == cham_no_sief_r : return cham_no_sief_r
- if AsType(CHAM_NO_REFE) == cham_no_flux_r : return cham_no_flux_r
+ if CHAM_NO_REFE != None : return cham_no_sdaster
raise AsException("type de concept resultat non prevu")
PROJ_CHAMP=OPER(nom="PROJ_CHAMP",op= 166,sd_prod=proj_champ_prod,reentrant='f',
UIinfo={"groupes":("Résultats et champs",)},
- fr="Projection d'un champ aux noeuds sur les noeuds d'un autre maillage",
+ fr="Projeter les champs aux noeuds d'une SD résultat de type evol_xxx sur un autre maillage",
#
METHODE =SIMP(statut='f',typ='TXM',defaut="ELEM",
into=("NUAGE_DEG_0","NUAGE_DEG_1","ELEM",) ),
b_nuage =BLOC(condition="(METHODE=='NUAGE_DEG_1') or (METHODE=='NUAGE_DEG_0')",
fr="Lissage d'un nuage de points",
- CHAM_NO =SIMP(statut='o',typ=(cham_no_depl_r,cham_no_depl_c,cham_no_pres_c,cham_no_temp_r,
- cham_no_epsi_r,cham_no_sief_r,cham_no_flux_r)),
- CHAM_NO_REFE =SIMP(statut='o',typ=(cham_no_depl_r,cham_no_depl_c,cham_no_pres_c,cham_no_temp_r,
- cham_no_epsi_r,cham_no_sief_r,cham_no_flux_r)),
+ CHAM_NO =SIMP(statut='o',typ=cham_no_sdaster),
+ CHAM_NO_REFE =SIMP(statut='o',typ=cham_no_sdaster),
),
b_elem =BLOC(condition="METHODE=='ELEM'",
fr="Utilisation des fonctions de forme du maillage initial",
regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','FREQ','LIST_INST','LIST_FREQ','LIST_ORDRE'),
- EXCLUS('TOUT_CHAM','NOM_CHAM',), ),
- RESULTAT =SIMP(statut='o',typ=(evol_ther,evol_elas,evol_noli,evol_char,mode_meca,mode_stat_depl,base_modale) ),
+ EXCLUS('TOUT_CHAM','NOM_CHAM',),
+ CONCEPT_SENSIBLE('SEPARE'),
+ REUSE_SENSIBLE(),
+ DERIVABLE('RESULTAT'),),
+ RESULTAT =SIMP(statut='o',typ=(evol_ther,evol_elas,evol_noli,dyna_trans,evol_char,
+ mode_meca,mode_stat_depl,base_modale) ),
SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**',
fr="Liste des paramètres de sensibilité.",
ang="List of sensitivity parameters",),
TOUT_CHAM =SIMP(statut='f',typ='TXM',into=("OUI",) ),
NOM_CHAM =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'),
+# POUR IMPOSER LA NUMEROTATION DES DDLS :
+# ------------------------------------------------------------------
+ NUME_DDL =SIMP(statut='f',typ=(nume_ddl_sdaster) ),
+
+
TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**' ),
LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster),
LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster),
NUME_MODE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**' ),
NOEUD_CMP =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'),
+
+ CAS_FIGURE =SIMP(statut='f',typ='TXM',into=("2D","3D","2.5D","1.5D",) ),
DISTANCE_MAX =SIMP(statut='f',typ='R',
fr="Distance maximale entre le noeud et l'élément le plus proche, lorsque le noeud n'est dans aucun élément."),
+ ALARME =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+
TYPE_CHAM =SIMP(statut='f',typ='TXM',into=("NOEU",),
fr="Pour forcer le type des champs projetés. NOEU -> cham_no"),
- b_modele_gene =BLOC(condition = "AsType(RESULTAT) == mode_meca",
- RIGI_MECA =SIMP(statut='f',typ=(matr_asse_depl_r,matr_asse_depl_c,matr_asse_gene_r,matr_asse_pres_r ) ),
- MASS_MECA =SIMP(statut='f',typ=(matr_asse_depl_r,matr_asse_gene_r,matr_asse_pres_r ) ),
- AMOR_MECA =SIMP(statut='f',typ=(matr_asse_depl_r,matr_asse_gene_r) ),
- ),
+
+ PROL_ZERO =SIMP(statut='f',typ='TXM',into=("OUI","NON"),defaut="NON",
+ fr="Si le résultat est un mode_xxx ou une base_xxx, on peut prolonger"
+ +" les champs par zéro la ou la projection ne donne pas de valeurs."),
+
),
VIS_A_VIS =FACT(statut='f',max='**',
MAILLE_2 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
GROUP_NO_2 =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
NOEUD_2 =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
+ CAS_FIGURE =SIMP(statut='f',typ='TXM',into=("2D","3D","2.5D","1.5D",) ),
),
TITRE =SIMP(statut='f',typ='TXM',max='**' ),
INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
raise AsException("type de concept resultat non prevu")
PROJ_MATR_BASE=OPER(nom="PROJ_MATR_BASE",op= 71,sd_prod=matr_asse_gene_prod,
- fr="Projection d une matrice assemblée sur une base (modale ou de RITZ)",
+ fr="Projection d'une matrice assemblée sur une base (modale ou de RITZ)",
reentrant='n',
UIinfo={"groupes":("Matrices/vecteurs",)},
regles=(UN_PARMI('MATR_ASSE','MATR_ASSE_GENE'),),
MATR_ASSE_GENE =SIMP(statut='f',typ=(matr_asse_gene_r,matr_asse_gene_c) ),
) ;
-#& MODIF COMMANDE DATE 15/02/2005 AUTEUR NICOLAS O.NICOLAS
+#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
sd_prod=proj_mesu_modal_prod,
reentrant='n',
UIinfo={"groupes":("Résultats et champs",)},
- fr="Calcul de coordonnees generalisees de mesure experimentale relatives a une base de projection",
+ fr="Calcul des coordonnees généralisees de mesure experimentale relatives a une base de projection",
MODELE_CALCUL =FACT(statut='o',
MODELE =SIMP(statut='o',typ=(modele_sdaster) ),
),
);
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 21/02/2006 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
-PROJ_SPEC_BASE=OPER(nom="PROJ_SPEC_BASE",op= 146,sd_prod=tabl_intsp,reentrant='n',
+PROJ_SPEC_BASE=OPER(nom="PROJ_SPEC_BASE",op= 146,sd_prod=table_sdaster,reentrant='n',
UIinfo={"groupes":("Matrices/vecteurs",)},
- fr="Projection d un ou plusieurs spectres de turbulenc sur un ensemble de bases modales ",
+ fr="Projecter un ou plusieurs spectres de turbulence sur une (ou plusieurs) base(s) modale(s) ",
regles=(UN_PARMI('BASE_ELAS_FLUI','MODE_MECA','CHAM_NO'),
ENSEMBLE('FREQ_INIT','FREQ_FIN','NB_POIN'),),
SPEC_TURB =SIMP(statut='o',typ=spectre_sdaster,validators=NoRepeat(),max='**' ),
BASE_ELAS_FLUI =SIMP(statut='f',typ=melasflu_sdaster ),
MODE_MECA =SIMP(statut='f',typ=mode_meca ),
- CHAM_NO =SIMP(statut='f',typ=cham_no_depl_r ),
+ CHAM_NO =SIMP(statut='f',typ=cham_no_sdaster),
FREQ_INIT =SIMP(statut='f',typ='R',val_min=0.E+0 ),
FREQ_FIN =SIMP(statut='f',typ='R',val_min=0.E+0 ),
NB_POIN =SIMP(statut='f',typ='I' ),
ORIG_AXE =SIMP(statut='f',typ='R',min=3,max=3 ),
TITRE =SIMP(statut='f',typ='TXM',max='**' ),
) ;
-#& MODIF COMMANDE DATE 22/02/2005 AUTEUR DURAND C.DURAND
+#& MODIF COMMANDE DATE 21/02/2006 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
-def vect_asse_gene_prod(VECT_ASSE,VECT_ASSE_GENE,**args):
- if AsType(VECT_ASSE) == cham_no_depl_r : return vect_asse_gene_r
- if AsType(VECT_ASSE_GENE) == vect_asse_gene_r : return vect_asse_gene_r
- if AsType(VECT_ASSE) == cham_no_depl_c : return vect_asse_gene_c
- if AsType(VECT_ASSE_GENE) == vect_asse_gene_c : return vect_asse_gene_c
- raise AsException("type de concept resultat non prevu")
-PROJ_VECT_BASE=OPER(nom="PROJ_VECT_BASE",op= 72,sd_prod=vect_asse_gene_prod,
- fr="Projection d un vecteur assemblé sur une base (modale ou de RITZ)",
+PROJ_VECT_BASE=OPER(nom="PROJ_VECT_BASE",op= 72,sd_prod=vect_asse_gene,
+ fr="Projection d'un vecteur assemblé sur une base (modale ou de RITZ)",
reentrant='n',
UIinfo={"groupes":("Matrices/vecteurs",)},
regles=(UN_PARMI('VECT_ASSE','VECT_ASSE_GENE'),),
BASE =SIMP(statut='o',typ=(mode_meca,base_modale,mode_gene,mode_stat ) ),
NUME_DDL_GENE =SIMP(statut='o',typ=nume_ddl_gene ),
TYPE_VECT =SIMP(statut='f',typ='TXM',defaut="FORC"),
- VECT_ASSE =SIMP(statut='f',typ=(cham_no_depl_r,cham_no_depl_c) ),
- VECT_ASSE_GENE =SIMP(statut='f',typ=(vect_asse_gene_r,vect_asse_gene_c) ),
+ VECT_ASSE =SIMP(statut='f',typ=cham_no_sdaster),
+ VECT_ASSE_GENE =SIMP(statut='f',typ=vect_asse_gene ),
) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 09/05/2006 AUTEUR MASSIN P.MASSIN
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2006 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+
+PROPA_XFEM=OPER(nom="PROPA_XFEM",op=10,sd_prod=fiss_xfem,reentrant='n',
+ UIinfo={"groupes":("Modélisation",)},
+ fr="Propagation de fissure avec X-FEM",
+
+ MODELE =SIMP(statut='o',typ=modele_sdaster),
+
+ TABLE =SIMP(statut='o',typ=table_sdaster),
+
+ LOI_PROPA =FACT(statut='o',max=01,
+ LOI =SIMP(statut='o',typ='TXM',into=("PARIS",),defaut="PARIS"),
+ b_paris =BLOC( condition = "LOI=='PARIS'",
+ C =SIMP(statut='o',typ='R',),
+ M =SIMP(statut='o',typ='R',),),
+ ),
+ GROUP_MA_ENRI =SIMP(statut='o',typ=grma,max=01),
+
+ INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ),
+) ;
+#& MODIF COMMANDE DATE 03/01/2006 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
-RECA_WEIBULL=OPER(nom="RECA_WEIBULL",op= 197,sd_prod=tabl_reca_weib,
- fr=" ",reentrant='n',
+RECA_WEIBULL=OPER(nom="RECA_WEIBULL",op= 197,sd_prod=table_sdaster,
+ fr="Recaler les paramètres du modèle de WEIBULL sur des données expérimentales",reentrant='n',
UIinfo={"groupes":("Post traitements",)},
LIST_PARA =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=2,into=("SIGM_REFE","M",) ),
RESU =FACT(statut='o',max='**',
ITER_GLOB_MAXI =SIMP(statut='f',typ='I',defaut= 10 ),
INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2 ,) ),
) ;
-#& MODIF COMMANDE DATE 16/06/2004 AUTEUR DURAND C.DURAND
+#& MODIF COMMANDE DATE 16/05/2006 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
def recu_fonction_prod(RESULTAT=None,TABLE=None,OBSTACLE=None,
RESU_GENE=None,BASE_ELAS_FLUI=None,CHAM_GD=None,
TYPE_RESU=None,**args):
- if AsType(RESULTAT) == dyna_harmo : return fonction_c
+ if AsType(RESULTAT) == dyna_harmo : return fonction_c
+ if AsType(RESU_GENE) == harm_gene : return fonction_c
# On ne sait pas interpreter les deux conditions suivantes
if TABLE != None :
if TYPE_RESU != None :
raise AsException("type de concept resultat non prevu")
RECU_FONCTION=OPER(nom="RECU_FONCTION",op=90,sd_prod=recu_fonction_prod,
- fr="Extraire sous forme d une fonction, l évolution temporelle d une composante d un champ ou d une table",
- reentrant='n',
+ fr="Extraire sous forme d'une fonction, l'évolution d'une grandeur en fonction d'une autre",
+ reentrant='f',
UIinfo={"groupes":("Fonction",)},
regles=(UN_PARMI('CHAM_GD','RESULTAT','RESU_GENE','TABLE','BASE_ELAS_FLUI','OBSTACLE'),),
- CHAM_GD =SIMP(statut='f',typ=(cham_no_depl_r,cham_no_temp_r,cham_no_pres_r,cham_elem_sief_r,
- cham_elem_vari_r,cham_elem_epsi_r,cham_elem_flux_r,
- cham_elem_pres_r,) ),
+ CHAM_GD =SIMP(statut='f',typ=(cham_no_sdaster,
+ cham_elem,),),
RESULTAT =SIMP(statut='f',typ=(evol_elas,dyna_trans,evol_noli,evol_ther,dyna_harmo ) ),
- RESU_GENE =SIMP(statut='f',typ=tran_gene),
-# concept table à créer
+ RESU_GENE =SIMP(statut='f',typ=(tran_gene, mode_gene, harm_gene)),
TABLE =SIMP(statut='f',typ=table_sdaster),
BASE_ELAS_FLUI =SIMP(statut='f',typ=melasflu_sdaster),
OBSTACLE =SIMP(statut='f',typ=obstacle_sdaster),
- b_tran_gene = BLOC ( condition = "RESU_GENE != None",
- fr="Récupération de la fonction concernant les chocs à partir d un concept TRAN_GENE",
- regles=(PRESENT_PRESENT('SOUS_STRUC','INTITULE'),
- EXCLUS('MULT_APPUI','CORR_STAT'),),
- MULT_APPUI =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- CORR_STAT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- ACCE_MONO_APPUI =SIMP(statut='f',typ=(fonction_sdaster,formule)),
- PARA_X =SIMP(statut='f',typ='TXM' ),
- PARA_Y =SIMP(statut='f',typ='TXM' ),
- SOUS_STRUC =SIMP(statut='f',typ='TXM' ),
- LIST_PARA =SIMP(statut='f',typ=listr8_sdaster ),
- INTITULE =SIMP(statut='f',typ='TXM' ),
+# ======= SENSIBILITE =================================================
+ b_sensibilite =BLOC(condition="RESULTAT != None",
+ fr="Définition des paramètres de sensibilité",
+ ang="Definition of sensitivity parameters",
+ regles=(CONCEPT_SENSIBLE('SEPARE'), REUSE_SENSIBLE(),
+ DERIVABLE('RESULTAT'),),
+ SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**',
+ fr="Liste des paramètres de sensibilité.",
+ ang="List of sensitivity parameters"),),
+# ======= ACCES A LA SD RESULTAT =================================================
+ b_acces = BLOC ( condition = "(RESULTAT != None) or (RESU_GENE != None)",
+ fr="acces a une SD résultat",
+# on ne peut pas mettre de regles, le défaut TOUT_ORDRE est pris en compte dans le fortran
+ TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
+ LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster ),
+ TOUT_INST =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
+ LIST_INST =SIMP(statut='f',typ=listr8_sdaster ),
+ FREQ =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
+ LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster ),
+ NUME_MODE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
+ b_prec = BLOC ( condition = "(INST != None) or (LIST_INST != None) or (FREQ != None) or (LIST_FREQ != None)",
+ PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ),
+ CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
+ INTERP_NUME =SIMP(statut='f',typ='TXM',into=("NON","LIN") ),
+ ),
),
+# ======= BASE_ELAS_FLUI =================================================
b_base_elas_flui = BLOC ( condition = "BASE_ELAS_FLUI != None",
fr="Récupération de la fonction à partir d un concept melasflu",
regles=(UN_PARMI('TOUT_ORDRE','NUME_ORDRE'),),
PARA_X =SIMP(statut='o',typ='TXM',into=("VITE_FLU",) ),
PARA_Y =SIMP(statut='o',typ='TXM',into=("FREQ","AMOR") ),
),
- b_table = BLOC ( condition = "TABLE != None",fr="Récupération de la fonction à partir d un concept table",
- regles=(UN_PARMI('PARA_X','NOM_PARA_TABL'),
- PRESENT_PRESENT('PARA_X','PARA_Y'),),
+
+# ======= TABLE =================================================
+ b_table = BLOC ( condition = "TABLE != None",
+ fr="Récupération de la fonction à partir d un concept table",
+ regles=(UN_PARMI('PARA_X','NOM_PARA_TABL'),
+ PRESENT_PRESENT('PARA_X','PARA_Y'),),
PARA_X =SIMP(statut='f',typ='TXM',
fr="1ère colonne de la table qui définit la fonction à récupérer", ),
PARA_Y =SIMP(statut='f',typ='TXM',
PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ),
),
),
-# RESULTAT
+
+# ======= RESULTAT =================================================
b_resu = BLOC ( condition = "RESULTAT != None", fr="Opérandes en cas de RESULTAT",
- regles=(
-# A voir par Mathieu Courtois : il existe de tests (SDNX300B) qui ne satisfont pas ce UN_PARMI
-# UN_PARMI('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','TOUT_INST','LIST_INST','FREQ','LIST_FREQ'),
- AU_MOINS_UN('MAILLE','GROUP_MA','GROUP_NO','NOEUD','NOEUD_CHOC','GROUP_NO_CHOC','NOM_PARA_RESU'),
- PRESENT_PRESENT('MAILLE','NOM_CMP'),
- PRESENT_PRESENT('GROUP_MA','NOM_CMP'),
- PRESENT_PRESENT('NOEUD','NOM_CMP'),
- PRESENT_PRESENT('GROUP_NO','NOM_CMP'),
- PRESENT_PRESENT('POINT','NOM_CMP'),
- EXCLUS('POINT','NOEUD'),
- EXCLUS('GROUP_MA','MAILLE'),
- EXCLUS('GROUP_NO','NOEUD'),
- EXCLUS('NOEUD_CHOC','GROUP_NO_CHOC'),
- UN_PARMI('NOM_CHAM','NOM_PARA_RESU'),),
+ regles=(UN_PARMI('NOM_CHAM','NOM_PARA_RESU'),),
NOM_CHAM =SIMP(statut='f',typ='TXM',into=C_NOM_CHAM_INTO()),
NOM_PARA_RESU =SIMP(statut='f',typ='TXM' ),
- TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
- LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster ),
- TOUT_INST =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
- LIST_INST =SIMP(statut='f',typ=listr8_sdaster ),
- FREQ =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
- LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster ),
- b_prec = BLOC ( condition = "(INST != None) or (LIST_INST != None) or (FREQ != None) or (LIST_FREQ != None)",
- PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
- INTERP_NUME =SIMP(statut='f',typ='TXM',into=("NON","LIN") ),
- ),
- NOM_CMP =SIMP(statut='f',typ='TXM' ),
-
- MAILLE =SIMP(statut='f',typ=ma),
- GROUP_MA =SIMP(statut='f',typ=grma),
- NOEUD =SIMP(statut='f',typ=no),
- GROUP_NO =SIMP(statut='f',typ=grno),
- POINT =SIMP(statut='f',typ='I' ),
- SOUS_POINT =SIMP(statut='f',typ='I' ),
- NOEUD_CHOC =SIMP(statut='f',typ=no),
- GROUP_NO_CHOC =SIMP(statut='f',typ=grno),
- ),
-# RESU_GENE
- b_resu_gene = BLOC ( condition = "RESU_GENE != None", fr="Opérandes en cas de RESU_GENE",
-# A voir par Mathieu Courtois : il existe de tests (SDNX300B) qui ne satisfont pas ce UN_PARMI
-# regles=(UN_PARMI('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','TOUT_INST','LIST_INST','FREQ','LIST_FREQ'),),
- NOM_CHAM =SIMP(statut='f',typ='TXM',into=("DEPL","VITE","ACCE","PTEM") ),
- TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
- LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster ),
- TOUT_INST =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
- LIST_INST =SIMP(statut='f',typ=listr8_sdaster ),
- FREQ =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
- LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster ),
- b_prec = BLOC ( condition = "(INST != None) or (LIST_INST != None) or (FREQ != None) or (LIST_FREQ != None)",
- PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
- INTERP_NUME =SIMP(statut='f',typ='TXM',into=("NON","LIN") ),
- ),
- b_local_cham = BLOC ( condition = "NOM_CHAM!='PTEM'", fr="Opérandes de localisation du champ",
- regles=(AU_MOINS_UN('MAILLE','GROUP_MA','GROUP_NO','NOEUD','NOEUD_CHOC','GROUP_NO_CHOC'),
- PRESENT_PRESENT('MAILLE','NOM_CMP'),
- PRESENT_PRESENT('GROUP_MA','NOM_CMP'),
- PRESENT_PRESENT('NOEUD','NOM_CMP'),
- PRESENT_PRESENT('GROUP_NO','NOM_CMP'),
- PRESENT_PRESENT('POINT','NOM_CMP'),
- EXCLUS('POINT','NOEUD'),
- EXCLUS('GROUP_MA','MAILLE'),
- EXCLUS('GROUP_NO','NOEUD'),
- EXCLUS('NOEUD_CHOC','GROUP_NO_CHOC'),),
- NOM_CMP =SIMP(statut='f',typ='TXM' ),
-
+ b_cham = BLOC ( condition = "NOM_CHAM != None",
+ regles=(AU_MOINS_UN('MAILLE','GROUP_MA','GROUP_NO','NOEUD'),
+ PRESENT_ABSENT('POINT','NOEUD','GROUP_NO'),
+ PRESENT_ABSENT('SOUS_POINT','NOEUD','GROUP_NO'),
+ EXCLUS('GROUP_MA','MAILLE'),
+ EXCLUS('GROUP_NO','NOEUD'),),
+ NOM_CMP =SIMP(statut='o',typ='TXM' ),
MAILLE =SIMP(statut='f',typ=ma),
GROUP_MA =SIMP(statut='f',typ=grma),
NOEUD =SIMP(statut='f',typ=no),
GROUP_NO =SIMP(statut='f',typ=grno),
POINT =SIMP(statut='f',typ='I' ),
SOUS_POINT =SIMP(statut='f',typ='I' ),
+ ),
+ ),
+
+# ======= RESU_GENE =================================================
+ b_tran_gene = BLOC ( condition = "AsType(RESU_GENE) == tran_gene",
+ fr="Récupération d'une fonction à partir d un concept TRAN_GENE",
+ regles=(UN_PARMI('NOM_CHAM','NOEUD_CHOC','GROUP_NO_CHOC'),),
+ NOM_CHAM =SIMP(statut='f',typ='TXM',into=("DEPL","VITE","ACCE","PTEM") ),
NOEUD_CHOC =SIMP(statut='f',typ=no),
GROUP_NO_CHOC =SIMP(statut='f',typ=grno),
+ b_cham = BLOC ( condition = "(NOM_CHAM=='DEPL') or (NOM_CHAM=='VITE') or (NOM_CHAM=='ACCE')",
+ regles=(UN_PARMI('GROUP_NO','NOEUD'),
+ EXCLUS('MULT_APPUI','CORR_STAT'),),
+ NOM_CMP =SIMP(statut='o',typ='TXM' ),
+ NOEUD =SIMP(statut='f',typ=no),
+ GROUP_NO =SIMP(statut='f',typ=grno),
+ MULT_APPUI =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ CORR_STAT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
+ ACCE_MONO_APPUI =SIMP(statut='f',typ=(fonction_sdaster,formule)),
+ ),
+ b_choc = BLOC ( condition = "(NOEUD_CHOC != None) or (GROUP_NO_CHOC != None)",
+ regles=(PRESENT_PRESENT('SOUS_STRUC','INTITULE'),),
+ PARA_X =SIMP(statut='o',typ='TXM',
+ into=("INST","FN","FT1","FT2","VN","VT1","VT2","DXLOC","DYLOC","DZLOC") ),
+ PARA_Y =SIMP(statut='o',typ='TXM',
+ into=("INST","FN","FT1","FT2","VN","VT1","VT2","DXLOC","DYLOC","DZLOC") ),
+ LIST_PARA =SIMP(statut='f',typ=listr8_sdaster ),
+ INTITULE =SIMP(statut='f',typ='TXM' ),
+ SOUS_STRUC =SIMP(statut='f',typ='TXM' ),
+ ),
+ ),
+ b_harm_gene = BLOC ( condition = "AsType(RESU_GENE)==harm_gene",
+ fr="Récupération d'une fonction à partir d un concept HARM_GENE",
+ regles=(UN_PARMI('NOM_CHAM','NOM_PARA_RESU'),),
+ NOM_CHAM =SIMP(statut='f',typ='TXM',into=C_NOM_CHAM_INTO()),
+ NOM_PARA_RESU =SIMP(statut='f',typ='TXM' ),
+ b_cham = BLOC ( condition = "NOM_CHAM != None",
+ regles=(UN_PARMI('NUME_CMP_GENE','NOM_CMP'),),
+ NUME_CMP_GENE =SIMP(statut='f',typ='I' ),
+ NOM_CMP =SIMP(statut='f',typ='TXM' ),
+ b_cmp = BLOC ( condition = "NOM_CMP != None",
+ regles=(UN_PARMI('NOEUD','GROUP_NO'),),
+ NOEUD =SIMP(statut='f',typ=no),
+ GROUP_NO =SIMP(statut='f',typ=grno),
+ ),
+ ),
+ ),
+ b_mode_gene = BLOC ( condition = "AsType(RESU_GENE)==mode_gene",
+ fr="Récupération d'une fonction à partir d un concept MODE_GENE",
+ regles=(UN_PARMI('NOM_CHAM','NOM_PARA_RESU'),),
+ NOM_CHAM =SIMP(statut='f',typ='TXM',into=C_NOM_CHAM_INTO()),
+ NOM_PARA_RESU =SIMP(statut='f',typ='TXM' ),
+ b_cham = BLOC ( condition = "NOM_CHAM != None",
+ regles=(UN_PARMI('NUME_CMP_GENE','NOM_CMP'),),
+ NUME_CMP_GENE =SIMP(statut='f',typ='I' ),
+ NOM_CMP =SIMP(statut='f',typ='TXM' ),
+ b_cmp = BLOC ( condition = "NOM_CMP != None",
+ regles=(UN_PARMI('NOEUD','GROUP_NO'),
+ UN_PARMI('SQUELETTE','SOUS_STRUC'),),
+ NOEUD =SIMP(statut='f',typ=no),
+ GROUP_NO =SIMP(statut='f',typ=grno),
+ SQUELETTE =SIMP(statut='f',typ=squelette ),
+ SOUS_STRUC =SIMP(statut='f',typ='TXM' ),
+ ),
),
),
-# CHAM_GD
- b_cham_gd = BLOC ( condition = "(CHAM_GD != None)", fr="Opérandes en cas de CHAM_GD",
-
- regles=(AU_MOINS_UN('MAILLE','GROUP_MA','GROUP_NO','NOEUD','NOEUD_CHOC','GROUP_NO_CHOC'),
- PRESENT_PRESENT('MAILLE','NOM_CMP'),
- PRESENT_PRESENT('GROUP_MA','NOM_CMP'),
- PRESENT_PRESENT('NOEUD','NOM_CMP'),
- PRESENT_PRESENT('GROUP_NO','NOM_CMP'),
- PRESENT_PRESENT('POINT','NOM_CMP'),
- EXCLUS('POINT','NOEUD'),
- EXCLUS('GROUP_MA','MAILLE'),
- EXCLUS('GROUP_NO','NOEUD'),
- EXCLUS('NOEUD_CHOC','GROUP_NO_CHOC'),),
- NOM_CMP =SIMP(statut='f',typ='TXM' ),
+# ======= CHAM_GD =================================================
+ b_cham_gd = BLOC ( condition = "(CHAM_GD != None)", fr="Opérandes en cas de CHAM_GD",
+ regles=(AU_MOINS_UN('MAILLE','GROUP_MA','GROUP_NO','NOEUD'),
+ PRESENT_ABSENT('POINT','NOEUD','GROUP_NO'),
+ PRESENT_ABSENT('SOUS_POINT','NOEUD','GROUP_NO'),
+ EXCLUS('GROUP_MA','MAILLE'),
+ EXCLUS('GROUP_NO','NOEUD'),),
+ NOM_CMP =SIMP(statut='o',typ='TXM' ),
MAILLE =SIMP(statut='f',typ=ma),
GROUP_MA =SIMP(statut='f',typ=grma),
NOEUD =SIMP(statut='f',typ=no),
GROUP_NO =SIMP(statut='f',typ=grno),
POINT =SIMP(statut='f',typ='I' ),
SOUS_POINT =SIMP(statut='f',typ='I' ),
- NOEUD_CHOC =SIMP(statut='f',typ=no),
- GROUP_NO_CHOC =SIMP(statut='f',typ=grno),
),
+
+# ======= OBSTACLE =================================================
b_obstacle = BLOC ( condition = "OBSTACLE != None",
fr="Choix du repère",
REPERE =SIMP(statut='f',typ='TXM',into=("POLAIRE","GLOBAL") ),
),
-###
+
+# ======= SURCHARGE DES ATTRIBUTS =================================================
NOM_PARA =SIMP(statut='f',typ='TXM', into=C_PARA_FONCTION() ),
NOM_RESU =SIMP(statut='f',typ='TXM' ),
INTERPOL =SIMP(statut='f',typ='TXM',max=2,into=("NON","LIN","LOG") ),
TITRE =SIMP(statut='f',typ='TXM',max='**'),
INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2 ) ),
) ;
-#& MODIF COMMANDE DATE 22/02/2005 AUTEUR DURAND C.DURAND
+#& MODIF COMMANDE DATE 21/02/2006 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
-RECU_GENE=OPER(nom="RECU_GENE",op= 76,sd_prod=vect_asse_gene_r,reentrant='n',
+RECU_GENE=OPER(nom="RECU_GENE",op= 76,sd_prod=vect_asse_gene,reentrant='n',
UIinfo={"groupes":("Résultats et champs",)},
- fr="Récupération d un champ de grandeur à partir d un résultat en coordonnées généralisées",
+ fr="Extraire d'un champ de grandeur (déplacements, vitesses ou accélérations) à partir de résultats"
+ +" en coordonnées généralisées",
RESU_GENE =SIMP(statut='o',typ=tran_gene ),
INST =SIMP(statut='o',typ='R' ),
NOM_CHAM =SIMP(statut='f',typ='TXM',defaut="DEPL",into=("DEPL","VITE","ACCE") ),
CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF" ,into=("ABSOLU","RELATIF") ),
PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ),
) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# ======================================================================
# RESPONSABLE VABHHTS J.PELLET
RECU_TABLE=OPER(nom="RECU_TABLE",op= 174,sd_prod=table_sdaster,
- fr=" ",reentrant='n',
- UIinfo={"groupes":("Résultats et champs",)},
+ fr="Récupérer dans une table les valeurs d'un paramètre d'une SD Résultat ou d'extraire une table contenue"
+ +" dans une autre SD pour celles qui le permettent",
+ UIinfo={"groupes":("Résultats et champs",)},reentrant='n',
CO =SIMP(statut='o',typ=assd),
regles=(UN_PARMI('NOM_TABLE','NOM_PARA')),
NOM_TABLE =SIMP(statut='f',typ='TXM' ),
NOM_PARA =SIMP(statut='f',typ='TXM',max='**'),
TITRE =SIMP(statut='f',typ='TXM',max='**'),
) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 21/02/2006 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
-def reso_grad_prod(MATR_ASSE,**args ):
- if AsType(MATR_ASSE) == matr_asse_depl_r : return cham_no_depl_r
- if AsType(MATR_ASSE) == matr_asse_temp_r : return cham_no_temp_r
- if AsType(MATR_ASSE) == matr_asse_pres_r : return cham_no_pres_r
- raise AsException("type de concept resultat non prevu")
-RESO_GRAD=OPER(nom="RESO_GRAD",op= 84,sd_prod=reso_grad_prod,
- fr="Résolution par la méthode du gradient conjugué préconditionné",
+RESO_GRAD=OPER(nom="RESO_GRAD",op= 84,sd_prod=cham_no_sdaster,
+ fr="Résolution d'un système linéaire par la méthode du gradient conjugué préconditionné",
reentrant='f',
UIinfo={"groupes":("Résolution",)},
MATR_ASSE =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_temp_r,matr_asse_pres_r ) ),
- CHAM_NO =SIMP(statut='o',typ=(cham_no_depl_r,cham_no_temp_r,cham_no_pres_r ) ),
- CHAM_CINE =SIMP(statut='f',typ=(cham_no_temp_r,cham_no_depl_r,cham_no_pres_r ) ),
+ CHAM_NO =SIMP(statut='o',typ=cham_no_sdaster),
+ CHAM_CINE =SIMP(statut='f',typ=cham_no_sdaster),
MATR_FACT =SIMP(statut='f',typ=(matr_asse_depl_r,matr_asse_temp_r,matr_asse_pres_r ) ),
NMAX_ITER =SIMP(statut='f',typ='I',defaut= 0 ),
REPRISE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
RESI_RELA =SIMP(statut='f',typ='R',defaut= 1E-6 ),
INFO =SIMP(statut='f',typ='I',into=(1,2) ),
) ;
-#& MODIF COMMANDE DATE 01/04/2005 AUTEUR VABHHTS J.PELLET
+#& MODIF COMMANDE DATE 21/02/2006 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
# RESPONSABLE VABHHTS J.PELLET
-def reso_ldlt_prod(CHAM_NO,**args ):
- if AsType(CHAM_NO) == cham_no_temp_r : return cham_no_temp_r
- if AsType(CHAM_NO) == cham_no_depl_r : return cham_no_depl_r
- if AsType(CHAM_NO) == cham_no_pres_r : return cham_no_pres_r
- if AsType(CHAM_NO) == cham_no_temp_c : return cham_no_temp_c
- if AsType(CHAM_NO) == cham_no_depl_c : return cham_no_depl_c
- if AsType(CHAM_NO) == cham_no_pres_c : return cham_no_pres_c
- raise AsException("type de concept resultat non prevu")
-RESO_LDLT=OPER(nom="RESO_LDLT",op=15,sd_prod=reso_ldlt_prod,reentrant='f',
- fr="Résolution en place ou hors place d un système factorisé",
+RESO_LDLT=OPER(nom="RESO_LDLT",op=15,sd_prod=cham_no_sdaster,reentrant='f',
+ fr="Résoudre par méthode directe un système d'équations linéaires préalablement factorisé par FACT_LDLT",
UIinfo={"groupes":("Résolution",)},
MATR_FACT =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_depl_c,matr_asse_temp_r,
matr_asse_temp_c,matr_asse_pres_r,matr_asse_pres_c) ),
- CHAM_NO =SIMP(statut='o',typ=(cham_no_temp_r,cham_no_depl_r,cham_no_pres_r,
- cham_no_temp_c,cham_no_depl_c,cham_no_pres_c) ),
- CHAM_CINE =SIMP(statut='f',typ=(cham_no_temp_r,cham_no_depl_r,cham_no_pres_c) ),
+ CHAM_NO =SIMP(statut='o',typ=cham_no_sdaster),
+ CHAM_CINE =SIMP(statut='f',typ=cham_no_sdaster),
# RESI_RELA : précision utilisée si SOLVEUR=MUMPS
RESI_RELA =SIMP(statut='f',typ='R',defaut=1.e-6),
TITRE =SIMP(statut='f',typ='TXM',max='**'),
INFO =SIMP(statut='f',typ='I',into=(1,2) ),
) ;
-#& MODIF COMMANDE DATE 30/06/2004 AUTEUR MCOURTOI M.COURTOIS
+#& MODIF COMMANDE DATE 20/03/2006 AUTEUR ACBHHCD G.DEVESA
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
# RESPONSABLE BOYERE E.BOYERE
-def rest_base_phys_prod(RESU_GENE,RESULTAT,**args ):
+def rest_base_phys_prod(RESU_GENE,RESU_PHYS,RESULTAT,**args ):
if AsType(RESU_GENE) == tran_gene : return dyna_trans
if AsType(RESU_GENE) == mode_gene : return mode_meca
if AsType(RESU_GENE) == mode_cycl : return mode_meca
if AsType(RESU_GENE) == harm_gene : return dyna_harmo
- if AsType(RESULTAT) == mode_meca : return mode_meca
+ if AsType(RESU_PHYS) == evol_noli : return dyna_trans
+ if AsType(RESULTAT) == evol_elas : return evol_elas
+ if AsType(RESULTAT) == evol_noli : return evol_noli
+ if AsType(RESULTAT) == evol_char : return evol_char
+ if AsType(RESULTAT) == dyna_trans : return dyna_trans
+ if AsType(RESULTAT) == mode_meca : return mode_meca
+ if AsType(RESULTAT) == mode_stat_depl : return mode_stat_depl
+ if AsType(RESULTAT) == base_modale : return base_modale
raise AsException("type de concept resultat non prevu")
REST_BASE_PHYS=OPER(nom="REST_BASE_PHYS",op= 75,sd_prod=rest_base_phys_prod,
fr="Restituer dans la base physique des résultats en coordonnées généralisées",
reentrant='n',
UIinfo={"groupes":("Matrices/vecteurs",)},
- regles=(UN_PARMI('RESU_GENE','RESULTAT'),
+ regles=(UN_PARMI('RESU_GENE','RESU_PHYS','RESULTAT'),
EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','LIST_INST','TOUT_INST'),
EXCLUS('TOUT_INST','NUME_ORDRE','INST','LIST_INST','TOUT_ORDRE'),
# Doc U à revoir
EXCLUS('MULT_APPUI','CORR_STAT'),
EXCLUS('MULT_APPUI','NOEUD','GROUP_NO'),
EXCLUS('CORR_STAT','NOEUD','GROUP_NO'),
- EXCLUS('NOEUD','GROUP_NO'),
+ EXCLUS('NOEUD','GROUP_NO'),
+ PRESENT_PRESENT('RESU_PHYS','BASE_MODALE'),
PRESENT_PRESENT('RESULTAT','SQUELETTE'),
PRESENT_PRESENT('ACCE_MONO_APPUI','DIRECTION'),),
- RESU_GENE =SIMP(statut='f',typ=(tran_gene,mode_gene,mode_cycl,harm_gene ) ),
- RESULTAT =SIMP(statut='f',typ=mode_meca ),
+ RESULTAT =SIMP(statut='f',typ=(evol_elas,evol_noli,dyna_trans,evol_char,
+ mode_meca,mode_stat_depl,base_modale) ),
+ RESU_GENE =SIMP(statut='f',typ=(tran_gene,mode_gene,mode_cycl,harm_gene) ),
+ RESU_PHYS =SIMP(statut='f',typ=evol_noli ),
+ BASE_MODALE =SIMP(statut='f',typ=(base_modale,mode_meca) ),
+ NUME_DDL =SIMP(statut='f',typ=nume_ddl_sdaster ),
MODE_MECA =SIMP(statut='f',typ=mode_meca ),
TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**' ),
+ NUME_MODE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**' ),
TOUT_INST =SIMP(statut='f',typ='TXM',into=("OUI",) ),
INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ),
LIST_INST =SIMP(statut='f',typ=listr8_sdaster ),
ACCE_MONO_APPUI =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
DIRECTION =SIMP(statut='f',typ='R',min=3,max=3 ),
+ CYCLIQUE =FACT(statut='f',max='**',
+ NB_SECTEUR =SIMP(statut='f',typ='I',validators=NoRepeat(),max=1 ),
+ NUME_DIAMETRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max=1 ),
+ RESULTAT2 =SIMP(statut='f',typ=(evol_elas,evol_noli,dyna_trans,evol_char,
+ mode_meca,mode_stat_depl,base_modale) ),
+ ),
+
SQUELETTE =SIMP(statut='f',typ=squelette ),
SOUS_STRUC =SIMP(statut='f',typ='TXM' ),
SECTEUR =SIMP(statut='f',typ='I',defaut= 1 ),
TITRE =SIMP(statut='f',typ='TXM',max='**' ),
) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 03/01/2006 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
-REST_SPEC_PHYS=OPER(nom="REST_SPEC_PHYS",op= 148,sd_prod=tabl_intsp,
+REST_SPEC_PHYS=OPER(nom="REST_SPEC_PHYS",op= 148,sd_prod=table_sdaster,
reentrant='n',
+ fr="Calculer la réponse d'une structure dans la base physique",
UIinfo={"groupes":("Matrices/vecteurs",)},
regles=(AU_MOINS_UN('BASE_ELAS_FLUI','MODE_MECA'),),
BASE_ELAS_FLUI =SIMP(statut='f',typ=melasflu_sdaster ),
MODE_MECA =SIMP(statut='f',typ=mode_meca ),
BANDE =SIMP(statut='f',typ='R',min=2,validators=NoRepeat(),max=2 ),
NUME_ORDRE =SIMP(statut='f',typ='I' ,validators=NoRepeat(),max='**' ),
- INTE_SPEC_GENE =SIMP(statut='o',typ=tabl_intsp ),
+ INTE_SPEC_GENE =SIMP(statut='o',typ=table_sdaster),
NOEUD =SIMP(statut='o',typ=no ,max='**'),
MAILLE =SIMP(statut='f',typ=ma ,max='**'),
NOM_CMP =SIMP(statut='o',typ='TXM',max='**'),
into=("DIAG_TOUT","DIAG_DIAG","TOUT_TOUT","TOUT_DIAG") ),
TITRE =SIMP(statut='f',typ='TXM',max='**' ),
) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
+#& MODIF COMMANDE DATE 15/05/2006 AUTEUR ASSIRE A.ASSIRE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
reentrant='n',
UIinfo={"groupes":("Outils métier",)},
fr="Outil de post-traitement interactif Stanley ",
- RESULTAT =SIMP(statut='f',typ=(evol_elas,evol_noli,evol_ther) ),
+ RESULTAT =SIMP(statut='f',typ=(evol_elas,evol_noli,evol_ther,mode_meca,mode_stat,dyna_harmo,dyna_trans) ),
MODELE =SIMP(statut='f',typ=modele_sdaster),
CHAM_MATER =SIMP(statut='f',typ=cham_mater),
CARA_ELEM =SIMP(statut='f',typ=cara_elem),
+ DISPLAY =SIMP(statut='f',typ='TXM'),
+ UNITE_VALIDATION=SIMP(statut='c',typ='I',val_min=10,val_max=90,
+ fr="Unité logique définissant le fichier (fort.N) dans lequel on écrit les md5"),
+
) ;
-#& MODIF COMMANDE DATE 01/04/2005 AUTEUR VABHHTS J.PELLET
+#& MODIF COMMANDE DATE 16/05/2006 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
-# RESPONSABLE PBADEL P.BADEL
+# RESPONSABLE MABBAS M.ABBAS
STAT_NON_LINE=OPER(nom="STAT_NON_LINE",op=70,sd_prod=evol_noli,
- fr="Analyse mécanique statique non linéaire",
+ fr="Calcul de l'évolution mécanique ou thermo-hydro-mécanique couplée, en quasi-statique,"
+ +" d'une structure en non linéaire",
reentrant='f',
UIinfo={"groupes":("Résolution",)},
- regles=(AU_MOINS_UN('COMP_INCR','COMP_ELAS'),),
+ regles=(AU_MOINS_UN('COMP_INCR','COMP_ELAS'),
+ CONCEPT_SENSIBLE('ENSEMBLE'),),
MODELE =SIMP(statut='o',typ=modele_sdaster),
CHAM_MATER =SIMP(statut='o',typ=cham_mater),
CARA_ELEM =SIMP(statut='f',typ=cara_elem),
TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
MAILLE =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**',),
),
- VARI_COMM =FACT(statut='f',
- regles=(AU_MOINS_UN('IRRA','CORROSION'),),
- IRRA =SIMP(statut='f',typ=evol_varc),
- CORROSION =SIMP(statut='f',typ=carte_corr_r),
- ),
COMP_INCR =C_COMP_INCR(),
COMP_ELAS =FACT(statut='f',max='**',
+ RESI_INTE_RELA =SIMP(statut='f',typ='R',defaut= 1.0E-6),
+ ITER_INTE_MAXI =SIMP(statut='f',typ='I',defaut= 10 ),
+ ITER_INTE_PAS =SIMP(statut='f',typ='I',defaut= 0 ),
+ RESO_INTE =SIMP(statut='f',typ='TXM',defaut="IMPLICITE",
+ into=("RUNGE_KUTTA_2","RUNGE_KUTTA_4","IMPLICITE")),
RELATION =SIMP(statut='o',typ='TXM',defaut="ELAS",
into=("ELAS","ELAS_VMIS_LINE","ELAS_VMIS_TRAC",
- "ELAS_POUTRE_GR","CABLE")),
+ "ELAS_POUTRE_GR","CABLE","ELAS_HYPER")),
ELAS =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
ELAS_VMIS_TRAC =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
ELAS_VMIS_LINE =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
+ ELAS_HYPER =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
ELAS_POUTRE_GR =SIMP(statut='c',typ='I',defaut=3,into=(3,)),
CABLE =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
DEFORMATION =SIMP(statut='f',typ='TXM',defaut="PETIT" ,into=("PETIT","GREEN","GREEN_GR",) ),
EXCLUS('EVOL_NOLI','VARI',),
EXCLUS('EVOL_NOLI','VARI_NON_LOCAL',),
EXCLUS('NUME_ORDRE','INST'), ),
- DEPL =SIMP(statut='f',typ=cham_no_depl_r),
- SIGM =SIMP(statut='f',typ=(cham_elem_sief_r,carte_sief_r)),
- VARI =SIMP(statut='f',typ=cham_elem_vari_r),
- VARI_NON_LOCAL =SIMP(statut='f',typ=cham_no_vanl_r),
+ DEPL =SIMP(statut='f',typ=cham_no_sdaster),
+ SIGM =SIMP(statut='f',typ=(cham_elem,carte_sdaster)),
+ VARI =SIMP(statut='f',typ=cham_elem),
+ VARI_NON_LOCAL =SIMP(statut='f',typ=cham_no_sdaster),
EVOL_NOLI =SIMP(statut='f',typ=evol_noli),
NUME_ORDRE =SIMP(statut='f',typ='I'),
INST =SIMP(statut='f',typ='R'),
EXCLUS('EVOL_NOLI','VARI',),
EXCLUS('EVOL_NOLI','VARI_NON_LOCAL',),
EXCLUS('NUME_ORDRE','INST'), ),
- DEPL =SIMP(statut='f',typ=cham_no_depl_r),
- SIGM =SIMP(statut='f',typ=(cham_elem_sief_r,carte_sief_r)),
- VARI =SIMP(statut='f',typ=cham_elem_vari_r),
- VARI_NON_LOCAL =SIMP(statut='f',typ=cham_no_vanl_r),
+ DEPL =SIMP(statut='f',typ=cham_no_sdaster),
+ SIGM =SIMP(statut='f',typ=(cham_elem,carte_sdaster)),
+ VARI =SIMP(statut='f',typ=cham_elem),
+ VARI_NON_LOCAL =SIMP(statut='f',typ=cham_no_sdaster),
EVOL_NOLI =SIMP(statut='f',typ=evol_noli),
NUME_ORDRE =SIMP(statut='f',typ='I'),
INST =SIMP(statut='f',typ='R'),
ITER_GLOB_MAXI =SIMP(statut='f',typ='I',defaut=10),
ITER_GLOB_ELAS =SIMP(statut='f',typ='I',defaut=25),
ARRET =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")),
- RESI_INTE_RELA =SIMP(statut='f',typ='R'
- ,defaut= 1.0E-6),
- ITER_INTE_MAXI =SIMP(statut='f',typ='I',defaut= 10 ),
- ITER_INTE_PAS =SIMP(statut='f',typ='I',defaut= 0 ),
- RESO_INTE =SIMP(statut='f',typ='TXM',defaut="IMPLICITE",
- into=("RUNGE_KUTTA_2","RUNGE_KUTTA_4","IMPLICITE")),
),
- PARM_THETA =SIMP(statut='f',typ='R'
- ,defaut= 1. ),
+ PARM_THETA =SIMP(statut='f',typ='R',defaut= 1. ),
SOLVEUR =FACT(statut='d',
- METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC","MUMPS") ),
+ METHODE=SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC","MUMPS","FETI") ),
b_mult_front =BLOC(condition = "METHODE == 'MULT_FRONT' ",fr="Paramètres de la méthode multi frontale",
RENUM =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ),
),
PCENT_PIVOT =SIMP(statut='f',typ='I',defaut=20,),
RESI_RELA =SIMP(statut='f',typ='R',defaut=-1.,),
),
+ b_feti =BLOC(condition = "METHODE == 'FETI' ",fr="Paramètres de la méthode FETI 1",
+ PARTITION =SIMP(statut='o',typ=sd_feti_sdaster),
+ RENUM =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ),
+ RESI_RELA =SIMP(statut='f',typ='R',defaut=1.E-6,val_min=0.),
+ NMAX_ITER =SIMP(statut='f',typ='I',defaut=0,val_min=0),
+ TYPE_REORTHO_DD =SIMP(statut='f',typ='TXM',defaut="GSM",into=("SANS","GS","GSM","IGSM") ),
+ NB_REORTHO_DD =SIMP(statut='f',typ='I',defaut=0,val_min=0),
+ NB_REORTHO_INST =SIMP(statut='f',typ='I',defaut=0,val_min=0),
+ PRE_COND =SIMP(statut='f',typ='TXM',defaut="LUMPE",into=("LUMPE","SANS") ),
+ SCALING =SIMP(statut='f',typ='TXM',defaut="MULT",into=("SANS","MULT") ),
+ VERIF_SDFETI =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+ TEST_CONTINU =SIMP(statut='f',typ='R',defaut=1.E-8,val_min=0.),
+ INFO_FETI =SIMP(statut='f',typ='TXM',defaut='FFFFFFFFFFFFFFFFFFFFFFFF'),
+ STOCKAGE_GI =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON","CAL") ),
+ NB_SD_PROC0 =SIMP(statut='f',typ='I',defaut=0,val_min=0),
+ ACCELERATION_SM =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
+ ),
SYME =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
),
ARCHIVAGE =FACT(statut='f',
regles=(UN_PARMI('NOEUD','GROUP_NO','MAILLE'),
PRESENT_PRESENT('MAILLE','POINT'),),
NOM_CHAM =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',into=("DEPL","VITE","ACCE","SIEF_ELGA",
- "VARI_ELGA","DEPL_ABSOLU","VITE_ABSOLU","ACCE_ABSOLU")),
+ "VARI_ELGA","DEPL_ABSOLU","VITE_ABSOLU","ACCE_ABSOLU","VALE_CONT")),
NOM_CMP =SIMP(statut='o',typ='TXM',max='**' ),
LIST_ARCH =SIMP(statut='f',typ=listis_sdaster),
LIST_INST =SIMP(statut='f',typ=listr8_sdaster),
MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
POINT =SIMP(statut='f',typ='I' ,validators=NoRepeat(),max='**'),
),
+
+ SUIVI_DDL = FACT(statut='f',max=4,
+ regles=(UN_PARMI('NOEUD','MAILLE'),
+ PRESENT_PRESENT('MAILLE','POINT'),),
+ NUME_SUIVI =SIMP(statut='o',typ='I' ,min=1,max=4),
+ NOM_CHAM =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=1,
+ into=("DEPL","VITE","ACCE","SIEF_ELGA",
+ "VARI_ELGA","FORC_NODA","DEPL_ABSOLU","VITE_ABSOLU","ACCE_ABSOLU",)),
+ NOM_CMP =SIMP(statut='o',typ='TXM',max=1 ),
+ NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max=1),
+ MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max=1),
+ POINT =SIMP(statut='f',typ='I' ,validators=NoRepeat(),max=1),
+ ),
+
+ AFFICHAGE = FACT(statut='f',max=16,
+
+ UNITE = SIMP(statut='f',typ='I',val_min=1),
+
+ LONG_R = SIMP(statut='f',typ='I',defaut=12,val_min=1,val_max=12),
+ PREC_R = SIMP(statut='f',typ='I',defaut=5, val_min=1,val_max=8),
+ LONG_I = SIMP(statut='f',typ='I',defaut=6, val_min=1,val_max=12),
+
+ NOM_COLONNE = SIMP(statut='o',typ='TXM',defaut="STANDARD",
+ into=("STANDARD","MINIMUM",
+ "ITER_NEWT",
+ "INCR_TPS",
+ "RESI_RELA","RELA_NOEU",
+ "RESI_MAXI","MAXI_NOEU",
+ "RESI_REFE","REFE_NOEU",
+ "RELI_ITER","RELI_COEF",
+ "PILO_PARA",
+ "LAGR_ECAR","LAGR_INCR","LAGR_ITER",
+ "MATR_ASSE",
+ "ITER_DEBO",
+ "CTCD_ITER","CTCD_INFO","CTCD_GEOM","CTCD_NOEU",
+ "CTCC_GEOM","CTCC_FROT","CTCC_CONT",
+ "SUIV_1","SUIV_2","SUIV_3","SUIV_4","ITER_FETI",
+ ),
+ ),
+ b_residu = BLOC(condition = " NOM_COLONNE == 'RESI_RELA' or \
+ NOM_COLONNE == 'RESI_MAXI' or\
+ NOM_COLONNE == 'RESI_REFE' or\
+ NOM_COLONNE == 'CTCD_GEOM' or\
+ NOM_COLONNE == 'STANDARD' ",
+ INFO_RESIDU = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
+ ),
+ ),
+
+
+
CRIT_FLAMB =FACT(statut='f',min=1,max=1,
NB_FREQ =SIMP(statut='f',typ='I',max=1,defaut=3),
CHAR_CRIT =SIMP(statut='f',typ='R',min=2,max=2,defaut=(-10.0,10),
),
INFO =SIMP(statut='f',typ='I',into=(1,2) ),
TITRE =SIMP(statut='f',typ='TXM',max='**' ),
- ) ;
-#& MODIF COMMANDE DATE 05/10/2004 AUTEUR CIBHHLV L.VIVAN
+ )
+
+#& MODIF COMMANDE DATE 22/05/2006 AUTEUR MCOURTOI M.COURTOIS
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
TEST_FICHIER=MACRO(nom="TEST_FICHIER", op=test_fichier_ops,
UIinfo={"groupes":("Impression",)},
-
- UNITE =SIMP(statut='f',typ='I',defaut=8),
+ fr="Tester la non régression de fichiers produits par des commandes aster",
FICHIER =SIMP(statut='o',typ='TXM',validators=LongStr(1,255)),
- NB_CHIFFRE =SIMP(statut='f',typ='I',defaut=6),
- EPSILON =SIMP(statut='f',typ='R',defaut=1.E-14),
+ NB_CHIFFRE =SIMP(statut='o',typ='I',), # defaut=6 pas de defaut, il faut
+ EPSILON =SIMP(statut='o',typ='R',), # defaut=1.E-12 se poser la question !
EXPR_IGNORE =SIMP(statut='f',typ='TXM',max='**',
fr="Liste d'expressions régulières permettant d'ignorer certaines lignes"),
VALE_K =SIMP(statut='o',typ='TXM' ),
INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
)
-#& MODIF COMMANDE DATE 23/08/2004 AUTEUR CIBHHLV L.VIVAN
+#& MODIF COMMANDE DATE 10/05/2006 AUTEUR MCOURTOI M.COURTOIS
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
# RESPONSABLE MCOURTOI M.COURTOIS
-TEST_FONCTION=PROC(nom="TEST_FONCTION",op= 135,fr="Extraction d une valeur numérique ou d un attribut de fonction",
+TEST_FONCTION=PROC(nom="TEST_FONCTION",op= 135,
+ fr="Extraction d'une valeur numérique ou d'un attribut de fonction pour comparaison à une valeur de référence",
UIinfo={"groupes":("Impression",)},
- UNITE =SIMP(statut='f',typ='I',defaut=8),
TEST_NOOK =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
VALEUR =FACT(statut='f',max='**',
fr="Tester la valeur d une fonction ou d une nappe",
- regles=(UN_PARMI('VALE_REFE','VALE_REFE_C', ),),
+ regles=(UN_PARMI('VALE_REFE','VALE_REFE_C',),
+ DERIVABLE('FONCTION'),),
FONCTION =SIMP(statut='o',typ=(fonction_sdaster,fonction_c,nappe_sdaster,formule) ),
+ SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),
+ fr="Paramètre de sensibilité.",
+ ang="Sensitivity parameter"),
NOM_PARA =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=2),
VALE_PARA =SIMP(statut='o',typ='R' ,validators=NoRepeat(),max=2),
VALE_REFE =SIMP(statut='f',typ='R' ),
VALE_REFE_C =SIMP(statut='f',typ='C' ),
+ VALE_ABS =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
CRITERE =SIMP(statut='f',typ='TXM',fr="Critère de comparaison avec la solution de référence",
defaut="RELATIF",into=("RELATIF","ABSOLU") ),
PRECISION =SIMP(statut='f',typ='R',fr="Ecart maximal autorisé avec la solution de référence",
TABL_INTSP =FACT(statut='f',max='**',
fr="Tester la valeur d une fonction contenue dans une table interspectrale",
regles=(UN_PARMI('NUME_ORDRE_I','NOEUD_I'),),
- INTE_SPEC =SIMP(statut='o',typ=tabl_intsp ),
+ INTE_SPEC =SIMP(statut='o',typ=table_sdaster),
NOEUD_I =SIMP(statut='f',typ=no),
NUME_ORDRE_I =SIMP(statut='f',typ='I' ),
b_nume_ordre_i = BLOC (condition = "NUME_ORDRE_I != None",
),
),
) ;
-#& MODIF COMMANDE DATE 09/05/2005 AUTEUR CIBHHLV L.VIVAN
+#& MODIF COMMANDE DATE 16/05/2006 AUTEUR REZETTE C.REZETTE
# RESPONSABLE VABHHTS J.PELLET
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# ======================================================================
TEST_RESU=PROC(nom="TEST_RESU",op=23,
UIinfo={"groupes":("Impression",)},
- fr="Extraction d une valeur et comparaison à une valeur de référence",
+ fr="Extraction d'une valeur d'une structure de donnée et comparaison à une valeur de référence",
regles=(AU_MOINS_UN('CHAM_NO','CHAM_ELEM','RESU','GENE','OBJET')),
- UNITE =SIMP(statut='f',typ='I',defaut=8),
CHAM_NO =FACT(statut='f',max='**',
regles=(UN_PARMI('NOEUD','GROUP_NO','TYPE_TEST'),
VALE =SIMP(statut='f',typ='R'),
VALE_I =SIMP(statut='f',typ='I'),
VALE_C =SIMP(statut='f',typ='C'),
+ VALE_ABS =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")),
PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3),
REFERENCE =SIMP(statut='f',typ='TXM',into=("ANALYTIQUE","SOURCE_EXTERNE",
PRESENT_PRESENT('GROUP_NO','NOM_CMP'),
PRESENT_PRESENT('POINT','NOM_CMP'),
UN_PARMI('VALE','VALE_I','VALE_C'), ),
- CHAM_GD =SIMP(statut='o',typ=cham_elem_sdaster),
+ CHAM_GD =SIMP(statut='o',typ=cham_elem),
MAILLE =SIMP(statut='f',typ=ma),
POINT =SIMP(statut='f',typ='I' ),
SOUS_POINT =SIMP(statut='f',typ='I'),
VALE =SIMP(statut='f',typ='R' ),
VALE_I =SIMP(statut='f',typ='I' ),
VALE_C =SIMP(statut='f',typ='C' ),
+ VALE_ABS =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")),
PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3 ),
REFERENCE =SIMP(statut='f',typ='TXM',into=("ANALYTIQUE","SOURCE_EXTERNE",
PRESENT_PRESENT('NOEUD','NOM_CMP'),
PRESENT_PRESENT('GROUP_NO','NOM_CMP'),
PRESENT_PRESENT('POINT','NOM_CMP'),
- UN_PARMI('VALE','VALE_I','VALE_C') ,),
+ UN_PARMI('VALE','VALE_I','VALE_C'),
+ DERIVABLE('RESULTAT'),),
RESULTAT =SIMP(statut='o',typ=resultat_sdaster),
SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),
fr="Paramètre de sensibilité.",
VALE =SIMP(statut='f',typ='R'),
VALE_I =SIMP(statut='f',typ='I'),
VALE_C =SIMP(statut='f',typ='C'),
+ VALE_ABS =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
CRITERE =SIMP(statut='f',typ='TXM',into=("RELATIF","ABSOLU"),max=2),
PRECISION =SIMP(statut='f',typ='R',max=2),
REFERENCE =SIMP(statut='f',typ='TXM',into=("ANALYTIQUE","SOURCE_EXTERNE",
GENE =FACT(statut='f',max='**',
regles=(UN_PARMI('VALE','VALE_I','VALE_C') ,),
- RESU_GENE =SIMP(statut='o',typ=(vect_asse_gene_r, tran_gene, mode_gene, harm_gene)),
- b_vect_asse =BLOC(condition = "AsType(RESU_GENE) == vect_asse_gene_r",
+ RESU_GENE =SIMP(statut='o',typ=(vect_asse_gene, tran_gene, mode_gene, harm_gene)),
+ b_vect_asse =BLOC(condition = "AsType(RESU_GENE) == vect_asse_gene",
NUME_CMP_GENE =SIMP(statut='o',typ='I'),
),
b_mode =BLOC(condition = "(AsType(RESU_GENE) == harm_gene) or (AsType(RESU_GENE) == mode_gene)",
VALE =SIMP(statut='f',typ='R'),
VALE_I =SIMP(statut='f',typ='I'),
VALE_C =SIMP(statut='f',typ='C'),
+ VALE_ABS =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
CRITERE =SIMP(statut='f',typ='TXM',into=("RELATIF","ABSOLU"),max=2),
PRECISION =SIMP(statut='f',typ='R',max=2),
REFERENCE =SIMP(statut='f',typ='TXM',into=("ANALYTIQUE","SOURCE_EXTERNE",
VALE =SIMP(statut='f',typ='R'),
VALE_I =SIMP(statut='f',typ='I'),
VALE_C =SIMP(statut='f',typ='C'),
+ VALE_ABS =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")),
PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3 ),
REFERENCE =SIMP(statut='f',typ='TXM',into=("ANALYTIQUE","SOURCE_EXTERNE",
VERSION =SIMP(statut='f',typ='TXM' ),
),
) ;
-#& MODIF COMMANDE DATE 23/08/2004 AUTEUR CIBHHLV L.VIVAN
+#& MODIF COMMANDE DATE 10/05/2006 AUTEUR MCOURTOI M.COURTOIS
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# RESPONSABLE VABHHTS J.PELLET
TEST_TABLE=PROC(nom="TEST_TABLE",op= 177,
UIinfo={"groupes":("Impression",)},
- regles=(UN_PARMI('VALE','VALE_I','VALE_C', ),),
- UNITE =SIMP(statut='f',typ='I',defaut=8),
+ fr="Tester une cellule ou une colonne d'une table",
+ regles=(UN_PARMI('VALE','VALE_I','VALE_C', ),
+ DERIVABLE('TABLE'),),
# concept table_sdaster à tester
TABLE =SIMP(statut='o',typ=table_sdaster),
VALE =SIMP(statut='f',typ='R' ),
VALE_I =SIMP(statut='f',typ='I' ),
VALE_C =SIMP(statut='f',typ='C' ),
+ VALE_ABS =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
PRECISION =SIMP(statut='f',typ='R',defaut= 1.2E-3 ),
REFERENCE =SIMP(statut='f',typ='TXM',
INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
),
) ;
-#& MODIF COMMANDE DATE 01/04/2005 AUTEUR VABHHTS J.PELLET
+#& MODIF COMMANDE DATE 10/05/2006 AUTEUR MCOURTOI M.COURTOIS
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# ======================================================================
THER_LINEAIRE=OPER(nom="THER_LINEAIRE",op=25,sd_prod=evol_ther,reentrant='f',
UIinfo={"groupes":("Résolution",)},
- fr="Analyse thermique linéaire stationnaire ou transitoire",
+ fr="Résoudre un problème thermique linéaire stationnaire ou transitoire",
+ regles=(CONCEPT_SENSIBLE('ENSEMBLE'),),
MODELE =SIMP(statut='o',typ=modele_sdaster),
CHAM_MATER =SIMP(statut='o',typ=cham_mater),
CARA_ELEM =SIMP(statut='f',typ=cara_elem),
regles=(EXCLUS('STATIONNAIRE','EVOL_THER','CHAM_NO','VALE'),),
STATIONNAIRE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
EVOL_THER =SIMP(statut='f',typ=evol_ther),
- CHAM_NO =SIMP(statut='f',typ=cham_no_temp_r),
+ CHAM_NO =SIMP(statut='f',typ=cham_no_sdaster),
VALE =SIMP(statut='f',typ='R'),
NUME_INIT =SIMP(statut='f',typ='I'),
),
TITRE =SIMP(statut='f',typ='TXM',max='**'),
INFO =SIMP(statut='f',typ='I',into=(1,2)),
) ;
-#& MODIF COMMANDE DATE 01/04/2005 AUTEUR VABHHTS J.PELLET
+#& MODIF COMMANDE DATE 10/05/2006 AUTEUR MCOURTOI M.COURTOIS
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# ======================================================================
THER_NON_LINE=OPER(nom="THER_NON_LINE",op= 186,sd_prod=evol_ther,reentrant='f',
UIinfo={"groupes":("Résolution",)},
- fr="Analyse thermique non linéaire stationnaire ou transitoire" ,
+ fr="Résoudre un problème thermique non linéaire (conditions limites ou comportement matériau)"
+ +" stationnaire ou transitoire" ,
+ regles=(CONCEPT_SENSIBLE('ENSEMBLE'),),
MODELE =SIMP(statut='o',typ=(modele_sdaster) ),
CHAM_MATER =SIMP(statut='o',typ=(cham_mater) ),
CARA_ELEM =SIMP(statut='c',typ=(cara_elem) ),
"SECH_BAZANT",
"SECH_NAPPE"
) ),
- regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),),
+ regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),),
TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
regles=(EXCLUS('STATIONNAIRE','EVOL_THER','CHAM_NO','VALE'),),
STATIONNAIRE =SIMP(statut='f',typ='TXM',into=("OUI",)),
EVOL_THER =SIMP(statut='f',typ=evol_ther),
- CHAM_NO =SIMP(statut='f',typ=cham_no_temp_r),
+ CHAM_NO =SIMP(statut='f',typ=cham_no_sdaster),
VALE =SIMP(statut='f',typ='R'),
NUME_INIT =SIMP(statut='f',typ='I'),
),
INFO =SIMP(statut='f',typ='I',into=(1,2) ),
) ;
-#& MODIF COMMANDE DATE 30/06/2004 AUTEUR MCOURTOI M.COURTOIS
+#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
# ======================================================================
THER_NON_LINE_MO=OPER(nom="THER_NON_LINE_MO",op= 171,sd_prod=evol_ther,
- fr="Thermique non lineaire en repere mobile",
+ fr="Résoudre un problème thermique non linéaire (conditions limites ou comportement matériau)"
+ +" stationnaire avec chargement mobile",
reentrant='n',
UIinfo={"groupes":("Résolution",)},
MODELE =SIMP(statut='o',typ=modele_sdaster ),
-#@ MODIF ops Cata DATE 17/05/2005 AUTEUR DURAND C.DURAND
+#@ MODIF ops Cata DATE 08/11/2005 AUTEUR D6BHHJP J.P.LEFEBVRE
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
except:
pass
-def DEBUT(self,PAR_LOT,CODE,**args):
+def DEBUT(self,PAR_LOT,IMPR_MACRO,CODE,DEBUG,**args):
"""
Fonction sdprod de la macro DEBUT
"""
if self.jdc is not self.parent :
raise Accas.AsException("La commande DEBUT ne peut exister qu'au niveau jdc")
+ self.jdc.impr_macro=IMPR_MACRO
+ self.jdc.jxveri=0
+ if DEBUG!=None :
+ if DEBUG['JXVERI']=='OUI' : self.jdc.jxveri=1
self.jdc.set_par_lot(PAR_LOT)
if CODE!=None :
self.jdc.fico=CODE['NOM']
self.definition.op=None
return ier
-def POURSUITE(self,PAR_LOT,CODE,**args):
+def POURSUITE(self,PAR_LOT,IMPR_MACRO,CODE,DEBUG,**args):
"""
Fonction sdprod de la macro POURSUITE
"""
if self.jdc is not self.parent :
raise Accas.AsException("La commande POURSUITE ne peut exister qu'au niveau jdc")
+ self.jdc.impr_macro=IMPR_MACRO
self.jdc.set_par_lot(PAR_LOT)
+ self.jdc.jxveri=0
+ if DEBUG!=None :
+ if DEBUG['JXVERI']=='OUI' : self.jdc.jxveri=1
if CODE!=None :
self.jdc.fico=CODE['NOM']
else:
self.definition.op=None
# On demande la numerotation de la commande POURSUITE avec l'incrément
# lonuti pour qu'elle soit numérotée à la suite des commandes existantes.
- self.set_icmd(lonuti)
+####CD self.set_icmd(lonuti)
pos=0
d={}
while pos+80 < len(concepts)+1:
# Pour POURSUITE on ne modifie pas la valeur initialisee dans ops.POURSUITE
# Il n y a pas besoin d executer self.codex.poursu (c'est deja fait dans
# la fonction sdprod de la commande (ops.POURSUITE))
+ self.set_icmd(1)
self.jdc.UserError=self.codex.error
return 0
Fonction ops de la macro DEFI_FICHIER
"""
ier=0
- self.set_icmd(None)
+ self.set_icmd(1)
icmd=0
ier=self.codex.opsexe(self,icmd,-1,26)
return ier
+++ /dev/null
-#@ MODIF __init__ Macro DATE 20/09/2004 AUTEUR DURAND C.DURAND
-# -*- coding: iso-8859-1 -*-
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-#
-#
-# ======================================================================
+++ /dev/null
-#@ MODIF calc_fonction_ops Macro DATE 19/09/2005 AUTEUR DURAND C.DURAND
-# -*- coding: iso-8859-1 -*-
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2005 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-
-
-def tocomplex(arg):
- if arg[0]=='RI' : return complex(arg[1],arg[2])
- if arg[0]=='MP' : return complex(arg[1]*cos(arg[2]),arg[1]*sin(arg[2]))
-
-def calc_fonction_ops(self,FFT,DERIVE,INTEGRE,LISS_ENVELOP,
- SPEC_OSCI,ABS,COMB,COMB_C,COMPOSE,EXTRACTION,
- ENVELOPPE,ASSE,CORR_ACCE,PUISSANCE,INVERSE,
- NOM_PARA,NOM_RESU,INTERPOL,PROL_DROITE,
- PROL_GAUCHE,NOM_PARA_FONC,INTERPOL_FONC,PROL_DROITE_FONC,
- PROL_GAUCHE_FONC,**args):
- """
- Ecriture de la macro CALC_FONCTION
- """
- ier=0
- import types
- import string
- import copy
- from math import pi
- from Utilitai.t_fonction import t_fonction,t_fonction_c,t_nappe
- from Utilitai import liss_enveloppe
- from Accas import _F
- from Cata.cata import nappe_sdaster,fonction_sdaster,fonction_c
- from Utilitai.Utmess import UTMESS
- from Numeric import alltrue,less,array,reshape,cos,sin,exp,sqrt
- from Numeric import choose,zeros,Float
- import aster_fonctions
- EnumType = (types.ListType,types.TupleType)
-
- ### On importe les definitions des commandes a utiliser dans la macro
- DEFI_FONCTION = self.get_cmd('DEFI_FONCTION')
- DEFI_NAPPE = self.get_cmd('DEFI_NAPPE')
-
- ### Comptage commandes + déclaration concept sortant
- self.set_icmd(1)
- self.DeclareOut('C_out',self.sd)
-
- ### type de traitement
- ###
- if (INTEGRE != None):
- __ff=INTEGRE['FONCTION'].convert()
- if INTEGRE['METHODE']=='TRAPEZE' : __ex=__ff.trapeze(INTEGRE['COEF'])
- if INTEGRE['METHODE']=='SIMPSON' : __ex=__ff.simpson(INTEGRE['COEF'])
- ###
- if (DERIVE != None):
- __ff=DERIVE['FONCTION'].convert()
- __ex=__ff.derive()
- ###
- if (INVERSE != None):
- __ff=INVERSE['FONCTION'].convert()
- __ex=__ff.inverse()
- ###
- if (ABS != None):
- __ff=ABS['FONCTION'].convert()
- __ex=__ff.abs()
- ###
- if (COMPOSE != None):
- __ff=COMPOSE['FONC_RESU'].convert()
- __fg=COMPOSE['FONC_PARA'].convert()
- __ex=__ff[__fg]
- ###
- if (ASSE != None):
- __f0=ASSE['FONCTION'][0].convert()
- __f1=ASSE['FONCTION'][1].convert()
- __ex=__f0.cat(__f1,ASSE['SURCHARGE'])
- ###
- if (COMB != None):
- list_fonc=[]
- if isinstance(self.sd,nappe_sdaster):
- for mcfact in COMB :
- list_fonc.append(mcfact['FONCTION'].convert())
- list_fonch=[]
- for f in list_fonc :
- __ex=f
- for g in list_fonc :
- __ex=__ex.homo_support(g)
- list_fonch.append(__ex)
- list_fonc=list_fonch
- elif isinstance(self.sd,fonction_sdaster):
- for mcfact in COMB :
- __ex=mcfact['FONCTION'].convert()
- list_fonc.append(__ex)
-
- __ex=list_fonc[0]
- __ex=__ex*COMB[0]['COEF']
- i=1
- for item in list_fonc[1:] :
- item=item*COMB[i]['COEF']
- __ex=__ex+item
- i=i+1
- ###
- if (COMB_C != None):
- list_fonc=[]
- if isinstance(self.sd,nappe_sdaster):
- for mcfact in COMB_C :
- list_fonc.append(mcfact['FONCTION'].convert())
- list_fonch=[]
- for f in list_fonc :
- __ex=f
- for g in list_fonc :
- __ex=__ex.homo_support(g)
- list_fonch.appen(__ex)
- list_fonc=list_fonch
- elif isinstance(self.sd,fonction_sdaster) or isinstance(self.sd,fonction_c):
- for mcfact in COMB_C :
- __ex=mcfact['FONCTION'].convert(arg='complex')
- list_fonc.append(__ex)
-
- __ex=list_fonc[0]
- if COMB_C[0]['COEF_R']!=None: __ex=__ex*complex(COMB_C[0]['COEF_R'])
- if COMB_C[0]['COEF_C']!=None:
- if type(COMB_C[0]['COEF_C']) in EnumType : __ex=__ex*tocomplex(COMB_C[0]['COEF_C'])
- else : __ex=__ex*COMB_C[0]['COEF_C']
- i=1
- for item in list_fonc[1:] :
- if COMB_C[i]['COEF_R']!=None: coef=complex(COMB_C[i]['COEF_R'])
- if COMB_C[i]['COEF_C']!=None:
- if type(COMB_C[i]['COEF_C']) in EnumType : coef=tocomplex(COMB_C[i]['COEF_C'])
- else : coef=COMB_C[i]['COEF_C']
- item=item*coef
- __ex=__ex+item
- i=i+1
- ### mot clé LIST_PARA uniquement présent si COMB ou COMB_C
- if (COMB != None) or (COMB_C != None) :
- if (args['LIST_PARA'] != None) :
- __ex=__ex.evalfonc(args['LIST_PARA'].Valeurs())
- ###
- if (PUISSANCE != None):
- __ff=PUISSANCE['FONCTION'].convert()
- __ex=__ff
- for i in range(PUISSANCE['EXPOSANT']-1) : __ex=__ex*__ff
- ###
- if (EXTRACTION != None):
- if EXTRACTION['PARTIE']=='REEL' : __ex=EXTRACTION['FONCTION'].convert(arg='real')
- if EXTRACTION['PARTIE']=='IMAG' : __ex=EXTRACTION['FONCTION'].convert(arg='imag')
- if EXTRACTION['PARTIE']=='MODULE' : __ex=EXTRACTION['FONCTION'].convert(arg='modul')
- if EXTRACTION['PARTIE']=='PHASE' : __ex=EXTRACTION['FONCTION'].convert(arg='phase')
- ###
- if (ENVELOPPE != None):
- list_fonc=[]
- l_env=ENVELOPPE['FONCTION']
- if type(l_env) not in EnumType : l_env=(l_env,)
- if isinstance(self.sd,nappe_sdaster):
- for f in l_env : list_fonc.append(f.convert())
- list_fonch=[]
- for f in list_fonc :
- __ff=f
- for g in list_fonc :
- __ff=__ff.homo_support(g)
- list_fonch.append(__ff)
- list_fonc=list_fonch
- vale_para=list_fonc[0].vale_para
- para =list_fonc[0].para
- l_fonc_f =[]
- for i in range(len(vale_para)):
- __ff=list_fonc[0].l_fonc[i]
- if ENVELOPPE['CRITERE']=='SUP' :
- for f in list_fonc[1:] : __ff=__ff.sup(f.l_fonc[i])
- if ENVELOPPE['CRITERE']=='INF' :
- for f in list_fonc[1:] : __ff=__ff.inf(f.l_fonc[i])
- l_fonc_f.append(__ff)
- __ex=t_nappe(vale_para,l_fonc_f,para)
- elif isinstance(self.sd,fonction_sdaster):
- for f in l_env : list_fonc.append(f.convert())
- __ex=list_fonc[0]
- if ENVELOPPE['CRITERE']=='SUP' :
- for f in list_fonc[1:] : __ex=__ex.sup(f)
- if ENVELOPPE['CRITERE']=='INF' :
- for f in list_fonc[1:] : __ex=__ex.inf(f)
- ###
- if (CORR_ACCE != None):
- __ex=CORR_ACCE['FONCTION'].convert()
- para=copy.copy(__ex.para)
- # suppression de la tendance de l accelero
- __ex=__ex.suppr_tend()
- # calcul de la vitesse
- __ex=__ex.trapeze(0.)
- # calcul de la tendance de la vitesse : y = a1*x +a0
- __ex=__ex.suppr_tend()
- if CORR_ACCE['CORR_DEPL']=='OUI':
- # suppression de la tendance deplacement
- # calcul du deplacement : integration
- __ex=__ex.trapeze(0.)
- # calcul de la tendance du déplacement : y = a1*x +a0
- __ex=__ex.suppr_tend()
- # regeneration de la vitesse : derivation
- __ex=__ex.derive()
- # regeneration de l accelero : derivation
- __ex=__ex.derive()
- __ex.para=para
- ###
- if (FFT != None):
- if isinstance(self.sd,fonction_c):
- __ff=FFT['FONCTION'].convert()
- __ex=__ff.fft(FFT['METHODE'])
- if isinstance(self.sd,fonction_sdaster):
- __ff=FFT['FONCTION'].convert(arg='complex')
- __ex=__ff.fft(FFT['METHODE'],FFT['SYME'])
- ###
- if (SPEC_OSCI != None):
- if SPEC_OSCI['AMOR_REDUIT']==None :
- l_amor=[0.02,0.05,0.1]
- UTMESS('I','CALC_FONCTION',' : génération par défaut de 3 amortissements :'+str(l_amor))
- else :
- if type(SPEC_OSCI['AMOR_REDUIT']) not in EnumType :
- l_amor=[SPEC_OSCI['AMOR_REDUIT'],]
- else : l_amor= SPEC_OSCI['AMOR_REDUIT']
- if SPEC_OSCI['FREQ']==None and SPEC_OSCI['LIST_FREQ']==None:
- l_freq=[]
- for i in range(56) : l_freq.append( 0.2+0.050*i)
- for i in range( 8) : l_freq.append( 3.0+0.075*i)
- for i in range(14) : l_freq.append( 3.6+0.100*i)
- for i in range(24) : l_freq.append( 5.0+0.125*i)
- for i in range(28) : l_freq.append( 8.0+0.250*i)
- for i in range( 6) : l_freq.append(15.0+0.500*i)
- for i in range( 4) : l_freq.append(18.0+1.000*i)
- for i in range(10) : l_freq.append(22.0+1.500*i)
- texte=[]
- for i in range(len(l_freq)/5) :
- texte.append(' %f %f %f %f %f' %tuple(l_freq[i*5:i*5+5]))
- UTMESS('I','CALC_FONCTION',' : génération par défaut de 150 fréquences :\n'+'\n'.join(texte))
- elif SPEC_OSCI['LIST_FREQ']!=None:
- l_freq=SPEC_OSCI['LIST_FREQ'].Valeurs()
- elif SPEC_OSCI['FREQ']!=None:
- if type(SPEC_OSCI['FREQ']) not in EnumType:
- l_freq=[SPEC_OSCI['FREQ'],]
- else : l_freq= SPEC_OSCI['FREQ']
- if abs(SPEC_OSCI['NORME'])<1.E-10 :
- UTMESS('S','CALC_FONCTION',' : SPEC_OSCI, la norme ne peut etre nulle')
- if SPEC_OSCI['NATURE_FONC']!='ACCE' :
- UTMESS('S','CALC_FONCTION',' : SPEC_OSCI, le type de la fonction doit etre ACCE')
- if SPEC_OSCI['METHODE']!='NIGAM' :
- UTMESS('S','CALC_FONCTION',' : SPEC_OSCI, seule la méthode NIGAM est codée')
- eps=1.e-6
- for amor in l_amor :
- if amor>(1-eps) :
- UTMESS('S','CALC_FONCTION',' : SPEC_OSCI, la méthode choisie '\
- 'suppose des amortissements sous-critiques, amor<1.')
-
- __ff=SPEC_OSCI['FONCTION'].convert()
-
- # appel à SPEC_OSCI
- spectr = aster_fonctions.SPEC_OSCI(__ff.vale_x, __ff.vale_y, l_freq, l_amor)
-
- # construction de la nappe
- vale_para = l_amor
- para = { 'INTERPOL' : ['LIN','LOG'],
- 'NOM_PARA_FONC' : 'FREQ',
- 'NOM_PARA' : 'AMOR',
- 'PROL_DROITE' : 'EXCLU',
- 'PROL_GAUCHE' : 'EXCLU',
- 'NOM_RESU' : SPEC_OSCI['NATURE'] }
- para_fonc = { 'INTERPOL' : ['LOG','LOG'],
- 'NOM_PARA' : 'FREQ',
- 'PROL_DROITE' : 'CONSTANT',
- 'PROL_GAUCHE' : 'EXCLU',
- 'NOM_RESU' : SPEC_OSCI['NATURE'] }
- if SPEC_OSCI['NATURE']=='DEPL' : ideb = 0
- elif SPEC_OSCI['NATURE']=='VITE' : ideb = 1
- else : ideb = 2
- l_fonc = []
- for iamor in range(len(l_amor)) :
- l_fonc.append(t_fonction(l_freq,spectr[iamor,ideb,:]/SPEC_OSCI['NORME'],para_fonc))
- __ex=t_nappe(vale_para,l_fonc,para)
- ###
- if (LISS_ENVELOP!= None):
- __ff=LISS_ENVELOP['NAPPE'].convert()
- sp_nappe=liss_enveloppe.nappe(listFreq=__ff.l_fonc[0].vale_x, listeTable=[f.vale_y for f in __ff.l_fonc], listAmor=__ff.vale_para, entete="")
- sp_lisse=liss_enveloppe.lissage(nappe=sp_nappe,fmin=LISS_ENVELOP['FREQ_MIN'],fmax=LISS_ENVELOP['FREQ_MAX'],elarg=LISS_ENVELOP['ELARG'],tole_liss=LISS_ENVELOP['TOLE_LISS'])
- para_fonc=__ff.l_fonc[0].para
- l_fonc=[]
- for val in sp_lisse.listTable :
- l_fonc.append(t_fonction(sp_lisse.listFreq,val,para_fonc))
- __ex=t_nappe(vale_para=sp_lisse.listAmor,l_fonc=l_fonc,para=__ff.para)
-
- ### creation de la fonction produite par appel à DEFI_FONCTION
- ### on récupère les paramètres issus du calcul de __ex
- ### et on les surcharge par ceux imposés par l'utilisateur
-
- if isinstance(__ex,t_fonction) or isinstance(__ex,t_fonction_c):
- para=__ex.para
- if NOM_PARA !=None : para['NOM_PARA'] =NOM_PARA
- if NOM_RESU !=None : para['NOM_RESU'] =NOM_RESU
- if PROL_DROITE!=None : para['PROL_DROITE']=PROL_DROITE
- if PROL_GAUCHE!=None : para['PROL_GAUCHE']=PROL_GAUCHE
- if INTERPOL !=None : para['INTERPOL'] =INTERPOL
- if isinstance(__ex,t_fonction_c): para['VALE_C'] = __ex.tabul()
- elif isinstance(__ex,t_fonction) : para['VALE'] = __ex.tabul()
- C_out=DEFI_FONCTION(**para)
- elif isinstance(__ex,t_nappe):
- def_fonc=[]
- for f in __ex.l_fonc :
- para=f.para
- def_fonc.append(_F(VALE =f.tabul(),
- INTERPOL =f.para['INTERPOL'],
- PROL_DROITE=f.para['PROL_DROITE'],
- PROL_GAUCHE=f.para['PROL_GAUCHE'],)
- )
- para=__ex.para
- if NOM_PARA !=None : para['NOM_PARA'] =NOM_PARA
- if NOM_RESU !=None : para['NOM_RESU'] =NOM_RESU
- if PROL_DROITE !=None : para['PROL_DROITE']=PROL_DROITE
- if PROL_GAUCHE !=None : para['PROL_GAUCHE']=PROL_GAUCHE
- if NOM_PARA_FONC !=None : para['NOM_PARA_FONC'] =INTERPOL
- if INTERPOL_FONC !=None : para['INTERPOL'] =INTERPOL
- C_out=DEFI_NAPPE(PARA=__ex.vale_para.tolist(),DEFI_FONCTION=def_fonc,**para)
- return ier
-
+++ /dev/null
-#@ MODIF calc_precont_ops Macro DATE 05/09/2005 AUTEUR DURAND C.DURAND
-# -*- coding: iso-8859-1 -*-
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2003 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-
-
-# RESPONSABLE ASSIRE A.ASSIRE
-
-def calc_precont_ops(self,reuse,MODELE,CHAM_MATER,CARA_ELEM,EXCIT,
- CABLE_BP,CABLE_BP_INACTIF,
- COMP_INCR,ETAT_INIT,NEWTON,RECH_LINEAIRE,
- CONVERGENCE,INCREMENT,SOLVEUR,SOLV_NON_LOCAL,
- LAGR_NON_LOCAL,PARM_THETA,INFO,TITRE,**args):
-
-
- """
- Ecriture de la macro CALC_PRECONT
- """
- import copy
- import aster
- import string
- import types
- from Accas import _F
- from Noyau.N_utils import AsType
- from Utilitai.Utmess import UTMESS
- ier=0
-
- # On importe les definitions des commandes a utiliser dans la macro
- AFFE_MODELE = self.get_cmd('AFFE_MODELE')
- CREA_CHAMP = self.get_cmd('CREA_CHAMP')
- AFFE_CHAR_MECA = self.get_cmd('AFFE_CHAR_MECA')
- DEFI_LIST_REEL = self.get_cmd('DEFI_LIST_REEL')
- STAT_NON_LINE = self.get_cmd('STAT_NON_LINE')
- CALC_NO = self.get_cmd('CALC_NO')
- CREA_CHAMP = self.get_cmd('CREA_CHAMP')
- DEFI_FONCTION = self.get_cmd('DEFI_FONCTION')
- RECU_TABLE = self.get_cmd('RECU_TABLE')
- DEFI_MATERIAU = self.get_cmd('DEFI_MATERIAU')
- AFFE_MATERIAU = self.get_cmd('AFFE_MATERIAU')
-
- # La macro compte pour 1 dans la numerotation des commandes
- self.set_icmd(1)
-
- # Le concept sortant (de type evol_noli) est nomme RES dans
- # le contexte de la macro
-
- self.DeclareOut('RES',self.sd)
-
- # -------------------------------------------------------------
- # 1. CREATION DES MOTS-CLES ET CONCEPTS POUR LES STAT_NON_LINE
- # ------------------------------------------------------------
-
-
- # 1.1 Recuperation de la liste d'instants, de l'instant initial et final
- # Creation de la nouvelle liste d'instants
- # ----------------------------------------------------------
-
- dIncrement=INCREMENT[0].cree_dict_valeurs(INCREMENT[0].mc_liste)
-
- __prec = dIncrement['PRECISION']
- __L0 = dIncrement['LIST_INST']
- __L1 = __L0.Valeurs()
-
- # Traitement de l'etat initial
- if ETAT_INIT:
- dEtatInit=ETAT_INIT[0].cree_dict_valeurs(ETAT_INIT[0].mc_liste)
- for i in dEtatInit.keys():
- if dEtatInit[i]==None : del dEtatInit[i]
-
- __EVINIT = dEtatInit['EVOL_NOLI']
- else :
- dEtatInit=None
-
- # Test de la presence de reuse=
- if self.reuse == None:
- dReuse=None
- else :
- dReuse='RES'
-
- # Teste si INST_INIT est donné ou bien recalcule __TMIN
- if dIncrement['INST_INIT'] == None:
- if self.reuse == None:
- __TMIN = __L1[0]
- else:
- __dico = __EVINIT.LIST_VARI_ACCES()
- __TMIN = __dico['INST'][-1]
- else:
- __TMIN = dIncrement['INST_INIT']
-
- # Teste si INST_FIN est donné ou bien recalcule __TMAX
- if dIncrement['INST_FIN'] == None:
- __TMAX = __L1[-1]
- else:
- __TMAX = dIncrement['INST_FIN']
-
- # Teste si INST_INIT est bien plus petit que INST_FIN
- if __TMAX <= __TMIN:
- UTMESS('F','CALC_PRECONT','INST_FIN PLUS PETIT QUE INST_INIT')
-
- # Cree la liste d'instant __L2 allant de __TMIN a __TMAX et contenant
- # un instant supplementaire __TINT
- __L2=[]
- for m in __L1:
- if m>=__TMIN and m<=__TMAX:
- __L2.append(m)
-
- __TINT = (9.*__L2[-1] + __L2[-2])/10.
- __L2[-1:-1] = [__TINT]
-
- # __LST0 est la liste d'instants utilisée pour l'etape 1
- __LST0=DEFI_LIST_REEL( DEBUT = __TMIN,
- INTERVALLE = _F(JUSQU_A = __TMAX, NOMBRE = 1),)
-
- # __LST et __FCT sont utilisés pour les etapes 2 et 3
- __LST=DEFI_LIST_REEL(VALE=__L2,);
- __FCT=DEFI_FONCTION(INTERPOL=('LIN','LIN'),
- NOM_PARA='INST',
- VALE=(__TMIN,0.0,__TINT,1.0,__TMAX,1.0),);
-
- for i in dIncrement.keys():
- if dIncrement[i]==None : del dIncrement[i]
- dIncrement['LIST_INST']= __LST
- dIncrement['INST_FIN'] = __TINT
-
-
-
- # 1.2 Recuperation des parametres pour STAT_NON_LINE
- # -------------------------------------------------------
-
- dNewton=NEWTON[0].cree_dict_valeurs(NEWTON[0].mc_liste)
- for i in dNewton.keys():
- if dNewton[i]==None : del dNewton[i]
-
- dConvergence=CONVERGENCE[0].cree_dict_valeurs(CONVERGENCE[0].mc_liste)
- for i in dConvergence.keys():
- if dConvergence[i]==None : del dConvergence[i]
-
- dSolveur=SOLVEUR[0].cree_dict_valeurs(SOLVEUR[0].mc_liste)
- for i in dSolveur.keys():
- if dSolveur[i]==None : del dSolveur[i]
-
- if RECH_LINEAIRE:
- dRech_lin=RECH_LINEAIRE[0].cree_dict_valeurs(RECH_LINEAIRE[0].mc_liste)
- for i in dRech_lin.keys():
- if dRech_lin[i]==None : del dRech_lin[i]
- else :
- dRech_lin=None
-
- if SOLV_NON_LOCAL:
- dSolv_nonloc=SOLV_NON_LOCAL[0].cree_dict_valeurs(SOLV_NON_LOCAL[0].mc_liste)
- for i in dSolv_nonloc.keys():
- if dSolv_nonloc[i]==None : del dSolv_nonloc[i]
- else :
- dSolv_nonloc=None
-
- if LAGR_NON_LOCAL:
- dLagr_nonloc=LAGR_NON_LOCAL[0].cree_dict_valeurs(LAGR_NON_LOCAL[0].mc_liste)
- for i in dLagr_nonloc.keys():
- if dLagr_nonloc[i]==None : del dLagr_nonloc[i]
- else :
- dLagr_nonloc=None
-
-
-
- # 1.3 Creation des mots-cles pour les 3 AFFE_CHAR_MECA
- # Recuperation des cables dans les concepts CABLE_BP
- # et CABLE_BP_INACTIF
- # ------------------------------------------------------
- if type(CABLE_BP) is not types.NoneType:
- if type(CABLE_BP) is not types.TupleType:
- CABLE_BP0 = CABLE_BP
- CABLE_BP = []
- CABLE_BP.append ( CABLE_BP0 )
-
- if type(CABLE_BP_INACTIF) is not types.NoneType:
- if type(CABLE_BP_INACTIF) is not types.TupleType:
- CABLE_BP_INACTIF0 = CABLE_BP_INACTIF
- CABLE_BP_INACTIF = []
- CABLE_BP_INACTIF.append ( CABLE_BP_INACTIF0 )
-
- motscles={}
- motscles['RELA_CINE_BP']=[]
- motscle2={}
- motscle2['RELA_CINE_BP']=[]
- motscle3={}
- motscle3['RELA_CINE_BP']=[]
- __GROUP_MA_A=[]
- Result = [[None]*1]
- for mcabl in CABLE_BP:
- # Creation de mots-cles pour les AFFE_CHAR_MECA
- motscles['RELA_CINE_BP'].append(_F(CABLE_BP=mcabl,
- SIGM_BPEL = 'OUI',
- RELA_CINE = 'NON',) )
- motscle2['RELA_CINE_BP'].append(_F(CABLE_BP=mcabl,
- SIGM_BPEL = 'NON',
- RELA_CINE = 'OUI',) )
- motscle3['RELA_CINE_BP'].append(_F(CABLE_BP=mcabl,
- SIGM_BPEL = 'OUI',
- RELA_CINE = 'OUI',) )
-
- # Creation de __GROUP_MA_A : liste des noms des cables contenus
- # dans chaque concept CABLE_BP = cables a activer
- __TCAB = RECU_TABLE(CO=mcabl,NOM_TABLE='CABLE_BP');
- __nb = 0
- while 1:
- try:
- Result[__nb][0] = __TCAB['NOM_CABLE',__nb+1]
- __CAB = __TCAB['NOM_CABLE',__nb+1]
- if __nb == 0:
- __GROUP_MA_A.append(__CAB)
- else:
- i = 0
- # enlève les doublons
- for m in __GROUP_MA_A:
- i=i+1
- if __CAB == m:
- break
- if i == len(__GROUP_MA_A):
- __GROUP_MA_A.append(__CAB)
-
- __nb = __nb + 1
- Result.append([None]*1)
- # Si on a lu toutes les valeurs alors on sort de la boucle
- except KeyError:
- break
-
- # Creation de __GROUP_MA_I : liste des noms des cables contenus
- # dans chaque CABLE_BP_INACTIF
- # __GROUP_MA_CABLE = liste des cables actifs et inactifs
- Result = [[None]*1]
- __GROUP_MA_I=[]
-
- if CABLE_BP_INACTIF:
- for mcabl in CABLE_BP_INACTIF:
- __TCA0 = RECU_TABLE(CO=mcabl,NOM_TABLE='CABLE_BP');
- __nb = 0
- while 1:
- try:
- Result[__nb][0] = __TCA0['NOM_CABLE',__nb+1]
- __CA0 = __TCA0['NOM_CABLE',__nb+1]
- if __nb == 0:
- __GROUP_MA_I.append(__CA0)
- else:
- i = 0
- # enlève les doublons
- for m in __GROUP_MA_I:
- i=i+1
- if __CA0 == m:
- break
- if i == len(__GROUP_MA_I):
- __GROUP_MA_I.append(__CA0)
-
- __nb = __nb + 1
- Result.append([None]*1)
- # Si on a lu toutes les valeurs alors on sort de la boucle
- except KeyError:
- break
- motscle6={}
- motscle6['RELA_CINE_BP']=[]
- for mcabl in CABLE_BP_INACTIF:
- # Creation de mots-cles pour les AFFE_CHAR_MECA
- motscle6['RELA_CINE_BP'].append(_F(CABLE_BP=mcabl,
- SIGM_BPEL = 'NON',
- RELA_CINE = 'OUI',) )
-
- __GROUP_MA_CABLES = __GROUP_MA_A + __GROUP_MA_I
-
-
- # 1.4 Creation des mots-clés facteurs COMP_INCR
- # pour étape 2 (dComp_incr0) et étape 3 (dComp_incr1)
- # ------------------------------------------------------
-
- dComp_incr=[]
- for j in COMP_INCR :
- dComp_incr.append(j.cree_dict_valeurs(j.mc_liste))
- for i in dComp_incr[-1].keys():
- if dComp_incr[-1][i]==None : del dComp_incr[-1][i]
-
- dComp_incr0=copy.copy(dComp_incr)
- dComp_incr1=copy.copy(dComp_incr)
-
- dComp_incr0.append(_F(RELATION='SANS',GROUP_MA=__GROUP_MA_CABLES) )
- if __GROUP_MA_I:
- dComp_incr1.append(_F(RELATION='SANS',GROUP_MA=__GROUP_MA_I) )
-
-
- # 1.5 Modele contenant uniquement les cables de precontrainte
- # ---------------------------------------------------------
-
- __MOD = string.ljust(MODELE.nom,8)
- __MOD =__MOD+'.MODELE .NOMA '
- __LMAIL = aster.getvectjev(__MOD)
- __MAIL = string.strip(__LMAIL[0])
-
- objma=self.get_sd_avant_etape(__MAIL,self)
-
- __M_CA=AFFE_MODELE( MAILLAGE=objma,
- AFFE =_F( GROUP_MA = __GROUP_MA_A,
- PHENOMENE = 'MECANIQUE',
- MODELISATION = 'BARRE') )
-
-
- # 1.6 Blocage de tous les noeuds des cables actifs
- # --------------------------------------------------
-
- _B_CA=AFFE_CHAR_MECA(MODELE=__M_CA,
- DDL_IMPO= _F( GROUP_MA = __GROUP_MA_A,
- DX = 0.,
- DY = 0.,
- DZ = 0.),)
-
-
- # 1.7 Chargements concernant les cables
- # -------------------------------------
- _C_CN=AFFE_CHAR_MECA(MODELE=__M_CA,**motscles)
- _C_CA=AFFE_CHAR_MECA(MODELE=MODELE,**motscle2)
- _C_CT=AFFE_CHAR_MECA(MODELE=MODELE,**motscle3)
- if CABLE_BP_INACTIF:
- _C_CI=AFFE_CHAR_MECA(MODELE=MODELE,**motscle6)
-
-
-
- # -------------------------------------------------------------
- # 2. CALCULS
- # ------------------------------------------------------------
-
-
- #-------------------------------------------------------------------
- # 2.1 Premiere etape : calcul sur le(s) cable(s) et
- # recuperation des _F_CAs aux noeuds
- # on travaile entre tmin et tmax
- #-------------------------------------------------------------------
-
- __EV1=STAT_NON_LINE(
- MODELE = __M_CA,
- CHAM_MATER = CHAM_MATER,
- CARA_ELEM = CARA_ELEM,
- EXCIT =(_F(CHARGE = _B_CA),
- _F(CHARGE = _C_CN),),
- COMP_INCR =_F( RELATION = 'ELAS',
- DEFORMATION = 'PETIT',
- TOUT = 'OUI'),
- INCREMENT =_F(LIST_INST = __LST0,
- PRECISION = __prec),
- SOLVEUR = dSolveur,
- PARM_THETA = PARM_THETA,
- INFO =INFO,
- TITRE = TITRE, )
-
- __EV1 = CALC_NO( reuse = __EV1,
- RESULTAT = __EV1,
- GROUP_MA = __GROUP_MA_A,
- OPTION = 'FORC_NODA' )
-
- __REA = CREA_CHAMP (
- TYPE_CHAM = 'NOEU_DEPL_R',
- OPERATION = 'EXTR',
- RESULTAT = __EV1,
- NOM_CHAM = 'FORC_NODA',
- INST = __TMAX);
-
- __REAC = CREA_CHAMP (TYPE_CHAM='NOEU_DEPL_R',
- OPERATION = 'ASSE',
- MODELE = MODELE,
- ASSE= _F(GROUP_MA=__GROUP_MA_A,
- CHAM_GD=__REA,
- COEF_R = -1.), )
-
- _F_CA=AFFE_CHAR_MECA(MODELE=__M_CA,
- VECT_ASSE = __REAC )
-
-
-
- #-----------------------------------------------------------------------
- # 2.2 Deuxieme etape : application de la precontrainte sur le beton
- # en desactivant les cables
- #-----------------------------------------------------------------------
-
- # Regeneration des mots-cles EXCIT passés en argument de la macro
- dExcit=[]
- for j in EXCIT :
- dExcit.append(j.cree_dict_valeurs(j.mc_liste))
- for i in dExcit[-1].keys():
- if dExcit[-1][i]==None : del dExcit[-1][i]
-
- if CABLE_BP_INACTIF:
- dExcit.append(_F(CHARGE=_C_CI),)
-
- # Creation du mots-cle EXCIT pour le STAT_NON_LINE
- dExcit1=copy.copy(dExcit)
- dExcit1.append(_F(CHARGE=_C_CA),)
- dExcit1.append(_F(CHARGE = _F_CA,
- FONC_MULT=__FCT ),)
-
- RES=STAT_NON_LINE(
- MODELE =MODELE,
- CARA_ELEM =CARA_ELEM,
- CHAM_MATER = CHAM_MATER,
- COMP_INCR=dComp_incr0,
- INCREMENT=dIncrement,
- ETAT_INIT = dEtatInit,
- NEWTON =dNewton,
- CONVERGENCE=dConvergence,
- RECH_LINEAIRE = dRech_lin,
- SOLVEUR = dSolveur,
- SOLV_NON_LOCAL = dSolv_nonloc,
- LAGR_NON_LOCAL = dLagr_nonloc,
- ARCHIVAGE = _F(INST = __TINT),
- PARM_THETA = PARM_THETA,
- INFO =INFO,
- TITRE = TITRE,
- EXCIT = dExcit1,
- )
-
- # Recuperation du dernier numero d'ordre pour pouvoir l'écraser dans RES
- __dico2 = RES.LIST_VARI_ACCES()
- __no = __dico2['NUME_ORDRE'][-1]
-
-
- #-----------------------------------------------------------------------
- # 2.2 Troisieme etape : on remet la tension dans les cables
- #-----------------------------------------------------------------------
-
- # Creation du mots-cles EXCIT pour le STAT_NON_LINE
- dExcit2=copy.copy(dExcit)
- dExcit2.append(_F(CHARGE=_C_CT,) )
-
- # Calcul sur un seul pas (de __TINT a __TMAX)
- RES=STAT_NON_LINE( reuse = RES,
- ETAT_INIT = _F(EVOL_NOLI =RES),
- MODELE = MODELE,
- CHAM_MATER = CHAM_MATER,
- CARA_ELEM = CARA_ELEM,
- COMP_INCR=dComp_incr1,
- INCREMENT=_F(LIST_INST = __LST,
- PRECISION = __prec),
- NEWTON =dNewton,
- RECH_LINEAIRE = dRech_lin,
- CONVERGENCE=dConvergence,
- SOLVEUR = dSolveur,
- SOLV_NON_LOCAL = dSolv_nonloc,
- LAGR_NON_LOCAL = dLagr_nonloc,
- ARCHIVAGE = _F(NUME_INIT = __no,
- DETR_NUME_SUIV = 'OUI' ),
- PARM_THETA = PARM_THETA,
- INFO =INFO,
- TITRE = TITRE,
- EXCIT =dExcit2,
- )
-
- return ier
-
+++ /dev/null
-#@ MODIF calc_table_ops Macro DATE 14/11/2005 AUTEUR MCOURTOI M.COURTOIS
-# -*- coding: iso-8859-1 -*-
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2005 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-
-# RESPONSABLE MCOURTOI M.COURTOIS
-from types import *
-EnumTypes = (ListType, TupleType)
-
-def calc_table_ops(self, TABLE, FILTRE, EXTR, RENOMME, TRI, COMB, OPER,
- INFO, **args):
- """
- Macro CALC_TABLE permettant de faire des opérations sur une table
- """
- import aster
-
- macro = 'CALC_TABLE'
- from Accas import _F
- from Utilitai.Utmess import UTMESS
- from Utilitai import transpose
- from Utilitai.Table import Table, merge
-
- ier = 0
- # La macro compte pour 1 dans la numerotation des commandes
- self.set_icmd(1)
-
- # Le concept sortant (de type table_sdaster ou dérivé) est tab
- self.DeclareOut('tabout', self.sd)
-
- # On importe les definitions des commandes a utiliser dans la macro
- # Le nom de la variable doit etre obligatoirement le nom de la commande
- CREA_TABLE = self.get_cmd('CREA_TABLE')
- DETRUIRE = self.get_cmd('DETRUIRE')
-
- tab = TABLE.EXTR_TABLE()
-
- #----------------------------------------------
- # 1. Traitement du FILTRE
- Filtre = []
- # format pour l'impression des filtres
- form_filtre = '\nFILTRE -> NOM_PARA: %-16s CRIT_COMP: %-4s VALE: %s'
- if FILTRE != None:
- for Fi in FILTRE:
- dF = Fi.cree_dict_valeurs(Fi.mc_liste)
- for mc in dF.keys():
- if dF[mc] == None:
- del dF[mc]
- Filtre.append(dF)
-
- for Fi in Filtre:
- col = getattr(tab, Fi['NOM_PARA'])
- # peu importe le type
- opts = [Fi[k] for k in ('VALE','VALE_I','VALE_C','VALE_K') if Fi.has_key(k)]
- kargs = {}
- for k in ('CRITERE','PRECISION'):
- if Fi.has_key(k):
- kargs[k] = Fi[k]
- tab = tab & ( getattr(col, Fi['CRIT_COMP'])(*opts,**kargs) )
- # trace l'operation dans le titre
- #if FORMAT in ('TABLEAU','ASTER'):
- tab.titr += form_filtre % (Fi['NOM_PARA'], Fi['CRIT_COMP'], \
- ' '.join([str(v) for v in opts]))
-
- #----------------------------------------------
- # 2. Traitement de EXTR
- if EXTR != None:
- lpar = EXTR['NOM_PARA']
- if not type(lpar) in EnumTypes:
- lpar = [lpar]
- for p in lpar:
- if not p in tab.para:
- UTMESS('F', macro, 'Paramètre %s inexistant dans la table %s' % (p, TABLE.nom))
- tab = tab[EXTR['NOM_PARA']]
-
- #----------------------------------------------
- # 3. Traitement de RENOMME
- if RENOMME != None:
- for MCFi in RENOMME:
- try:
- tab.Renomme(*MCFi['NOM_PARA'])
- except KeyError, msg:
- UTMESS('F', macro, msg)
-
- #----------------------------------------------
- # 4. Traitement du TRI
- if TRI != None:
- tab.sort(CLES=TRI['NOM_PARA'], ORDRE=TRI['ORDRE'])
-
- #----------------------------------------------
- # 5. Traitement de COMB
- if COMB != None:
- tab2 = COMB['TABLE'].EXTR_TABLE()
- opts = [tab, tab2]
- if COMB['NOM_PARA']<>None:
- lpar = COMB['NOM_PARA']
- if not type(lpar) in EnumTypes:
- lpar = [lpar]
- for p in lpar:
- if not p in tab.para:
- UTMESS('F', macro, 'Paramètre %s inexistant dans la table %s' % (p, TABLE.nom))
- if not p in tab2.para:
- UTMESS('F', macro, 'Paramètre %s inexistant dans la table %s' % (p, COMB['TABLE'].nom))
- opts.append(lpar)
- tab = merge(*opts)
-
- #----------------------------------------------
- # 6. Traitement de OPER
- if OPER != None:
- for MCFi in OPER:
- if MCFi['NOM_PARA'] in tab.para :
- UTMESS('F', macro, 'Le paramètre %s existe déjà dans la table %s' % (MCFi['NOM_PARA'], TABLE.nom))
- func = MCFi['FORMULE']
- tabpar = []
- for para in func.nompar :
- if para not in tab.para :
- UTMESS('F', macro, 'Le paramètre de la formule %s est inexistant dans la table %s' % (para, TABLE.nom))
-# i = tab.para.index(para)
-# if tab.type[i] != 'R' :
-# UTMESS('F', macro, 'Le paramètre %s doit etre réel dans la table %s' % (para, TABLE.nom))
- vals = getattr(tab,para).values()
- tabpar.append(vals)
- tabpar = transpose.transpose(tabpar)
- vectval = []
- for lpar in tabpar:
- # si un paramètre est absent, on ne peut pas évaluer la formule
- if None in lpar:
- vectval.append(None)
- else:
- vectval.append(func(*lpar))
- # ajout de la colonne dans la table
- if INFO == 2:
- aster.affiche('MESSAGE', 'Ajout de la colonne %s : %s' % (MCFi['NOM_PARA']+repr(vectval))+'\n')
- tab[MCFi['NOM_PARA']] = vectval
-
- #----------------------------------------------
- # 99. Création de la table_sdaster résultat
- # cas réentrant : il faut détruire l'ancienne table_sdaster
- if self.sd.nom == TABLE.nom:
- DETRUIRE(CONCEPT=_F(NOM=TABLE.nom,), INFO=1)
-
- dprod = tab.dict_CREA_TABLE()
- if INFO == 2:
- echo_mess = []
- echo_mess.append( '@-'*30+'\n' )
- echo_mess.append( tab )
- from pprint import pformat
- echo_mess.append( pformat(dprod) )
- echo_mess.append( '@-'*30+'\n' )
- texte_final = ' '.join(echo_mess)
- aster.affiche('MESSAGE', texte_final)
-
- # surcharge par le titre fourni
- tit = args['TITRE']
- if tit != None:
- if not type(tit) in EnumTypes:
- tit = [tit]
- dprod['TITRE'] = tuple(['%-80s' % lig for lig in tit])
- # type de la table de sortie à passer à CREA_TABLE
- dprod['TYPE_TABLE'] = self.sd.__class__.__name__.upper()
- tabout = CREA_TABLE(**dprod)
-
- return ier
+++ /dev/null
-#@ MODIF defi_cable_bp_ops Macro DATE 05/09/2005 AUTEUR DURAND C.DURAND
-# -*- coding: iso-8859-1 -*-
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2003 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE ASSIRE A.ASSIRE
-
-# ===========================================================================
-# CORPS DE LA MACRO "DEFI_CABLE_BP"
-# -------------------------------------
-# USAGE :
-# Entrée :
-# - MAILLAGE
-# - MODELE
-# - CABLE
-# - CHAM_MATER
-# - CARA_ELEM
-# - GROUP_MA_BETON
-# - DEFI_CABLE
-# - TYPE_ANCRAGE
-# - TENSION_INIT
-# - RECUL_ANCRAGE
-# - RELAXATION
-# - CONE
-# RAYON
-# LONGUEUR
-# PRESENT OUI ou NON deux fois
-# - TITRE
-# - INFO 1 / 2
-#
-# ===========================================================================
-
-
-
-def defi_cable_bp_ops(self,MAILLAGE,MODELE,CHAM_MATER,CARA_ELEM,GROUP_MA_BETON,
- DEFI_CABLE,TYPE_ANCRAGE,TENSION_INIT,RECUL_ANCRAGE,
- RELAXATION,CONE,TITRE,INFO,**args):
-
- """
- Ecriture de la macro DEFI_CABLE_BP
- """
- from Accas import _F
- import aster,string
- from Utilitai.Utmess import UTMESS
- ier=0
-
- # On importe les definitions des commandes a utiliser dans la macro
- DEFI_GROUP = self.get_cmd('DEFI_GROUP')
- IMPR_RESU = self.get_cmd('IMPR_RESU')
- DEFI_CABLE_OP = self.get_cmd('DEFI_CABLE_OP')
- RECU_TABLE = self.get_cmd('RECU_TABLE')
- IMPR_TABLE = self.get_cmd('IMPR_TABLE')
- IMPR_CO = self.get_cmd('IMPR_CO')
-
- # La macro compte pour 1 dans la numerotation des commandes
- self.set_icmd(1)
-
- # Le concept sortant (de type char_meca) est nomme CHCABLE dans
- # le contexte de la macro
-
- self.DeclareOut('__DC',self.sd)
-
- # ---------------------------------------------------------------------------- #
- # Début de la Macro :
-
- motscles={}
-
- # RECUPERATION DES INFOS DONNEES PAR LE MOT-CLE "CONE"
-
- if CONE:
- dCONE=CONE[0].cree_dict_valeurs(CONE[0].mc_liste)
- for i in dCONE.keys():
- if dCONE[i]==None : del dCONE[i]
-
- RAYON = dCONE['RAYON']
- LONGUEUR = dCONE['LONGUEUR']
-
- motscles['CONE']=[]
- motscles['CONE'].append( dCONE )
-
-
- # VERIFICATION QUE LE MAILLAGE EST COHERENT AVEC LE MODELE
-
- __MAIL = aster.getvectjev( string.ljust(MODELE.nom,8) + '.MODELE .NOMA ' )
- if string.ljust(MAILLAGE.nom,8) != __MAIL[0] :
- echo_mess=[]
- echo_mess.append( ' \n' )
- echo_mess.append( ' # ---------------------------------------------------------------------------\n' )
- echo_mess.append( ' # DEFI_CABLE_BP - Erreur : LE CONCEPT MAILLAGE RENSEIGNE NE CORRESPOND \n' )
- echo_mess.append( ' # PAS A CELUI UTILISE DANS LE MODELE ! \n' )
- echo_mess.append( ' # '+MAILLAGE.nom+' - '+__MAIL[0]+'\n' )
- echo_mess.append( ' # ---------------------------------------------------------------------------\n' )
- message=string.join(echo_mess)
- UTMESS('F',message)
-
-
- # DEFINITION DU NOM DES GROUP_NO
-
- __NOM = '_AN_'
- __LGNO = MAILLAGE.LIST_GROUP_NO()
- __LGN1 = []
- for i in __LGNO :
- __LGN1.append( i[0][:len(__NOM)] )
-
- __NB = __LGN1.count(__NOM)
-
-# FIN RECUPERATION DES INFOS DONNEES PAR LE MOT-CLE "CONE"
-
-
- # RECUPERATION DES INFOS DONNEES PAR LE MOT-CLE "DEFI_CABLE"
-
- dDEFI_CABLE=[]
- for j in DEFI_CABLE :
- dDEFI_CABLE.append(j.cree_dict_valeurs(j.mc_liste))
- for i in dDEFI_CABLE[-1].keys():
- if dDEFI_CABLE[-1][i]==None : del dDEFI_CABLE[-1][i]
-
-
- # BOUCLE SUR LES FACTEURS DU MOT-CLE "DEFI_CABLE"
-
- motscles['DEFI_CABLE']=[]
-
- for i in dDEFI_CABLE:
-
- # CAS OU L'ON A DEFINI LE MOT-CLE "CONE"
- if CONE:
-
- # CREATION DU PREMIER TUNNEL
-
- if dCONE['PRESENT'][0] == 'OUI':
- __NB = __NB + 1
- __NOM1 = __NOM + str( int(__NB) )
-
- motscle2={}
- motscle2['CREA_GROUP_NO']=[]
-
- if i.has_key('GROUP_MA') == 1:
- __CAB = i['GROUP_MA']
- motscle2= {'CREA_GROUP_NO': [{'LONGUEUR': LONGUEUR, 'RAYON': RAYON, 'OPTION': 'TUNNEL', 'GROUP_MA': [ GROUP_MA_BETON, __CAB ], 'GROUP_MA_AXE': __CAB, 'NOM': __NOM1}]}
- if i.has_key('MAILLE') == 1:
- echo_mess=[]
- echo_mess.append( ' \n' )
- echo_mess.append( ' # ---------------------------------------------------------------------------\n' )
- echo_mess.append( ' # DEFI_CABLE_BP - Erreur : MAILLE INTERDIT - UTILISER GROUP_MA \n' )
- echo_mess.append( ' # ---------------------------------------------------------------------------\n' )
- message=string.join(echo_mess)
- UTMESS('F',message)
- if i.has_key('GROUP_NO_ANCRAGE') == 1:
- __PC1 = i['GROUP_NO_ANCRAGE'][0]
- motscle2['CREA_GROUP_NO'][0]['GROUP_NO_ORIG'] = __PC1
- if i.has_key('NOEUD_ANCRAGE') == 1:
- __PC1 = i['NOEUD_ANCRAGE'][0]
- motscle2['CREA_GROUP_NO'][0]['NOEUD_ORIG'] = __PC1
-
-
- DEFI_GROUP( reuse=MAILLAGE,
- MAILLAGE=MAILLAGE,
- INFO=INFO,
- ALARME='NON',
- **motscle2
- ) ;
-
- # CREATION DU DEUXIEME TUNNEL
-
- if dCONE['PRESENT'][1] == 'OUI':
- __NB = __NB + 1
- __NOM2 = __NOM + str( int(__NB) )
-
- motscle2={}
- motscle2['CREA_GROUP_NO']=[]
-
- if i.has_key('GROUP_MA') == 1:
- __CAB = i['GROUP_MA']
- motscle2= {'CREA_GROUP_NO': [{'LONGUEUR': LONGUEUR, 'RAYON': RAYON, 'OPTION': 'TUNNEL', 'GROUP_MA': [ GROUP_MA_BETON, __CAB ], 'GROUP_MA_AXE': __CAB, 'NOM': __NOM2}]}
- if i.has_key('MAILLE') == 1:
- echo_mess=[]
- echo_mess.append( ' \n' )
- echo_mess.append( ' # ---------------------------------------------------------------------------\n' )
- echo_mess.append( ' # DEFI_CABLE_BP - Erreur : MAILLE INTERDIT - UTILISER GROUP_MA \n' )
- echo_mess.append( ' # ---------------------------------------------------------------------------\n' )
- message=string.join(echo_mess)
- UTMESS('F',message)
- if i.has_key('GROUP_NO_ANCRAGE') == 1:
- __PC1 = i['GROUP_NO_ANCRAGE'][1]
- motscle2['CREA_GROUP_NO'][0]['GROUP_NO_ORIG'] = __PC1
- if i.has_key('NOEUD_ANCRAGE') == 1:
- __PC1 = i['NOEUD_ANCRAGE'][1]
- motscle2['CREA_GROUP_NO'][0]['NOEUD_ORIG'] = __PC1
-
- DEFI_GROUP( reuse=MAILLAGE,
- MAILLAGE=MAILLAGE,
- INFO=INFO,
- ALARME='NON',
- **motscle2
- ) ;
-
-
- # CREATION DES NOUVEAUX FACTEURS DU MOT-CLE "DEFI_CABLE" POUR DEFI_CABLE_BP
-
- if dCONE['PRESENT'][0] == 'OUI' and dCONE['PRESENT'][1] == 'OUI':
- if i.has_key('GROUP_MA') == 1 and i.has_key('GROUP_NO_ANCRAGE') == 1:
- motscles['DEFI_CABLE'].append( _F(GROUP_MA=i['GROUP_MA'],
- GROUP_NO_ANCRAGE=i['GROUP_NO_ANCRAGE'],
- GROUP_NO_FUT=( __NOM1,__NOM2, ), ), )
- if i.has_key('GROUP_MA') == 1 and i.has_key('NOEUD_ANCRAGE') == 1:
- motscles['DEFI_CABLE'].append( _F(GROUP_MA=i['GROUP_MA'],
- NOEUD_ANCRAGE=i['NOEUD_ANCRAGE'],
- GROUP_NO_FUT=( __NOM1,__NOM2, ), ), )
-
- if dCONE['PRESENT'][0] == 'OUI' and dCONE['PRESENT'][1] == 'NON':
- if i.has_key('GROUP_MA') == 1 and i.has_key('GROUP_NO_ANCRAGE') == 1:
- motscles['DEFI_CABLE'].append( _F(GROUP_MA=i['GROUP_MA'],
- GROUP_NO_ANCRAGE=i['GROUP_NO_ANCRAGE'],
- GROUP_NO_FUT=( __NOM1, ), ), )
- if i.has_key('GROUP_MA') == 1 and i.has_key('NOEUD_ANCRAGE') == 1:
- motscles['DEFI_CABLE'].append( _F(GROUP_MA=i['GROUP_MA'],
- NOEUD_ANCRAGE=i['NOEUD_ANCRAGE'],
- GROUP_NO_FUT=( __NOM1, ), ), )
-
- if dCONE['PRESENT'][0] == 'NON' and dCONE['PRESENT'][1] == 'OUI':
- if i.has_key('GROUP_MA') == 1 and i.has_key('GROUP_NO_ANCRAGE') == 1:
- motscles['DEFI_CABLE'].append( _F(GROUP_MA=i['GROUP_MA'],
- GROUP_NO_ANCRAGE=i['GROUP_NO_ANCRAGE'],
- GROUP_NO_FUT=( __NOM2, ), ), )
- if i.has_key('GROUP_MA') == 1 and i.has_key('NOEUD_ANCRAGE') == 1:
- motscles['DEFI_CABLE'].append( _F(GROUP_MA=i['GROUP_MA'],
- NOEUD_ANCRAGE=i['NOEUD_ANCRAGE'],
- GROUP_NO_FUT=( __NOM2, ), ), )
-
- if dCONE['PRESENT'][0] == 'NON' and dCONE['PRESENT'][1] == 'NON':
- if i.has_key('GROUP_MA') == 1 and i.has_key('GROUP_NO_ANCRAGE') == 1:
- motscles['DEFI_CABLE'].append( _F(GROUP_MA=i['GROUP_MA'],
- GROUP_NO_ANCRAGE=i['GROUP_NO_ANCRAGE'], ), )
- if i.has_key('GROUP_MA') == 1 and i.has_key('NOEUD_ANCRAGE') == 1:
- motscles['DEFI_CABLE'].append( _F(GROUP_MA=i['GROUP_MA'],
- NOEUD_ANCRAGE=i['NOEUD_ANCRAGE'], ), )
-
-
- # CAS OU L'ON A PAS DEFINI LE MOT-CLE "CONE"
- else:
- if i.has_key('GROUP_MA') == 1 and i.has_key('GROUP_NO_ANCRAGE') == 1:
- motscles['DEFI_CABLE'].append( _F(GROUP_MA=i['GROUP_MA'],
- GROUP_NO_ANCRAGE=i['GROUP_NO_ANCRAGE'], ), )
-
- if i.has_key('GROUP_MA') == 1 and i.has_key('NOEUD_ANCRAGE') == 1:
- motscles['DEFI_CABLE'].append( _F(GROUP_MA=i['GROUP_MA'],
- NOEUD_ANCRAGE=i['NOEUD_ANCRAGE'], ), )
-
- if i.has_key('MAILLE') == 1 and i.has_key('GROUP_NO_ANCRAGE') == 1:
- motscles['DEFI_CABLE'].append( _F(MAILLE=i['MAILLE'],
- GROUP_NO_ANCRAGE=i['GROUP_NO_ANCRAGE'], ), )
-
- if i.has_key('MAILLE') == 1 and i.has_key('NOEUD_ANCRAGE') == 1:
- motscles['DEFI_CABLE'].append( _F(MAILLE=i['MAILLE'],
- NOEUD_ANCRAGE=i['NOEUD_ANCRAGE'], ), )
-
-
-# FIN BOUCLE sur i in DEFI_CABLE
-
-
- # LANCEMENT DE DEFI_CABLE_BP
-
- if RELAXATION:
- dRelaxation=RELAXATION[0].cree_dict_valeurs(RELAXATION[0].mc_liste)
- for i in dRelaxation.keys():
- if dRelaxation[i]==None : del dRelaxation[i]
-
- __DC=DEFI_CABLE_OP(MODELE=MODELE,
- CHAM_MATER=CHAM_MATER,
- CARA_ELEM=CARA_ELEM,
- GROUP_MA_BETON=GROUP_MA_BETON,
- TYPE_ANCRAGE=TYPE_ANCRAGE,
- TENSION_INIT=TENSION_INIT,
- RECUL_ANCRAGE=RECUL_ANCRAGE,
- RELAXATION=dRelaxation,
- INFO=INFO,
- **motscles
- );
-
- else:
-
- __DC=DEFI_CABLE_OP(MODELE=MODELE,
- CHAM_MATER=CHAM_MATER,
- CARA_ELEM=CARA_ELEM,
- GROUP_MA_BETON=GROUP_MA_BETON,
- TYPE_ANCRAGE=TYPE_ANCRAGE,
- TENSION_INIT=TENSION_INIT,
- RECUL_ANCRAGE=RECUL_ANCRAGE,
- INFO=INFO,
- **motscles
- );
-
-# __TCAB = RECU_TABLE(CO=__DC,NOM_TABLE='CABLE_BP');
-# IMPR_TABLE(TABLE=__TCAB);
-
- return ier
+++ /dev/null
-#@ MODIF defi_part_feti_ops Macro DATE 30/08/2005 AUTEUR ASSIRE A.ASSIRE
-# -*- coding: iso-8859-1 -*-
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE ASSIRE A.ASSIRE
-
-
-# ===========================================================================
-# CORPS DE LA MACRO "DEFI_PART_FETI"
-# -------------------------------------
-# USAGE :
-# MAILLAGE maillage a partitionner
-# MODELE modele (facultatif)
-# NB_PART nb de sous-domaines
-# EXCIT liste des chargements
-# METHODE PMETIS, KMETIS ou AUTRE
-# LOGICIEL si AUTRE alors on attend un chemin complet vers executable
-# NOM_GROUP_MA Un nom de base pour les group_ma contenant les SD
-# INFO 1,2
-#
-# ===========================================================================
-# script PYTHON : lancement de DEFI_PART_PA_OPS et de DEFI_PART_OPS
-
-
-def defi_part_feti_ops(self,NB_PART,METHODE,TRAITER_BORDS,NOM_GROUP_MA,CORRECTION_CONNEX,INFO,**args):
-
- import aster, string, sys
-
- from Accas import _F
- from Noyau.N_utils import AsType
-
- from Utilitai import partition
-
- # DEBUT DE LA MACRO
- # La macro compte pour 1 dans la numerotation des commandes
- self.set_icmd(1)
- ier=0
-
- # On importe les definitions des commandes a utiliser dans la macro
- DEFI_PART_OPS = self.get_cmd('DEFI_PART_OPS')
- INFO_EXEC_ASTER = self.get_cmd('INFO_EXEC_ASTER')
- DEFI_FICHIER = self.get_cmd('DEFI_FICHIER')
- DETRUIRE = self.get_cmd('DETRUIRE')
- DEFI_PART_PA_OPS = self.get_cmd('DEFI_PART_PA_OPS')
-
- nompro='DEFI_PART_FETI'
-
- # Maillage
- if args.has_key('MODELE'):
- if args['MODELE'] != None:
- __MOD = string.ljust(args['MODELE'].nom,8)
- __MOD =__MOD+'.MODELE .NOMA '
- __LMAIL = aster.getvectjev(__MOD)
- __MAIL = string.strip(__LMAIL[0])
- MAILLAGE=self.get_sd_avant_etape(__MAIL,self)
- else:
- MAILLAGE=args['MAILLAGE']
-
- # Nom des GROUP_MA générés
- NOM_GROUP_MA = string.strip(NOM_GROUP_MA)
-
- # Test sur le nombre de caractères de NOM_GROUP_MA
- if ( len(NOM_GROUP_MA)+len(str(NB_PART)) > 7 ):
- ln=7-len(str(NB_PART))
- UTMESS('F', nompro, 'Afin de pouvoir générer les GROUP_MA, réduisez le nombre '\
- 'de caractères de NOM_GROUP_MA à un maximum de : %i' %ln)
-
- # Verification que des GROUP_MA ne portent pas deja les memes noms
- _lst = []
- for i in MAILLAGE.LIST_GROUP_MA():
- _lst.append( string.strip(i[0]) )
- for i in range(NB_PART):
- if ( NOM_GROUP_MA+str(i) in _lst ):
- ngrma=NOM_GROUP_MA+str(i)
- UTMESS('F', nompro, "Il existe déjà un GROUP_MA nommé : %s" %ngrma)
- if args.has_key('NOM_GROUP_MA_BORD') :
- if args['NOM_GROUP_MA_BORD'] != None :
- if ( args['NOM_GROUP_MA_BORD']+str(i) in _lst ):
- ngrma=args['NOM_GROUP_MA_BORD']+str(i)
- UTMESS('F', nompro, "Il existe déjà un GROUP_MA nommé : %s" %ngrma)
-
- # Le concept sortant dans le contexte de la macro
- self.DeclareOut('_SDFETI',self.sd)
-
- # Debut :
-
- # Regeneration des mots-cles GROUPAGE passés en argument de la macro
- motscle1= {}
- if args.has_key('GROUPAGE'):
- if args['GROUPAGE'] != None :
- dGroup=[]
- for j in args['GROUPAGE']:
- dGroup.append(j.cree_dict_valeurs(j.mc_liste))
- for i in dGroup[-1].keys():
- if dGroup[-1][i]==None : del dGroup[-1][i]
- motscle1['GROUPAGE']=dGroup
-
- # Regeneration des mots-cles POIDS_MAILLES passés en argument de la macro
- if args.has_key('POIDS_MAILLES'):
- if args['POIDS_MAILLES'] != None :
- dEval=[]
- for j in args['POIDS_MAILLES']:
- dEval.append(j.cree_dict_valeurs(j.mc_liste))
- for i in dEval[-1].keys():
- if dEval[-1][i]==None : del dEval[-1][i]
- motscle1['POIDS_MAILLES']=dEval
-
- # Y a t'il présence du mot clé : NOM_GROUP_MA_BORD
- if args.has_key('GROUP_MA_BORD'):
- if args['GROUP_MA_BORD'] != None :
- motscle1['GROUP_MA_BORD']=args['GROUP_MA_BORD']
-
- # Y a t'il présence du mot clé : LOGICIEL
- if args.has_key('LOGICIEL'):
- if args['LOGICIEL'] != None :
- motscle1['LOGICIEL']=args['LOGICIEL']
-
- # Y a t'il présence du mot clé : MODELE
- if args.has_key('MODELE'):
- if args['MODELE'] != None :
- motscle1['MODELE']=args['MODELE']
-
- # Partitionnement
- _SDFETI=DEFI_PART_PA_OPS(
- MAILLAGE=MAILLAGE,
- INFO=INFO,
- METHODE=METHODE,
- NB_PART=NB_PART,
- CORRECTION_CONNEX=CORRECTION_CONNEX,
- TRAITER_BORDS=TRAITER_BORDS,
- NOM_GROUP_MA=NOM_GROUP_MA,
- **motscle1
- );
-
- # Liste des groupes de mailles du maillage
- _LST_GMA = MAILLAGE.LIST_GROUP_MA()
- _LST_GMA = map(lambda x: x[0], _LST_GMA)
-
- # Creation de la SDFETI
- if args.has_key('MODELE'):
- if args['MODELE'] != None :
- _tmp = []
- for i in range(NB_PART):
- txt = { 'GROUP_MA': NOM_GROUP_MA + str(i) }
- _tmp.append( txt )
-
- if args.has_key('NOM_GROUP_MA_BORD') :
- if args['NOM_GROUP_MA_BORD'] != None :
- if ( args['NOM_GROUP_MA_BORD']+str(i) in _LST_GMA ):
- txt['GROUP_MA_BORD'] = string.strip(args['NOM_GROUP_MA_BORD']) + str(i)
- _tmp.append( txt )
-
- motscle2= {'DEFI': _tmp }
-
- # Regeneration des mots-cles EXCIT passés en argument de la macro
- if args.has_key('EXCIT'):
- if args['EXCIT'] != None :
- dExcit=[]
- for j in args['EXCIT']:
- dExcit.append(j.cree_dict_valeurs(j.mc_liste))
- for i in dExcit[-1].keys():
- if dExcit[-1][i]==None : del dExcit[-1][i]
- motscle2['EXCIT']=dExcit
-
- _SDFETI=DEFI_PART_OPS(NOM='SDD',
- MODELE=args['MODELE'],
- INFO=1,
- **motscle2
- );
- else:
- _SDFETI=None
-
- else:
- _SDFETI=None
-
-
- # Fin :
-
- return ier
+++ /dev/null
-#@ MODIF fiabilite_fichier Macro DATE 14/09/2004 AUTEUR MCOURTOI M.COURTOIS
-# -*- coding: iso-8859-1 -*-
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE GNICOLAS G.NICOLAS
-#
-class fiabilite_fichier :
-#
- """ Classe des fichiers de données des logiciels fiabilistes
- Cette classe a été mise au point pour le couplage entre
- Code_ASTER et MEFISTO, mais pourrait servir ailleurs.
- """
-#
-#
-#====
-# 1. Le constructeur
-#====
-#
-#
- def __init__ ( self, jdc, Rep_Calc_LOGICIEL_global, nomfic, info = 1 ) :
-#
-# jdc : le jeu de commandes en cours de traitement
-#
- self.jdc = jdc
-#
-# Rep_Calc_LOGICIEL_global : le répertoire d'exécution du logiciel de fiabilité
-#
- self.Rep_Calc_LOGICIEL_global = Rep_Calc_LOGICIEL_global
-#
-# nomfic : nom local du fichier à créer
-#
- self.nomfic = nomfic
-#
-# messages_erreur : messages d'erreur
-#
- self.messages_erreur = { 0 : "Tout va bien",
- 1 : "==> Ce fichier est inconnu.",
- 2 : "==> Ce type d'ouverture est inconnu.",
- 10 : "==> Problème à l'ouverture.",
- 11 : "==> Problème à la fermeture.",
- 20 : "==> Problème à l'impression." }
-#
-# info : niveau d'information au sens ASTER
-#
- self.info = info
-#
-# ligne_sep : ligne de séparation
-#
- self.ligne_sep = "========================================================="
- self.ligne_commentaire = "#" + self.ligne_sep + "\n"
-#
- if info >= 2 :
- print "Création du fichier : "+self.nomfic
-#
-#====
-# 2. Ouverture du fichier
-#====
-#
- def Ouvre_Fichier ( self, type_ouvr ) :
-#
-# 2.0. ==> Préalables
-#
- """
- Ouvre le fichier en lecture ou écriture.
- 0 : tout s'est bien passé
- 1 : on veut ouvrir en lecture un fichier qui n'existe pas
- 2 : le mode d'ouverture est inconnu
- 10 : impossible d'ouvrir
- """
-#
- import os
-#
-# 2.1. ==> Le nom global du fichier
-#
- self.nomfic_global = os.path.join(self.Rep_Calc_LOGICIEL_global,self.nomfic)
-#
-# 2.2. ==> Controles
-#
- erreur = 0
-#
- if ( type_ouvr == "w" or type_ouvr == "r" ) :
-#
- if ( type_ouvr == "r" ) :
- if not os.path.isfile(self.nomfic_global) :
- erreur = 1
-
- else :
-#
- self.jdc.cr.warn("Type d'ouverture : "+type_ouvr)
- erreur = 2
-#
-# 2.3. ==> Ouverture vraie
-#
- if not erreur :
-#
- erreur_partiel = [0]
- try :
- self.fic = open( self.nomfic_global, type_ouvr )
- except os.error,erreur_partiel :
- self.jdc.cr.warn("Code d'erreur de open : " + str(erreur_partiel[0]) + " : " + erreur_partiel[1])
- erreur = 10
-#
-# 2.4. ==> C'est fini
-#
- if erreur :
- self.jdc.cr.warn("Fichier : "+self.nomfic)
- self.jdc.cr.warn(self.messages_erreur[erreur])
-#
- return erreur
-#
-#====
-# 3. Fermeture du fichier
-#====
-#
- def Ferme_Fichier ( self ) :
-#
-# 3.0. ==> Préalables
-#
- """
- Ferme le fichier.
- 0 : tout s'est bien passé
- 20 : impossible d'imprimer
- """
-#
- import os
-#
-# 3.1. ==> Controles
-#
- erreur = 0
-#
- if not os.path.isfile(self.nomfic_global) :
- erreur = 1
-#
-# 3.2. ==> Fermeture vraie
-#
- if not erreur :
-#
- erreur_partiel = [0]
- try :
- self.fic.close( )
- except os.error,erreur_partiel :
- self.jdc.cr.warn("Code d'erreur de close : " + str(erreur_partiel[0]) + " : " + erreur_partiel[1])
- erreur = 11
-#
-# 3.3. ==> C'est fini
-#
- if erreur :
- self.jdc.cr.warn("Fichier : "+self.nomfic)
- self.jdc.cr.warn(self.messages_erreur[erreur])
-#
- return erreur
-#
-#====
-# 4. Impression du contenu du fichier
-#====
-#
- def Imprime_Fichier ( self ) :
-#
-# 4.0. ==> Préalables
-#
- """
- Imprime le fichier.
- 0 : tout s'est bien passé
- 20 : impossible d'imprimer
- """
-#
-# 4.1. ==> Lecture
-#
- erreur = self.Ouvre_Fichier ( "r" )
- if not erreur :
- les_lignes = self.fic.readlines()
- erreur = self.Ferme_Fichier ( )
-#
-# 4.2. ==> Impression
-#
- if not erreur :
-#
- print "\n"+self.ligne_sep
- print "Contenu du fichier " + self.nomfic," :"
- for ligne in les_lignes :
- print ligne[:-1]
- print self.ligne_sep+"\n"
-#
-# 4.4. ==> C'est fini
-#
- if erreur :
- erreur = 20
- self.jdc.cr.warn("Fichier : "+self.nomfic)
- self.jdc.cr.warn(self.messages_erreur[erreur])
-#
- return erreur
-#
-#====
-# 5. Ecriture de lignes de commentaires
-#====
-#
- def Ecrit_Commentaires ( self, comm ) :
-#
- """
- Liste = commentaires à écrire
- Soit c'est une chaine qu'on écrit sur une ligne ;
- Soit c'est une liste, qu'on écrit à raison de une par ligne.
- Remarque : cela suppose que le fichier est ouvert en écriture
- """
-#
- if type(comm) == type([ ]) :
- Liste = comm
- else :
- Liste = [comm]
-#
- for ligne in Liste :
- self.fic.write("# "+str(ligne)+"\n")
-#
-#====
-# 6. Ecriture de lignes de titres
-#====
-#
- def Ecrit_Titre ( self, comm ) :
-#
- """
- Liste = commentaires à écrire, encadrés par des séparateurs
- Soit c'est une chaine qu'on écrit sur une ligne ;
- Soit c'est une liste, qu'on écrit à raison de une par ligne.
- Remarque : cela suppose que le fichier est ouvert en écriture
- """
-#
- self.fic.write(self.ligne_commentaire)
- self.Ecrit_Commentaires(comm)
- self.fic.write(self.ligne_commentaire)
-#
-#====
-# 7. Ecriture d'une ligne de valeurs
-#====
-#
- def Ecrit_Valeurs ( self, val ) :
-#
- """
- Liste = liste des valeurs à écrire, représenatn une ligne
- Remarque : cela suppose que le fichier est ouvert en écriture
- """
-#
- if type(val) == type([ ]) :
- ligne = " "
- for aux in val :
- ligne = ligne + " " + str(aux)
- else :
- ligne = str(val)
-#
- self.fic.write(ligne+"\n")
-#
-#
-#=======================================================================================
-#=======================================================================================
-
-
-#
-#
-if __name__ == "__main__" :
-#
- import os
- import sys
- import tempfile
-#
-# 1. ==> Préalable
-#
- Rep_Calc_LOGICIEL_global = tempfile.mktemp()
- os.mkdir(Rep_Calc_LOGICIEL_global)
-#
- jdc = None
-#
-# 2. ==> Création de la classe
-#
- nomfic = "dataGrad"
- fic = fiabilite_fichier ( jdc, Rep_Calc_LOGICIEL_global , nomfic )
-#
-# 3. ==> Ouverture du fichier
-#
- erreur = fic.Ouvre_Fichier ( "w" )
-#
-# 4. ==> Remplissage du fichier
-#
- if not erreur :
- aux = ["Titre 1", "Titre 2"]
- fic.Ecrit_Titre (aux)
- aux = ["Ligne 1", "Ligne 2"]
- fic.Ecrit_Commentaires (aux)
- aux = "Ligne en forme de chaine"
- fic.Ecrit_Commentaires (aux)
- aux = 1789.1792
- fic.Ecrit_Commentaires (aux)
- aux = [1, 0.0]
- fic.Ecrit_Valeurs (aux)
- aux = 1958.
- fic.Ecrit_Valeurs (aux)
-#
-# 5. ==> Fermeture du fichier
-#
- if not erreur :
- erreur = fic.Ferme_Fichier ( )
-#
-# 4. ==> Impression du fichier
-#
- if not erreur :
- erreur = fic.Imprime_Fichier ( )
-#
-# 4. ==> La fin
-#
- Liste = os.listdir(Rep_Calc_LOGICIEL_global)
-#
- for nomfic in Liste :
- fic_total = os.path.join(Rep_Calc_LOGICIEL_global,nomfic)
- os.chmod (fic_total,0755)
- os.remove (fic_total)
- os.rmdir (Rep_Calc_LOGICIEL_global)
-#
- if erreur :
- mess = "Erreur " + str(erreur)
- else :
- mess = "Fin normale."
- sys.exit(mess)
+++ /dev/null
-#@ MODIF fiabilite_mefisto Macro DATE 04/10/2005 AUTEUR REZETTE C.REZETTE
-# -*- coding: iso-8859-1 -*-
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-
-
-# RESPONSABLE GNICOLAS G.NICOLAS
-#
-def fiabilite_mefisto ( self, Rep_Calc_LOGICIEL_global,
- INFO, VERSION,
- SEUIL, SEUIL_TYPE,
- VARIABLE,
- valeurs_lois,
- **args ) :
-#
-# valeurs_lois est un dictionnaire indexé sur les variables.
-# Chaque case, valeurs_lois[m], est un dictionnaire contenant :
-# d["v_moy_physique"] = valeur moyenne physique
-# d["v_moy_loi"] = valeur moyenne de la loi
-# d["v_min_loi"] = valeur minimale de la loi
-# d["v_max_loi"] = valeur maximale de la loi
-# d["sigma_loi"] = ecart type de la loi
-#
-# args est le dictionnaire des arguments optionnels
-# args.keys() est la liste des mots-clés
-# args.keys()[0] est la premiere valeur de cette liste
-# args.keys()[1:] est la liste des valeurs suivantes dans cette liste
-# args.keys(mot_cle) représente le contenu de la variable mot_cle dans la macro appelante.
-#
- """ Ecriture des données spécifiques à MEFISTO. """
-#
- from Macro import fiabilite_fichier
- import os
- import string
- import Numeric
- from Utilitai.Utmess import UTMESS
-#
-#____________________________________________________________________
-#
-# 1. Préalables
-#____________________________________________________________________
-#
-#
- messages_erreur = { 0 : "Tout va bien",
- 1 : "Fichier inconnu.",
- 2 : "Problème d'ouverture de fichier.",
- 10 : "Problème d'ouverture de fichier.",
- 11 : "Problème de fermeture de fichier.",
- 20 : "Problème d'impression de fichier.",
- 50 : "Donnée inacceptable.",
- 100 : "Erreur." }
-#
- trad_oui_non = { "OUI" : 1,
- "NON" : 0 }
-#
- erreur = 0
-#
- while not erreur :
-#
-#____________________________________________________________________
-#
-# 2. Les fichiers pour le logiciel de fiabilité
-# Ils sont créés dans le répertoire d'exécution du logiciel de fiabilité, avec leurs noms officiels
-#____________________________________________________________________
-#
-#
- fic_dataMenu = "dataMenu"
- fic_dataStoch = "dataStoch"
- fic_dataNum = "dataNum"
- fic_dataGrad = "dataGrad"
-#
-#____________________________________________________________________
-#
-# 3. Construction du fichier 'dataMenu'
-#____________________________________________________________________
-#
-# 3.1 ==> Ouverture du fichier
-#
- f_menu = fiabilite_fichier.fiabilite_fichier ( self, Rep_Calc_LOGICIEL_global, fic_dataMenu, INFO )
- erreur = f_menu.Ouvre_Fichier ( "w" )
- if erreur :
- break
-#
-# 3.2 ==> Ecriture des données nécessaires
-#
- f_menu.Ecrit_Titre ("MENU DU PROGRAMME MEFISTO")
- f_menu.Ecrit_Titre ("1 <=> OUI et 0 <=> NON (entiers)")
-#
- f_menu.Ecrit_Titre ("Recherche du point de conception")
- aux = trad_oui_non[args["RECH_PT_CONCEPT"]]
- f_menu.Ecrit_Valeurs (aux)
-#
- f_menu.Ecrit_Titre ("First Order Reliability Analyses")
- aux = trad_oui_non[args["METHODE_FORM"]]
- f_menu.Ecrit_Valeurs (aux)
-#
- f_menu.Ecrit_Titre ("Second Order Reliability Analyses")
- aux = trad_oui_non[args["METHODE_SORM"]]
- f_menu.Ecrit_Valeurs (aux)
-#
- f_menu.Ecrit_Titre ("Importance Sampling Analyses")
- aux = trad_oui_non[args["TIRAGE_IMPORTANCE"]]
- f_menu.Ecrit_Valeurs (aux)
-#
- f_menu.Ecrit_Titre ("Optimality Test (1) : Hessian Test")
- aux = trad_oui_non[args["T_HESSIEN"]]
- f_menu.Ecrit_Valeurs (aux)
-#
- f_menu.Ecrit_Titre ("Optimality Test (2) : Sphere Test")
- aux = trad_oui_non[args["T_SPHERE"]]
- f_menu.Ecrit_Valeurs (aux)
-#
- f_menu.Ecrit_Titre ("Optimality Test (3) : Strong Max Test")
- aux = trad_oui_non[args["T_MAXIMUM_FORT"]]
- f_menu.Ecrit_Valeurs (aux)
-#
- f_menu.Ecrit_Titre ("Experiment Plan")
- aux = trad_oui_non[args["PLAN_EXPERIENCE"]]
- f_menu.Ecrit_Valeurs (aux)
-#
- f_menu.Ecrit_Titre ("Polynomial Taylor Approximation (order 2)")
- aux = trad_oui_non[args["POLYNOME_TAYLOR"]]
- f_menu.Ecrit_Valeurs (aux)
-#
-# 3.3 ==> Fermeture du fichier
-#
- erreur = f_menu.Ferme_Fichier ( )
- if erreur :
- break
-#
- if INFO >= 2 :
- erreur = f_menu.Imprime_Fichier ( )
- if erreur :
- break
-#
-#____________________________________________________________________
-#
-# 4. Construction du fichier "dataStoch"
-#____________________________________________________________________
-#
-# 4.1 ==> Ouverture du fichier
-#
- f_stoch = fiabilite_fichier.fiabilite_fichier ( self, Rep_Calc_LOGICIEL_global, fic_dataStoch, INFO )
- erreur = f_stoch.Ouvre_Fichier ( "w" )
- if erreur :
- break
-#
-# 4.2 ==> Nombre d'occurence de VARIABLE
-#
- nb_occu_variable = len(VARIABLE)
-#
-# 4.3 ==> Ecriture des données nécessaires
-#
- f_stoch.Ecrit_Titre ("Code name")
- aux=string.replace(VERSION,"_",".")
- aux=string.replace(aux,"N","n")
- aux=string.replace(aux,"V","v")
- f_stoch.Ecrit_Valeurs ( "aster_" + aux )
-#
- aux = [ "Gradients evaluated by the code" ]
- aux.append("1 : Au moins 1 ; 0 : aucun")
- f_stoch.Ecrit_Titre (aux)
- gradient = 0
- for m in VARIABLE :
- if m["GRADIENT"] == "OUI" : gradient = 1
- f_stoch.Ecrit_Valeurs (gradient)
-#
- f_stoch.Ecrit_Titre ("Variates number")
- f_stoch.Ecrit_Valeurs ( nb_occu_variable )
-#
- aux = [ "Stochastic Variates" ]
- aux.append("1: Uniforme (min, max)")
- aux.append("2: Normal (mean, std dev)")
- aux.append("3: LogNormal (mean, std dev, min)")
- aux.append("4: Normal Truncated (mean, std dev, min, max)")
- f_stoch.Ecrit_Titre (aux)
-#
- for m in VARIABLE :
-#
- d = valeurs_lois[m]
- if m["LOI"] == "UNIFORME" :
- f_stoch.Ecrit_Valeurs ( [ m["NOM"], 1 , d["v_min_loi"] , d["v_max_loi"] ] )
- elif m["LOI"] == "NORMALE" :
- f_stoch.Ecrit_Valeurs ( [ m["NOM"], 2 , d["v_moy_loi"] , d["sigma_loi"] ] )
- elif m["LOI"] == "LOGNORMALE" :
- f_stoch.Ecrit_Valeurs ( [ m["NOM"], 3 , d["v_moy_loi"] , d["sigma_loi"] , d["v_min_loi"] ] )
- elif m["LOI"] == "NORMALE_TRONQUEE" :
- f_stoch.Ecrit_Valeurs ( [ m["NOM"], 4 , d["v_moy_loi"] , d["sigma_loi"] , d["v_min_loi"] , d["v_max_loi"] ] )
- else :
- erreur = 50
-#
- if erreur :
- break
-#
- f_stoch.Ecrit_Titre ("Initial Points")
- for m in VARIABLE :
- if m["POINT_INI"] is None :
- aux = valeurs_lois[m]["v_moy_physique"]
- else :
- aux = m["POINT_INI"]
- f_stoch.Ecrit_Valeurs ( aux )
-#
- f_stoch.Ecrit_Titre ("Reference Points")
- for m in VARIABLE :
- if m["POINT_REF"] is None :
- aux = valeurs_lois[m]["v_moy_physique"]
- else :
- aux = m["POINT_REF"]
- f_stoch.Ecrit_Valeurs ( aux )
-#
- f_stoch.Ecrit_Titre ("Design Points")
- for m in VARIABLE :
- if args["RECH_PT_CONCEPT"] == "OUI" :
- aux = 1792.
- elif m["POINT_CONCEPT"] is None :
- aux = valeurs_lois[m]["v_moy_physique"]
- else :
- aux = m["POINT_CONCEPT"]
- f_stoch.Ecrit_Valeurs ( aux )
-#
- f_stoch.Ecrit_Titre ("Correlation matrix fictive")
-# if args.has_key('MATRICE'):
- if args["MATRICE"] != None:
- if len(args["MATRICE"]) != nb_occu_variable**2:
- UTMESS('F','FIABILITE_MEPHISTO',' LE NOMBRE D ELEMENTS'
- +' DU MOT CLE MATRICE DOIT ETRE EGAL A : '
- +str(nb_occu_variable**2))
- for m in range(nb_occu_variable) :
- aux = [ ]
- for n in range(nb_occu_variable) :
- aux.append(args["MATRICE"][n + m*nb_occu_variable])
- f_stoch.Ecrit_Valeurs ( aux )
- else:
- aux=Numeric.identity(nb_occu_variable)
- aux=Numeric.concatenate(aux)
- aux=aux.tolist()
- f_stoch.Ecrit_Valeurs ( aux )
-#
- f_stoch.Ecrit_Titre ("Parameter threshold value")
- if SEUIL_TYPE == "MAXIMUM" :
- aux = SEUIL
- else :
- aux = -SEUIL
- f_stoch.Ecrit_Valeurs ( aux )
-#
-# 4.4 ==> Fermeture du fichier
-#
- erreur = f_stoch.Ferme_Fichier ( )
- if erreur :
- break
-#
- if INFO >= 2 :
- erreur = f_stoch.Imprime_Fichier ( )
- if erreur :
- break
-#
-#____________________________________________________________________
-#
-# 5. Construction du fichier 'dataNum'
-#____________________________________________________________________
-#
-# 5.1 ==> Ouverture du fichier
-#
- f_num = fiabilite_fichier.fiabilite_fichier ( self, Rep_Calc_LOGICIEL_global, fic_dataNum, INFO )
- erreur = f_num.Ouvre_Fichier ( "w" )
- if erreur :
- break
-#
-# 5.2 ==> Ecriture des données nécessaires
-#
- f_num.Ecrit_Titre ("Parameters : EpsU, EpsG, Tau, Omega, iterMax")
- if args["RECH_PT_CONCEPT"] == "OUI" :
- f_num.Ecrit_Valeurs (args["EPSILON_U"])
- f_num.Ecrit_Valeurs (args["EPSILON_G"])
- f_num.Ecrit_Valeurs (args["TAU"])
- f_num.Ecrit_Valeurs (args["OMEGA"])
- f_num.Ecrit_Valeurs (args["ITER_MAX"])
- else :
- aux = 0.1848
- for k in range(5) :
- f_num.Ecrit_Valeurs (aux)
-#
- f_num.Ecrit_Titre ("Parameters : hgrad, hhess")
- f_num.Ecrit_Valeurs (args["HGRAD"])
- f_num.Ecrit_Valeurs (args["HHESS"])
-#
- aux = [ "Parameter Optimality Test(sphere)" ]
- aux.append("1: Parametric Method (Point Number in each direction)")
- aux.append("2: Gaussian Method (Total Point Number)")
- aux.append("3: Rejection Method (Total Point Number)")
- f_num.Ecrit_Titre (aux)
-#
- if args["T_SPHERE"] == "OUI" :
-#
- if args["METHODE_TEST"] == "PARAMETRIQUE" :
- aux1 = 1
- elif args["METHODE_TEST"] == "GAUSSIENNE" :
- aux1 = 2
- elif args["METHODE_TEST"] == "REJECTION" :
- aux1 = 3
- else :
- self.cr.warn("METHODE DE TEST : "+args["METHODE_TEST"])
- erreur = 50
- break
-#
- aux2 = args["NB_POINT"]
-#
- else :
-#
-# remarque : il faut mettre une valeur plausible en aux1, sinon plantage violent ...
- aux1 = 1
- aux2 = 1789
-#
- f_num.Ecrit_Valeurs ( [ aux1 , aux2 ] )
-#
- aux = [ "Parameters : alpha, beta" ]
- aux.append("alpha: common net")
- aux.append("beta: extreme net")
- f_num.Ecrit_Titre (aux)
- if args["PLAN_EXPERIENCE"] == "OUI" :
- aux1 = args["ALPHA"]
- aux2 = args["BETA"]
- else :
- aux1 = 1789.0
- aux2 = 1789.0
- f_num.Ecrit_Valeurs ( aux1 )
- f_num.Ecrit_Valeurs ( aux2 )
-#
- f_num.Ecrit_Titre ("Parameters Strong Max Test : cosLim, dProb")
- if args["T_MAXIMUM_FORT"] == "OUI" :
- aux1 = args["COS_LIM"]
- aux2 = args["DPROB"]
- else :
- aux1 = 0.1789
- aux2 = 0.1789
- f_num.Ecrit_Valeurs ( aux1 )
- f_num.Ecrit_Valeurs ( aux2 )
-#
- f_num.Ecrit_Titre ("Parameter Importance Samplings : Simulation Number")
- if args["TIRAGE_IMPORTANCE"] == "OUI" :
- aux = args["NB_SIMULATION"]
- else :
- aux = 1945
- f_num.Ecrit_Valeurs ( aux )
-#
-# 5.3 ==> Fermeture du fichier
-#
- erreur = f_num.Ferme_Fichier ( )
- if erreur :
- break
-#
- if INFO >= 2 :
- erreur = f_num.Imprime_Fichier ( )
- if erreur :
- break
-#
-#____________________________________________________________________
-#
-# 6. Construction du fichier 'dataGrad'
-#____________________________________________________________________
-#
-# 6.1 ==> Création du fichier
-#
- f_grad = fiabilite_fichier.fiabilite_fichier ( self, Rep_Calc_LOGICIEL_global, fic_dataGrad, INFO )
- erreur = f_grad.Ouvre_Fichier ( "w" )
- if erreur :
- break
-#
-# 6.2 ==> Ecriture des données nécessaires
-#
- f_grad.Ecrit_Titre ("Commentaires")
-#
- for m in VARIABLE :
- f_grad.Ecrit_Commentaires (m["NOM"])
- if m["GRADIENT"] == "OUI" :
- gradient = 1
- increment = 0.0
- else :
- gradient = 0
- increment = m["INCREMENT"]
- aux = [gradient,increment]
- f_grad.Ecrit_Valeurs (aux)
-#
-# 6.3 ==> Fermeture du fichier
-#
- erreur = f_grad.Ferme_Fichier ( )
- if erreur :
- break
-#
- if INFO >= 2 :
- erreur = f_grad.Imprime_Fichier ( )
- if erreur :
- break
-#
-#____________________________________________________________________
-#
-# 7. C'est fini !
-#____________________________________________________________________
-#
- break
-#
- if erreur :
- if not messages_erreur.has_key(erreur) :
- erreur = 100
- self.cr.warn(messages_erreur[erreur])
- erreur = 11
-#
- return erreur
-#
-########################## Fin de la fonction##################################
-#
-########################## Auto-test##################################
-#
-if __name__ == "__main__" :
-#
- import os
- import sys
- import tempfile
-#
- Rep_Calc_LOGICIEL_global = tempfile.mktemp()
- os.mkdir(Rep_Calc_LOGICIEL_global)
-#
- INFO = 2
- VERSION = "V3_2"
- SEUIL = 1789.
- SEUIL_TYPE = "MAXIMUM"
- VARIABLE = []
- args = {}
- valeurs = {}
-#
- erreur = fiabilite_mefisto ( None, Rep_Calc_LOGICIEL_global,
- INFO, VERSION,
- SEUIL, SEUIL_TYPE,
- VARIABLE,
- valeurs,
- **args )
-### print "Erreur = ", erreur
- Liste = os.listdir(Rep_Calc_LOGICIEL_global)
-#
- for nomfic in Liste :
- fic_total = os.path.join(Rep_Calc_LOGICIEL_global,nomfic)
- os.chmod (fic_total,0755)
- os.remove (fic_total)
- os.rmdir (Rep_Calc_LOGICIEL_global)
-#
- sys.exit("blabla")
+++ /dev/null
-#@ MODIF impr_fonction_ops Macro DATE 05/09/2005 AUTEUR DURAND C.DURAND
-# -*- coding: iso-8859-1 -*-
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-
-# RESPONSABLE MCOURTOI M.COURTOIS
-
-import os.path
-
-# ------------------------------------------------------------------------------
-def impr_fonction_ops(self, FORMAT, COURBE, INFO, **args):
- """
- Macro IMPR_FONCTION permettant d'imprimer dans un fichier des fonctions,
- colonnes de table...
- Erreurs<S> dans IMPR_FONCTION pour ne pas perdre la base.
- """
- macro='IMPR_FONCTION'
- import pprint
- import aster
- from Accas import _F
- from Utilitai import Graph
- from Utilitai.Utmess import UTMESS
- from Utilitai.UniteAster import UniteAster
- ier=0
- # La macro compte pour 1 dans la numerotation des commandes
- self.set_icmd(1)
-
- # On importe les definitions des commandes a utiliser dans la macro
- # Le nom de la variable doit etre obligatoirement le nom de la commande
- CALC_FONC_INTERP = self.get_cmd('CALC_FONC_INTERP')
- DEFI_LIST_REEL = self.get_cmd('DEFI_LIST_REEL')
- DETRUIRE = self.get_cmd('DETRUIRE')
-
- #----------------------------------------------
- # 0. Traitement des arguments, initialisations
- # unité logique des fichiers réservés
- ul_reserve=(8,)
- UL = UniteAster()
-
- # 0.1. Fichier
- nomfich=None
- if args['UNITE'] and args['UNITE']<>6:
- nomfich=UL.Nom(args['UNITE'])
- if INFO==2:
- aster.affiche('MESSAGE', ' Nom du fichier :'+nomfich+'\n')
- if nomfich and os.path.exists(nomfich) and os.stat(nomfich).st_size<>0:
- if FORMAT=='XMGRACE':
- niv='A'
- else:
- niv='I'
- UTMESS(niv,macro,'Le fichier '+nomfich+' existe déjà, on écrit ' \
- 'à la suite.')
-
- # 0.2. Récupération des valeurs sous COURBE
- unparmi=('FONCTION','LIST_RESU','FONC_X','ABSCISSE')
-
- # i0 : indice du mot-clé facteur qui contient LIST_PARA, sinon i0=0
- i0=0
- Courbe=[]
- iocc=-1
- for Ci in COURBE:
- iocc+=1
- dC = Ci.cree_dict_valeurs(Ci.mc_liste)
- if dC.has_key('LIST_PARA') and dC['LIST_PARA']!=None and i0==0:
- i0=iocc
- for mc in dC.keys():
- if dC[mc]==None: del dC[mc]
- Courbe.append(dC)
- if INFO==2:
- aster.affiche('MESSAGE',' Nombre de fonctions à analyser : '+str(len(Courbe))+'\n')
-
- # 0.3. Devra-t-on interpoler globalement ?
- # Dans ce cas, linter__ est le LIST_PARA
- # ou, à défaut, les abscisses de la première courbe
- interp=False
- if FORMAT=='TABLEAU':
- interp=True
- dCi=Courbe[i0]
- if dCi.has_key('LIST_PARA'):
- linter__=dCi['LIST_PARA']
- else:
- obj=None
- for typi in unparmi:
- if dCi.has_key(typi):
- obj=dCi[typi]
- typ=obj.__class__.__name__
- break
- if obj==None:
- UTMESS('S',macro,'incohérence entre le catalogue et la macro.')
- if typi=='FONCTION':
- if typ=='nappe_sdaster':
- lpar,lval=obj.Valeurs()
- linterp=lval[0][0]
- else:
- linterp=obj.Valeurs()[0]
- elif typi=='FONC_X':
- lbid,linterp=obj.Valeurs()
- elif typi=='ABSCISSE':
- linterp=obj
- linter__=DEFI_LIST_REEL(VALE=linterp)
- if INFO==2:
- aster.affiche('MESSAGE', ' Interpolation globale sur la liste :\n'+pprint.pformat(linter__.Valeurs())+'\n')
-
-
- #----------------------------------------------
- # 1. Récupération des valeurs des N courbes sous forme
- # d'une liste de N listes
- #----------------------------------------------
- graph=Graph.Graph()
- iocc=-1
- for dCi in Courbe:
- iocc+=1
-
- # 1.1. Type d'objet à traiter
- obj=None
- for typi in unparmi:
- if dCi.has_key(typi):
- obj=dCi[typi]
- typ=obj.__class__.__name__
- break
- if not dCi.has_key('LEGENDE') and hasattr(obj,'get_name'):
- dCi['LEGENDE']=obj.get_name()
- if obj==None:
- UTMESS('S',macro,'incohérence entre le catalogue et la macro.')
-
- # 1.2. Extraction des valeurs
-
- # 1.2.1. Mot-clé FONCTION
- if typi=='FONCTION':
- if typ=='nappe_sdaster':
- lpar,lval=obj.Valeurs()
- dico,ldicf=obj.Parametres()
- Leg=dCi['LEGENDE']
- for i in range(len(lpar)):
- p=lpar[i]
- lx=lval[i][0]
- ly=lval[i][1]
- # sur quelle liste interpoler chaque fonction
- if i==0:
- if interp:
- li__=linter__
- elif dCi.has_key('LIST_PARA'):
- li__=dCi['LIST_PARA']
- else:
- li__=DEFI_LIST_REEL(VALE=lx)
- # compléter les paramètres d'interpolation
- dic=dico.copy()
- dic.update(ldicf[i])
-
- if (interp or dCi.has_key('LIST_PARA')) and i>0:
- ftmp__=CALC_FONC_INTERP(
- FONCTION=obj,
- VALE_PARA=p,
- LIST_PARA_FONC=li__,
- **dic
- )
- pv,lv2=ftmp__.Valeurs()
- lx=lv2[0][0]
- ly=lv2[0][1]
- # on stocke les données dans le Graph
- nomresu=dic['NOM_RESU'].strip()+'_'+str(len(graph.Legendes))
- dicC={
- 'Val' : [lx,ly],
- 'Lab' : [dic['NOM_PARA_FONC'],nomresu]
- }
- # ajoute la valeur du paramètre
- dCi['LEGENDE'] = '%s %s=%g' % (Leg,dic['NOM_PARA'].strip(),p)
- Graph.AjoutParaCourbe(dicC, args=dCi)
- graph.AjoutCourbe(**dicC)
- DETRUIRE(CONCEPT=_F(NOM=('li__','ftmp__'),),ALARME='NON',INFO=1)
- else:
- ftmp__=obj
- dpar=ftmp__.Parametres()
- if interp:
- ftmp__=CALC_FONC_INTERP(
- FONCTION=obj,
- LIST_PARA=linter__,
- **dpar
- )
- elif dCi.has_key('LIST_PARA'):
- ftmp__=CALC_FONC_INTERP(
- FONCTION=obj,
- LIST_PARA=dCi['LIST_PARA'],
- **dpar
- )
- lval=list(ftmp__.Valeurs())
- lx=lval[0]
- lr=lval[1]
- if typ=='fonction_c' and dCi.has_key('PARTIE'):
- if dCi['PARTIE']=='IMAG' : lr=lval[2]
- # on stocke les données dans le Graph
- if typ=='fonction_c' and not dCi.has_key('PARTIE'):
- nomresu=dpar['NOM_RESU'].strip()+'_'+str(len(graph.Legendes))
- dicC={
- 'Val' : lval,
- 'Lab' : [dpar['NOM_PARA'],nomresu+'_R',nomresu+'_I']
- }
- else:
- nomresu=dpar['NOM_RESU'].strip()+'_'+str(len(graph.Legendes))
- dicC={
- 'Val' : [lx,lr],
- 'Lab' : [dpar['NOM_PARA'],nomresu]
- }
- Graph.AjoutParaCourbe(dicC, args=dCi)
- graph.AjoutCourbe(**dicC)
-
- # 1.2.2. Mot-clé LIST_RESU
- elif typi=='LIST_RESU':
- if interp and iocc>0:
- UTMESS('S',macro,"""Il n'y a pas de règles d'interpolation pour LIST_PARA/LIST_RESU,
- LIST_PARA/LIST_RESU ne peut donc apparaitre qu'une seule fois
- et à la première occurence de COURBE""")
- lx=dCi['LIST_PARA'].Valeurs()
- lr=obj.Valeurs()
- if len(lx)<>len(lr):
- UTMESS('S',macro,"LIST_PARA et LIST_RESU n'ont pas la meme taille")
- # on stocke les données dans le Graph
- dicC={
- 'Val' : [lx,lr],
- 'Lab' : [dCi['LIST_PARA'].get_name(),obj.get_name()]
- }
- Graph.AjoutParaCourbe(dicC, args=dCi)
- graph.AjoutCourbe(**dicC)
-
- # 1.2.3. Mot-clé FONC_X
- # exemple : obj(t)=sin(t), on imprime x=sin(t), y=cos(t)
- # ob2(t)=cos(t)
- elif typi=='FONC_X':
- ob2=dCi['FONC_Y']
- # peut-on blinder au niveau du catalogue
- if typ=="nappe_sdaster" or ob2.__class__.__name__=="nappe_sdaster":
- UTMESS('S',macro,"FONC_X/FONC_Y ne peuvent pas etre des nappes !")
- if interp and iocc>0:
- UTMESS('S',macro,"""Au format 'TABLEAU' ,FONC_X/FONC_Y ne peut apparaitre qu'une seule fois
- et à la première occurence de COURBE""")
- ftmp__=obj
- dpar=ftmp__.Parametres()
- ftm2__=ob2
- dpa2=ftm2__.Parametres()
- intloc=False
- if interp and not dCi.has_key('LIST_PARA'):
- # dans ce cas, linter__ contient les ordonnées de FONC_X
- intloc=False
- li__=linter__
- elif dCi.has_key('LIST_PARA'):
- intloc=True
- li__=dCi['LIST_PARA']
- if intloc:
- ftmp__=CALC_FONC_INTERP(
- FONCTION=obj,
- LIST_PARA=li__,
- **dpar
- )
- lt,lx=ftmp__.Valeurs()
- ftm2__=CALC_FONC_INTERP(
- FONCTION=ob2,
- LIST_PARA=li__,
- **dpa2
- )
- else:
- lt,lx=ftmp__.Valeurs()
- li__=DEFI_LIST_REEL(VALE=lt)
- ftm2__=CALC_FONC_INTERP(
- FONCTION=ob2,
- LIST_PARA=li__,
- **dpa2
- )
-
- lbid,ly=ftm2__.Valeurs()
- # on stocke les données dans le Graph
- # on imprime la liste des paramètres seulement si LIST_PARA
- if intloc:
- nomresur=dpar['NOM_RESU'].strip()+'_'+str(len(graph.Legendes))
- nomresu2=dpa2['NOM_RESU'].strip()+'_'+str(len(graph.Legendes)+1)
- dicC={
- 'Val' : [lt,lx,ly],
- 'Lab' : [dpar['NOM_PARA'],nomresur,nomresu2]
- }
- else:
- nomresur=dpar['NOM_RESU'].strip()+'_'+str(len(graph.Legendes))
- nomresu2=dpa2['NOM_RESU'].strip()+'_'+str(len(graph.Legendes)+1)
- dicC={
- 'Val' : [lx,ly],
- 'Lab' : [nomresur,nomresu2]
- }
- Graph.AjoutParaCourbe(dicC, args=dCi)
- graph.AjoutCourbe(**dicC)
-
- # 1.2.4. Mot-clé ABSCISSE / ORDONNEE
- elif typi=='ABSCISSE':
- if interp and iocc>0:
- UTMESS('S',macro,"""Il n'y a pas de règles d'interpolation pour ABSCISSE/ORDONNEE,
- ABSCISSE/ORDONNEE ne peut donc apparaitre qu'une seule fois
- et à la première occurence de COURBE""")
- lx=obj
- lr=dCi['ORDONNEE']
- if len(lx)<>len(lr):
- UTMESS('S',macro,"ABSCISSE et ORDONNEE n'ont pas la meme taille")
- # on stocke les données dans le Graph
- dicC={
- 'Val' : [lx,lr],
- 'Lab' : ['Absc','Ordo']
- }
- Graph.AjoutParaCourbe(dicC, args=dCi)
- graph.AjoutCourbe(**dicC)
-
- # 1.2.9. ménage
- DETRUIRE(CONCEPT=_F(NOM=('li__','ftmp__','ftm2__'),),ALARME='NON',INFO=1)
-
- # 1.2.99. ménage hors boucle
- DETRUIRE(CONCEPT=_F(NOM=('linter__'),), ALARME='NON',INFO=1)
-
- # 1.3. dbg
- if INFO==2:
- message='\n'+'-'*70+'\n Contenu du Graph : \n'+'-'*70
- message=message+graph.__repr__()
- message=message+'-'*70+'\n'
- aster.affiche('MESSAGE',message)
-
- #----------------------------------------------
- # 2. Impression du 'tableau' de valeurs
- #----------------------------------------------
-
- # 2.0. Surcharge des propriétés du graphique et des axes
- # (bloc quasiment identique dans Table)
- if args['TITRE']<>None: graph.Titre=args['TITRE']
- if args['SOUS_TITRE']<>None: graph.SousTitre=args['SOUS_TITRE']
- if FORMAT in ('XMGRACE','AGRAF'):
- if args['BORNE_X']<>None:
- graph.Min_X=args['BORNE_X'][0]
- graph.Max_X=args['BORNE_X'][1]
- if args['BORNE_Y']<>None:
- graph.Min_Y=args['BORNE_Y'][0]
- graph.Max_Y=args['BORNE_Y'][1]
- if args['LEGENDE_X']<>None: graph.Legende_X=args['LEGENDE_X']
- if args['LEGENDE_Y']<>None: graph.Legende_Y=args['LEGENDE_Y']
- if args['ECHELLE_X']<>None: graph.Echelle_X=args['ECHELLE_X']
- if args['ECHELLE_Y']<>None: graph.Echelle_Y=args['ECHELLE_Y']
- if args['GRILLE_X']<>None: graph.Grille_X=args['GRILLE_X']
- if args['GRILLE_Y']<>None: graph.Grille_Y=args['GRILLE_Y']
-
- kargs={
- 'FORMAT' : FORMAT,
- 'FICHIER' : nomfich,
- }
-
- # 2.1. au format TABLEAU
- if FORMAT=='TABLEAU':
- # surcharge par les formats de l'utilisateur
- kargs['dform']={
- 'csep' : args['SEPARATEUR'],
- 'ccom' : args['COMMENTAIRE'],
- 'cdeb' : args['DEBUT_LIGNE'],
- 'cfin' : args['FIN_LIGNE']
- }
-
- # 2.2. au format AGRAF
- elif FORMAT=='AGRAF':
- nomdigr=None
- if args['UNITE_DIGR']<>6:
- nomdigr=UL.Nom(args['UNITE_DIGR'])
- kargs['FICHIER']=[nomfich, nomdigr]
- kargs['dform']={ 'formR' : '%12.5E' }
-
- # 2.3. au format XMGRACE et dérivés
- elif FORMAT=='XMGRACE':
- kargs['dform']={ 'formR' : '%.8g' }
- kargs['PILOTE']=args['PILOTE']
-
- # 2.39. Format inconnu
- else:
- UTMESS('S',macro,'Format inconnu : '+FORMAT)
-
- # Traiter le cas des UL réservées
- if args['UNITE'] and args['UNITE'] in ul_reserve:
- UL.Etat(args['UNITE'], etat='F')
- if FORMAT=='AGRAF' and args['UNITE_DIGR']<>args['UNITE'] \
- and args['UNITE_DIGR'] in ul_reserve:
- UL.Etat(args['UNITE_DIGR'], etat='F')
-
- # 2.4. On trace !
- graph.Trace(**kargs)
-
- # 99. Traiter le cas des UL réservées
- UL.EtatInit()
-
- return ier
+++ /dev/null
-#@ MODIF impr_table_ops Macro DATE 21/11/2005 AUTEUR MCOURTOI M.COURTOIS
-# -*- coding: iso-8859-1 -*-
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-
-# RESPONSABLE MCOURTOI M.COURTOIS
-
-import os.path
-import re
-
-from types import ListType, TupleType, StringTypes
-EnumTypes=(ListType, TupleType)
-
-
-# ------------------------------------------------------------------------------
-def impr_table_ops(self, FORMAT, TABLE, INFO, **args):
- """
- Macro IMPR_TABLE permettant d'imprimer une table dans un fichier.
- Erreurs<S> dans IMPR_TABLE pour ne pas perdre la base.
- """
- macro='IMPR_TABLE'
- import aster
- from Accas import _F
- from Cata.cata import table_jeveux
- from Utilitai.Utmess import UTMESS
- from Utilitai.UniteAster import UniteAster
- ier=0
- # La macro compte pour 1 dans la numerotation des commandes
- self.set_icmd(1)
-
- # On importe les definitions des commandes a utiliser dans la macro
- # Le nom de la variable doit etre obligatoirement le nom de la commande
- DETRUIRE = self.get_cmd('DETRUIRE')
- RECU_FONCTION = self.get_cmd('RECU_FONCTION')
-
- #----------------------------------------------
- # 0. Traitement des arguments, initialisations
- # unité logique des fichiers réservés
- ul_reserve=(8,)
- UL = UniteAster()
-
- # 0.1. Fichier
- nomfich=None
- if args['UNITE'] and args['UNITE']<>6:
- nomfich=UL.Nom(args['UNITE'])
- if nomfich and os.path.exists(nomfich) and os.stat(nomfich).st_size<>0:
- if FORMAT=='XMGRACE':
- UTMESS('A',macro,'Le fichier '+nomfich+' existe déjà, on écrit ' \
- 'à la suite.')
-
- # 0.2. Création des dictionnaires des FILTRES
- Filtre=[]
- if args['FILTRE']:
- for Fi in args['FILTRE']:
- dF = Fi.cree_dict_valeurs(Fi.mc_liste)
- for mc in dF.keys():
- if dF[mc]==None: del dF[mc]
- Filtre.append(dF)
- # format pour l'impression des filtres
- form_filtre='\nFILTRE -> NOM_PARA: %-16s CRIT_COMP: %-4s VALE: %s'
-
- # 0.3. Création de la liste des tables (une seule sans SENSIBILITE)
- form_sens='\n... SENSIBILITE AU PARAMETRE %s'
- ltab=[]
- if args['SENSIBILITE']:
- nmemo='&NOSENSI.MEMO.CORR'.ljust(24)
- vect=aster.getvectjev(nmemo)
- if vect:
- lps=args['SENSIBILITE']
- if not type(lps) in EnumTypes:
- lps=[lps,]
- for ps in [ps.get_name() for ps in lps]:
- trouv=False
- for ch in vect[0:len(vect):2]:
- if ch[0:8].strip()==TABLE.get_name() and ch[8:16].strip()==ps:
- trouv=True
- ncomp=ch[16:24].strip()
- sdtab=table_jeveux(ncomp)
- tabs=sdtab.EXTR_TABLE()
- tabs.titr+=form_sens % ps
- ltab.append([tabs, sdtab])
- if not trouv:
- UTMESS('A',macro,'Dérivée de %s par rapport à %s non disponible'\
- % (TABLE.get_name(), ps))
- else:
- UTMESS('A',macro,'Pas de calcul de sensibilité accessible.')
- else:
- ltab.append([TABLE.EXTR_TABLE(), TABLE])
-
- if len(ltab)<1:
- return ier
-
- # 0.4.1. liste des paramètres à conserver
- nom_para=ltab[0][0].para
- if args['NOM_PARA']:
- nom_para=args['NOM_PARA']
- if not type(nom_para) in EnumTypes:
- nom_para=[nom_para,]
-
- # 0.4.2. Traiter le cas des UL réservées
- if args['UNITE'] and args['UNITE'] in ul_reserve:
- UL.Etat(args['UNITE'], etat='F')
-
- #----------------------------------------------
- # Boucle sur les tables
- for tab, sdtab in ltab:
-
- # ----- 1. Infos de base
- if INFO==2:
- print 'IMPRESSION DE LA TABLE : %s' % sdtab.get_name()
-
- if args['TITRE']:
- tab.titr=args['TITRE'] + '\n' + tab.titr
-
- # ----- 2. Filtres
- for Fi in Filtre:
- col = getattr(tab, Fi['NOM_PARA'])
- # peu importe le type
- opts=[Fi[k] for k in ('VALE','VALE_I','VALE_C','VALE_K') if Fi.has_key(k)]
- kargs={}
- for k in ('CRITERE','PRECISION'):
- if Fi.has_key(k):
- kargs[k]=Fi[k]
- tab = tab & ( getattr(col, Fi['CRIT_COMP'])(*opts,**kargs) )
- # trace l'operation dans le titre
- #if FORMAT in ('TABLEAU','ASTER'):
- tab.titr+=form_filtre % (Fi['NOM_PARA'], Fi['CRIT_COMP'], \
- ' '.join([str(v) for v in opts]))
-
- # ----- 3. Tris
- if args['TRI']:
- # une seule occurence de TRI
- T0=args['TRI'][0]
- dT=T0.cree_dict_valeurs(T0.mc_liste)
- tab.sort(CLES=dT['NOM_PARA'], ORDRE=dT['ORDRE'])
-
- # ----- 4. Impression
- # vérification des paramètres
- for p in nom_para:
- if not p in tab.para:
- UTMESS('A', 'IMPR_TABLE', 'Paramètre absent de la table : %s' % p)
-
- # sélection des paramètres
- timp=tab[nom_para]
-
- # passage des mots-clés de mise en forme à la méthode Impr
- kargs=args.copy()
- kargs.update({
- 'FORMAT' : FORMAT,
- 'FICHIER' : nomfich,
- 'dform' : {},
- })
- # pour l'impression des fonctions
- kfonc={
- 'FORMAT' : FORMAT,
- 'FICHIER' : nomfich,
- }
-
- # 4.1. au format AGRAF
- if FORMAT=='AGRAF':
- kargs['dform']={ 'formR' : '%12.5E' }
- kfonc['FORMAT']='TABLEAU'
-
- # 4.2. au format XMGRACE et dérivés
- elif FORMAT=='XMGRACE':
- kargs['dform']={ 'formR' : '%.8g' }
- kargs['PILOTE']=args['PILOTE']
- kfonc['PILOTE']=args['PILOTE']
-
- # 4.3. format spécifié dans les arguments
- if args['FORMAT_R']:
- kargs['dform'].update({ 'formR' : fmtF2PY(args['FORMAT_R']) })
-
- # 4.4. regroupement par paramètre : PAGINATION
- if args['PAGINATION']:
- l_ppag=args['PAGINATION']
- if not type(l_ppag) in EnumTypes:
- l_ppag=[l_ppag,]
- kargs['PAGINATION'] = [p for p in l_ppag if p in nom_para]
- l_para_err = [p for p in l_ppag if not p in nom_para]
- if len(l_para_err)>0:
- UTMESS('A', 'IMPR_TABLE', 'Paramètres absents de la table (ou de '\
- 'NOM_PARA) : %s' % ', '.join(l_para_err))
-
- timp.Impr(**kargs)
-
- # ----- 5. IMPR_FONCTION='OUI'
- if args['IMPR_FONCTION'] and args['IMPR_FONCTION']=='OUI':
- # cherche parmi les cellules celles qui contiennent un nom de fonction
- dfon={}
- for row in timp:
- for par,cell in row.items():
- if type(cell) in StringTypes:
- if aster.getvectjev(cell.strip().ljust(19)+'.PROL')<>None:
- dfon[cell.strip().ljust(19)]=par
- # impression des fonctions trouvées
- for f,par in dfon.items():
- __fonc=RECU_FONCTION(
- TABLE=sdtab,
- FILTRE=_F(
- NOM_PARA=par,
- VALE_K=f,
- ),
- NOM_PARA_TABL=par,
- )
- __fonc.Trace(**kfonc)
- DETRUIRE(CONCEPT=_F(NOM=('__fonc',),), ALARME='NON', INFO=1,)
-
- # 99. Traiter le cas des UL réservées
- UL.EtatInit()
-
- return ier
-
-# ------------------------------------------------------------------------------
-def fmtF2PY(fformat):
- """Convertit un format Fortran en format Python (printf style).
- Gère uniquement les fortrans réels, par exemple : E12.5, 1PE13.6, D12.5...
- """
- fmt=''
- matP=re.search('([0-9]+)P',fformat)
- if matP:
- fmt+=' '*int(matP.group(1))
- matR=re.search('([eEdDfFgG]{1})([\.0-9]+)',fformat)
- if matR:
- fmt+='%'+matR.group(2)+re.sub('[dD]+','E',matR.group(1))
- try:
- s=fmt % -0.123
- except (ValueError, TypeError), msg:
- fmt='%12.5E'
- print 'Error :',msg
- print 'Format par défaut utilisé :',fmt
- return fmt
+++ /dev/null
-#@ MODIF info_fonction_ops Macro DATE 12/05/2005 AUTEUR DURAND C.DURAND
-# -*- coding: iso-8859-1 -*-
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2005 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-def info_fonction_ops(self,RMS,NOCI_SEISME,MAX,NORME,ECART_TYPE,**args):
- """
- Ecriture de la macro INFO_FONCTION
- """
- ier=0
- import string
- from Utilitai.t_fonction import t_fonction,t_fonction_c,t_nappe
- import math
- from Accas import _F
- from Utilitai.Utmess import UTMESS
-
- ### On importe les definitions des commandes a utiliser dans la macro
- CREA_TABLE = self.get_cmd('CREA_TABLE')
- CALC_FONCTION = self.get_cmd('CALC_FONCTION')
-
- ### Comptage commandes + déclaration concept sortant
- self.set_icmd(1)
- self.DeclareOut('C_out',self.sd)
-
- ### type de traitement
-
- ###
- if (MAX != None):
- __ff=MAX['FONCTION'].convert()
- __ex=__ff.extreme()
- n_mini=len(__ex['min'])
- n_maxi=len(__ex['max'])
- listeMCF=[_F(LISTE_K=[MAX['FONCTION'].nom]*(n_mini+n_maxi),PARA='FONCTION'),
- _F(LISTE_K=['MINI',]*n_mini+['MAXI',]*n_maxi,PARA='TYPE'),]
- if isinstance(__ff,t_nappe) :
- listeMCF=listeMCF+[\
- _F(LISTE_R=[i[0] for i in __ex['min']]+[i[0] for i in __ex['max']],PARA=__ff.para['NOM_PARA']),\
- _F(LISTE_R=[i[1] for i in __ex['min']]+[i[1] for i in __ex['max']],PARA=__ff.para['NOM_PARA_FONC']),\
- _F(LISTE_R=[i[2] for i in __ex['min']]+[i[2] for i in __ex['max']],PARA=__ff.para['NOM_RESU'])]
- else :
- listeMCF=listeMCF+[\
- _F(LISTE_R=[i[0] for i in __ex['min']]+[i[0] for i in __ex['max']],PARA=__ff.para['NOM_PARA']),\
- _F(LISTE_R=[i[1] for i in __ex['min']]+[i[1] for i in __ex['max']],PARA=__ff.para['NOM_RESU'])]
- C_out=CREA_TABLE(LISTE=listeMCF)
-
- ###
- if (ECART_TYPE != None):
- __ff=ECART_TYPE['FONCTION'].convert()
- if ECART_TYPE['INST_INIT']!=None : tini=ECART_TYPE['INST_INIT']
- else : tini=__ff.vale_x[0]
- if ECART_TYPE['INST_FIN' ]!=None : tfin=ECART_TYPE['INST_FIN' ]
- else : tfin=__ff.vale_x[-1]
- __ff=__ff.cut(tini,__ff.vale_x[-1],ECART_TYPE['PRECISION'],ECART_TYPE['CRITERE'])
- __ff=__ff.cut(__ff.vale_x[0],tfin,ECART_TYPE['PRECISION'],ECART_TYPE['CRITERE'])
- if ECART_TYPE['METHODE' ]=='SIMPSON' : __ex=__ff.simpson(0.)
- if ECART_TYPE['METHODE' ]=='TRAPEZE' : __ex=__ff.trapeze(0.)
- fmoy=__ex.vale_y[-1]/(__ff.vale_x[-1]-__ff.vale_x[0])
- __ff=__ff+(-1*fmoy)
- __ff=__ff*__ff
- if ECART_TYPE['METHODE' ]=='SIMPSON' : __ez=__ff.simpson(0.)
- if ECART_TYPE['METHODE' ]=='TRAPEZE' : __ez=__ff.trapeze(0.)
- sigma=math.sqrt(__ez.vale_y[-1]/(__ff.vale_x[-1]-__ff.vale_x[0]))
- C_out=CREA_TABLE(LISTE=(_F(LISTE_K=ECART_TYPE['FONCTION'].nom,PARA='FONCTION'),
- _F(LISTE_K=ECART_TYPE['METHODE'] ,PARA='METHODE'),
- _F(LISTE_R=fmoy ,PARA='MOYENNE'),
- _F(LISTE_R=sigma ,PARA='ECART_TYPE'),
- _F(LISTE_R=tini ,PARA='INST_INIT'),
- _F(LISTE_R=tfin ,PARA='INST_FIN'),)
- )
-
- ###
- if (RMS != None):
- RMS =list(RMS)
- sigm =[]
- tmpi =[]
- tmpf =[]
- nomf =[]
- meth =[]
- for i_rms in RMS :
- __ff=i_rms['FONCTION'].convert()
- if i_rms['INST_INIT']!=None : tini=i_rms['INST_INIT']
- else : tini=__ff.vale_x[0]
- if i_rms['INST_FIN' ]!=None : tfin=i_rms['INST_FIN' ]
- else : tfin=__ff.vale_x[-1]
- __ff=__ff.cut(tini,__ff.vale_x[-1],i_rms['PRECISION'],i_rms['CRITERE'])
- __ff=__ff.cut(__ff.vale_x[0],tfin,i_rms['PRECISION'],i_rms['CRITERE'])
- __ff=__ff*__ff
- if i_rms['METHODE' ]=='SIMPSON' : __ez=__ff.simpson(0.)
- if i_rms['METHODE' ]=='TRAPEZE' :
- __ez=__ff.trapeze(0.)
- sigm.append(math.sqrt(__ez.vale_y[-1]/(__ff.vale_x[-1]-__ff.vale_x[0])))
- tmpi.append(tini)
- tmpf.append(tfin)
- nomf.append(i_rms['FONCTION'].nom)
- meth.append(i_rms['METHODE'])
- C_out=CREA_TABLE(LISTE=(_F(LISTE_K=nomf ,PARA='FONCTION'),
- _F(LISTE_K=meth ,PARA='METHODE'),
- _F(LISTE_R=tmpi ,PARA='INST_INIT'),
- _F(LISTE_R=tmpf ,PARA='INST_FIN'),
- _F(LISTE_R=sigm ,PARA='RMS'), )
- )
-
- ###
- if (NORME != None):
- __ff=NORME['FONCTION'].convert()
- norme=[]
- for __fi in __ff.l_fonc :
- norme.append(__fi.normel2())
- nom=[NORME['FONCTION'].nom,]*len(norme)
- C_out=CREA_TABLE(LISTE=(_F(LISTE_R=norme ,PARA='NORME'),
- _F(LISTE_K=nom ,PARA='FONCTION'), )
- )
-
- ###
- if (NOCI_SEISME != None):
- l_table=[]
- if NOCI_SEISME['SPEC_OSCI'] !=None :
- ### cas intensité spectrale d'une nappe de SRO
- ### la seule option licite est INTE_SPEC
- UTMESS('I','INFO_FONCTION',''' : intensite spectrale, avant de calculer l'\
-intensite spectrale, il est prudent de verifier la norme de la nappe sur laquelle \
-porte le calcul, ceci peut etre une source d erreurs.''')
- amor=NOCI_SEISME['AMOR_REDUIT']
- fini=NOCI_SEISME['FREQ_INIT' ]
- ffin=NOCI_SEISME['FREQ_FIN' ]
- __sp =NOCI_SEISME['SPEC_OSCI'].convert()
- vale_x=__sp.l_fonc[0].vale_x
- vale_y=[__sp(amor,f) for f in vale_x]
- para =__sp.l_fonc[0].para
- __srov=t_fonction(vale_x,vale_y,para)
- if NOCI_SEISME['NATURE']=='DEPL' :
- __srov.vale_y=(__srov.vale_y/__srov.vale_x)*2.*math.pi
- elif NOCI_SEISME['NATURE']=='VITE' :
- __srov.vale_y=__srov.vale_y/__srov.vale_x/__srov.vale_x
- elif NOCI_SEISME['NATURE']=='ACCE' :
- __srov.vale_y=__srov.vale_y/__srov.vale_x/__srov.vale_x
- __srov.vale_y=__srov.vale_y/__srov.vale_x/2./math.pi
- __srov=__srov.cut(fini,ffin,NOCI_SEISME['PRECISION'],NOCI_SEISME['CRITERE'])
- insp=__srov.trapeze(0.).vale_y[-1]
- l_table.append(_F(LISTE_R=fini ,PARA='FREQ_INIT' ))
- l_table.append(_F(LISTE_R=ffin ,PARA='FREQ_FIN' ))
- l_table.append(_F(LISTE_R=amor ,PARA='AMOR_REDUIT'))
- l_table.append(_F(LISTE_R=insp ,PARA='INTE_SPECT' ))
- if NOCI_SEISME['FONCTION'] !=None :
- ### cas fonction
- l_table.append(_F(LISTE_K=NOCI_SEISME['FONCTION'].nom,PARA='FONCTION'))
- __ac=NOCI_SEISME['FONCTION'].convert()
- option= NOCI_SEISME['OPTION']
- if NOCI_SEISME['INST_INIT']!=None : tdeb=NOCI_SEISME['INST_INIT']
- else : tdeb=__ac.vale_x[0]
- if NOCI_SEISME['INST_FIN' ]!=None : tfin=NOCI_SEISME['INST_FIN' ]
- else : tfin=__ac.vale_x[-1]
- # calcul de la vitesse :
- __vi=__ac.trapeze(NOCI_SEISME['COEF'])
- # calcul du déplacement :
- __de=__vi.trapeze(NOCI_SEISME['COEF'])
- # calcul de |acceleration| :
- __aa=__ac.abs()
- # calcul de integrale(|acceleration|) :
- ### on "coupe" la fonction entre tdeb et tfin
- __ac=__ac.cut(tdeb,tfin,NOCI_SEISME['PRECISION'],NOCI_SEISME['CRITERE'])
- __vi=__vi.cut(tdeb,tfin,NOCI_SEISME['PRECISION'],NOCI_SEISME['CRITERE'])
- __de=__de.cut(tdeb,tfin,NOCI_SEISME['PRECISION'],NOCI_SEISME['CRITERE'])
- __aa=__aa.cut(tdeb,tfin,NOCI_SEISME['PRECISION'],NOCI_SEISME['CRITERE'])
- if NOCI_SEISME['FREQ' ]!=None : l_freq=NOCI_SEISME['FREQ']
- elif NOCI_SEISME['LIST_FREQ']!=None : l_freq=NOCI_SEISME['LIST_FREQ'].Valeurs()
- else :
- # fréquences par défaut
- l_freq=[]
- for i in range(56) : l_freq.append( 0.2+0.050*i)
- for i in range( 8) : l_freq.append( 3.0+0.075*i)
- for i in range(14) : l_freq.append( 3.6+0.100*i)
- for i in range(24) : l_freq.append( 5.0+0.125*i)
- for i in range(28) : l_freq.append( 8.0+0.250*i)
- for i in range( 6) : l_freq.append(15.0+0.500*i)
- for i in range( 4) : l_freq.append(18.0+1.000*i)
- for i in range(10) : l_freq.append(22.0+1.500*i)
- if option in('TOUT','MAXI','ACCE_SUR_VITE') :
- # calcul du max des valeurs absolues
- maxa_ac=__ac.abs().extreme()['max'][0][1]
- maxa_vi=__vi.abs().extreme()['max'][0][1]
- maxa_de=__de.abs().extreme()['max'][0][1]
- l_table.append(_F(LISTE_R=maxa_ac,PARA='ACCE_MAX'))
- l_table.append(_F(LISTE_R=maxa_vi,PARA='VITE_MAX'))
- l_table.append(_F(LISTE_R=maxa_de,PARA='DEPL_MAX'))
- l_table.append(_F(LISTE_R=maxa_ac/maxa_vi,PARA='ACCE_SUR_VITE'))
- if option in('TOUT','INTE_ARIAS') :
- __a2=__ac*__ac
- inte_arias=__a2.trapeze(0.).vale_y[-1]
- inte_arias=inte_arias*math.pi/NOCI_SEISME['PESANTEUR']/2.
- l_table.append(_F(LISTE_R=inte_arias,PARA='INTE_ARIAS'))
- if option in('TOUT','POUV_DEST') :
- __v2=__vi*__vi
- pouv_dest=__v2.trapeze(0.).vale_y[-1]
- pouv_dest=pouv_dest*(math.pi)**3/NOCI_SEISME['PESANTEUR']/2.
- l_table.append(_F(LISTE_R=pouv_dest,PARA='POUV_DEST'))
- if option in('TOUT','VITE_ABSO_CUMU') :
- __vc=__aa.trapeze(0.)
- vite_abso=__vc.vale_y[-1]
- l_table.append(_F(LISTE_R=vite_abso,PARA='VITE_ABSO_CUMU'))
- if option in('TOUT','INTE_SPEC') :
- amor=NOCI_SEISME['AMOR_REDUIT']
- fini=NOCI_SEISME['FREQ_INIT' ]
- ffin=NOCI_SEISME['FREQ_FIN' ]
- __so= CALC_FONCTION(SPEC_OSCI=_F(
- NATURE ='VITE',
- NATURE_FONC='ACCE',
- FONCTION =NOCI_SEISME['FONCTION'],
- METHODE ='NIGAM',
- NORME =NOCI_SEISME['NORME'],
- FREQ =l_freq,
- AMOR_REDUIT=(amor,)
- ), )
- __srov=__so.convert().l_fonc[0]
- __srov=__srov.cut(fini,ffin,NOCI_SEISME['PRECISION'],NOCI_SEISME['CRITERE'])
- __srov.vale_y=__srov.vale_y/__srov.vale_x/__srov.vale_x
- insp=__srov.trapeze(0.).vale_y[-1]
- l_table.append(_F(LISTE_R=fini ,PARA='FREQ_INIT' ))
- l_table.append(_F(LISTE_R=ffin ,PARA='FREQ_FIN' ))
- l_table.append(_F(LISTE_R=amor ,PARA='AMOR_REDUIT'))
- l_table.append(_F(LISTE_R=insp ,PARA='INTE_SPECT' ))
- if option in('TOUT','DUREE_PHAS_FORT') :
- __a2=__ac*__ac
- __i2=__a2.trapeze(0.)
- arias = __i2.vale_y[-1]*math.pi/NOCI_SEISME['PESANTEUR']/2.
- valinf = arias * NOCI_SEISME['BORNE_INF']
- valsup = arias * NOCI_SEISME['BORNE_SUP']
- for i in range(len(__i2.vale_x)) :
- ariask = __i2.vale_y[i]*math.pi/NOCI_SEISME['PESANTEUR']/2.
- if ariask>=valinf : break
- for j in range(len(__i2.vale_x)-1,-1,-1) :
- ariask = __i2.vale_y[j]*math.pi/NOCI_SEISME['PESANTEUR']/2.
- if ariask<=valsup : break
- dphfor = __i2.vale_x[j] - __i2.vale_x[i]
- l_table.append(_F(LISTE_R=dphfor,PARA='DUREE_PHAS_FORT'))
- C_out=CREA_TABLE(LISTE=l_table)
-
- return ier
+++ /dev/null
-#@ MODIF lire_fonction_ops Macro DATE 24/05/2005 AUTEUR MCOURTOI M.COURTOIS
-# -*- coding: iso-8859-1 -*-
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-
-import os.path, Numeric
-
-# ------------------------------------------------------------------------------
-def lire_blocs(nomfich, SEPAR):
- """Retourne la liste des blocs
- """
- def info(ib, nlig, ncol):
- """Affiche les infos d'un bloc"""
- print " . Bloc %2d : %6d lignes, %6d colonnes" % (ib, nlig, ncol)
- print " Lecture des blocs du fichier '%s'" % nomfich
- fich=open(nomfich, 'r')
- ier=0
- message = ''
- if SEPAR=='None' : SEPAR=None
- blocs = []
- lignes = []
- llen=0
- il=0
- for line in fich:
- il+=1
- try:
- if line.strip()=='':
- raise ValueError
- splin = line.split(SEPAR)
- lignes.append(map(float, splin))
- if llen==0:
- llen=len(splin)
- elif len(splin)<>llen:
- ier+=1
- message='Ligne %d : %d champs au lieu de %d attendus' % (il,len(splin),llen)
- return ier, message, []
- except ValueError:
- if lignes==[]:
- pass # dans ce cas, on a plusieurs lignes délimitant 2 fonctions
- else:
- blocs.append(Numeric.array(lignes))
- info(len(blocs), len(lignes), llen)
- lignes=[]
- llen=0
- fich.close()
- if lignes!=[] :
- blocs.append(Numeric.array(lignes))
- info(len(blocs), len(lignes), llen)
- return ier, message, blocs
-
-# ------------------------------------------------------------------------------
-def liste_double(nomfich,INDIC_PARA,INDIC_RESU,SEPAR):
- """Méthode de construction du VALE pour le format libre
- format LIBRE
- Les lignes contenant autre chose que des séquences de nombres
- réels et de séparateurs sont considérées comme délimitant deux
- fonctions différentes. Cette situation correspond à l exception
- ValueError levée par le map de float. Le deuxieme indice de
- INDIC_PARA et INDIC_RESU est l indice permettant de pointer sur la
- fonction voulue, au sens de ce découpage.
- """
- from Utilitai.transpose import transpose
- ier, message, blocs = lire_blocs(nomfich, SEPAR)
- if ier<>0:
- return ier,message,[]
-
- # vérifications de cohérences lignes et colonnes
- nb_blocs = len(blocs)
- bloc_para = INDIC_PARA[0]
- col_para = INDIC_PARA[1]
- bloc_resu = INDIC_RESU[0]
- col_resu = INDIC_RESU[1]
- msg=[]
- if bloc_para>nb_blocs :
- ier+=1
- msg.append("Il y a %d blocs or INDIC_PARA=(%d, .)" % (nb_blocs, bloc_para))
- if bloc_resu>nb_blocs:
- ier+=1
- msg.append("Il y a %d blocs or INDIC_RESU=(%d, .)" % (nb_blocs, bloc_resu))
- if ier<>0:
- return ier, '\n'.join(msg), []
-
- if col_para>len(blocs[bloc_para-1][0]):
- ier+=1
- msg.append("Le bloc %d comporte %d colonnes or INDIC_PARA=(., %d)" % \
- (bloc_para, len(blocs[bloc_para-1][0]), col_para))
- if col_resu>len(blocs[bloc_resu-1][0]) :
- ier+=1
- msg.append("Le bloc %d comporte %d colonnes or INDIC_RESU=(., %d)" % \
- (bloc_resu, len(blocs[bloc_resu-1][0]), col_resu))
- if ier<>0:
- return ier, '\n'.join(msg), []
-
- # construction du VALE de la fonction par recherche des indices
- # de colonnes et de fonctions dans le tableau blocs
- vale_para = blocs[bloc_para-1][:,col_para-1]
- vale_resu = blocs[bloc_resu-1][:,col_resu-1]
- if len(vale_para)!=len(vale_resu) :
- ier+=1
- print 'VALE_PARA =', vale_para
- print 'VALE_RESU =', vale_resu
- message="""Les deux colonnes extraites n'ont pas la meme longueur
- %d lignes pour PARA
- %d lignes pour RESU""" % (len(vale_para), len(vale_resu))
- if ier<>0:
- return ier,message,[]
-
- laux=transpose([vale_para, vale_resu])
- liste_vale=[]
- for v in laux: liste_vale.extend(v)
- return ier,'',liste_vale
-
-# ------------------------------------------------------------------------------
-def liste_simple(nomfich,INDIC_PARA,SEPAR):
- """recherche d'une liste simple
- """
- ier, message, blocs = lire_blocs(nomfich, SEPAR)
-
- # vérifications de cohérences lignes et colonnes
- nb_blocs = len(blocs)
- bloc_para = INDIC_PARA[0]
- col_para = INDIC_PARA[1]
- msg=[]
- if bloc_para>nb_blocs :
- ier+=1
- msg.append("Il y a %d blocs or INDIC_PARA=(%d, .)" % (nb_blocs, bloc_para))
- if col_para>len(blocs[bloc_para-1][0]):
- ier+=1
- msg.append("Le bloc %d comporte %d colonnes or INDIC_PARA=(., %d)" % \
- (bloc_para, len(blocs[bloc_para-1][0]), col_para))
- if ier<>0:
- return ier, '\n'.join(msg), []
-
- # construction du VALE de la fonction par recherche des indices
- # de colonnes et de fonctions dans le tableau l_fonc
- vale_1=blocs[bloc_para-1][:,col_para-1]
- return ier,'',vale_1.tolist()
-
-# ------------------------------------------------------------------------------
-def lire_fonction_ops(self,FORMAT,TYPE,SEPAR,INDIC_PARA,UNITE,
- NOM_PARA,NOM_RESU,INTERPOL,PROL_DROITE,
- PROL_GAUCHE,VERIF,INFO,TITRE,**args):
- """Méthode corps de la macro
- """
- from Accas import _F
- from Utilitai.Utmess import UTMESS
- from Utilitai.UniteAster import UniteAster
-
- ier=0
- # La macro compte pour 1 dans la numerotation des commandes
- self.set_icmd(1)
-
- # On recopie le mot cle defi_fonction pour le proteger
- if TYPE=='NAPPE' :
- mc_DEFI_FONCTION=args['DEFI_FONCTION']
-
- # On importe les definitions des commandes a utiliser dans la macro
- DEFI_FONCTION =self.get_cmd('DEFI_FONCTION')
- DEFI_NAPPE =self.get_cmd('DEFI_NAPPE')
-
- nompro='LIRE_FONCTION'
-
- # Lecture de la fonction dans un fichier d unité logique UNITE
- UL = UniteAster()
- nomfich=UL.Nom(UNITE)
- if not os.path.isfile(nomfich):
- UTMESS('F', nompro, "le fichier '%s' est introuvable" % nomfich)
-
- # fonction(_c) ou nappe en sortie
- self.DeclareOut('ut_fonc',self.sd)
-
- if TYPE=='FONCTION':
- # mise en forme de la liste de valeurs suivant le format choisi :
- ier,message,liste_vale=liste_double(nomfich,INDIC_PARA,args['INDIC_RESU'],SEPAR)
- if ier!=0: UTMESS('F', nompro, message)
-
- # création de la fonction ASTER :
- ut_fonc=DEFI_FONCTION( NOM_PARA =NOM_PARA,
- NOM_RESU =NOM_RESU,
- PROL_DROITE=PROL_DROITE,
- PROL_GAUCHE=PROL_GAUCHE,
- INTERPOL =INTERPOL,
- INFO =INFO,
- TITRE =TITRE,
- VERIF =VERIF,
- VALE =liste_vale,)
-
- elif TYPE=='FONCTION_C':
- # mise en forme de la liste de valeurs suivant le format choisi :
- if 'INDIC_REEL' in args :
- indic1=args['INDIC_REEL']
- indic2=args['INDIC_IMAG']
- if 'INDIC_MODU' in args :
- indic1=args['INDIC_MODU']
- indic2=args['INDIC_PHAS']
- ier,message,liste_vale_r=liste_double(nomfich,INDIC_PARA,indic1,SEPAR)
- if ier!=0: UTMESS('F', nompro, message)
-
- ier,message,liste_vale_i=liste_double(nomfich,INDIC_PARA,indic2,SEPAR)
- if ier!=0: UTMESS('F', nompro, message)
-
- liste=[]
- if 'INDIC_REEL' in args :
- for i in range(len(liste_vale_r)/2) :
- liste.extend([liste_vale_r[2*i],liste_vale_r[2*i+1],liste_vale_i[2*i+1]])
- elif 'INDIC_MODU' in args :
- for i in range(len(liste_vale_r)/2) :
- module=liste_vale_r[2*i+1]
- phase =liste_vale_i[2*i+1]
- liste.extend([liste_vale_r[2*i],module*cos(phase),module*sin(phase)])
-
- # création de la fonction ASTER :
- ut_fonc=DEFI_FONCTION( NOM_PARA =NOM_PARA,
- NOM_RESU =NOM_RESU,
- PROL_DROITE =PROL_DROITE,
- PROL_GAUCHE =PROL_GAUCHE,
- INTERPOL =INTERPOL,
- INFO =INFO,
- TITRE =TITRE,
- VERIF =VERIF,
- VALE_C =liste,)
-
- elif TYPE=='NAPPE':
-
- # création de la nappe ASTER :
- motscles={}
- motscles['DEFI_FONCTION']=[]
- for elem in mc_DEFI_FONCTION:
- ier,message,liste_vale=liste_double(nomfich,args['INDIC_ABSCISSE'],elem['INDIC_RESU'],SEPAR)
- if ier!=0: UTMESS('F', nompro, message)
-
- motscles['DEFI_FONCTION'].append( _F( VALE =liste_vale,
- INTERPOL =args['INTERPOL_FONC'],
- PROL_DROITE=args['PROL_DROITE_FONC'],
- PROL_GAUCHE=args['PROL_GAUCHE_FONC'] ) )
- ier,message,liste_para=liste_simple(nomfich,INDIC_PARA,SEPAR)
- if ier!=0: UTMESS('F', nompro, message)
-
- # création de la nappe
- ut_fonc=DEFI_NAPPE( PARA =liste_para,
- NOM_PARA =NOM_PARA,
- NOM_PARA_FONC =args['NOM_PARA_FONC'],
- NOM_RESU =NOM_RESU,
- PROL_DROITE =PROL_DROITE,
- PROL_GAUCHE =PROL_GAUCHE,
- INTERPOL =INTERPOL,
- INFO =INFO,
- TITRE =TITRE,
- VERIF =VERIF,
- **motscles)
- # remet UNITE dans son état initial
- UL.EtatInit()
- return ier
+++ /dev/null
-#@ MODIF lire_inte_spec_ops Macro DATE 05/09/2005 AUTEUR DURAND C.DURAND
-# -*- coding: iso-8859-1 -*-
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-
-def lire_inte_spec_ops(self,UNITE,FORMAT,NOM_PARA,NOM_RESU,INTERPOL,
- PROL_DROITE,PROL_GAUCHE,TITRE,INFO,**args):
- ier=0
-
- from Accas import _F
- import os
- from math import cos,sin
- from Utilitai.Utmess import UTMESS
- from Utilitai.UniteAster import UniteAster
- # On importe les definitions des commandes a utiliser dans la macro
- DEFI_FONCTION =self.get_cmd('DEFI_FONCTION')
- CREA_TABLE =self.get_cmd('CREA_TABLE')
-
- # La macro compte pour 1 dans la numerotation des commandes
- self.set_icmd(1)
- nompro='LIRE_INTE_SPEC'
-
- # Lecture de la fonction dans un fichier d unité logique UNITE
- UL = UniteAster()
- nomfich=UL.Nom(UNITE)
- if not os.path.isfile(nomfich):
- UTMESS('F', nompro, "le fichier '%s' est introuvable" % nomfich)
- file=open(nomfich,'r')
- texte=file.read()
- file.close()
-
- list_fonc=texte.split('FONCTION_C')
- entete=list_fonc.pop(0)
- try :
- entete=entete[entete.index('DIM'):]
- dim=int(entete[entete.index('=')+1:entete.index('\n')])
- except ValueError :
- UTMESS('F', nompro, "la dimension DIM n est pas précisée dans le fichier lu")
-
- if len(list_fonc)!=(dim*(dim+1)/2):
- UTMESS('F', nompro, "nombre de fonctions incorrect")
-
- nume_i=[]
- nume_j=[]
- l_fonc=[]
- for i in range(dim*(dim+1)/2):
- numi=list_fonc[i][list_fonc[i].index('I =')+3:]
- numi=numi[:numi.index('\n')]
- nume_i.append(int(numi))
- numj=list_fonc[i][list_fonc[i].index('J =')+3:]
- numj=numj[:numj.index('\n')]
- nume_j.append(int(numj))
- try :
- vale_fonc=list_fonc[i][list_fonc[i].index('VALEUR =\n')+9:list_fonc[i].index('FINSF\n')]
- vale_fonc=vale_fonc.replace('\n',' ')
- vale_fonc=map(float,vale_fonc.split())
- except ValueError :
- UTMESS('F', nompro, "erreur dans les données de fonctions")
-
- liste=[]
- if FORMAT=='REEL_IMAG':
- liste=vale_fonc
- elif FORMAT=='MODULE_PHASE':
- for i in range(len(vale_fonc)/3) :
- module=vale_fonc[3*i+1]
- phase =vale_fonc[3*i+2]
- liste=liste+[vale_fonc[3*i],module*cos(phase),module*sin(phase)]
-
- # création de la fonction ASTER :
- _fonc=DEFI_FONCTION( NOM_PARA =NOM_PARA,
- NOM_RESU =NOM_RESU,
- PROL_DROITE=PROL_DROITE,
- PROL_GAUCHE=PROL_GAUCHE,
- INTERPOL =INTERPOL,
- INFO =INFO,
- TITRE =TITRE,
- VALE_C =liste,)
- l_fonc.append(_fonc.nom)
-
- nume_ib=[]
- nume_jb=[]
- for i in range(dim):
- for j in range(i,dim):
- nume_ib.append(i+1)
- nume_jb.append(j+1)
- if nume_i!=nume_ib or nume_j!=nume_jb :
- UTMESS('F', nompro, "erreur dans les indices")
- mcfact=[]
- mcfact.append(_F(PARA='NOM_CHAM' ,LISTE_K=(NOM_RESU),NUME_LIGN=(1,)))
- mcfact.append(_F(PARA='OPTION' ,LISTE_K=('TOUT',) ,NUME_LIGN=(1,)))
- mcfact.append(_F(PARA='DIMENSION' ,LISTE_I=(dim,) ,NUME_LIGN=(1,)))
- mcfact.append(_F(PARA='NUME_ORDRE_I',LISTE_I=nume_i ,NUME_LIGN=range(2,len(nume_i)+2)))
- mcfact.append(_F(PARA='NUME_ORDRE_J',LISTE_I=nume_j ,NUME_LIGN=range(2,len(nume_j)+2)))
- mcfact.append(_F(PARA='FONCTION' ,LISTE_K=l_fonc ,NUME_LIGN=range(2,len(list_fonc)+2)))
- self.DeclareOut('tab_inte',self.sd)
- tab_inte=CREA_TABLE(TYPE_TABLE='TABL_INTE_SPEC',
- LISTE=mcfact,
- TITRE=TITRE,)
-
- # remet UNITE dans son état initial
- UL.EtatInit()
- return ier
+++ /dev/null
-#@ MODIF lire_table_ops Macro DATE 05/09/2005 AUTEUR DURAND C.DURAND
-# -*- coding: iso-8859-1 -*-
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-
-import string
-
-# ------------------------------------------------------------------------------
-def lecture_table(texte,nume,separ):
- """Méthode de construction du dictionnaire PARAMETRE / LISTE DE VALEURS
- format ASTER
- Les lignes contenant autre chose que des séquences de nombres
- réels et de séparateurs sont considérées comme délimitant deux
- fonctions différentes. Cette situation correspond à l exception
- ValueError levée par le map de float. Le deuxieme indice de
- VALE_PARA et VALE_RESU est l indice permettant de pointer sur la
- fonction voulue, au sens de ce découpage.
- """
-
- from Utilitai.transpose import transpose
- if string.strip(separ)=='' : separ=None
- tab_lue={}
- nume_lign=[]
- idt_deb='#DEBUT_TABLE\n'
- idt_fin='#FIN_TABLE\n'
- idt_tit='#TITRE'
- if nume>texte.count(idt_deb) :
- message= "<F> <CREA_TABLE> NUME_TABLE :le nombre de blocs de tables dans "
- message=message+"le fichier est "+str(texte.count(idt_deb))
- return 1,message,None,None,None
- for i in range(nume):
- texte=texte[texte.index(idt_deb)+1:]
- texte=texte[:texte.index(idt_fin)]
-
- titre_tab=[string.rstrip(elem[7:-1]) for elem in texte if elem.find(idt_tit)!=-1]
- texte_tab=[elem.split(separ) for elem in texte if elem.find(idt_tit)==-1]
-
- if ( separ!=None) :
- tab_trav=[]
- for line in texte_tab :
- ligne=[]
- for elem in line :
- if ( elem != '' and elem !='\n') :
- ligne.append(string.strip(elem))
- tab_trav.append(ligne)
- texte_tab=tab_trav
-
- list_para=texte_tab[0]
- list_type=texte_tab[1]
- texte_tab.pop(0)
- texte_tab.pop(0)
- nb_para=len(texte_tab[0])
-
- for line in texte_tab :
- if len(line)!=nb_para :
- message= "<F> <CREA_TABLE> incoherence dans le nombre de colonnes "
- message=message+"de la table a lire"
- return 1,message,None,None,None
- texte_tab=transpose(texte_tab)
- for i in range(nb_para):
- tab_trav=[]
- list_val=[]
- col_type=list_type[i]
- if col_type=='R':
- try :
- texte_tab[i]=map(float,texte_tab[i])
- nume_lign.append([0])
- except ValueError:
-# Presence de - dans la ligne
- for indice in range(len(texte_tab[i])):
- if texte_tab[i][indice]!='-':
- tab_trav.append(indice+1)
- list_val.append(float(texte_tab[i][indice]))
-
- nume_lign.append(tab_trav)
- texte_tab[i]=list_val
- elif col_type=='I' :
- try :
- texte_tab[i]=map(int,texte_tab[i])
- nume_lign.append([0])
-# Presence de - dans la ligne
- except ValueError:
- for indice in range(len(texte_tab[i])):
- if texte_tab[i][indice]!='-':
- tab_trav.append(indice+1)
- list_val.append(float(texte_tab[i][indice]))
- nume_lign.append(tab_trav)
- texte_tab[i]=list_val
-
- else :
- try : nume_lign.append([0])
- except ValueError: pass
-
- tab_lue[list_para[i]]=(list_type[i],texte_tab[i],nume_lign[i])
-
- return 0,None,titre_tab,list_para,tab_lue
-
-
-# ------------------------------------------------------------------------------
-def lire_table_ops(self,UNITE,FORMAT,NUME_TABLE,SEPARATEUR,
- TYPE_TABLE,PARA,TITRE,**args):
- """Méthode corps de la macro LIRE_TABLE
- """
- import os
- from Accas import _F
- from Utilitai.Utmess import UTMESS
- from Utilitai.UniteAster import UniteAster
-
- ier=0
- nompro='LIRE_TABLE'
- ### On importe les definitions des commandes a utiliser dans la macro
- CREA_TABLE =self.get_cmd('CREA_TABLE')
-
- ### La macro compte pour 1 dans la numerotation des commandes
- self.set_icmd(1)
-
- ### Lecture de la table dans un fichier d unité logique UNITE
- UL = UniteAster()
- nomfich=UL.Nom(UNITE)
- if not os.path.isfile(nomfich):
- UTMESS('F', nompro, "le fichier '%s' est introuvable" % nomfich)
-
- file=open(nomfich,'r')
- texte=file.readlines()
- file.close()
-
- ### mise en forme de la liste de valeurs suivant le format choisi :
- if FORMAT=='ASTER':
- ier,message,titr_tab,list_para,tab_lue=lecture_table(texte,NUME_TABLE,SEPARATEUR)
- if ier!=0 :
- UTMESS('F', nompro, message)
- else : pass
-
- ### création de la table ASTER :
- self.DeclareOut('ut_tab',self.sd)
- mcfact=[]
- num_col=0
- for tab_para in list_para:
- mcsimp={}
- mcsimp['PARA']=tab_para
-
- if tab_lue[tab_para][2] != [0] :
- mcsimp['NUME_LIGN']=tab_lue[tab_para][2]
-
- if tab_lue[tab_para][0] not in ('I','R') :
- mcsimp['TYPE_K'] =tab_lue[tab_para][0]
- mcsimp['LISTE_K']=tab_lue[tab_para][1]
- elif tab_lue[tab_para][0]=='I' :
- mcsimp['LISTE_I']=tab_lue[tab_para][1]
- elif tab_lue[tab_para][0]=='R' :
- mcsimp['LISTE_R']=tab_lue[tab_para][1]
-
- mcfact.append( _F(**mcsimp) )
- num_col = num_col + 1
- motscles={}
- motscles['LISTE']=mcfact
-
- ut_tab=CREA_TABLE(TITRE=titr_tab,TYPE_TABLE=TYPE_TABLE, **motscles)
-
- # remet UNITE dans son état initial
- UL.EtatInit()
- return ier
+++ /dev/null
-#@ MODIF macr_adap_mail_ops Macro DATE 04/07/2005 AUTEUR GNICOLAS G.NICOLAS
-# -*- coding: iso-8859-1 -*-
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2003 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE GNICOLAS G.NICOLAS
-#
-def macr_adap_mail_ops ( self,
- INFO, VERSION_HOMARD, LANGUE,
- NOMBRE, QUALITE, CONNEXITE, TAILLE, INTERPENETRATION,
- NON_SIMPLEXE, MAILLAGE_FRONTIERE,
- **args):
- """
- Ecriture des macros MACR_ADAP_MAIL/MACR_INFO_MAIL
- Remarque : on ne mentionne explicitement que les mots-clés communs aux
- deux macros. Les autres sont dans le dictionnaire args
- """
-#
-# 1. args est le dictionnaire des arguments
-# args.keys() est la liste des mots-clés
-# args.keys()[0] est la premiere valeur de cette liste
-# args.keys()[1:] est la liste des valeurs suivantes dans cette liste
-# args.keys(mot_cle) représente le contenu de la variable mot_cle dans la macro appelante.
-#
-### print args
-### print args.keys()
-### if len (args.keys())>0 : print args.keys()[0]
-### print args["MAILLAGE"]
-#
-# 2. Les caractéristiques d'un passage sont conservées dans un dictionnaire. Il y a autant de
-# dictionnaires que de sollicitations pour une série d'adaptation. L'ensemble de ces dictionnaires
-# est conservé dans la liste Liste_Passages. Cette liste est nécessairement globale pour pouvoir
-# la retrouver à chaque nouveau passage.
-# Description du dictionnaire de passages :
-# dico["Maillage_0"] = o ; string ; nom du concept du maillage initial de la série d'adaptation
-# dico["Maillage_NP1"] = o ; string ; nom du concept du dernier maillage adapté
-# dico["Rep_Calc_HOMARD_global"] = o ; string ; Nom global du répertoire de calcul pour HOMARD
-# dico["Rep_Calc_HOMARD_local"] = o ; string ; Nom local du répertoire de calcul pour HOMARD
-# depuis le répertoire de calcul pour ASTER
-# dico["niter"] = o ; entier ; numéro d'itération
-#
-# 3. Les caractéristiques d'un maillage sont conservées dans un dictionnaire. Il y a autant de
-# dictionnaires que de maillages manipulés. L'ensemble de ces dictionnaires est conservé
-# dans la liste Liste_Maillages.
-# Description du dictionnaire de maillages :
-# dico["Type_Maillage"] = o ; string ; "MAILLAGE_N", "MAILLAGE_NP1" ou "MAILLAGE_FRONTIERE"
-# dico["Nom_ASTER"] = o ; concept ASTER associé
-# dico["Action"] = o ; string ; "A_ecrire" ou "A_lire"
-# dico["NOM_MED"] = o ; string ; Nom MED du maillage
-#
-# 4. Les caractéristiques d'un champ sont conservées dans un dictionnaire. Il y a autant de
-# dictionnaires que de champs manipulés. L'ensemble de ces dictionnaires est conservé
-# dans la liste Liste_Champs.
-# Description du dictionnaire de champs :
-# dico["Type_Champ"] = o ; string ; "INDICATEUR" ou "CHAMP_MAJ"
-# dico["RESULTAT"] = f ; concept ASTER du résutat associé
-# dico["NOM_CHAM"] = f ; string ; Nom ASTER du champ
-# dico["CHAM_GD"] = f ; concept ASTER du champ de grandeur associée
-# dico["COMPOSANTE"] = f ; string ; Nom ASTER de la composante (dans le cas de l'indicateur)
-# dico["NUME_ORDRE"] = f ; entier ; Numéro d'ordre du champ
-# dico["INST"] = f ; entier ; Instant du champ
-# dico["PRECISION"] = f ; entier ; Précision sur l'instant du champ
-# dico["CRITERE"] = f ; entier ; Critère de précision sur l'instant du champ
-# dico["CHAM_MAJ"] = f ; string ; Nom ASTER du champ interpolé sur le nouveau maillage
-# dico["NOM_MED"] = o ; string ; Nom MED du champ
-#
- from Accas import _F
- import aster
- import string
- import types
- import os
- import shutil
-#
- global Liste_Passages
-#
-#--------------------------------------------------------------------
-# 1. Préalables
-#--------------------------------------------------------------------
-#
-# 1.1. ==> La macro compte pour 1 dans la numerotation des commandes
-#
- self.set_icmd(1)
-#
-# 1.2. ==> Numéro du passage dans cette macro
-#
- try :
- self.jdc.indice_macro_homard = self.jdc.indice_macro_homard + 1
- except :
- self.jdc.indice_macro_homard = 1
- Liste_Passages = []
- Numero_Passage_Fonction = self.jdc.indice_macro_homard
-### print "Numero_Passage_Fonction = ",Numero_Passage_Fonction
-#
-# 1.3. ==> On importe les definitions des commandes a utiliser dans la macro
-#
- DEFI_FICHIER = self.get_cmd("DEFI_FICHIER")
- IMPR_RESU = self.get_cmd("IMPR_RESU")
- EXEC_LOGICIEL = self.get_cmd("EXEC_LOGICIEL")
- IMPR_FICO_HOMA = self.get_cmd("IMPR_FICO_HOMA")
- LIRE_MAILLAGE = self.get_cmd("LIRE_MAILLAGE")
- LIRE_CHAMP = self.get_cmd("LIRE_CHAMP")
- DETRUIRE = self.get_cmd('DETRUIRE')
-#
-# 1.4. ==> Le nom du programme HOMARD à lancer
-#
- repertoire_outils = aster.repout()
- homard = repertoire_outils + "homard"
-#
-# 1.5. ==> Initialisations
-#
- codret = 0
- codret_partiel = [0]
- Rep_Calc_ASTER = os.getcwd()
-#
- Liste_Maillages = []
- Liste_Champs = []
- dico_indi = {}
-#
- ADAPTATION = None
- MAJ_CHAM = None
-#
- unite = 71
-#
-#--------------------------------------------------------------------
-# 2. Décodage des arguments de la macro-commande
-#--------------------------------------------------------------------
-# 2.1. ==> Données de pilotage de l'adaptation
-#
- if ( self.nom == "MACR_ADAP_MAIL" ) :
-#
- modhom = "ADAP"
-#
- ADAPTATION = args["ADAPTATION"]
- if args.has_key("MAJ_CHAM") :
- MAJ_CHAM = args["MAJ_CHAM"]
-#
-# 2.1.1. ==> Les concepts "maillage"
-#
- for mot_cle in ["MAILLAGE_N","MAILLAGE_NP1"] :
- dico = {}
- dico["Type_Maillage"] = mot_cle
- dico["Nom_ASTER"] = ADAPTATION[mot_cle]
- if ( mot_cle == "MAILLAGE_N" ) :
- dico["Action"] = "A_ecrire"
- else :
- dico["Action"] = "A_lire"
- Liste_Maillages.append(dico)
-#
-# 2.1.2. ==> L'éventuel indicateur d'erreur
-#
- if ADAPTATION["LIBRE"] != None :
- dico = {}
- dico["Type_Champ"] = "INDICATEUR"
- if ( ADAPTATION["RESULTAT_N"] != None ) :
- lresu = 1
- dico["RESULTAT"] = ADAPTATION["RESULTAT_N"]
- noresu = dico["RESULTAT"].nom
- dico["NOM_CHAM"] = ADAPTATION["INDICATEUR"]
- nomsym = dico["NOM_CHAM"]
- if ( ADAPTATION["NUME_ORDRE"] != None ) :
- dico["NUME_ORDRE"] = ADAPTATION["NUME_ORDRE"]
- if ( ADAPTATION["INST"] != None ) :
- dico["INST"] = ADAPTATION["INST"]
- for cle in [ "PRECISION", "CRITERE" ] :
- if ( ADAPTATION[cle] != None ) :
- dico[cle] = ADAPTATION[cle]
- else :
- lresu = 0
- dico["CHAM_GD"] = ADAPTATION["CHAM_GD"]
- noresu = dico["CHAM_GD"].nom
- nomsym = " "
- nopase = " "
-#
-### print "Avant appel a aster.mdnoch, lresu = ",lresu,", noresu =", noresu ,", nomsym = ", nomsym ,", nopase = ", nopase
- dico["NOM_MED"] = aster.mdnoch ( lresu, noresu, nomsym, nopase )
-### print "dico[\"NOM_MED\"] = ", dico["NOM_MED"]
- dico["COMPOSANTE"] = ADAPTATION["NOM_CMP_INDICA"]
- Liste_Champs.append(dico)
- dico_indi = dico
-### print dico
-#
-# 2.1.3. ==> Les champs à mettre à jour
-#
-### print ".. Debut de 2.1.3."
-#
- if ( MAJ_CHAM != None ) :
-#
- for maj_cham in MAJ_CHAM :
-### print maj_cham
-#
- dico = {}
- dico["Type_Champ"] = "CHAMP_MAJ"
- Liste_aux = [ "CHAM_MAJ", "TYPE_CHAM", "NOM_CHAM" ]
- if ( maj_cham["RESULTAT"] != None ) :
- lresu = 1
- Liste_aux.append("RESULTAT")
- if ( maj_cham["NUME_ORDRE"] != None ) :
- dico["NUME_ORDRE"] = maj_cham["NUME_ORDRE"]
- elif ( maj_cham["INST"] != None ) :
- dico["INST"] = maj_cham["INST"]
- for cle in [ "PRECISION", "CRITERE" ] :
- if ( maj_cham[cle] != None ) :
- dico[cle] = maj_cham[cle]
- noresu = maj_cham["RESULTAT"].nom
- nomsym = maj_cham["NOM_CHAM"]
- else :
- lresu = 0
- Liste_aux.append("CHAM_GD")
- noresu = maj_cham["CHAM_GD"].nom
- nomsym = " "
- for cle in Liste_aux :
- dico[cle] = maj_cham[cle]
- nopase = " "
-### print "Avant appel a aster.mdnoch, lresu = ",lresu,", noresu =", noresu ,", nomsym = ", nomsym ,", nopase = ", nopase
- dico["NOM_MED"] = aster.mdnoch ( lresu, noresu, nomsym, nopase )
-#
-### print dico
- Liste_Champs.append(dico)
-#
-# 2.2. ==> Données de pilotage de l'information
-#
- else :
-#
- modhom = "INFO"
-#
- dico = {}
- dico["Type_Maillage"] = "MAILLAGE_N"
- dico["Nom_ASTER"] = args["MAILLAGE"]
- dico["Action"] = "A_ecrire"
- Liste_Maillages.append(dico)
-#
-# 2.3. ==> Suivi de frontière
-#
-### print ".. Debut de 2.3."
-#
- if ( MAILLAGE_FRONTIERE != None ) :
-#
- dico = {}
- dico["Type_Maillage"] = "MAILLAGE_FRONTIERE"
- dico["Nom_ASTER"] = MAILLAGE_FRONTIERE
- dico["Action"] = "A_ecrire"
- Liste_Maillages.append(dico)
-#
-#--------------------------------------------------------------------
-# 3. Préparation du lancement des commandes
-#--------------------------------------------------------------------
-#
-# 3.1. ==> . Elaboration des noms MED des concepts de maillage
-# . Memorisation des noms ASTER du maillage en entrée et en sortie (sous forme string)
-# On crée une nouvelle liste des dictionnaires décrivant les maillages
-# et à la fin on écrase l'ancienne liste par cette nouvelle.
-#
-### print ".. Debut de 3.1."
-#
- L = []
- for dico in Liste_Maillages :
- dico["NOM_MED"] = aster.mdnoma(dico["Nom_ASTER"].nom)
- L.append(dico)
- if ( dico["Type_Maillage"] == "MAILLAGE_N" ) :
- Nom_Concept_Maillage_N = dico["Nom_ASTER"].nom
- elif ( dico["Type_Maillage"] == "MAILLAGE_NP1" ) :
- Nom_Concept_Maillage_NP1 = dico["Nom_ASTER"].nom
- Liste_Maillages = L
-#
-# 3.2. ==> Recherche du numéro d'itération et du répertoire de travail
-#
-# 3.2.1. ==> Par défaut :
-# . le numéro d'itération est nul
-# . le nom du répertoire de lancement de HOMARD est construit sur le nom
-# du maillage en entrée et le numéro de passage dans la fonction
-#
-### print ".. Debut de 3.2.1."
-#
- niter = 0
- Nom_Rep_local = Nom_Concept_Maillage_N + "_" + modhom + "_" + str(Numero_Passage_Fonction)
- Rep_Calc_HOMARD_local = os.path.join(".",Nom_Rep_local)
- Rep_Calc_HOMARD_global = os.path.join(Rep_Calc_ASTER,Nom_Rep_local)
-### print "Rep_Calc_HOMARD_local = ", Rep_Calc_HOMARD_local
-### print "Rep_Calc_HOMARD_global = ", Rep_Calc_HOMARD_global
-#
-# 3.2.2. ==> En adaptation :
-#
- if ( modhom == "ADAP" ) :
-#
-# 3.2.2.1. ==> On recherche si dans les passages déjà effectués, il en existe un
-# dont le maillage d'arrivée était l'actuel maillage d'entrée. Si c'est
-# le cas, cela veut dire que l'adaptation en cours est la suite d'une
-# précédente. On doit donc utiliser le meme répertoire. Le numéro
-# d'itération est celui de l'adaptation précédente augmenté de 1.
-#
- for dico in Liste_Passages :
- if ( dico["Maillage_NP1"] == Nom_Concept_Maillage_N ) :
- niter = dico["niter"] + 1
- Rep_Calc_HOMARD_local = dico["Rep_Calc_HOMARD_local"]
- Rep_Calc_HOMARD_global = dico["Rep_Calc_HOMARD_global"]
-#
-# 3.2.2.2. ==> Memorisation de ce passage
-#
-# 3.2.2.2.1. ==> Enregistrement d'un nouveau cas de figure
-#
- if ( niter == 0 ) :
- dico = {}
- dico["Maillage_0"] = Nom_Concept_Maillage_N
- dico["Maillage_NP1"] = Nom_Concept_Maillage_NP1
- dico["Rep_Calc_HOMARD_local"] = Rep_Calc_HOMARD_local
- dico["Rep_Calc_HOMARD_global"] = Rep_Calc_HOMARD_global
- dico["niter"] = niter
- Liste_Passages.append(dico)
-#
-# 3.2.2.2.2. ==> Modification du cas en cours
-#
- else :
- L = []
- for dico in Liste_Passages :
- if ( dico["Maillage_NP1"] == Nom_Concept_Maillage_N ) :
- dico["Maillage_NP1"] = Nom_Concept_Maillage_NP1
- dico["niter"] = niter
- L.append(dico)
- Liste_Passages = L
-#
-### print "niter = ", niter, ", Rep_Calc_HOMARD_global = ", Rep_Calc_HOMARD_global
-#
-#--------------------------------------------------------------------
-# 4. Ecriture des commandes
-#--------------------------------------------------------------------
-#
-# 4.1. ==> Création du répertoire pour homard
-# attention : on ne fait cette creation qu'une seule fois par cas
-# d'adaptation ou d'information
-#
- if ( niter == 0 ) :
-#
- try :
- os.mkdir(Rep_Calc_HOMARD_global)
- except os.error,codret_partiel :
- self.cr.warn("Code d'erreur de mkdir : " + str(codret_partiel[0]) + " : " + codret_partiel[1])
- self.cr.fatal("<F> <MACR_ADAP_MAIL> Impossible de créer le répertoire de travail pour HOMARD : "+Rep_Calc_HOMARD_global)
- codret = codret + 1
-#
-# 4.2. ==> Ecriture des commandes de creation des donnees MED
-#
-# On doit écrire : le maillage,
-# le champ d'indicateur d'erreur
-# les champs à convertir
-# Remarque : on met tout dans le meme fichier
-#
-# Chacune de ces écritures est optionnelle selon le contexte.
-#
- if ( INFO > 1 ) : infomail = "OUI"
- else : infomail = "NON"
-#
-# 4.2.1. ==> Noms des fichiers d'ASTER vers HOMARD et éventuellement de HOMARD vers ASTER
-# Remarque : aujourd'hui, les écritures ou les lectures au format MED se font obligatoirement sur
-# un fichier de nom fort.n, placé dans le répertoire de calcul
-# Dans le fichier de configuration, on donne comme nom MAILL.(niter).MED en entrée et
-# MAILL.(niter+1).MED en sortie (cf. adhc00)
-# Tant que les E/S MED n'ont pas évolué, on fait un lien pour assurer la cohérence.
-#
-# 4.2.1.1. ==> D'ASTER vers HOMARD
-#
- Unite_Fichier_ASTER_vers_HOMARD = 1787 + 2*Numero_Passage_Fonction
- Fichier_ASTER_vers_HOMARD = os.path.join(Rep_Calc_ASTER,"fort." + str(Unite_Fichier_ASTER_vers_HOMARD))
- Fichier_HOMARD_Entree = os.path.join(Rep_Calc_HOMARD_global,"MAILL."+str(niter)+".MED")
-### print "Fichier_ASTER_vers_HOMARD = ",Fichier_ASTER_vers_HOMARD
-### print "Fichier_HOMARD_Entree = ",Fichier_HOMARD_Entree
- try :
- os.symlink(Fichier_ASTER_vers_HOMARD,Fichier_HOMARD_Entree)
- except os.error,codret_partiel :
- self.cr.warn("Code d'erreur de symlink : " + str(codret_partiel[0]) + " : " + codret_partiel[1])
- self.cr.fatal("<F> <MACR_ADAP_MAIL> Probleme au lien entre " + Fichier_ASTER_vers_HOMARD + " et " + Fichier_HOMARD_Entree)
- codret = codret + 1
-#
-# 4.2.1.2. ==> De HOMARD vers ASTER
-#
- if ( modhom == "ADAP" ) :
- Unite_Fichier_HOMARD_vers_ASTER = Unite_Fichier_ASTER_vers_HOMARD + 1
- Fichier_HOMARD_vers_ASTER = os.path.join(Rep_Calc_ASTER,"fort." + str(Unite_Fichier_HOMARD_vers_ASTER))
- Fichier_HOMARD_Sortie = os.path.join(Rep_Calc_HOMARD_global,"MAILL."+str(niter+1)+".MED")
-### print "Fichier_HOMARD_vers_ASTER = ",Fichier_HOMARD_vers_ASTER
-### print "Fichier_HOMARD_Sortie = ",Fichier_HOMARD_Sortie
- try :
- os.symlink(Fichier_HOMARD_vers_ASTER,Fichier_HOMARD_Sortie)
- except os.error,codret_partiel :
- self.cr.warn("Code d'erreur de symlink : " + str(codret_partiel[0]) + " : " + codret_partiel[1])
- self.cr.fatal("<F> <MACR_ADAP_MAIL> Probleme au lien entre " + Fichier_HOMARD_vers_ASTER + " et " + Fichier_HOMARD_Sortie)
- codret = codret + 1
-#
-# 4.2.2. La définition du fichier de ASTER vers HOMARD
-#
- DEFI_FICHIER ( ACTION= "ASSOCIER",
- UNITE = Unite_Fichier_ASTER_vers_HOMARD,
- TYPE = "LIBRE",
- INFO = INFO )
-#
-# 4.2.3. Le(s) maillage(s)
-# Le maillage de calcul et l'éventuel maillage de la frontiere sont écrits
-# dans le meme fichier MED
-# En fait, on pourrait s'en passer au dela de la 1ère itération
-# car HOMARD a mémorisé. Mais dès que l'on écrit un champ,
-# les conventions MED imposent la présence du maillage dans le fichier.
-# Donc on va toujours écrire.
-#
- for dico in Liste_Maillages :
- if ( dico["Action"] == "A_ecrire" ) :
- motscsi={}
- motscsi["MAILLAGE"] = dico["Nom_ASTER"]
- motscfa={}
- motscfa["RESU"]=_F( INFO_MAILLAGE=infomail,
- **motscsi )
-#
- IMPR_RESU ( INFO = INFO,
- FORMAT ='MED', UNITE = Unite_Fichier_ASTER_vers_HOMARD,
- **motscfa )
-#
-# 4.2.4. Le(s) champ(s)
-# Attention : il se peut que l'on demande la mise à jour du champ qui a servi comme
-# indicateur d'erreur. Si c'est le cas, il ne faut pas demander son
-# impression sinon il y a plantage d'IMPR_RESU qui ne sait pas substituer
-# deux champs. D'ailleurs, c'est plus économique ainsi !
-# Remarque : pour l'adaptation, on ne demande a priori qu'une composante du champ d'indicateur.
-# s'il y a demande de mise à jour, toutes les composantes sont concernées. Il faut
-# donc dans ce cas imprimer le champ total.
-# dico["Type_Champ"] = o ; string ; "INDICATEUR" ou "CHAMP_MAJ"
-# dico["RESULTAT"] = f ; concept ASTER du résutat associé
-# dico["NOM_CHAM"] = f ; string ; Nom ASTER du champ
-# dico["CHAM_GD"] = f ; concept ASTER du champ de grandeur associée
-# dico["COMPOSANTE"] = f ; string ; Nom ASTER de la composante (dans le cas de l'indicateur)
-# dico["NUME_ORDRE"] = f ; entier ; Numéro d'ordre du champ
-# dico["INST"] = f ; entier ; Instant du champ
-# dico["PRECISION"] = f ; entier ; Précision sur l'instant du champ
-# dico["CRITERE"] = f ; entier ; Critère de précision sur l'instant du champ
-# dico["CHAM_MAJ"] = f ; string ; Nom ASTER du champ interpolé sur le nouveau maillage
-# dico["NOM_MED"] = o ; string ; Nom MED du champ
-#
-# 4.2.4.1. Recherche d'un doublon éventuel sur le champ d'indicateur d'erreur
-#
-### print "dico_indi = ",dico_indi
- if len(dico_indi) > 0 :
- indic_est_deja_imprime = 0
- if dico_indi.has_key("RESULTAT") :
- Liste_aux = [ "RESULTAT", "NOM_CHAM" ]
- else :
- Liste_aux = [ "CHAM_GD" ]
- else :
- indic_est_deja_imprime = 1
- Liste_aux = [ ]
-### print ".. Au debut de la boucle, Liste_aux = ",Liste_aux
-### print ".. Au debut de la boucle, indic_est_deja_imprime = ",indic_est_deja_imprime
-#
- Liste_Champs_imprime = []
- for dico in Liste_Champs :
-### print "\n.... dico = ",dico
-# Pour un champ à mettre à jour, on a toujours impression
- if ( dico["Type_Champ"] == "CHAMP_MAJ" ) :
- Liste_Champs_imprime.append(dico)
-# Si le champ d'indicateur n'a toujours pas été repéré comme champ à mettre à jour :
- if not indic_est_deja_imprime :
-# Est-ce le meme champ ?
- ok = 1
- for cle in Liste_aux :
- if ( dico.has_key(cle) ) :
-### print "...... dico_indi[cle] = ",dico_indi[cle]
-### print "...... dico[cle] = ",dico[cle]
- if ( dico_indi[cle] != dico[cle] ) :
- ok = 0
- break
- else :
- ok = 0
- break
-# Si oui, est-ce au meme moment ? (remarque : si rien n'est désigné, c'est qu'il n'y a qu'un
-# seul instant ... donc c'est le meme ! En revanche, on ne sait pas comparer une donnée
-# en numéro d'ordre et une donnée en instant. On croise les doigts.)
- if ok :
- for cle in [ "NUME_ORDRE", "INST" ] :
- if dico.has_key(cle) :
- if ( dico[cle] != None ) :
- if dico_indi.has_key(cle) :
- if ( dico_indi[cle] != dico[cle] ) :
- ok = 0
- break
- if ok : indic_est_deja_imprime = 1
-### print "\n\nFin de la boucle .. indic_est_deja_imprime = ",indic_est_deja_imprime
-# Si le champ d'indicateur n'a pas été repéré comme champ à mettre à jour, il faut
-# l'inclure dans les champs à imprimer
- if not indic_est_deja_imprime : Liste_Champs_imprime.append(dico_indi)
-#
-# 4.2.4.2. Impressions après le filtrage précédent
-### print ".. Debut de 4.2.4.2."
-#
- for dico in Liste_Champs_imprime :
- motscsi={}
- for cle in [ "RESULTAT", "NOM_CHAM", "CHAM_GD", "NUME_ORDRE", "INST", "PRECISION", "CRITERE" ] :
- if dico.has_key(cle) :
- if ( dico[cle] != None ) :
- motscsi[cle] = dico[cle]
- if dico.has_key("COMPOSANTE") :
- motscsi["NOM_CMP"] = dico["COMPOSANTE"]
- motscfa={}
- motscfa["RESU"]=_F( INFO_MAILLAGE=infomail,
- **motscsi
- )
-### print ".. motscfa = ",motscfa
-#
- IMPR_RESU ( INFO = INFO,
- FORMAT ='MED', UNITE = Unite_Fichier_ASTER_vers_HOMARD,
- **motscfa )
-#
-# 4.3. ==> Ecriture de la commande d'écriture des fichiers de données pour HOMARD
-#
- motscfa={}
-#
-# 4.3.1. ==> Le traitement
-#
- motscsi={}
-#
-# 4.3.1.1. ==> Le type de traitement
-#
- if ( modhom == "ADAP" ) :
- if ( ADAPTATION["UNIFORME"] != None ) :
- motscsi["UNIFORME"] = ADAPTATION["UNIFORME"]
- else :
- motscsi["ADAPTATION"] = ADAPTATION["LIBRE"]
- else :
- motscsi["INFORMATION"] = "OUI"
-#
-# 4.3.1.2. ==> Les noms med des maillages
-#
- for dico in Liste_Maillages :
-### print "Nom MED de " + dico["Type_Maillage"] + " = " + dico["NOM_MED"]
- motscsi[ "NOM_MED_"+dico["Type_Maillage"] ] = dico["NOM_MED"]
-#
-# 4.3.1.3. ==> Les caracteristiques de l'éventuel indicateur d'erreur
-#
- for dico in Liste_Champs :
- if ( dico["Type_Champ"] == "INDICATEUR" ) :
- Liste_aux = [ "NOM_MED", "COMPOSANTE" ]
- if dico.has_key("NUME_ORDRE") :
- Liste_aux.append("NUME_ORDRE")
- else :
- for cle in [ "RESULTAT", "NOM_CHAM", "INST", "PRECISION", "CRITERE" ] :
- Liste_aux.append(cle)
- for cle in Liste_aux :
- if dico.has_key(cle) :
- if ( dico[cle] != None ) :
- motscsi[cle] = dico[cle]
-#
-# 4.3.1.4. ==> Les critères de raffinement et les niveaux extremes
-#
- if ( modhom == "ADAP" ) :
- Liste_aux = [ ]
- if ( ADAPTATION["LIBRE"] == "RAFF_DERA" or ADAPTATION["LIBRE"] == "RAFFINEMENT" ) :
- Liste_aux.append("CRIT_RAFF_ABS")
- Liste_aux.append("CRIT_RAFF_REL")
- Liste_aux.append("CRIT_RAFF_PE")
- if ( ADAPTATION["LIBRE"] == "RAFF_DERA" or ADAPTATION["LIBRE"] == "DERAFFINEMENT" ) :
- Liste_aux.append("CRIT_DERA_ABS")
- Liste_aux.append("CRIT_DERA_REL")
- Liste_aux.append("CRIT_DERA_PE")
- niveau = 0
- if ( ADAPTATION["LIBRE"] == "RAFF_DERA" or ADAPTATION["LIBRE"] == "RAFFINEMENT" or ADAPTATION["UNIFORME"] == "RAFFINEMENT" ) :
- Liste_aux.append("NIVE_MAX")
- niveau = niveau + 1
- if ( ADAPTATION["LIBRE"] == "RAFF_DERA" or ADAPTATION["LIBRE"] == "DERAFFINEMENT" or ADAPTATION["UNIFORME"] == "DERAFFINEMENT" ) :
- Liste_aux.append("NIVE_MIN")
- niveau = niveau + 2
- for mot_cle in Liste_aux :
- if ( ADAPTATION[mot_cle] != None ) :
- motscsi[mot_cle] = ADAPTATION[mot_cle]
-#
- if ( niveau == 2 ) :
- if ( ADAPTATION["NIVE_MIN"] > ADAPTATION["NIVE_MAX"] ) :
- self.cr.fatal("<F> <MACR_ADAP_MAIL> Le niveau minimum doit etre inferieur au niveau maximum.")
- codret = codret + 1
-#
-# 4.3.1.5. ==> Numéro d'itération
-#
- if ( modhom == "ADAP" ) :
- motscsi["NITER"] = niter
-#
-# 4.3.1.6. ==> Suivi de la frontiere
-#
- if args.has_key("GROUP_MA") :
- if ( args["GROUP_MA"] != None ) :
- motscsi["GROUP_MA"] = args["GROUP_MA"]
-#
-# 4.3.1.7. ==> Bilan
-#
- motscfa["TRAITEMENT"] = _F(**motscsi)
-#
-# 4.3.2. ==> L'analyse
-#
- motscsi={}
- if ( NOMBRE != None ) : motscsi["NOMBRE" ] = NOMBRE
- if ( QUALITE != None ) : motscsi["QUALITE" ] = QUALITE
- if ( CONNEXITE != None ) : motscsi["CONNEXITE" ] = CONNEXITE
- if ( TAILLE != None ) : motscsi["TAILLE" ] = TAILLE
- if ( INTERPENETRATION != None ) : motscsi["INTERPENETRATION" ] = INTERPENETRATION
-#
- motscfa["ANALYSE"] = _F(**motscsi)
-#
-# 4.3.3. ==> La mise à jour de champs
-#
- prem = 1
- for dico in Liste_Champs :
- motscsi={}
- if ( dico["Type_Champ"] == "CHAMP_MAJ" ) :
- Liste_aux = [ "NOM_MED", "COMPOSANTE" ]
- if dico.has_key("NUME_ORDRE") :
- Liste_aux.append("NUME_ORDRE")
- else :
- for cle in [ "RESULTAT", "NOM_CHAM", "INST", "PRECISION", "CRITERE" ] :
- Liste_aux.append(cle)
- for cle in Liste_aux :
- if dico.has_key(cle) :
- if ( dico[cle] != None ) :
- motscsi[cle] = dico[cle]
-### print motscsi
- if prem :
- motscfa["MAJ_CHAM"] = [_F(**motscsi),]
- prem = 0
- else :
- motscfa["MAJ_CHAM"].append(_F(**motscsi))
-#
-# 4.3.4. ==> La commande
-#
-# 4.3.4.1. ==> Les fichiers annexes
-#
- dico = {}
-#
- Nom_Fichier_Configuration = "HOMARD.Configuration"
- Fichier_Configuration = os.path.join(Rep_Calc_HOMARD_global,Nom_Fichier_Configuration)
- dico[Fichier_Configuration] = ("HOMARD_CONFIG","UNITE_CONF",unite)
-#
- if ( modhom != "ADAP" ) :
- unite = unite + 1
- Nom_Fichier_Donnees = "HOMARD.Donnees"
- Fichier_Donnees = os.path.join(Rep_Calc_HOMARD_global,Nom_Fichier_Donnees)
-# 1234567890123456
- dico[Fichier_Donnees] = ("HOMARD_DONN","UNITE_DONN",unite)
-#
-# 4.3.4.2. ==> L'ouverture de ces fichiers
-#
- for fic in dico.keys() :
- DEFI_FICHIER ( ACTION= "ASSOCIER", FICHIER = fic, UNITE = dico[fic][2],
- TYPE = "ASCII", ACCES = "NEW", INFO = INFO )
- motscfa[dico[fic][1]] = dico[fic][2]
-#
-# 4.3.4.3. ==> Ecriture
-#
-### print motscfa
- IMPR_FICO_HOMA ( INFO=INFO, LANGUE = LANGUE, NON_SIMPLEXE = NON_SIMPLEXE, **motscfa )
-#
-### for fic in dico.keys() :
-### print "\nContenu de ", fic
-### fichier = open (fic,"r")
-### les_lignes = fichier.readlines()
-### fichier.close()
-### for ligne in les_lignes :
-### print ligne[:-1]
-#
-# 4.3.4.4. ==> La fermeture des fichiers locaux
-# Remarque : il faut le faire ici pour que le gestionnaire de DEFI_FICHIER soit à jour
-# Remarque : aujourd'hui on est obligé de passer par le numéro d'unité logique
-#
- for fic in dico.keys() :
- DEFI_FICHIER ( ACTION= "LIBERER", UNITE = dico[fic][2], INFO = INFO )
-#
-# 4.4. ==> Ecriture de la commande d'exécution de homard
-# Remarque : dans la donnée de la version de HOMARD, il faut remplacer
-# le _ de la donnee par un ., qui
-# est interdit dans la syntaxe du langage de commandes ASTER
-# Remarque : il faut remplacer le N majuscule de la donnee par
-# un n minuscule, qui est interdit dans la syntaxe du langage
-# de commandes ASTER
-# Remarque : pour le nommage des fichiers d'échange entre ASTER et HOMARD, on utilise
-# la convention implicite du fort.n des entrees/sorties au format MED
-#
-### Fichier_ASTER_vers_HOMARD_2 = os.path.join("/home/gnicolas","fort." + str(Unite_Fichier_ASTER_vers_HOMARD))
-### shutil.copyfile(Fichier_ASTER_vers_HOMARD,Fichier_ASTER_vers_HOMARD_2)
-#
- VERSION_HOMARD=string.replace(VERSION_HOMARD,"_",".")
- VERSION_HOMARD=string.replace(VERSION_HOMARD,"N","n")
- if ( VERSION_HOMARD[-6:]=="_PERSO" ):
-# motscsi["ARGUMENT"]=_F("TYPEXE"="-PERSO")
- VERSION_HOMARD=VERSION_HOMARD[:-6]
-#
- if ( modhom == "ADAP" ) :
- Nom_Fichier_Donnees = "0"
-#
- EXEC_LOGICIEL ( ARGUMENT = (_F(NOM_PARA=Rep_Calc_HOMARD_global), # nom du repertoire
- _F(NOM_PARA=VERSION_HOMARD), # version de homard
- _F(NOM_PARA=str(INFO)), # niveau d information
- _F(NOM_PARA=Nom_Fichier_Donnees), # fichier de données HOMARD
- ),
- LOGICIEL = homard
- )
-#
-### if ( modhom == "ADAP" ) :
-### Fichier_HOMARD_vers_ASTER_2 = os.path.join("/home/gnicolas","fort." + str(Unite_Fichier_HOMARD_vers_ASTER))
-### shutil.copyfile(Fichier_HOMARD_vers_ASTER,Fichier_HOMARD_vers_ASTER_2)
-#
-# 4.5. ==> Ecriture de la commande de lecture des resultats med
-# Remarque :
-# La fonction self.DeclareOut(a,b) focntionne ainsi :
-# a est une chaine de caracteres
-# b est la variable déclarée dans la commande
-# le but est de associer le contenu de b à la variable locale qui sera désignée par a
-# Exemple :
-# self.DeclareOut("maillage_np1",ADAPTATION["MAILLAGE_NP1"])
-# ==> la variable maillage_np1 est identifiée à l'argument "MAILLAGE_NP1" du mot-clé ADAPTATION
-#
- if ( modhom == "ADAP" ) :
-#
-# 4.5.1. ==> Le maillage
-#
- self.DeclareOut("maillage_np1",ADAPTATION["MAILLAGE_NP1"])
- for dico in Liste_Maillages :
- if ( dico["Action"] == "A_lire" ) :
- maillage_np1 = LIRE_MAILLAGE ( UNITE = Unite_Fichier_HOMARD_vers_ASTER,
- FORMAT = "MED",
- NOM_MED = dico["NOM_MED"],
- VERI_MAIL = _F(VERIF="NON"), INFO_MED = INFO, INFO = INFO )
-#
-# 4.5.2. ==> Les champs
-#
- for dico in Liste_Champs :
- if ( dico["Type_Champ"] == "CHAMP_MAJ" ) :
-### print dico
- self.DeclareOut("champ_maj",dico["CHAM_MAJ"])
- motscsi={}
- for cle in [ "NUME_ORDRE", "INST", "PRECISION", "CRITERE" ] :
- if dico.has_key(cle) :
- if ( dico[cle] != None ) :
- motscsi[cle] = dico[cle]
- if dico.has_key("NUME_ORDRE") :
- motscsi["NUME_PT"] = dico["NUME_ORDRE"]
- champ_maj = LIRE_CHAMP ( UNITE = Unite_Fichier_HOMARD_vers_ASTER, FORMAT = "MED",
- MAILLAGE = maillage_np1,
- NOM_MED = dico["NOM_MED"], NOM_CMP_IDEM = "OUI", TYPE_CHAM = dico["TYPE_CHAM"],
- INFO = INFO, **motscsi )
-#
-#--------------------------------------------------------------------
-# 5. Menage des fichiers MED et HOMARD devenus inutiles
-#--------------------------------------------------------------------
-#
- fic = os.path.join(Rep_Calc_HOMARD_global,"MAILL."+str(niter)+".HOM")
- Liste_aux = [ Fichier_ASTER_vers_HOMARD, Fichier_HOMARD_Entree, fic ]
- if ( modhom == "ADAP" ) :
- Liste_aux.append(Fichier_HOMARD_vers_ASTER)
- Liste_aux.append(Fichier_HOMARD_Sortie)
-#
- for fic in Liste_aux :
- if ( INFO > 1 ) : print "Destruction du fichier ", fic
- if os.path.islink(fic) :
- try :
- os.unlink(fic)
- except os.error,codret_partiel :
- self.cr.warn("Code d'erreur de unlink : " + str(codret_partiel[0]) + " : " + codret_partiel[1])
- self.cr.warn("Impossible d'enlever le lien sur le fichier : "+fic)
- codret = codret + 1
- if os.path.isfile(fic) :
- try :
- os.remove(fic)
- except os.error,codret_partiel :
- self.cr.warn("Code d'erreur de remove : " + str(codret_partiel[0]) + " : " + codret_partiel[1])
- self.cr.warn("Impossible de détruire le fichier : "+fic)
- codret = codret + 1
-### print os.listdir(Rep_Calc_ASTER)
-### print os.listdir(Rep_Calc_HOMARD_global)
-#
-#--------------------------------------------------------------------
-# 6. C'est fini !
-#--------------------------------------------------------------------
-#
- return codret
+++ /dev/null
-#@ MODIF macr_ascouf_calc_ops Macro DATE 05/09/2005 AUTEUR DURAND C.DURAND
-# -*- coding: iso-8859-1 -*-
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-
-
-def macr_ascouf_calc_ops(self,TYPE_MAILLAGE,CL_BOL_P2_GV,MAILLAGE,MODELE,CHAM_MATER,CARA_ELEM,
- FOND_FISS,CHARGE,RESU_THER,AFFE_MATERIAU,
- PRES_REP,ECHANGE,TORS_P1,COMP_INCR,COMP_ELAS,
- SOLVEUR,CONVERGENCE,NEWTON,RECH_LINEAIRE,
- INCREMENT,THETA_3D,IMPR_TABLE,IMPRESSION,INFO,TITRE ,**args):
- """
- Ecriture de la macro MACR_ASCOUF_CALC
- """
- from Accas import _F
- import types
- import math
- import aster
- from math import pi,sin,cos,sqrt,atan2
- from Utilitai.Utmess import UTMESS
- ier=0
-# On recopie les mots cles affe_materiau et impr_table pour les proteger
- mc_AFFE_MATERIAU=AFFE_MATERIAU
- mc_IMPR_TABLE =IMPR_TABLE
- # On importe les definitions des commandes a utiliser dans la macro
- AFFE_MODELE =self.get_cmd('AFFE_MODELE' )
- AFFE_MATERIAU =self.get_cmd('AFFE_MATERIAU' )
- AFFE_CARA_ELEM =self.get_cmd('AFFE_CARA_ELEM' )
- AFFE_CHAR_THER_F =self.get_cmd('AFFE_CHAR_THER_F')
- THER_LINEAIRE =self.get_cmd('THER_LINEAIRE' )
- AFFE_CHAR_MECA =self.get_cmd('AFFE_CHAR_MECA' )
- STAT_NON_LINE =self.get_cmd('STAT_NON_LINE' )
- CALC_ELEM =self.get_cmd('CALC_ELEM' )
- IMPR_RESU =self.get_cmd('IMPR_RESU' )
- IMPR_TABLE =self.get_cmd('IMPR_TABLE' )
- DEFI_FOND_FISS =self.get_cmd('DEFI_FOND_FISS' )
- CALC_THETA =self.get_cmd('CALC_THETA' )
- CALC_G_THETA_T =self.get_cmd('CALC_G_THETA_T' )
- CALC_G_LOCAL_T =self.get_cmd('CALC_G_LOCAL_T' )
- POST_RCCM =self.get_cmd('POST_RCCM' )
- POST_RELEVE_T =self.get_cmd('POST_RELEVE_T' )
-
- # La macro compte pour 1 dans la numerotation des commandes
- self.set_icmd(1)
-#------------------------------------------------------------------
-# DATA
- GRMAIL = ('COUDE','PEAUINT','PEAUEXT','EXTUBE','CLGV','FACE1','FACE2')
-#------------------------------------------------------------------
-#
- if CL_BOL_P2_GV!=None :
- if TYPE_MAILLAGE=='SOUS_EPAIS_COUDE' :
- message= ' la condition aux limites sur bol a section conique \n'
- message=message+' est ignoree pour un coude avec sous-epaisseurs \n'
- UTMESS('A', "MACR_ASCOUF_CALC", message)
- elif (TYPE_MAILLAGE[:4]!='FISS') and (CL_BOL_P2_GV['AZIMUT']!=None) :
- UTMESS('E', "MACR_ASCOUF_CALC", "mot-cle AZIMUT non autorise dans le cas d un coude sain")
-#
- if mc_IMPR_TABLE!=None :
- FLAG = 0
- if (mc_IMPR_TABLE['NOM_PARA']==None) and (mc_IMPR_TABLE['POSI_ANGUL']==None) and (mc_IMPR_TABLE['POSI_CURV_LONGI']==None) :
- UTMESS('E', "MACR_ASCOUF_CALC", "POSI_ANGUL POSI_CURV_LONGI est obligatoire")
- return ier
- if (mc_IMPR_TABLE['NOM_PARA']!=None) :
- impr_table_nom_para= mc_IMPR_TABLE['NOM_PARA']
- for impt in impr_table_nom_para :
- if impt in ('SI_LONG','SI_CIRC','SI_RADI') :
- FLAG = 1
- if (((impt['ANGLE']==None) and (impt['POSI_ANGUL']==None) and (impt['R_CINTR' ]==None)) or
- ((impt['ANGLE']==None) and (impt['R_CINTR' ]==None) and (impt['POSI_CURV_LONGI']==None)) ) :
- UTMESS('E', "MACR_ASCOUF_CALC", "il faut renseigner : ANGLE, R_CINTR et POSI_ANGUL ou ANGLE, R_CINTR et POSI_CURV_LONGI")
- if (mc_IMPR_TABLE['NOM_PARA']==None) : FLAG = 1
- if not FLAG : UTMESS('A', "MACR_ASCOUF_CALC","ANGL_COUDE et ANGL_SOUS_EPAI sont inutiles dans ce cas")
-#
-#------------------------------------------------------------------
-#
-# --- commande AFFE_MODELE ---
-#
- self.DeclareOut('modele',MODELE)
- mcfact=[]
- if (PRES_REP!=None) and (PRES_REP['PRES_LEVRE']=='OUI') and (TYPE_MAILLAGE[:4]=='FISS') :
- mcfact.append(_F(GROUP_MA=GRMAIL ,PHENOMENE='MECANIQUE',MODELISATION='3D' ))
- else:
- mcfact.append(_F(GROUP_MA=GRMAIL[:5] ,PHENOMENE='MECANIQUE',MODELISATION='3D' ))
- if TORS_P1!=None :
- mcfact.append(_F(GROUP_MA='P1' ,PHENOMENE='MECANIQUE',MODELISATION='DIS_TR'))
- if CL_BOL_P2_GV==None :
- mcfact.append(_F(GROUP_MA='P2' ,PHENOMENE='MECANIQUE',MODELISATION='DIS_TR'))
- modele = AFFE_MODELE( MAILLAGE = MAILLAGE ,
- AFFE = mcfact )
- if ECHANGE!=None : # modele thermique
- __modthe = AFFE_MODELE( MAILLAGE = MAILLAGE ,
- AFFE = _F(TOUT ='OUI',
- PHENOMENE ='THERMIQUE',
- MODELISATION='3D' ) )
-#------------------------------------------------------------------
-#
-# --- commande AFFE_MATERIAU ---
-#
- if CHAM_MATER!=None : self.DeclareOut('affmat',CHAM_MATER)
- mcfact=[]
- for mater in mc_AFFE_MATERIAU :
- if mater['TOUT']!=None :
- mcfact.append(_F(TOUT =mater['TOUT' ],MATER=mater['MATER'],TEMP_REF=mater['TEMP_REF']))
- rccmat = mater['MATER']
- else :
- mcfact.append(_F(GROUP_MA=mater['GROUP_MA'],MATER=mater['MATER'],TEMP_REF=mater['TEMP_REF']))
- if mater['GROUP_MA'][:5]=='COUDE' :
- if TORS_P1!=None :
- mcfact.append(_F(GROUP_MA='P1',MATER=mater['MATER'],TEMP_REF=mater['TEMP_REF']))
- mcfact.append(_F(GROUP_MA='P2',MATER=mater['MATER'],TEMP_REF=mater['TEMP_REF']))
- elif (len(mc_AFFE_MATERIAU)==1) and (CL_BOL_P2_GV==None) :
- mcfact.append(_F(GROUP_MA='P2',MATER=mater['MATER'],TEMP_REF=mater['TEMP_REF']))
- elif (mater['BOL' ][:3]=='BOL' ) and (CL_BOL_P2_GV==None) :
- mcfact.append(_F(GROUP_MA='P2',MATER=mater['MATER'],TEMP_REF=mater['TEMP_REF']))
- affmat = AFFE_MATERIAU( MAILLAGE = MAILLAGE ,
- MODELE = modele ,
- AFFE = mcfact )
-#------------------------------------------------------------------
-#
-# --- commande AFFE_CARA_ELEM ---
-#
- if (TORS_P1!=None) or (CL_BOL_P2_GV==None) :
- if CARA_ELEM!=None : self.DeclareOut('carael',CARA_ELEM)
- motscles={}
- motscles['DISCRET']=[]
- if (TORS_P1!=None) : motscles['DISCRET'].append(_F( GROUP_MA='P1' ,
- CARA ='K_TR_D_N',
- VALE = ( 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 ) ),)
- if (CL_BOL_P2_GV==None) : motscles['DISCRET'].append(_F( GROUP_MA='P2' ,
- CARA ='K_TR_D_N',
- VALE = ( 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 ) ),)
-
- carael = AFFE_CARA_ELEM( MODELE = modele ,**motscles)
-#
- if ECHANGE!=None :
-#------------------------------------------------------------------
-#
-# --- commande AFFE_CHAR_THER_F ---
-# condition aux limites
-#
- __chther = AFFE_CHAR_THER_F( MODELE = __modthe ,
- ECHANGE= _F(GROUP_MA='PEAUINT',
- COEF_H =ECHANGE['COEF_H'],
- TEMP_EXT=ECHANGE['TEMP_EXT'],), )
-#------------------------------------------------------------------
-#
-# --- calcul thermique ---
-#
- if RESU_THER!=None : self.DeclareOut('resuth',RESU_THER)
- mcsimp={}
- if INCREMENT['NUME_INST_INIT']!=None : mcsimp['NUME_INIT']=INCREMENT['NUME_INST_INIT']
- if INCREMENT['NUME_INST_FIN' ]!=None : mcsimp['NUME_FIN' ]=INCREMENT['NUME_INST_FIN' ]
- mcfact=_F(LIST_INST=INCREMENT['LIST_INST'],**mcsimp)
- resuth = THER_LINEAIRE( MODELE = __modthe ,
- CHAM_MATER = affmat ,
- TEMP_INIT = _F(STATIONNAIRE='OUI',),
- EXCIT = _F(CHARGE=__chther,),
- INCREMENT = mcfact, )
-#
- if CHARGE!=None : self.DeclareOut('chmeth',CHARGE)
- chmeth = AFFE_CHAR_MECA( MODELE = modele ,
- TEMP_CALCULEE = resuth )
-#------------------------------------------------------------------
-#
-# --- commande AFFE_CHAR_MECA ---
-# condition aux limites de type raccord 3d-poutre
-# ou bien blocage de mouvements rigides en cas d embout
-# a section conique, bol de type gv
-#
- motscles={}
- motscles['LIAISON_ELEM']=[]
- if TORS_P1!=None :
- motscles['LIAISON_ELEM'].append(_F( OPTION ='3D_POU' ,
- GROUP_MA_1='EXTUBE',
- GROUP_NO_2='P1') )
- if CL_BOL_P2_GV==None :
- motscles['LIAISON_ELEM'].append(_F( OPTION ='3D_POU' ,
- GROUP_MA_1='CLGV',
- GROUP_NO_2='P2') )
- motscles['DDL_IMPO' ]=_F( GROUP_NO ='P2' ,
- DX = 0.0 ,
- DY = 0.0 ,
- DZ = 0.0 ,
- DRX = 0.0 ,
- DRY = 0.0 ,
- DRZ = 0.0 , )
- else :
- motscles['FACE_IMPO' ]=_F( GROUP_MA ='CLGV' ,
- DNOR = 0.0 , )
- ALPHA = CL_BOL_P2_GV['ANGLE' ]
- AZIM = CL_BOL_P2_GV['AZIMUT']
- ALPHAR = ALPHA*pi/180.0
- AZIMR = AZIM *pi/180.0
- DDLB1 = []
- COEFB1 = []
- if (AZIM!=0.0) and (AZIM!=180.0) and (ALPHA!=90.0) :
- DDLB1.append('DX')
- COEFB1.append(SIN(AZIMR)*COS(ALPHAR))
- if (AZIM!=90.0) :
- DDLB1.append('DY')
- COEFB1.append(COS(AZIMR))
- if (AZIM!=0.) and (AZIM!=180.) and (ALPHA!=0.):
- DDLB1.append('DZ')
- COEFB1.append(-SIN(AZIMR)*SIN(ALPHAR))
- POINT=['BOUT1',]*len(DDLB1)
- motscles['LIAISON_DDL']=_F( GROUP_NO = POINT ,
- DDL = DDLB1 ,
- COEF_MULT = COEFB1 ,
- COEF_IMPO = 0.0 , )
-
- __conlim = AFFE_CHAR_MECA( MODELE = modele ,**motscles)
-#
-# --- commande AFFE_CHAR_MECA ---
-# chargement mecanique : pres_rep, effet de fond
-#
- if PRES_REP!=None :
- motscles={}
- if (PRES_REP['PRES_LEVRE']=='OUI') and (TYPE_MAILLAGE[:4]=='FISS') :
- motscles['PRES_REP']=_F( GROUP_MA = ('PEAUINT','FACE1','FACE2') ,
- PRES = PRES_REP['PRES'] ,)
- else :
- motscles['PRES_REP']=_F( GROUP_MA = 'PEAUINT',
- PRES = PRES_REP['PRES'] ,)
- if PRES_REP['EFFE_FOND_P1']!=None :
- motscles['EFFE_FOND']=_F( GROUP_MA_INT = 'BORDTU' ,
- GROUP_MA = 'EXTUBE' ,
- PRES = PRES_REP['PRES'] ,)
-#
- __chpres = AFFE_CHAR_MECA( MODELE = modele ,**motscles)
-#
-# --- commande AFFE_CHAR_MECA ---
-# chargement mecanique : torseur d efforts
-#
- if TORS_P1!=None :
- __chtor = [None]*6
- i=0
- for tors in TORS_P1:
- mcsimp={}
- if tors['FX']!=None : mcsimp['FX']=tors['FX']
- if tors['FY']!=None : mcsimp['FY']=tors['FY']
- if tors['FZ']!=None : mcsimp['FZ']=tors['FZ']
- if tors['MX']!=None : mcsimp['MX']=tors['MX']
- if tors['MY']!=None : mcsimp['MY']=tors['MY']
- if tors['MZ']!=None : mcsimp['MZ']=tors['MZ']
- mcfact=_F(GROUP_NO='P1',**mcsimp)
- __chtor[i] = AFFE_CHAR_MECA( MODELE = modele ,
- FORCE_NODALE = mcfact , )
- i=i+1
-#
-# --- commande STAT_NON_LINE ---
-#
- motscles={}
-#
- mcfex=[] # mot clé facteur EXCIT
- mcfex.append(_F(CHARGE=__conlim,))
- if ECHANGE!=None :
- mcfex.append(_F(CHARGE=chmeth,))
- if PRES_REP!=None:
- if PRES_REP['FONC_MULT']!=None :
- mcfex.append(_F(CHARGE=__chpres,FONC_MULT=PRES_REP['FONC_MULT']))
- else :
- mcfex.append(_F(CHARGE=__chpres,))
- if TORS_P1!=None:
- i=0
- for tors in TORS_P1 :
- if tors['FONC_MULT']!=None :
- mcfex.append(_F(CHARGE=__chtor[i],FONC_MULT=tors['FONC_MULT']))
- else :
- mcfex.append(_F(CHARGE=__chtor[i],))
- i=i+1
- motscles['EXCIT'] =mcfex
-#
- mcfci=[] # mot clé facteur COMP_INCR :obligatoire pour les noeuds discrets
- if COMP_INCR!=None :
- mcfci.append(_F(TOUT='OUI' ,RELATION=COMP_INCR['RELATION']))
- elif COMP_ELAS!=None :
- motscles['COMP_ELAS'] =_F(GROUP_MA='COUDE',RELATION=COMP_ELAS['RELATION'])
- if TORS_P1!=None : mcfci.append( _F(GROUP_MA='P1',RELATION='ELAS'))
- if CL_BOL_P2_GV==None: mcfci.append( _F(GROUP_MA='P2',RELATION='ELAS'))
- motscles['COMP_INCR'] =mcfci
-#
- dSolveur=SOLVEUR[0].cree_dict_valeurs(SOLVEUR[0].mc_liste)
- for i in dSolveur.keys():
- if dSolveur[i]==None : del dSolveur[i]
-#
- dConverg=CONVERGENCE[0].cree_dict_valeurs(CONVERGENCE[0].mc_liste)
- for i in dConverg.keys():
- if dConverg[i]==None : del dConverg[i]
-#
- dNewton=NEWTON[0].cree_dict_valeurs(NEWTON[0].mc_liste)
- for i in dNewton.keys():
- if dNewton[i]==None : del dNewton[i]
-#
- dRechlin=RECH_LINEAIRE[0].cree_dict_valeurs(RECH_LINEAIRE[0].mc_liste)
- for i in dRechlin.keys():
- if dRechlin[i]==None : del dRechlin[i]
-#
- dIncrem=INCREMENT[0].cree_dict_valeurs(INCREMENT[0].mc_liste)
- for i in dIncrem.keys():
- if dIncrem[i]==None : del dIncrem[i]
-#
- if TITRE!=None :
- motscles['TITRE' ] =TITRE
- motscles ['SOLVEUR' ] =dSolveur
- motscles ['CONVERGENCE' ] =dConverg
- motscles ['NEWTON' ] =dNewton
- motscles ['RECH_LINEAIRE'] =dRechlin
- motscles ['INCREMENT' ] =dIncrem
- self.DeclareOut('nomres',self.sd)
- nomres = STAT_NON_LINE( MODELE = modele ,
- CHAM_MATER = affmat ,
- CARA_ELEM = carael ,
- INFO = INFO , **motscles)
-#
-# --- commande CALC_ELEM ---
-#
- nomres = CALC_ELEM( reuse = nomres,
- RESULTAT = nomres ,
- MODELE = modele ,
- TOUT_ORDRE = 'OUI' ,
- OPTION = ('SIEF_ELNO_ELGA','EQUI_ELNO_SIGM') ,
- INFO = INFO ,)
-#
-# --- post-traitements ---
-#
- if TYPE_MAILLAGE=='SOUS_EPAIS_COUDE':
-#
-# --- post traitement sous-epaisseurs: ligaments ---
-#
- if mc_IMPR_TABLE!=None:
-#
- SECT=('MI','TU','GV')
- LIG=('FDRO','EXDR','EXTR','EXGA','FGAU','INGA','INTR','INDR')
- if mc_IMPR_TABLE['POSI_ANGUL']==None:
- ASEP=(mc_IMPR_TABLE['POSI_CURV_LONGI']/mc_IMPR_TABLE['R_CINTR'])*(180./pi)
- else :
- ASEP=mc_IMPR_TABLE['POSI_ANGUL']
-#
-# moyenne_rccm, invariant et moyenne sur les ligaments dans
-# l epaisseur
-#
- l_grno=MAILLAGE.LIST_GROUP_NO()
- tabprl=[None]*4
- tablig=[None]*4
-#
-# prelevements des ligaments circonferentiels et longitudinaux
-# de la sous-epaisseur
-#
- lgrno=[]
- for tgrno in l_grno :
- if tgrno[0][:3] in ('CIR','LON') : lgrno.append(tgrno[0])
- elif tgrno[0][:5]=='PCENT' : lgrno.append(tgrno[0])
- elif (tgrno[0][:4] in LIG) and (tgrno[0][4:6] not in ('GV','TU','MI')): lgrno.append(tgrno[0])
-#
- motscles={}
- motscles['ACTION']=[]
- for grno in lgrno :
- motscles['ACTION'].append(_F(RESULTAT=nomres,
- NOM_CHAM='SIEF_ELNO_ELGA',
- TOUT_CMP='OUI',
- INTITULE=grno,
- GROUP_NO=grno,
- OPERATION='EXTRACTION',))
- motscles['TITRE']='TABLE DE POST-TRAITEMENT SECTION SOUS-EPAISSEUR'
- tabprl[1]=POST_RELEVE_T(**motscles)
- tablig[1]=POST_RCCM(MATER = rccmat,
- TYPE_RESU_MECA = 'EVOLUTION',
- OPTION = 'PM_PB',
- TRANSITOIRE=_F(TABL_RESU_MECA = tabprl[1],),)
-#
- motscles={}
- motscles['ACTION']=[]
- for tgrno in lgrno :
- motscles['ACTION'].append(_F(RESULTAT=nomres,
- NOM_CHAM='SIEF_ELNO_ELGA',
- INTITULE=tgrno,
- GROUP_NO=tgrno,
- INVARIANT='OUI',
- OPERATION='EXTRACTION',))
- motscles['TITRE']='TABLE DE POST-TRAITEMENT SECTION SOUS-EPAISSEUR'
-
- tablig[2]=POST_RELEVE_T(**motscles)
-#
- motscles={}
- nommail=MAILLAGE.nom
- coord =aster.getvectjev(nommail.ljust(8)+'.COORDO .VALE')
- linomno =aster.getvectjev(nommail.ljust(8)+'.NOMNOE')
- collgrno=aster.getcolljev(nommail.ljust(8)+'.GROUPENO')
-
- motscles['ACTION']=[]
- for tgrno in lgrno :
- if tgrno[:3]!='LON' :
- if mc_IMPR_TABLE['TRANSFORMEE']=='TUBE': vecty=(0.,0.,1.)
- else : vecty=(sin(ASEP*pi/180.),0.,cos(ASEP*pi/180.))
- else :
- if mc_IMPR_TABLE['TRANSFORMEE']=='TUBE': vecty=(0.,0.,1.)
- else :
- grpn=collgrno['FGAUTU ']
- LT1=coord[3*(grpn[0]-1)+2]
- for node in grpn:
- X = coord[3*(node-1)]
- Y = coord[3*(node-1)+1]
- Z = coord[3*(node-1)+2]
- RCIN = mc_IMPR_TABLE['R_CINTR']
- if Z<LT1 : ANGSEC=0.
- elif X<(-1*RCIN) : ANGSEC=mc_IMPR_TABLE['ANGLE']*pi/180.
- else :
- VCOS = cos((-LT1-Z)/(sqrt((X+RCIN)**2+Y**2 )))
- VSIN = sin((-LT1-Z)/(sqrt((X+RCIN)**2+Y**2 )))
- ANGSEC = atan2(VSIN,VCOS)
- vecty=(sin(ANGSEC),0.,cos(ANGSEC))
- motscles['ACTION'].append(_F(RESULTAT=nomres,
- NOM_CHAM='SIEF_ELNO_ELGA',
- INTITULE=tgrno,
- GROUP_NO=tgrno,
- NOM_CMP=('SIXX','SIYY','SIZZ','SIXY','SIXZ','SIYZ',),
- REPERE='LOCAL',
- VECT_Y=vecty,
- OPERATION='MOYENNE',))
- motscles['TITRE']='TABLE DE POST-TRAITEMENT SECTION SOUS-EPAISSEUR'
- tablig[3]=POST_RELEVE_T(**motscles)
-#
-# prelevements des ligaments sur les sections MI,TU et GV
-# les 8 ligaments sont tous les 45 degres
-#
- ACOUR = mc_IMPR_TABLE['ANGLE']*pi/180.0
- secprl=[None]*3
- secrcm=[None]*3
- secinv=[None]*3
- secmoy=[None]*3
- for i in range(3):
- if mc_IMPR_TABLE['TRANSFORMEE']=='TUBE': vecty=(0.,0.,1.)
- else :
- if i==0 : vecty=(sin(ACOUR/2.),0.,cos(ACOUR/2.))
- if i==1 : vecty=(0.,0.,1.)
- if i==2 : vecty=(sin(ACOUR),0.,cos(ACOUR))
- motscles = {}
- motscles['TITRE']='TABLE DE POST-TRAITEMENT MOYENNE RCCM SECTION '+SECT[i]
-#
-# moyenne RCCM sur les sections MI,TU et GV
-#
- motscles={}
- motscles['ACTION']=[]
- for j in range(8) :
- motscles['ACTION'].append(_F(RESULTAT=nomres,
- NOM_CHAM='SIEF_ELNO_ELGA',
- TOUT_CMP='OUI',
- INTITULE=LIG[j]+SECT[i],
- GROUP_NO=LIG[j]+SECT[i],
- OPERATION='EXTRACTION',))
- motscles['TITRE']='TABLE DE POST-TRAITEMENT MOYENNE RCCM SECTION '+SECT[i]
- secprl[i]=POST_RELEVE_T(**motscles)
- secrcm[i]=POST_RCCM(MATER = rccmat,
- TYPE_RESU_MECA = 'EVOLUTION',
- OPTION = 'PM_PB',
- TRANSITOIRE=_F(TABL_RESU_MECA = secprl[i],),)
-#
-# invariants sur les sections MI,TU et GV
-#
- motscles = {}
- motscles['TITRE']='TABLE DE POST-TRAITEMENT INVARIANTS SECTION '+SECT[i]
- motscles['ACTION']=[]
- for j in range(8) : motscles['ACTION'].append(_F(INTITULE =LIG[j]+SECT[i],
- GROUP_NO =LIG[j]+SECT[i],
- RESULTAT =nomres,
- NOM_CHAM ='SIEF_ELNO_ELGA',
- INVARIANT='OUI',
- OPERATION='EXTRACTION'))
- secinv[i] = POST_RELEVE_T(**motscles)
-#
-# moyennes contraintes sur les sections MI,TU et GV
-#
- motscles = {}
- motscles['TITRE']='TABLE DE POST-TRAITEMENT MOYENNE SECTION '+SECT[i]
- motscles['ACTION']=[]
- for j in range(8) : motscles['ACTION'].append(_F(INTITULE =LIG[j]+SECT[i],
- REPERE ='LOCAL',
- VECT_Y =vecty,
- GROUP_NO =LIG[j]+SECT[i],
- RESULTAT =nomres,
- NOM_CHAM ='SIEF_ELNO_ELGA',
- NOM_CMP =('SIXX','SIYY','SIZZ','SIXY','SIXZ','SIYZ'),
- OPERATION='MOYENNE'))
- secmoy[i] = POST_RELEVE_T(**motscles)
-
-#
-# impression des valeurs maximales pour chaque sous-epaisseur
-#
- if mc_IMPR_TABLE['TOUT_PARA']=='OUI' :
- list_para=['TRESCA_MEMBRANE','TRESCA_MFLE','TRESCA','SI_LONG','SI_RADI','SI_CIRC']
- else : list_para=mc_IMPR_TABLE['NOM_PARA']
- if 'TRESCA_MEMBRANE' in list_para:
- IMPR_TABLE(TABLE = tablig[1],
- FILTRE = _F( NOM_PARA ='PM', CRIT_COMP ='MAXI'),
- NOM_PARA = ('INTITULE','PM'));
- if 'TRESCA_MFLE' in list_para:
- IMPR_TABLE(TABLE = tablig[1],
- FILTRE =(_F( NOM_PARA ='LIEU',VALE_K ='ORIG'),
- _F( NOM_PARA ='PMB', CRIT_COMP='MAXI'),),
- NOM_PARA = ('INTITULE','PMB'));
- IMPR_TABLE(TABLE = tablig[1],
- FILTRE =(_F( NOM_PARA='LIEU', VALE_K ='EXTR'),
- _F( NOM_PARA ='PMB', CRIT_COMP='MAXI'),),
- NOM_PARA = ('INTITULE','PMB'));
- if 'SI_RADI' in list_para:
- IMPR_TABLE(TABLE = tablig[3],
- FILTRE =(_F( NOM_PARA='QUANTITE',VALE_K ='MOMENT_0'),
- _F( NOM_PARA ='SIXX', CRIT_COMP='MAXI'),),
- NOM_PARA = ('INTITULE','SIXX'));
- if 'SI_LONG' in list_para:
- IMPR_TABLE(TABLE = tablig[3],
- FILTRE =(_F( NOM_PARA='QUANTITE',VALE_K ='MOMENT_0'),
- _F( NOM_PARA ='SIYY', CRIT_COMP='MAXI'),),
- NOM_PARA = ('INTITULE','SIYY'));
- if 'SI_CIRC' in list_para:
- IMPR_TABLE(TABLE = tablig[3],
- FILTRE =(_F( NOM_PARA='QUANTITE',VALE_K ='MOMENT_0'),
- _F( NOM_PARA ='SIZZ', CRIT_COMP='MAXI'),),
- NOM_PARA = ('INTITULE','SIZZ'));
- if 'TRESCA' in list_para:
- IMPR_TABLE(TABLE = tablig[2],
- NOM_PARA = ('INTITULE','NOEUD','TRESCA',),
- PAGINATION = 'INTITULE',
- FILTRE = _F( NOM_PARA = 'TRESCA',
- CRIT_COMP = 'MAXI' ) ) ;
-#
-# impression des resultats pour chaque sous-epaisseur
-#
- if 'TRESCA_MEMBRANE' in list_para:
- IMPR_TABLE(TABLE = tablig[1],
- FILTRE = _F( NOM_PARA='LIEU', VALE_K ='ORIG'),
- NOM_PARA = ('INTITULE','PM'));
- if 'TRESCA_MFLE' in list_para:
- IMPR_TABLE(TABLE = tablig[1],
- FILTRE = _F( NOM_PARA='LIEU', VALE_K ='ORIG'),
- NOM_PARA = ('INTITULE','PMB'));
- IMPR_TABLE(TABLE = tablig[1],
- FILTRE = _F( NOM_PARA='LIEU', VALE_K ='EXTR'),
- NOM_PARA = ('INTITULE','PMB'));
- if 'SI_RADI' in list_para:
- IMPR_TABLE(TABLE = tablig[3],
- FILTRE = _F( NOM_PARA='QUANTITE', VALE_K ='MOMENT_0'),
- NOM_PARA = ('INTITULE','SIXX'));
- if 'SI_LONG' in list_para:
- IMPR_TABLE(TABLE = tablig[3],
- FILTRE = _F( NOM_PARA='QUANTITE', VALE_K ='MOMENT_0'),
- NOM_PARA = ('INTITULE','SIYY'));
- if 'SI_CIRC' in list_para:
- IMPR_TABLE(TABLE = tablig[3],
- FILTRE = _F( NOM_PARA='QUANTITE', VALE_K ='MOMENT_0'),
- NOM_PARA = ('INTITULE','SIZZ'));
- if 'TRESCA' in list_para:
- IMPR_TABLE(TABLE = tablig[2],
- NOM_PARA = ('INTITULE','NOEUD','TRESCA',),
- PAGINATION = 'INTITULE');
-#
-# impression des resultats pour les sections MI, TU et GV
-#
- for k in range(3):
- if 'TRESCA_MEMBRANE' in list_para:
- IMPR_TABLE(TABLE = secrcm[k],
- FILTRE = _F( NOM_PARA='LIEU', VALE_K ='ORIG'),
- NOM_PARA = ('INTITULE','PM'));
- if 'TRESCA_MFLE' in list_para:
- IMPR_TABLE(TABLE = secrcm[k],
- FILTRE = _F( NOM_PARA='LIEU', VALE_K ='ORIG'),
- NOM_PARA = ('INTITULE','PMB'));
- IMPR_TABLE(TABLE = secrcm[k],
- FILTRE = _F( NOM_PARA='LIEU', VALE_K ='EXTR'),
- NOM_PARA = ('INTITULE','PMB'));
- if 'SI_RADI' in list_para:
- IMPR_TABLE(TABLE = secmoy[k],
- FILTRE = _F( NOM_PARA='QUANTITE', VALE_K ='MOMENT_0'),
- NOM_PARA = ('INTITULE','SIXX'));
- if 'SI_LONG' in list_para:
- IMPR_TABLE(TABLE = secmoy[k],
- FILTRE = _F( NOM_PARA='QUANTITE', VALE_K ='MOMENT_0'),
- NOM_PARA = ('INTITULE','SIYY'));
- if 'SI_CIRC' in list_para:
- IMPR_TABLE(TABLE = secmoy[k],
- FILTRE = _F( NOM_PARA='QUANTITE', VALE_K ='MOMENT_0'),
- NOM_PARA = ('INTITULE','SIZZ'));
- if 'TRESCA' in list_para:
- IMPR_TABLE(TABLE = secinv[k],
- NOM_PARA = ('INTITULE','NOEUD','TRESCA',),
- PAGINATION = 'INTITULE');
-#
- if TYPE_MAILLAGE in ('FISS_COUDE','FISS_AXIS_DEB'):
-#
-# --- post traitement fissure : calcul de g ----
-#
- motscles = {}
- if FOND_FISS != None : self.DeclareOut('fonfis',FOND_FISS)
- if TYPE_MAILLAGE =='FISS_COUDE' :
- motscles['FOND_FISS']=_F(GROUP_NO='FONDFISS')
- motscles['VECT_GRNO_ORIG']= ('PFOR','THOR')
- motscles['VECT_GRNO_EXTR']= ('PFEX','THEX')
- else :
- motscles['FOND_FERME']=_F(GROUP_MA='FONDFISS',
- GROUP_NO_ORIG='PFOR',
- GROUP_MA_ORIG='MAIL_ORI')
- fonfis=DEFI_FOND_FISS(MAILLAGE=MAILLAGE,
- LEVRE_SUP=_F(GROUP_MA='FACE1'),
- LEVRE_INF=_F(GROUP_MA='FACE2'),
- INFO=2,**motscles
- );
- if THETA_3D!=None :
- for thet in THETA_3D:
- _nothet=CALC_THETA(MODELE=modele,
- FOND_FISS=fonfis,
- THETA_3D=_F(TOUT = 'OUI',
- MODULE = 1.,
- R_INF = thet['R_INF'],
- R_SUP = thet['R_SUP'],),
- );
- motscles = {}
- if COMP_INCR!=None : motscles['COMP_INCR']=_F(RELATION=COMP_INCR['RELATION'])
- if COMP_ELAS!=None : motscles['COMP_ELAS']=_F(RELATION=COMP_ELAS['RELATION'])
- _nogthe=CALC_G_THETA_T(
- RESULTAT =nomres,
- TOUT_ORDRE ='OUI',
- THETA =_nothet,
- **motscles
- );
-#
- IMPR_TABLE(TABLE=_nogthe,);
-#
- for thet in THETA_3D:
- motscles = {}
- if COMP_INCR!=None : motscles['COMP_INCR']=_F(RELATION=COMP_INCR['RELATION'])
- if COMP_ELAS!=None : motscles['COMP_ELAS']=_F(RELATION=COMP_ELAS['RELATION'])
- if TYPE_MAILLAGE =='FISS_COUDE' :
- motscles['LISSAGE_THETA']='LEGENDRE'
- motscles['LISSAGE_G'] ='LEGENDRE'
- elif TYPE_MAILLAGE =='FISS_AXIS_DEB' :
- motscles['LISSAGE_THETA']='LAGRANGE'
- motscles['LISSAGE_G'] ='LAGRANGE'
- _nogloc=CALC_G_LOCAL_T(MODELE =modele,
- RESULTAT =nomres,
- TOUT_ORDRE ='OUI',
- CHAM_MATER =affmat,
- FOND_FISS =fonfis,
- DEGRE = 4,
- R_INF = thet['R_INF'],
- R_SUP = thet['R_SUP'],
- **motscles
- );
-
- IMPR_TABLE(TABLE=_nogloc,);
-#
-# --- commande IMPR_RESU ---
-#
- if IMPRESSION!=None:
- mcfresu =[]
- motscles={}
- if IMPRESSION['FORMAT']=='IDEAS' :
- motscles['VERSION' ]= IMPRESSION['VERSION']
- if IMPRESSION['FORMAT']=='CASTEM' :
- motscles['NIVE_GIBI' ]= IMPRESSION['NIVE_GIBI']
- mcfresu.append(_F(MAILLAGE=MAILLAGE,RESULTAT=nomres,))
- if ECHANGE!=None:
- motscles={}
- if IMPRESSION['FORMAT']=='IDEAS' :
- motscles['VERSION' ]= IMPRESSION['VERSION']
- if IMPRESSION['FORMAT']=='CASTEM' :
- motscles['NIVE_GIBI' ]= IMPRESSION['NIVE_GIBI']
- mcfresu.append(_F(RESULTAT=resuth,))
- IMPR_RESU( MODELE = modele,
- RESU = mcfresu,
- FORMAT=IMPRESSION['FORMAT'],**motscles)
-#
- return ier
+++ /dev/null
-#@ MODIF macr_ascouf_mail_ops Macro DATE 05/09/2005 AUTEUR DURAND C.DURAND
-# -*- coding: iso-8859-1 -*-
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-
-
-
-from math import sqrt,cos,sin,pi,tan,log,fabs,ceil,fmod,floor
-import aster
-import string
-from Utilitai.Utmess import UTMESS
-
-# ------------------------------------------------------------------------------
-def ASCFON(RC,RM,EP,ORIEN,AZIM,AXEC,POS,Y):
- """
- FONCTION F(CP)=CC
- OU CC EST LA TAILLE DE LA FISSURE SUR LE COUDE
- ET CP LA TAILLE DE FISSURE SUR LA PLAQUE
- """
- AZIMR = AZIM*2.*pi/360.
- if POS=='DEB_INT': X = RM-EP/2.
- else : X = RM+EP/2.
- if abs(ORIEN-45.0)<0.01: SIG = 1.
- else : SIG = -1.
- f_ASCFON = - SIG*X*RC/(2.*RM*sin(AZIMR)) * ( \
- log ( RM/X+RM/RC*(cos(AZIMR)- \
- sin(AZIMR)*SIG*Y/(sqrt(2.)*RM)) + \
- sqrt( 1.+( RM/X+RM/RC*(cos(AZIMR)- \
- sin(AZIMR)*SIG*Y/(sqrt(2.)*RM)) )**2 ) \
- ) \
- - log ( RM/X+RM/RC*cos(AZIMR) \
- + sqrt( 1. +(RM/X+RM/RC*cos(AZIMR))**2) \
- ) ) \
- - SIG*X*RC/(2.*RM*SIN(AZIMR)) * \
- ( ( RM/X+RM/RC* ( cos(AZIMR)- \
- sin(AZIMR)*SIG*Y/(sqrt(2.0)*RM) ) \
- ) * sqrt( 1. + ( RM/X+RM/RC*(cos(AZIMR)- \
- sin(AZIMR)*SIG*Y/(SQRT(2.)*RM)) )**2 ) \
- - ( RM/X+RM/RC*COS(AZIMR) ) \
- * sqrt( 1. +(RM/X+RM/RC*cos(AZIMR))**2) \
- ) \
- - 2.0*AXEC
- return f_ASCFON
-
-# ------------------------------------------------------------------------------
-def ASCFIS(ALPHA, RM, RC, EP, SUREP, GEOM, AXEA,
- AXEC, AZIM, POS, SF, DSF, BETA, ORIEN):
- """
- MACR_ASCOUF_MAIL ASCFIS
- taille initiale du defaut fissure sur la plaque en
- fonction des donnees sur le coude ou le tube suivant la
- transformation choisie
-
- ------------DONNEES FOURNIES PAR L UTILISATEUR--------------------
-
- ALPHA = ANGLE DU COUDE
- RM = RAYON MOYEN DU COUDE
- RC = RAYON DE CINTRAGE DU COUDE
- EP = EPAISSEUR DU COUDE
- SUREP = VALEUR DE LA SUREPAISSEUR
- GEOM = TYPE DE GEOMETRIE MODELISEE (COUDE OU TUBE)
- AXEA = PROFONDEUR FISSURE (DEMI PETIT AXE)
- AXEC = DEMI GRAND AXE FISSURE
- AZIM = POSITION AZIMUTALE DU CENTRE DE LA FISSURE
- POS = POSITION EN PEAU (EXTERNE OU INTERNE)
- SF = ABCISSE CURVILIGNE LONGITUDINALE DU CENTRE DE LA FISSURE
- DSF = BOOLEEN EXPRESSION POSITION CENTRE FISSURE
- BETA = POSITION ANGULAIRE DU CENTRE DE LA FISSURE
- ORIEN = ORIENTATION DE LA FISSURE
-
- -----------------DONNEES RENVOYEES-----------------------
-
- AXEAP = PROFONDEUR DE LA FISSURE (PETIT AXE) SUR LA PLAQUE
- AXECP = LONGUEUR DE LA FISSURE (GRAND AXE) SUR LA PLAQUE
- SFP = ABCISSE CURVILIGNE LONGITUDINALE CENTRE FISSURE
- SUR LA PLAQUE
-
- """
- from Utilitai import funct_root
- echo_mess=['MACR_ASCOUF_MAIL ASCFIS \n',]
- if POS=='DEB_INT':
- if (AZIM>=120.) and (AZIM<=240.0): X = RM-EP/2.0 - SUREP
- else: X = RM-EP/2.0
- else: X = RM+EP/2.0
- AZIMR = AZIM*2.0*pi/360.0
-#
-# -- CALCUL COTE AXIALE DU CENTRE FISSURE SUR LA PLAQUE EN FONCTION
-# DE L ABSCISSE CURVILIGNE DONNEE SUR LE COUDE OU DE LA POSITION
-# ANGULAIRE
-#
- if DSF:
- if GEOM=='COUDE': SFP = SF/(1.0+X/RC*cos(AZIMR))
- else : SFP = SF
- else :
- BETAR = BETA*2.0*pi/360.0
- if (GEOM=='COUDE'):
- SF = BETAR*(RC+X*cos(AZIMR))
- SFP = SF/(1.0+X/RC*cos(AZIMR))
- else:
- SF = BETAR*RC
- SFP = SF
- if (GEOM=='COUDE'): echo_mess.append( 'COTE AXIALE CENTRE FISSURE SUR COUDE : %.2f \n'%SF)
- if (GEOM=='TUBE') : echo_mess.append( 'COTE AXIALE CENTRE FISSURE SUR TUBE : %.2f \n'%SF )
- echo_mess.append( 'COTE AXIALE CENTRE FISSURE SUR PLAQUE : %.2f \n'%SFP)
-#
-# ON ENVISAGE LE CAS OU UNE PARTIE DE L AXE EST DANS LES
-# DROITES DES EMBOUTS. LA TRANSFORMATION N EST FAITE QUE SUR LA
-# PARTIE RESTANT DANS LE COUDE.
-#
- if (GEOM=='COUDE'): DIST = ALPHA*2.0*pi/360.0*(RC+X*cos(AZIMR))
- else : DIST = ALPHA*2.0*pi/360.0*RC
- BCOUD = 0.0
- BEMB = 0.0
- if abs(ORIEN)<0.01:
-# -- FISSURE LONGITUDINALE (0 DEGRE)
- BSUP = SF + AXEC
- BINF = SF - AXEC
- if BSUP>DIST:
- BCOUD = DIST - BINF
- BEMB = BSUP - DIST
- elif BINF<0. :
- BCOUD = BSUP
- BEMB = abs(BINF)
- elif (BINF>=0. and BSUP<=DIST):
- BCOUD = 2.0*AXEC
- elif abs(ORIEN-90.)<0.01:
-# -- FISSURE CIRCONFERENTIELLE (90 DEGRES)
- BSUP = SF
- BINF = SF
- if BSUP>DIST:
- BCOUD = DIST - BINF
- BEMB = BSUP - DIST
- elif BINF<0. :
- BCOUD = BSUP
- BEMB = abs(BINF)
- elif (BINF>=0. and BSUP<=DIST):
- BCOUD = 2.0*AXEC
- else:
-# -- FISSURE A +/- 45 DEGRES SUR INTRADOS OU EXTRADOS
- BSUP = SF + sqrt(2.0)/2.0*AXEC
- BINF = SF - sqrt(2.0)/2.0*AXEC
- if BSUP>DIST:
- BCOUD = (DIST - BINF)*sqrt(2.0)
- BEMB = (BSUP - DIST)*sqrt(2.0)
- elif BINF<0. :
- BCOUD = BSUP *sqrt(2.0)
- BEMB = abs(BINF)*sqrt(2.0)
- elif (BINF>=0. and BSUP<=DIST):
- BCOUD = 2.0*AXEC
- echo_mess.append( 'PARTIE DU GRAND AXE DANS LE COUDE : %.2f \n'%BCOUD)
- echo_mess.append( 'PARTIE DU GRAND AXE DANS L EMBOUT : %.2f \n'%BEMB)
-#
-# -- CALCUL DE LA TAILLE DU GRAND AXE FISSURE SUR LA PLAQUE
-#
- NEWT=0
- if abs(ORIEN)<0.01:
-# -- FISSURE LONGITUDINALE (0 DEGRE)
- if GEOM=='COUDE': AXECP = BCOUD/(1.0+X/RC*cos(AZIMR)) + BEMB
- else : AXECP = BCOUD + BEMB
- elif abs(ORIEN-90.)<0.01:
-# -- FISSURE CIRCONFERENTIELLE (90 DEGRES)
- AXECP = (BCOUD+BEMB)*RM/X
- else :
- if GEOM=='COUDE':
-# ------- TRANSFORMATION COUDE
- if AZIM in (0.,180.):
-# -- FISSURE A +/- 45 DEGRES SUR INTRADOS OU EXTRADOS
- AXECP = BCOUD*RM*sqrt(2.)/( X*sqrt(1.+(RM/X+RM/RC*cos(AZIMR))**2) )+\
- BEMB*sqrt( (1.0+(X/RM)**2)*0.5 )
- else :
-# -- FISSURE A +/- 45 DEGRES AILLEURS
- AXECP = funct_root.root(ASCFON,(BCOUD-1.,BCOUD+1.))
- AXECP = AXECP + BEMB*sqrt( (1.+(X/RM)**2)*0.5 )
- AXECC = ASCFON(AXECP)+BCOUD
- NEWT=1
- elif GEOM=='TUBE':
- AXECP = (BCOUD+BEMB)*sqrt( (1.+(X/RM)**2)*0.5 )
- else :
- AXECP = BCOUD + BEMB
-#
- if GEOM=='COUDE':
- echo_mess.append( 'TAILLE GRAND AXE COUDE DONNE : %.2f \n'%(2.*AXEC))
- elif GEOM=='TUBE':
- echo_mess.append( 'TAILLE GRAND AXE TUBE DONNE : %.2f \n'%(2.*AXEC))
- echo_mess.append( 'TAILLE GRAND AXE PLAQUE DEDUIT : %.2f \n'%AXECP)
- if NEWT:
- echo_mess.append( 'METHODE DE NEWTON FISSURE A 45 DEGRES --> \n')
- echo_mess.append( 'TAILLE GRAND AXE COUDE RECALCULE : %.2f \n'%AXECC)
- if GEOM=='COUDE' and BEMB>0. and BSUP>DIST :
- SFP = ALPHA*2.*pi*RC/360. - AXECP/2. + BEMB
- echo_mess.append( 'CORRECTION CENTRE : FISSURE A CHEVAL SUR EMBOUT \n')
- echo_mess.append( 'ABSC. CURV. AXIALE CENTRE FISSURE SUR PLAQUE : %.2f \n'%SFP)
- if GEOM=='COUDE' and BEMB>0. and BINF<0. :
- SFP = + AXECP/2. - BEMB
- echo_mess.append( 'CORRECTION CENTRE : FISSURE A CHEVAL SUR EMBOUT \n')
- echo_mess.append( 'ABSC. CURV. AXIALE CENTRE FISSURE SUR PLAQUE : %.2f \n'%SFP)
-#
-# -- CORRECTION DU PETIT AXE DE LA FISSURE QUAND CELLE-CI SE TROUVE SUR
-# LA ZONE DE SUREPAISSEUR
-#
- ALPHAR = ALPHA*2.*pi/360.
- ZSUR1 = ALPHAR*RC/10.
- ZSUR2 = ALPHAR*RC*9./10.
- YFISS = (AZIMR-pi/2.)*RM
- MU = 0.
- if (AZIM>=120.) and (AZIM<=240.):
- if (SFP>=ZSUR1) and (SFP<=ZSUR2): MU = 1.
- elif (SFP<=ZSUR1): MU = SFP/ZSUR1
- elif (SFP>ZSUR2): MU = (ALPHAR*RC-SFP)/ZSUR1
- elif (AZIM>=90.) and (AZIM<=120.):
- if (SFP>=ZSUR1) and (SFP<=ZSUR2): MU = YFISS/(pi/6.*RM)
- elif (SFP<=ZSUR1): MU = YFISS*SFP/(pi/6.*RM*ZSUR1)
- elif (SFP>ZSUR2): MU = YFISS*(ALPHAR*RC-SFP)/(pi/6.*RM*ZSUR1)
- elif (AZIM>=240.) and (AZIM<=270.):
- if (SFP>=ZSUR1) and (SFP<=ZSUR2): MU = (YFISS-5.*pi/6.*RM)/(pi/6.*RM)
- elif (SFP<=ZSUR1): MU = (YFISS-5.*pi/6.*RM)*SFP/(pi/6.*RM*ZSUR1)
- elif (SFP>ZSUR2): MU = (YFISS-5.*pi/6.*RM)*(ALPHAR*RC-SFP)/(pi/6.*RM*ZSUR1)
-#
- if SUREP!=0.:
- AXEAP = AXEA * EP / ( EP + MU*SUREP )
- echo_mess.append( '--> CORRECTION DUE A LA SUREPAISSEUR \n' )
- echo_mess.append( '--> TAILLE PETIT AXE PLAQUE : %.2f \n'%AXEAP )
- else: AXEAP = AXEA
-#
- texte_final=string.join(echo_mess)
- aster.affiche('MESSAGE',texte_final)
- return AXEAP,AXECP,SFP
-
-
-# ------------------------------------------------------------------------------
-def ASCSEP(MCL_SOUS_EPAIS,ALPHA,RM,RC,EP,GEOM,SYME):
- """
- MACR_ASCOUF_MAIL ASCSEP
- taille initiale sur la plaque des sous-epaisseurs
-
- ------------DONNEES FOURNIES PAR L UTILISATEUR--------------------
-
- ALPHA = ANGLE DU COUDE
- RM = RAYON MOYEN DU COUDE
- RC = RAYON DE CINTRAGE DU COUDE
- EP = EPAISSEUR DU COUDE
- GEOM = TYPE DE GEOMETRIE MODELISEE (COUDE OU TUBE)
- SYME = QUART DE STRUCTURE SI 'OUI'
-
- """
- ier=0
- CG=pi/180.
- echo_mess=['MACR_ASCOUF_MAIL ASCSEP \n',]
-#
-# --- BOUCLE SUR L ENSEMBLE DES SOUS-EPAISSEURS
-#
- i=0
- for ssep in MCL_SOUS_EPAIS :
- i=i+1
- echo_mess.append( '-------------------------------------\n')
- echo_mess.append( 'SOUS-EPAISSEUR NUMERO %d\n'%i)
- echo_mess.append( '-------------------------------------\n')
-#
-# --- CAS DES SOUS-EPAISSEURS AXISYMETRIQUES
-#
- if ssep['TYPE']=='AXIS':
- echo_mess.append( 'SOUS-EPAISSEUR AXISYMETRIQUE : \n')
- echo_mess.append( 'CALCUL DE LA TAILLE LONGI ENVELOPPE EN INTRADOS (AZIMUT PI)\n')
- ssep.ICIRP = 2.*pi*RM
- ssep.ISCP = pi*RM
- ssep.IPHIC = 180.
- AZIMC = pi
- else:
-#
-# -- CALCUL DE L ABSCISSE CURVILIGNE CIRCONF.SUR LA PLAQUE
-# EN FONCTION DE L AZIMUT OU DE L ABSCISSE CURVIL.CIRCONF
-# SUR LE COUDE DU CENTRE DE LA SOUS-EPAISSEUR
-# NB : MESURE FAITE EN PEAU EXTERNE SUR LE COUDE
-#
- if ssep['POSI_CURV_CIRC']!=None:
- ssep.ISCP = ssep['POSI_CURV_CIRC']*RM/(RM+EP/2.)
- AZIMC = ssep.ISCP/RM
- ssep.IPHIC = ssep['POSI_CURV_CIRC']/(RM+EP/2.)*180./pi
- echo_mess.append( 'AZIMUT CENTRE SOUS-EPAISSEUR (DEGRES) : %.2f \n'%ssep.IPHIC)
- else:
- ssep.ISCP = ssep['AZIMUT']*pi*RM/180.
- AZIMC = ssep['AZIMUT']*pi/180.
- echo_mess.append( 'ABSC. CURV. CIRCONF. CENTRE SOUS-EPAISSEUR SUR COUDE : %.2f \n'%(AZIMC*(RM+EP/2.)))
-#
-# PASSAGE DANS LE REPERE PLAQUE (0,2PI) AVEC ORIGINE FLANC DROIT
-# CAR L ORIGINE DES DONNEES CIRCONF. EST EN EXTRADOS
-#
- if ssep.ISCP>(3.*pi*RM/2.): ssep.ISCP = ssep.ISCP - 3.*pi*RM/2.
- else: ssep.ISCP = ssep.ISCP + pi*RM/2.
- echo_mess.append( 'ABSC. CURV. CIRCONF. CENTRE SOUS-EPAISSEUR SUR PLAQUE : %.2f \n'%ssep.ISCP)
-#
-# -- CALCUL DE LA TAILLE CIRCONFERENTIELLE
-# NB : MESURE FAITE EN PEAU EXTERNE SUR LE COUDE
-#
- ssep.ICIRP = ssep['AXE_CIRC']*(RM/(RM+EP/2.))
- if ssep.ICIRP>(2.*pi*RM) :
- texte_final=string.join(echo_mess)
- aster.affiche("MESSAGE",texte_final)
- message= ' ASCSEP valeur hors domaine \n'
- message=message+' sous-epaisseur numero : %d \n'%i
- message=message+' taille axe circonferentiel : %.2f \n'%ssep.ICIRP
- message=message+' bord plaque : %.2f \n'%2*pi*RM
- UTMESS('F', "MACR_ASCOUF_MAIL", message)
- echo_mess.append( 'TAILLE CIRCONFERENTIELLE SOUS-EPAISSEUR SUR PLAQUE : %.2f \n'%ssep.ICIRP)
- echo_mess.append( '<=> TAILLE EQUIVALENTE SUR LA CIRCONFERENCE (DEGRES) : %.2f \n'%(ssep.ICIRP*360./(2.*pi*RM)))
-
-#
-# -- CALCUL COTE AXIALE DU CENTRE SOUS-EPAISSEUR SUR LA PLAQUE
-# EN FONCTION DE L ABSCISSE CURVILIGNE DONNEE SUR LE COUDE
-# OU DE LA POSITION ANGULAIRE
-# NB : MESURE FAITE EN PEAU EXTERNE SUR LE COUDE
-#
- if ssep['POSI_CURV_LONGI']!=None:
- if GEOM=='COUDE':
- ssep.ISLP = ssep['POSI_CURV_LONGI']/(1.+(RM+EP/2.)/RC*cos(AZIMC))
- AZIML = ssep.ISLP/RC
- echo_mess.append( 'ANGLE COUDE CENTRE SOUS-EPAISSEUR (DEGRES) : %.2f \n'%(AZIML*180./pi))
- else :
- ssep.ISLP = ssep['POSI_CURV_LONGI']
- if (SYME in ('QUART','DEMI')) and (ssep.ISLP!=ALPHA*CG*RC/2.) :
- texte_final=string.join(echo_mess)
- aster.affiche("MESSAGE",texte_final)
- message= ' ASCSEP cas de symetrie :\n'
- message=message+ ' la sous-epaisseur doit etre dans la section mediane du coude !\n'
- UTMESS('F', "MACR_ASCOUF_MAIL", message)
- else :
- if GEOM=='COUDE':
- echo_mess.append( 'ABSC. CURV. AXIALE CENTRE SOUS-EPAISSEUR SUR COUDE : %.2f \n'%((ssep.BETA)*CG*(RC+(RM+EP/2.)*cos(AZIMC))))
- AZIML = (ssep.BETA)*CG
- else :
- echo_mess.append( 'ABSC. CURV. AXIALE CENTRE SOUS-EPAISSEUR SUR TUBE : %.2f \n'%((ssep.BETA)*CG*RC) )
- ssep.ISLP = (ssep.BETA)*CG*RC
- if (SYME in ('QUART','DEMI')) and (ssep.BETA!=ALPHA/2.) :
- texte_final=string.join(echo_mess)
- aster.affiche("MESSAGE",texte_final)
- message= ' ASCSEP cas de symetrie :\n'
- message=message+ ' la sous-epaisseur doit etre dans la section mediane du coude !\n'
- UTMESS('F', "MACR_ASCOUF_MAIL", message)
- echo_mess.append( 'ABSC. CURV. AXIALE CENTRE SOUS-EPAISSEUR SUR PLAQUE : %.2f \n'%ssep.ISLP)
-#
-# -- CALCUL DE LA TAILLE LONGITUDINALE
-# NB : MESURE FAITE EN PEAU EXTERNE SUR LE COUDE
-#
-# ON ENVISAGE LE CAS OU UNE PARTIE DE L AXE EST DANS LES
-# DROITES DES EMBOUTS. LA TRANSFORMATION N EST FAITE QUE SUR LA
-# PARTIE RESTANT DANS LE COUDE.
-#
- if GEOM=='COUDE' : DIST = ALPHA*CG*(RC+(RM+EP/2.)*cos(AZIMC))
- else : DIST = ALPHA*CG*RC
- if ssep['POSI_CURV_LONGI']!=None:
- BSUP = ssep['POSI_CURV_LONGI']+ssep['AXE_LONGI']/2.
- BINF = ssep['POSI_CURV_LONGI']-ssep['AXE_LONGI']/2.
- else:
- if GEOM=='COUDE' :
- BSUP = ssep.BETA*CG*(RC+(RM+EP/2.)*cos(AZIMC))+ssep['AXE_LONGI']/2.
- BINF = ssep.BETA*CG*(RC+(RM+EP/2.)*cos(AZIMC))-ssep['AXE_LONGI']/2.
- else:
- BSUP = ssep.BETA*CG*RC + ssep['AXE_LONGI']/2.
- BINF = ssep.BETA*CG*RC - ssep['AXE_LONGI']/2.
- BCOUD1 = 0.
- BCOUD2 = 0.
- BEMB1 = 0.
- BEMB2 = 0.
- if BINF<0. and BSUP>DIST :
- BCOUD1 = DIST
- BEMB1 = abs(BINF) + BSUP-DIST
- elif BSUP>DIST :
- BCOUD1 = DIST - BINF
- BEMB1 = BSUP - DIST
- elif BINF<0 :
- BCOUD2 = BSUP
- BEMB2 = abs(BINF)
- elif (BINF>=0. and BSUP<=DIST) :
- BCOUD1 = ssep['AXE_LONGI']
- BCOUD = BCOUD1+ BCOUD2
- BEMB = BEMB1 + BEMB2
- if GEOM=='COUDE' : BPLAQ = BCOUD/(1.+(RM+EP/2.)/RC*cos(AZIMC))
- else : BPLAQ = BCOUD
- ssep.ILONP = BPLAQ+BEMB
- if BEMB1>0.:
- ssep.ISLP = ALPHA*CG*RC - ssep.ILONP/2. + BEMB1
- echo_mess.append( 'CORRECTION CENTRE : SOUS-EP. A CHEVAL SUR EMBOUT \n')
- echo_mess.append( 'ABSC. CURV. AXIALE CENTRE SOUS-EPAISSEUR SUR PLAQUE : %.2f \n'%ssep.ISLP)
- if BEMB2>0.:
- ssep.ISLP = ssep.ILONP/2. - BEMB2
- echo_mess.append( 'CORRECTION CENTRE : SOUS-EP. A CHEVAL SUR EMBOUT \n')
- echo_mess.append( 'ABSC. CURV. AXIALE CENTRE SOUS-EPAISSEUR SUR PLAQUE : %.2f \n'%ssep.ISLP)
- if ssep.ISLP<0. : ssep.ISLP = 0.
- if (ssep.ISLP>ALPHA*CG*RC) : ssep.ISLP = ALPHA*CG*RC
-#
-# SI LE CENTRE DE LA SOUS-EP CALCULE SUR LA PLAQUE EST DANS L EMBOUT
-# ON CORRIGE SA POSITION EN LE METTANT A L INTERFACE SINON CA PLANTE
-# DANS LA PROC DE MAILLAGE (A AMELIORER)
-#
- echo_mess.append( 'TAILLE LONGITUDINALE SOUS-EPAISSEUR SUR PLAQUE : %.2f \n'%ssep.ILONP)
- echo_mess.append( '<=> TAILLE EQUIVALENTE PAR RAPPORT A L ANGLE DU COUDE (DEGRES): %.2f \n'%(ssep.ILONP*360/(2*pi*RC)))
-#
- texte_final=string.join(echo_mess)
- aster.affiche('MESSAGE',texte_final)
- return ier
-
-# ------------------------------------------------------------------------------
-def ASCTCI(MCL_SOUS_EPAIS,RM):
- """
- MACR_ASCOUF_MAIL ASCTCI
- APPELEE DANS : ASCSYM et ASCPRE
- CALCUL TABLEAU TRIE DES ABSCISSES DES CENTRES DE SOUS-EPAISSEURS
-
- ------------DONNEES FOURNIES PAR L UTILISATEUR--------------------
-
- RM = RAYON MOYEN DU COUDE
-
- -----------------DONNEES RENVOYEES-----------------------
-
- IABSC1 = CORRESPONDANCE ABSC. CURVI. CIRCONF. SOUS-EP. I
- IABSC2 = CORRESPONDANCE ABSC. GAUCHE ET DROITE CIRCONF. SOUS-EP. I
- COORXD = ABSC. DU BORD DROIT DE LA SOUS-EP I
- COORXG = ABSC. DU BORD GAUCHE DE LA SOUS-EP I
-
- """
-#
-# --- tri du tableau des abscisses curvilignes circonf. plaque
-#
- echo_mess=['MACR_ASCOUF_MAIL ASCTCI \n',]
- TAMPON = []
- COORXG = []
- COORYG = []
- i=0
- for ssep in MCL_SOUS_EPAIS :
- i=i+1
- if (ssep.ISCP>2.*pi*RM) or (ssep.ISCP<0.) :
- texte_final=string.join(echo_mess)
- aster.affiche("MESSAGE",texte_final)
- message= ' valeur hors domaine \n'
- message=message+ ' SOUS-EPAISSEUR NUMERO :%d'%MCL_SOUS_EPAIS.index(ssep)
- message=message+ ' ABSC. CURV. CIRCONF. :%.2f \n'%ssep.ISCP
- message=message+ ' BORD PLAQUE :%.2f \n'%(2.*pi*RM)
- UTMESS('F', "MACR_ASCOUF_MAIL", message)
- TAMPON.append((ssep.ISCP,i))
- TAMPON.sort()
- IABSC1=[]
- for j in range(i):
- IABSC1.append(TAMPON[j][1])
- echo_mess.append( ' \n')
- echo_mess.append( 'TRI DES CENTRES ABSC. CURV. CIRCONF. :\n ')
- echo_mess.append( '------------------------------------\n')
- i=0
- for ssep in TAMPON :
- i=i+1
- echo_mess.append( '%d) SOUS-EP NO %d <> XC = %.2f \n'%(i,ssep[1],ssep[0]) )
-#
-# --- calcul des abcisses droites et gauches des sous-epaisseurs
-#
- COORXD=[]
- COORXG=[]
- for bid in TAMPON :
- XG=bid[0]-MCL_SOUS_EPAIS[bid[1]-1].ICIRP/2.
- if XG<0. : XG=XG+2.*pi*RM
- COORXG.append(XG)
- XD=bid[0]+MCL_SOUS_EPAIS[bid[1]-1].ICIRP/2.
- if XD>2.*pi*RM : XD=XD-2.*pi*RM
- COORXD.append(XD)
-#
-# --- tri des bornes d'intervalles en abscisse
-#
- TAMPON = []
- for j in range(len(MCL_SOUS_EPAIS)):
- TAMPON.append((COORXG[j],2*j+1))
- TAMPON.append((COORXD[j],2*j+2))
- TAMPON.sort()
- IABSC2=[]
- for j in range(2*len(MCL_SOUS_EPAIS)):
- IABSC2.append(TAMPON[j][1])
- echo_mess.append( '\n')
- echo_mess.append( 'TRI DES INTERVALLES G ET D ABSC. CURV. CIRCONF. :\n')
- echo_mess.append( '-----------------------------------------------\n' )
- for j in range(2*len(MCL_SOUS_EPAIS)):
- if fmod(IABSC2[j],2):
- echo_mess.append( '%d) SOUS-EP NO %d <> XG = %.2f \n'%(j+1,IABSC1[IABSC2[j]/2],TAMPON[j][0]))
- else:
- echo_mess.append( '%d) SOUS-EP NO %d <> XD = %.2f \n'%(j+1,IABSC1[IABSC2[j]/2-1],TAMPON[j][0]))
-#
- texte_final=string.join(echo_mess)
- aster.affiche('MESSAGE',texte_final)
- return TAMPON,IABSC1,IABSC2,COORXD,COORXG
-
-# ------------------------------------------------------------------------------
-def ASCTLO(MCL_SOUS_EPAIS,RC,ALPHA,LTCHAR,LTCLIM):
- """
- MACR_ASCOUF_MAIL ASCTLO
- APPELEE DANS : ASCSYM et ASCPRE
- CALCUL TABLEAU TRIE DES ORDONNEES DES CENTRES DE SOUS-EPAISSEURS
-
- ------------DONNEES FOURNIES PAR L UTILISATEUR--------------------
-
- RC = RAYON MOYEN DU COUDE
- ALPHA = ANGLE DU COUDE
- LTCHAR = LONGUEUR DE L'EMBOUT DU COTE CHARGEMENT
- LTCLIM = LONGUEUR DE L'EMBOUT DU COTE CONDITIONS AUX LIMITES
-
- -----------------DONNEES RENVOYEES-----------------------
-
- IORDO1 = CORRESPONDANCE ORDO. CURVI. LONGIT. SOUS-EP. I
- IORDO2 = CORRESPONDANCE ORDO. GAUCHE ET DROITE LONGIT. SOUS-EP. I
- COORYI = ORDONNEE. DU BORD INTERIEUR DE LA SOUS-EP I
- COORYS = ORDONNEE. DU BORD SUPERIEUR DE LA SOUS-EP I
-
- """
-#
-# tri du tableau des abscisses curvilignes axiales plaque
-#
- echo_mess=['MACR_ASCOUF_MAIL ASCTLO \n',]
- ALPHAR = 2.*ALPHA*pi/360.
- TAMPON = []
- i=0
- for ssep in MCL_SOUS_EPAIS :
- i=i+1
- if (ssep.ISLP>ALPHAR*RC) or (ssep.ISLP<0.) :
- texte_final=string.join(echo_mess)
- aster.affiche("MESSAGE",texte_final)
- message= ' valeur hors domaine \n'
- message=message+ ' SOUS-EPAISSEUR NUMERO :%d \n'%MCL_SOUS_EPAIS.index(ssep)
- message=message+ ' ABSC. CURV. LONGIT. :%.2f \n'%ssep.ISLP
- message=message+ ' BORDS PLAQUE :%.2f \n'%(ALPHAR*RC)
- UTMESS('F', "MACR_ASCOUF_MAIL", message)
- TAMPON.append((ssep.ISLP,i))
- TAMPON.sort()
- IORDO1=[]
- for j in range(i):
- IORDO1.append(TAMPON[j][1])
- echo_mess.append( '\n')
- echo_mess.append( 'TRI DES CENTRES ABSC. CURV. LONGIT. : \n')
- echo_mess.append( '------------------------------------ \n')
- i=0
- for ssep in TAMPON :
- i=i+1
- echo_mess.append( '%d) SOUS-EP NO %d <> YC = %.2f \n'%(i,ssep[1],ssep[0]))
-#
-# calcul des abscisses sup. et inf. des sous-ep.
-#
- COORYI=[]
- COORYS=[]
- EPS=0.000000000001
- for bid in TAMPON :
- i=i+1
- YI=bid[0]-MCL_SOUS_EPAIS[bid[1]-1].ILONP/2.
- YS=bid[0]+MCL_SOUS_EPAIS[bid[1]-1].ILONP/2.
- if fabs(bid[0])<EPS :
- YI=-(MCL_SOUS_EPAIS[bid[1]-1]['AXE_LONGI'])/2.
- YS=MCL_SOUS_EPAIS[bid[1]-1].ILONP-(MCL_SOUS_EPAIS[bid[1]-1]['AXE_LONGI'])/2.
- if fabs(bid[0]-ALPHAR*RC)<EPS :
- YI=ALPHAR*RC-(MCL_SOUS_EPAIS[bid[1]-1].ILONP-(MCL_SOUS_EPAIS[bid[1]-1]['AXE_LONGI'])/2.)
- YS=ALPHAR*RC+(MCL_SOUS_EPAIS[bid[1]-1]['AXE_LONGI'])/2.
- if YI<(-LTCHAR):
- texte_final=string.join(echo_mess)
- aster.affiche("MESSAGE",texte_final)
- message= ' valeur hors domaine \n'
- message=message+ ' SOUS-EPAISSEUR NUMERO :%d \n'%bid[1]
- message=message+ ' BORD INFERIEUR :%.2f \n'%YI
- message=message+ ' BORDS PLAQUE :%.2f \n'%(-1*LTCHAR)
- UTMESS('F', "MACR_ASCOUF_MAIL", message)
- if YS>(ALPHAR*RC+LTCLIM):
- texte_final=string.join(echo_mess)
- aster.affiche("MESSAGE",texte_final)
- message= ' valeur hors domaine \n'
- message=message+ ' SOUS-EPAISSEUR NUMERO :%d \n'%bid[1]
- message=message+ ' BORD INFERIEUR :%.2f \n'%YI
- message=message+ ' BORDS PLAQUE :%.2f \n'%(ALPHAR*RC+LTCLIM)
- UTMESS('F', "MACR_ASCOUF_MAIL", message)
- COORYI.append(YI)
- COORYS.append(YS)
-#
-# tri des bornes d'intervalles en abscisse
-#
- TAMPON = []
- for j in range(len(MCL_SOUS_EPAIS)):
- TAMPON.append((COORYI[j],2*j+1))
- TAMPON.append((COORYS[j],2*j+2))
- TAMPON.sort()
- IORDO2=[]
- for j in range(2*len(MCL_SOUS_EPAIS)):
- IORDO2.append(TAMPON[j][1])
- echo_mess.append( '\n')
- echo_mess.append( 'TRI DES INTERVALLES I ET S ABSC. CURV. LONGIT. : \n')
- echo_mess.append( '----------------------------------------------- \n')
- for j in range(2*len(MCL_SOUS_EPAIS)):
- if fmod(IORDO2[j],2):
- echo_mess.append( '%d) SOUS-EP NO %d <> YI = %.2f \n'%(j+1,IORDO1[IORDO2[j]/2],TAMPON[j][0]))
- else:
- echo_mess.append( '%d) SOUS-EP NO %d <> YS = %.2f \n'%(j+1,IORDO1[IORDO2[j]/2-1],TAMPON[j][0]))
-#
- texte_final=string.join(echo_mess)
- aster.affiche('MESSAGE',texte_final)
- return TAMPON,IORDO1,IORDO2,COORYI,COORYS
-#
-#
-################################################################################
-################################################################################
-################################################################################
-# MACR_ASCOUF_MAIL ASCNBE
-# APPELEE DANS : ASCSYM et ASCPRE
-# CALCUL DU NOMBRE D'ELEMENTS LONGI ET CIRCONF. DANS LES SOUS-EPAISSEURS
-#
-#-----------------DONNEES FOURNIES PAR L UTILISATEUR--------------------
-#
-# COORXG = ABSCISSE DU BORD GAUCHE DE LA SOUS-EPAISSEUR I
-# COORXD = ABSCISSE DU BORD DROIT DE LA SOUS-EPAISSEUR I
-# COORYI = ORDONNEE DU BORD INFERIEUR DE LA SOUS-EPAISSEUR I
-# COORYS = ORDONNEE DU BORD SUPERIEUR DE LA SOUS-EPAISSEUR I
-# BD = ABSCISSE DU BORD DROIT DE LA ZONE CIRCONF J
-# BG = ABSCISSE DU BORD GAUCHE DE LA ZONE CIRCONF J
-# BS = ORDONNEE DU BORD SUPERIEUR DE LA ZONE LONGI J
-# BI = ORDONNEE DU BORD INFERIEUR DE LA ZONE LONGI J
-# DNX = DENSITE ET NOMBRE D'ELEMENTS CIRCONF. DE LA ZONE J
-# DNY = DENSITE ET NOMBRE D'ELEMENTS LONGIT. DE LA ZONE J
-# INDSEX = NUMERO DE SOUS-EPAISSEUR CONTENU DANS LA ZONE CIRCONF J
-# INDSEY = NUMERO DE SOUS-EPAISSEUR CONTENU DANS LA ZONE LONGI J
-# RM = RAYON MOYEN DU COUDE
-# RC = RAYON DE CINTRAGE DU COUDE
-# IABSC1 = CORRESPONDANCE ABSCISSE CURVILIGNE CIRCONF. SOUS-EP. I
-# IORDO1 = CORRESPONDANCE ABSCISSE CURVILIGNE LONGIT. SOUS-EP. I
-#
-#----------------------DONNEES RENVOYEES-----------------------
-#
-# NLX = NOMBRE TOTAL D'ELEMENTS CIRCONF. DE LA SOUS-EPAISSEUR K
-# NLY = NOMBRE TOTAL D'ELEMENTS LONGIT. DE LA SOUS-EPAISSEUR K
-#
-# ------------------------------------------------------------------------------
-def ASCNBE(MCL_SOUS_EPAIS,COORXG,COORXD,COORYI,COORYS,BD,BG,BS,BI,DNX,DNY,RM,RC,
- INDSEX,INDSEY,IABSC1,IORDO1):
-#
-# calcul du nombre d'elements longi. et circonf. dans les sous-epaisseurs:
-#
- echo_mess=['MACR_ASCOUF_MAIL ASCNBE \n',]
- echo_mess.append( '\n')
- echo_mess.append( 'DETERMINATION DU NOMBRE D''ELEMENTS DANS LES SOUS-EPAISSEURS :\n')
- echo_mess.append( '------------------------------------------------------------\n')
- NLX=[0]*len(MCL_SOUS_EPAIS)
- NLY=[0]*len(MCL_SOUS_EPAIS)
- for j in range(len(BD)):
- if INDSEX[j]!=0:
-# calcul au passage du nombre d'elements sur chaque zone circonf.
- RNBEL = (BD[j]-BG[j])*360./(DNX[2*j]*2.*pi*RM)
- RNBEL2 = RNBEL - floor(RNBEL)
- if RNBEL2 <= 0.5 : NBEL=int(floor(RNBEL))
- else : NBEL=int(floor(RNBEL))+1
- if NBEL <= 1 : NBEL=2
-# calcul au passage du nombre d'elements sur chaque sous-epaisseur circonf.
- for i in range(len(MCL_SOUS_EPAIS)):
- l=IABSC1[i]-1
- if ((COORXG[l]<COORXD[l] and BG[j]>=COORXG[l] and BD[j]<=COORXD[l])\
- or (COORXG[l]>=COORXD[l] and (BG[j]<=COORXG[l] or BD[j]>=COORXD[l]))):
- NLX[i]=NLX[i]+NBEL
- echo_mess.append( 'SOUS-EP NO %d ZONE CIRC. NO %d NB ELEM. = %d \n'%(i+1,j+1,NBEL))
-
- for j in range(len(BS)):
- if INDSEY[j]!=0:
-# calcul au passage du nombre d'elements sur chaque zone longi.
- RNBEL = ((BS[j]-BI[j])*360.)/(DNY[2*j]*2.*pi*RC)
- RNBEL2 = RNBEL - floor(RNBEL)
- if RNBEL2 <= 0.5 : NBEL=int(floor(RNBEL))
- else : NBEL=int(floor(RNBEL))+1
- if NBEL <= 1 : NBEL=2
-# calcul au passage du nombre d'elements sur chaque sous-epaisseur circonf.
- i=0
- for i in range(len(MCL_SOUS_EPAIS)):
- l=IORDO1[i]-1
- if (BI[j]>=COORYI[l] and BS[j]<=COORYS[l]):
- NLY[i]=NLY[i]+NBEL
- echo_mess.append( 'SOUS-EP NO %d ZONE LONGI. NO %d NB ELEM. = %d \n'%(i+1,j+1,NBEL) )
-
- for j in range(len(NLX)):
- echo_mess.append( 'SOUS-EP NO %d NBE TOTAL ELEMENTS CIRCONF. : %d \n'%(j+1,NLX[j]))
- echo_mess.append( 'SOUS-EP NO %d NBE TOTAL ELEMENTS LONGI. : %d \n'%(j+1,NLY[j]))
-
-#
- texte_final=string.join(echo_mess)
- aster.affiche('MESSAGE',texte_final)
- return NLX,NLY
-#
-################################################################################
-################################################################################
-################################################################################
-# MACR_ASCOUF_MAIL ASCSYM
-# PREPARATION DES DONNEES POUR LE MAILLAGE DE PLAQUE AVEC
-# SOUS-EPAISSEURS :
-# CAS D UNE SOUS-EPAISSEUR DANS LE PLAN DE SYMETRIE
-# CONSTRUCTION D UN QUART DU MAILLAGE
-# - CALCUL TABLEAU TRIE DES ABSCISSES ET ORDONNEES DES CENTRES
-# - CALCUL TABLEAU DES ZONES COUVERTES PAR LES SOUS-EPAISSEURS
-#
-#-----------------DONNEES FOURNIES PAR L UTILISATEUR--------------------
-#
-# RM = RAYON MOYEN DU COUDE
-# RC = RAYON DE CINTRAGE DU COUDE
-# ALPHA = ANGLE DU COUDE
-# LT = LONGUEUR DE L EMBOUT DU COTE CHARGEMENT
-# LGV = LONGUEUR DE L EMBOUT DU COTE CONDITIONS AUX LIMITES
-# NBSEP = NOMBRE DE SOUS-EPAISSEURS
-#
-#----------------------DONNEES RENVOYEES-----------------------
-#
-# NZONEX = NOMBRE DE ZONES CIRCONFERENTIELLES
-# NZONEY = NOMBRE DE ZONES LONGITUDINALES
-#
-# ------------------------------------------------------------------------------
-def ASCSYM(MCL_SOUS_EPAIS,RM,RC,ALPHA,LTCHAR,LTCLIM):
- ier=0
- echo_mess=['MACR_ASCOUF_MAIL ASCSYM \n',]
- DERAFC = 18.
- DERAFL = 5.
- INDSEX = []
- INDSEY = []
- BG = []
- BD = []
- INDBG = []
- INDBD = []
- DNX = []
-
-#
-# --- tri des donnees sous-ep. en circonferentiel
- TAMPON,IABSC1,IABSC2,COORXD,COORXG=ASCTCI(MCL_SOUS_EPAIS,RM)
-#
-# --- calcul des zones en circonferentiel
-#
- ssep=MCL_SOUS_EPAIS[0]
- if (ssep.ISCP<pi*RM) :
-#
-# le centre sous-ep est dans la zone flanc droit/extrados/flanc
-# gauche, on preleve pi*RM a droite de la sous-epaisseur
-#
-# zone (centre sous-ep , bord droit)
-#
- BG.append(ssep.ISCP)
- BG.append(ssep.ISCP+ssep.ICIRP/2.)
- BD.append(ssep.ISCP+ssep.ICIRP/2.)
- BD.append(ssep.ISCP+pi*RM)
- INDBG.append(0)
- INDBG.append(1)
- INDBD.append(0)
- INDBD.append(0)
- DNX.append(ssep.IDENC)
- DNX.append(0)
- DNX.append(DERAFC)
- DNX.append(0)
- INDSEX.append(1)
- INDSEX.append(0)
- elif (ssep.ISCP+pi*RM==2.*pi*RM) :
-#
-# sous-ep axisymetrique : on preleve pi*RM a droite
-#
-# zone (centre sous-ep , bord droit)
-#
- BG.append(ssep.ISCP)
- BD.append(ssep.ISCP+ssep.ICIRP/2.)
- INDBG.append(0)
- INDBD.append(0)
- DNX.append(ssep.IDENC)
- DNX.append(0)
- INDSEX.append(1)
- INDSEX.append(0)
- else :
-#
-# le centre sous-ep est dans la zone flanc gauche/intrados/flanc
-# droit : on preleve pi*RM a gauche de la sous-epaisseur
-#
-# zone (centre -pi*RM, bord gauche)
-#
- BG.append(ssep.ISCP-pi*RM)
- BG.append(ssep.ISCP-ssep.ICIRP/2.)
- BD.append(ssep.ISCP-ssep.ICIRP/2.)
- BD.append(ssep.ISCP)
- INDBG.append(0)
- INDBG.append(0)
- INDBD.append(1)
- INDBD.append(0)
- DNX.append(DERAFC)
- DNX.append(0)
- DNX.append(ssep.IDENC)
- DNX.append(0)
- INDSEX.append(0)
- INDSEX.append(1)
-
-
- echo_mess.append( '\n')
- echo_mess.append( 'ZONES APRES RECOUVREMENT ABSC. CURV. CIRCONF. :\n')
- echo_mess.append( '--------------------------------------------- \n')
- EPS=0.000000000001
- NZONEX=len(BG)
- for j in range(NZONEX) :
- if ( fabs(BG[j]) < EPS ) and ( fabs(BD[j]) < EPS ) :
- echo_mess.append( 'ZONE NO %d BORNE GAUCHE = %.2f'\
- ' / BORNE DROITE = %.2f * SOUS-EPAISSEUR \n'%(j+1,BG[j],BD[j]) )
- else:
- echo_mess.append( 'ZONE NO %d BORNE GAUCHE = %.2f \n'\
- ' / BORNE DROITE = %.2f \n'%(j+1,BG[j],BD[j]))
-
-
-# tri des donnees sous-epaisseurs en axial
- TAMPON,IORDO1,IORDO2,COORYI,COORYS=ASCTLO(MCL_SOUS_EPAIS,RC,ALPHA,LTCHAR,LTCLIM)
-
-# calcul des zones en axial:
- BI = []
- BS = []
- INDBI = []
- INDBS = []
- DNY = []
- INDSEY = []
- ssep = MCL_SOUS_EPAIS[0]
- BI.append(0.)
- BI.append(ssep.ISLP-ssep.ILONP/2.)
- BS.append(ssep.ISLP-ssep.ILONP/2.)
- BS.append(ssep.ISLP)
- INDBI.append(0)
- INDBI.append(0)
- INDBS.append(1)
- INDBS.append(0)
- DNY.append(DERAFL)
- DNY.append(0)
- DNY.append(ssep.IDENL)
- DNY.append(0)
- INDSEY.append(0)
- INDSEY.append(1)
- echo_mess.append( '\n')
- echo_mess.append( 'ZONES APRES RECOUVREMENT ABSC. CURV. LONGIT. : \n')
- echo_mess.append( '----------------------------------------------- \n')
- NZONEY=len(BI)
- for j in range(NZONEY) :
- if ( fabs(BI[j]) < EPS ) and ( fabs(BS[j]) < EPS ) :
- echo_mess.append( 'ZONE NO %d <> BORNE INF. = %.2f \n'\
- ' / BORNE SUP. = %.2f * SOUS-EPAISSEUR'%(j+1,BI[j],BS[j]))
- else:
- echo_mess.append( 'ZONE NO %d <> BORNE INF. = %.2f \n'\
- ' / BORNE SUP. = %.2f'%(j+1,BI[j],BS[j]))
-
-# calcul du nombre d'elements longi. et circonf. dans les soue-ep
- NLX,NLY=ASCNBE(MCL_SOUS_EPAIS,COORXG,COORXD,COORYI,COORYS,BD,BG,BS,BI,
- DNX,DNY,RM,RC,INDSEX,INDSEY,IABSC1,IORDO1)
-
- texte_final=string.join(echo_mess)
- aster.affiche('MESSAGE',texte_final)
- return ier,NLX,NLY,NZONEX,NZONEY,BG,BD,BI,BS,INDBG,INDBD,INDBI,INDBS,DNX,DNY
-################################################################################
-################################################################################
-################################################################################
-################################################################################
-# MACR_ASCOUF_MAIL ASCPRE
-# PREPARATION DES DONNEES POUR LE MAILLAGE DE PLAQUE
-# SOUS-EPAISSEURS :
-# - CALCUL TABLEAU TRIE DES ABSCISSES ET ORDONNEES DES CENTRES
-# - CALCUL TABLEAU DES ZONES COUVERTES PAR LES SOUS-EPAISSEURS
-#
-#-----------------DONNEES FOURNIES PAR L UTILISATEUR--------------------
-#
-# RM = RAYON MOYEN DU COUDE
-# RC = RAYON DE CINTRAGE DU COUDE
-# ALPHA = ANGLE DU COUDE
-# LT = LONGUEUR DE L EMBOUT DU COTE CHARGEMENT
-# LGV = LONGUEUR DE L EMBOUT DU COTE CONDITIONS AUX LIMITES
-# NBSEP = NOMBRE DE SOUS-EPAISSEURS
-# SYME = "QUART" DE STRUCTURE, "DEMI" STRUCTURE OU BIEN "ENTIER"
-#
-#----------------------DONNEES RENVOYEES-----------------------
-#
-# NZONEX = NOMBRE DE ZONES CIRCONFERENTIELLES
-# NZONEY = NOMBRE DE ZONES LONGITUDINALES
-#
-# ------------------------------------------------------------------------------
-def ASCPRE(MCL_SOUS_EPAIS,RM,RC,ALPHA,SYME,LTCHAR,LTCLIM):
- ier=0
- echo_mess=['MACR_ASCOUF_MAIL ASCPRE \n',]
- ALPHAR = 2.*ALPHA*pi/360.
- DERAFC = 18.
- DERAFL = 5.
- EPSI = 0.001
- NBSEP = len(MCL_SOUS_EPAIS)
- echo_mess.append( 'RECHERCHE DES ZONES DE SOUS-EPAISSEURS DANS LE COUDE\n' )
-
-# tri des donnees sous-epaisseurs en circonferentiel
- TAMPON,IABSC1,IABSC2,COORXD,COORXG=ASCTCI(MCL_SOUS_EPAIS,RM)
-# --- calcul des recouvrements de zones en circonferentiel
-#
- NZONEX=0
- j=0
- ICE=1
- NBGAU=0
- NBDRO=0
- TYPG=0
- TYPD=0
- go10=1
- go20=1
-#
- BG =[]
- BD =[]
- INDBG =[]
- INDBD =[]
- DNX =[]
- INDSEX=[]
-#
-
- while go10:
-
- j=j+1
-#
-# definition de la zone courante (borne gauche, borne droite)
-#
-# TYPG = type de la borne:
-# 0 : borne gauche sous-epaisseur
-# 1 : borne droite sous-epaisseur
-# 2 : centre sous-epaisseur
-#
- if j>2*NBSEP and ICE<NBSEP :
-# cas ou il ne reste plus que des centres a caser
- MING = MIND
- TYPG = TYPD
- NUMG = NUMD
- MIND = 2.*pi*RM+1
- elif TYPD==2 :
-# cas ou la borne droite de la zone precedente etait un centre
- MING = MIND
- TYPG = TYPD
- NUMG = NUMD
- MIND = TAMPON[j-1][0]
- if fmod(IABSC2[j-1],2):
- TYPD = 0
- NUMD = IABSC1[IABSC2[j-1]/2]
- else:
- TYPD = 1
- NUMD = IABSC1[IABSC2[j-1]/2-1]
- j=j-1
- else:
- if j>= 2*NBSEP :
- MIND = TAMPON[2*NBSEP-1][0]
- MING = MIND
- if fmod(IABSC2[2*NBSEP-1],2):
- TYPG = 0
- NUMG = IABSC1[IABSC2[2*NBSEP-1]/2]
- else:
- TYPG = 1
- NUMG = IABSC1[IABSC2[2*NBSEP-1]/2-1]
- TYPD=TYPG
- NUMD=NUMG
- else:
- MING=TAMPON[j-1][0]
- MIND=TAMPON[j][0]
- if fmod(IABSC2[j-1],2):
- TYPG = 0
- NUMG = IABSC1[IABSC2[j-1]/2]
- else:
- TYPG = 1
- NUMG = IABSC1[IABSC2[j-1]/2-1]
- if fmod(IABSC2[j],2):
- TYPD = 0
- NUMD = IABSC1[IABSC2[j]/2]
- else:
- TYPD = 1
- NUMD = IABSC1[IABSC2[j]/2-1]
- if fabs(MING-MIND)<EPSI :
- if j==2*NBSEP:break
- else:continue
- if j>2*NBSEP and ICE>=NBSEP:
- break #on sort de la boucle
-
- while go20:
- i=ICE
- if i<=NBSEP:
-# recherche des centres a intercaler
- INDC=IABSC1[i-1]
- if i>1:
-# le centre est deja le meme que precedent
- if fabs(MCL_SOUS_EPAIS[INDC-1].ISCP-MCL_SOUS_EPAIS[IABSC1[i-2]-1].ISCP) < EPSI :
- ICE=ICE+1
- continue
- if MCL_SOUS_EPAIS[INDC-1].ISCP < MING :
-# le centre est la nouvelle borne gauche
- j=j-1
- MIND = MING
- TYPD = TYPG
- NUMD = NUMG
- MING = MCL_SOUS_EPAIS[INDC-1].ISCP
- TYPG = 2
- NUMG = INDC
- ICE = ICE+1
- elif MCL_SOUS_EPAIS[INDC-1].ISCP < MIND :
-# le centre est la nouvelle borne droite
- MIND = MCL_SOUS_EPAIS[INDC-1].ISCP
- TYPD = 2
- NUMD = INDC
- ICE = ICE+1
- continue
- else:pass
- NZONEX=NZONEX+1
-#
-# codes d'intervalles de zones
-# 0 0 = zone sous-ep.
-# 0 1 = sous-ep. a droite de la zone
-# 1 0 = sous-ep. a gauche de la zone
-# 1 1 = sous-ep. a droite et a gauche de la zone
-#
-# cas ou la premiere zone ne commence pas au bord de la plaque
- if MING>0. and NZONEX==1 :
- BG.append(0.)
- BD.append(MING)
- if TYPG==0:
- INDBG.append(0)
- INDBD.append(1)
- DNX.append(DERAFC)
- DNX.append(0)
- INDSEX.append(0)
- elif TYPG==1 or TYPG==2:
- INDBG.append(0)
- INDBD.append(0)
- DNX.append(MCL_SOUS_EPAIS[NUMG-1].IDENC)
- DNX.append(0)
- INDSEX.append(NUMG)
- else: pass
- NZONEX=NZONEX+1
-#
- BG.append(MING)
- BD.append(MIND)
-#
- if TYPG == 0:
-# borne gauche zone = borne gauche ssep
- NBGAU=NBGAU+1
- INDBG.append(0)
- INDBD.append(0)
- if TYPD == 0:
-# borne droite zone = borne gauche ssep
- DNX.append(MCL_SOUS_EPAIS[NUMG-1].IDENC)
- DNX.append(0)
- INDSEX.append(NUMG)
- elif TYPD == 1 or TYPD == 2:
-# borne droite zone = borne droite ssep : TYPD=1
-# borne droite zone = centre ssep : TYPD=2
- LTMP=[]
- LTMP.append((MCL_SOUS_EPAIS[NUMG-1].IDENC,NUMG))
- LTMP.append((MCL_SOUS_EPAIS[NUMD-1].IDENC,NUMD))
- LTMP.sort()
- DNX.append(LTMP[0][0])
- DNX.append(0)
- INDSEX.append(LTMP[0][1])
- else: pass
-#
- elif TYPG == 1:
-# borne gauche zone = borne droite ssep
- NBDRO = NBDRO+1
- if TYPD == 0:
-# borne droite zone = borne gauche ssep
- if NBDRO==NBGAU:
- INDBG.append(1)
- INDBD.append(1)
- DNX.append(DERAFC)
- DNX.append(0)
- INDSEX.append(0)
- else:
-# cas tordu: une sous-ep enveloppe le tout
- INDBG.append(0)
- INDBD.append(0)
- DNX.append(MCL_SOUS_EPAIS[NUMG-1].IDENC)
- DNX.append(0)
- INDSEX.append(NUMG)
- elif TYPD == 1 or TYPD == 2:
-# borne droite zone = borne droite ssep : TYPD=1
-# borne droite zone = centre ssep : TYPD=2
- INDBG.append(0)
- INDBD.append(0)
- DNX.append(MCL_SOUS_EPAIS[NUMD-1].IDENC)
- DNX.append(0)
- INDSEX.append(NUMD)
- else: pass
-#
- elif TYPG == 2:
-# borne gauche zone = centre ssep
- INDBG.append(0)
- INDBD.append(0)
- if TYPD == 0:
-# borne droite zone = borne gauche ssep
- DNX.append(MCL_SOUS_EPAIS[NUMG-1].IDENC)
- DNX.append(0)
- INDSEX.append(NUMG)
- elif TYPD == 1 or TYPD == 2:
-# borne droite zone = borne droite ssep : TYPD=1
-# borne droite zone = centre ssep : TYPD=2
- LTMP=[]
- LTMP.append((MCL_SOUS_EPAIS[NUMG-1].IDENC,NUMG))
- LTMP.append((MCL_SOUS_EPAIS[NUMD-1].IDENC,NUMD))
- LTMP.sort()
- DNX.append(LTMP[0][0])
- DNX.append(0)
- INDSEX.append(LTMP[0][1])
- else:pass
- else:pass
- if j<=(2*NBSEP-2) or ICE<=NBSEP or (TYPD==2 and j<2*NBSEP):
- iout=0
- break #on retourne dans la boucle go10
- else :
- iout=1
- break #on sort definitivement
- if iout:break
-
- if MIND<2.*pi*RM:
- NZONEX=NZONEX+1
- BG.append(MIND)
- BD.append(2.*pi*RM)
- if TYPD==0 or TYPD==2:
- INDBG.append(0)
- INDBD.append(0)
- DNX.append(MCL_SOUS_EPAIS[NUMD-1].IDENC)
- DNX.append(0)
- INDSEX.append(NUMD)
- elif TYPD==1:
- INDBG.append(1)
- INDBD.append(0)
- DNX.append(DERAFC)
- DNX.append(0)
- INDSEX.append(0)
- else:pass
-
-# au cas ou 2.*pi*RM correspond a une borne d'intevalle de sous-ep ou a
-# un centre de sous-ep.
- if fabs(BG[NZONEX-1]-BD[NZONEX-1])<EPSI: NZONEX = NZONEX-1
-
- echo_mess.append( '\n')
- echo_mess.append( 'ZONES APRES RECOUVREMENT ABSC. CURV. CIRCONF. : \n')
- echo_mess.append( '----------------------------------------------- \n')
- for j in range(NZONEX) :
- if INDBG[j]==0 and INDBD[j]==0 :
- echo_mess.append( 'ZONE NO %d <> BORNE GAUCHE = %.2f \n'\
- ' / BORNE DROITE = %.2f * SOUS-EPAISSEUR'%(j+1,BG[j],BD[j]))
- else:
- echo_mess.append( 'ZONE NO %d <> BORNE GAUCHE = %.2f \n'\
- ' / BORNE DROITE = %.2f'%(j+1,BG[j],BD[j]))
-
-
-# --- tri des donnees sous-ep. en axial
- TAMPON,IORDO1,IORDO2,COORYI,COORYS=ASCTLO(MCL_SOUS_EPAIS,RC,ALPHA,LTCHAR,LTCLIM)
-
- BI = []
- BS = []
- INDBI = []
- INDBS = []
- DNY = []
- INDSEY = []
-
- if SYME == 'DEMI':
-# calcul des zones en axial :
-# zones (0,bord inferieur) et (bord inferieur,centre sous-ep.)
- ssep = MCL_SOUS_EPAIS[0]
- BI.append(0.)
- BI.append(ssep.ISLP-ssep.ILONP/2.)
- BS.append(ssep.ISLP-ssep.ILONP/2.)
- BS.append(ssep.ISLP)
- INDBI.append(0)
- INDBI.append(0)
- INDBS.append(1)
- INDBS.append(0)
- DNY.append(DERAFL)
- DNY.append(0)
- DNY.append(ssep.IDENL)
- DNY.append(0)
- INDSEY.append(0)
- INDSEY.append(1)
- NZONEY=1
-#
- else:
-#
-# calcul des recouvrements de zones en axial
- j = 0
- ICE = 1
- NBINF = 0
- NBSUP = 0
- TYPI=0
- TYPS=0
- go40=1
- go50=1
- NZONEY=0
-#
- while go40:
- j=j+1
-#
-# definition de la zone courante (borne inf, borne sup)
-#
-# typi = type de la borne
-# 0 : borne inf. sous-ep.
-# 1 : borne sup. sous-ep.
-# 2 : centre sous-ep.
-#
- if TYPS==2:
-# cas ou la borne sup. de la zone prec. etait un centre
- MINI=MINS
- TYPI=TYPS
- NUMI=NUMS
- MINS=TAMPON[j-1][0]
- if fmod(IORDO2[j-1],2):
- TYPS = 0
- NUMS = IORDO1[IORDO2[j-1]/2]
- else:
- TYPS = 1
- NUMS = IORDO1[IORDO2[j-1]/2-1]
- j=j-1
- else:
- if j>= 2*NBSEP :
- MINI = TAMPON[2*NBSEP-1][0]
- MINS = MINI
- if fmod(IORDO2[2*NBSEP-1],2):
- TYPI = 0
- NUMI = IORDO1[IORDO2[2*NBSEP-1]/2]
- else:
- TYPI = 1
- NUMI = IORDO1[IORDO2[2*NBSEP-1]/2-1]
- TYPS=TYPI
- NUMS=NUMI
- else:
- MINI=TAMPON[j-1][0]
- MINS=TAMPON[j][0]
- if fmod(IORDO2[j-1],2):
- TYPI = 0
- NUMI = IORDO1[IORDO2[j-1]/2]
- else:
- TYPI = 1
- NUMI = IORDO1[IORDO2[j-1]/2-1]
- if fmod(IORDO2[j],2):
- TYPS = 0
- NUMS = IORDO1[IORDO2[j]/2]
- else:
- TYPS = 1
- NUMS = IORDO1[IORDO2[j]/2-1]
- if fabs(MINI-MINS)<EPSI:
- if j==2*NBSEP:break
- else:continue
-
- while go50:
- i=ICE
- if i<=NBSEP:
-# recherche des centres a intercaler
- INDC=IORDO1[i-1]
- if i>1:
-# le centre est deja le meme que le precedent
- if fabs(MCL_SOUS_EPAIS[INDC-1].ISLP-MCL_SOUS_EPAIS[IORDO1[i-2]-1].ISLP)<EPSI:
- ICE=ICE+1
- continue
- if MCL_SOUS_EPAIS[INDC-1].ISLP<MINI:
-# le centre est la nouvelle borne inf.
- j=j-1
- MINS = MINI
- TYPS = TYPI
- NUMS = NUMI
- MINI = MCL_SOUS_EPAIS[INDC-1].ISLP
- TYPI = 2
- NUMI = INDC
- ICE = ICE+1
- elif MCL_SOUS_EPAIS[INDC-1].ISLP<MINS:
-# le centre est la nouvelle borne sup.
- MINS = MCL_SOUS_EPAIS[INDC-1].ISLP
- TYPS = 2
- NUMS = INDC
- ICE = ICE+1
- continue
- else:pass
- NZONEY=NZONEY+1
-#
-# code d'intervalles de zone
-# 0 0 = ZONE SOUS-EPAISSEUR
-# 0 1 = SOUS-EPAISSEUR A SUPERIEURE DE LA ZONE
-# 1 0 = SOUS-EPAISSEUR A INFERIEURE DE LA ZONE
-# 1 1 = SOUS EPAISSEUR A SUPERIEURE ET A INFERIEURE DE LA ZONE
-#
-# cas ou la premiere zone ne commence pas au bord de la plaque
- if MINI>0. and NZONEY==1:
- first=0
- BI.append(0.)
- BS.append(MINI)
- if TYPI==0:
- INDBI.append(0)
- INDBS.append(1)
- DNY.append(DERAFL)
- DNY.append(0)
- INDSEY.append(0)
- elif TYPI==1 or TYPI==2:
- INDBI.append(0)
- INDBS.append(0)
- DNY.append(MCL_SOUS_EPAIS[NUMI-1].IDENL)
- DNY.append(0)
- INDSEY.append(NUMI)
- else:pass
- NZONEY = NZONEY+1
-#
- BI.append(MINI)
- BS.append(MINS)
-
- if TYPI==0:
-# borne inferieure zone = borne inferieure ssep
- NBINF = NBINF+1
- INDBI.append(0)
- INDBS.append(0)
- if TYPS==0:
-# borne superieure zone = borne inferieur ssep
- DNY.append(MCL_SOUS_EPAIS[NUMI-1].IDENL)
- DNY.append(0)
- INDSEY.append(NUMI)
- elif TYPS==1 or TYPS==2:
-# borne superieure zone = borne superieure ssep:TYPS==1
-# borne superieure zone = centre ssep:TYPS==2
- LTMP=[]
- LTMP.append((MCL_SOUS_EPAIS[NUMI-1].IDENL,NUMI))
- LTMP.append((MCL_SOUS_EPAIS[NUMS-1].IDENL,NUMS))
- LTMP.sort()
- DNY.append(LTMP[0][0])
- DNY.append(0)
- INDSEY.append(LTMP[0][1])
- else:pass
- elif TYPI==1:
-# borne inferieure zone=borne superieure ssep
- NBSUP = NBSUP+1
- if TYPS==0:
-# borne superieure zone = borne inferieur ssep
- if NBSUP==NBINF:
- INDBI.append(1)
- INDBS.append(1)
- DNY.append(DERAFL)
- DNY.append(0)
- INDSEY.append(0)
- else:
-# cas tordu: une sous-ep. enveloppe le tout
- INDBI.append(0)
- INDBS.append(0)
- DNY.append(MCL_SOUS_EPAIS[NUMI-1].IDENL)
- DNY.append(0)
- INDSEY.append(NUMI)
- elif TYPS==1 or TYPS==2:
-# borne superieure zone = borne superieure ssep:TYPS==1
-# borne superieure zone = centre ssep:TYPS==2
- INDBI.append(0)
- INDBS.append(0)
- DNY.append(MCL_SOUS_EPAIS[NUMS-1].IDENL)
- DNY.append(0)
- INDSEY.append(NUMS)
- else:pass
- elif TYPI==2:
-# borne inferieure zone = centre ssep
- INDBI.append(0)
- INDBS.append(0)
- if TYPS==0:
-# borne superieure zone = borne inferieure ssep
- DNY.append(MCL_SOUS_EPAIS[NUMI-1].IDENL)
- DNY.append(0)
- INDSEY.append(NUMI)
- elif TYPS==1 or TYPS==2:
-# borne superieure zone = borne superieure ssep
- LTMP=[]
- LTMP.append((MCL_SOUS_EPAIS[NUMI-1].IDENL,NUMI))
- LTMP.append((MCL_SOUS_EPAIS[NUMS-1].IDENL,NUMS))
- LTMP.sort()
- DNY.append(LTMP[0][0])
- DNY.append(0)
- INDSEY.append(LTMP[0][1])
- else:pass
- else:pass
- if j<=(2*NBSEP-2) or TYPS==2:
- iout=0
- break #on retourne dans la boucle go40
- else:
- iout=1
- break #on sort definitivement
- if iout:break
-
-# cas ou la derniere zone ne finit pas au bout de la plaque
- if MINS<ALPHAR*RC:
- NZONEY=NZONEY+1
- BI.append(MINS)
- BS.append(ALPHAR*RC)
- if TYPS==0 or TYPS==2:
- INDBI.append(0)
- INDBS.append(0)
- DNY.append(MCL_SOUS_EPAIS[NUMS-1].IDENL)
- DNY.append(0)
- INDSEY.append(NUMS)
- elif TYPS==1:
- INDBI.append(1)
- INDBS.append(0)
- DNY.append(DERAFL)
- DNY.append(0)
- INDSEY.append(0)
- else:pass
-
- echo_mess.append( '\n')
- echo_mess.append( 'ZONES APRES RECOUVREMENT ABSC. CURV. LONGIT. :\n')
- echo_mess.append( '----------------------------------------------- \n')
-
- for j in range(NZONEY) :
- if INDBI[j]==0 and INDBS[j]==0 :
- echo_mess.append( 'ZONE NO %d <> BORNE INF. = %.2f \n'\
- ' / BORNE SUP. = %.2f * SOUS-EPAISSEUR'%(j+1,BI[j],BS[j]))
- else:
- echo_mess.append( 'ZONE NO %d <> BORNE INF. = %.2f \n'\
- ' / BORNE SUP. = %.2f '%(j+1,BI[j],BS[j]))
-
-# calcul du nombre d'elements longi. et circonf. dans les sous-ep
- NLX,NLY=ASCNBE(MCL_SOUS_EPAIS,COORXG,COORXD,COORYI,COORYS,BD,BG,BS,BI,
- DNX,DNY,RM,RC,INDSEX,INDSEY,IABSC1,IORDO1)
-
-
- texte_final=string.join(echo_mess)
- aster.affiche('MESSAGE',texte_final)
- return ier,NLX,NLY,NZONEX,NZONEY,BG,BD,BI,BS,INDBG,INDBD,INDBI,INDBS,DNX,DNY
-
-################################################################################
-################################################################################
-################################################################################
-# MACR_ASCOUF_MAIL write_file_dgib_ASCFDO
-#
-# ECRIT DANS UN FICHIER LES DONNES GIBI DE LA PROCEDURE
-# "PLAQUE FISSUREE"
-#
-
-# ------------------------------------------------------------------------------
-def write_file_dgib_ASCFDO(nomFichierDATG,RM,RC,ALPHA,NBTRAN,EP1,EP2,EPI,TETA1,
- TETA2,LTRAN,SUREP,LTCHAR,LTCLIM,TYPBOL,AXEAP,AXECP,NT,NS,NC,
- SFP,ORIEN,AZIM,RC0,RC2,RC3,POSIT,EPSI,NIVMAG,SYME, loc_datg) :
-
- if TYPBOL!= None:
- if TYPBOL=='CUVE' : TYPEMB = 'typcuv'
- if TYPBOL=='GV' : TYPEMB = 'typegv'
- if TYPBOL=='ASP_MPP' : TYPEMB = 'typapp'
- else:
- TYPEMB =' '
-
- if POSIT =='DEB_INT' :
- POSIT2 = 'interne'
- else:
- POSIT2 = 'externe'
- if SYME[:6]=='ENTIER' : ZSYME = 'entier'
- elif SYME[:5]=='QUART' : ZSYME = 'quart'
- else : ZSYME = 'demi'
- C=AXECP/2.
- TETAF=AZIM*pi/180.
-
- POIVIR = ' ;\n'
- texte='* DEBUT PARAMETRES UTILISATEUR\n'
- texte=texte+'*\n'
- texte=texte+'c = '+str(C) +POIVIR
- texte=texte+'a = '+str(AXEAP) +POIVIR
- texte=texte+'nt = '+str(NT) +POIVIR
- texte=texte+'ns = '+str(NS) +POIVIR
- texte=texte+'nc = '+str(NC) +POIVIR
- texte=texte+'rm = '+str(RM) +POIVIR
- texte=texte+'rc = '+str(RC) +POIVIR
- texte=texte+'alphac = '+str(ALPHA) +POIVIR
- texte=texte+'nbtranep = '+str(NBTRAN) +POIVIR
- texte=texte+'ep1 = '+str(EP1) +POIVIR
- texte=texte+'ep2 = '+str(EP2) +POIVIR
- texte=texte+'epi = '+str(EPI) +POIVIR
- texte=texte+'teta1 = '+str(TETA1) +POIVIR
- texte=texte+'teta2 = '+str(TETA2) +POIVIR
- texte=texte+'ltran = '+str(LTRAN) +POIVIR
- texte=texte+'posfis = '+str(SFP) +POIVIR
- texte=texte+'ksiref = '+str(ORIEN) +POIVIR
- texte=texte+'surep = '+str(SUREP) +POIVIR
- texte=texte+'teta_f = '+str(TETAF) +POIVIR
- texte=texte+'rc0 = '+str(RC0) +POIVIR
- texte=texte+'rc2 = '+str(RC2) +POIVIR
- texte=texte+'rc3 = '+str(RC3) +POIVIR
- texte=texte+"pos = '"+POSIT2+"'" +POIVIR
- texte=texte+'lt = '+str(LTCHAR) +POIVIR
- texte=texte+'lgv = '+str(LTCLIM) +POIVIR
- texte=texte+"typembou = '"+TYPEMB+"'" +POIVIR
- texte=texte+"zsyme = '"+ZSYME+"'" +POIVIR
- texte=texte+'epsif = '+str(EPSI) +POIVIR
- texte=texte+'nivmag = '+str(NIVMAG) +POIVIR
- texte=texte+'*\n'
- texte=texte+'* FIN PARAMETRES UTILISATEUR\n'
- texte=texte+'opti donn '
- texte=texte+"'"+loc_datg+'ascouf_fiss_v4.datg'+"';\n"
- fdgib=open(nomFichierDATG,'w')
- fdgib.write(texte)
- fdgib.close()
-
-################################################################################
-################################################################################
-################################################################################
-# MACR_ASCOUF_MAIL write_file_dgib_ASCSQO
-#
-# ECRIT DANS UN FICHIER LES DONNEES GIBI DE LA PROCEDURE
-# "PLAQUE SOUS-EPAISSEUR"
-#
-#-----------------DONNEES FOURNIES PAR L'UTILISATEUR--------------------
-#
-# RM = RAYON MOYEN DU COUDE
-# RC = RAYON DE CINTRAGE DU COUDE
-# ALPHA = ANGLE DU COUDE
-# NBTRAN = NOMBRE DE TRANSITION D'EPAISSEUR (0, 1 OU 2)
-# EP1 = EPAISSEUR DU COUDE (COTE EMBOUT 1 SI TRANSITION)
-# EP2 = EPAISSEUR DU COUDE (COTE EMBOUT 2 SI TRANSITION)
-# EPI = EPAISSEUR DU COUDE INTERMEDIAIRE SI TRANSITION A 2 PENTES
-# TETA1 = ANGLE DE LA PREMIERE TRANSITION D'EPAISSEUR EVENTUELLE
-# TETA2 = ANGLE DE LA DEUXIEME TRANSITION D'EPAISSEUR EVENTUELLE
-# LTRAN = LONGUEUR ENTRE FIN DE L'EMBOUT 1 ET DEBUT DE TRANSITION
-# LTCHAR = LONGUEUR DE L'EMBOUT DU COTE CHARGEMENT
-# LCLIM = LONGUEUR DE L'EMBOUT DU COTE CONDITIONS AUX LIMITES
-# GEOM = TYPE DE GEOMETRIE MODELISEE (COUDE OU TUBE)
-# SYME = "QUART" DE STRUCTURE, "DEMI" STRUCTURE OU BIEN "ENTIER"
-# NBEP = NOMBRE D'ELEMENTS DANS LE COUDE
-# NLX = NOMBRE D'ELEMENTS CIRCONF. DE LA SOUS-EPAISSEUR
-# NLY = NOMBRE D'ELEMENTS LONGI DE LA SOUS-EPAISSEUR
-
-# ------------------------------------------------------------------------------
-def write_file_dgib_ASCSQO(nomFichierDATG,TYPELE,RM,RC,ALPHA,NBTRAN,EP1,EP2,
- EPI,TETA1,MCL_SOUS_EPAIS,TETA2,LTRAN,LTCHAR,LTCLIM,GEOM,
- SYME,NBEP,NLX,NLY,NIVMAG,loc_datg) :
-
- ssep= MCL_SOUS_EPAIS[0]
- POIVIR = ' ;\n'
- texte=' nivmag = '+str(NIVMAG) +POIVIR
- texte=texte+' option dime 3 elem '+TYPELE+' nive nivmag echo 0'+POIVIR
- texte=texte+'*\n'
- texte=texte+'coory = table '+POIVIR
- texte=texte+'coorz = table '+POIVIR
- texte=texte+'prof = table '+POIVIR
- texte=texte+'posit = table '+POIVIR
- texte=texte+'axisym = table '+POIVIR
- texte=texte+'axecir = table '+POIVIR
- texte=texte+'axelon = table '+POIVIR
- texte=texte+'sousep = table '+POIVIR
- texte=texte+'coorzc = table '+POIVIR
- texte=texte+'axelonc = table '+POIVIR
- texte=texte+'*\n'
- texte=texte+'* DEBUT PARAMETRES UTILISATEUR\n'
- texte=texte+'*\n'
- texte=texte+'* parametres generaux\n'
- texte=texte+'*\n'
- texte=texte+' pirad = '+str(pi) +POIVIR
- texte=texte+' rm = '+str(RM) +POIVIR
- texte=texte+' rc = '+str(RC) +POIVIR
- texte=texte+' alpha = '+str(ALPHA) +POIVIR
- texte=texte+' lt1 = '+str(LTCHAR) +POIVIR
- texte=texte+' lt2 = '+str(LTCLIM) +POIVIR
- texte=texte+' nbtranep = '+str(NBTRAN) +POIVIR
- texte=texte+' ep1 = '+str(EP1) +POIVIR
- texte=texte+' ep2 = '+str(EP2) +POIVIR
- texte=texte+' epI = '+str(EPI) +POIVIR
- texte=texte+' teta1 = '+str(TETA1) +POIVIR
- texte=texte+' teta2 = '+str(TETA2) +POIVIR
- texte=texte+' ltran = '+repr(LTRAN) +POIVIR
- if GEOM == 'COUDE':
- texte=texte+" zcoude = 'oui' "+POIVIR
- else:
- texte=texte+" zcoude = 'non' "+POIVIR
- if SYME == 'ENTIER':
- texte=texte+" zsyme = 'entier' "+POIVIR
- elif SYME == 'QUART':
- texte=texte+" zsyme = 'quart' "+POIVIR
- else:
- texte=texte+" zsyme = 'demi' "+POIVIR
- if TYPELE == 'CU20':
- texte=texte+" zquad = 'oui' "+POIVIR
- else:
- texte=texte+" zquad = 'non' "+POIVIR
- SCP=pi*RM
- texte=texte+' nxep = '+str(NBEP) +POIVIR
- texte=texte+'*\n'
- texte=texte+'* Caracteristiques de la sous-epaisseur\n'
- texte=texte+'*\n'
- texte=texte+' tysep = '+str(ssep.ICIRP) +POIVIR
- texte=texte+' tzsep = '+str(ssep.ILONP) +POIVIR
- texte=texte+' prof . 1 = '+str(ssep['PROFONDEUR']) +POIVIR
- texte=texte+' ycsep = '+str(SCP-pi*RM) +POIVIR
- texte=texte+' theta = '+str(ssep.IPHIC) +POIVIR
- texte=texte+' zcsep = '+repr(ssep.ISLP) +POIVIR
-
- texte=texte+" posit . 1 = '"+str(ssep['SOUS_EPAIS'].lower())+"'"+POIVIR
- texte=texte+' nby = '+str(int(NLX[0])) +POIVIR
- texte=texte+' nbz = '+str(int(NLY[0])) +POIVIR
- texte=texte+' nbxse = '+str(ssep['NB_ELEM_RADI']) +POIVIR
- texte=texte+' axelonc . 1 = '+str(ssep['AXE_LONGI'])+POIVIR
- if ssep['POSI_CURV_LONGI']!=None:
- texte=texte+' coorzc . 1 = '+repr(ssep['POSI_CURV_LONGI'])+POIVIR
- else:
- DZC=ssep.BETA*pi*(RC+(RM+EP1/2.)*cos(pi/2.))/180.
- texte=texte+' coorzc . 1 = '+repr(DZC)+POIVIR
- if ssep['TYPE']=='AXIS':
- texte=texte+" zaxis = 'oui' "+POIVIR
- else:
- texte=texte+" zaxis = 'non' "+POIVIR
- if ssep['EMPREINTE'] == 'OUI':
- texte=texte+" sousep . 1 = 'oui'"+POIVIR
- else:
- texte=texte+" sousep . 1 = 'non'"+POIVIR
- texte=texte+'*\n'
- texte=texte+'* FIN PARAMETRES UTILISATEUR \n'
- texte=texte+'opti donn '
- texte=texte+"'"+loc_datg+'ascouf_ssep_mono_v1.datg'+"'"+POIVIR
- fdgib=open(nomFichierDATG,'w')
- fdgib.write(texte)
- fdgib.close()
-################################################################################
-################################################################################
-################################################################################
-# MACR_ASCOUF_MAIL write_subpart_file_pgib_POST
-#
-# APPELEE DANS : write_file_pgib_ASCSQ2 , write_file_pgib_ASCSD2
-# DEFINIE UNE CHAINE DE CARACTERES UTILISEE LORS DE L'ECRITURE DU
-# FICHIER GIBI DE POST-TRAITEMENTS
-#
-#-----------------DONNEES FOURNIES PAR L'UTILISATEUR--------------------
-#
-# NLX = NOMBRE D'ELEMENTS CIRCONF. DE LA SOUS-EPAISSEUR
-# NLY = NOMBRE D'ELEMENTS LONGI DE LA SOUS-EPAISSEUR
-#
-#-----------------DONNEE RENVOYEE PAR ASTER--------------------
-#
-# texte = chaine de caracteres contenant des instructions gibi
-# de post-traitements
-#
-# ------------------------------------------------------------------------------
-def write_subpart_file_pgib_POST(MCL_SOUS_EPAIS,NLX,NLY):
- CAR3 = ('fdro','exdr','extr','exga','fgau','inga','intr','indr')
-
- POIVIR = ' ;\n'
- texte='* DEBUT POINTS DE POST-TRAITEMENT\n'
- texte=texte+'*\n'
- issep=0
- for ssep in MCL_SOUS_EPAIS:
- issep=issep+1
- texte=texte+'*\n'
- texte=texte+'* sous-epaisseur No '+str( issep)+'\n'
- texte=texte+'*\n'
- if ssep['TYPE'] == 'ELLI':
- texte=texte+'*\n'
- texte=texte+'* plans circonf longi et colonne centrale \n'
- texte=texte+'*\n'
- texte=texte+'pcirc'+str( issep)+' = circo .'+str(issep).rjust(4)+POIVIR
- texte=texte+'plong'+str( issep)+' = longi .'+str(issep).rjust(4)+POIVIR
- texte=texte+'pcent'+str( issep)+' = centr .'+str(issep).rjust(4)+POIVIR
- texte=texte+'*\n'
- texte=texte+'* ligaments tous les 45 degres a epaisseur minimale \n'
- texte=texte+'*\n'
- texte=texte+'isep = '+str( issep)+POIVIR
- for k in range(8):
- texte=texte+'ilig = '+str(k+1)+POIVIR
- texte=texte+'rlig = ilig/10. + isep'+POIVIR
- texte=texte+str(CAR3[k])+str( issep)+' = lig45 . rlig'+POIVIR
- if ssep['TYPE'] == 'ELLI':
- texte=texte+'*\n'
- texte=texte+"* ligaments circonferentiels a l'epaisseur minimale\n"
- texte=texte+'*\n'
- texte=texte+'isep = '+str(issep)+POIVIR
- for k in range(2*NLX[issep-1]+1):
- texte=texte+'ilig = '+str(k+1)+POIVIR
- texte=texte+'rlig = ilig/100. + isep'+POIVIR
- texte=texte+'cir'+str(issep)+'_'+str(k+1)+' = ligcir . rlig'+POIVIR
- texte=texte+'*\n'
- texte=texte+"* ligaments longitudinaux a l'epaisseur minimale\n"
- texte=texte+'* \n'
- for k in range(2*NLY[issep-1]+1):
- texte=texte+'ilig = '+str(k+1)+POIVIR
- texte=texte+'rlig = ilig/100. + isep'+POIVIR
- texte=texte+'lon'+str(issep)+'_'+str(k+1)+' = liglon . rlig'+POIVIR
- texte=texte+'* FIN POINTS DE POST-TRAITEMENT\n'
- return texte
-
-################################################################################
-################################################################################
-################################################################################
-# MACR_ASCOUF_MAIL write_file_pgib_ASCSQ2
-#
-# ECRIT DANS UN FICHIER LES DONNEES GIBI DE LA PROCEDURE
-# "PLAQUE SOUS-EPAISSEURS"
-# IL S'AGIT DE LA DEUXIEME PARTIE ( APRES LES DONNEES UTILISATEUR )
-#
-#
-#-----------------DONNEES FOURNIES PAR L'UTILISATEUR--------------------
-#
-# NLX = NOMBRE TOTAL D'ELEMENTS CIRCONF. DE LA SOUS-EPAISSEUR K
-# NLY = NOMBRE TOTAL D'ELEMENTS LONGIT. DE LA SOUS-EPAISSEUR K
-
-# ------------------------------------------------------------------------------
-def write_file_pgib_ASCSQ2(MCL_SOUS_EPAIS,NLX,NLY):
- POIVIR = ' ;\n'
- texte=write_subpart_file_pgib_POST(MCL_SOUS_EPAIS,NLX,NLY)
- texte=texte+'*\n'
- texte=texte+'p1 = 0. 0. (-1.*lt1)'+POIVIR
- texte=texte+'p2 = 0. 0. (coor 3 bou3)'+POIVIR
- texte=texte+'ma = coude et p1 et p2'+POIVIR
- texte=texte+"opti sauv form 'fort.8'"+POIVIR
- texte=texte+'sort ma'+POIVIR
- texte=texte+'sauv form ma'+POIVIR
- texte=texte+'fin'+POIVIR
- fpgib=open('fort.71','w')
- fpgib.write(texte)
- fpgib.close()
-
-################################################################################
-################################################################################
-################################################################################
-# MACR_ASCOUF_MAIL write_file_pgib_ASCSP1
-#
-# ECRIT DANS UN FICHIER LES DONNEES GIBI DE LA PROCEDURE
-# "PLAQUE SOUS-EPAISSEURS"
-# IL S'AGIT DE LA PREMIERE PARTIE ( AVANT LES DONNEES UTILISATEUR )
-#
-#
-# ------------------------------------------------------------------------------
-def write_file_dgib_ASCSP1(nomFichierDATG,TYPELE,MCL_SOUS_EPAIS,NIVMAG,loc_datg):
-
- POIVIR = ' ;\n'
- texte=' nivmag = '+str(NIVMAG)+POIVIR
- texte=texte+' option dime 3 elem '+TYPELE+' nive nivmag echo 0 '+POIVIR
- texte=texte+'*\n'
- texte=texte+'bg = table '+POIVIR
- texte=texte+'bd = table '+POIVIR
- texte=texte+'bi = table '+POIVIR
- texte=texte+'bs = table '+POIVIR
- texte=texte+'indbg = table '+POIVIR
- texte=texte+'indbd = table '+POIVIR
- texte=texte+'indbi = table '+POIVIR
- texte=texte+'indbs = table '+POIVIR
- texte=texte+'axecir = table '+POIVIR
- texte=texte+'axelon = table '+POIVIR
- texte=texte+'axelonc = table '+POIVIR
- texte=texte+'coorzc = table '+POIVIR
- texte=texte+'prof = table '+POIVIR
- texte=texte+'posit = table '+POIVIR
- texte=texte+'coory = table '+POIVIR
- texte=texte+'coorz = table '+POIVIR
- texte=texte+'deny = table '+POIVIR
- texte=texte+'nbely = table '+POIVIR
- texte=texte+'denz = table '+POIVIR
- texte=texte+'nbelz = table '+POIVIR
- texte=texte+'axisym = table '+POIVIR
- texte=texte+'sousep = table '+POIVIR
- texte=texte+'* \n'
- texte=texte+'opti donn '
- texte=texte+"'"+loc_datg+'ascouf_ssep_mult_v1.datg'+"';\n"
- fdgib=open(nomFichierDATG,'w')
- fdgib.write(texte)
- fdgib.close()
-
-################################################################################
-################################################################################
-################################################################################
-# MACR_ASCOUF_MAIL write_file_pgib_ASCSDO
-#
-# ECRIT DANS UN FICHIER LES DONNEES GIBI DE LA PROCEDURE
-# "PLAQUE SOUS-EPAISSEURS"
-#
-#-----------------DONNEES FOURNIES PAR L'UTILISATEUR--------------------
-#
-# RM = RAYON MOYEN DU COUDE
-# RC = RAYON DE CINTRAGE DU COUDE
-# ALPHA = ANGLE DU COUDE
-# EP = EPAISSEUR DU COUDE
-# LTCHAR = LONGUEUR DE L'EMBOUT DU COTE CHARGEMENT
-# LCLIM = LONGUEUR DE L'EMBOUT DU COTE CONDITIONS AUX LIMITES
-# GEOM = TYPE DE GEOMETRIE MODELISEE (COUDE OU TUBE)
-# SYME = QUART DE STRUCTURE SI 'OUI'
-# INDBG = INDICATEUR BORD GAUCHE DE LA ZONE CIRCONF J
-# INDBD = INDICATEUR BORD DROIT DE LA ZONE CIRCONF J
-# BG = ABSCISSE DU BORD GAUCHE DE LA ZONE CIRCONF J
-# BD = ABSCISSE DU BORD DROIT DE LA ZONE CIRCONF J
-# BI = ORDONNEE DU BORD INFERIEUR DE LA ZONE LONGI J
-# BS = ORDONNEE DU BORD SUPERIEUR DE LA ZONE LONGI J
-# INDBI = INDICATEUR BORD INFERIEUR DE LA ZONE LONGI J
-# INDBS = INDICATEUR BORD SUPERIEUR DE LA ZONE LONGI J
-# INDSEX = NUMERO DE SOUS-EPAISSEUR CONTENU DANS LA ZONE CIRCONF J
-# INDSEY = NUMERO DE SOUS-EPAISSEUR CONTENU DANS LA ZONE LONGI J
-# DNX = DENSITE ET NOMBRE D'ELEMENTS CIRCONF. DE LA ZONE J
-# DNY = DENSITE ET NOMBRE D'ELEMENTS LONGIT. DE LA ZONE J
-# NZONEX = NOMBRE DE ZONES CIRCONFERENTIELLES
-# NZONEY = NOMBRE DE ZONES LONGITUDINALES
-#
-# ------------------------------------------------------------------------------
-def write_file_pgib_ASCSDO(RM,RC,ALPHA,EP,LTCLIM,LTCHAR,NBEP,
- NZONEX,NZONEY,BG,BD,BI,BS,INDBG,INDBD,INDBI,INDBS,
- DNX,DNY,MCL_SOUS_EPAIS,GEOM,SYME):
-
- POIVIR = ' ;\n'
- NY=20
- DELTAY=2.*pi*RM/NY
-
- def nint(x):
- if 0<ceil(x)-x<=0.5:
- return int(ceil(x))
- else:
- return int(floor(x))
-
-# conversion des densites de raffinement des embout en degres par rapport
-# a l'angle du coude
- RTMP=nint(LTCHAR/DELTAY)*DELTAY/4.
- DENSTU = RTMP*360./(2.*pi*RC)
- DENSGV = DENSTU
- NZT=0
- NZGV=0
-
- texte='* DEBUT PARAMETRES UTILISATEUR \n'
- texte=texte+'*\n'
- texte=texte+'* parametres generaux\n'
- texte=texte+'*\n'
- texte=texte+'rm = '+str(RM) +POIVIR
- texte=texte+'rc = '+str(RC) +POIVIR
- texte=texte+'alphac = '+str(ALPHA) +POIVIR
- texte=texte+'epc = '+str(EP) +POIVIR
- texte=texte+'pirad = '+str(pi) +POIVIR
- texte=texte+'lgv = '+str(LTCLIM) +POIVIR
- texte=texte+'lt = '+str(LTCHAR) +POIVIR
- texte=texte+'lcoude = '+str(ALPHA*pi/180.*RC) +POIVIR
- if GEOM == 'COUDE':
- texte=texte+"zcoude = 'oui' " +POIVIR
- else:
- texte=texte+"zcoude = 'non' " +POIVIR
- if SYME == 'ENTIER':
- texte=texte+"zsyme = 'entier' " +POIVIR
- elif SYME == 'QUART':
- texte=texte+"zsyme = 'quart' " +POIVIR
- else:
- texte=texte+"zsyme = 'demi' " +POIVIR
- texte=texte+'nxep = '+str(NBEP) +POIVIR
- texte=texte+'nzt = '+str(NZT) +POIVIR
- texte=texte+'nzgv = '+str(NZGV) +POIVIR
- texte=texte+'daxhtu = '+str(DENSTU) +POIVIR
- texte=texte+'daxhgv = '+str(DENSGV) +POIVIR
- texte=texte+'*\n'
-
- texte=texte+'* Zones couvertes en circonference\n'
- texte=texte+'*\n'
- for j in range(NZONEX):
- texte=texte+'bg .' +str(j+1).rjust(23)+' = '+str(BG[j]-pi*RM) +POIVIR
- texte=texte+'bd .' +str(j+1).rjust(23)+' = '+str(BD[j]-pi*RM) +POIVIR
- texte=texte+'indbg .'+str(j+1).rjust(23)+' = '+str(INDBG[j]) +POIVIR
- texte=texte+'indbd .'+str(j+1).rjust(23)+' = '+str(INDBD[j]) +POIVIR
- texte=texte+'deny .' +str(j+1).rjust(23)+' = '+str(DNX[2*j]) +POIVIR
- texte=texte+'nbely .'+str(j+1).rjust(23)+' = '+str(int(DNX[2*j+1])) +POIVIR
- texte=texte+'*\n'
-
- texte=texte+'* Zones couvertes longitudinalement\n'
- texte=texte+'*\n'
- for j in range(NZONEY):
- texte=texte+'bi .' +str(j+1).rjust(23)+' = '+str(BI[j]) +POIVIR
- texte=texte+'bs .' +str(j+1).rjust(23)+' = '+str(BS[j]) +POIVIR
- texte=texte+'indbi .'+str(j+1).rjust(23)+' = '+str(INDBI[j]) +POIVIR
- texte=texte+'indbs .'+str(j+1).rjust(23)+' = '+str(INDBS[j]) +POIVIR
- texte=texte+'denz .' +str(j+1).rjust(23)+' = '+str(DNY[2*j]) +POIVIR
- texte=texte+'nbelz .'+str(j+1).rjust(23)+' = '+str(int(DNY[2*j+1])) +POIVIR
- texte=texte+'*\n'
-
- texte=texte+'* Caracteristiques des sous-epaisseurs\n'
- texte=texte+'*\n'
- issep=0
- for ssep in MCL_SOUS_EPAIS:
- issep=issep+1
- texte=texte+'axecir .' +str(issep).rjust(23)+' = '+str(ssep.ICIRP) +POIVIR
- texte=texte+'axelon .' +str(issep).rjust(23)+' = '+str(ssep.ILONP) +POIVIR
- texte=texte+'prof .' +str(issep).rjust(23)+' = '+str(ssep['PROFONDEUR'])+POIVIR
- texte=texte+'coory .' +str(issep).rjust(23)+' = '+str(ssep.ISCP-pi*RM) +POIVIR
- texte=texte+'coorz .' +str(issep).rjust(23)+' = '+str(ssep.ISLP) +POIVIR
- texte=texte+'posit .' +str(issep).rjust(23)+" = '"+str(ssep['SOUS_EPAIS'].lower())+"'"+POIVIR
- texte=texte+'axelonc .'+str(issep).rjust(23)+' = '+str(ssep['AXE_LONGI']) +POIVIR
- if ssep['POSI_CURV_LONGI']!=None:
- texte=texte+'coorzc .'+str(issep).rjust(23)+' = '+str(ssep['POSI_CURV_LONGI'])+POIVIR
- else:
- DZC=ssep.BETA*pi*(RC+(RM+EP/2.)*cos(pi/2.))/180.
- texte=texte+'coorzc .'+str(issep).rjust(23)+' = '+str(DZC)+POIVIR
- if ssep['TYPE']=='AXIS':
- texte=texte+'axisym .'+str(issep).rjust(23)+" = 'oui'"+POIVIR
- else:
- texte=texte+'axisym .'+str(issep).rjust(23)+" = 'non'"+POIVIR
- if ssep['EMPREINTE'] == 'OUI':
- texte=texte+'sousep .'+str(issep).rjust(23)+" = 'oui'"+POIVIR
- else:
- texte=texte+'sousep .'+str(issep).rjust(23)+" = 'non'"+POIVIR
- texte=texte+'* \n'
- texte=texte+'* FIN PARAMETRES UTILISATEUR\n'
- fpgib=open('fort.71','w')
- fpgib.write(texte)
- fpgib.close()
-
-
-
-################################################################################
-################################################################################
-################################################################################
-
-# ------------------------------------------------------------------------------
-def write_file_pgib_ASCSP2(MCL_SOUS_EPAIS,NLX,NLY):
-
- POIVIR = ' ;\n'
- texte='*\n'
- texte=texte+'coude extube bord1 clgv bord2 peauext peauint placoude platube\n'
- texte=texte+'plagv longi circo centr bou1 bou3 ligmed ligtub liggv lig45\n'
- texte=texte+'ligcir liglon bordtu\n'
- texte=texte+'= PLAQSEP bg bd bi bs indbg indbd indbi indbs rm rc\n'
- texte=texte+'alphac pirad epc lt lgv coory coorz axecir axelon prof zsyme posit\n'
- texte=texte+'lcoude nxep sousep deny nbely denz nbelz axelonc coorzc axisym\n'
- texte=texte+'daxhtu daxhgv nzt nzgv zcoude'+POIVIR
- texte=texte+'fdromi = ligmed . 1'+POIVIR
- texte=texte+'exdrmi = ligmed . 2'+POIVIR
- texte=texte+'extrmi = ligmed . 3'+POIVIR
- texte=texte+'exgami = ligmed . 4'+POIVIR
- texte=texte+'fgaumi = ligmed . 5'+POIVIR
- texte=texte+'ingami = ligmed . 6'+POIVIR
- texte=texte+'intrmi = ligmed . 7'+POIVIR
- texte=texte+'indrmi = ligmed . 8'+POIVIR
- texte=texte+'fdrotu = ligtub . 1'+POIVIR
- texte=texte+'exdrtu = ligtub . 2'+POIVIR
- texte=texte+'extrtu = ligtub . 3'+POIVIR
- texte=texte+'exgatu = ligtub . 4'+POIVIR
- texte=texte+'fgautu = ligtub . 5'+POIVIR
- texte=texte+'ingatu = ligtub . 6'+POIVIR
- texte=texte+'intrtu = ligtub . 7'+POIVIR
- texte=texte+'indrtu = ligtub . 8'+POIVIR
- texte=texte+"si (ega zsyme 'entier')"+POIVIR
- texte=texte+' fdrogv = liggv . 1'+POIVIR
- texte=texte+' exdrgv = liggv . 2'+POIVIR
- texte=texte+' extrgv = liggv . 3'+POIVIR
- texte=texte+' exgagv = liggv . 4'+POIVIR
- texte=texte+' fgaugv = liggv . 5'+POIVIR
- texte=texte+' ingagv = liggv . 6'+POIVIR
- texte=texte+' intrgv = liggv . 7'+POIVIR
- texte=texte+' indrgv = liggv . 8'+POIVIR
- texte=texte+'finsi'+POIVIR
- texte=texte+'*\n'
-
- text2=write_subpart_file_pgib_POST(MCL_SOUS_EPAIS,NLX,NLY)
- texte=texte+text2
-
- texte=texte+'*\n'
- texte=texte+'*oeil = 10000. 0. 0.' +POIVIR
- texte=texte+'*trac oeil cach coude'+POIVIR
- texte=texte+'*opti donn 5' +POIVIR
- texte=texte+'p1 = 0. 0. (-1.*lt)'+POIVIR
- texte=texte+'p2 = 0. 0. (coor 3 bou3)'+POIVIR
- texte=texte+'ma = coude et p1 et p2'+POIVIR
- texte=texte+'sort ma'+POIVIR
- texte=texte+'neu = nbno ma'+POIVIR
- texte=texte+"mess 'nombre de noeuds : 'neu"+POIVIR
- texte=texte+"opti sauv form 'fort.8'"+POIVIR
- texte=texte+'sauv form ma'+POIVIR
- texte=texte+'fin'+POIVIR
- fpgib=open('fort.71','a')
- fpgib.write(texte)
- fpgib.close()
-
-################################################################################
-################################################################################
-################################################################################
-
-# ------------------------------------------------------------------------------
-def write_file_dgib_ASCRDO(nomFichierDATG,TYPELE,NIVMAG,TYPBOL,ALPHA,RC,RM,EP,SUREP,
- LTCLIM,LTCHAR,NBEP,loc_datg):
-
- NY=20
- CZ=ALPHA*RC*pi/180.
- NZC=int((ALPHA+0.00001)/5.)
- DELTAY=2.*pi*RM/20
- DELTAZ=CZ/NZC
- DENEXT=int(LTCHAR/DELTAY)*DELTAY/4.
- NZT=0
- NZGV=0
-
- if TYPBOL!=None:
- if TYPBOL=='CUVE' : TYPEMB = 'typcuv'
- if TYPBOL=='GV' : TYPEMB = 'typegv'
- if TYPBOL=='ASP_MPP' : TYPEMB = 'typapp'
- else:
- TYPEMB =' '
-
- POIVIR = ' ;\n'
- texte='* DEBUT PARAMETRES UTILISATEUR\n'
- texte=texte+'*\n'
- texte=texte+'* Parametres generaux\n'
- texte=texte+'*\n'
- texte=texte+'nivmag = '+str(NIVMAG) +POIVIR
- texte=texte+'option dime 3 elem '+TYPELE+' nive nivmag echo 0'+POIVIR
- texte=texte+'rm = '+str(RM) +POIVIR
- texte=texte+'rc = '+str(RC) +POIVIR
- texte=texte+'alphac = '+str(ALPHA) +POIVIR
- texte=texte+'epc = '+str(EP) +POIVIR
- texte=texte+'surep = '+str(SUREP) +POIVIR
- texte=texte+'lgv = '+str(LTCLIM) +POIVIR
- texte=texte+'lt = '+str(LTCHAR) +POIVIR
- texte=texte+"typembou = '"+TYPEMB+"'" +POIVIR
- texte=texte+'nx = '+str(NBEP) +POIVIR
- texte=texte+'ny = '+str(NY) +POIVIR
- texte=texte+"pos = 'bidon'" +POIVIR
- texte=texte+'l1 = 0.' +POIVIR
- texte=texte+'lbloc = 0.' +POIVIR
- texte=texte+'crit = 0.0001' +POIVIR
- texte=texte+'crit2 = 0.01' +POIVIR
- texte=texte+'epsit = 1.e-3' +POIVIR
- texte=texte+'pirad = '+str(pi) +POIVIR
- texte=texte+'nzc = '+str(NZC) +POIVIR
- texte=texte+'teta_f = '+str(pi/2.) +POIVIR
- texte=texte+'zpp31 = '+str(CZ) +POIVIR
- texte=texte+'daxbtu = '+str(DENEXT) +POIVIR
- texte=texte+'daxhtu = '+str(DELTAZ) +POIVIR
- texte=texte+'daxbgv = '+str(DELTAZ) +POIVIR
- texte=texte+'daxhgv = '+str(DENEXT) +POIVIR
- texte=texte+'nzt = '+str(NZT) +POIVIR
- texte=texte+'nzgv = '+str(NZGV) +POIVIR
- texte=texte+'*\n'
- texte=texte+'* FIN PARAMETRES UTILISATEUR\n'
- texte=texte+'opti donn '
- texte=texte+"'"+loc_datg+'ascouf_regl_v1.datg'+"';\n"
- fdgib=open(nomFichierDATG,'w')
- fdgib.write(texte)
- fdgib.close()
-
-################################################################################
-################################################################################
-################################################################################
-# ------------------------------------------------------------------------------
-def macr_ascouf_mail_ops(self,EXEC_MAILLAGE,TYPE_ELEM,COUDE,
- SOUS_EPAIS_COUDE,SOUS_EPAIS_MULTI,
- FISS_COUDE,IMPRESSION,INFO,**args):
- """
- Ecriture de la macro MACR_ASCOUF_MAIL
- """
- from Accas import _F
- import types
- import aster
-
- ier=0
-
-# On importe les definitions des commandes a utiliser dans la macro
- EXEC_LOGICIEL =self.get_cmd('EXEC_LOGICIEL')
- PRE_GIBI =self.get_cmd('PRE_GIBI')
- LIRE_MAILLAGE =self.get_cmd('LIRE_MAILLAGE')
- DEFI_GROUP =self.get_cmd('DEFI_GROUP')
- MODI_MAILLAGE =self.get_cmd('MODI_MAILLAGE')
- AFFE_MODELE =self.get_cmd('AFFE_MODELE')
- CREA_MAILLAGE =self.get_cmd('CREA_MAILLAGE')
- DEFI_FICHIER =self.get_cmd('DEFI_FICHIER')
- IMPR_RESU =self.get_cmd('IMPR_RESU')
-
-# La macro compte pour 1 dans la numerotation des commandes
- self.set_icmd(1)
-
-
- TYPELE = TYPE_ELEM
- NIVMAG = EXEC_MAILLAGE['NIVE_GIBI']
- PRECIS = 0.01
- CRITER = 'RELATIF'
- CAR3 = ('IFDRO','IEXDR','IEXTR','IEXGA','IFGAU','IINGA','IINTR','IINDR')
- CAR4 = ('NOFDRO','NOEXDR','NOEXTR','NOEXGA','NOFGAU','NOINGA','NOINTR','NOINDR')
- CAR5 = ('NEFDRO','NEEXDR','NEEXTR','NEEXGA','NEFGAU','NEINGA','NEINTR','NEINDR')
- CAR6 = ('FDRO','EXDR','EXTR','EXGA','FGAU','INGA','INTR','INDR')
- SECT = ('MI','TU','GV')
-
-#
-################################################################################
-# --- caracteristiques du coude ---
-################################################################################
-#
- GEOM =COUDE['TRANSFORMEE']
- ALPHA =COUDE['ANGLE']
- RC =COUDE['R_CINTR']
- LTCHAR =COUDE['L_TUBE_P1']
- LTCLIM =COUDE['L_TUBE_P2']
- NBEP =COUDE['NB_ELEM_EPAIS']
- SYME =COUDE['SYME']
- SUREP =0.0
- TYPBOL = None
-#
- if COUDE['TRANSFORMEE']=='COUDE' or COUDE['TRAN_EPAIS']=='NON' :
- SUREP=COUDE['SUR_EPAIS']
- TYPBOL =COUDE['BOL_P2']
- DEXT = COUDE['DEXT']
- EP1 = COUDE['EPAIS']
- EP2 = EP1
- EPI = 0.0
- TETA1 = 0.0
- TETA2 = 0.0
- LTRAN = 0.0
- NBTRAN = 0
- else:
- NBTRAN = 1
- if COUDE['SYME']!='ENTIER':
- message= ' les quart et demi structure \n'
- message=message+' ne peuvent etre realisees \n'
- message=message+' sur un modele comportant une transition \n'
- message=message+' d epaisseur \n'
- UTMESS('F', "MACR_ASCOUF_MAIL", message)
-#
- DEXT = COUDE['DEXT_T1']
- EP1 = COUDE['EPAIS_T1']
- EP2 = COUDE['EPAIS_T2']
- TETA1 = COUDE['ANGL_TETA1']
- TETA2 = 0.0
- EPI = 0.0
- if COUDE['ANGL_TETA2']!=None :
- NBTRAN = 2
- TETA2 = COUDE['ANGL_TETA2']
- EPI = COUDE['EPAIS_TI']
-#
- if COUDE['ABSC_CURV_TRAN']!=None :
- LTRAN = COUDE['ABSC_CURV_TRAN']
- else :
- LTRAN = COUDE['POSI_ANGU_TRAN']* RC * pi / 180.0
-#
- RM = (DEXT-EP1)/2.0
- RM2 = RM + (EP2-EP1)/2.0
- R1 = RC
- R2 = RM
- E = EP1
-#
- if COUDE['SYME']!='ENTIER' and (LTCHAR!=LTCLIM) :
- message= ' les deux embouts doivent etre \n'
- message=message+' de meme longueur pour les cas de symetrie \n'
- UTMESS('F', "MACR_ASCOUF_MAIL", message)
-#
- LAMOR = 3.0/2.0 * sqrt( RM*RM*RM / EP1)
- if LTCHAR<LAMOR :
- message= ' longueur d embout P1 inferieure \n'
- message=message+' a la longueur d amortissement = %.2f \n'%LAMOR
- UTMESS('A', "MACR_ASCOUF_MAIL", message)
-#
- LAMOR = 3.0/2.0 * sqrt( RM2*RM2*RM2 / EP2)
- if LTCLIM<LAMOR :
- message= ' longueur d embout P2 inferieure \n'
- message=message+' a la longueur d amortissement = %.2f \n'%LAMOR
- UTMESS('A', "MACR_ASCOUF_MAIL", message)
-#
- if TYPBOL!=None:
- if TYPBOL[:1]=='GV' :
- message= ' la condition aux limites raccord \n'
- message=message+' 3d-poutre appliquee avec la macro de calcul \n '
- message=message+' ascouf n est pas licite avec un embout \n'
- message=message+' de type conique \n'
- UTMESS('A', "MACR_ASCOUF_MAIL", message)
-#
-################################################################################
-# --- caracteristiques de la fissure ---
-################################################################################
-#
- if FISS_COUDE!=None:
- if NBEP!=3:
- message= ' le nombre d elements dans l epaisseur \n'
- message=message+' du coude n est pas parametrable pour \n'
- message=message+' un coude avec fissure \n'
- message=message+' mot-cle NB_ELEM_EPAIS ignore \n'
- UTMESS('A', "MACR_ASCOUF_MAIL", message)
- FPROF = FISS_COUDE['PROFONDEUR']
- FAXI = FISS_COUDE['AXIS']
- if FAXI=='NON' and FISS_COUDE['LONGUEUR']==None :
- message= ' pour les fissures non axisymetriques \n'
- message=message+' la longueur doit etre specifiee \n'
- UTMESS('F', "MACR_ASCOUF_MAIL", message)
- if FAXI=='OUI' and FISS_COUDE['LONGUEUR']!=None :
- message= ' la fissure est axisymetrique : on ne \n'
- message=message+' tient pas compte de la longueur specifiee \n'
- UTMESS('A', "MACR_ASCOUF_MAIL", message)
- if FISS_COUDE['LONGUEUR']!=None : FLONG = FISS_COUDE['LONGUEUR']
- if FAXI=='OUI' :
-#### on prend une marge de securite a cause des modifs dans ascfis
- FLONG = 2.0 * pi * (RM + EP1)
- if FISS_COUDE['ABSC_CURV']!=None :
- SF = FISS_COUDE['ABSC_CURV']
- LDEFAU = SF
- BETA = 0.0
- else:
- SF = 0.0
- BETA = FISS_COUDE['POSI_ANGUL']
- LDEFAU = BETA * RC * pi / 180.0
- AZIM = FISS_COUDE['AZIMUT']
- ORIEN = FISS_COUDE['ORIEN']
- POSIT = FISS_COUDE['FISSURE']
- NT = FISS_COUDE['NB_TRANCHE']
- NS = FISS_COUDE['NB_SECTEUR']
- NC = FISS_COUDE['NB_COURONNE']
- if FISS_COUDE['RAYON_TORE']!=None : RC0 = FISS_COUDE['RAYON_TORE']
- else : RC0 = 0.
- if FISS_COUDE['COEF_MULT_RC2']!=None : RC2 = FISS_COUDE['COEF_MULT_RC2']
- else : RC2 = 0.
- if FISS_COUDE['COEF_MULT_RC3']!=None : RC3 = FISS_COUDE['COEF_MULT_RC3']
- else : RC3 = 0.
- EPSI = FISS_COUDE['ANGL_OUVERTURE']
- OR = ORIEN
- AZ = AZIM
- POS = POSIT
- DGAXEC = FLONG/2.0
- DC = DGAXEC
- if ORIEN!=90.0 and NBTRAN!=0 :
- message= ' avec une transition d epaisseur \n'
- message=message+' la fissure doit obligatoirement etre transverse \n'
- UTMESS('F', "MACR_ASCOUF_MAIL", message)
- if ORIEN!=90.0 and NBTRAN!=0 :
- message= ' avec une transition d epaisseur \n'
- message=message+' la fissure doit obligatoirement etre transverse \n'
- UTMESS('F', "MACR_ASCOUF_MAIL", message)
- if ORIEN!=90.0 and COUDE['SYME']!='ENTIER' :
- message= ' l orientation de la fissure doit \n'
- message=message+' etre transverse (orien : 90.) pour modeliser \n'
- message=message+' un quart ou une demi structure \n'
- UTMESS('F', "MACR_ASCOUF_MAIL", message)
- if ORIEN!=90.0 and FAXI=='OUI' :
- message= ' la fissure est axisymetrique : son \n'
- message=message+' orientation doit etre transverse (ORIEN : 90.) \n'
- UTMESS('F', "MACR_ASCOUF_MAIL", message)
-#
-################################################################################
-# --- caracteristiques des sous epaisseurs ---
-################################################################################
-#
- isep = 0
- MCL_SOUS_EPAIS = None
- if SOUS_EPAIS_MULTI!=None : MCL_SOUS_EPAIS = SOUS_EPAIS_MULTI
- if SOUS_EPAIS_COUDE!=None : MCL_SOUS_EPAIS = SOUS_EPAIS_COUDE
- if SOUS_EPAIS_MULTI!=None and NBTRAN!=0 :
- message= ' il ne peut pas y avoir plusieurs \n'
- message=message+' sous-epaisseurs en meme temps qu une \n'
- message=message+' transition d epaisseur : si une seule \n'
- message=message+' sous-epaisseur utiliser sous_epais_coude \n'
- UTMESS('F', "MACR_ASCOUF_MAIL", message)
- if SOUS_EPAIS_COUDE!=None and FISS_COUDE!=None and NBTRAN!=0 :
- message= ' avec une transition d epaisseur'
- message=message+' il doit obligatoirement y avoir un defaut \n'
- message=message+' soit une fissure soit une sous-epaisseur \n'
- UTMESS('F', "MACR_ASCOUF_MAIL", message)
- if MCL_SOUS_EPAIS!=None :
- AZIM = 90.0
- if MCL_SOUS_EPAIS.__class__.__name__ !='MCList' : MCL_SOUS_EPAIS=[MCL_SOUS_EPAIS,]
- if len(MCL_SOUS_EPAIS)!=1 and COUDE['SYME']!='ENTIER' :
- message= ' ne modeliser qu une seule \n'
- message=message+' sous-epaisseur pour un quart ou demi-coude\n '
- UTMESS('F', "MACR_ASCOUF_MAIL", message)
- for ssep in MCL_SOUS_EPAIS :
- isep=isep+1
- if ssep['AXE_CIRC']!=None and ssep['TYPE']=='AXIS' :
- message= ' vous ne pouvez declarer la sous- \n'
- message=message+' epaisseur comme axisymetrique et donner \n'
- message=message+' une taille d axe circonferentiel \n'
- UTMESS('F', "MACR_ASCOUF_MAIL", message)
- if ssep['AXE_CIRC']==None and ssep['TYPE']=='ELLI' :
- message= ' vous devez donner une taille d axe \n'
- message=message+' circonferentiel pour une sous-epaisseur de \n'
- message=message+' type elliptique \n'
- UTMESS('F', "MACR_ASCOUF_MAIL", message)
- if ssep['POSI_CURV_LONGI']!=None:
- if ssep['POSI_CURV_LONGI']>(ALPHA*RC*pi/180.0) :
- message= ' valeur hors domaine de validite \n'
- message=message+' sous-epaisseur numero : %d \n'%isep
- message=message+' abscisse curv. longit. : %.2f \n'%ssep['POSI_CURV_LONGI']
- message=message+' valeur maximale autorisee : %.2f \n'%(ALPHA*RC*pi/180.0)
- UTMESS('F', "MACR_ASCOUF_MAIL", message)
- LDEFAU = ssep['POSI_CURV_LONGI'] + ssep['AXE_LONGI']/2.0
- BETA = 0.0
- else:
- BETA=ssep['POSI_ANGUL']
- if (BETA<0.) or (BETA>ALPHA) :
- message= ' valeur hors domaine de validite \n'
- message=message+' sous-epaisseur numero : %d \n'%isep
- message=message+' position angulaire centre sous-ep : %.2f \n'%BETA
- message=message+' valeur limite autorisee : %.2f \n'%ALPHA
- UTMESS('F', "MACR_ASCOUF_MAIL", message)
- LDEFAU = (BETA*RC*pi/180.0) + ssep['AXE_LONGI']/2.0
-#
- if ssep['POSI_CURV_CIRC']!=None:
- if ssep['POSI_CURV_CIRC']>(2*pi*RM) :
- message= ' valeur hors domaine de validite \n'
- message=message+' sous-epaisseur numero : %d \n'%isep
- message=message+' abscisse curv. circonf. : %.2f \n'%ssep['POSI_CURV_CIRC']
- message=message+' valeur limite autorisee : %.2f \n'%(2*pi*RM)
- UTMESS('F', "MACR_ASCOUF_MAIL", message)
- if ssep['POSI_CURV_CIRC']!=(pi*RM) and ssep['TYPE']=='AXIS':
- message= ' le centre d une sous-epaisseur \n'
- message=message+' axisymetrique est impose en intrados (pi*RM) \n'
- UTMESS('F', "MACR_ASCOUF_MAIL", message)
- else:
- ssep.IPHIC=ssep['AZIMUT']
- if ssep['AZIMUT']!=180. and ssep['TYPE']=='AXIS':
- message= ' le centre d une sous-epaisseur \n'
- message=message+' axisymetrique est impose en intrados \n'
- message=message+' l azimut est fixe a 180 degres \n'
- UTMESS('F', "MACR_ASCOUF_MAIL", message)
-# l_ITYPE.append(ssep['TYPE' ])
-# l_ICIRC.append(ssep['AXE_CIRC' ])
-# l_ILONC.append(ssep['AXE_LONGI' ])
-# l_IPROC.append(ssep['PROFONDEUR' ])
-# l_ISLC.append( ssep['POSI_CURV_LONGI'])
-# l_IBETC.append(BETA)
- ssep.BETA=BETA
-# l_ISCC.append( ssep['POSI_CURV_CIRC' ])
-# l_IPHIC.append(ssep['AZIMUT' ])
-# l_IPOS.append( ssep['SOUS_EPAIS' ])
-# l_INBEL.append(ssep['NB_ELEM_LONGI' ])
-# l_INBEC.append(ssep['NB_ELEM_CIRC' ])
-# l_IEVID.append(ssep['EMPREINTE' ])
-
- if SOUS_EPAIS_COUDE!=None and COUDE['NB_ELEM_EPAIS']!=3 :
- message= ' le nombre d elements dans l \n'
- message=message+' epaisseur du coude n est pas parametrable pour \n'
- message=message+' la version 2 de la procedure de plaque avec sous \n'
- message=message+' -epaisseur : mot-cle NB_ELEM_EPAIS ignore \n'
- UTMESS('A', "MACR_ASCOUF_MAIL", message)
-#
-################################################################################
-# --- verifications de coherences ---
-################################################################################
-#
-# donnees globales
- if COUDE['TRANSFORMEE']=='COUDE' or COUDE['TRAN_EPAIS']=='NON' :
- if SUREP<0. or SUREP>(RM-EP1/2.0):
- message= ' valeur hors domaine de validite \n'
- message=message+' surepaisseur : \n',SUREP
- message=message+' valeur limite autorisee (RM-EP1/2) : %.2f \n'%(RM-EP1/2.0)
- UTMESS('F', "MACR_ASCOUF_MAIL", message)
- if RC<=(RM+EP1/2.0):
- message= ' valeur hors domaine de validite \n'
- message=message+' le rayon de cintrage : %.2f \n',RC
- message=message+' doit etre superieur a (RM+EP1/2) : %.2f \n'%(RM+EP1/2.0)
- UTMESS('F', "MACR_ASCOUF_MAIL", message)
-#
-# coude fissure
-#
- if FISS_COUDE!=None:
- if (RM/EP1)<5. or (RM/EP1)>50.:
- message= ' valeur hors domaine de validite (5,50) \n'
- message=message+' rapport RM/EP1 : %.2f \n'%(RM/EP1)
- UTMESS('F', "MACR_ASCOUF_MAIL", message)
- if FISS_COUDE['ABSC_CURV']!=None:
- if SF<0. or SF>(ALPHA*RC*pi/180.0) :
- message= ' valeur hors domaine de validite \n'
- message=message+' abscisse curviligne centre fissure : %.2f \n'%SF
- message=message+' valeur limite autorisee : %.2f \n'%(ALPHA*RC*pi/180.0)
- UTMESS('F', "MACR_ASCOUF_MAIL", message)
- if (NT-2*(NT/2))!=0:
- message= ' valeur hors domaine de validite \n'
- message=message+' nombre de tranches : %d \n'%NT
- UTMESS('F', "MACR_ASCOUF_MAIL", message)
- if FISS_COUDE['ABSC_CURV'] and ((BETA<0.) or (BETA>ALPHA)):
- message= ' valeur hors domaine de validite \n'
- message=message+' position angulaire centre fissure : %.2f \n'%BETA
- message=message+' posi_angul doit etre >= 0 et <= %.2f \n'%ALPHA
- UTMESS('F', "MACR_ASCOUF_MAIL", message)
-#
-# transition d epaisseur
-#
- if NBTRAN!=0:
- LCOUDE = ALPHA * RC * pi / 180.0
- DEXT = 2.0*RM + EP1
- if (LTRAN<LDEFAU) and (LTRAN>LCOUDE) :
- message= ' valeur hors domaine de validite \n'
- message=message+' debut transition d epaisseur : %.2f \n'%LTRAN
- message=message+' valeur minimale autorisee : %.2f \n'%LDEFAU
- message=message+' valeur maximale autorisee : %.2f \n'%LCOUDE
- UTMESS('F', "MACR_ASCOUF_MAIL", message)
- if (TETA1<0.) or (TETA1>30.) :
- message= ' valeur hors domaine de validite \n'
- message=message+' angle de transition TETA1 : %.2f \n'%TETA1
- message=message+' valeur minimale autorisee : %.2f \n'%0.
- message=message+' valeur maximale autorisee : %.2f \n'%30.
- UTMESS('F', "MACR_ASCOUF_MAIL", message)
-#
-# transition d epaisseur a une pente
-#
- if NBTRAN==1:
- if (EP1<12.) or (EP1>80.) :
- message= ' valeur hors domaine de validite \n'
- message=message+' epaisseur avant la transition : %.2f \n'%EP1
- message=message+' valeur minimale autorisee : %.2f \n'%12.
- message=message+' valeur maximale autorisee : %.2f \n'%80.
- UTMESS('F', "MACR_ASCOUF_MAIL", message)
- if (EP2<20.) or (EP2>110.) :
- message= ' valeur hors domaine de validite \n'
- message=message+' epaisseur apres la transition : %.2f \n'%EP2
- message=message+' valeur minimale autorisee : %.2f \n'%20.
- message=message+' valeur maximale autorisee : %.2f \n'%110.
- UTMESS('F', "MACR_ASCOUF_MAIL", message)
- if (EP1>EP2) :
- message= ' l epaisseur avant la transition \n'
- message=message+' doit etre inferieure \n'
- message=message+' a celle apres la transition \n'
- UTMESS('F', "MACR_ASCOUF_MAIL", message)
- LTRANF = LTRAN + ((EP2-EP1)/(tan(TETA1)))
- if (LTRANF>LCOUDE) :
- message= ' valeur hors domaine de validite \n'
- message=message+' fin transition d epaisseur : %.2f \n'%LTRANF
- message=message+' valeur limite autorisee : %.2f \n'%LCOUDE
- UTMESS('F', "MACR_ASCOUF_MAIL", message)
- if DEXT<112. or DEXT>880. :
- message= ' valeur hors domaine de validite\n'
- message=message+' diam ext du tube avant transition: %.2f \n'%DEXT
- message=message+' valeur minimum autorisee : %.2f \n'%112.
- message=message+' valeur maximum autorisee : %.2f \n'%880.
- UTMESS('F', "MACR_ASCOUF_MAIL", message)
-#
-# transition d epaisseur a une pente
-#
- else:
- if (TETA2<0.) or (TETA2>45.) :
- message= ' valeur hors domaine de validite\n'
- message=message+' angle de transition TETA2: %.2f \n'%TETA2
- message=message+' valeur minimum autorisee : %.2f \n'%0.
- message=message+' valeur maximum autorisee : %.2f \n'%45.
- UTMESS('F', "MACR_ASCOUF_MAIL", message)
- if (EP1<7.) or (EP1>35.) :
- message= ' valeur hors domaine de validite\n'
- message=message+' epaisseur avant 1ere transition: %.2f \n'%EP1
- message=message+' valeur minimum autorisee : %.2f \n'%7.
- message=message+' valeur maximum autorisee : %.2f \n'%35.
- UTMESS('F', "MACR_ASCOUF_MAIL", message)
- if (EP2<15.) or (EP2>40.) :
- message= ' valeur hors domaine de validite\n'
- message=message+' epaisseur avant 2eme transition: %.2f \n'%EP2
- message=message+' valeur minimum autorisee : %.2f \n'%15.
- message=message+' valeur maximum autorisee : %.2f \n'%40.
- UTMESS('F', "MACR_ASCOUF_MAIL", message)
- if (EPI<15.) or (EPI>40.) :
- message= ' valeur hors domaine de validite\n'
- message=message+' epaisseur intermediaire: %.2f \n'%EPI
- message=message+' valeur minimum autorisee : %.2f \n'%15.
- message=message+' valeur maximum autorisee : %.2f \n'%40.
- UTMESS('F', "MACR_ASCOUF_MAIL", message)
- if (EP1>EPI) :
- message= ' valeur hors domaine de validite\n'
- message=message+' l epaisseur avant la transition \n'
- message=message+' doit etre inferieure a l epaisseur intermediaire \n'
- UTMESS('F', "MACR_ASCOUF_MAIL", message)
- if (EP2<EPI) :
- message= ' valeur hors domaine de validite\n'
- message=message+' l epaisseur apres la transition \n'
- message=message+' doit etre inferieure a l epaisseur intermediaire \n'
- UTMESS('F', "MACR_ASCOUF_MAIL", message)
- LTRANF = LTRAN + (EPI-EP1)/(tan(TETA1))
- LTRANF = LTRANF + (EP2-EPI)/(tan(TETA2))
- if (LTRANF>LCOUDE) :
- message= ' valeur hors domaine de validite\n'
- message=message+' fin transition d epaisseur: %.2f \n'%LTRANF
- message=message+' valeur limite autorisee : %.2f \n'%LCOUDE
- UTMESS('F', "MACR_ASCOUF_MAIL", message)
- if (DEXT<77.) or (DEXT>355.) :
- message= ' valeur hors domaine de validite\n'
- message=message+' diam ext du tube avant transition: %.2f \n'%LTRANF
- message=message+' valeur minimum autorisee : %.2f \n'%77.
- message=message+' valeur maximum autorisee : %.2f \n'%355.
- UTMESS('F', "MACR_ASCOUF_MAIL", message)
-#
-################################################################################
-# --- calcul taille initiale des defauts sur la plaque ---
-################################################################################
-#
-#
- if FISS_COUDE!=None:
- DSF=(FISS_COUDE['ABSC_CURV']!=None)
- AXEAP,AXECP,SFP = ASCFIS(ALPHA, RM, RC, EP1, SUREP, GEOM, FPROF,
- DGAXEC, AZIM, POSIT, SF, DSF, BETA, ORIEN)
- elif MCL_SOUS_EPAIS!=None :
- ier= ASCSEP(MCL_SOUS_EPAIS,ALPHA,RM,RC,EP1,GEOM,SYME)
- for ssep in MCL_SOUS_EPAIS:
- ssep.IDENL = ssep.ILONP/ssep['NB_ELEM_LONGI']*180./(pi*RC)
- ssep.IDENC = ssep.ICIRP/ssep['NB_ELEM_CIRC']*180./(pi*RM)
- if SYME=='QUART' :
-# quart de structure
- ier,NLX,NLY,NZONEX,NZONEY,BG,BD,BI,BS,INDBG,INDBD,INDBI,INDBS,DNX,DNY\
- = ASCSYM(MCL_SOUS_EPAIS,RM,RC,ALPHA,LTCHAR,LTCLIM)
- else :
-# demi-structure ou entiere
- ier,NLX,NLY,NZONEX,NZONEY,BG,BD,BI,BS,INDBG,INDBD,INDBI,INDBS,DNX,DNY\
- = ASCPRE(MCL_SOUS_EPAIS,RM,RC,ALPHA,SYME,LTCHAR,LTCLIM)
-#
-#
- loc_gibi=aster.repout()
- logiel = EXEC_MAILLAGE['LOGICIEL' ]
- UNITD = EXEC_MAILLAGE['UNITE_DATG']
- UNITP = EXEC_MAILLAGE['UNITE_MGIB']
- if logiel=='GIBI98' : logiel = loc_gibi+'gibi98'
- elif logiel=='GIBI2000': logiel = loc_gibi+'gibi2000'
- else :
- UTMESS('F', "MACR_ASCOUF_MAIL", "seuls gibi98 et gibi2000 sont appelables")
-#
-# --- ecriture sur le fichier .datg de la procedure ---
-#
-# Nom du fichier de commandes pour GIBI
- nomFichierDATG = 'fort.'+str(UNITD)
-# Nom du fichier de maillage GIBI
- nomFichierGIBI = 'fort.'+str(UNITP)
- loc_datg = aster.repdex()
-#
- if FISS_COUDE!=None:
-# procedure coude fissure (MOT-CLE FISS_COUDE)
- write_file_dgib_ASCFDO(nomFichierDATG,RM,RC,ALPHA,NBTRAN,EP1,EP2,EPI,TETA1,
- TETA2,LTRAN,SUREP,LTCHAR,LTCLIM,TYPBOL,AXEAP,AXECP,NT,NS,NC,SFP,
- ORIEN,AZIM,RC0,RC2,RC3,POSIT,EPSI,NIVMAG,SYME,loc_datg)
- elif MCL_SOUS_EPAIS!=None :
- if SOUS_EPAIS_MULTI==None :
-# procedure coude sous-ep.: (MOT-CLE SOUS_EPAIS_COUDE)
- write_file_dgib_ASCSQO(nomFichierDATG,TYPELE,RM,RC,ALPHA,NBTRAN,EP1,EP2,
- EPI,TETA1,MCL_SOUS_EPAIS,TETA2,LTRAN,LTCHAR,LTCLIM,GEOM,
- SYME,NBEP,NLX,NLY,NIVMAG,loc_datg)
- write_file_pgib_ASCSQ2(MCL_SOUS_EPAIS,NLX,NLY)
- else:
-# procedure coude sous-ep.:(MOT-CLE SOUS_EPAIS_MULTI)
- write_file_dgib_ASCSP1(nomFichierDATG,TYPELE,MCL_SOUS_EPAIS,NIVMAG,loc_datg)
- write_file_pgib_ASCSDO(RM,RC,ALPHA,EP1,LTCLIM,LTCHAR,NBEP,
- NZONEX,NZONEY,BG,BD,BI,BS,INDBG,INDBD,INDBI,INDBS,
- DNX,DNY,MCL_SOUS_EPAIS,GEOM,SYME)
- write_file_pgib_ASCSP2(MCL_SOUS_EPAIS,NLX,NLY)
- else:
-# procedure coude regle
- write_file_dgib_ASCRDO(nomFichierDATG,TYPELE,NIVMAG,TYPBOL,ALPHA,RC,RM,EP1,SUREP,
- LTCLIM,LTCHAR,NBEP,loc_datg)
-
-
-# GIBI
- EXEC_LOGICIEL( LOGICIEL = logiel ,
- ARGUMENT = ( _F(NOM_PARA=nomFichierDATG),
- _F(NOM_PARA=nomFichierGIBI), ), )
-# PRE_GIBI
- PRE_GIBI()
-
- if SYME == 'QUART' : self.DeclareOut('nomres',self.sd)
-# LIRE_MAILLAGE
- nomres=LIRE_MAILLAGE(INFO=INFO)
-
-# DEFI_GROUP 1
-
- motscles={}
- l_CREA_GROUP_NO=[]
- l_CREA_GROUP_NO.append('BORD1')
- l_CREA_GROUP_NO.append('CLGV')
- l_CREA_GROUP_NO.append('BORD2')
- l_CREA_GROUP_NO.append('PEAUINT')
- l_CREA_GROUP_NO.append('PEAUEXT')
-
-# cas des fissures axisymetriques
- if FISS_COUDE!=None:
- if FISS_COUDE['AXIS']=='OUI':
- motscles['CREA_GROUP_MA']=[]
- motscles['CREA_GROUP_MA'].append(_F(GROUP_MA = 'FONDFISS',
- NOM = 'MAIL_ORI',
- POSITION = 'INIT' , ),)
-
-# conversion des groupes de mailles en groupes du bloc fissure
- if FISS_COUDE!=None:
- if SYME == 'ENTIER':
- l_CREA_GROUP_NO.append('NOLIG1')
- l_CREA_GROUP_NO.append('FACE1')
- l_CREA_GROUP_NO.append('NOLIG2')
- l_CREA_GROUP_NO.append('FACE2')
- l_CREA_GROUP_NO.append('FONDFISS')
-
- motscles['CREA_GROUP_NO']=[]
- motscles['CREA_GROUP_NO'].append(_F(GROUP_MA=tuple(l_CREA_GROUP_NO)))
-
-# conversion des groupes de mailles en groupes de noeuds pour les
-# ligaments des sous-ep.
- if MCL_SOUS_EPAIS!=None:
- issep=0
- for ssep in MCL_SOUS_EPAIS:
- issep=issep+1
- if ssep['TYPE']=='ELLI':
- for k in range(2*NLX[issep-1]+1):
- chtmp=str(issep)+'_'+str(k+1)
- ch1='CIR'+chtmp
- ch2='ICI'+chtmp
- motscles['CREA_GROUP_NO'].append(_F(NOM = ch2,
- GROUP_MA = ch1,),)
- motscles['CREA_GROUP_NO'].append(_F(NOM = 'IPCEN'+str(issep),
- GROUP_MA = 'PCENT'+str(issep),),)
- for k in range(2*NLY[issep-1]+1):
- chtmp=str(issep)+'_'+str(k+1)
- ch1='LON'+chtmp
- ch2='ILO'+chtmp
- motscles['CREA_GROUP_NO'].append(_F(NOM = ch2,
- GROUP_MA = ch1,),)
- for k in range(2*NLX[issep-1]+1):
- chtmp=str(issep)+'_'+str(k+1)
- ch1='ICI'+chtmp
- ch2='OCI'+chtmp
- ch3='ECI'+chtmp
- motscles['CREA_GROUP_NO'].append(_F(NOM = ch2,
- INTERSEC = ('PEAUEXT',ch1),),)
- motscles['CREA_GROUP_NO'].append(_F(NOM = ch3,
- INTERSEC = ('PEAUINT',ch1),),)
- motscles['CREA_GROUP_NO'].append(_F(NOM = 'OPCEN'+str(issep),
- INTERSEC = ('PEAUEXT','IPCEN'+str(issep),),),)
- motscles['CREA_GROUP_NO'].append(_F(NOM = 'EPCEN'+str(issep),
- INTERSEC = ('PEAUINT','IPCEN'+str(issep),),),)
- for k in range(2*NLY[issep-1]+1):
- chtmp=str(issep)+'_'+str(k+1)
- ch1='ILO'+chtmp
- ch2='OLO'+chtmp
- ch3='ELO'+chtmp
- motscles['CREA_GROUP_NO'].append(_F(NOM = ch2,
- INTERSEC = ('PEAUEXT',ch1),),)
- motscles['CREA_GROUP_NO'].append(_F(NOM = ch3,
- INTERSEC = ('PEAUINT',ch1),),)
- for k in range(2*NLX[issep-1]+1):
- chtmp=str(issep)+'_'+str(k+1)
- ch1='CIR'+chtmp
- ch2='ICI'+chtmp
- ch3='OCI'+chtmp
- ch4='ECI'+chtmp
- motscles['CREA_GROUP_NO'].append(_F(OPTION = 'SEGM_DROI_ORDO',
- NOM = ch1,
- GROUP_NO = ch2,
- GROUP_NO_ORIG = ch3,
- GROUP_NO_EXTR = ch4,
- PRECISION = PRECIS,
- CRITERE = CRITER,),)
- motscles['CREA_GROUP_NO'].append(_F(OPTION = 'SEGM_DROI_ORDO',
- NOM = 'PCENT'+str(issep),
- GROUP_NO = 'IPCEN'+str(issep),
- GROUP_NO_ORIG = 'OPCEN'+str(issep),
- GROUP_NO_EXTR = 'EPCEN'+str(issep),
- PRECISION = PRECIS,
- CRITERE = CRITER,),)
- for k in range(2*NLY[issep-1]+1):
- chtmp=str(issep)+'_'+str(k+1)
- ch1='LON'+chtmp
- ch2='ILO'+chtmp
- ch3='OLO'+chtmp
- ch4='ELO'+chtmp
- motscles['CREA_GROUP_NO'].append(_F(OPTION = 'SEGM_DROI_ORDO',
- NOM = ch1,
- GROUP_NO = ch2,
- GROUP_NO_ORIG = ch3,
- GROUP_NO_EXTR = ch4,
- PRECISION = PRECIS,
- CRITERE = CRITER,),)
-# 1/ noms intermediaires des groupes de noeuds representant les ligaments
-# des sections: TU,MI,GV et sous-ep.
- for k in range(8):
- motscles['CREA_GROUP_NO'].append(_F( NOM = CAR3[k]+str(issep),
- GROUP_MA = CAR6[k]+str(issep),),)
-
- for k in range(3):
- if SYME == 'ENTIER' or k!=2:
- for j in range(8):
- motscles['CREA_GROUP_NO'].append(_F( NOM = CAR3[j]+SECT[k],
- GROUP_MA = CAR6[j]+SECT[k],),)
-
-# 2/ determination et nommage des noeuds origine et extremite des groupes de noeuds
-# representant les ligaments de la ou des sections: sous-ep.
- issep=0
- for ssep in MCL_SOUS_EPAIS:
- issep=issep+1
- for k in range(8):
- motscles['CREA_GROUP_NO'].append(_F( NOM = CAR4[k]+str(issep),
- INTERSEC = ('PEAUEXT',CAR3[k]+str(issep),),),)
- motscles['CREA_GROUP_NO'].append(_F( NOM = CAR5[k]+str(issep),
- INTERSEC = ('PEAUINT',CAR3[k]+str(issep),),),)
-# 3/ nommage final des groupes de noeuds representant les ligaments
-# de la ou des sections: sous-ep.
- for k in range(8):
- motscles['CREA_GROUP_NO'].append(_F(OPTION = 'SEGM_DROI_ORDO',
- NOM = CAR6[k]+str(issep),
- GROUP_NO = CAR3[k]+str(issep),
- GROUP_NO_ORIG = CAR4[k]+str(issep),
- GROUP_NO_EXTR = CAR5[k]+str(issep),
- PRECISION = PRECIS,
- CRITERE = CRITER,),)
-
-# 4/ determination et nommage des noeuds origine et extremite des groupes de noeuds
-# representant les ligaments des sections: TU,MI,GV
- for k in range(3):
- if SYME == 'ENTIER' or k!=2:
- for j in range(8):
- motscles['CREA_GROUP_NO'].append(_F( NOM = CAR4[j]+SECT[k],
- INTERSEC = ('PEAUEXT',CAR3[j]+SECT[k],),),)
- motscles['CREA_GROUP_NO'].append(_F( NOM = CAR5[j]+SECT[k],
- INTERSEC = ('PEAUINT',CAR3[j]+SECT[k],),),)
-# 5/ nommage final des groupes de noeuds representant les ligaments des sections: TU,MI,GV
- for j in range(8):
- motscles['CREA_GROUP_NO'].append(_F(OPTION = 'SEGM_DROI_ORDO',
- NOM = CAR6[j]+SECT[k],
- GROUP_NO = CAR3[j]+SECT[k],
- GROUP_NO_ORIG = CAR4[j]+SECT[k],
- GROUP_NO_EXTR = CAR5[j]+SECT[k],
- PRECISION = PRECIS,
- CRITERE = CRITER,),)
-
-
- nomres=DEFI_GROUP(reuse =nomres,
- MAILLAGE=nomres,
- **motscles )
-#
-# DEFI_GROUP 2
- if FISS_COUDE!=None:
-# creation des groupes petit axe et grand axe fissure par
-# intersection de groupes existants
- motscles={}
- motscles['CREA_GROUP_NO']=[]
- l_peau=[]
- l_intersec=[]
- if POSIT == 'DEB_INT':
- l_peau.append('PEAUINT')
- else:
- l_peau.append('PEAUEXT')
-
- if SYME == 'ENTIER' :
- l_intersec.append('FACE1')
- motscles['CREA_GROUP_NO'].append(_F(NOM = 'P_AXE_1',
- INTERSEC = ('NOLIG1','FACE1'),),)
- motscles['CREA_GROUP_NO'].append(_F(NOM = 'G_AXE_1',
- INTERSEC = tuple(l_peau+l_intersec),),)
- l_intersec=[]
- l_intersec.append('FACE2')
- motscles['CREA_GROUP_NO'].append(_F(NOM = 'P_AXE_2',
- INTERSEC = ('NOLIG2','FACE2'),),)
- motscles['CREA_GROUP_NO'].append(_F(NOM = 'G_AXE_2',
- INTERSEC = tuple(l_peau+l_intersec),),)
-
- nomres=DEFI_GROUP(reuse =nomres,
- MAILLAGE=nomres,
- **motscles )
-
-# AFFE_MODELE
- __MODELE=AFFE_MODELE( MAILLAGE=nomres,
- AFFE=_F( GROUP_MA = 'COUDE' ,
- PHENOMENE = 'MECANIQUE' ,
- MODELISATION = '3D' , )
- )
-
-# MODI_MAILLAGE 1
- motscles={}
- if GEOM == 'COUDE':
- motscles['TUBE_COUDE']=[]
- motscles['TUBE_COUDE'].append(_F(ANGLE=ALPHA,
- R_CINTR=RC,
- L_TUBE_P1=LTCHAR),)
- motscles['PLAQ_TUBE']=[]
- D_PLAQ_TUBE={}
- D_PLAQ_TUBE['DEXT']=DEXT
- D_PLAQ_TUBE['EPAIS']=EP1
- D_PLAQ_TUBE['L_TUBE_P1']=LTCHAR
- if SYME == 'QUART' : D_PLAQ_TUBE['COUTURE']='NON'
- if FISS_COUDE!=None:
- D_PLAQ_TUBE['AZIMUT']=AZIM
- elif SOUS_EPAIS_COUDE!=None :
- D_PLAQ_TUBE['AZIMUT']=MCL_SOUS_EPAIS[0].IPHIC
- else:pass
- motscles['PLAQ_TUBE'].append(_F(**D_PLAQ_TUBE),)
- nomres=MODI_MAILLAGE( reuse =nomres,
- MAILLAGE=nomres,
- **motscles )
-
-# MODI_MAILLAGE 2
- motscles={}
- motscles['ORIE_PEAU_3D']=_F(GROUP_MA=('PEAUINT','EXTUBE'),)
- if FISS_COUDE!=None:
- if FISS_COUDE['FISSURE'] == 'DEB_INIT':
- motscles['ORIE_PEAU_3D']=_F(GROUP_MA=('PEAUINT','EXTUBE','FACE1','FACE2'),)
- nomres=MODI_MAILLAGE(reuse =nomres,
- MAILLAGE=nomres,
- MODELE =__MODELE,
- **motscles)
-
-# CREA_MAILLAGE
- if SYME != 'QUART':
- self.DeclareOut('nomre2',self.sd)
- motscles={}
- motscles['CREA_POI1']=[]
- motscles['CREA_POI1'].append(_F(NOM_GROUP_MA='P1',
- GROUP_NO='P1'),)
- if TYPBOL == None :
- motscles['CREA_POI1'].append(_F(NOM_GROUP_MA='P2',
- GROUP_NO='P2'),)
- nomre2=CREA_MAILLAGE( MAILLAGE=nomres,
- **motscles)
- else:
- nomre2=nomres
-
-
-# IMPRESSSION
- if IMPRESSION!=None:
- if IMPRESSION.__class__.__name__ !='MCList' : IMPRESSION =[IMPRESSION,]
- for impr in IMPRESSION :
-#
- motscles={}
- if impr['FORMAT']=='IDEAS' : motscles['VERSION'] =impr['VERSION']
- if impr['FORMAT']=='CASTEM' : motscles['NIVE_GIBI'] =impr['NIVE_GIBI']
- if impr['UNITE']!=None : motscles['UNITE'] =impr['UNITE']
- impr_resu = _F( MAILLAGE = nomre2,)
-#
- IMPR_RESU( RESU = impr_resu,
- FORMAT= impr['FORMAT'],**motscles)
-
-
-
- return ier
-
-
+++ /dev/null
-#@ MODIF macr_aspic_calc_ops Macro DATE 05/09/2005 AUTEUR DURAND C.DURAND
-# -*- coding: iso-8859-1 -*-
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-
-
-def macr_aspic_calc_ops(self,TYPE_MAILLAGE,TUBULURE,MAILLAGE,MODELE,CHAM_MATER,CARA_ELEM,
- FOND_FISS_1,FOND_FISS_2,CHARGE,RESU_THER,AFFE_MATERIAU,EQUILIBRE,
- PRES_REP,ECHANGE,TORS_CORP,TORS_TUBU,COMP_INCR,COMP_ELAS,
- THETA_3D,OPTION,SOLVEUR,CONVERGENCE,NEWTON,RECH_LINEAIRE,
- INCREMENT,PAS_AZIMUT,IMPRESSION,INFO,TITRE ,**args):
- """
- Ecriture de la macro MACR_ASPIC_CALC
- """
- from Accas import _F
- import types
- from Utilitai.Utmess import UTMESS
- ier=0
-#------------------------------------------------------------------
- # On recopie le mot cle affe_materiau pour le proteger
- mc_AFFE_MATERIAU=AFFE_MATERIAU
-#------------------------------------------------------------------
- # On importe les definitions des commandes a utiliser dans la macro
- AFFE_MODELE =self.get_cmd('AFFE_MODELE' )
- AFFE_MATERIAU =self.get_cmd('AFFE_MATERIAU' )
- AFFE_CARA_ELEM =self.get_cmd('AFFE_CARA_ELEM' )
- AFFE_CHAR_THER_F =self.get_cmd('AFFE_CHAR_THER_F')
- THER_LINEAIRE =self.get_cmd('THER_LINEAIRE' )
- AFFE_CHAR_MECA =self.get_cmd('AFFE_CHAR_MECA' )
- STAT_NON_LINE =self.get_cmd('STAT_NON_LINE' )
- CALC_ELEM =self.get_cmd('CALC_ELEM' )
- POST_RELEVE_T =self.get_cmd('POST_RELEVE_T' )
- IMPR_TABLE =self.get_cmd('IMPR_TABLE' )
- POST_RCCM =self.get_cmd('POST_RCCM' )
- DEFI_FOND_FISS =self.get_cmd('DEFI_FOND_FISS' )
- CALC_THETA =self.get_cmd('CALC_THETA' )
- CALC_G_THETA_T =self.get_cmd('CALC_G_THETA_T' )
- CALC_G_LOCAL_T =self.get_cmd('CALC_G_LOCAL_T' )
- IMPR_RESU =self.get_cmd('IMPR_RESU' )
-
- # La macro compte pour 1 dans la numerotation des commandes
- self.set_icmd(1)
-
-#------------------------------------------------------------------
-# data
- GRMAIL= ('EQUERRE','PEAUINT','EXCORP1','EXCORP2','EXTUBU','LEVRTUBU','LEVRCORP')
- NOMNOE= ('P1_CORP','P2_CORP','P_TUBU ')
- IMPRT1= ('NUME_ORDRE','INTITULE','RESU' ,'NOM_CHAM',
- 'ABSC_CURV' ,'COOR_X' ,'COOR_Y','COOR_Z' ,
- 'SIXX' ,'SIXY' ,'SIXZ' )
- IMPRT2= ('NUME_ORDRE','INTITULE','RESU' ,'NOM_CHAM',
- 'ABSC_CURV' ,'COOR_X' ,'COOR_Y','COOR_Z' ,
- 'SIYY' ,'SIXY' ,'SIYZ' )
- IMPRT3= ('NUME_ORDRE','INTITULE','RESU' ,'NOM_CHAM',
- 'ABSC_CURV' ,'COOR_X' ,'COOR_Y','COOR_Z' ,
- 'TEMP' )
- APPRES= ('PEAUINT ','LEVRTUBU','LEVRCORP')
-#------------------------------------------------------------------
-#
- i=0
- for mate in mc_AFFE_MATERIAU:
- if mate['RCCM']=='OUI' :
- i=i+1
- MRCCM=mate['MATER']
- if i>1 :
- UTMESS('E', "MACR_ASPIC_CALC", "vous affectez plus d un materiau contenant l option rccm")
-#
- if (TYPE_MAILLAGE[:4]=='SAIN') and (TUBULURE==None) :
- UTMESS('E', "MACR_ASPIC_CALC", "pour les piquages sains, TUBULURE doit etre renseigne")
-#
- if EQUILIBRE['NOEUD'] not in ('P1_CORP','P2_CORP') :
- UTMESS('E', "MACR_ASPIC_CALC", "EQUILIBRE[NOEUD] : on attend P1_CORP ou P2_CORP")
-#
- if PRES_REP['EFFE_FOND']=='OUI' :
- if PRES_REP['NOEUD']==None :
- UTMESS('E', "MACR_ASPIC_CALC", "il faut preciser un noeud pour EFFE_FOND")
- if PRES_REP['NOEUD'] not in ('P1_CORP','P2_CORP') :
- UTMESS('E', "MACR_ASPIC_CALC", "PRES_REP[NOEUD] : on attend P1_CORP ou P2_CORP")
- if PRES_REP['NOEUD']==EQUILIBRE['NOEUD'] :
- UTMESS('E', "MACR_ASPIC_CALC", "on ne peut appliquer un EFFE_FOND sur PRES_REP[NOEUD] car ce noeud est bloque")
-#
- if TORS_CORP!=None :
- for tors in TORS_CORP :
- if tors['NOEUD'] not in ('P1_CORP','P2_CORP') :
- UTMESS('E', "MACR_ASPIC_CALC", "TORS_CORP[NOEUD] : on attend P1_CORP ou P2_CORP")
- if tors['NOEUD']==EQUILIBRE['NOEUD'] :
- UTMESS('E', "MACR_ASPIC_CALC", "on ne peut appliquer un torseur sur TORS_CORP[NOEUD] car ce noeud est bloque")
-#
- if (TYPE_MAILLAGE[:4]=='SAIN') and (THETA_3D!=None) :
- UTMESS('E', "MACR_ASPIC_CALC", "si TYPE_MAILLAGE SAIN : mecanique de la rupture impossible")
-#
- if OPTION in ('CALC_G_MAX','CALC_G_MAX_LOCAL') :
- if BORNES==None :
- UTMESS('E', "MACR_ASPIC_CALC", "mot-clef <BORNES> obligatoire avec cette option")
-#
- if IMPRESSION!=None :
- if IMPRESSION['FORMAT'] in ('IDEAS','CASTEM') :
- if IMPRESSION['NOM_CHAM']==None :
- UTMESS('E', "MACR_ASPIC_CALC", "impression de resultats demandée sans preciser le nom des champs cf. la documentation utilisateur : U4.PC.20.")
-#
-#------------------------------------------------------------------
-#
-# --- commande AFFE_MODELE ---
-#
- if MODELE!=None : self.DeclareOut('modele',MODELE)
- mcfact=[]
- if (PRES_REP['PRES_LEVRE']=='OUI') and (TYPE_MAILLAGE[-4:]=='_DEB') :
- mcfact.append(_F(GROUP_MA=GRMAIL, PHENOMENE='MECANIQUE',MODELISATION='3D' ))
- else:
- mcfact.append(_F(GROUP_MA=GRMAIL[:-2],PHENOMENE='MECANIQUE',MODELISATION='3D' ))
- mcfact.append( _F(GROUP_MA='P1_CORP' ,PHENOMENE='MECANIQUE',MODELISATION='DIS_TR'))
- mcfact.append( _F(GROUP_MA='P2_CORP' ,PHENOMENE='MECANIQUE',MODELISATION='DIS_TR'))
- mcfact.append( _F(GROUP_MA='P_TUBU' ,PHENOMENE='MECANIQUE',MODELISATION='DIS_TR'))
- modele = AFFE_MODELE( MAILLAGE = MAILLAGE ,
- AFFE = mcfact )
- if ECHANGE!=None : # modele thermique
- __modthe = AFFE_MODELE( MAILLAGE = MAILLAGE ,
- AFFE = _F(GROUP_MA =GRMAIL[:-2],
- PHENOMENE ='THERMIQUE',
- MODELISATION='3D' ) )
-#
-# --- commande AFFE_MATERIAU ---
-#
- if CHAM_MATER!=None : self.DeclareOut('affmat',CHAM_MATER)
- mcfact=[]
- for mater in mc_AFFE_MATERIAU :
- if mater['TOUT']!=None : mcfact.append(_F(TOUT =mater['TOUT' ],MATER=mater['MATER'],TEMP_REF=mater['TEMP_REF']))
- else : mcfact.append(_F(GROUP_MA=mater['GROUP_MA'],MATER=mater['MATER'],TEMP_REF=mater['TEMP_REF']))
- affmat = AFFE_MATERIAU( MAILLAGE = MAILLAGE ,
- MODELE = modele ,
- AFFE = mcfact )
-#
-# --- commande AFFE_CARA_ELEM ---
-#
- if CARA_ELEM!=None : self.DeclareOut('carael',CARA_ELEM)
- carael = AFFE_CARA_ELEM( MODELE = modele ,
- DISCRET = ( _F( GROUP_MA='P1_CORP' ,
- CARA ='K_TR_D_N',
- VALE = ( 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 ) ),
- _F( GROUP_MA='P2_CORP' ,
- CARA ='K_TR_D_N',
- VALE = ( 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 ) ),
- _F( GROUP_MA='P_TUBU' ,
- CARA ='K_TR_D_N',
- VALE = ( 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 ) ), ) )
-#
-# --- commande AFFE_CHAR_THER_F ---
-# condition aux limites
-#
- if ECHANGE!=None :
- __chther = AFFE_CHAR_THER_F( MODELE = __modthe ,
- ECHANGE=( _F(GROUP_MA='PEAUTUBU',
- COEF_H =ECHANGE['COEF_H_TUBU'],
- TEMP_EXT=ECHANGE['TEMP_EXT'],),
- _F(GROUP_MA='PEAUCORP',
- COEF_H =ECHANGE['COEF_H_CORP'],
- TEMP_EXT=ECHANGE['TEMP_EXT'],),))
-#
-# --- calcul thermique ---
-#
- if RESU_THER!=None : self.DeclareOut('resuth',RESU_THER)
- mcsimp={}
- if INCREMENT['NUME_INST_INIT']!=None : mcsimp['NUME_INIT']=INCREMENT['NUME_INST_INIT']
- if INCREMENT['NUME_INST_FIN' ]!=None : mcsimp['NUME_FIN' ]=INCREMENT['NUME_INST_FIN' ]
- mcfact=_F(LIST_INST=INCREMENT['LIST_INST'],**mcsimp)
- resuth = THER_LINEAIRE( MODELE = __modthe ,
- CHAM_MATER = affmat ,
- TEMP_INIT = _F(STATIONNAIRE='OUI',),
- EXCIT = _F(CHARGE=__chther,),
- INCREMENT = mcfact, )
-#
- if CHARGE!=None : self.DeclareOut('chmeth',CHARGE)
- chmeth = AFFE_CHAR_MECA( MODELE = modele ,
- TEMP_CALCULEE = resuth )
-#
-# --- commande AFFE_CHAR_MECA ---
-# condition aux limites
-#
- if EQUILIBRE['NOEUD']=='P1_CORP' :
- NENCAS = EQUILIBRE['NOEUD']
- AEFOCO = 'EXCORP2'
- ATORCO = 'P2_CORP'
- LINTC = 'L_INT_C2'
- elif EQUILIBRE['NOEUD']=='P2_CORP' :
- NENCAS = EQUILIBRE['NOEUD']
- AEFOCO = 'EXCORP1'
- ATORCO = 'P1_CORP'
- LINTC = 'L_INT_C1'
- __conlim = AFFE_CHAR_MECA( MODELE = modele ,
- LIAISON_ELEM = ( _F( OPTION ='3D_POU' ,
- GROUP_MA_1='EXCORP1',
- GROUP_NO_2='P1_CORP'),
- _F( OPTION ='3D_POU' ,
- GROUP_MA_1='EXCORP2' ,
- GROUP_NO_2='P2_CORP'),
- _F( OPTION ='3D_POU' ,
- GROUP_MA_1='EXTUBU',
- GROUP_NO_2='P_TUBU'), ),
- DDL_IMPO = _F( GROUP_NO = NENCAS ,
- DX = 0.0 ,
- DY = 0.0 ,
- DZ = 0.0 ,
- DRX = 0.0 ,
- DRY = 0.0 ,
- DRZ = 0.0 , ) )
-#
-# --- commande AFFE_CHAR_MECA ---
-# chargement mecanique : pres_rep, effet de fond
-#
- motscles={}
- if (PRES_REP['PRES_LEVRE']=='OUI') and (TYPE_MAILLAGE[-4:]=='_DEB') :
- motscles['PRES_REP' ]= _F(GROUP_MA=APPRES, PRES=PRES_REP['PRES'])
- else :
- motscles['PRES_REP' ]= _F(GROUP_MA=APPRES[0],PRES=PRES_REP['PRES'])
- if PRES_REP['EFFE_FOND' ]!=None :
- motscles['EFFE_FOND' ]=(_F(GROUP_MA ='EXTUBU ',
- GROUP_MA_INT='L_INT_TU',
- PRES =PRES_REP['PRES']),
- _F(GROUP_MA =AEFOCO,
- GROUP_MA_INT=LINTC,
- PRES =PRES_REP['PRES']))
- __chpres = AFFE_CHAR_MECA( MODELE = modele ,**motscles)
-#
-# --- commande AFFE_CHAR_MECA ---
-# chargement mecanique : torseur sur le corps
-#
- if TORS_CORP!=None:
- __chtrc = [None]*6
- i=0
- for tors in TORS_CORP :
- mcsimp={}
- if tors['FX']!=None : mcsimp['FX']=tors['FX']
- if tors['FY']!=None : mcsimp['FY']=tors['FY']
- if tors['FZ']!=None : mcsimp['FZ']=tors['FZ']
- if tors['MX']!=None : mcsimp['MX']=tors['MX']
- if tors['MY']!=None : mcsimp['MY']=tors['MY']
- if tors['MZ']!=None : mcsimp['MZ']=tors['MZ']
- mcfact=_F(GROUP_NO=ATORCO,**mcsimp)
- __chtrc[i] = AFFE_CHAR_MECA( MODELE = modele ,
- FORCE_NODALE = mcfact , )
- i=i+1
-#
-# --- commande AFFE_CHAR_MECA ---
-# chargement mecanique : torseur sur la tubulure
-#
- if TORS_TUBU!=None:
- __chtrt = [None]*6
- i=0
- for tors in TORS_TUBU :
- mcsimp={}
- if tors['FX']!=None : mcsimp['FX']=tors['FX']
- if tors['FY']!=None : mcsimp['FY']=tors['FY']
- if tors['FZ']!=None : mcsimp['FZ']=tors['FZ']
- if tors['MX']!=None : mcsimp['MX']=tors['MX']
- if tors['MY']!=None : mcsimp['MY']=tors['MY']
- if tors['MZ']!=None : mcsimp['MZ']=tors['MZ']
- mcfact=_F(GROUP_NO='P_TUBU ',**mcsimp)
- __chtrt[i] = AFFE_CHAR_MECA( MODELE = modele ,
- FORCE_NODALE = mcfact , )
- i=i+1
-#
-# --- commande STAT_NON_LINE ---
-#
- motscles={}
-#
- mcfex=[] # mot clé facteur EXCIT
- mcfex.append(_F(CHARGE=__conlim,))
- if ECHANGE!=None :
- mcfex.append(_F(CHARGE=chmeth,))
- if PRES_REP['FONC_MULT']!=None :
- mcfex.append(_F(CHARGE=__chpres,FONC_MULT=PRES_REP['FONC_MULT']))
- else :
- mcfex.append(_F(CHARGE=__chpres,))
- if TORS_CORP!=None:
- i=0
- for tors in TORS_CORP :
- if tors['FONC_MULT']!=None :
- mcfex.append(_F(CHARGE=__chtrc[i],FONC_MULT=tors['FONC_MULT']))
- else :
- mcfex.append(_F(CHARGE=__chtrc[i],))
- i=i+1
- if TORS_TUBU!=None:
- i=0
- for tors in TORS_TUBU :
- if tors['FONC_MULT']!=None :
- mcfex.append(_F(CHARGE=__chtrt[i],FONC_MULT=tors['FONC_MULT']))
- else :
- mcfex.append(_F(CHARGE=__chtrt[i],))
- i=i+1
- motscles['EXCIT'] =mcfex
-#
- mcfci=[] # mot clé facteur COMP_INCR :obligatoire pour les noeuds discrets
- if COMP_INCR!=None :
- mcfci.append(_F(TOUT ='OUI' ,RELATION=COMP_INCR['RELATION']))
- mcfci.append( _F(GROUP_MA=NOMNOE,RELATION='ELAS'))
- motscles['COMP_INCR'] =mcfci
-#
- if COMP_ELAS!=None :
- motscles['COMP_ELAS'] =_F(GROUP_MA=GRMAIL[:-2] ,RELATION=COMP_ELAS['RELATION'])
-#
- dSolveur=SOLVEUR[0].cree_dict_valeurs(SOLVEUR[0].mc_liste)
- for i in dSolveur.keys():
- if dSolveur[i]==None : del dSolveur[i]
-#
- dConverg=CONVERGENCE[0].cree_dict_valeurs(CONVERGENCE[0].mc_liste)
- for i in dConverg.keys():
- if dConverg[i]==None : del dConverg[i]
-#
- dNewton=NEWTON[0].cree_dict_valeurs(NEWTON[0].mc_liste)
- for i in dNewton.keys():
- if dNewton[i]==None : del dNewton[i]
-#
- dRechlin=RECH_LINEAIRE[0].cree_dict_valeurs(RECH_LINEAIRE[0].mc_liste)
- for i in dRechlin.keys():
- if dRechlin[i]==None : del dRechlin[i]
-#
- dIncrem=INCREMENT[0].cree_dict_valeurs(INCREMENT[0].mc_liste)
- for i in dIncrem.keys():
- if dIncrem[i]==None : del dIncrem[i]
-#
- if TITRE!=None :
- motscles['TITRE' ] =TITRE
- motscles ['SOLVEUR' ] =dSolveur
- motscles ['CONVERGENCE' ] =dConverg
- motscles ['NEWTON' ] =dNewton
- motscles ['RECH_LINEAIRE'] =dRechlin
- motscles ['INCREMENT' ] =dIncrem
- self.DeclareOut('nomres',self.sd)
- nomres = STAT_NON_LINE( MODELE = modele ,
- CHAM_MATER = affmat ,
- CARA_ELEM = carael ,
- INFO = INFO , **motscles)
-#
- nomres = CALC_ELEM( reuse = nomres,
- RESULTAT = nomres ,
- TOUT_ORDRE = 'OUI' ,
- OPTION = ('SIEF_ELNO_ELGA','VARI_ELNO_ELGA','EQUI_ELNO_SIGM') ,
- INFO = INFO ,)
-#
-#-----------------------------------------------------------------------
- if TYPE_MAILLAGE[:4]=='SAIN' :
-#-----------------------------------------------------------------------
-#
-# --- post traitement : POST_RELEVE_T --- azimuts droits
-#
-# ---- champs de contrainte SI, SII ET SIII ----
-#
- if TYPE_MAILLAGE=='SAIN_GROS' : NBAZIM = 40
- else : NBAZIM = 48
- mcfact=[]
- TYPSOU=None
- if TUBULURE!=None : TYPSOU = TUBULURE['TYPE']
- for i in range(1,NBAZIM+1,PAS_AZIMUT):
- if i<10 : NUME = '0'+str(i)
- else : NUME = str(i)
- mcsimp={}
- if TYPSOU=='TYPE_1':
- mcsimp['REPERE' ]='CYLINDRIQUE',
- mcsimp['ORIGINE']=( 0.0 , 0.0 , 0.0 )
- mcsimp['AXE_Z' ]=( 0.0 , 0.0 , 1.0 )
- INTITD = 'AZI_'+NUME+'_D-REP_CYL'
- else:
- mcsimp['REPERE' ]='LOCAL'
- mcsimp['VECT_Y' ]=( 0.0 , 0.0 , 1.0 )
- INTITD = 'AZI_'+NUME+'_D-REP_LOC'
- mcsimp['INTITULE' ]=INTITD
- mcsimp['GROUP_NO' ]='LD'+str(i)
- mcfact.append( _F( RESULTAT = nomres,
- TOUT_ORDRE ='OUI',
- NOM_CHAM ='SIEF_ELNO_ELGA',
- PRECISION =55.E-1,
- TOUT_CMP ='OUI',
- OPERATION ='EXTRACTION',**mcsimp))
- __noposd=POST_RELEVE_T(ACTION = mcfact,
- TITRE = '-- TRAITEMENT DES AZIMUTS DROITS --')
-#
-# --- IMPR_TABLE dans un repere cylindrique ou local
-# des champs de contrainte SI, SII ET SIII
-#
- if TYPSOU=='TYPE_1' : nompara=IMPRT1
- else : nompara=IMPRT2
- IMPR_TABLE(TABLE = __noposd,
- NOM_PARA = nompara )
-#
-# ---- Pm, Pm+Pb sur les lignes de depouillement ----
-#
- if mc_AFFE_MATERIAU[0]['RCCM']=='OUI':
- mcfact=[]
- for i in range(1,NBAZIM+1,PAS_AZIMUT):
- if i<10 : NUME = '0'+str(i)
- else : NUME = str(i)
- mcsimp={}
- mcsimp['INTITULE' ]='LD'+str(i)
- mcsimp['GROUP_NO' ]='LD'+str(i)
- mcsimp['RESULTAT' ]=nomres
- mcsimp['TOUT_ORDRE' ]='OUI'
- mcsimp['NOM_CHAM' ]='SIEF_ELNO_ELGA'
- mcsimp['PRECISION' ]=55.E-1
- mcsimp['TOUT_CMP' ]='OUI'
- mcsimp['OPERATION' ]='EXTRACTION'
- mcfact.append( _F(**mcsimp) )
- __prelsd=POST_RELEVE_T(ACTION=mcfact)
- __pmpbsd=POST_RCCM(OPTION = 'PM_PB',
- TYPE_RESU_MECA = 'EVOLUTION',
- TYPE_RESU = 'VALE_MAX',
- MATER = MRCCM,
- TRANSITOIRE = _F(TABL_RESU_MECA = __prelsd,),
- TITRE = '-- TRAITEMENT DES AZIMUTS DROITS --',)
- IMPR_TABLE(TABLE = __pmpbsd, )
-#
-# ---- champ de temperature, si il a ete calcule, sur les lignes de depouillement ----
-#
- if ECHANGE!=None :
- mcfact=[]
- for i in range(1,NBAZIM+1,PAS_AZIMUT):
- if i<10 : NUME = '0'+str(i)
- else : NUME = str(i)
- mcsimp={}
- mcsimp['GROUP_NO' ]='LD'+str(i)
- mcsimp['RESULTAT' ]=resuth
- mcsimp['TOUT_ORDRE' ]='OUI'
- mcsimp['NOM_CHAM' ]='TEMP'
- mcsimp['PRECISION' ]=55.E-1
- mcsimp['TOUT_CMP' ]='OUI'
- mcsimp['INTITULE' ]='AZI_'+NUME+'_D'
- mcsimp['OPERATION' ]='EXTRACTION'
- mcfact.append( _F(**mcsimp) )
- __rthazd=POST_RELEVE_T(ACTION=mcfact)
- IMPR_TABLE(TABLE = __rthazd, )
-#
-# ---- parametres caracterisant la distribution de temperature,
-# si elle a ete calculee, dans l epaisseur du ligament ----
-#
- mcfact=[]
- for i in range(1,NBAZIM+1,PAS_AZIMUT):
- if i<10 : NUME = '0'+str(i)
- else : NUME = str(i)
- mcsimp={}
- mcsimp['GROUP_NO' ]='LD'+str(i)
- mcsimp['RESULTAT' ]=resuth
- mcsimp['TOUT_ORDRE' ]='OUI'
- mcsimp['NOM_CHAM' ]='TEMP'
- mcsimp['PRECISION' ]=55.E-1
- mcsimp['TOUT_CMP' ]='OUI'
- mcsimp['INTITULE' ]='AZI_'+NUME+'_D'
- mcsimp['OPERATION' ]='MOYENNE'
- mcfact.append( _F(**mcsimp) )
- __rmothd=POST_RELEVE_T(ACTION=mcfact)
- IMPR_TABLE(TABLE = __rmothd, )
-#
-#-----------------------------------------------------------------------
-#
-# --- post traitement : POST_RELEVE_T --- azimuts inclines
-# --- champs de contrainte SI, SII ET SIII ----
-#
- mcfact=[]
- for i in range(1,NBAZIM+1,PAS_AZIMUT):
- if i<10 : NUME = '0'+str(i)
- else : NUME = str(i)
- mcsimp={}
- mcsimp['GROUP_NO' ]='LI'+str(i)
- mcsimp['RESULTAT' ]=nomres
- mcsimp['TOUT_ORDRE' ]='OUI'
- mcsimp['NOM_CHAM' ]='SIEF_ELNO_ELGA'
- mcsimp['PRECISION' ]=55.E-1
- mcsimp['TOUT_CMP' ]='OUI'
- mcsimp['REPERE' ]='LOCAL'
- mcsimp['VECT_Y' ]=( 0.0 , 0.0 , 1.0 )
- mcsimp['INTITULE' ]='AZI_'+NUME+'_I-REP_LOC'
- mcsimp['OPERATION' ]='EXTRACTION'
- mcfact.append( _F(**mcsimp) )
- __noposi=POST_RELEVE_T(ACTION=mcfact)
- IMPR_TABLE(TABLE = __noposi, )
-#
-# ---- Pm, Pm+Pb sur les lignes de depouillement ----
-#
- if mc_AFFE_MATERIAU[0]['RCCM']=='OUI':
- mcfact=[]
- for i in range(1,NBAZIM+1,PAS_AZIMUT):
- if i<10 : NUME = '0'+str(i)
- else : NUME = str(i)
- mcsimp={}
- mcsimp['INTITULE' ]='LI'+str(i)
- mcsimp['GROUP_NO' ]='LI'+str(i)
- mcsimp['RESULTAT' ]=nomres
- mcsimp['TOUT_ORDRE' ]='OUI'
- mcsimp['NOM_CHAM' ]='SIEF_ELNO_ELGA'
- mcsimp['PRECISION' ]=55.E-1
- mcsimp['TOUT_CMP' ]='OUI'
- mcsimp['OPERATION' ]='EXTRACTION'
- mcfact.append( _F(**mcsimp) )
- __prelsi=POST_RELEVE_T(ACTION=mcfact)
- __pmpbsi=POST_RCCM(OPTION = 'PM_PB',
- TYPE_RESU_MECA = 'EVOLUTION',
- TYPE_RESU = 'VALE_MAX',
- MATER = MRCCM,
- TRANSITOIRE = _F(TABL_RESU_MECA = __prelsi,),
- TITRE = '-- TRAITEMENT DES AZIMUTS INCLINES --',)
- IMPR_TABLE(TABLE = __pmpbsi, )
-#
-# ---- champs de temperature,si il a ete calcule, sur les lignes de depouillement ----
-#
- if ECHANGE!=None :
- mcfact=[]
- for i in range(1,NBAZIM+1,PAS_AZIMUT):
- if i<10 : NUME = '0'+str(i)
- else : NUME = str(i)
- mcsimp={}
- mcsimp['GROUP_NO' ]='LI'+str(i)
- mcsimp['RESULTAT' ]=resuth
- mcsimp['TOUT_ORDRE' ]='OUI'
- mcsimp['NOM_CHAM' ]='TEMP'
- mcsimp['PRECISION' ]=55.E-1
- mcsimp['TOUT_CMP' ]='OUI'
- mcsimp['INTITULE' ]='AZI_'+NUME+'_I'
- mcsimp['OPERATION' ]='EXTRACTION'
- mcfact.append( _F(**mcsimp) )
- __rthazi=POST_RELEVE_T(ACTION=mcfact)
- IMPR_TABLE(TABLE = __rthazi,
- NOM_PARA = IMPRT3 )
-#
-# ---- parametres caracterisant la distribution de temperature,
-# si elle a ete calculee, dans l epaisseur du ligament ----
-#
- mcfact=[]
- for i in range(1,NBAZIM+1,PAS_AZIMUT):
- if i<10 : NUME = '0'+str(i)
- else : NUME = str(i)
- mcsimp={}
- mcsimp['GROUP_NO' ]='LI'+str(i)
- mcsimp['RESULTAT' ]=resuth
- mcsimp['TOUT_ORDRE' ]='OUI'
- mcsimp['NOM_CHAM' ]='TEMP'
- mcsimp['PRECISION' ]=55.E-1
- mcsimp['TOUT_CMP' ]='OUI'
- mcsimp['INTITULE' ]='AZI_'+NUME+'_I'
- mcsimp['OPERATION' ]='MOYENNE'
- mcfact.append( _F(**mcsimp) )
- __rmothi=POST_RELEVE_T(ACTION=mcfact)
- IMPR_TABLE(TABLE = __rmothi, )
-#
-#-----------------------------------------------------------------------
- elif TYPE_MAILLAGE[:4]=='FISS' :
-#-----------------------------------------------------------------------
-#
- NOMGRO=[]
- NOMGRE=[]
- TABMA8=[]
- NOMMA =[]
- if TYPE_MAILLAGE in ('FISS_COUR_DEB','FISS_LONG_DEB','FISS_AXIS_DEB','FISS_COUR_NONDEB') :
- NBFIS = 1
- NOMGRO.append(('P_FON1' ,'P_FIS1' ),)
- NOMGRE.append(('P_FON2' ,'P_FIS2' ),)
- TABMA8.append('FONDFISS')
- if TYPE_MAILLAGE in ('FISS_COUR_DEB','FISS_LONG_DEB') : FERME=0
- else :
- FERME=1
- NOMMA.append('MAIL_ORI')
- elif TYPE_MAILLAGE in ('FISS_LONG_NONDEB','FISS_AXIS_NONDEB') :
- NBFIS = 2
- NOMGRO.append(('P_FON1' ,'P_FIS1' ),)
- NOMGRE.append(('P_FON2' ,'P_FIS2' ),)
- NOMGRO.append(('PI_FON1','PI_FIS1'),)
- NOMGRE.append(('PI_FON2','PI_FIS2'),)
- TABMA8.append('FOND_SUP')
- TABMA8.append('FOND_INF')
- if TYPE_MAILLAGE=='FISS_LONG_NONDEB' : FERME=0
- else :
- FERME=1
- NOMMA.append('MA_ORI_S')
- NOMMA.append('MA_ORI_I')
-#
- if ECHANGE!=None:
-#
-# ---- champs de temperature en fond de fissure
-# si il a ete calcule, cas 1 fond de fissure ----
-#
- if NBFIS==1:
- __rthfis=POST_RELEVE_T(ACTION=_F(GROUP_NO ='FONDFISS',
- RESULTAT =resuth,
- TOUT_ORDRE ='OUI',
- NOM_CHAM ='TEMP',
- PRECISION =55.E-1,
- TOUT_CMP ='OUI',
- INTITULE ='FONDFISS',
- OPERATION ='EXTRACTION',))
- IMPR_TABLE(TABLE = __rthfis, )
-#
-# ---- champs de temperature en fond de fissure
-# si il a ete calcule, cas 2 fonds de fissure ----
-#
- elif NBFIS==2:
-#
- __rthfis1=POST_RELEVE_T(ACTION=_F(GROUP_NO ='FOND_SUP',
- RESULTAT =resuth,
- TOUT_ORDRE ='OUI',
- NOM_CHAM ='TEMP',
- PRECISION =55.E-1,
- TOUT_CMP ='OUI',
- INTITULE ='FOND_SUP',
- OPERATION ='EXTRACTION',))
- IMPR_TABLE(TABLE = __rthfis1, )
- __rthfis2=POST_RELEVE_T(ACTION=_F(GROUP_NO ='FOND_INF',
- RESULTAT =resuth,
- TOUT_ORDRE ='OUI',
- NOM_CHAM ='TEMP',
- PRECISION =55.E-1,
- TOUT_CMP ='OUI',
- INTITULE ='FOND_INF',
- OPERATION ='EXTRACTION',))
- IMPR_TABLE(TABLE = __rthfis2, )
-#
-# boucle sur le nombre de fond de fissure
-#
- fond3d = [None]*2
- for j in range(NBFIS):
- if FOND_FISS_1!=None : self.DeclareOut('fond3d_0',FOND_FISS_1)
- if FOND_FISS_2!=None : self.DeclareOut('fond3d_1',FOND_FISS_2)
-#
-# --- commande DEFI_FOND_FISS ---
-#
- motscles={}
- if not FERME:
- motscles['FOND_FISS']=_F(GROUP_MA =TABMA8[j],
- GROUP_NO_ORIG=NOMGRO[j][0],
- GROUP_NO_EXTR=NOMGRE[j][0],)
- motscles['VECT_GRNO_ORIG']=NOMGRO[j]
- motscles['VECT_GRNO_EXTR']=NOMGRE[j]
- else:
- if TYPE_MAILLAGE.find('AXIS')!=-1 : grnoorig=NOMGRE[j][0]
-# si AXIS, P_FON1 est remplace par P_FON2 pour
-# fermer le fond de fissure
- else : grnoorig=NOMGRO[j][0]
- motscles['FOND_FERME']=_F(GROUP_MA =TABMA8[j],
- GROUP_NO_ORIG=grnoorig,
- GROUP_MA_ORIG=NOMMA[j],)
- fond3d[j]=DEFI_FOND_FISS( MAILLAGE = MAILLAGE,
- LEVRE_SUP = _F(GROUP_MA='LEVRCORP',),
- LEVRE_INF = _F(GROUP_MA='LEVRTUBU',),**motscles)
- if THETA_3D!=None:
- for tht3d in THETA_3D :
-#
-# --- commande CALC_THETA ---
-#
- __theta = CALC_THETA( MODELE = modele,
- FOND_FISS = fond3d[j],
- THETA_3D = _F( TOUT = 'OUI',
- MODULE = 1.0 ,
- R_INF = tht3d['R_INF'],
- R_SUP = tht3d['R_SUP'], ) )
-#
-# --- commande CALC_G_THETA_T ---
-#
- montit = 'G_THETA AVEC R_INF = '+str(tht3d['R_INF'])+' ET R_SUP = '+str(tht3d['R_SUP'])
- motscles={}
- if COMP_ELAS!=None: motscles['COMP_ELAS']= _F(TOUT = 'OUI',
- RELATION = COMP_ELAS['RELATION'],)
- if COMP_INCR!=None: motscles['COMP_INCR']= _F(RELATION = COMP_INCR['RELATION'],)
- __gtheta = CALC_G_THETA_T( MODELE = modele,
- CHAM_MATER = affmat,
- THETA = __theta,
- RESULTAT = nomres,
- TOUT_ORDRE = 'OUI',
- TITRE = montit,**motscles)
- IMPR_TABLE(TABLE = __gtheta, )
-#
-# recherche du g max
-#
- if OPTION=='CALC_G_MAX' :
- if BORNES!=None:
- mcfact=[]
- for born in BORNES :
- mcfact.append(_F( NUME_ORDRE = born['NUME_ORDRE'] ,
- VALE_MIN = born['VALE_MIN' ] ,
- VALE_MAX = born['VALE_MAX' ] ) )
- __gbil = CALC_G_THETA_T( MODELE = modele,
- CHAM_MATER = affmat,
- THETA = __theta,
- RESULTAT = nomres,
- TOUT_ORDRE = 'OUI',
- COMP_ELAS = _F(TOUT = 'OUI',
- RELATION = COMP_ELAS['RELATION'],),
- TITRE = montit,
- OPTION = OPTION,
- BORNES = mcfact,)
- IMPR_TABLE(TABLE = __gbil, )
-#
-# --- commande CALC_G_LOCAL_T ---
-#
- montit = 'G_LOCAL AVEC R_INF = '+str(tht3d['R_INF'])+' ET R_SUP = '+str(tht3d['R_SUP'])
- motscles={}
- if COMP_ELAS!=None: motscles['COMP_ELAS' ]= _F(TOUT = 'OUI',
- RELATION = COMP_ELAS['RELATION'],)
- if FERME:
- motscles['LISSAGE_THETA']= 'LAGRANGE'
- motscles['LISSAGE_G' ]= 'LAGRANGE'
- __glocal = CALC_G_LOCAL_T( MODELE = modele,
- CHAM_MATER = affmat,
- FOND_FISS = fond3d[j],
- RESULTAT = nomres,
- TOUT_ORDRE = 'OUI',
- R_INF = tht3d['R_INF'],
- R_SUP = tht3d['R_SUP'],
- TITRE = montit,**motscles)
-#
-# recherche du g max local
-#
- if OPTION=='CALC_G_MAX_LOCAL' :
- if BORNES!=None:
- motscles={}
- mcfact=[]
- if FERME:
- motscles['LISSAGE_THETA']= 'LAGRANGE'
- motscles['LISSAGE_G' ]= 'LAGRANGE'
- for born in BORNES :
- mcfact.append(_F( NUME_ORDRE = born['NUME_ORDRE'] ,
- VALE_MIN = born['VALE_MIN' ] ,
- VALE_MAX = born['VALE_MAX' ] ) )
- motscles['BORNES']=mcfact
- __glbil = CALC_G_LOCAL_T( MODELE = modele,
- CHAM_MATER = affmat,
- FOND_FISS = fond3d[j],
- RESULTAT = nomres,
- TOUT_ORDRE = 'OUI',
- COMP_ELAS = _F(TOUT = 'OUI',
- RELATION = COMP_ELAS['RELATION'],),
- TITRE = montit,
- OPTION = 'CALC_G_MAX',
- R_INF = tht3d['R_INF'],
- R_SUP = tht3d['R_SUP'],**motscles)
- IMPR_TABLE(TABLE = __glbil, )
-#
-# --- commande IMPR_RESU ---
-#
- if IMPRESSION!=None:
- mcfresu =[]
- motscles={}
- motsclei={}
- if IMPRESSION['FORMAT'] in ('IDEAS','CASTEM') :
- ncham =[]
- if IMPRESSION['NOM_CHAM']!=None :
- if type(IMPRESSION['NOM_CHAM']) in (types.TupleType,types.ListType) : ncham= IMPRESSION['NOM_CHAM']
- else : ncham=[IMPRESSION['NOM_CHAM'],]
- if len(ncham)==3 : motscles['NOM_CHAM' ]=('DEPL','EQUI_ELNO_SIGM')
- elif (len(ncham)==1) and (ncham[0][:4]!='TEMP') :
- motscles['NOM_CHAM' ]= ncham[0]['NOM_CHAM']
- elif (len(ncham)==2) and (ncham[0][:4]!='TEMP') and (ncham[1][:4]!='TEMP') :
- motscles['NOM_CHAM' ]=(ncham[0]['NOM_CHAM'],ncham[1]['NOM_CHAM'])
- elif (len(ncham)==2) and (ncham[0][:4]=='TEMP') :
- motscles['NOM_CHAM' ]= ncham[1]['NOM_CHAM']
- elif (len(ncham)==2) and (ncham[1][:4]=='TEMP') :
- motscles['NOM_CHAM' ]= ncham[0]['NOM_CHAM']
- if IMPRESSION['TOUT_ORDRE']!=None :
- motscles['TOUT_ORDRE']= IMPRESSION['TOUT_ORDRE']
- elif IMPRESSION['NUME_ORDRE']!=None :
- motscles['NUME_ORDRE']= IMPRESSION['NUME_ORDRE']
- elif IMPRESSION['INST']!=None :
- motscles['INST' ]= IMPRESSION['INST']
- if IMPRESSION['FORMAT']=='IDEAS' :
- motsclei['VERSION' ]= IMPRESSION['VERSION']
- if IMPRESSION['FORMAT']=='CASTEM' :
- motsclei['NIVE_GIBI' ]= IMPRESSION['NIVE_GIBI']
- mcfresu.append(_F(MAILLAGE=MAILLAGE,RESULTAT=nomres,**motscles))
- if ECHANGE!=None:
- motscles={}
- if IMPRESSION['FORMAT'] in ('IDEAS','CASTEM') :
- if len(ncham)==3 : motscles['NOM_CHAM' ]=('TEMP',)
- elif (len(ncham)==1) and (ncham[0][:4]=='TEMP') :
- motscles['NOM_CHAM' ]= ncham[0]['NOM_CHAM']
- elif (len(ncham)==2) and (ncham[0][:4]=='TEMP') :
- motscles['NOM_CHAM' ]= ncham[0]['NOM_CHAM']
- elif (len(ncham)==2) and (ncham[1][:4]=='TEMP') :
- motscles['NOM_CHAM' ]= ncham[1]['NOM_CHAM']
- if IMPRESSION['TOUT_ORDRE']!=None :
- motscles['TOUT_ORDRE']= IMPRESSION['TOUT_ORDRE']
- elif IMPRESSION['NUME_ORDRE']!=None :
- motscles['NUME_ORDRE']= IMPRESSION['NUME_ORDRE']
- elif IMPRESSION['INST']!=None :
- motscles['INST' ]= IMPRESSION['INST']
- if IMPRESSION['FORMAT']=='IDEAS' :
- motsclei['VERSION' ]= IMPRESSION['VERSION']
- if IMPRESSION['FORMAT']=='CASTEM' :
- motsclei['NIVE_GIBI' ]= IMPRESSION['NIVE_GIBI']
- mcfresu.append(_F(RESULTAT=nomres,**motscles))
- IMPR_RESU( MODELE = modele,
- RESU = mcfresu,
- FORMAT=IMPRESSION['FORMAT'],**motsclei)
-#
- return ier
+++ /dev/null
-#@ MODIF macr_aspic_mail_ops Macro DATE 19/09/2005 AUTEUR DURAND C.DURAND
-# -*- coding: iso-8859-1 -*-
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-
-
-
-from math import sqrt,cos,sin,pi,pow,tan
-
-# Ecriture du fichier GIBI principal (dgib) - ASPID0
-def write_file_dgib_ASPID0(nomFichierDATG,UNITD, EPT1, DET1, D1, D2, EPT2, DET2, ZMAX, H,
- ALPHA, JEU, EPC, DEC, XMAX, TYPMAI, THETA, TYPELE,
- ITYPSO, DPENE, NIVMAG, loc_datg) :
-
- import aster
-# Ouverture du fichier d'entrée de commandes
- fdgib=open(nomFichierDATG,'w')
- POIVIR = ' ; \n'
- texte='****************************************************************\n'
- texte=texte+'opti echo 0 ; \n'
- texte=texte+'epT1 = '+str(EPT1) +POIVIR
- texte=texte+'DeT1 = '+str(DET1) +POIVIR
- texte=texte+'d1 = '+str(D1) +POIVIR
- texte=texte+'d2 = '+str(D2) +POIVIR
- texte=texte+'epT2 = '+str(EPT2) +POIVIR
- texte=texte+'DeT2 = '+str(DET2) +POIVIR
- texte=texte+'Zmax = '+str(ZMAX) +POIVIR
- texte=texte+'type_s = '+str(ITYPSO) +POIVIR
- texte=texte+'d_pene = '+str(DPENE) +POIVIR
- texte=texte+'h = '+str(H) +POIVIR
- texte=texte+'angl_s = '+str(ALPHA) +POIVIR
- texte=texte+'jeu = '+str(JEU) +POIVIR
- texte=texte+'epC = '+str(EPC) +POIVIR
- texte=texte+'DeC = '+str(DEC) +POIVIR
- texte=texte+'Xmax = '+str(XMAX) +POIVIR
- texte=texte+'typmai = MOT '+TYPMAI +POIVIR
- texte=texte+'theta = '+str(THETA) +POIVIR
- texte=texte+'typele = MOT '+TYPELE +POIVIR
- texte=texte+'typ_eque = MOT '+'SAINE' +POIVIR
- texte=texte+'nivmag = '+str(NIVMAG) +POIVIR
- texte=texte+'* \n'
- texte=texte+'opti donn '
- texte=texte+"'"+loc_datg+'aspic.datg'+"';\n"
- aster.affiche('MESSAGE',texte)
- fdgib.write(texte)
- fdgib.close()
-
-# Ecriture du fichier GIBI principal (dgib) - ASPID1
-def write_file_dgib_ASPID1(nomFichierDATG,UNITD, EPT1, DET1, D1, D2, EPT2, DET2, ZMAX, H,
- ALPHA, JEU, EPC, DEC, XMAX, TYPMAI,THETA,
- A,C,EPS, RC0, NS,NC,NT,POSI, NDT,FETIRF,FETIRP,
- TFISS,ZETA,ITYPSO,DPENE, NIVMAG, loc_datg) :
-
- import aster
-# Ouverture du fichier d'entrée de commandes
- fdgib=open(nomFichierDATG,'w')
- POIVIR = ' ; \n'
- texte='****************************************************************\n'
- texte=texte+'opti echo 0 ; \n'
- texte=texte+'epT1 = '+str(EPT1) +POIVIR
- texte=texte+'DeT1 = '+str(DET1) +POIVIR
- texte=texte+'d1 = '+str(D1) +POIVIR
- texte=texte+'d2 = '+str(D2) +POIVIR
- texte=texte+'epT2 = '+str(EPT2) +POIVIR
- texte=texte+'DeT2 = '+str(DET2) +POIVIR
- texte=texte+'Zmax = '+str(ZMAX) +POIVIR
- texte=texte+'type_s = '+str(ITYPSO) +POIVIR
- texte=texte+'d_pene = '+str(DPENE) +POIVIR
- texte=texte+'h = '+str(H) +POIVIR
- texte=texte+'angl_s = '+str(ALPHA) +POIVIR
- texte=texte+'jeu = '+str(JEU) +POIVIR
- texte=texte+'epC = '+str(EPC) +POIVIR
- texte=texte+'DeC = '+str(DEC) +POIVIR
- texte=texte+'Xmax = '+str(XMAX) +POIVIR
- texte=texte+'typmai = MOT '+TYPMAI +POIVIR
- texte=texte+'theta = '+str(THETA) +POIVIR
- texte=texte+'a = '+str(A) +POIVIR
- texte=texte+'c = '+str(C) +POIVIR
- texte=texte+'zeta = '+str(ZETA) +POIVIR
- texte=texte+'eps = '+str(EPS) +POIVIR
- texte=texte+'rc0 = '+str(RC0) +POIVIR
- texte=texte+'ns = '+str(NS) +POIVIR
- texte=texte+'nc = '+str(NC) +POIVIR
- texte=texte+'nt = '+str(NT) +POIVIR
- texte=texte+'dir_fiss = MOT '+POSI +POIVIR
- texte=texte+'pos_fiss = MOT '+TFISS +POIVIR
- texte=texte+'ndt = '+str(NDT) +POIVIR
- texte=texte+'f_etir_f = '+str(FETIRF) +POIVIR
- texte=texte+'f_etir_p = '+str(FETIRP) +POIVIR
- texte=texte+'typ_eque = MOT '+'FISS_LON' +POIVIR
- texte=texte+'nivmag = '+str(NIVMAG) +POIVIR
- texte=texte+'* \n'
- texte=texte+'opti donn '
- texte=texte+"'"+loc_datg+'aspic_v2.datg'+"';\n"
- aster.affiche('MESSAGE',texte)
- fdgib.write(texte)
- fdgib.close()
-
-# Ecriture du fichier GIBI principal (dgib) - ASPID2
-def write_file_dgib_ASPID2(nomFichierDATG,UNITD, EPT1, DET1, D1, D2, EPT2, DET2, ZMAX,
- H, ALPHA, JEU, EPC, DEC, XMAX, TYPMAI,
- THETA, A, C, EPS, RC0, RC1, RC2, RC3,
- ALP,BETA, NS, NC, NT, POSI ,NDT,NSDT,TFISS,
- ZETA,ITYPSO,DPENE, NIVMAG, loc_datg) :
-#
- import aster
- CALPHA = cos(ALPHA*pi/180.)
- SALPHA = sin(ALPHA*pi/180.)
- CTHETA = cos(THETA*pi/180.)
- STHETA = sin(THETA*pi/180.)
-#
- AOLD = A
-#
- if (ITYPSO == 1) :
-# PIQUAGE TYPE 1
- if (POSI == 'DROIT') :
-# PIQUAGE DROIT
- if (TFISS == 'DEB_INT') :
-# POSITION INTERNE
- SGAMMA = STHETA * (DET1/2.0)/( (DEC/2.0) -EPC)
- SGAMME = STHETA * (DET1/2.0)/( (DEC/2.0) )
- RAPPA = sqrt(1.0 - pow(SGAMMA,2))
- RAPPE = sqrt(1.0 - pow(SGAMME,2))
- AP = A - (1.0 - RAPPA)*A
- RAPP = (AP/EPC*RAPPE) + (1.0-(AP/EPC))*RAPPA
- XA = (DET1/2.0) * CTHETA
- YA = (DET1/2.0) * STHETA
- ZA = ((DEC/2.0) -EPC) * sqrt(1.0 - pow(SGAMMA,2))
- ZA0 = (DEC/2.0) - EPC
- XA0 = DET1/2.0
- XN0 = XA0
- YN0 = 0.0
- ZN0 = ZA0 + A
- XN = XN0 * CTHETA
- YN = XN0 * STHETA
- SGAMN = YN / ZN0
- ZN = ZN0 * sqrt(1.0 - (SGAMN*SGAMN))
- D0N0 = sqrt( pow((XA0 - XN0),2) + pow((ZA0 - ZN0),2) )
- DN = sqrt( pow((XA - XN),2) + pow((YA - YN),2) + pow((ZA - ZN),2) )
- RAPP = D0N0 / DN
- ECART = (1.0 - RAPP) * D0N0
- A = A - ECART
- elif (TFISS == 'DEB_EXT') :
-# POSITION EXTERNE
- SGAMME = STHETA * (DET1/2.0)/ (DEC/2.0)
- RAPPE = sqrt(1.0 - pow(SGAMME,2))
- A = A -(1.0 - RAPPE)*A
-
- elif (POSI == 'INCLINE') :
-# PIQUAGE INCLINE
- SGAMMA = STHETA * (DET1/2.0)/ ( (DEC/2.0) -EPC)
- XA = (DET1/2.0) * CTHETA
- YA = (DET1/2.0) * STHETA
- ZA = ((DEC/2.0) - EPC) * sqrt(1.0 - pow(SGAMMA,2))
- ZA0 = (DEC/2.0) - EPC
- ZD0 = DEC/2.0
- XA0 = DET1/2.0
- XD0 = XA0 + (tan(ALPHA*pi/180.0) * EPC)
- A0D0 = sqrt( pow((ZD0 - ZA0),2) + pow((XD0 - XA0),2) )
- EPSIL = STHETA * tan(ALPHA*pi/180.0)
- PHI = (EPSIL * ZA) - YA
- DELTA = pow(PHI,2) - ((1 + pow(EPSIL,2))*(pow(PHI,2) - (pow((DEC/2.0),2)*pow(EPSIL,2))))
- if (STHETA > 0) :
- YD = ( sqrt(DELTA) - PHI) / (1.0 + pow(EPSIL,2))
- else :
- YD = ( -1.0*sqrt(DELTA) - PHI) / (1.0 + pow(EPSIL,2))
-
- ZD = sqrt(pow((DEC/2.0),2) - pow(YD,2))
-
- if ( (abs(THETA - 0.0) < 1.e-3) or ((abs(THETA - 180.0)) < 1.e-3) ) :
- XD = CTHETA * XD0
- else :
- XD = YD / tan(THETA*pi/180.0)
-
- AD = sqrt( pow((XA - XD),2) + pow((YA - YD),2) + pow((ZA - ZD),2) )
- RAPP = A0D0 / AD
-
- if (TFISS == 'DEB_EXT') :
- XN0 = XD0 - A*SALPHA
- YN0 = 0.0
- ZN0 = ZD0 - A*CALPHA
- XN = XN0 * CTHETA
- YN = XN0 * STHETA
- DNXY = sqrt(pow(XD,2) + pow(YD,2)) - sqrt(pow(XN,2) + pow(YN,2))
- DNXY0 = XD0 - XN0
- RAPP = DNXY/DNXY0
- # Correction necessaire dans le cas theta et/ou alpha grand
- if (RAPP < 0.5) :
- DXY = sqrt(pow(XD,2) + pow(YD,2) )
- XN = XN * DXY/XD0
- YN = YN * DXY/XD0
- SGAMN = YN / ZN0
- ZN = ZN0 * sqrt(1.0 - pow(SGAMN,2))
- D0N0 = sqrt( pow((XD0 - XN0),2) + pow((ZD0 - ZN0),2) )
- DN = sqrt( pow((XD - XN),2) + pow((YD - YN),2) + pow((ZD - ZN),2) )
- RAPP = D0N0 / DN
- ECART = (RAPP - 1.0) * D0N0
- A = A + ECART
-
- if (TFISS == 'DEB_INT') :
- XN0 = XA0 + A*SALPHA
- YN0 = 0.0
- ZN0 = ZA0 + A*CALPHA
- XN = XN0 * CTHETA
- YN = XN0 * STHETA
- SGAMN = YN / ZN0
- ZN = ZN0 * sqrt(1.0 - pow(SGAMN,2))
- D0N0 = sqrt( pow((XA0 - XN0),2) + pow((ZA0 - ZN0),2) )
- DN = sqrt( pow((XA - XN),2) + pow((YA - YN),2) + pow((ZA - ZN),2) )
- RAPP = D0N0 / DN
- ECART = (RAPP - 1.0) * D0N0
- A = A + ECART
-
- elif (ITYPSO == 2) :
-# PIQUAGE TYPE 2
- if (POSI == 'DROIT') :
-# PIQUAGE DROIT
- SGAMMI = STHETA * ((DET1/2.0) - EPT1)/(DEC/2.0)
- XI = ((DET1/2.0) - EPT1) * CTHETA
- YI = ((DET1/2.0) - EPT1) * STHETA
- ZI = (DEC/2.0) * sqrt(1.0 - pow(SGAMMI,2))
- XI0 = (DET1/2.0) -EPT1
- YI0 = 0.0
- ZI0 = (DEC/2.0)
-
- SGAMMA = STHETA * (DET1/2.0)/((DEC/2.0) -EPC)
- YA = (DET1/2.0) * STHETA
- ZA = ((DEC/2.0) - EPC) * sqrt(1.0 - pow(SGAMMA,2))
- TGALP = H / EPC
- EPSIL = STHETA * TGALP
- PHI = (EPSIL * ZA) - YA
- DELTA = pow(PHI,2) - (1.0 + pow(EPSIL,2))*(pow(PHI,2) - pow((DEC/2.0),2)*pow(EPSIL,2))
- if (STHETA > 0) :
- YD = (sqrt(DELTA) - PHI) / (1.0 + pow(EPSIL,2))
- else :
- YD = (-1.0*sqrt(DELTA) - PHI) / (1.0 + pow(EPSIL,2))
-
- ZD = sqrt( pow((DEC/2.0),2) - pow(YD,2) )
- if ( (abs(THETA - 0.0) < 1.0e-3) or
- (abs(THETA - 180.0) < 1.0e-3) or
- (abs(THETA + 180.0) < 1.0e-3) or
- (abs(THETA + 90.0) < 1.0e-3) or
- (abs(THETA - 90.0) < 1.0e-3) ) :
- XD = CTHETA * ((DET1/2.0) + H)
- else :
- XD = YD / (tan(THETA*pi/180.0))
-
- XD0 = (DET1/2.0) + H
- YD0 = 0.0
- ZD0 = (DEC/2.0)
-
- if (TFISS == 'DEB_EXT') :
- XN0 = XD0 - A
- YN0 = 0.0
- ZN0 = ZI0
- XN = XN0 * CTHETA
- YN = XN0 * STHETA
- DZID = abs(ZI - ZD)
- DXYID = sqrt( pow((XD - XI),2) + pow((YD - YI),2) )
- DXYIN = sqrt( pow((XN - XI),2) + pow((YN - YI),2) )
- DZIN = (DXYIN * DZID) / DXYID
- ZN = ZI - DZIN
- D0N0 = sqrt( pow((XD0 - XN0),2) + pow((ZD0 - ZN0),2) )
- DN = sqrt( pow((XD - XN),2) + pow((YD - YN),2) + pow((ZD - ZN),2) )
- RAPP = D0N0 / DN
- ECART = DN - D0N0
- A = A - ECART
-
- if (TFISS == 'DEB_INT') :
- XN0 = XI0 + A
- YN0 = 0.0
- ZN0 = ZI0
- XN = XN0 * CTHETA
- YN = XN0 * STHETA
- SGAMN = YN / ZN0
- ZN = ZN0 * sqrt(1.0 - pow(SGAMN,2))
- I0N0 = sqrt( pow((XI0 - XN0),2) + pow((ZI0 - ZN0),2) )
- IN = sqrt( pow((XI - XN),2) + pow((YI - YN),2) + pow((ZI - ZN),2) )
- RAPP = I0N0 / IN
- ECART = I0N0 * ( 1.0 - RAPP )
- A = A - ECART
-
- elif (POSI == 'INCLINE') :
-# PIQUAGE INCLINE
- TGALPHA = SALPHA/CALPHA
- REPB = (DEC/2.0) + JEU + (EPT1*TGALPHA)
- SGAMB = (STHETA * DET1/2.0 ) / REPB
- CGAMB = sqrt(1.0 - pow(SGAMB,2))
- XB = (DET1/2.0) * CTHETA
- YB = (DET1/2.0) * STHETA
- ZB = ( (DEC/2.0) + JEU + (EPT1*TGALPHA) ) * CGAMB
- XB0 = (DET1/2.0)
- YB0 = 0.0
- ZB0 = (DEC/2.0) + JEU + (EPT1*TGALPHA)
-#
- RIT1 = (DET1/2.0) - EPT1
- REPG = (DEC/2.0) + JEU
- SGAMG = ((STHETA ) * RIT1) / REPG
- CGAMG = sqrt(1.0 - pow(SGAMG,2))
- XG = RIT1 * CTHETA
- YG = RIT1 * STHETA
- ZG = ((DEC/2.0) + JEU) * CGAMG
- XG0 = RIT1
- YG0 = 0.0
- ZG0 = (DEC/2.0) + JEU
-#
- if (TFISS == 'DEB_INT') :
- XN0 = XG0 + A*CALPHA
- YN0 = 0.0
- ZN0 = ZG0 + A*SALPHA
- XN = XN0 * CTHETA
- YN = XN0 * STHETA
- SGAMN = YN / ZN0
- ZN = ZN0 * sqrt(1.0 - pow(SGAMN,2))
- G0N0 = sqrt( pow((XG0 - XN0),2) + pow((ZG0 - ZN0),2) )
- GN = sqrt( pow((XG - XN),2) + pow((YG - YN),2) + pow((ZG - ZN),2) )
- RAPP = G0N0 / GN
- ECART = (RAPP - 1.0) * G0N0
- A = A + ECART
-
- if (TFISS == 'DEB_EXT') :
- XN0 = XB0 - A*CALPHA
- YN0 = 0.0
- ZN0 = ZB0 - A*SALPHA
- XN = XN0 * CTHETA
- YN = XN0 * STHETA
- SGAMN = YN / ZN0
- ZN = ZN0 * sqrt(1.0 - pow(SGAMN,2))
- B0N0 = sqrt( pow((XB0 - XN0),2) + pow((ZB0 - ZN0),2) )
- BN = sqrt( pow((XB - XN),2) + pow((YB - YN),2) + pow((ZB - ZN),2) )
- RAPP = B0N0 / BN
- ECART = (RAPP - 1.0) * B0N0
- A = A + ECART
-
- message= ' <MACR_ASPIC_MAIL> CORRECTION PROFONDEUR DEFAUT \n'
- message=message+ ' PROFONDEUR SUR PIQUAGE : %.2f \n'%AOLD
- message=message+ ' PROFONDEUR SUR EQUERRE : %.2f \n'%A
- aster.affiche('MESSAGE',message)
-
-# Ouverture du fichier d'entrée de commandes
-
- fdgib=open(nomFichierDATG,'w')
- POIVIR = ' ; \n'
- texte='****************************************************************\n'
- texte=texte+'opti echo 0 ; \n'
- texte=texte+'epT1 = '+str(EPT1) +POIVIR
- texte=texte+'DeT1 = '+str(DET1) +POIVIR
- texte=texte+'d1 = '+str(D1) +POIVIR
- texte=texte+'d2 = '+str(D2) +POIVIR
- texte=texte+'epT2 = '+str(EPT2) +POIVIR
- texte=texte+'DeT2 = '+str(DET2) +POIVIR
- texte=texte+'Zmax = '+str(ZMAX) +POIVIR
- texte=texte+'type_s = '+str(ITYPSO) +POIVIR
- texte=texte+'d_pene = '+str(DPENE) +POIVIR
- texte=texte+'h = '+str(H) +POIVIR
- texte=texte+'angl_s = '+str(ALPHA) +POIVIR
- texte=texte+'jeu = '+str(JEU) +POIVIR
- texte=texte+'epC = '+str(EPC) +POIVIR
- texte=texte+'DeC = '+str(DEC) +POIVIR
- texte=texte+'Xmax = '+str(XMAX) +POIVIR
- texte=texte+'typmai = MOT '+TYPMAI +POIVIR
- texte=texte+'theta = '+str(THETA) +POIVIR
- texte=texte+'a = '+str(A) +POIVIR
- texte=texte+'c = '+str(C) +POIVIR
- texte=texte+'zeta = '+str(ZETA) +POIVIR
- texte=texte+'eps = '+str(EPS) +POIVIR
- texte=texte+'rc0 = '+str(RC0) +POIVIR
- texte=texte+'rc1 = '+str(RC1) +POIVIR
- texte=texte+'rc2 = '+str(RC2) +POIVIR
- texte=texte+'rc3 = '+str(RC3) +POIVIR
- texte=texte+'alpha = '+str(ALP) +POIVIR
- texte=texte+'beta = '+str(BETA) +POIVIR
- texte=texte+'ns = '+str(NS) +POIVIR
- texte=texte+'nc = '+str(NC) +POIVIR
- texte=texte+'nt = '+str(NT) +POIVIR
- texte=texte+'dir_fiss = MOT '+POSI +POIVIR
- texte=texte+'pos_fiss = MOT '+TFISS +POIVIR
- texte=texte+'ndt = '+str(NDT) +POIVIR
- texte=texte+'nsdt = '+str(NSDT) +POIVIR
- texte=texte+'typ_eque = MOT '+'FISS_COU' +POIVIR
- texte=texte+'nivmag = '+str(NIVMAG) +POIVIR
- texte=texte+'* \n'
- texte=texte+'list epc ;\n'
- texte=texte+'opti donn '
- texte=texte+"'"+loc_datg+'aspic.datg'+"';\n"
- aster.affiche('MESSAGE',texte)
- fdgib.write(texte)
- fdgib.close()
-
-def macr_aspic_mail_ops(self,EXEC_MAILLAGE,TYPE_ELEM,RAFF_MAIL,TUBULURE,
- SOUDURE,CORPS,FISS_SOUDURE,IMPRESSION,INFO,
- **args):
- """
- Ecriture de la macro MACR_ASPIC_MAIL
- """
- from Accas import _F
- import types
- import aster
- from Utilitai.Utmess import UTMESS
- ier=0
-
-# On importe les definitions des commandes a utiliser dans la macro
- EXEC_LOGICIEL =self.get_cmd('EXEC_LOGICIEL')
- PRE_GIBI =self.get_cmd('PRE_GIBI')
- LIRE_MAILLAGE =self.get_cmd('LIRE_MAILLAGE')
- DEFI_GROUP =self.get_cmd('DEFI_GROUP')
- MODI_MAILLAGE =self.get_cmd('MODI_MAILLAGE')
- AFFE_MODELE =self.get_cmd('AFFE_MODELE')
- CREA_MAILLAGE =self.get_cmd('CREA_MAILLAGE')
- IMPR_RESU =self.get_cmd('IMPR_RESU')
-
-# La macro compte pour 1 dans la numerotation des commandes
- self.set_icmd(1)
-
- TYPELE = TYPE_ELEM
- NIVMAG = EXEC_MAILLAGE['NIVE_GIBI']
-#
-# --- raffinement maillage ---
-#
- TYPMAI = RAFF_MAIL
- GROS = (TYPMAI=='GROS')
- if GROS : NBAZIT = 40
- else : NBAZIT = 48
-#
-# --- caracteristiques de la tubulure ---
-#
- EPT1 = TUBULURE['E_BASE' ]
- DET1 = TUBULURE['DEXT_BASE']
- D1 = TUBULURE['L_BASE' ]
- D2 = TUBULURE['L_CHANF' ]
- EPT2 = TUBULURE['E_TUBU' ]
- DET2 = TUBULURE['DEXT_TUBU']
- ZMAX = TUBULURE['Z_MAX' ]
- TYPSOU= TUBULURE['TYPE' ]
- DPENE = TUBULURE['L_PENETR' ]
- if TYPSOU=='TYPE_2' and DPENE>0.0 :
- UTMESS('F', "MACR_ASPIC_MAIL", "les piquages penetrants sont autorises uniquement avec les soudures de type 1")
- if TYPSOU=='TYPE_2' :
- ITYPSO = 2
- else :
- ITYPSO = 1
-#
-# --- caracteristiques de la soudure ---
-#
- H = SOUDURE['H_SOUD' ]
- ALPHA = SOUDURE['ANGL_SOUD']
- JEU = SOUDURE['JEU_SOUD' ]
-#
-# --- caracteristiques du corps ---
-#
- EPC = CORPS ['E_CORP' ]
- DEC = CORPS ['DEXT_CORP']
- XMAX = CORPS ['X_MAX' ]
- EPSI = 1.E-03
- RMB = ( DET1 - EPT1 ) / 2.0
- VAL1 = 1.5 * sqrt( RMB**3 / EPT1 )
- VAL3 = 3.0 * sqrt( RMB * EPT1 )
- RMT = ( DET2 - EPT2 ) / 2.0
- VAL2 = 1.5 * sqrt( RMT**3 / EPT2 )
- VAL4 = 3.0 * sqrt( RMT * EPT2 )
- LZMAX = max ( VAL1 , VAL2, VAL3, VAL4 )
- ZMAXC = LZMAX + ( DEC/2.0 ) + D1 + D2
- LOK = ( abs(ZMAX-ZMAXC) <= EPSI * abs(ZMAXC) )
- if not LOK :
- message= ' erreur donnees \n'
- message=message+ ' Z_MAX FOURNIE : %.2f \n'%ZMAX
- message=message+ ' Z_MAX CALCULEE : %.2f \n'%ZMAXC
- UTMESS('F', "MACR_ASPIC_MAIL", message)
- RMC = ( DEC - EPC ) / 2.0
- VAL1 = 1.5 * sqrt( RMC**3 / EPC )
- VAL2 = 3.0 * sqrt( RMC * EPC )
- LXMAX = max( VAL1 , VAL2 )
- XMAXC = LXMAX + ( DET1 / 2.0 )
- LOK = ( abs(XMAX-XMAXC) <= EPSI * abs(XMAXC) )
- if not LOK :
- message= ' erreur donnees \n'
- message=message+ ' Z_MAX FOURNIE : %.2f \n'%ZMAX
- message=message+ ' Z_MAX CALCULEE : %.2f \n'%ZMAXC
- UTMESS('F', "MACR_ASPIC_MAIL", message)
- message= ' MACR_ASPIC_MAIL / X_MAX CALCULEE : %.2f \n'%XMAX
- message=message+ ' MACR_ASPIC_MAIL / Z_MAX CALCULEE : %.2f \n'%XMAXC
- aster.affiche('MESSAGE',message)
-#
-# --- caracteristiques de la fissure ---
-#
- SAIN = 0
- FISLON = 0
- FISCOU = 0
- THETA = 0.0
- TFISS = None
- if FISS_SOUDURE==None :
- SAIN = 1
- else :
- if FISS_SOUDURE['TYPE']=='LONGUE' : FISLON = 1
- elif FISS_SOUDURE['TYPE']=='COURTE' : FISCOU = 1
- THETA = FISS_SOUDURE['AZIMUT' ]
- EPS = FISS_SOUDURE['ANGL_OUVERTURE']
- AXIS = FISS_SOUDURE['AXIS' ]
- POSI = FISS_SOUDURE['POSITION' ]
- TFISS = FISS_SOUDURE['FISSURE' ]
- A = FISS_SOUDURE['PROFONDEUR' ]
- if FISS_SOUDURE['LONGUEUR' ]!=None :
- C = FISS_SOUDURE['LONGUEUR' ]
- N1 = 1
- else : N1 = 0
- if (TFISS=='DEB_INT') and (POSI=='INCLINE') and (DPENE>0.0) and (JEU>0.0) :
- message= ' erreur donnees \n'
- message=message+ ' dans le cas de fissures \n'
- message=message+ ' inclinees debouchant en peau interne avec \n'
- message=message+ ' piquage penetrant le jeu doit etre nul \n'
- UTMESS('F', "MACR_ASPIC_MAIL", message)
- ZETA = 0.5
- if TFISS not in ('DEB_INT','DEB_EXT') :
- if FISS_SOUDURE['LIGA_INT']==None :
- message= ' erreur donnees \n'
- message=message+ ' dans le cas de fissures internes\n'
- message=message+ ' (NON_DEB) le ligament inferieur est obligatoire \n'
- UTMESS('F', "MACR_ASPIC_MAIL", message)
- LIGA = FISS_SOUDURE['LIGA_INT']
- if POSI=='DROIT' :
- if ITYPSO==1 : ZETA = (A+LIGA)/(EPC+H)
- else : ZETA = (A+LIGA)/(EPT1+H)
- else :
- if ITYPSO==1 : ZETA = (A+LIGA)*cos(ALPHA*pi/180.0)/EPC
- else : ZETA = (A+LIGA)*cos(ALPHA*pi/180.0)/EPT1
- if ZETA < 0.1 :
- UTMESS('F', "MACR_ASPIC_MAIL", "dans le cas de fissures internes (NON_DEB) le ligament est trop petit ")
- if ZETA > 0.9 :
- UTMESS('F', "MACR_ASPIC_MAIL", "dans le cas de fissures internes (NON_DEB) le ligament est trop grand ")
- if LIGA < 0.1*EPC :
- UTMESS('F', "MACR_ASPIC_MAIL", "dans le cas de fissures internes (NON_DEB) le ligament est trop petit ")
- if (LIGA + 2.0*A) > 0.9*EPC :
- UTMESS('F', "MACR_ASPIC_MAIL", "dans le cas de fissures internes (NON_DEB) le ligament est trop grand ")
- if N1==0 :
- if FISCOU :
- UTMESS('F', "MACR_ASPIC_MAIL", "dans le cas de fissures courte il faut preciser la longueur")
- if AXIS=='NON' :
- UTMESS('F', "MACR_ASPIC_MAIL", "dans le cas de la fissure longue il faut preciser la longueur ou axis=oui ")
- C = 0.0
- else :
- if AXIS=='OUI' : UTMESS('A', "MACR_ASPIC_MAIL", "fissure axisymetrique : le mot clef <LONGUEUR> ne doit pas etre renseigne")
- C = 0.5 * C
- LEQU=2.*(pi*(DEC-EPC)-DET1+2.*EPT1)
-#
-# LPIQ est une valeur qui depend theoriquement de la fissure. la valeur
-# ci-dessous est approchee car elle ne sert qu'a calculer les facteurs d'etirement
-#
- LPIQ=pi*(DET1)
- if AXIS=='OUI' : C=100.0*LPIQ
- RAPL=LEQU/LPIQ
- if FISCOU :
- RAP=A/C
- CAS1=RAP<0.3499
- CAS3=RAP>0.4999
- CAS2= not (CAS1 or CAS3)
- if CAS1 : ALP=0.8
- if CAS2 : ALP=0.4
- if CAS3 : ALP=0.0
- BETA=1.0
- if GROS and not CAS1 :
- NDT=1
- NSDT=2
- else :
- NDT=2
- NSDT=4
-#
- if FISLON :
- if GROS :
- NDT=2
- FETIRF=30.*RAPL
- FETIRP=60.*RAPL
- else :
- NDT=3
- FETIRF=15.*RAPL
- FETIRP=30.*RAPL
-#
- RC0 = FISS_SOUDURE['RAYON_TORE']
- if (FISCOU and RC0==None) :
- if GROS : RC0=0.12
- else : RC0=0.10
- if CAS1 : RC0=0.08
- RC0=RC0*A
- if (FISLON and RC0==None) : RC0=A/(NDT+1)
-#
- RC1 = FISS_SOUDURE['COEF_MULT_RC1']
- if (FISCOU and RC1==None) :
- if GROS : RC1=1.2
- else : RC1=1.0
-#
- RC2 = FISS_SOUDURE['COEF_MULT_RC2']
- if (FISCOU and RC2==None) :
- if GROS : RC2=1.4
- else : RC2=1.2
-#
- RC3 = FISS_SOUDURE['COEF_MULT_RC3']
- if (FISCOU and RC3==None) :
- if GROS :
- if CAS1 : RC3=2.5
- else : RC3=1.0 # valeur non utilisee
- else :
- if CAS3 : RC3=2.2
- else : RC3=2.0
-#
- NT = FISS_SOUDURE['NB_TRANCHE']
- if (FISCOU and NT==None) :
- if GROS : NT = 8
- else : NT = 16
- if CAS1 : NT = NT*2
- if (FISLON and NT==None) : NT=0
-#
- NS = FISS_SOUDURE['NB_SECTEUR']
- if (FISCOU and NS==None) :
- if GROS : NS = 2
- else : NS = 4
- if (FISLON and NS==None) :
- if GROS : NS = 2
- else : NS = 4
-#
- NC = FISS_SOUDURE['NB_COURONNE']
- if (FISCOU and NC==None) :
- if GROS : NC = 3
- else : NC = 4
- if (FISLON and NC==None) :
- if GROS : NC = 3
- else : NC = 4
-#
- loc_gibi=aster.repout()
- logiel = EXEC_MAILLAGE['LOGICIEL' ]
- UNITD = EXEC_MAILLAGE['UNITE_DATG']
- UNITS = EXEC_MAILLAGE['UNITE_MGIB']
- if logiel=='GIBI98' : logiel = loc_gibi+'gibi98'
- elif logiel=='GIBI2000': logiel = loc_gibi+'gibi2000'
- else :
- UTMESS('F', "MACR_ASPIC_MAIL", "seuls gibi98 et gibi2000 sont appelables ")
-#
-# --- ecriture sur le fichier .datg de la procedure ---
-#
-# Nom du fichier de commandes pour GIBI
- nomFichierDATG = 'fort.'+str(UNITD)
-# Nom du fichier de maillage GIBI
- nomFichierGIBI = 'fort.'+str(UNITS)
- loc_datg = aster.repdex()
- if SAIN : write_file_dgib_ASPID0(nomFichierDATG,UNITD, EPT1, DET1, D1, D2, EPT2, DET2, ZMAX, H,
- ALPHA, JEU, EPC, DEC, XMAX, TYPMAI, THETA, TYPELE,
- ITYPSO, DPENE, NIVMAG,loc_datg)
- if FISLON : write_file_dgib_ASPID1(nomFichierDATG,UNITD, EPT1, DET1, D1, D2, EPT2, DET2, ZMAX, H,
- ALPHA, JEU, EPC, DEC, XMAX, TYPMAI,THETA,
- A,C,EPS, RC0,NS,NC,NT,POSI, NDT,FETIRF,FETIRP,
- TFISS,ZETA,ITYPSO,DPENE, NIVMAG,loc_datg)
- if FISCOU : write_file_dgib_ASPID2(nomFichierDATG,UNITD, EPT1, DET1, D1, D2, EPT2, DET2, ZMAX,
- H, ALPHA, JEU, EPC, DEC, XMAX, TYPMAI,
- THETA, A, C, EPS, RC0, RC1, RC2, RC3,
- ALP,BETA, NS, NC, NT, POSI ,NDT,NSDT,TFISS,
- ZETA,ITYPSO,DPENE, NIVMAG,loc_datg)
-#
- EXEC_LOGICIEL( LOGICIEL = logiel ,
- ARGUMENT = ( _F(NOM_PARA=nomFichierDATG),
- _F(NOM_PARA=nomFichierGIBI), ), )
-#
- PRE_GIBI()
-#
- __MAPROV=LIRE_MAILLAGE(INFO=INFO)
-#
- motscles={}
- motscles['CREA_GROUP_MA']=[]
- l_CREA_GROUP_NO=[]
- if SAIN :
- l_CREA_GROUP_NO.append('S_LAT1')
- l_CREA_GROUP_NO.append('S_LAT2')
- else :
- l_CREA_GROUP_NO.append('S_LAT1_C')
- l_CREA_GROUP_NO.append('S_LAT2_C')
- l_CREA_GROUP_NO.append('S_LAT1_T')
- l_CREA_GROUP_NO.append('S_LAT2_T')
- if (TFISS=='NON_DEB') and (FISS_SOUDURE['TYPE']=='LONGUE') :
- l_CREA_GROUP_NO.append('PFONDINF')
- l_CREA_GROUP_NO.append('PFONDSUP')
- else :
- l_CREA_GROUP_NO.append('PFONDFIS')
- if (TFISS=='NON_DEB') and (FISS_SOUDURE['TYPE']=='COURTE') :
- motscles['CREA_GROUP_MA'].append(_F(GROUP_MA = 'FONDFISS',
- NOM = 'MAIL_ORI',
- POSITION = 'INIT' ))
- if (TFISS[:4]=='DEB_') and (AXIS=='OUI') :
- motscles['CREA_GROUP_MA'].append(_F(GROUP_MA = 'FONDFISS',
- NOM = 'MAIL_ORI',
- POSITION = 'INIT' ))
- if (TFISS=='NON_DEB') and (FISS_SOUDURE['TYPE']=='LONGUE') :
- motscles['CREA_GROUP_MA'].append(_F(GROUP_MA = 'FOND_SUP',
- NOM = 'MA_ORI_S',
- POSITION = 'INIT' ))
- motscles['CREA_GROUP_MA'].append(_F(GROUP_MA = 'FOND_INF',
- NOM = 'MA_ORI_I',
- POSITION = 'INIT' ))
- l_CREA_GROUP_NO.append('S_FOND1')
- l_CREA_GROUP_NO.append('S_FOND2')
- l_CREA_GROUP_NO.append('EQUERRE')
- motscles['CREA_GROUP_NO']=_F(GROUP_MA=l_CREA_GROUP_NO)
-#
- __MAPROV=DEFI_GROUP(reuse =__MAPROV,
- MAILLAGE=__MAPROV,
- **motscles )
-#
- if not SAIN :
- motscles={}
- motscles['CREA_GROUP_NO']=[]
- if not (TFISS=='NON_DEB') :
- motscles['CREA_GROUP_NO'].append(_F(GROUP_MA = 'FONDFISS',))
- if (TFISS=='NON_DEB') and (FISS_SOUDURE['TYPE']=='LONGUE') :
- motscles['CREA_GROUP_NO'].append(_F(GROUP_MA = ('FOND_SUP','FOND_INF',),))
- __MAPROV=DEFI_GROUP(reuse =__MAPROV,
- MAILLAGE=__MAPROV,
- **motscles )
-#
- __MAPROV=MODI_MAILLAGE(reuse =__MAPROV,
- MAILLAGE=__MAPROV,
- EQUE_PIQUA=_F( GROUP_NO = 'EQUERRE' ,
- E_BASE = EPT1 ,
- DEXT_BASE = DET1 ,
- L_BASE = D1 ,
- L_CHANF = D2 ,
- TYPE = TYPSOU,
- H_SOUD = H ,
- ANGL_SOUD = ALPHA ,
- JEU_SOUD = JEU ,
- E_CORP = EPC ,
- DEXT_CORP = DEC ,
- AZIMUT = THETA ,
- RAFF_MAIL = TYPMAI,
- X_MAX = XMAX , )
- )
-#
- __MODELE=AFFE_MODELE( MAILLAGE=__MAPROV,
- AFFE=_F( GROUP_MA = ('EQUERRE','PEAUINT','EXCORP1','EXCORP2','EXTUBU'),
- PHENOMENE = 'MECANIQUE' ,
- MODELISATION = '3D' , )
- )
-#
- motscles={}
- if TFISS=='DEB_INT' :
- motscles['ORIE_PEAU_3D']=_F(GROUP_MA=('PEAUINT','EXCORP1','EXCORP2','EXTUBU','LEVRTUBU','LEVRCORP'),)
- else :
- motscles['ORIE_PEAU_3D']=_F(GROUP_MA=('PEAUINT','EXCORP1','EXCORP2','EXTUBU',),)
- __MAPROV=MODI_MAILLAGE(reuse =__MAPROV,
- MAILLAGE=__MAPROV,
- MODELE =__MODELE,
- **motscles
- )
-#
- if SAIN :
- __MAPROV=DEFI_GROUP(reuse = __MAPROV,
- MAILLAGE = __MAPROV,
- CREA_GROUP_NO = _F(GROUP_MA=('NIDXT','NEDXT','NIIXT','NEIXT')) )
-#
- for i in range(1,NBAZIT+1):
- prec = EPC / 5.0
- __MAPROV=DEFI_GROUP(reuse = __MAPROV,
- MAILLAGE = __MAPROV,
- CREA_GROUP_NO = ( _F( NOM = 'NID'+str(i) ,
- GROUP_NO = 'NIDXT' ,
- NUME_INIT = i ,
- NUME_FIN = i ,),
- _F( NOM = 'NED'+str(i) ,
- GROUP_NO = 'NEDXT' ,
- NUME_INIT = i ,
- NUME_FIN = i ,),
- _F( NOM = 'NII'+str(i) ,
- GROUP_NO = 'NIIXT' ,
- NUME_INIT = i ,
- NUME_FIN = i ,),
- _F( NOM = 'NEI'+str(i) ,
- GROUP_NO = 'NEIXT' ,
- NUME_INIT = i ,
- NUME_FIN = i ,),
- _F( NOM = 'LDN'+str(i) ,
- GROUP_MA = 'LD' +str(i) ,),
- _F( NOM = 'LD' +str(i) ,
- GROUP_NO = 'LDN'+str(i) ,
- OPTION = 'SEGM_DROI_ORDO',
- PRECISION = prec ,
- CRITERE = 'ABSOLU' ,
- GROUP_NO_ORIG = 'NID'+str(i),
- GROUP_NO_EXTR = 'NED'+str(i),),
- _F( NOM = 'LIN'+str(i) ,
- GROUP_MA = 'LI' +str(i) ,),
- _F( NOM = 'LI' +str(i) ,
- GROUP_NO = 'LIN'+str(i) ,
- OPTION = 'SEGM_DROI_ORDO',
- PRECISION = prec ,
- CRITERE = 'ABSOLU' ,
- GROUP_NO_ORIG = 'NII'+str(i),
- GROUP_NO_EXTR = 'NEI'+str(i),),))
-#
-#
-# --- commande CREA_MAILLAGE ---
-#
- self.DeclareOut('nomres',self.sd)
- nomres=CREA_MAILLAGE( MAILLAGE=__MAPROV,
- CREA_POI1 = ( _F( NOM_GROUP_MA = 'P1_CORP ' ,
- GROUP_NO = 'P1_CORP ' , ),
- _F( NOM_GROUP_MA = 'P2_CORP ' ,
- GROUP_NO = 'P2_CORP ' , ),
- _F( NOM_GROUP_MA = 'P_TUBU ' ,
- GROUP_NO = 'P_TUBU ' , ),)
- )
-#
- if IMPRESSION!=None:
- for impr in IMPRESSION :
-#
- motscles={}
- if impr['FORMAT']=='IDEAS' : motscles['VERSION'] =impr['VERSION']
- if impr['FORMAT']=='CASTEM' : motscles['NIVE_GIBI']=impr['NIVE_GIBI']
- if impr['UNITE']!=None : motscles['UNITE'] =impr['UNITE']
- impr_resu = _F( MAILLAGE = nomres,)
-#
- IMPR_RESU( RESU = impr_resu,
- FORMAT = impr['FORMAT'],**motscles )
-#
-#
-# --- Verification profondeur fissure (courte débouchante) ---
-#
- if FISCOU and not (TFISS=='NON_DEB') :
- nomres=DEFI_GROUP( reuse=nomres,
- MAILLAGE=nomres,
- CREA_GROUP_NO=(_F( GROUP_MA = 'LEVRTUBU',),
- _F( NOM = 'FONDORDO',
- GROUP_MA = 'FONDFISS',
- OPTION = 'NOEUD_ORDO',),),);
-
- nommail=nomres.nom
- coord =aster.getvectjev(nommail.ljust(8)+'.COORDO .VALE')
- collgrno=aster.getcolljev(nommail.ljust(8)+'.GROUPENO')
-
- grfo=collgrno['FONDORDO']
- Nbno = len(grfo)
- listx = [None]*Nbno
- listy = [None]*Nbno
- listz = [None]*Nbno
- k = 0
- for node in grfo:
- listx[k] = coord[3*(node-1)]
- listy[k] = coord[3*(node-1)+1]
- listz[k] = coord[3*(node-1)+2]
- k = k+1
-
- XAB = listx[Nbno-1] - listx[0]
- YAB = listy[Nbno-1] - listy[0]
- ZAB = listz[Nbno-1] - listz[0]
- AB = sqrt(XAB*XAB + YAB*YAB +ZAB*ZAB)
- d = 0
- for k in range(0,Nbno) :
- XAM = listx[k] - listx[0]
- YAM = listy[k] - listy[0]
- ZAM = listz[k] - listz[0]
- Xvect = YAB*ZAM-ZAB*YAM
- Yvect = ZAB*XAM-XAB*ZAM
- Zvect = XAB*YAM-YAB*XAM
- AM = sqrt(Xvect*Xvect+ Yvect*Yvect +Zvect*Zvect)
- dk = AM/AB
- if dk > d :
- XC = listx[k]
- YC = listy[k]
- ZC = listz[k]
- d = max(dk, d)
-
- grlev=collgrno['LEVRTUBU']
- Nbnol = len(grlev)
- listxl = [None]*Nbnol
- listyl = [None]*Nbnol
- listzl = [None]*Nbnol
- k = 0
- for node in grlev:
- listxl[k] = coord[3*(node-1)]
- listyl[k] = coord[3*(node-1)+1]
- listzl[k] = coord[3*(node-1)+2]
- k = k+1
- dist = 0
- for k in range(0,Nbnol) :
- XAM = listxl[k] - listx[0]
- YAM = listyl[k] - listy[0]
- ZAM = listzl[k] - listz[0]
- Scal = (XAB*XAM + YAB*YAM + ZAB*ZAM)/(AB*AB)
- if (abs(Scal) < 0.51) and (abs(Scal) > 0.49) :
- Xk = listxl[k] -XC
- Yk = listyl[k] -YC
- Zk = listzl[k] -ZC
- dk = sqrt(Xk**2+ Yk**2 +Zk**2)
- dist = max(dk, dist)
-
- texte="<MACR_ASPIC_MAIL> PROFONDEUR DE LA FISSURE DANS LE MAILLAGE : %.2f \n"%dist
- aster.affiche('MESSAGE',texte)
-#
- return ier
-
-
+++ /dev/null
-#@ MODIF macr_cabri_calc_ops Macro DATE 07/10/2005 AUTEUR CIBHHPD L.SALMONA
-# -*- coding: iso-8859-1 -*-
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2003 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-
-
-
-
-def macr_cabri_calc_ops(self,MAILLAGE,MODELE_MECA,MODELE_THER,CHAR_THER,
- CHAR_MECA,RESU_THER,RESO_INTE,
- AFFE_MATERIAU,DEFI_CHAR_THER,DEFI_CHAR_MECA,RELATION,SOLVEUR,CONVERGENCE,NEWTON,
- INCREMENT,CHAM_MATER,**args):
- """
- Ecriture de la macro MACR_CABRI_CALC
- """
-
- #################################################################
- ########## PREPARATION MACRO
- #################################################################
-
- from Accas import _F
-
- ier =0
-
- # On met certains mots-clefs dans des variables locales pour les proteger
- affemateriau = AFFE_MATERIAU
- mail = MAILLAGE
- resointe = RESO_INTE
-
- # On importe les definitions des commandes a utiliser dans la macro
- # Le nom de la variable doit etre obligatoirement le nom de la commande
- DEFI_GROUP = self.get_cmd('DEFI_GROUP')
- AFFE_MATERIAU = self.get_cmd('AFFE_MATERIAU')
- AFFE_MODELE = self.get_cmd('AFFE_MODELE')
- MODI_MAILLAGE = self.get_cmd('MODI_MAILLAGE')
- AFFE_CHAR_THER_F = self.get_cmd('AFFE_CHAR_THER_F')
- AFFE_CHAR_THER = self.get_cmd('AFFE_CHAR_THER')
- AFFE_CHAR_MECA_F = self.get_cmd('AFFE_CHAR_MECA_F')
- AFFE_CHAR_MECA = self.get_cmd('AFFE_CHAR_MECA')
- DEFI_FONCTION = self.get_cmd('DEFI_FONCTION')
- DEFI_LIST_REEL = self.get_cmd('DEFI_LIST_REEL')
- THER_LINEAIRE = self.get_cmd('THER_LINEAIRE')
- STAT_NON_LINE = self.get_cmd('STAT_NON_LINE')
-
- # La macro compte pour 1 dans la numerotation des commandes
- self.set_icmd(1)
-
- # Le concept sortant (de type evol_noli) est nomme 'resumeca' dans
- # le contexte de la macro
- self.DeclareOut('resumeca',self.sd)
- self.DeclareOut('mail',MAILLAGE)
-
- #################################################################
- ########## PREPARATION DES MODELES
- #################################################################
-
- # Definition des groupes
- mail=DEFI_GROUP(reuse =mail,MAILLAGE=mail,
- CREA_GROUP_NO=(
- _F(GROUP_MA='M_GOU',NOM='N_M_GOU',),
- _F(GROUP_MA='M_JOI',NOM='N_M_JOI',),
- _F(GROUP_MA='SCBJ',NOM='N_SCBJ',),
- _F(GROUP_MA='SCJB',NOM='N_SCJB',),
- _F(GROUP_MA='M_L_AA',NOM='N_M_L_AA',),
- _F(GROUP_MA='SCEG',NOM='N_SCEG',),
- _F(GROUP_MA='SCGE',NOM='N_SCGE',),),)
-
- # Creation du modele thermique
- if MODELE_THER != None:
- self.DeclareOut('modther',MODELE_THER)
-
- modther=AFFE_MODELE(MAILLAGE=mail,
- AFFE=_F(GROUP_MA=('VTOT','M_GOU','M_TUB','M_JOI','SCBJ','SCJB',
- 'M_L_AA','M_INT','M_L_SA','M_EXT','SCEG','SCGE',),
- PHENOMENE='THERMIQUE',
- MODELISATION='3D_DIAG',),
- );
-
- # Creation du modele mecanique
- if MODELE_MECA != None:
- self.DeclareOut('modmeca',MODELE_MECA)
-
- modmeca = AFFE_MODELE(MAILLAGE=mail,
- AFFE=_F(GROUP_MA=('VTOT','M_GOU','M_TUB','M_JOI','SCBJ','SCJB',
- 'M_L_AA','M_L_SA','SCEG','SCGE','M_INT','M_EXT',),
- PHENOMENE='MECANIQUE',
- MODELISATION='3D',),
- );
-
- # Orientation des mailles
- mail=MODI_MAILLAGE(reuse =mail,
- MAILLAGE=mail,
- ORIE_PEAU_3D=(_F(GROUP_MA=('M_INT','M_TUB',),),
- _F(GROUP_MA=('M_L_AA','M_JOI','M_L_SA',),),),
- MODELE=modmeca,);
-
-
-
- # Affectation des materiaux
- if CHAM_MATER != None:
- self.DeclareOut('_cham',CHAM_MATER)
- motscles={}
- motscles['AFFE']=[]
- for mat in affemateriau:
- if mat['TOUT'] == None:
- # Creation de mots-cles pour les AFFE_CHAR_MECA
- motscles['AFFE'].append(_F(GROUP_MA=mat['GROUP_MA'],
- MATER = mat['MATER'],
- TEMP_REF = mat['TEMP_REF'],) )
- else:
- # Creation de mots-cles pour les AFFE_CHAR_MECA
- motscles['AFFE'].append(_F(TOUT='OUI',
- MATER = mat['MATER'],
- TEMP_REF = mat['TEMP_REF'],) )
-
- _cham = AFFE_MATERIAU(MAILLAGE=mail,
- MODELE=modther,
- AFFE=motscles['AFFE'],
- )
-
- #################################################################
- ########## CONDITIONS AUX LIMITES THERMIQUES
- #################################################################
- # Recuperation des parametres thermiques
-
- if DEFI_CHAR_THER != None:
- temp_ini = DEFI_CHAR_THER['TEMP_INIT']
- if DEFI_CHAR_THER['COEF_H_FLUI']!=None:
- coef_int = DEFI_CHAR_THER['COEF_H_FLUI']
- else:
- coef_int = DEFI_FONCTION(NOM_PARA='INST',
- VALE=(0.0,0.016,
- 7200.0,0.016,),
- PROL_DROITE='CONSTANT',
- PROL_GAUCHE='CONSTANT',);
- if DEFI_CHAR_THER['TEMP_EXT_FLUI']!=None:
- temp_int = DEFI_CHAR_THER['TEMP_EXT_FLUI']
- else:
- temp_int = DEFI_FONCTION(NOM_PARA='INST',
- VALE=(0.0,temp_ini,1.0,temp_ini,11.0,60.0,
- 600.0,60.0,610.0,280.0,1800.0,280.0,7200.0,280.0,),
- PROL_DROITE='CONSTANT',
- PROL_GAUCHE='CONSTANT',);
- if DEFI_CHAR_THER['COEF_H_AIR']!=None:
- coef_ext = DEFI_CHAR_THER['COEF_H_AIR']
- else:
- coef_ext = DEFI_FONCTION(NOM_PARA='INST',
- VALE=(0.0,1e-05,7200.0,1e-05,),
- PROL_DROITE='CONSTANT',
- PROL_GAUCHE='CONSTANT',);
-
- if DEFI_CHAR_THER['TEMP_EXT_AIR']!=None:
- temp_ext = DEFI_CHAR_THER['TEMP_EXT_AIR']
- else:
- temp_ext = DEFI_FONCTION(NOM_PARA='INST',
- VALE=(0.0,20.0,7200.0,20.0,),
- PROL_DROITE='CONSTANT',
- PROL_GAUCHE='CONSTANT',);
- if DEFI_CHAR_THER['LIST_INST']!=None:
- transi1 = DEFI_CHAR_THER['LIST_INST']
- else:
- transi1 = DEFI_LIST_REEL(DEBUT=0.0,
- INTERVALLE=(_F(JUSQU_A=1.0,
- NOMBRE=1,),
- _F(JUSQU_A=11.0,
- NOMBRE=10,),
- _F(JUSQU_A=600.0,
- NOMBRE=10,),
- _F(JUSQU_A=610.0,
- NOMBRE=30,),
- _F(JUSQU_A=1800.0,
- NOMBRE=30,),
- _F(JUSQU_A=7200.0,
- NOMBRE=10,),),);
- else:
- temp_ini = DEFI_CHAR_THER['TEMP_INIT']
- coef_int = DEFI_FONCTION(NOM_PARA='INST',
- VALE=(0.0,0.016,
- 7200.0,0.016,),
- PROL_DROITE='CONSTANT',
- PROL_GAUCHE='CONSTANT',);
- temp_int = DEFI_FONCTION(NOM_PARA='INST',
- VALE=(0.0,temp_ini,1.0,temp_ini,11.0,60.0,
- 600.0,60.0,610.0,280.0,1800.0,280.0,7200.0,280.0,),
- PROL_DROITE='CONSTANT',
- PROL_GAUCHE='CONSTANT',);
- coef_ext = DEFI_FONCTION(NOM_PARA='INST',
- VALE=(0.0,1e-05,7200.0,1e-05,),
- PROL_DROITE='CONSTANT',
- PROL_GAUCHE='CONSTANT',);
- temp_ext = DEFI_FONCTION(NOM_PARA='INST',
- VALE=(0.0,20.0,7200.0,20.0,),
- PROL_DROITE='CONSTANT',
- PROL_GAUCHE='CONSTANT',);
- transi1 = DEFI_LIST_REEL(DEBUT=0.0,
- INTERVALLE=(_F(JUSQU_A=1.0,
- NOMBRE=1,),
- _F(JUSQU_A=11.0,
- NOMBRE=10,),
- _F(JUSQU_A=600.0,
- NOMBRE=10,),
- _F(JUSQU_A=610.0,
- NOMBRE=30,),
- _F(JUSQU_A=1800.0,
- NOMBRE=30,),
- _F(JUSQU_A=7200.0,
- NOMBRE=10,),),);
- # Que sauver ?
- if CHAR_THER != None:
- for m in CHAR_THER:
- if m['TYPE']=="BRIDE_FLUIDE":
- self.DeclareOut('cl_th1',m['CHARGE'])
- if m['TYPE']=="BRIDE_AIR":
- self.DeclareOut('cl_th2',m['CHARGE'])
- if m['TYPE']=="ECROU_GOUJON":
- self.DeclareOut('cl_th3',m['CHARGE'])
- if m['TYPE']=="BRIDE_JOINT":
- self.DeclareOut('cl_th4',m['CHARGE'])
-
- # Echanges thermiques internes entre le fluide et la bride
- cl_th1=AFFE_CHAR_THER_F(MODELE=modther,
- ECHANGE=_F(GROUP_MA = 'M_INT',
- COEF_H = coef_int,
- TEMP_EXT = temp_int,),);
-
- # Echanges thermiques externes entre bride et air ambiant
- cl_th2=AFFE_CHAR_THER_F(MODELE=modther,
- ECHANGE=_F(GROUP_MA='M_EXT',
- COEF_H=coef_ext,
- TEMP_EXT=temp_ext,),);
-
- # Echanges thermiques entre ecrou et goujon
- cl_th3=AFFE_CHAR_THER(MODELE=modther,
- LIAISON_GROUP=_F(GROUP_NO_1='N_SCEG',
- GROUP_NO_2='N_SCGE',
- DDL_1='TEMP',
- COEF_MULT_1=1.0,
- DDL_2='TEMP',
- COEF_MULT_2=-1.0,
- COEF_IMPO=0.0,),);
-
- # Echanges thermiques entre bride et joint
- cl_th4=AFFE_CHAR_THER(MODELE=modther,
- LIAISON_GROUP=_F(GROUP_NO_1='N_SCBJ',
- GROUP_NO_2='N_SCJB',
- DDL_1='TEMP',
- COEF_MULT_1=1.0,
- DDL_2='TEMP',
- COEF_MULT_2=-1.0,
- COEF_IMPO=0.0,),);
-
-
-
- #################################################################
- ########## CALCUL THERMIQUE
- #################################################################
- if RESU_THER != None:
- self.DeclareOut('resuther',RESU_THER)
-
- resuther=THER_LINEAIRE(MODELE=modther,
- CHAM_MATER=_cham,
- EXCIT=(_F(CHARGE=cl_th1,),
- _F(CHARGE=cl_th2,),
- _F(CHARGE=cl_th3,),
- _F(CHARGE=cl_th4,),),
- INCREMENT=_F(LIST_INST=transi1,),
- TEMP_INIT=_F(VALE=temp_ini,),
- TITRE='CABRI THERMIQUE &DATE &HEURE',);
-
- #################################################################
- ########## CONDITIONS AUX LIMITES MECANIQUES
- #################################################################
- # Recuperation des parametres mecaniques
- if DEFI_CHAR_MECA != None:
- if DEFI_CHAR_MECA['PRETENS']!=None:
- f_pret = DEFI_CHAR_MECA['PRETENS']
- else:
- f_pret=DEFI_FONCTION(NOM_PARA='INST',
- VALE=(0.0,0.0,1.0,-0.02,),
- PROL_DROITE='CONSTANT',
- PROL_GAUCHE='CONSTANT',);
- if DEFI_CHAR_MECA['PRES_REP']!=None:
- pre_int = DEFI_CHAR_MECA['PRES_REP']
- else:
- pre_int = DEFI_FONCTION(NOM_PARA='INST',
- VALE=(0.0,0.0,1.0,0.0,11.0,16.0,),
- PROL_DROITE='CONSTANT',
- PROL_GAUCHE='CONSTANT',);
- if DEFI_CHAR_MECA['EFFE_FOND']!=None:
- eff_fond = DEFI_CHAR_MECA['EFFE_FOND']
- else:
- eff_fond=DEFI_FONCTION(NOM_PARA='INST',
- VALE=(0.0,-0.0,1.0,-0.0,11.0,-20.607059,),
- PROL_DROITE='CONSTANT',
- PROL_GAUCHE='CONSTANT',);
- else:
- f_pret=DEFI_FONCTION(NOM_PARA='INST',
- VALE=(0.0,0.0,1.0,-0.02,),
- PROL_DROITE='CONSTANT',
- PROL_GAUCHE='CONSTANT',);
-
- pre_int = DEFI_FONCTION(NOM_PARA='INST',
- VALE=(0.0,0.0,1.0,0.0,11.0,16.0,),
- PROL_DROITE='CONSTANT',
- PROL_GAUCHE='CONSTANT',);
-
- eff_fond=DEFI_FONCTION(NOM_PARA='INST',
- VALE=(0.0,-0.0,1.0,-0.0,11.0,-20.607059,),
- PROL_DROITE='CONSTANT',
- PROL_GAUCHE='CONSTANT',);
- # Que sauver ?
- if CHAR_MECA != None:
- for m in CHAR_MECA:
- if m['TYPE']=="BLOC_BAS_GOUJ":
- self.DeclareOut('cl_me1',m['CHARGE'])
- if m['TYPE']=="BLOC_BAS_JOINT":
- self.DeclareOut('cl_me2',m['CHARGE'])
- if m['TYPE']=="BLOC_LAT_ALES":
- self.DeclareOut('cl_me3',m['CHARGE'])
- if m['TYPE']=="BLOC_LAT_NALES":
- self.DeclareOut('cl_me4',m['CHARGE'])
- if m['TYPE']=="PLAN_TUBE":
- self.DeclareOut('cl_me5',m['CHARGE'])
- if m['TYPE']=="PRES_FLU":
- self.DeclareOut('cl_me6',m['CHARGE'])
- if m['TYPE']=="EFFET_FOND":
- self.DeclareOut('cl_me7',m['CHARGE'])
- if m['TYPE']=="CONT_JOINT":
- self.DeclareOut('cl_me8',m['CHARGE'])
- if m['TYPE']=="DEFO_THER":
- self.DeclareOut('cl_me9',m['CHARGE'])
- if m['TYPE']=="SERR_ECROU_1":
- self.DeclareOut('cl_me10',m['CHARGE'])
- if m['TYPE']=="SERR_ECROU_2":
- self.DeclareOut('cl_me11',m['CHARGE'])
-
-
- # Blocage bas du goujon
- cl_me1=AFFE_CHAR_MECA(MODELE=modmeca,
- DDL_IMPO=_F(GROUP_NO='N_M_GOU',
- DZ=0.0,),
- INFO=2,);
- # Blocage bas du joint
- cl_me2=AFFE_CHAR_MECA(MODELE=modmeca,
- DDL_IMPO=_F(GROUP_NO='N_M_JOI',
- DZ=0.0,),
- INFO=2,);
-
- # Blocage lateral, face laterale avec alesage
- cl_me3=AFFE_CHAR_MECA(MODELE=modmeca,
- DDL_IMPO=_F(GROUP_NO='N_M_L_AA',
- DY=0.0,),
- INFO=2,);
-
- # Face laterale sans alesage
- cl_me4=AFFE_CHAR_MECA(MODELE=modmeca,
- FACE_IMPO=_F(GROUP_MA='M_L_SA',
- DNOR=0.0,),
- INFO=2,);
-
- # Condition de planeite de la face de coupe du tube
- cl_me5=AFFE_CHAR_MECA(MODELE=modmeca,
- LIAISON_UNIF=_F(GROUP_MA='M_TUB',
- DDL='DZ',),
- INFO=2,);
- # Pression due au fluide
- cl_me6=AFFE_CHAR_MECA_F(MODELE=modmeca,
- PRES_REP=_F(GROUP_MA='M_INT',
- PRES=pre_int,),
- INFO=2,);
-
- # Effet de fond
- cl_me7=AFFE_CHAR_MECA_F(MODELE=modmeca,
- PRES_REP=_F(GROUP_MA='M_TUB',
- PRES=eff_fond,),
- INFO=2,);
-
- # Contact zone de joint
- cl_me8=AFFE_CHAR_MECA(MODELE=modmeca,
- CONTACT=_F(GROUP_MA_MAIT='SCBJ',
- GROUP_MA_ESCL='SCJB',),
- INFO=2,);
- # Deformation thermique
- cl_me9=AFFE_CHAR_MECA( MODELE=modmeca,
- TEMP_CALCULEE=resuther,
- INFO=2,);
-
- # Serrage ecrou/goujon (pre-tensionnement)
- cl_me10=AFFE_CHAR_MECA_F(MODELE=modmeca,
- LIAISON_GROUP=_F(GROUP_NO_1='N_SCEG',
- GROUP_NO_2='N_SCGE',
- DDL_1='DZ',
- COEF_MULT_1=1.0,
- DDL_2='DZ',
- COEF_MULT_2=-1.0,
- COEF_IMPO=f_pret,),
- INFO=2,);
-
- cl_me11=AFFE_CHAR_MECA(MODELE=modmeca,
- LIAISON_GROUP=_F(GROUP_NO_1='N_SCEG',
- GROUP_NO_2='N_SCGE',
- DDL_1='DX',
- COEF_MULT_1=1.0,
- DDL_2='DX',
- COEF_MULT_2=-1.0,
- COEF_IMPO=0.0,),
- INFO=2,);
-
-
- #################################################################
- ########## CALCUL MECANIQUE
- #################################################################
- # Options de convergence
- solveur=SOLVEUR[0].cree_dict_valeurs(SOLVEUR[0].mc_liste)
-
- # Elimination des valeurs "None"
- for i in solveur.keys():
- if solveur[i]==None : del solveur[i]
-
-
- transi2 = DEFI_LIST_REEL(DEBUT=0.0,
- INTERVALLE=(_F(JUSQU_A=1.0,
- NOMBRE=2,),
- _F(JUSQU_A=11.0,
- NOMBRE=20,),
- _F(JUSQU_A=600.0,
- NOMBRE=20,),
- _F(JUSQU_A=610.0,
- NOMBRE=20,),
- _F(JUSQU_A=1800.0,
- NOMBRE=20,),
- _F(JUSQU_A=7200.0,
- NOMBRE=20,),),);
-
- # Options d'incrementation
- if INCREMENT != None:
- if INCREMENT['LIST_INST'] != None:
- listinst = INCREMENT['LIST_INST']
- else:
- listinst = transi2
-
- increment=INCREMENT[0].cree_dict_valeurs(INCREMENT[0].mc_liste)
-
- # Elimination des valeurs "None"
- for i in increment.keys():
- if increment[i]==None : del increment[i]
-
- increment['LIST_INST'] = listinst
-
- else:
- listinst = transi2
- increment =_F(
- LIST_INST = listinst,
- ),
-
- # Options de Newton
- newton=NEWTON[0].cree_dict_valeurs(NEWTON[0].mc_liste)
- # Elimination des valeurs "None"
- for i in newton.keys():
- if newton[i]==None : del newton[i]
-
- # Options de convergence
- convergence=CONVERGENCE[0].cree_dict_valeurs(CONVERGENCE[0].mc_liste)
- # Elimination des valeurs "None"
- for i in convergence.keys():
- if convergence[i]==None : del convergence[i]
-
- # Options de comportement
- # Type incremental (=1) ou elastique (=0)
- comp_incr = 0
- if RELATION:
- relation=RELATION
- if relation == 'VMIS_ISOT_TRAC':
- comp_incr = 1
- else:
- comp_incr = 0
- else:
- relation = 'ELAS'
- comp_incr = 0
-
-
- # Parametres du calcul
- if comp_incr == 1:
- resumeca=STAT_NON_LINE(MODELE=modmeca,
- CHAM_MATER=_cham,
- EXCIT=(_F(CHARGE=cl_me1,),
- _F(CHARGE=cl_me2,),
- _F(CHARGE=cl_me3,),
- _F(CHARGE=cl_me4,),
- _F(CHARGE=cl_me5,),
- _F(CHARGE=cl_me6,),
- _F(CHARGE=cl_me7,),
- _F(CHARGE=cl_me8,),
- _F(CHARGE=cl_me9,),
- _F(CHARGE=cl_me10,),
- _F(CHARGE=cl_me11,),
- ),
- SOLVEUR = solveur,
- COMP_INCR =_F(RELATION=relation,RESO_INTE=resointe),
- NEWTON = newton,
- INCREMENT = increment,
- CONVERGENCE = convergence,
- TITRE='CABRI THERMOM\xe9CANIQUE &DATE &HEURE',);
- else:
- resumeca=STAT_NON_LINE(MODELE=modmeca,
- CHAM_MATER=_cham,
- EXCIT=(_F(CHARGE=cl_me1,),
- _F(CHARGE=cl_me2,),
- _F(CHARGE=cl_me3,),
- _F(CHARGE=cl_me4,),
- _F(CHARGE=cl_me5,),
- _F(CHARGE=cl_me6,),
- _F(CHARGE=cl_me7,),
- _F(CHARGE=cl_me8,),
- _F(CHARGE=cl_me9,),
- _F(CHARGE=cl_me10,),
- _F(CHARGE=cl_me11,),
- ),
- SOLVEUR = solveur,
- COMP_ELAS =_F(RELATION=relation,RESO_INTE=resointe),
- NEWTON = newton,
- INCREMENT = increment,
- CONVERGENCE = convergence,
- TITRE='CABRI THERMOM\xe9CANIQUE &DATE &HEURE',);
-
- return ier
-
+++ /dev/null
-#@ MODIF macr_cabri_mail_dat Macro DATE 14/09/2004 AUTEUR MCOURTOI M.COURTOIS
-# -*- coding: iso-8859-1 -*-
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2003 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-
-
-
-# Données pour les brides standards
-
-
-
-# Pour ajouter une bride x:
-# Définir un dico_bride_x comme ci-dessous puis ajoutez-le à dico_bride_std
-
-# dictionnaire pour la description des variables
-dico_var_geo = {'nbgouj':'Nombre de goujons de la jonction boulonnée (GOUJ_N_GOUJON)',
- 'dint':'Diamètre intérieur de la bride (BRID_D_INT)',
- 'dex1':'Diamétre extérieur de la conduite (TUBU_D_EXT)',
- 'dex2':'Position (diamètre) du congé de la bride (BRID_D_CONGE)',
- 'dex3':'Diamètre de l''épaulement de la bride au niveau de l''interface d''étanchéité (BRID_D_EPAUL)',
- 'dtrou':'Position des alésages de la bride permettant l''introduction des goujons (BRID_P_ALESAG)',
- 'dext':'Diamètre extérieur de la bride (BRID_D_EXT)',
- 'dt':'Diamètre des alésages de la bride permettant l''introduction des goujons (BRID_D_ALESAG)',
- 'drd':'Diamètre de la rondelle (GOUJ_D_RONDEL)',
- 'dg':'Diamètre des goujons de la jonction boulonnée (GOUJ_D_GOUJON)',
- 'dec':'Diamètre de l''écrou (GOUJ_D_ECROU)',
- 'rcong':'Rayon du congé de la bride (BRID_R_CONGE)',
- 'he':'Epaisseur de la rondelle (GOUJ_E_RONDEL)',
- 'e':'Epaisseur de l''écrou (GOUJ_E_ECROU)',
- 'hc1':'Hauteur de la bride (BRID_H)',
- 'hcg1':'Hauteur de conduite (TUBU_H)',
- 'hb':'Hauteur de l''épaulement de la bride au niveau de l''interface d''étanchéité (BRID_H_EPAUL)',
- 'htrou':'Hauteur des alésages de la bride permettant l''introduction des goujons (BRID_H_ALESAG)',
- 'pf':'Profondeur (épaisseur) des filets des goujons (GOUJ_E_FILET)',
- 'j':'Epaisseur du joint au niveau de l''interface d''étanchéité (ETAN_E_JOINT)'}
-
-dico_var_msh = {'nrad':'Nombre d''éléments radiaux (NBR_RAD)',
- 'ncir':'Nombre d''éléments circonférentiels (NBR_CIR)',
- 'nver':'Nombre d''éléments verticaux (NBR_VER)',
- 'nsect':'Nombre d''éléments de l''alésage (NBR_ALE)',
- 'temps':'Temps d''analyse'}
-
-# dictionnaires des brides standards
-dico_bride_A = {'nbgouj': 4,
- 'dint': 15.76,
- 'dex1': 21.3,
- 'dex2': 38.,
- 'dex3': 48.,
- 'dtrou': 67.,
- 'dext': 95.,
- 'dt': 14.,
- 'drd': 25.,
- 'dg': 12.,
- 'dec': 18.,
- 'rcong': 3.,
- 'he': 12.,
- 'e': 2.5,
- 'hc1': 46.5,
- 'hcg1': 20,
- 'hb': 1.5,
- 'htrou': 20.,
- 'pf': 1.5,
- 'j': 2}
-
-dico_bride_AA = {'nbgouj': 32,
- 'dint': 336.5,
- 'dex1': 355.6,
- 'dex2': 395.,
- 'dex3': 415.,
- 'dtrou': 460.,
- 'dext': 515.,
- 'dt': 22.,
- 'drd': 36.,
- 'dg': 20.,
- 'dec': 30.,
- 'rcong': 5.,
- 'he': 20.,
- 'e': 3.,
- 'hc1': 115.,
- 'hcg1': 115./2.,
- 'hb': 3.,
- 'htrou': 47.,
- 'pf': 2.2,
- 'j': 2}
-
-dico_bride_B = {'nbgouj': 4,
- 'dint': 26.64,
- 'dex1': 33.4,
- 'dex2': 53.,
- 'dex3': 63.,
- 'dtrou': 88.,
- 'dext': 123.,
- 'dt': 16.,
- 'drd': 27.,
- 'dg': 14.,
- 'dec': 21.,
- 'rcong': 4.,
- 'he': 14.,
- 'e': 2.5,
- 'hc1': 59.,
- 'hcg1': 59./2.,
- 'hb': 1.5,
- 'htrou': 27.5,
- 'pf': 1.7,
- 'j': 2}
-dico_bride_B1 = {'nbgouj': 4,
- 'dint': 24.3,
- 'dex1': 33.4,
- 'dex2': 53.,
- 'dex3': 63.,
- 'dtrou': 88.,
- 'dext': 123.,
- 'dt': 16.,
- 'drd': 27.,
- 'dg': 14.,
- 'dec': 21.,
- 'rcong': 4.,
- 'he': 14.,
- 'e': 2.5,
- 'hc1': 59.,
- 'hcg1': 59./2.,
- 'hb': 1.5,
- 'htrou': 27.5,
- 'pf': 1.7,
- 'j': 2}
-dico_bride_C = {'nbgouj': 8,
- 'dint': 52.48,
- 'dex1': 60.3,
- 'dex2': 84.,
- 'dex3': 100.,
- 'dtrou': 127.,
- 'dext': 165.,
- 'dt': 18.,
- 'drd': 30,
- 'dg': 16.,
- 'dec': 24.,
- 'rcong': 4.,
- 'he': 16.,
- 'e': 3,
- 'hc1': 70.,
- 'hcg1': 70./2.,
- 'hb': 1.5,
- 'htrou': 21.,
- 'pf': 1.7,
- 'j': 2}
-dico_bride_D = {'nbgouj': 8,
- 'dint': 42.9,
- 'dex1': 60.3,
- 'dex2': 84.,
- 'dex3': 100.,
- 'dtrou': 127.,
- 'dext': 165.,
- 'dt': 18.,
- 'drd': 30,
- 'dg': 16.,
- 'dec': 24.,
- 'rcong': 5.,
- 'he': 16.,
- 'e': 3.,
- 'hc1': 87.6,
- 'hcg1': 87.6/2.,
- 'hb': 1.5,
- 'htrou': 38.5,
- 'pf': 1.7,
- 'j': 2}
-dico_bride_D1 = {'nbgouj': 8,
- 'dint': 49.22,
- 'dex1': 60.3,
- 'dex2': 84.,
- 'dex3': 100.,
- 'dtrou': 127.,
- 'dext': 165.,
- 'dt': 18.,
- 'drd': 30,
- 'dg': 16.,
- 'dec': 24.,
- 'rcong': 5.,
- 'he': 16.,
- 'e': 3.,
- 'hc1': 87.6,
- 'hcg1': 87.6/2.,
- 'hb': 1.5,
- 'htrou': 38.5,
- 'pf': 1.7,
- 'j': 2}
-dico_bride_E = {'nbgouj': 8,
- 'dint': 83.1,
- 'dex1': 88.9,
- 'dex2': 117.5,
- 'dex3': 135.,
- 'dtrou': 165.,
- 'dext': 209.,
- 'dt': 18.,
- 'drd': 30.,
- 'dg': 16.,
- 'dec': 24.,
- 'rcong': 5.,
- 'he': 16.,
- 'e': 3.,
- 'hc1': 80.,
- 'hcg1': 80./2.,
- 'hb': 2.,
- 'htrou': 27.,
- 'pf': 1.7,
- 'j': 2}
-dico_bride_F = {'nbgouj': 8,
- 'dint': 73.66,
- 'dex1': 88.9,
- 'dex2': 117.5,
- 'dex3': 135.,
- 'dtrou': 165.,
- 'dext': 209.,
- 'dt': 18.,
- 'drd': 30.,
- 'dg': 16.,
- 'dec': 24.,
- 'rcong': 5.,
- 'he': 16.,
- 'e': 3.,
- 'hc1': 89.,
- 'hcg1': 89./2.,
- 'hb': 2.,
- 'htrou': 36.,
- 'pf': 1.7,
- 'j': 2}
-dico_bride_FF = {'nbgouj': 32,
- 'dint': 396.99,
- 'dex1': 406.4,
- 'dex2': 440.,
- 'dex3': 455.,
- 'dtrou': 485.,
- 'dext': 535.,
- 'dt': 18.,
- 'drd': 30.,
- 'dg': 16.,
- 'dec': 24.,
- 'rcong': 5.,
- 'he': 16.,
- 'e': 3.,
- 'hc1': 99.,
- 'hcg1': 99./2.,
- 'hb': 3.,
- 'htrou': 40.,
- 'pf': 1.7,
- 'j': 2}
-dico_bride_G = {'nbgouj': 12,
- 'dint': 66.7,
- 'dex1': 88.9,
- 'dex2': 117.5,
- 'dex3': 135.,
- 'dtrou': 165.,
- 'dext': 209.,
- 'dt': 18.,
- 'drd': 30.,
- 'dg': 16.,
- 'dec': 24.,
- 'rcong': 5.,
- 'he': 16.,
- 'e': 3.,
- 'hc1': 98.,
- 'hcg1': 98./2.,
- 'hb': 2.,
- 'htrou': 45.,
- 'pf': 1.7,
- 'j': 2}
-dico_bride_GG = {'nbgouj': 36,
- 'dint': 381.,
- 'dex1': 406.4,
- 'dex2': 445.,
- 'dex3': 460.,
- 'dtrou': 495.,
- 'dext': 545.,
- 'dt': 22.,
- 'drd': 36,
- 'dg': 20.,
- 'dec': 30.,
- 'rcong': 5.,
- 'he': 20.,
- 'e': 3.,
- 'hc1': 129.,
- 'hcg1': 129./2.,
- 'hb': 3.,
- 'htrou': 63.,
- 'pf': 2.2,
- 'j': 2}
-dico_bride_H = {'nbgouj': 12,
- 'dint': 108.2,
- 'dex1': 114.3,
- 'dex2': 146.,
- 'dex3': 157.,
- 'dtrou': 190.,
- 'dext': 225.,
- 'dt': 18.,
- 'drd': 30.,
- 'dg': 16.,
- 'dec': 24.,
- 'rcong': 5.,
- 'he': 16.,
- 'e': 3.,
- 'hc1': 89.,
- 'hcg1': 89./2.,
- 'hb': 2.,
- 'htrou': 33.,
- 'pf': 1.7,
- 'j': 2}
-dico_bride_H1 = {'nbgouj': 12,
- 'dint': 102.6,
- 'dex1': 114.3,
- 'dex2': 146.,
- 'dex3': 157.,
- 'dtrou': 190.,
- 'dext': 225.,
- 'dt': 18.,
- 'drd': 30.,
- 'dg': 16.,
- 'dec': 24.,
- 'rcong': 5.,
- 'he': 16.,
- 'e': 3.,
- 'hc1': 89.,
- 'hcg1': 89./2.,
- 'hb': 2.,
- 'htrou': 33.,
- 'pf': 1.7,
- 'j': 2}
-dico_bride_I = {'nbgouj': 18,
- 'dint': 92.1,
- 'dex1': 114.3,
- 'dex2': 146.,
- 'dex3': 160.,
- 'dtrou': 200.,
- 'dext': 255.,
- 'dt': 20.,
- 'drd': 32.,
- 'dg': 18.,
- 'dec': 27.,
- 'rcong': 5.,
- 'he': 18.,
- 'e': 3.,
- 'hc1': 99.,
- 'hcg1': 99./2.,
- 'hb': 2.,
- 'htrou': 43.,
- 'pf': 2.2,
- 'j': 2}
-dico_bride_J = {'nbgouj': 18,
- 'dint': 87.34,
- 'dex1': 114.3,
- 'dex2': 146.,
- 'dex3': 160.,
- 'dtrou': 200.,
- 'dext': 255.,
- 'dt': 20.,
- 'drd': 32.,
- 'dg': 18.,
- 'dec': 27.,
- 'rcong': 5.,
- 'he': 18.,
- 'e': 3.,
- 'hc1': 111.,
- 'hcg1': 111./2.,
- 'hb': 2.,
- 'htrou': 55.,
- 'pf': 2.2,
- 'j': 2}
-dico_bride_J1 = {'nbgouj': 18,
- 'dint': 87.3,
- 'dex1': 114.3,
- 'dex2': 146.,
- 'dex3': 160.,
- 'dtrou': 200.,
- 'dext': 255.,
- 'dt': 22.,
- 'drd': 36.,
- 'dg': 20.,
- 'dec': 30.,
- 'rcong': 5.,
- 'he': 20.,
- 'e': 3.,
- 'hc1': 111.,
- 'hcg1': 111./2.,
- 'hb': 2.,
- 'htrou': 55.,
- 'pf': 2.2,
- 'j': 2}
-dico_bride_K = {'nbgouj': 8,
- 'dint': 161.5,
- 'dex1': 168.3,
- 'dex2': 192.,
- 'dex3': 210.,
- 'dtrou': 235.,
- 'dext': 280.,
- 'dt': 18.,
- 'drd': 30.,
- 'dg': 16.,
- 'dec': 24.,
- 'rcong': 5.,
- 'he': 16.,
- 'e': 3.,
- 'hc1': 84.,
- 'hcg1': 84./2.,
- 'hb': 2.,
- 'htrou': 28.,
- 'pf': 1.7,
- 'j': 2}
-dico_bride_L = {'nbgouj': 16,
- 'dint': 154.8,
- 'dex1': 168.3,
- 'dex2': 206.,
- 'dex3': 220.,
- 'dtrou': 255.,
- 'dext': 317.,
- 'dt': 18.,
- 'drd': 30.,
- 'dg': 16.,
- 'dec': 24.,
- 'rcong': 5.,
- 'he': 16.,
- 'e': 3.,
- 'hc1': 96.,
- 'hcg1': 96./2.,
- 'hb': 2.,
- 'htrou': 40.,
- 'pf': 1.7,
- 'j': 2}
-dico_bride_L1 = {'nbgouj': 16,
- 'dint': 154.8,
- 'dex1': 168.3,
- 'dex2': 206.,
- 'dex3': 220.,
- 'dtrou': 255.,
- 'dext': 317.,
- 'dt': 20.,
- 'drd': 32.,
- 'dg': 18.,
- 'dec': 27.,
- 'rcong': 5.,
- 'he': 18.,
- 'e': 3.,
- 'hc1': 96.,
- 'hcg1': 96./2.,
- 'hb': 2.,
- 'htrou': 40.,
- 'pf': 2.2,
- 'j': 2}
-dico_bride_M = {'nbgouj': 16,
- 'dint': 139.7,
- 'dex1': 168.3,
- 'dex2': 206.,
- 'dex3': 220.,
- 'dtrou': 250.,
- 'dext': 290.,
- 'dt': 24.,
- 'drd': 40.,
- 'dg': 22.,
- 'dec': 32.,
- 'rcong': 5.,
- 'he': 22.,
- 'e': 3.,
- 'hc1': 135.,
- 'hcg1': 135./2.,
- 'hb': 3.,
- 'htrou': 62.,
- 'pf': 2.2,
- 'j': 2}
-dico_bride_N = {'nbgouj': 12,
- 'dint': 131.9,
- 'dex1': 168.3,
- 'dex2': 220.,
- 'dex3': 240.,
- 'dtrou': 290.,
- 'dext': 365.,
- 'dt': 30.,
- 'drd': 48.,
- 'dg': 27.,
- 'dec': 41.,
- 'rcong': 5.,
- 'he': 27.,
- 'e': 4.,
- 'hc1': 148.,
- 'hcg1': 148./2.,
- 'hb': 3.,
- 'htrou': 75.,
- 'pf': 2.6,
- 'j': 2}
-dico_bride_O = {'nbgouj': 12,
- 'dint': 211.58,
- 'dex1': 219.1,
- 'dex2': 248.,
- 'dex3': 260.,
- 'dtrou': 292.,
- 'dext': 335.,
- 'dt': 20.,
- 'drd': 32.,
- 'dg': 18.,
- 'dec': 27.,
- 'rcong': 5.,
- 'he': 18.,
- 'e': 3.,
- 'hc1': 87.,
- 'hcg1': 87./2.,
- 'hb': 3.,
- 'htrou': 30.,
- 'pf': 2.2,
- 'j': 2}
-dico_bride_P = {'nbgouj': 16,
- 'dint': 202.74,
- 'dex1': 219.1,
- 'dex2': 248.,
- 'dex3': 260.,
- 'dtrou': 292.,
- 'dext': 335.,
- 'dt': 20.,
- 'drd': 32,
- 'dg': 18.,
- 'dec': 27.,
- 'rcong': 5.,
- 'he': 18.,
- 'e': 3.,
- 'hc1': 99.,
- 'hcg1': 99./2.,
- 'hb': 3.,
- 'htrou': 42.,
- 'pf': 2.2,
- 'j': 2}
-dico_bride_S = {'nbgouj': 16,
- 'dint': 264.62,
- 'dex1': 273.,
- 'dex2': 305.,
- 'dex3': 315.,
- 'dtrou': 350.,
- 'dext': 390.,
- 'dt': 18.,
- 'drd': 30.,
- 'dg': 16.,
- 'dec': 24.,
- 'rcong': 5.,
- 'he': 16.,
- 'e': 3.,
- 'hc1': 89.,
- 'hcg1': 89./2.,
- 'hb': 3.,
- 'htrou': 32.,
- 'pf': 1.7,
- 'j': 2}
-dico_bride_T = {'nbgouj': 16,
- 'dint': 254.56,
- 'dex1': 273.,
- 'dex2': 320.,
- 'dex3': 340.,
- 'dtrou': 385.,
- 'dext': 444.,
- 'dt': 27.,
- 'drd': 45.,
- 'dg': 24.,
- 'dec': 36.,
- 'rcong': 5.,
- 'he': 24.,
- 'e': 4.,
- 'hc1': 128.,
- 'hcg1': 128./2.,
- 'hb': 3.,
- 'htrou': 55.,
- 'pf': 2.6,
- 'j': 2}
-dico_bride_W = {'nbgouj': 28,
- 'dint': 314.76,
- 'dex1': 323.9,
- 'dex2': 360.,
- 'dex3': 385.,
- 'dtrou': 415.,
- 'dext': 460.,
- 'dt': 18.,
- 'drd': 30.,
- 'dg': 16.,
- 'dec': 24.,
- 'rcong': 5.,
- 'he': 16.,
- 'e': 3.,
- 'hc1': 96.,
- 'hcg1': 96./2.,
- 'hb': 3.,
- 'htrou': 37.,
- 'pf': 1.7,
- 'j': 2}
-
-
-# dictionnaire pour faire le lien entre l'option de bride et les valeurs normalisées
-dico_bride_std = {'AA':dico_bride_AA,
- 'A':dico_bride_A,
- 'B':dico_bride_B,
- 'B1':dico_bride_B1,
- 'C':dico_bride_C,
- 'D':dico_bride_D,
- 'D1':dico_bride_D1,
- 'E':dico_bride_E,
- 'F':dico_bride_F,
- 'FF':dico_bride_FF,
- 'G':dico_bride_G,
- 'GG':dico_bride_GG,
- 'H':dico_bride_H,
- 'H1':dico_bride_H1,
- 'I':dico_bride_I,
- 'J':dico_bride_J,
- 'J1':dico_bride_J1,
- 'K':dico_bride_K,
- 'L':dico_bride_L,
- 'L1':dico_bride_L1,
- 'M':dico_bride_M,
- 'N':dico_bride_N,
- 'O':dico_bride_O,
- 'P':dico_bride_P,
- 'S':dico_bride_S,
- 'T':dico_bride_T,
- 'W':dico_bride_W}
+++ /dev/null
-#@ MODIF macr_cabri_mail_ops Macro DATE 07/02/2005 AUTEUR MABBAS M.ABBAS
-# -*- coding: iso-8859-1 -*-
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2003 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-
-import os
-
-def macr_cabri_mail_ops(self,EXEC_MAILLAGE,RAFF_MAILLAGE,VERI_MAIL,GEOM_BRID,
- IMPRESSION,**args):
- """
- Ecriture de la macro MACR_CABRI_MAIL
- """
- import types
- from Accas import _F
-
- ier=0
-
- # On importe les definitions des commandes a utiliser dans la macro
- # Le nom de la variable doit etre obligatoirement le nom de la commande
- EXEC_LOGICIEL = self.get_cmd('EXEC_LOGICIEL')
- LIRE_MAILLAGE = self.get_cmd('LIRE_MAILLAGE')
- PRE_GIBI = self.get_cmd('PRE_GIBI')
- IMPR_RESU = self.get_cmd('IMPR_RESU')
-
- # La macro compte pour 1 dans la numerotation des commandes
- self.set_icmd(1)
-
- # Le concept sortant (de type mail) est nommé 'nomres' dans
- # le contexte de la macro
-
- self.DeclareOut('nomres',self.sd)
-
- # Chemin de Gibi
- import aster
- loc_gibi=aster.repout()
- gibi2000=loc_gibi+'gibi'
-
- # Unité pour le fichier maillage produit (format GIBI)
- unite_mgib = EXEC_MAILLAGE['UNITE_MGIB']
- # Unité pour le fichier de commandes GIBI
- unite_datg = EXEC_MAILLAGE['UNITE_DATG']
- # Niveau gibi
- niveau_gibi = EXEC_MAILLAGE['NIVE_GIBI']
-
- # Verif mail
- ver_apla = VERI_MAIL['APLAT']
- ver_veri = VERI_MAIL['VERIF']
-
- # Impression
- if IMPRESSION['UNITE']!=None:
- imp_unit = IMPRESSION['UNITE']
- imp_unitF = 1
- else:
- imp_unitF = 0
- if IMPRESSION['FORMAT']!=None:
- imp_form = IMPRESSION['FORMAT']
- imp_formF = 1
- else:
- imp_formF = 0
-# if IMPRESSION['FICHIER']!=None:
-# imp_fich = IMPRESSION['FICHIER']
-# imp_fichF = 1
-# else:
-# imp_fichF = 0
-
- # Maillage
- nrad = RAFF_MAILLAGE['NB_RADIAL']
- ncir = RAFF_MAILLAGE['NB_CIRCONF']
- nver = RAFF_MAILLAGE['NB_VERTICAL']
- nsect = RAFF_MAILLAGE['NB_ALESAGE']
- temps = 5.
-
- maillage = {'nrad': nrad,
- 'ncir': ncir,
- 'nver': nver,
- 'nsect': nsect,
- 'temps' : temps,}
-
- # Création du fichier datg
-
- if GEOM_BRID['NORME'] == 'OUI':
- # Bride standard
- type_bride = GEOM_BRID['TYPE']
- ### Ecriture du fichier GIBI principal (dgib) - Bride STANDARD
- write_file_dgib_STD(unite_mgib,unite_datg,maillage,type_bride)
- else:
- # Bride quelconque
- geo_bride_qqe = {'nbgouj': GEOM_BRID['GOUJ_N_GOUJON'],
- 'dint': GEOM_BRID['BRID_D_INT'],
- 'dex1': GEOM_BRID['TUBU_D_EXT'],
- 'dex2': GEOM_BRID['BRID_D_CONGE'],
- 'dex3': GEOM_BRID['BRID_D_EPAUL'],
- 'dtrou': GEOM_BRID['BRID_P_ALESAG'],
- 'dext': GEOM_BRID['BRID_D_EXT'],
- 'dt': GEOM_BRID['BRID_D_ALESAG'],
- 'drd': GEOM_BRID['GOUJ_D_RONDEL'],
- 'dg': GEOM_BRID['GOUJ_D_GOUJON'],
- 'dec': GEOM_BRID['GOUJ_D_ECROU'],
- 'rcong': GEOM_BRID['BRID_R_CONGE'],
- 'he': GEOM_BRID['GOUJ_E_ECROU'],
- 'e': GEOM_BRID['GOUJ_E_RONDEL'],
- 'hc1': GEOM_BRID['BRID_H'],
- 'hcg1': GEOM_BRID['TUBU_H'],
- 'hb': GEOM_BRID['BRID_H_EPAUL'],
- 'htrou': GEOM_BRID['BRID_H_ALESAG'],
- 'pf': GEOM_BRID['GOUJ_E_FILET'],
- 'j': GEOM_BRID['ETAN_E_JOINT']}
- ### Ecriture du fichier GIBI principal (dgib) - Bride QUELCONQUE
- write_file_dgib_QQE(unite_mgib,unite_datg,maillage,geo_bride_qqe)
-
- fichier_datg = 'fort.'+str(unite_datg)
- fichier_mgib = 'fort.'+str(unite_mgib)
-
- # Lancement de GIBI
- EXEC_LOGICIEL(
- LOGICIEL=gibi2000,
- ARGUMENT=(_F(NOM_PARA=fichier_datg),
- _F(NOM_PARA=fichier_mgib),
- )
- )
- # Lecture du maillage GIBI dans ASTER
- PRE_GIBI(
- UNITE_GIBI = unite_mgib,
- )
-
- nomres = LIRE_MAILLAGE(VERI_MAIL=_F(APLAT = ver_apla,
- VERIF = ver_veri ),)
-
-# if (imp_fichF == 1):
-# print imp_fich
- if (imp_formF == 1):
- print imp_form
- if (imp_unitF == 1):
- print imp_unit
- # Impression du fichier maillage
- if (imp_formF == 1):
- if (imp_form == 'CASTEM'):
- imp_ngib = IMPRESSION['NIVE_GIBI']
- IMPR_RESU( RESU = _F(MAILLAGE=nomres, ),
- FORMAT = 'CASTEM', NIVE_GIBI = imp_ngib )
- if (imp_form == 'IDEAS'):
- imp_nver = IMPRESSION['VERSION']
- IMPR_RESU(RESU = _F(MAILLAGE=nomres,),
- FORMAT = 'IDEAS', VERSION = imp_nver )
-
- return ier
-
-
-##############################################################################################
-# Liste des fonctions
-##############################################################################################
-
-#############
-## EXTERNES (appelables depuis l'extérieur)
-#############
-
-### Ecriture du fichier GIBI principal (dgib) - Bride STANDARD
-# null = write_file_dgib_STD(unite_mgib,unite_datg,msh_bride,geo_bride)
-
-### Ecriture du fichier GIBI principal (dgib) - Bride QUELCONQUE
-# null = write_file_dgib_QQE(unite_mgib,unite_datg,msh_bride,geo_bride)
-
-### Imprime tout le catalogue des brides standards disponibles dans un fichier texte
-# null = print_bride_std(nom_fichier)
-
-### Catalogue complet des brides standards disponibles
-# txt = bride_std()
-
-#############
-## INTERNES (réservées au travail interne)
-#############
-
-### Génération du nom du fichier pour le fichier maillage résultant (format GIBI)
-# NomFichier(txt) = name_file_mgib(unite_mgib):
-
-### Génération du nom du fichier pour le fichier générant le maillage (commandes GIBI)
-# NomFichier(txt) = name_file_datg(unite_datg):
-
-### Récupère un fichier texte DATG
-# Txt = text_datg(fichier_datg):
-
-### Génération du texte pour les variables
-# Txt = para_text(dico_var,var):
-
-
-
-#=============================================================================================
-# Importation des modules Python
-#=============================================================================================
-
-from Macro.macr_cabri_mail_dat import dico_var_geo,dico_var_msh,dico_bride_std
-
-#=============================================================================================
-# Fonctions principales
-#=============================================================================================
-# Ecriture du fichier GIBI principal (dgib) - Bride STANDARD
-def write_file_dgib_STD(unite_mgib,unite_datg,msh_bride,geo_bride):
-
- # Nom du fichier maillage produit par GIBI
- nomFichierMGIB = name_file_mgib(unite_mgib)
-
- # Nom du fichier de commandes pour GIBI
- nomFichierDATG = name_file_datg(unite_datg)
-
- # Ouverture du fichier d'entrée de commandes
- fdgib=open(nomFichierDATG,'w')
-
- # En-tete
- text = "**************************************************************\n"
- text = text + "* Fichier GIBI pour le maillage d'une bride \n"
- text = text + "**************************************************************\n"
- text = text + "\n"
- text = text + "* Ce fichier a été généré automatiquement par la macro ASTER MACR_CABRI_MAIL \n"
- text = text + "* Ne pas modifier\n"
- text = text + "\n"
- text = text + "**************************************************************\n"
- text = text + "* Type bride: Bride standard \n"
- text = text + "**************************************************************\n"
- text = text + "titre '"+"Bride standard"+"';\n"
- text = text + "** Type bride standard: "+geo_bride+"\n"
-
- text = text + "\n"
- text = text + "nomfich = CHAINE \n"
- if len(nomFichierMGIB)>72:
- raise Exception, 'Nom de fichier trop long (limité à 72 caractères ' \
- 'pour GIBI) :\n',nomFichierMGIB
- elif len(nomFichierMGIB)<=69:
- text = text + "'"+nomFichierMGIB+"';\n"
- else:
- text = text + "'"+nomFichierMGIB[:69]+"'\n" \
- + "'"+nomFichierMGIB[69:]+"';\n"
- text = text + "opti dime 3 elem cub8 SAUV FORM nomfich;\n"
- text = text + "dens 1;\n"
- text = text + "\n"
- fdgib.write(text)
-
- # Procédures internes supplémentaires
- text = "**************************************************************\n"
- text = text + "* Procédures supplémentaires \n"
- text = text + "**************************************************************\n"
- text = text + text_datg_pro()
- fdgib.write(text)
-
- # Début de procédure de création du maillage
- text = "**************************************************************\n"
- text = text + "**************************************************************\n"
- text = text + "********* Début de procédure de création du maillage *********\n"
- text = text + "**************************************************************\n"
- text = text + "**************************************************************\n"
- text = text + "\n debproc constru;\n"
- fdgib.write(text)
-
- # Paramètres géométriques
- car_bride = dico_bride_std[geo_bride]
- text = "**************************************************************\n"
- text = text + "* Paramètres géométriques \n"
- text = text + "**************************************************************\n"
- text = text + para_text(dico_var_geo,car_bride)
- fdgib.write(text)
-
- # Paramètres du maillage
- text = "**************************************************************\n"
- text = text + "* Paramètres physiques \n"
- text = text + "**************************************************************\n"
- text = text + para_text(dico_var_msh,msh_bride)
- fdgib.write(text)
-
- # Algorithme du maillage
- text = "**************************************************************\n"
- text = text + "* Algorithme de maillage \n"
- text = text + "**************************************************************\n"
- text = text + text_datg_std()
- fdgib.write(text)
-
- # Fermeture du fichier maillage
- fdgib.close()
-
-
-# Ecriture du fichier GIBI principal (dgib) - Bride QUELCONQUE
-def write_file_dgib_QQE(unite_mgib,unite_datg,msh_bride,geo_bride):
-
- # Nom du fichier maillage produit par GIBI
- nomFichierMGIB = name_file_mgib(unite_mgib)
-
- # Nom du fichier de commandes pour GIBI
- nomFichierDATG = name_file_datg(unite_datg)
-
- # Ouverture du fichier d'entree de commandes
- fdgib=open(nomFichierDATG,'w')
-
- # En-tete
- text = "**************************************************************\n"
- text = text + "* Fichier GIBI pour le maillage d'une bride \n"
- text = text + "**************************************************************\n"
- text = text + "\n"
- text = text + "* Ce fichier a été généré automatiquement par la macro ASTER MACR_CABRI_MAIL \n"
- text = text + "* Ne pas modifier\n"
- text = text + "\n"
- text = text + "**************************************************************\n"
- text = text + "* Type bride: Bride quelconque\n"
- text = text + "**************************************************************\n"
- text = text + "titre '"+"Bride Quelconque"+"';\n"
- text = text + "\n"
- text = text + "nomfich = CHAINE \n"
- if len(nomFichierMGIB)>72:
- raise Exception, 'Nom de fichier trop long (limité à 72 caractères ' \
- 'pour GIBI) :\n',nomFichierMGIB
- elif len(nomFichierMGIB)<=69:
- text = text + "'"+nomFichierMGIB+"';\n"
- else:
- text = text + "'"+nomFichierMGIB[:69]+"'\n" \
- + "'"+nomFichierMGIB[69:]+"';\n"
- text = text + "opti dime 3 elem cub8 SAUV FORM nomfich;\n"
- text = text + "dens 1;\n"
- text = text + "\n"
- fdgib.write(text)
-
- # Procédures internes supplémentaires
- text = "**************************************************************\n"
- text = text + "* Procédures supplémentaires \n"
- text = text + "**************************************************************\n"
- text = text + text_datg_pro()
- fdgib.write(text)
-
- # Début de procédure de création du maillage
- text = "**************************************************************\n"
- text = text + "**************************************************************\n"
- text = text + "********* Début de procédure de création du maillage *********\n"
- text = text + "**************************************************************\n"
- text = text + "**************************************************************\n"
- text = text + "\n debproc constru;\n"
- fdgib.write(text)
-
- # Paramètres géométriques
- text = "**************************************************************\n"
- text = text + "* Paramètres géométriques \n"
- text = text + "**************************************************************\n"
- text = text + para_text(dico_var_geo,geo_bride)
- fdgib.write(text)
-
- # Paramètres du maillage
- text = "**************************************************************\n"
- text = text + "* Paramètres physiques \n"
- text = text + "**************************************************************\n"
- text = text + para_text(dico_var_msh,msh_bride)
- fdgib.write(text)
-
- # Algorithme du maillage
- text = "**************************************************************\n"
- text = text + "* Algorithme de maillage \n"
- text = text + "**************************************************************\n"
- text = text + text_datg_qqe()
- fdgib.write(text)
-
- # Fermeture du fichier maillage
- fdgib.close()
-
-# Génération du nom du fichier pour le fichier maillage résultant (format GIBI)
-def name_file_mgib(unite_mgib):
- cur_dir = os.getcwd()
- nomFichier = cur_dir+'/fort.'+str(unite_mgib)
- return nomFichier
-
-
-# Génération du nom du fichier pour le fichier générant le maillage (commandes GIBI)
-def name_file_datg(unite_datg):
- cur_dir = os.getcwd()
- nomFichier = cur_dir+'/fort.'+str(unite_datg)
- return nomFichier
-
-# Récupère un fichier texte DATG: texte GIBI pour procédures
-def text_datg_pro():
- import aster
- loc_datg = aster.repdex()
- datg_bridePro = loc_datg+"macr_cabri_mail_proc.datg"
- fproc=open(datg_bridePro,'r')
- procText = fproc.read()
- fproc.close()
-
- return procText
-
-# Récupère un fichier texte DATG: texte GIBI pour bride quelconque
-def text_datg_qqe():
- import aster
- loc_datg = aster.repdex()
- datg_brideQqe = loc_datg+"macr_cabri_mail_qqe.datg"
- fproc=open(datg_brideQqe,'r')
- procText = fproc.read()
- fproc.close()
-
- return procText
-
-# Récupère un fichier texte DATG: texte GIBI pour bride standard
-def text_datg_std():
- import aster
- loc_datg = aster.repdex()
- datg_brideStd = loc_datg+"macr_cabri_mail_std.datg"
- fproc=open(datg_brideStd,'r')
- procText = fproc.read()
- fproc.close()
-
- return procText
-
-# Génération du texte pour les variables
-def para_text(dico_var,var):
- text = '\n'
- for nom_var in var.keys():
- text = text+"* "+dico_var[nom_var]+"\n"
- text = text+nom_var+" = "+`var[nom_var]`+";\n"
- return text
-
-#=============================================================================================
-# Accès au catalogue des brides standards
-# (les brides standards sont décrites dans le fichier Data_Brides.py)
-#=============================================================================================
-
-
-
-# Imprime tout le catalogue des brides standards disponibles dans un fichier texte
-def print_bride_std(nom_fichier):
- text = bride_std()
- # Ouverture du fichier
- finfo=open(nom_fichier,'w')
- # Ecriture des infos
- finfo.write(text)
- # Fermeture du fichier
- finfo.close()
-
-# Catalogue complet des brides standards disponibles
-def bride_std():
- # Ligne d'info
- text = "Liste des brides standards avec leurs dimensions\n"
- # Première ligne
- text = text+"\t"
- for nom_variable in dico_var_geo.keys():
- text = text + nom_variable+"\t\t"
- text = text + "\n"
- # Lignes suivantes
- for nom_bride in dico_bride_std.keys():
- bride = dico_bride_std[nom_bride]
- text = text + nom_bride + '\t'
- for nom_var in dico_var_geo.keys():
- chaine = "%f" % (bride[nom_var])
- text = text+chaine+"\t"
- text = text + "\n"
- return text
+++ /dev/null
-#@ MODIF macr_cara_poutre_ops Macro DATE 05/09/2005 AUTEUR DURAND C.DURAND
-# -*- coding: iso-8859-1 -*-
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2003 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE JMBHH01 J.M.PROIX
-
-def macr_cara_poutre_ops(self,UNITE_MAILLAGE,SYME_X,SYME_Y,GROUP_MA_BORD,
- GROUP_MA,ORIG_INER,**args):
- """
- Ecriture de la macro MACR_CARA_POUTRE
- """
- import types
- from Accas import _F
- from Utilitai.Utmess import UTMESS
- ier=0
- # On importe les definitions des commandes a utiliser dans la macro
- # Le nom de la variable doit etre obligatoirement le nom de la commande
- LIRE_MAILLAGE =self.get_cmd('LIRE_MAILLAGE')
- DEFI_GROUP =self.get_cmd('DEFI_GROUP')
- CREA_MAILLAGE =self.get_cmd('CREA_MAILLAGE')
- AFFE_MODELE =self.get_cmd('AFFE_MODELE')
- DEFI_MATERIAU =self.get_cmd('DEFI_MATERIAU')
- AFFE_MATERIAU =self.get_cmd('AFFE_MATERIAU')
- DEFI_FONCTION =self.get_cmd('DEFI_FONCTION')
- DEFI_CONSTANTE =self.get_cmd('DEFI_CONSTANTE')
- AFFE_CHAR_THER =self.get_cmd('AFFE_CHAR_THER')
- AFFE_CHAR_THER_F=self.get_cmd('AFFE_CHAR_THER_F')
- THER_LINEAIRE =self.get_cmd('THER_LINEAIRE')
- CALC_VECT_ELEM =self.get_cmd('CALC_VECT_ELEM')
- CALC_MATR_ELEM =self.get_cmd('CALC_MATR_ELEM')
- NUME_DDL =self.get_cmd('NUME_DDL')
- ASSE_VECTEUR =self.get_cmd('ASSE_VECTEUR')
- POST_ELEM =self.get_cmd('POST_ELEM')
- CALC_ELEM =self.get_cmd('CALC_ELEM')
- INTE_MAIL_2D =self.get_cmd('INTE_MAIL_2D')
- POST_RELEVE_T =self.get_cmd('POST_RELEVE_T')
- IMPR_TABLE =self.get_cmd('IMPR_TABLE')
- IMPR_CO =self.get_cmd('IMPR_CO')
- # La macro compte pour 1 dans la numerotation des commandes
- self.set_icmd(1)
-
- # Le concept sortant (de type tabl_cara_geom) est nommé 'nomres' dans
- # le contexte de la macro
-
- self.DeclareOut('nomres',self.sd)
-
-# if GROUP_MA_BORD and GROUP_MA:
-# if not LIAISON:
-# UTMESS('F', "MACR_CARA_POUTRE", "Avec GROUP_MA, il faut obligatoirement preciser LIAISON, LONGUEUR ET MATERIAU")
-#
- __nomlma=LIRE_MAILLAGE(UNITE=UNITE_MAILLAGE,)
-
- __nomamo=AFFE_MODELE(MAILLAGE=__nomlma,
- AFFE=_F(TOUT='OUI',
- PHENOMENE='MECANIQUE',
- MODELISATION='D_PLAN',), )
-
- __nomdma=DEFI_MATERIAU(ELAS=_F(E=1.0,NU=0.,RHO=1.0),)
-
-
- __nomama=AFFE_MATERIAU(MAILLAGE=__nomlma,
- AFFE=_F(TOUT='OUI',
- MATER=__nomdma,), )
-
-# --- CALCUL DES CARACTERISTIQUES GEOMETRIQUES DE LA SECTION :
-# ------------------------------------------------------
-
- motsimps={}
- if GROUP_MA : motsimps['GROUP_MA'] = GROUP_MA
- if SYME_X : motsimps['SYME_X'] = SYME_X
- if SYME_Y : motsimps['SYME_Y'] = SYME_Y
- motsimps['ORIG_INER'] = ORIG_INER
- mfact=_F(TOUT='OUI',**motsimps)
- nomres=POST_ELEM(MODELE=__nomamo,
- CHAM_MATER=__nomama,
- CARA_GEOM=mfact )
-
-# nb : si GROUP_MA n existe pas : le mot clé est ignoré
-
-#
-# ==================================================================
-# --- = CALCUL DE LA CONSTANTE DE TORSION SUR TOUT LE MAILLAGE =
-# --- = OU DU CENTRE DE TORSION/CISAILLEMENT =
-# --- = DES COEFFICIENTS DE CISAILLEMENT =
-# --- = ET DE L INERTIE DE GAUCHISSEMENT =
-# --- = DU RAYON DE TORSION SUR TOUT LE MAILLAGE
-# --- = ON CREE UN MODELE PLAN 2D THERMIQUE REPRESENTANT LA SECTION =
-# --- = DE LA POUTRE CAR ON A A RESOUDRE DES E.D.P. AVEC DES LAPLACIENS=
-# ==================================================================
-
- if GROUP_MA_BORD and not GROUP_MA:
-# --- TRANSFORMATION DES GROUP_MA EN GROUP_NO SUR-LESQUELS
-# --- ON POURRA APPLIQUER DES CONDITIONS DE TEMPERATURE IMPOSEE :
-# ---------------------------------------------------------
- motscles={}
- if type(GROUP_MA_BORD)==types.StringType:
- motscles['CREA_GROUP_NO']=_F(GROUP_MA=GROUP_MA_BORD,)
- else:
- motscles['CREA_GROUP_NO']=[]
- for grma in GROUP_MA_BORD:
- motscles['CREA_GROUP_NO'].append(_F(GROUP_MA=grma,))
- __nomlma=DEFI_GROUP(reuse=__nomlma,
- MAILLAGE=__nomlma,
- **motscles)
-
-
-
-# --- CREATION D UN MAILLAGE IDENTIQUE AU PREMIER A CECI PRES
-# --- QUE LES COORDONNEES SONT EXPRIMEES DANS LE REPERE PRINCIPAL
-# --- D INERTIE DONT L ORIGINE EST LE CENTRE DE GRAVITE DE LA SECTION :
-# ---------------------------------------------------------------
-
- __nomapi=CREA_MAILLAGE(MAILLAGE=__nomlma,
- REPERE=_F(TABLE=nomres,
- NOM_ORIG='CDG', ), )
-
-# --- AFFECTATION DU PHENOMENE 'THERMIQUE' AU MODELE EN VUE DE
-# --- LA CONSTRUCTION D UN OPERATEUR LAPLACIEN SUR CE MODELE :
-# ------------------------------------------------------
-
- __nomoth=AFFE_MODELE(MAILLAGE=__nomapi,
- AFFE=_F(TOUT='OUI',
- PHENOMENE='THERMIQUE',
- MODELISATION='PLAN',), )
-
-# --- POUR LA CONSTRUCTION DU LAPLACIEN, ON DEFINIT UN
-# --- PSEUDO-MATERIAU DONT LES CARACTERISTIQUES THERMIQUES SONT :
-# --- LAMBDA = 1, RHO*CP = 0 :
-# ----------------------
-
- __nomath=DEFI_MATERIAU(THER=_F(LAMBDA=1.0,RHO_CP=0.,),)
-
-# --- DEFINITION D UN CHAM_MATER A PARTIR DU MATERIAU PRECEDENT :
-# ---------------------------------------------------------
-
- __chmath=AFFE_MATERIAU(MAILLAGE=__nomapi,
- AFFE=_F(TOUT='OUI',
- MATER=__nomath,), )
-
-#
-# ------------------------------------------------------------
-# --- - CALCUL DE LA CONSTANTE DE TORSION PAR RESOLUTION -
-# --- - D UN LAPLACIEN AVEC UN TERME SOURCE EGAL A -2 -
-# --- - L INCONNUE ETANT NULLE SUR LE CONTOUR DE LA SECTION : -
-# --- - LAPLACIEN(PHI) = -2 DANS LA SECTION -
-# --- - PHI = 0 SUR LE CONTOUR : -
-# ------------------------------------------------------------
-#
-# --- ON IMPOSE LA VALEUR 0 A L INCONNUE SCALAIRE SUR LE CONTOUR
-# --- DE LA SECTION
-# --- ET ON A UN TERME SOURCE EGAL A -2 DANS TOUTE LA SECTION :
-# -------------------------------------------------------
-
- motscles={}
- if args.has_key('GROUP_MA_INTE'):
- if args['GROUP_MA_INTE'] != None :
- motscles['LIAISON_UNIF']=_F(GROUP_MA=args['GROUP_MA_INTE'],DDL='TEMP'),
- __chart1=AFFE_CHAR_THER(MODELE=__nomoth,
- TEMP_IMPO =_F(GROUP_NO=GROUP_MA_BORD,
- TEMP=0. ),
- SOURCE =_F(TOUT='OUI',
- SOUR=2.0),
- **motscles )
-
-# --- POUR CHAQUE TROU DE LA SECTION :
-# --- .ON A IMPOSE QUE PHI EST CONSTANT SUR LE CONTOUR INTERIEUR
-# --- EN FAISANT LE LIAISON_UNIF DANS LE AFFE_CHAR_THER PRECEDENT
-# --- .ON IMPOSE EN PLUS D(PHI)/DN = 2*AIRE(TROU)/L(TROU)
-# --- OU D/DN DESIGNE LA DERIVEE PAR RAPPORT A LA
-# --- NORMALE ET L DESIGNE LA LONGUEUR DU BORD DU TROU :
-# -------------------------------------------------------
-
- if args.has_key('GROUP_MA_INTE'):
- lgmaint=args['GROUP_MA_INTE']
- if lgmaint != None :
- __tbaire=POST_ELEM(MODELE=__nomoth,
- AIRE_INTERNE=_F(GROUP_MA_BORD=args['GROUP_MA_INTE'],), )
-
- motscles={}
- motscles['FLUX_REP']=[]
-
- if type(lgmaint)==types.StringType:
- motscles['FLUX_REP']=_F(GROUP_MA=args['GROUP_MA_INTE'],CARA_TORSION=__tbaire)
- else:
- motscles['FLUX_REP']=[]
- for grma in lgmaint:
- motscles['FLUX_REP'].append(_F(GROUP_MA=grma,CARA_TORSION=__tbaire),)
- __chart2=AFFE_CHAR_THER(MODELE=__nomoth,**motscles)
-
-# --- RESOLUTION DE LAPLACIEN(PHI) = -2
-# --- AVEC PHI = 0 SUR LE CONTOUR :
-# ----------------------------------------
-
- motscles={}
- motscles['EXCIT']=[_F(CHARGE=__chart1,),]
- if args.has_key('GROUP_MA_INTE'):
- if lgmaint != None :
- motscles['EXCIT'].append(_F(CHARGE=__chart2,))
- __tempe1=THER_LINEAIRE(MODELE=__nomoth,
- CHAM_MATER=__chmath,
- SOLVEUR=_F(STOP_SINGULIER='NON',),
- **motscles )
-
-#
-# ----------------------------------------------
-# --- - CALCUL DU CENTRE DE TORSION/CISAILLEMENT -
-# --- - ET DES COEFFICIENTS DE CISAILLEMENT : -
-# ----------------------------------------------
-#
-# --- POUR LE CALCUL DES CONSTANTES DE CISAILLEMENT, ON VA DEFINIR
-# --- UN PREMIER TERME SOURCE, SECOND MEMBRE DE L EQUATION DE LAPLACE
-# --- PAR UNE FONCTION EGALE A Y :
-# --------------------------
-
- __fnsec1=DEFI_FONCTION(NOM_PARA='X',
- VALE=(0.,0.,10.,10.),
- PROL_DROITE='LINEAIRE',
- PROL_GAUCHE='LINEAIRE',
- )
-
- __fnsec0=DEFI_CONSTANTE(VALE=0.,)
-
-# --- LE TERME SOURCE CONSTITUANT LE SECOND MEMBRE DE L EQUATION
-# --- DE LAPLACE EST PRIS EGAL A Y DANS TOUTE LA SECTION :
-# --------------------------------------------------
-
-
- motscles={}
- if args.has_key('NOEUD'):
- motscles['TEMP_IMPO']=(_F(NOEUD=args['NOEUD'],TEMP=__fnsec0))
- __chart2=AFFE_CHAR_THER_F(MODELE=__nomoth,
- SOURCE=_F(TOUT='OUI',
- SOUR=__fnsec1,),
- **motscles )
-
-# --- RESOLUTION DE LAPLACIEN(PHI) = -Y
-# --- AVEC D(PHI)/D(N) = 0 SUR LE CONTOUR :
-# ------------------------------------------------
-
- __tempe2=THER_LINEAIRE(MODELE=__nomoth,
- CHAM_MATER=__chmath,
- EXCIT=_F(CHARGE=__chart2,),
- SOLVEUR=_F(STOP_SINGULIER='NON',),
- )
-
-# --- POUR LE CALCUL DES CONSTANTES DE CISAILLEMENT, ON VA DEFINIR
-# --- UN PREMIER TERME SOURCE, SECOND MEMBRE DE L EQUATION DE LAPLACE
-# --- PAR UNE FONCTION EGALE A Z :
-# --------------------------
-
- __fnsec2=DEFI_FONCTION(NOM_PARA='Y',
- VALE=(0.,0.,10.,10.),
- PROL_DROITE='LINEAIRE',
- PROL_GAUCHE='LINEAIRE',
- )
-
-# --- LE TERME SOURCE CONSTITUANT LE SECOND MEMBRE DE L EQUATION
-# --- DE LAPLACE EST PRIS EGAL A Z DANS TOUTE LA SECTION :
-# --------------------------------------------------
-
- motscles={}
- if args.has_key('NOEUD'):
- motscles['TEMP_IMPO']=_F(NOEUD=args['NOEUD'],TEMP=__fnsec0)
- __chart3=AFFE_CHAR_THER_F(MODELE=__nomoth,
- SOURCE=_F(TOUT='OUI',
- SOUR=__fnsec2,),
- **motscles)
-
-# --- RESOLUTION DE LAPLACIEN(PHI) = -Z
-# --- AVEC D(PHI)/D(N) = 0 SUR LE CONTOUR :
-# ------------------------------------------------
-
- __tempe3=THER_LINEAIRE(MODELE=__nomoth,
- CHAM_MATER=__chmath,
- EXCIT=_F(CHARGE=__chart3,),
- SOLVEUR=_F(STOP_SINGULIER='NON',),
- )
-
-# --- CALCUL DU RAYON DE TORSION :
-# --------------------------
-
-# CALCUL DU RAYON DE TORSION EXTERNE : rtext
-
- __tempe1=CALC_ELEM(reuse=__tempe1,
- RESULTAT=__tempe1,
- MODELE=__nomoth,
- CHAM_MATER=__chmath,
- TOUT_ORDRE='OUI',
- OPTION='FLUX_ELNO_TEMP',
- )
-
- __chem=INTE_MAIL_2D(MAILLAGE=__nomapi,
- DEFI_CHEMIN=_F(GROUP_MA=GROUP_MA_BORD),
- INFO=2,)
-
- __flun=POST_RELEVE_T(ACTION=_F(INTITULE='FLUX_NORM',
- CHEMIN=__chem,
- RESULTAT=__tempe1,
- NOM_CHAM='FLUX_ELNO_TEMP',
- TRAC_NOR='OUI',
- NOM_CMP=('FLUX','FLUY'),
- OPERATION='MOYENNE'))
-
- __m1=abs(__flun['TRAC_NOR',3])
- __m2=abs(__flun['TRAC_NOR',4])
- __rtext=max(__m1,__m2)
-
- # CALCUL DU RAYON DE TORSION : rt
- # rt = max ( rtext , 2*AIRE(TROU)/L(TROU) )
-
- if args.has_key('GROUP_MA_INTE'):
- if args['GROUP_MA_INTE'] != None :
- if type(args['GROUP_MA_INTE'])==types.StringType :
- l_group_ma_inte=[args['GROUP_MA_INTE'],]
- else:
- l_group_ma_inte=args['GROUP_MA_INTE']
- for i in range(0,len(l_group_ma_inte)):
- __chem=INTE_MAIL_2D(MAILLAGE=__nomapi,
- DEFI_CHEMIN=_F(GROUP_MA=l_group_ma_inte[i]),
- INFO=2,)
- __flun=POST_RELEVE_T(ACTION=_F(INTITULE='FLUX_NORM',
- CHEMIN=__chem,
- RESULTAT=__tempe1,
- NOM_CHAM='FLUX_ELNO_TEMP',
- TRAC_NOR='OUI',
- NOM_CMP=('FLUX','FLUY'),
- OPERATION='MOYENNE'))
- __m1=(abs(__flun['TRAC_NOR',3])+abs(__flun['TRAC_NOR',4]))/2.
- if __m1 > __rtext :
- __rtext=__m1
-
- __rt=__rtext
-
-# --- CALCUL DE LA CONSTANTE DE TORSION :
-# ---------------------------------
-
- motscles={}
- if args.has_key('GROUP_MA_INTE'):
- lgmaint=args['GROUP_MA_INTE']
- if lgmaint != None :
- motscles['CARA_POUTRE']=_F(CARA_GEOM=nomres,
- LAPL_PHI=__tempe1,
- RT=__rt,
- TOUT='OUI',
- OPTION='CARA_TORSION',
- GROUP_MA_INTE=args['GROUP_MA_INTE'],)
- else:
- motscles['CARA_POUTRE']=_F(CARA_GEOM=nomres,
- LAPL_PHI=__tempe1,
- RT=__rt,
- TOUT='OUI',
- OPTION='CARA_TORSION', )
- nomres=POST_ELEM(reuse=nomres,
- MODELE=__nomoth,
- CHAM_MATER=__chmath,
- **motscles )
-
-
-# --- CALCUL DES COEFFICIENTS DE CISAILLEMENT ET DES COORDONNEES DU
-# --- CENTRE DE CISAILLEMENT/TORSION :
-# ------------------------------
-
- nomres=POST_ELEM(reuse=nomres,
- MODELE=__nomoth,
- CHAM_MATER=__chmath,
- CARA_POUTRE=_F(CARA_GEOM=nomres,
- LAPL_PHI_Y=__tempe2,
- LAPL_PHI_Z=__tempe3,
- TOUT='OUI',
- OPTION='CARA_CISAILLEMENT',), )
-
-
-#
-# ------------------------------------------------------------
-# --- - CALCUL DE L INERTIE DE GAUCHISSEMENT PAR RESOLUTION DE -
-# --- - LAPLACIEN(OMEGA) = 0 DANS LA SECTION -
-# --- - AVEC D(OMEGA)/D(N) = Z*NY-Y*NZ SUR LE -
-# --- - CONTOUR DE LA SECTION -
-# --- - NY ET NZ SONT LES COMPOSANTES DU VECTEUR N NORMAL -
-# --- - A CE CONTOUR -
-# --- - ET SOMME_S(OMEGA.DS) = 0 -
-# --- - OMEGA EST LA FONCTION DE GAUCHISSEMENT -
-# --- - L INERTIE DE GAUCHISSEMENT EST SOMME_S(OMEGA**2.DS) -
-# ------------------------------------------------------------
-#
-# --- CREATION D UN MAILLAGE DONT LES COORDONNEES SONT EXPRIMEES
-# --- DANS LE REPERE PRINCIPAL D INERTIE MAIS AVEC COMME ORIGINE
-# --- LE CENTRE DE TORSION DE LA SECTION, ON VA DONC UTILISER
-# --- LE MAILLAGE DE NOM NOMAPI DONT LES COORDONNEES SONT
-# --- EXPRIMEES DANS LE REPERE PRINCIPAL D'INERTIE, L'ORIGINE
-# --- ETANT LE CENTRE DE GRAVITE DE LA SECTION (QUI EST DONC
-# --- A CHANGER) :
-# ----------
-
- __nomapt=CREA_MAILLAGE(MAILLAGE=__nomapi,
- REPERE=_F(TABLE=nomres,
- NOM_ORIG='TORSION',) )
-
-# --- AFFECTATION DU PHENOMENE 'THERMIQUE' AU MODELE EN VUE DE
-# --- LA CONSTRUCTION D UN OPERATEUR LAPLACIEN SUR CE MODELE :
-# ------------------------------------------------------
-
- __nomot2=AFFE_MODELE(MAILLAGE=__nomapt,
- AFFE=_F(TOUT='OUI',
- PHENOMENE='THERMIQUE',
- MODELISATION='PLAN', ) )
-
-# --- DEFINITION D UN CHAM_MATER A PARTIR DU MATERIAU PRECEDENT :
-# ---------------------------------------------------------
-
- __chmat2=AFFE_MATERIAU(MAILLAGE=__nomapt,
- AFFE=_F(TOUT='OUI',
- MATER=__nomath, ), )
-
-# --- POUR LE CALCUL DE L INERTIE DE GAUCHISSEMENT, ON VA DEFINIR
-# --- LA COMPOSANTE SELON Y DU FLUX A IMPOSER SUR LE CONTOUR
-# --- PAR UNE FONCTION EGALE A -X :
-# ---------------------------
-
- __fnsec3=DEFI_FONCTION(NOM_PARA='X',
- VALE=(0.,0.,10.,-10.),
- PROL_DROITE='LINEAIRE',
- PROL_GAUCHE='LINEAIRE',
- )
-
-# --- POUR LE CALCUL DE L INERTIE DE GAUCHISSEMENT, ON VA DEFINIR
-# --- LA COMPOSANTE SELON X DU FLUX A IMPOSER SUR LE CONTOUR
-# --- PAR UNE FONCTION EGALE A Y :
-# --------------------------
-
- __fnsec4=DEFI_FONCTION(NOM_PARA='Y',
- VALE=(0.,0.,10.,10.),
- PROL_DROITE='LINEAIRE',
- PROL_GAUCHE='LINEAIRE',
- )
-
-# --- DANS LE BUT D IMPOSER LA RELATION LINEAIRE ENTRE DDLS
-# --- SOMME_SECTION(OMEGA.DS) = 0 ( CETTE CONDITION
-# --- VENANT DE L EQUATION D EQUILIBRE SELON L AXE DE LA POUTRE
-# --- N = 0, N ETANT L EFFORT NORMAL)
-# --- ON CALCULE LE VECTEUR DE CHARGEMENT DU A UN TERME SOURCE EGAL
-# --- A 1., LES TERMES DE CE VECTEUR SONT EGAUX A
-# --- SOMME_SECTION(NI.DS) ET SONT DONC LES COEFFICIENTS DE
-# --- LA RELATION LINEAIRE A IMPOSER.
-# --- ON DEFINIT DONC UN CHARGEMENT DU A UN TERME SOURCE EGAL A 1 :
-# -----------------------------------------------------------
-
- __chart4=AFFE_CHAR_THER(MODELE=__nomot2,
- SOURCE=_F(TOUT='OUI',
- SOUR=1.0), )
-
-# --- ON CALCULE LE VECT_ELEM DU AU CHARGEMENT PRECEDENT
-# --- IL S AGIT DES VECTEURS ELEMENTAIRES DONT LE TERME
-# --- AU NOEUD COURANT I EST EGAL A SOMME_SECTION(NI.DS) :
-# --------------------------------------------------
-
- __vecel=CALC_VECT_ELEM(CHARGE=__chart4,
- OPTION='CHAR_THER'
- )
-
-# --- ON CALCULE LE MATR_ELEM DES MATRICES ELEMENTAIRES
-# --- DE CONDUCTIVITE UNIQUEMENT POUR GENERER LE NUME_DDL
-# --- SUR-LEQUEL S APPUIERA LE CHAMNO UTILISE POUR ECRIRE LA
-# --- RELATION LINEAIRE ENTRE DDLS :
-# ----------------------------
-
- __matel=CALC_MATR_ELEM(MODELE=__nomot2,
- CHAM_MATER=__chmat2,
- CHARGE=__chart4,
- OPTION='RIGI_THER',)
-
-# --- ON DEFINIT LE NUME_DDL ASSOCIE AU MATR_ELEM DEFINI
-# --- PRECEDEMMENT POUR CONSTRUIRE LE CHAMNO UTILISE POUR ECRIRE LA
-# --- RELATION LINEAIRE ENTRE DDLS :
-# ----------------------------
-
- __numddl=NUME_DDL(MATR_RIGI=__matel,
- METHODE='LDLT', )
-
-# --- ON CONSTRUIT LE CHAMNO QUI VA ETRE UTILISE POUR ECRIRE LA
-# --- RELATION LINEAIRE ENTRE DDLS :
-# ----------------------------
-
- __chamno=ASSE_VECTEUR(VECT_ELEM=__vecel,
- NUME_DDL=__numddl, )
-
-# --- ON IMPOSE LA RELATION LINEAIRE ENTRE DDLS
-# --- SOMME_SECTION(OMEGA.DS) = 0 ( CETTE CONDITION
-# --- VENANT DE L EQUATION D EQUILIBRE SELON L AXE DE LA POUTRE
-# --- N = 0, N ETANT L EFFORT NORMAL)
-# --- POUR IMPOSER CETTE RELATION ON PASSE PAR LIAISON_CHAMNO,
-# --- LES TERMES DU CHAMNO (I.E. SOMME_SECTION(NI.DS))
-# --- SONT LES COEFFICIENTS DE LA RELATION LINEAIRE :
-# ---------------------------------------------
-
- __chart5=AFFE_CHAR_THER(MODELE=__nomot2,
- LIAISON_CHAMNO=_F(CHAM_NO=__chamno,
- COEF_IMPO=0.), )
-
-# --- LE CHARGEMENT EST UN FLUX REPARTI NORMAL AU CONTOUR
-# --- DONT LES COMPOSANTES SONT +Z (I.E. +Y) ET -Y (I.E. -X)
-# --- SELON LA DIRECTION NORMALE AU CONTOUR :
-# -------------------------------------
-
- __chart6=AFFE_CHAR_THER_F(MODELE=__nomot2,
- FLUX_REP=_F(GROUP_MA=GROUP_MA_BORD,
- FLUX_X =__fnsec4,
- FLUX_Y =__fnsec3,), )
-
-# --- RESOLUTION DE LAPLACIEN(OMEGA) = 0
-# --- AVEC D(OMEGA)/D(N) = Z*NY-Y*NZ SUR LE CONTOUR DE LA SECTION
-# --- ET SOMME_SECTION(OMEGA.DS) = 0 ( CETTE CONDITION
-# --- VENANT DE L EQUATION D EQUILIBRE SELON L AXE DE LA POUTRE
-# --- N = 0, N ETANT L EFFORT NORMAL) :
-# -------------------------------
-
- __tempe4=THER_LINEAIRE(MODELE=__nomot2,
- CHAM_MATER=__chmat2,
- EXCIT=(_F(CHARGE=__chart5,),
- _F(CHARGE=__chart6,),),
- SOLVEUR=_F(METHODE='LDLT',
- RENUM='SANS',
- STOP_SINGULIER='NON',), )
-
-# --- CALCUL DE L INERTIE DE GAUCHISSEMENT :
-# -------------------------------------
-
- nomres=POST_ELEM(reuse=nomres,
- MODELE=__nomot2,
- CHAM_MATER=__chmat2,
- CARA_POUTRE=_F(CARA_GEOM=nomres,
- LAPL_PHI=__tempe4,
- TOUT='OUI',
- OPTION='CARA_GAUCHI'), )
-
-
-#
-# ==================================================================
-# --- = CALCUL DE LA CONSTANTE DE TORSION SUR CHAQUE GROUPE =
-# --- = ET DU RAYON DE TORSION SUR CHAQUE GROUPE =
-# --- = DU CENTRE DE TORSION/CISAILLEMENT =
-# --- = DES COEFFICIENTS DE CISAILLEMENT =
-# ==================================================================
-
-
-#
-
-
- if GROUP_MA_BORD and GROUP_MA:
-
- if type(GROUP_MA_BORD)==types.StringType :
- l_group_ma_bord=[GROUP_MA_BORD,]
- else:
- l_group_ma_bord= GROUP_MA_BORD
- if type(GROUP_MA)==types.StringType :
- l_group_ma=[GROUP_MA,]
- else:
- l_group_ma= GROUP_MA
-
- if args.has_key('NOEUD'):
- if type(args['NOEUD'])==types.StringType :
- l_noeud=[args['NOEUD'],]
- else:
- l_noeud= args['NOEUD']
-
- if len(l_group_ma)!=len(l_group_ma_bord):
- UTMESS('F', "MACR_CARA_POUTRE", "GROUP_MA et GROUP_MA_BORD incoherents")
- if args.has_key('NOEUD') and (len(l_group_ma)!=len(l_noeud)):
- UTMESS('F', "MACR_CARA_POUTRE", "GROUP_MA et NOEUD incoherents")
-
- for i in range(0,len(l_group_ma_bord)):
-
-# --- TRANSFORMATION DES GROUP_MA EN GROUP_NO SUR-LESQUELS
-# --- ON POURRA APPLIQUER DES CONDITIONS DE TEMPERATURE IMPOSEE :
-# ---------------------------------------------------------
-
- __nomlma=DEFI_GROUP(reuse=__nomlma,
- MAILLAGE=__nomlma,
- CREA_GROUP_NO=_F(GROUP_MA=l_group_ma_bord[i],) )
-
-
-# --- CREATION D UN MAILLAGE IDENTIQUE AU PREMIER A CECI PRES
-# --- QUE LES COORDONNEES SONT EXPRIMEES DANS LE REPERE PRINCIPAL
-# --- D INERTIE DONT L ORIGINE EST LE CENTRE DE GRAVITE DE LA SECTION :
-# ---------------------------------------------------------------
-
- __nomapi=CREA_MAILLAGE(MAILLAGE=__nomlma,
- REPERE=_F(TABLE=nomres,
- NOM_ORIG='CDG',
- GROUP_MA=l_group_ma[i], ), )
-
-# --- AFFECTATION DU PHENOMENE 'THERMIQUE' AU MODELE EN VUE DE
-# --- LA CONSTRUCTION D UN OPERATEUR LAPLACIEN SUR CE MODELE :
-# ------------------------------------------------------
-
- __nomoth=AFFE_MODELE(MAILLAGE=__nomapi,
- AFFE=_F(GROUP_MA=l_group_ma[i],
- PHENOMENE='THERMIQUE',
- MODELISATION='PLAN', ) )
-
-# --- POUR LA CONSTRUCTION DU LAPLACIEN, ON DEFINIT UN
-# --- PSEUDO-MATERIAU DONT LES CARACTERISTIQUES THERMIQUES SONT :
-# --- LAMBDA = 1, RHO*CP = 0 :
-# ----------------------
-
- __nomath=DEFI_MATERIAU(THER=_F(LAMBDA=1.0,
- RHO_CP=0.0, ), )
-
-# --- DEFINITION D UN CHAM_MATER A PARTIR DU MATERIAU PRECEDENT :
-# ---------------------------------------------------------
-
- __chmath=AFFE_MATERIAU(MAILLAGE=__nomapi,
- AFFE=_F(TOUT='OUI',
- MATER=__nomath ), )
-
-#
-# ------------------------------------------------------------
-# --- - CALCUL DE LA CONSTANTE DE TORSION PAR RESOLUTION -
-# --- - D UN LAPLACIEN AVEC UN TERME SOURCE EGAL A -2 -
-# --- - L INCONNUE ETANT NULLE SUR LE CONTOUR DE LA SECTION : -
-# --- - LAPLACIEN(PHI) = -2 DANS LA SECTION -
-# --- - PHI = 0 SUR LE CONTOUR : -
-# ------------------------------------------------------------
-#
-# --- ON IMPOSE LA VALEUR 0 A L INCONNUE SCALAIRE SUR LE CONTOUR
-# --- DE LA SECTION
-# --- ET ON A UN TERME SOURCE EGAL A -2 DANS TOUTE LA SECTION :
-# -------------------------------------------------------
-
- __chart1=AFFE_CHAR_THER(MODELE=__nomoth,
- TEMP_IMPO=_F(GROUP_NO=l_group_ma_bord[i],
- TEMP=0.0 ),
- SOURCE=_F(TOUT='OUI',
- SOUR=2.0 ) )
-
-# --- RESOLUTION DE LAPLACIEN(PHI) = -2
-# --- AVEC PHI = 0 SUR LE CONTOUR :
-# ----------------------------------------
-
- __tempe1=THER_LINEAIRE(MODELE=__nomoth,
- CHAM_MATER=__chmath,
- EXCIT=_F(CHARGE=__chart1, ),
- SOLVEUR=_F(STOP_SINGULIER='NON',) )
-
-#
-# ----------------------------------------------
-# --- - CALCUL DU CENTRE DE TORSION/CISAILLEMENT -
-# --- - ET DES COEFFICIENTS DE CISAILLEMENT : -
-# ----------------------------------------------
-#
-# --- POUR LE CALCUL DES CONSTANTES DE CISAILLEMENT, ON VA DEFINIR
-# --- UN PREMIER TERME SOURCE, SECOND MEMBRE DE L EQUATION DE LAPLACE
-# --- PAR UNE FONCTION EGALE A Y :
-# --------------------------
-
- __fnsec1=DEFI_FONCTION(NOM_PARA='X',
- VALE=(0.,0.,10.,10.),
- PROL_DROITE='LINEAIRE',
- PROL_GAUCHE='LINEAIRE', )
-
- __fnsec0=DEFI_CONSTANTE(VALE=0.,)
-
-# --- LE TERME SOURCE CONSTITUANT LE SECOND MEMBRE DE L EQUATION
-# --- DE LAPLACE EST PRIS EGAL A Y DANS TOUTE LA SECTION :
-# --------------------------------------------------
-
- __chart2=AFFE_CHAR_THER_F(MODELE=__nomoth,
- TEMP_IMPO=_F(NOEUD=l_noeud[i],
- TEMP=__fnsec0),
- SOURCE=_F(TOUT='OUI',
- SOUR=__fnsec1) )
-
-# --- RESOLUTION DE LAPLACIEN(PHI) = -Y
-# --- AVEC D(PHI)/D(N) = 0 SUR LE CONTOUR :
-# ------------------------------------------------
-
- __tempe2=THER_LINEAIRE(MODELE=__nomoth,
- CHAM_MATER=__chmath,
- EXCIT=_F(CHARGE=__chart2, ),
- SOLVEUR=_F(STOP_SINGULIER='NON',) )
-
-# --- POUR LE CALCUL DES CONSTANTES DE CISAILLEMENT, ON VA DEFINIR
-# --- UN PREMIER TERME SOURCE, SECOND MEMBRE DE L EQUATION DE LAPLACE
-# --- PAR UNE FONCTION EGALE A Z :
-# --------------------------
-
- __fnsec2=DEFI_FONCTION(NOM_PARA='Y',
- VALE=(0.,0.,10.,10.),
- PROL_DROITE='LINEAIRE',
- PROL_GAUCHE='LINEAIRE', )
-
-# --- LE TERME SOURCE CONSTITUANT LE SECOND MEMBRE DE L EQUATION
-# --- DE LAPLACE EST PRIS EGAL A Z DANS TOUTE LA SECTION :
-# --------------------------------------------------
-
- __chart3=AFFE_CHAR_THER_F(MODELE=__nomoth,
- TEMP_IMPO=_F(NOEUD=l_noeud[i],
- TEMP=__fnsec0),
- SOURCE=_F(TOUT='OUI',
- SOUR=__fnsec2) )
-
-# --- RESOLUTION DE LAPLACIEN(PHI) = -Z
-# --- AVEC D(PHI)/D(N) = 0 SUR LE CONTOUR :
-# ------------------------------------------------
-
- __tempe3=THER_LINEAIRE(MODELE=__nomoth,
- CHAM_MATER=__chmath,
- EXCIT=_F(CHARGE=__chart3, ),
- SOLVEUR=_F(STOP_SINGULIER='NON',) )
-
-# --- CALCUL DU RAYON DE TORSION :
-# --------------------------
-
-# CALCUL DU RAYON DE TORSION EXTERNE : rtext
-
- __tempe1=CALC_ELEM(reuse=__tempe1,
- RESULTAT=__tempe1,
- MODELE=__nomoth,
- CHAM_MATER=__chmath,
- TOUT_ORDRE='OUI',
- OPTION='FLUX_ELNO_TEMP',
- )
-
- __chem=INTE_MAIL_2D(MAILLAGE=__nomapi,
- DEFI_CHEMIN=_F(GROUP_MA=l_group_ma_bord[i]),
- INFO=2,)
-
- __flun=POST_RELEVE_T(ACTION=_F(INTITULE='FLUX_NORM',
- CHEMIN=__chem,
- RESULTAT=__tempe1,
- NOM_CHAM='FLUX_ELNO_TEMP',
- TRAC_NOR='OUI',
- NOM_CMP=('FLUX','FLUY'),
- OPERATION='MOYENNE'))
-
- __m1=abs(__flun['TRAC_NOR',3])
- __m2=abs(__flun['TRAC_NOR',4])
- __rtext=max(__m1,__m2)
-
-# CALCUL DU RAYON DE TORSION : rt
-# rt = max ( rtext , 2*AIRE(TROU)/L(TROU) )
-
- if args.has_key('GROUP_MA_INTE'):
- if args['GROUP_MA_INTE'] != None :
- if type(args['GROUP_MA_INTE'])==types.StringType :
- l_group_ma_inte=[args['GROUP_MA_INTE'],]
- else:
- l_group_ma_inte=args['GROUP_MA_INTE']
- for j in range(0,len(l_group_ma_inte)):
- __chem=INTE_MAIL_2D(MAILLAGE=__nomapi,
- DEFI_CHEMIN=_F(GROUP_MA=l_group_ma_inte[j]),
- INFO=2,)
- __flun=POST_RELEVE_T(ACTION=_F(INTITULE='FLUX_NORM',
- CHEMIN=__chem,
- RESULTAT=__tempe1,
- NOM_CHAM='FLUX_ELNO_TEMP',
- TRAC_NOR='OUI',
- NOM_CMP=('FLUX','FLUY'),
- OPERATION='MOYENNE'))
- __m1=(abs(__flun['TRAC_NOR',3])+abs(__flun['TRAC_NOR',4]))/2.
- if __m1 > __rtext :
- __rtext=__m1
-
- __rt=__rtext
-
-# --- CALCUL DE LA CONSTANTE DE TORSION :
-# ---------------------------------
-
- nomres=POST_ELEM(reuse=nomres,
- MODELE=__nomoth,
- CHAM_MATER=__chmath,
- CARA_POUTRE=_F(CARA_GEOM=nomres,
- LAPL_PHI=__tempe1,
- RT=__rt,
- GROUP_MA=l_group_ma[i],
- OPTION='CARA_TORSION' ), )
-
-# --- CALCUL DES COEFFICIENTS DE CISAILLEMENT ET DES COORDONNEES DU
-# --- CENTRE DE CISAILLEMENT/TORSION :
-# ------------------------------
-
- nomres=POST_ELEM(reuse=nomres,
- MODELE=__nomoth,
- CHAM_MATER=__chmath,
- CARA_POUTRE=_F(CARA_GEOM=nomres,
- LAPL_PHI_Y=__tempe2,
- LAPL_PHI_Z=__tempe3,
- GROUP_MA=l_group_ma[i],
- LONGUEUR=args['LONGUEUR'],
- MATERIAU=args['MATERIAU'],
- LIAISON =args['LIAISON'],
- OPTION='CARA_CISAILLEMENT' ), )
- IMPR_TABLE(TABLE=nomres)
-
- return ier
+++ /dev/null
-#@ MODIF macr_ecla_pg_ops Macro DATE 09/11/2004 AUTEUR VABHHTS J.PELLET
-# -*- coding: iso-8859-1 -*-
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-
-########################################################################
-def macr_ecla_pg_ops(self,RESULTAT,MAILLAGE,RESU_INIT,MODELE_INIT,
- TOUT, GROUP_MA, MAILLE,
- SHRINK, TAILLE_MIN,
- NOM_CHAM, TOUT_ORDRE, NUME_ORDRE, LIST_ORDRE, INST, LIST_INST, PRECISION, CRITERE,
- **args):
- """
- Ecriture de la macro macr_ecla_pg
- """
- import os, string
- from Accas import _F
- from Noyau.N_utils import AsType
- ier=0
-
- # On importe les definitions des commandes a utiliser dans la macro
- CREA_MAILLAGE =self.get_cmd('CREA_MAILLAGE')
- CREA_RESU =self.get_cmd('CREA_RESU')
-
-
- # La macro compte pour 1 dans la numerotation des commandes
- self.set_icmd(1)
-
-
- # Appel à CREA_MAILLAGE :
- motscles={}
- if TOUT : motscles['TOUT'] =TOUT
- if GROUP_MA : motscles['GROUP_MA'] =GROUP_MA
- if MAILLE : motscles['MAILLE'] =MAILLE
-
- self.DeclareOut('ma2',MAILLAGE)
- ma2=CREA_MAILLAGE(ECLA_PG=_F( MODELE = MODELE_INIT, NOM_CHAM=NOM_CHAM,
- SHRINK = SHRINK, TAILLE_MIN=TAILLE_MIN, **motscles ));
-
-
-
- # Appel à CREA_RESU :
- typ2=AsType(RESU_INIT).__name__
- if TOUT_ORDRE : motscles['TOUT_ORDRE'] =TOUT_ORDRE
- if NUME_ORDRE : motscles['NUME_ORDRE'] =NUME_ORDRE
- if LIST_ORDRE : motscles['LIST_ORDRE'] =LIST_ORDRE
- if LIST_INST : motscles['LIST_INST'] =LIST_INST
- if INST : motscles['INST'] =INST
- if TOUT_ORDRE : motscles['TOUT_ORDRE'] =TOUT_ORDRE
-
- self.DeclareOut('resu2',RESULTAT)
- resu2=CREA_RESU( OPERATION='ECLA_PG', TYPE_RESU=string.upper(typ2),
- ECLA_PG=_F( MODELE_INIT= MODELE_INIT, RESU_INIT=RESU_INIT, NOM_CHAM=NOM_CHAM,
- MAILLAGE= ma2, **motscles ));
- return ier
-############################################################################################
-
+++ /dev/null
-#@ MODIF macr_fiab_impr_ops Macro DATE 24/01/2005 AUTEUR DURAND C.DURAND
-# -*- coding: iso-8859-1 -*-
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE GNICOLAS G.NICOLAS
-#
-def macr_fiab_impr_ops(self, INFO,
- TABLE_CIBLE, NOM_PARA_CIBLE, GRADIENTS, **args):
-#
-#
-# 1. args est le dictionnaire des arguments
-# args.keys() est la liste des mots-clés
-# args.keys()[0] est la premiere valeur de cette liste
-# args.keys()[1:] est la liste des valeurs suivantes dans cette liste
-# args.keys(mot_cle) représente le contenu de la variable mot_cle dans la macro appelante.
-#
- """ Macro-commande réalisant l'impression des valeurs pour le logiciel de fiabilite. """
-#
-# On charge les modules nécessaires
- from Accas import _F
-#
-#____________________________________________________________________
-#
-# 1. Préalables
-#____________________________________________________________________
-#
- erreur = 0
-#
-# 1.1 ==> La macro compte pour 1 dans l'exécution des commandes
-#
- self.set_icmd(1)
-#
-# 1.2 ==> On importe les définitions des commandes Aster utilisées
-# dans la macro
-#
- DEFI_FICHIER = self.get_cmd("DEFI_FICHIER")
- IMPR_TABLE = self.get_cmd("IMPR_TABLE")
-#
-# 1.3. ==> Des constantes
-# Atention : le numéro d'unité utilisé ici et celui
-# utlisé dans le python d'échange lance_aster_5
-# doivent correspondre.
-#
- Unite_Fichier_ASTER_vers_FIABILITE = 91
- Nom_Symbolique_Fichier_ASTER_vers_FIABILITE = "ASTER_vers_FIABILITE"
- FORMAT_R="1PE17.10"
-#____________________________________________________________________
-#
-# 2. Définition d'un fichier d'échange
-#____________________________________________________________________
-#
- DEFI_FICHIER ( ACTION= "ASSOCIER",
-# FICHIER = Nom_Symbolique_Fichier_ASTER_vers_FIABILITE,
- UNITE = Unite_Fichier_ASTER_vers_FIABILITE,
- TYPE = "ASCII",
- INFO = INFO )
-#____________________________________________________________________
-#
-# 4. Ecriture de la valeur cible
-#____________________________________________________________________
-#
- IMPR_TABLE ( TABLE = TABLE_CIBLE,
- NOM_PARA = NOM_PARA_CIBLE,
- UNITE = Unite_Fichier_ASTER_vers_FIABILITE,
- FORMAT_R = FORMAT_R,
- INFO = INFO )
-#____________________________________________________________________
-#
-# 5. Ecritures des gradients
-#____________________________________________________________________
-#
- if GRADIENTS is not None :
-#
- for val in GRADIENTS :
-#
- IMPR_TABLE ( TABLE = val["TABLE"],
- SENSIBILITE = val["PARA_SENSI"],
- NOM_PARA = (val["NOM_PARA"]),
- UNITE = Unite_Fichier_ASTER_vers_FIABILITE,
- FORMAT_R = FORMAT_R,
- INFO = INFO )
-#____________________________________________________________________
-#
-# 6. Libération du fichier d'échange
-#____________________________________________________________________
-#
- DEFI_FICHIER ( ACTION= "LIBERER",
- UNITE = Unite_Fichier_ASTER_vers_FIABILITE,
- INFO = INFO )
-#
-#--------------------------------------------------------------------
-# 7. C'est fini !
-#--------------------------------------------------------------------
-#
- return erreur
+++ /dev/null
-#@ MODIF macr_fiabilite_ops Macro DATE 14/09/2004 AUTEUR MCOURTOI M.COURTOIS
-# -*- coding: iso-8859-1 -*-
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-
-
-# RESPONSABLE GNICOLAS G.NICOLAS
-#
-def macr_fiabilite_ops(self, INFO,
- LOGICIEL, VERSION,
- UNITE_ESCL, MESS_ASTER,
- SEUIL, SEUIL_TYPE,
- VARIABLE,
- **args ) :
-#
-# args est le dictionnaire des arguments optionnels
-# args.keys() est la liste des mots-clés
-# args.keys()[0] est la premiere valeur de cette liste
-# args.keys()[1:] est la liste des valeurs suivantes dans cette liste
-# args.keys(mot_cle) représente le contenu de la variable mot_cle dans la macro appelante.
-### print args
-### print args.keys()
-### if len (args.keys())>0 : print args.keys()[0]
-#
- """ Macro-commande réalisant le pilotage du logiciel de fiabilite. """
-#
-# On charge les modules nécessaires
- from Accas import _F
- from Macro import fiabilite_mefisto
- import aster
- import os
- import string
- import sys
- import Numeric
-#
-#____________________________________________________________________
-#
-# 1. Préalables
-#____________________________________________________________________
-#
-# 1.1 ==> La macro compte pour 1 dans l'exécution des commandes
-#
- self.set_icmd(1)
-#
-# 1.2 ==> On importe les définitions des commandes Aster utilisées
-# dans la macro
-#
- EXEC_LOGICIEL = self.get_cmd("EXEC_LOGICIEL")
- DEFI_LIST_REEL = self.get_cmd("DEFI_LIST_REEL")
-#
-# 1.3 ==> Le nom du programme de fiabilite à lancer
-#
- repertoire_outils = aster.repout()
- fiabilite = repertoire_outils + "fiabilite"
-#
-# 1.4 ==> Initialisations
-#
- erreur = 0
- erreur_partiel = [0]
- Rep_Calc_ASTER = os.getcwd()
- Nom_Exec_ASTER = sys.executable
-#
- messages_erreur = { 0 : "Tout va bien",
- 1 : "Impossible de créer le répertoire de travail pour le logiciel de fiabilité.",
- 2 : "Probleme d'ouverture du fichier.",
- 10 : "Erreur dans le choix du logiciel de fiabilité.",
- 11 : "Erreur dans la création des données pour le logiciel de fiabilité.",
- 100 : "Erreur." }
-#
- while not erreur :
-#
-#____________________________________________________________________
-#
-# 2. Répertoires et fichiers
-#____________________________________________________________________
-#
-# 2.1. ==> Création du répertoire pour l'exécution du logiciel de fiabilité
-#
- Nom_Rep_local = "tmp_fiabilite"
- Rep_Calc_LOGICIEL_local = os.path.join(".",Nom_Rep_local)
- Rep_Calc_LOGICIEL_global = os.path.join(Rep_Calc_ASTER,Nom_Rep_local)
-#
- try :
- os.mkdir(Rep_Calc_LOGICIEL_global)
- except os.error,erreur_partiel :
- self.cr.warn("Code d'erreur de mkdir : " + str(erreur_partiel[0]) + " : " + erreur_partiel[1])
- self.cr.fatal("Impossible de créer le répertoire de travail pour le logiciel de fiabilité : "+Rep_Calc_LOGICIEL_global)
- erreur = erreur + 1
- break
-#
-# 2.2. ==> On crée un fichier annexe pour transmettre des données à la procédure
-# de lancement des calculs ASTER par le LOGICIEL.
-# Ce fichier est créé dans le répertoire d'exécution du logiciel de fiabilité.
-# On fait ainsi car les arguments passés ont du mal à transiter via l'exécutable.
-# On stocke :
-# 1. Le niveau d'information
-# 2. L'unité logique associée au jeu de commandes déterministes
-# 3. La gestion des sorties ASTER
-# 4. Le nom de l'exécutable ASTER
-# 5. Le type de seuil du problème (maximum ou minimum)
-#
- fic_Info_ASTER = os.path.join(Rep_Calc_LOGICIEL_global,"InfoExecASTER")
- try :
- f_execAster = open(fic_Info_ASTER, "w")
- except os.error,erreur_partiel :
- self.cr.warn("Fichier : "+fic_Info_ASTER)
- self.cr.warn("Code d'erreur de open : " + str(erreur_partiel[0]) + " : " + erreur_partiel[1])
- erreur = 2
- break
-#
- f_execAster.write(str(INFO)+"\n")
- f_execAster.write(str(UNITE_ESCL)+"\n")
- f_execAster.write(str(MESS_ASTER)+"\n")
- f_execAster.write(str(Nom_Exec_ASTER)+"\n")
- f_execAster.write(str(SEUIL_TYPE))
- f_execAster.close()
- fichier = open (fic_Info_ASTER,"r")
-#
- if INFO >= 2 :
- print "\nContenu du fichier " + fic_Info_ASTER," :"
- les_lignes = fichier.readlines()
- fichier.close()
- print les_lignes, "\n"
-#
-#____________________________________________________________________
-#
-# 3. Les variables par defaut
-#____________________________________________________________________
-#
-# 3.1. ==> Dictionnaire des valeurs physiques et liées à la loi
-#
- valeurs_lois = { }
-#
- for m in VARIABLE :
-#
- v_moy_physique = None
- v_moy_loi = None
- v_min_loi = None
- v_max_loi = None
- sigma_loi = None
-#
-# 3.1.1. ==> loi uniforme : transfert des min et max
-# on définit une moyennne comme étant la médiane des extremes.
-#
- if m["LOI"] == "UNIFORME" :
- v_moy_physique = 0.5 * ( m["VALE_MIN"] + m["VALE_MAX"] )
- v_min_loi = m["VALE_MIN"]
- v_max_loi = m["VALE_MAX"]
-#
-# 3.1.2. ==> loi normale : transfert des moyennne et écart-type.
-#
- elif m["LOI"] == "NORMALE" :
- v_moy_loi = m["VALE_MOY"]
- v_moy_physique = v_moy_loi
- sigma_loi = m["ECART_TYPE"]
-#
-# 3.1.3. ==> loi lognormale : identité du min, conversion pour le reste
-#
- elif m["LOI"] == "LOGNORMALE" :
- v_min_loi = m["VALE_MIN"]
- if m["VALE_MOY_PHY"] is None :
- v_moy_loi = m["VALE_MOY"]
- sigma_loi = m["ECART_TYPE"]
- aux = Numeric.exp(0.5*sigma_loi*sigma_loi+v_moy_loi)
- v_moy_physique = v_min_loi + aux
- else :
- v_moy_physique = m["VALE_MOY_PHY"]
- aux = m["ECART_TYPE_PHY"]/(m["VALE_MOY_PHY"]-m["VALE_MIN"])
- aux1 = 1. + aux*aux
- aux2 = Numeric.sqrt(aux1)
- v_moy_loi = Numeric.log((m["VALE_MOY_PHY"]-m["VALE_MIN"])/aux2)
- aux2 = Numeric.log(aux1)
- sigma_loi = Numeric.sqrt(aux2)
-#
-# 3.1.4. ==> loi normale tronquée : transfert des moyenne, mini/maxi et écart-type
-# on définit une moyennne comme étant la médiane des extremes.
-#
- else :
- v_moy_loi = m["VALE_MOY"]
- v_min_loi = m["VALE_MIN"]
- v_max_loi = m["VALE_MAX"]
- sigma_loi = m["ECART_TYPE"]
- v_moy_physique = 0.5 * ( m["VALE_MIN"] + m["VALE_MAX"] )
-#
- d = { }
- d["v_moy_physique"] = v_moy_physique
- d["v_moy_loi"] = v_moy_loi
- d["v_min_loi"] = v_min_loi
- d["v_max_loi"] = v_max_loi
- d["sigma_loi"] = sigma_loi
- valeurs_lois[m] = d
-#
-#____________________________________________________________________
-#
-# 4. Création des fichiers pour le logiciel de fiabilite
-#____________________________________________________________________
-#
- if ( LOGICIEL == "MEFISTO" ) :
-#
-# 4.1. ==> MEFISTO
-#
- erreur = fiabilite_mefisto.fiabilite_mefisto ( self, Rep_Calc_LOGICIEL_global,
- INFO, VERSION,
- SEUIL, SEUIL_TYPE,
- VARIABLE,
- valeurs_lois,
- **args )
-#
-# 4.2. ==> Erreur si autre logiciel
-#
- else :
-#
- self.cr.warn("Logiciel de fiabilité : "+LOGICIEL)
- erreur = 10
-#
-# 4.3. ==> Arret en cas d'erreur
-#
- if erreur :
- break
-#
-#____________________________________________________________________
-#
-# 5. Ecriture de la commande d"exécution du logiciel de fiabilité
-#
-# Remarque : dans la donnée de la version du logiciel de fiabilité, il faut remplacer
-# le _ de la donnée par un ., qui
-# est interdit dans la syntaxe du langage de commandes ASTER
-# Remarque : il faut remplacer le N majuscule de la donnee par
-# un n minuscule, qui est interdit dans la syntaxe du langage
-# de commandes ASTER
-#____________________________________________________________________
-#
-#
- VERSION=string.replace(VERSION,"_",".")
- VERSION=string.replace(VERSION,"N","n")
-#
- EXEC_LOGICIEL ( ARGUMENT = (_F(NOM_PARA=Rep_Calc_LOGICIEL_global), # nom du repertoire
- _F(NOM_PARA=LOGICIEL), # nom du logiciel de fiabilité
- _F(NOM_PARA=VERSION), # version du logiciel de fiabilité
- ),
- LOGICIEL = fiabilite
- )
-#
-#--------------------------------------------------------------------
-# 6. C'est fini !
-#--------------------------------------------------------------------
-#
- break
-#
-# 6.1. ==> Arret en cas d'erreur
-#
- if erreur :
- if not messages_erreur.has_key(erreur) :
- erreur = 100
- self.cr.fatal(messages_erreur[erreur])
-#
-# 6.2. ==> Si tout va bien, on crée une liste de réels pour le retour
-# A terme, il serait intéressant d'y mettre les résultats
-# de l'analyse fiabiliste. Pour le moment, on se contente de
-# mettre une valeur nulle qui permet de faire un test dans
-# les commandes appelantes.
-#
- aux = [float(erreur)]
-#
- self.DeclareOut("nomres",self.sd)
- nomres = DEFI_LIST_REEL( VALE = aux , INFO = 1 )
-#
- return
-#
-########################## Fin de la fonction##################################
-#
-########################## Auto-test##################################
-#
-if __name__ == "__main__" :
-#
- import os
- import sys
- import tempfile
-#
- Rep_Calc_LOGICIEL_global = tempfile.mktemp()
- os.mkdir(Rep_Calc_LOGICIEL_global)
-#
- classe = None
- INFO = 2
- LOGICIEL = "MEFISTO"
- VERSION = "V3_2"
- UNITE_ESCL = 38
- MESS_ASTER = "DERNIER"
- SEUIL = 1789.
- SEUIL_TYPE = "MAXIMUM"
- VARIABLE = []
- args = {}
-#
- lr8 = macr_fiabilite_ops(classe, INFO,
- LOGICIEL, VERSION,
- UNITE_ESCL, MESS_ASTER,
- SEUIL, SEUIL_TYPE,
- VARIABLE,
- **args )
-### print "lr8 = ", lr8
- Liste = os.listdir(Rep_Calc_LOGICIEL_global)
-#
- for nomfic in Liste :
- fic_total = os.path.join(Rep_Calc_LOGICIEL_global,nomfic)
- os.chmod (fic_total,0755)
- os.remove (fic_total)
- os.rmdir (Rep_Calc_LOGICIEL_global)
-#
- sys.exit("blabla")
+++ /dev/null
-#@ MODIF macr_lign_coupe_ops Macro DATE 05/09/2005 AUTEUR DURAND C.DURAND
-# -*- coding: iso-8859-1 -*-
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-
-
-
-########################################################################
-# script PYTHON de creation d un maillage de ligne de coupe
-
-def crea_mail_lig_coup(dimension,lignes,groups):
-
- import os,sys,copy
- from Utilitai.Utmess import UTMESS
-
-# construction du maillage au format Aster des segments de lignes de coupe
-
- nblig=len(lignes)
- nbngr=len(groups)
-
- resu='TITRE\n'
- titre='Maillage ligne de coupe'+'\n'
- resu=resu+'FINSF\n'
- resu=resu+'COOR_'+str(dimension)+'D\n'
-
-# creation des noeuds
- nbno=0
- for i in range(nblig):
- pt1 = lignes[i][0]
- pt2 = lignes[i][1]
- nbp_lig_coupe = lignes[i][2]
- for j in range(nbp_lig_coupe):
- if dimension==2:
- x=pt1[0]+j*(pt2[0]-pt1[0])/(nbp_lig_coupe-1)
- y=pt1[1]+j*(pt2[1]-pt1[1])/(nbp_lig_coupe-1)
- nbno=nbno+1
- noeud=' N'+str(nbno)+' '+str(x)+' '+str(y)+'\n'
- resu=resu+noeud
- elif dimension==3:
- x=pt1[0]+j*(pt2[0]-pt1[0])/(nbp_lig_coupe-1)
- y=pt1[1]+j*(pt2[1]-pt1[1])/(nbp_lig_coupe-1)
- z=pt1[2]+j*(pt2[2]-pt1[2])/(nbp_lig_coupe-1)
- nbno=nbno+1
- noeud=' N'+str(nbno)+' '+str(x)+' '+str(y)+' '+str(z)+'\n'
- resu=resu+noeud
- for i in range(nbngr):
- for pt in groups[i][1:]:
- if dimension==2:
- nbno=nbno+1
- noeud=' N'+str(nbno)+' '+str(pt[0])+' '+str(pt[1])+'\n'
- resu=resu+noeud
- elif dimension==3:
- nbno=nbno+1
- noeud=' N'+str(nbno)+' '+str(pt[0])+' '+str(pt[1])+' '+str(pt[2])+'\n'
- resu=resu+noeud
- resu=resu+'FINSF\n'
-
-# creation des mailles
- nbma=0
- for i in range(nblig):
- nbp_lig_coupe = lignes[i][2]
- resu=resu+'SEG2\n'
- for j in range(nbp_lig_coupe-1):
- nbma=nbma+1
- maille=' M'+str(nbma)+' N'+str(nbma+i)+' N'+str(nbma+1+i)+'\n'
- resu=resu+maille
- resu=resu+'FINSF\n'
- for i in range(nbngr):
- resu=resu+'SEG2\n'
- for pt in groups[i][1:-1]:
- nbma=nbma+1
- maille=' M'+str(nbma)+' N'+str(nbma+nblig+i)+' N'+str(nbma+nblig+1+i)+'\n'
- resu=resu+maille
- resu=resu+'FINSF\n'
-
-# creation des groupes de mailles (1 par ligne de coupe)
- nbma=0
- for i in range(nblig):
- resu=resu+'GROUP_MA\n'
- resu=resu+' LICOU'+str(i+1)
- nbp_lig_coupe = lignes[i][2]
- for j in range(nbp_lig_coupe-1):
- nbma=nbma+1
- resu=resu+' M'+str(nbma)+'\n'
- resu=resu+'\n'
- resu=resu+'FINSF\n'
- for i in range(nbngr):
- resu=resu+'GROUP_MA\n'
- resu=resu+groups[i][0]
- nbp_lig_coupe = len(groups[i])-1
- for j in range(nbp_lig_coupe-1):
- nbma=nbma+1
- resu=resu+' M'+str(nbma)+'\n'
- resu=resu+'\n'
- resu=resu+'FINSF\n'
- resu=resu+'FIN\n'
-
- return resu
-
-
-########################################################################
-def macr_lign_coupe_ops(self,RESULTAT,UNITE_MAILLAGE,LIGN_COUPE,NOM_CHAM,MODELE,**args):
- """
- Ecriture de la macro MACR_LIGN_COUPE
- """
- import os,string,types
- from Accas import _F
- from Noyau.N_utils import AsType
- import aster,math
- from Utilitai.UniteAster import UniteAster
- from Utilitai.Utmess import UTMESS
- ier=0
-
- # On importe les definitions des commandes a utiliser dans la macro
- LIRE_MAILLAGE =self.get_cmd('LIRE_MAILLAGE')
- DEFI_GROUP =self.get_cmd('DEFI_GROUP')
- AFFE_MODELE =self.get_cmd('AFFE_MODELE')
- PROJ_CHAMP =self.get_cmd('PROJ_CHAMP')
- POST_RELEVE_T =self.get_cmd('POST_RELEVE_T')
- CREA_TABLE =self.get_cmd('CREA_TABLE')
- MODI_REPERE =self.get_cmd('MODI_REPERE')
-
- # La macro compte pour 1 dans la numerotation des commandes
- self.set_icmd(1)
-
- nomresu=RESULTAT.nom
- l_modele=aster.getvectjev(nomresu.ljust(19)+'.MODL')
- n_modele=string.strip(l_modele[0])
- if n_modele=='' :
- if MODELE==None:
- UTMESS('F', "MACR_LIGN_COUPE", "nom du modele absent dans le concept resultat "+nomresu)
- else : n_modele=MODELE.nom
- l_mailla=aster.getvectjev(n_modele.ljust(8)+'.MODELE .NOMA')
- n_mailla=string.strip(l_mailla[0])
- dime=aster.getvectjev(n_mailla.ljust(8)+'.DIME')[5]
- collgrno=aster.getcolljev(n_mailla.ljust(8)+'.GROUPENO')
-
- lignes=[]
- groups=[]
- minidim=dime
- for m in LIGN_COUPE :
- if m['NB_POINTS'] !=None :
- lignes.append((m['COOR_ORIG'],m['COOR_EXTR'],m['NB_POINTS']))
- minidim=min(minidim,len(m['COOR_ORIG']),len(m['COOR_EXTR']))
- elif m['GROUP_NO']!=None :
- ngrno=m['GROUP_NO'].ljust(8).upper()
- if ngrno not in collgrno.keys() :
- UTMESS('F', "MACR_LIGN_COUPE", "le group_no "+ngrno+" n est pas dans le maillage "+n_mailla)
- grpn=collgrno[ngrno]
- l_coor_group=[ngrno,]
- for node in grpn:
- l_coor_group.append(aster.getvectjev(n_mailla.ljust(8)+'.COORDO .VALE',3*(node-1),3))
- groups.append(l_coor_group)
-
- if minidim!=dime:
- UTMESS('F', "MACR_LIGN_COUPE", "dimensions de maillage et de coordonnees incoherentes")
-
-
- # Création du maillage des NB_POINTS segments entre COOR_ORIG et COOR_EXTR
- # ainsi que des segments reliant les noeuds issus des group_no demandés
- # par appel au script python crea_mail_lig_coup
- # le maillage est ensuite recopié dans l unité logique UNITE_MAILLAGE
-
- resu_mail=crea_mail_lig_coup(dime,lignes,groups)
- UL = UniteAster()
- nomFichierSortie = UL.Nom(UNITE_MAILLAGE)
- fproc=open(nomFichierSortie,'w')
- fproc.write(resu_mail)
- fproc.close()
- UL.EtatInit(UNITE_MAILLAGE)
-
- # Lecture du maillage de seg2 contenant toutes les lignes de coupe
-
- __macou=LIRE_MAILLAGE(UNITE=UNITE_MAILLAGE,);
-
- motscles={}
- iocc=1
- motscles['CREA_GROUP_NO']=[]
- for m in LIGN_COUPE :
- if m['NB_POINTS'] !=None :
- motscles['CREA_GROUP_NO'].append(_F(GROUP_MA='LICOU'+str(iocc),) )
- iocc=iocc+1
- elif m['GROUP_NO']!=None :
- motscles['CREA_GROUP_NO'].append(_F(GROUP_MA=m['GROUP_NO'].ljust(8).upper(),) )
- __macou=DEFI_GROUP( reuse =__macou , MAILLAGE=__macou , **motscles );
-
- if AsType(RESULTAT).__name__ in ('evol_elas','evol_noli') :
- __mocou=AFFE_MODELE(MAILLAGE=__macou,
- AFFE=_F(TOUT='OUI',
- PHENOMENE='MECANIQUE',
- MODELISATION='BARRE',),);
- elif AsType(RESULTAT).__name__ in ('evol_ther',) :
- __mocou=AFFE_MODELE(MAILLAGE=__macou,
- AFFE=_F(TOUT='OUI',
- PHENOMENE='THERMIQUE',
- MODELISATION='PLAN',),);
-
- __recou=PROJ_CHAMP(METHODE='ELEM',
- RESULTAT=RESULTAT,
- MODELE_1=self.jdc.current_context[n_modele],
- MODELE_2=__mocou,
- TYPE_CHAM='NOEU',
- NOM_CHAM=NOM_CHAM,);
-
- # Expression des contraintes aux noeuds ou des déplacements dans le repere local
- __remodr=__recou
- if AsType(RESULTAT).__name__ in ('evol_elas','evol_noli') :
- for m in LIGN_COUPE :
- if m['VECT_Y'] !=None :
- epsi=0.00000001
- # --- determination des angles nautiques
- cx1=m['COOR_EXTR'][0]-m['COOR_ORIG'][0]
- cx2=m['COOR_EXTR'][1]-m['COOR_ORIG'][1]
- cx3=0.
- if dime == 3:
- cx3=m['COOR_EXTR'][2]-m['COOR_ORIG'][2]
- nvx=math.sqrt(cx1**2+cx2**2+cx3**2)
- if abs(nvx) < epsi:
- UTMESS('F', "MACR_LIGN_COUPE", "definition incorrecte de la ligne de coupe")
- cx1=cx1/nvx
- cx2=cx2/nvx
- cx3=cx3/nvx
- cy1=m['VECT_Y'][0]
- cy2=m['VECT_Y'][1]
- cy3=0.
- if dime == 3:
- cy3=m['VECT_Y'][2]
- nvy=math.sqrt(cy1**2+cy2**2+cy3**2)
- if abs(nvy) < epsi:
- UTMESS('F', "MACR_LIGN_COUPE", "valeurs incorrectes pour VECT_Y")
- cy1=cy1/nvy
- cy2=cy2/nvy
- cy3=cy3/nvy
- if ((abs(cx1-cy1)<epsi and abs(cx2-cy2)<epsi and abs(cx3-cy3)<epsi) or \
- (abs(cx1+cy1)<epsi and abs(cx2+cy2)<epsi and abs(cx3+cy3)<epsi)):
- UTMESS('F', "MACR_LIGN_COUPE", "valeurs incorrectes pour VECT_Y: x colineaire a y")
- if abs(cx1*cy1+cx2*cy2+cx3*cy3) > epsi :
- cz1=cx2*cy3-cx3*cy2
- cz2=cx3*cy1-cx1*cy3
- cz3=cx1*cy2-cx2*cy1
- nvz=math.sqrt(cz1**2+cz2**2+cz3**2)
- cz1=cz1/nvz
- cz2=cz2/nvz
- cz3=cz3/nvz
- cy1=cz2*cx3-cz3*cx2
- cy2=cz3*cx1-cz1*cx3
- cy3=cz1*cx2-cz2*cx1
- nvy=math.sqrt(cy1**2+cy2**2+cy3**2)
- cy1=cy1/nvy
- cy2=cy2/nvy
- cy3=cy3/nvy
- UTMESS('A','MACR_LIGN_COUPE','LE VECTEUR Y N EST PAS ORTHOGONAL A LA LIGNE DE COUPE'
- +'LE VECTEUR Y A ETE ORTHONORMALISE POUR VOUS')
- UTMESS('A','MACR_LIGN_COUPE','VECT_Y=('+str(cy1)+','+str(cy2)+','+str(cy3)+')')
- else:
- cz1=cx2*cy3-cx3*cy2
- cz2=cx3*cy1-cx1*cy3
- cz3=cx1*cy2-cx2*cy1
- beta=0.
- gamma=0.
- if dime ==2:
- alpha = math.atan2(cx2,cx1)
- else:
- if cx1**2 + cx2**2 > epsi :
- alpha=math.atan2(cx2,cx1)
- beta=math.asin(cx3)
- gamma=math.atan2(cy3,cz3)
- else:
- alpha=math.atan2(cy1,cz1)
- beta=math.asin(cx3)
- gamma=0.
- alpha=alpha*180/math.pi
- beta=beta*180/math.pi
- gamma=gamma*180/math.pi
-
- # --- MODI_REPERE
- motscles={}
- motscles['MODI_CHAM']=[]
- motscles['DEFI_REPERE']=[]
- # MODI_CHAM
- if NOM_CHAM == 'DEPL':
- if dime == 2:
- LCMP=['DX','DY']
- TYPE_CHAM='VECT_2D'
- elif dime ==3 :
- LCMP=['DX','DY','DZ']
- TYPE_CHAM='VECT_3D'
- motscles['MODI_CHAM'].append(_F(NOM_CHAM=NOM_CHAM,NOM_CMP=LCMP,TYPE_CHAM=TYPE_CHAM),)
- elif NOM_CHAM in ('SIGM_NOEU_DEPL','SIGM_NOEU_SIEF','SIGM_NOEU_ELGA','SIGM_NOEU_COQU'):
- if dime == 2:
- LCMP=['SIXX','SIYY','SIZZ','SIXY']
- TYPE_CHAM='TENS_2D'
- elif dime ==3 :
- LCMP=['SIXX','SIYY','SIZZ','SIXY','SIXZ','SIYZ']
- TYPE_CHAM='TENS_3D'
- motscles['MODI_CHAM'].append(_F(NOM_CHAM=NOM_CHAM,NOM_CMP=LCMP,TYPE_CHAM=TYPE_CHAM),)
- # DEFI_REPERE
- ANGL_NAUT=[]
- ANGL_NAUT.append(alpha)
- if dime ==3:
- ANGL_NAUT.append(beta)
- ANGL_NAUT.append(gamma)
- motscles['DEFI_REPERE'].append(_F(REPERE='UTILISATEUR',ANGL_NAUT=ANGL_NAUT),)
- __remodr=MODI_REPERE(RESULTAT=__recou,**motscles)
-
-
-
- # Production d'une table pour toutes les lignes de coupe
-
- ioc2=0
- mcACTION=[]
- for m in LIGN_COUPE :
- if m['NB_POINTS'] !=None :
- ioc2=ioc2+1
- groupe='LICOU'+str(ioc2)
- if m['INTITULE'] !=None : intitl=m['INTITULE']
- else : intitl='l.coupe'+str(ioc2)
- elif m['GROUP_NO']!=None :
- groupe=m['GROUP_NO'].ljust(8).upper()
- if m['INTITULE'] !=None : intitl=m['INTITULE']
- else : intitl=groupe
- mcACTION.append( _F(INTITULE = intitl,
- RESULTAT = __remodr,
- GROUP_NO = groupe,
- NOM_CHAM = NOM_CHAM,
- TOUT_CMP = 'OUI',
- OPERATION = 'EXTRACTION', ) )
-
- __tabitm=POST_RELEVE_T(ACTION=mcACTION,);
-
- # on repasse par les tables python pour supprimer les paramètres inutiles
- # NOEUD (car il est propre au maillage de la ligne) et RESU
-
- self.DeclareOut('nomres',self.sd)
- dictab=__tabitm.EXTR_TABLE()
- listpara=dictab.para
- listpara.remove('NOEUD')
- listpara.remove('RESU')
-
- coltab=[]
- for key in listpara :
- val=dictab[key].values()[key]
- if type(val[0])==types.IntType :
- coltab.append(_F(PARA=key,LISTE_I=val))
- elif type(val[0])==types.FloatType :
- coltab.append(_F(PARA=key,LISTE_R=val))
- elif type(val[0])==types.StringType :
- coltab.append(_F(PARA=key,LISTE_K=val,TYPE_K='K16'))
- nomres=CREA_TABLE(LISTE=coltab)
-
- return ier
+++ /dev/null
-#@ MODIF macr_recal_ops Macro DATE 08/11/2005 AUTEUR ASSIRE A.ASSIRE
-# -*- coding: iso-8859-1 -*-
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-
-
-
-def macr_recal_ops(self,UNITE_ESCL, RESU_EXP, POIDS, LIST_PARA, RESU_CALC,
- ITER_MAXI, RESI_GLOB_RELA,UNITE_RESU,PARA_DIFF_FINI,
- GRAPHIQUE, INFO, **args ):
- """Macro commande réalisant le recalage de modèles Aster""",
- # Initialisation du compteur d'erreurs
- ier=0
-
- import string, copy, types, Numeric
- import Macro
- from Cata import cata
- from Cata.cata import DEFI_LIST_REEL
- from Macro.recal import gestion,transforme_list_Num,calcul_F
- from Macro import reca_message
- from Macro import reca_algo
- from Macro import reca_interp
- from Macro import reca_graphique
-
- try:
- from Utilitai.Utmess import UTMESS
- except ImportError:
- def UTMESS(code,sprg,texte):
- fmt='\n <%s> <%s> %s\n\n'
- print fmt % (code,sprg,texte)
-
- # Test du mot-clé GRAPHIQUE
- if GRAPHIQUE:
- dGRAPHIQUE=GRAPHIQUE[0].cree_dict_valeurs(GRAPHIQUE[0].mc_liste)
- if dGRAPHIQUE.has_key('FORMAT') and dGRAPHIQUE['FORMAT'] == 'GNUPLOT':
- # On essaie d'importer Gnuplot -> PAS DE GRAPHIQUE
- try:
- import Gnuplot
- except ImportError:
- GRAPHIQUE == None
- UTMESS('A','MACR_RECAL',"Le logiciel Gnuplot ou le module python Gnuplot.py n'est pas disponible. On desactive l'affichage des courbes.")
-
- # La macro compte pour 1 dans l'execution des commandes
- self.set_icmd(1)
-
- self.DeclareOut('nomres',self.sd)
-
- #_______________________________________________
- #
- # GESTION DE L'OPTION FACULTATIVE POUR LES POIDS
- #_______________________________________________
- if( POIDS == None):
- POIDS=Numeric.ones(len(RESU_EXP))
-
- #_____________________________________________
- #
- # GESTION DES ERREURS DE SYNTAXE
- #_____________________________________________
- texte_erreur = gestion(UNITE_ESCL,LIST_PARA,RESU_CALC,RESU_EXP,POIDS,GRAPHIQUE,UNITE_RESU)
- if (texte_erreur != ""):
- UTMESS('F', "MACR_RECAL", texte_erreur)
-
- #_____________________________________________
- #
- # DECLARATION DE TOUTES LES COMMANDES ASTER
- #_____________________________________________
- for k,v in cata.__dict__.items() :
- if type(v)==types.InstanceType:
- if v.__class__.__name__ in ('OPER','MACRO'):
- self.current_context[k]= v
- self.current_context['_F']=cata.__dict__['_F']
-
- #_____________________________________________
- #
- # INITIALISATIONS
- #_____________________________________________
- iter = 0
- restant,temps_iter=0.,0.
- restant,temps_iter,err=reca_algo.temps_CPU(self,restant,temps_iter)
- para,val,borne_inf,borne_sup = transforme_list_Num(LIST_PARA,RESU_EXP)
- val_init = copy.copy(val)
- L_init = calcul_F(self,UNITE_ESCL,para,val,RESU_CALC)
- #instance de la classe gérant l'affichage des resultats du calcul de l'optimisation
- Mess = reca_message.Message(para,RESU_EXP,copy.copy(val_init),UNITE_RESU)
- #instances des classes pour le calcul de l'erreur et le dimensionnemnt/adim
- Simul = reca_interp.Sim_exp(RESU_EXP,POIDS)
- Dim = reca_algo.Dimension(copy.copy(val_init),para)
- L_J_init,erreur = Simul.multi_interpole(L_init, RESU_CALC)
- J_init = Simul.norme_J(copy.copy(L_J_init),copy.copy(L_J_init),UNITE_RESU)
- J = J_init
- A = Simul.sensibilite(self,UNITE_ESCL,L_init,val,para,RESU_CALC,PARA_DIFF_FINI,UNITE_RESU)
- A = Dim.adim_sensi(A)
- l = reca_algo.lambda_init(Numeric.matrixmultiply(Numeric.transpose(A),A))
- gradient_init =reca_algo.calcul_gradient(A,erreur) #utile pour le test de convergence, on prend les valeurs dimensionnées
- residu = reca_algo.test_convergence(gradient_init,erreur,A,Numeric.zeros(len(gradient_init),Numeric.Float))
- Mess.affiche_result_iter(iter,J,val,residu,Numeric.array([]),UNITE_RESU)
- # On teste un manque de temps CPU
- restant,temps_iter,err=reca_algo.temps_CPU(self,restant,temps_iter)
- if (err==1):
- ier=ier+1
- return ier
-
- #_____________________________________________
- #
- # BOUCLE PRINCIPALE DE L'ALGORITHME
- #_____________________________________________
- epsilon = 10.*RESI_GLOB_RELA
- while((residu > RESI_GLOB_RELA) & (iter<ITER_MAXI)):
- iter = iter +1
- new_val, s, l, Act = reca_algo.Levenberg_bornes(self,val,Dim,val_init,borne_inf,borne_sup,A,erreur,l,UNITE_RESU)
- L_F = calcul_F(self,UNITE_ESCL,para,new_val,RESU_CALC)
- new_L_J,new_erreur = Simul.multi_interpole(L_F, RESU_CALC)
- new_J = Simul.norme_J(L_J_init,new_L_J,UNITE_RESU)
- l = reca_algo.actualise_lambda(l,Dim.adim(val),Dim.adim(new_val),A,erreur,new_J,J)
- val = copy.copy(new_val)
- erreur = copy.copy(new_erreur)
- J = new_J
- A = Simul.sensibilite(self,UNITE_ESCL,L_F,val,para,RESU_CALC,PARA_DIFF_FINI,UNITE_RESU)
- A = Dim.adim_sensi(A)
- residu = reca_algo.test_convergence(gradient_init,erreur,A,s)
- Mess.affiche_result_iter(iter,J,val,residu,Act,UNITE_RESU)
-
- # Affichage des courbes
- if GRAPHIQUE:
- GRAPHE_UL_OUT=GRAPHIQUE['UNITE']
- interactif=(GRAPHIQUE['INTERACTIF']=='OUI')
- reca_graphique.graphique(GRAPHIQUE['FORMAT'],L_F,RESU_EXP,RESU_CALC,iter,GRAPHE_UL_OUT,interactif)
-
- # On teste un manque de temps CPU
- restant,temps_iter,err=reca_algo.temps_CPU(self,restant,temps_iter)
- if (err==1):
- ier=ier+1
- return ier
-
- #_____________________________________________
- #
- # FIN DES ITERATIONS
- # CONVERGENCE OU ECHEC
- #_____________________________________________
- Mess.affiche_etat_final_convergence(iter,ITER_MAXI,RESI_GLOB_RELA,residu,Act,UNITE_RESU)
- reca_algo.calcul_etat_final(para,A,iter,ITER_MAXI,RESI_GLOB_RELA,residu,Mess,UNITE_RESU)
- #_____________________________________________
- #
- # CREATIONS DE LA LISTE DE REELS CONTENANT
- # LES VALEURS DES PARAMETRES A CONVERGENCE
- #_____________________________________________
- lival=[]
- for i in range(len(val)):
- lival.append(val[i])
- nomres=DEFI_LIST_REEL(VALE=lival)
- return
+++ /dev/null
-#@ MODIF macro_elas_mult_ops Macro DATE 05/09/2005 AUTEUR DURAND C.DURAND
-# -*- coding: iso-8859-1 -*-
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-
-
-
-def macro_elas_mult_ops(self,MODELE,CHAM_MATER,CARA_ELEM,NUME_DDL,
- CHAR_MECA_GLOBAL,CHAR_CINE_GLOBAL,LIAISON_DISCRET,
- CAS_CHARGE,SOLVEUR,**args):
- """
- Ecriture de la macro MACRO_ELAS_MULT
- """
- ier=0
- import types
- from Accas import _F
- from Utilitai.Utmess import UTMESS
-
- # On met le mot cle NUME_DDL dans une variable locale pour le proteger
- numeddl=NUME_DDL
- # On importe les definitions des commandes a utiliser dans la macro
- CALC_MATR_ELEM =self.get_cmd('CALC_MATR_ELEM')
- NUME_DDL =self.get_cmd('NUME_DDL')
- ASSE_MATRICE =self.get_cmd('ASSE_MATRICE')
- FACT_LDLT =self.get_cmd('FACT_LDLT')
- CALC_VECT_ELEM =self.get_cmd('CALC_VECT_ELEM')
- ASSE_VECTEUR =self.get_cmd('ASSE_VECTEUR')
- RESO_LDLT =self.get_cmd('RESO_LDLT')
- CREA_RESU =self.get_cmd('CREA_RESU')
- CALC_ELEM =self.get_cmd('CALC_ELEM')
- CALC_NO =self.get_cmd('CALC_NO')
- # La macro compte pour 1 dans la numerotation des commandes
- self.set_icmd(1)
-
- # Le concept sortant (de type mult_elas ou fourier_elas) est nommé
- # 'nomres' dans le contexte de la macro
-
- self.DeclareOut('nomres',self.sd)
-
- ielas = 0
- ifour = 0
- for m in CAS_CHARGE:
- if m['NOM_CAS']:
- ielas=1 # mot clé NOM_CAS présent sous CAS_CHARGE
- tyresu = 'MULT_ELAS'
- else:
- ifour=1 # mot clé MODE_FOURIER présent sous CAS_CHARGE
- tyresu = 'FOURIER_ELAS'
- if ielas==1 and ifour==1:
- UTMESS('F', "MACRO_ELAS_MULT", "On ne peut avoir a la fois NOM_CAS et MODE_FOURIER")
-
- if (numeddl in self.sdprods) or (numeddl==None):
- # Si le concept numeddl est dans self.sdprods ou n est pas nommé
- # il doit etre produit par la macro
- # il faudra donc appeler la commande NUME_DDL
- lnume = 1
- else:
- lnume = 0
-
- if ielas==1 :
- motscles={}
- if CHAR_MECA_GLOBAL: motscles['CHARGE'] =CHAR_MECA_GLOBAL
- elif CHAR_CINE_GLOBAL: motscles['CHARGE'] =CHAR_CINE_GLOBAL
- if CHAM_MATER : motscles['CHAM_MATER']=CHAM_MATER
- if CARA_ELEM : motscles['CARA_ELEM'] =CARA_ELEM
- __nomrig=CALC_MATR_ELEM(OPTION='RIGI_MECA',MODELE=MODELE,**motscles)
-
- if lnume:
- # On peut passer des mots cles egaux a None. Ils sont ignores
- motscles={}
- if SOLVEUR:
- motscles['METHODE'] =SOLVEUR['METHODE']
- motscles['RENUM'] =SOLVEUR['RENUM']
- else:
- motscles['METHODE'] ='MULT_FRONT'
- motscles['RENUM'] ='METIS'
- if numeddl!=None:
- self.DeclareOut('num',numeddl)
- num=NUME_DDL(MATR_RIGI=__nomrig,**motscles)
- else:
- _num=NUME_DDL(MATR_RIGI=__nomrig,**motscles)
- num=_num
- else:
- num=numeddl
-
- __nomras=ASSE_MATRICE(MATR_ELEM=__nomrig,NUME_DDL=num)
-
- __nomraf=FACT_LDLT(MATR_ASSE=__nomras,NPREC=SOLVEUR['NPREC'],STOP_SINGULIER=SOLVEUR['STOP_SINGULIER'])
-
-#####################################################################
-# boucle sur les items de CAS_CHARGE
-
- nomchn=[]
- iocc=0
- for m in CAS_CHARGE:
- iocc=iocc+1
-
- if ifour:
- motscles={}
- if CHAR_MECA_GLOBAL: motscles['CHARGE'] =CHAR_MECA_GLOBAL
- elif CHAR_CINE_GLOBAL: motscles['CHARGE'] =CHAR_CINE_GLOBAL
- if CHAM_MATER : motscles['CHAM_MATER'] =CHAM_MATER
- if CARA_ELEM : motscles['CARA_ELEM'] =CARA_ELEM
- motscles['MODE_FOURIER'] =m['MODE_FOURIER']
- __nomrig=CALC_MATR_ELEM(OPTION='RIGI_MECA',MODELE=MODELE,**motscles)
-
- if lnume:
- _num=NUME_DDL(MATR_RIGI=__nomrig,METHODE=SOLVEUR['METHODE'],RENUM=SOLVEUR['RENUM'])
- num=_num
- lnume=0
-
- __nomras=ASSE_MATRICE(MATR_ELEM=__nomrig,NUME_DDL=num)
-
- __nomraf=FACT_LDLT(MATR_ASSE=__nomras,NPREC=SOLVEUR['NPREC'],STOP_SINGULIER=SOLVEUR['STOP_SINGULIER'])
-
-
- if m['VECT_ASSE']==None :
- motscles={}
- if CHAM_MATER : motscles['CHAM_MATER'] =CHAM_MATER
- if CARA_ELEM : motscles['CARA_ELEM'] =CARA_ELEM
- if ifour : motscles['MODE_FOURIER'] =m['MODE_FOURIER']
- if m['CHAR_MECA'] : motscles['CHARGE'] =m['CHAR_MECA']
- elif m['CHAR_CINE'] : motscles['CHARGE'] =m['CHAR_CINE']
- __nomvel=CALC_VECT_ELEM(OPTION='CHAR_MECA',**motscles)
- __nomasv=ASSE_VECTEUR(VECT_ELEM=__nomvel,NUME_DDL=num)
- else :
- __nomasv=m['VECT_ASSE']
-
-
- __nomchn=RESO_LDLT(MATR_FACT=__nomraf,CHAM_NO=__nomasv,TITRE=m['SOUS_TITRE'])
- nomchn.append(__nomchn)
-
-# fin de la boucle sur les items de CAS_CHARGE
-#####################################################################
-
- motscles={}
- iocc=0
- motscle2={}
- if CHAM_MATER : motscle2['CHAM_MATER']=CHAM_MATER
- if CARA_ELEM : motscle2['CARA_ELEM']=CARA_ELEM
- if CHAM_MATER or CARA_ELEM :
- if ielas :
- motscles['AFFE']=[]
- for m in CAS_CHARGE:
- motscles['AFFE'].append(_F(MODELE=MODELE,
- CHAM_GD=nomchn[iocc],
- NOM_CAS=m['NOM_CAS'],
- **motscle2) )
- iocc=iocc+1
- else :
- motscles['AFFE']=[]
- for m in CAS_CHARGE:
- motscles['AFFE'].append(_F(MODELE=MODELE,
- CHAM_GD=nomchn[iocc],
- NUME_MODE=m['MODE_FOURIER'],
- TYPE_MODE=m['TYPE_MODE'],
- **motscle2) )
- iocc=iocc+1
- else:
- if ielas :
- motscles['AFFE']=[]
- for m in CAS_CHARGE:
- motscles['AFFE'].append(_F(MODELE=MODELE,
- CHAM_GD=nomchn[iocc],
- NOM_CAS=m['NOM_CAS'],) )
- iocc=iocc+1
- else :
- motscles['AFFE']=[]
- for m in CAS_CHARGE:
- motscles['AFFE'].append(_F(MODELE=MODELE,
- CHAM_GD=nomchn[iocc],
- NUME_MODE=m['MODE_FOURIER'],
- TYPE_MODE=m['TYPE_MODE'],) )
- iocc=iocc+1
-
-
- nomres=CREA_RESU(OPERATION='AFFE',TYPE_RESU=tyresu,NOM_CHAM='DEPL',**motscles)
-
-#####################################################################
-# boucle sur les items de CAS_CHARGE pour CALC_ELEM ete CALC_NO
-
- iocc=0
- for m in CAS_CHARGE:
- iocc=iocc+1
-
- if m['OPTION']:
- nbel=0
- nbno=0
- liste_el=[]
- liste_no=[]
- if type(m['OPTION'])==types.StringType:
- if m['OPTION'] in ('FORC_NODA','REAC_NODA',
- 'EPSI_NOEU_DEPL','SIGM_NOEU_DEPL','EFGE_NOEU_DEPL',
- 'EQUI_NOEU_SIGM','EQUI_NOEU_EPSI','FLUX_NOEU_TEMP',):
- nbno=nbno+1
- liste_no.append(m['OPTION'])
- else:
- nbel=nbel+1
- liste_el.append(m['OPTION'])
- else:
- for opt in m['OPTION']:
- if opt in ('FORC_NODA','REAC_NODA',
- 'EPSI_NOEU_DEPL','SIGM_NOEU_DEPL','EFGE_NOEU_DEPL',
- 'EQUI_NOEU_SIGM','EQUI_NOEU_EPSI','FLUX_NOEU_TEMP',):
- nbno=nbno+1
- liste_no.append(opt)
- else:
- nbel=nbel+1
- liste_el.append(opt)
-
- lreac=0
- if nbel:
- motscles={}
- if CHAM_MATER : motscles['CHAM_MATER'] =CHAM_MATER
- if CARA_ELEM : motscles['CARA_ELEM'] =CARA_ELEM
- if ielas:
- motscles['NOM_CAS']=m['NOM_CAS']
- else:
- motscles['NUME_MODE']=m['MODE_FOURIER']
- motscles['EXCIT']=[]
- if m['CHAR_MECA'] :
- for chargt in m['CHAR_MECA'] : motscles['EXCIT'].append(_F(CHARGE=chargt))
- elif m['CHAR_CINE'] :
- for chargt in m['CHAR_CINE'] : motscles['EXCIT'].append(_F(CHARGE=chargt))
- if CHAR_MECA_GLOBAL: motscles['EXCIT'].append(_F(CHARGE=CHAR_MECA_GLOBAL))
- elif CHAR_CINE_GLOBAL: motscles['EXCIT'].append(_F(CHARGE=CHAR_CINE_GLOBAL))
- CALC_ELEM(reuse=nomres,
- RESULTAT=nomres,
- MODELE=MODELE,
- NIVE_COUCHE=m['NIVE_COUCHE'],
- NUME_COUCHE=m['NUME_COUCHE'],
- OPTION=tuple(liste_el),
- **motscles)
- if nbno:
- motscles={}
- if CHAM_MATER : motscles['CHAM_MATER'] =CHAM_MATER
- if CARA_ELEM : motscles['CARA_ELEM'] =CARA_ELEM
- if ielas:
- motscles['NOM_CAS']=m['NOM_CAS']
- else:
- motscles['NUME_MODE']=m['MODE_FOURIER']
- motscles['EXCIT']=[]
- if m['CHAR_MECA'] :
- for chargt in m['CHAR_MECA'] : motscles['EXCIT'].append(_F(CHARGE=chargt))
- elif m['CHAR_CINE'] :
- for chargt in m['CHAR_CINE'] : motscles['EXCIT'].append(_F(CHARGE=chargt))
- if CHAR_MECA_GLOBAL: motscles['EXCIT'].append(_F(CHARGE=CHAR_MECA_GLOBAL))
- elif CHAR_CINE_GLOBAL: motscles['EXCIT'].append(_F(CHARGE=CHAR_CINE_GLOBAL))
- CALC_NO(reuse=nomres,
- RESULTAT=nomres,
- MODELE=MODELE,
- OPTION=tuple(liste_no),
- **motscles)
-
-# fin de la boucle sur les items de CAS_CHARGE
-#####################################################################
- return ier
-
+++ /dev/null
-#@ MODIF macro_matr_ajou_ops Macro DATE 05/09/2005 AUTEUR DURAND C.DURAND
-# -*- coding: iso-8859-1 -*-
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-
-
-def macro_matr_ajou_ops(self,MAILLAGE,GROUP_MA_FLUIDE,GROUP_MA_INTERF,MODELISATION,MODE_MECA,DEPL_IMPO,
- NUME_DDL_GENE,MODELE_GENE,MATR_MASS_AJOU,MATR_AMOR_AJOU,MATR_RIGI_AJOU,
- NOEUD_DOUBLE,FLUIDE,DDL_IMPO,DIST_REFE,SOLVEUR,INFO,AVEC_MODE_STAT,
- MODE_STAT,MONO_APPUI,
- FORC_AJOU,ECOULEMENT,**args):
- """
- Ecriture de la macro MACRO_MATR_AJOU
- """
- from Accas import _F
- import types
- import aster
- from Utilitai.Utmess import UTMESS
- ier=0
-
- # On importe les definitions des commandes a utiliser dans la macro
- DEFI_MATERIAU =self.get_cmd('DEFI_MATERIAU')
- AFFE_MATERIAU =self.get_cmd('AFFE_MATERIAU')
- AFFE_MODELE =self.get_cmd('AFFE_MODELE')
- AFFE_CHAR_THER =self.get_cmd('AFFE_CHAR_THER')
- CALC_MATR_AJOU =self.get_cmd('CALC_MATR_AJOU')
- THER_LINEAIRE =self.get_cmd('THER_LINEAIRE')
- CALC_FORC_AJOU =self.get_cmd('CALC_FORC_AJOU')
-
- # La macro compte pour 1 dans la numerotation des commandes
- self.set_icmd(1)
-
- if len(FLUIDE)==1 :
- message= '<I> <MACRO_MATR_AJOU> tout le domaine fluide specifie dans GROUP_MA_INTERF et GROUP_MA_FLUIDE \n'
- message=message+ ' sera affecte par la masse volumique RHO = '+str(FLUIDE['RHO'])+' \n'
- aster.affiche('MESSAGE',message)
- if FLUIDE['GROUP_MA']!=None :
- message= '<I> <MACRO_MATR_AJOU> cas fluide simple : le group_ma dans lequel vous affectez la masse \n'
- message=message+ 'volumique RHO doit etre la reunion de GROUP_MA_INTERF et GROUP_MA_FLUIDE. \n'
- aster.affiche('MESSAGE',message)
- else :
- for flu in FLUIDE :
- if flu['GROUP_MA']==None :
- UTMESS('F', "MACRO_MATR_AJOU", "cas fluides multiples : precisez le GROUP_MA dans lequel vous affectez la masse volumique RHO")
-
- IOCFLU=len(FLUIDE)
-
-# ---------------------------------------------------------------
-# definition du materiau fluide par caracteristique
-# thermique equivalente
-
-# CAS FLUIDE SIMPLE
- if IOCFLU==1 :
- __NOMMAT=DEFI_MATERIAU( THER = _F( LAMBDA = 1.0,
- RHO_CP = FLUIDE[0]['RHO']))
- __NOMCMA=AFFE_MATERIAU( MAILLAGE = MAILLAGE,
- AFFE = _F( GROUP_MA = (GROUP_MA_FLUIDE,GROUP_MA_INTERF),
- MATER = __NOMMAT), )
-
-# ---------------------------------------------------------------
-# cas fluides multiples
- else :
- affmat=[]
- for flu in FLUIDE:
- __NOMMAT=DEFI_MATERIAU( THER = _F( LAMBDA = 1.0,
- RHO_CP = flu['RHO']))
- mfact=_F(GROUP_MA=flu['GROUP_MA'],MATER=__NOMMAT)
- affmat.append(mfact)
-
- __NOMCMA=AFFE_MATERIAU( MAILLAGE = MAILLAGE,
- AFFE = affmat )
-
-# ---------------------------------------------------------------
-# commande AFFE_MODELE modele fluide
- __NOMFLU=AFFE_MODELE( MAILLAGE = MAILLAGE,
- AFFE = _F( GROUP_MA = (GROUP_MA_FLUIDE,GROUP_MA_INTERF),
- MODELISATION = MODELISATION,
- PHENOMENE = 'THERMIQUE' ), )
-
-# ---------------------------------------------------------------
-# commande AFFE_MODELE modele interface
- __NOMINT=AFFE_MODELE( MAILLAGE = MAILLAGE,
- AFFE = _F( GROUP_MA = GROUP_MA_INTERF,
- MODELISATION = MODELISATION,
- PHENOMENE = 'THERMIQUE' ), )
-
-# ---------------------------------------------------------------
-# commande AFFE_CHAR_THER condition de pression imposee
-# en un point ou un groupe du fluide
- affimp=[]
- nflui=0
- for DDL in DDL_IMPO :
- if DDL['PRES_FLUIDE']!=None :
- nflui=nflui+1
- if DDL['NOEUD'] !=None : mfact=_F(NOEUD =DDL['NOEUD'], TEMP=DDL['PRES_FLUIDE'])
- if DDL['GROUP_NO']!=None : mfact=_F(GROUP_NO=DDL['GROUP_NO'],TEMP=DDL['PRES_FLUIDE'])
- affimp.append(mfact)
- if nflui==0:
- UTMESS('F', "MACRO_MATR_AJOU", "PRES_FLUIDE obligatoire une fois")
-
- __CHARGE=AFFE_CHAR_THER( MODELE = __NOMFLU,
- TEMP_IMPO = affimp )
-
-# ---------------------------------------------------------------
-# calcul des masses, rigidites et amortissements ajoutes en theorie
-# potentielle
-# commande CALC_MATR_AJOU, calcul de la masse ajoutee
-
- if MATR_MASS_AJOU!=None :
- self.DeclareOut('MASSAJ',MATR_MASS_AJOU)
- solveur=SOLVEUR[0].cree_dict_valeurs(SOLVEUR[0].mc_liste)
- mostcles={}
- if NUME_DDL_GENE!=None : mostcles['NUME_DDL_GENE'] =NUME_DDL_GENE
- if INFO !=None : mostcles['INFO'] =INFO
- if MODE_MECA !=None : mostcles['MODE_MECA'] =MODE_MECA
- elif DEPL_IMPO !=None : mostcles['CHAM_NO'] =DEPL_IMPO
- elif MODELE_GENE !=None :
- mostcles['MODELE_GENE'] =MODELE_GENE
- mostcles['AVEC_MODE_STAT']=AVEC_MODE_STAT
- mostcles['DIST_REFE'] =DIST_REFE
- if NOEUD_DOUBLE !=None : mostcles['NOEUD_DOUBLE'] =NOEUD_DOUBLE
-
- MASSAJ = CALC_MATR_AJOU(MODELE_FLUIDE = __NOMFLU,
- MODELE_INTERFACE = __NOMINT,
- CHARGE = __CHARGE,
- CHAM_MATER = __NOMCMA,
- OPTION = 'MASS_AJOU',
- SOLVEUR = solveur,
- **mostcles)
-
-# ---------------------------------------------------------------
-# calcul de l amortissement ajoute
- if (MATR_AMOR_AJOU!=None ) or (MATR_RIGI_AJOU!=None ):
-
-# ---------------------------------------------------------------
-# on definit un nouveau modele fluide pour calculer
-# le potentiel stationnaire - AFFE_MODELE
- grma=[GROUP_MA_FLUIDE,]
- if ECOULEMENT!=None :
- grma.append(ECOULEMENT['GROUP_MA_1'])
- grma.append(ECOULEMENT['GROUP_MA_2'])
- __NOFLUI=AFFE_MODELE( MAILLAGE = MAILLAGE,
- AFFE = _F( GROUP_MA = grma,
- MODELISATION = MODELISATION,
- PHENOMENE = 'THERMIQUE' ), )
- affimp=[]
- for DDL in DDL_IMPO :
- if DDL['PRES_SORTIE']!=None :
- if DDL['NOEUD'] !=None : mfact=_F(NOEUD =DDL['NOEUD'], TEMP=DDL['PRES_SORTIE'])
- if DDL['GROUP_NO']!=None : mfact=_F(GROUP_NO=DDL['GROUP_NO'],TEMP=DDL['PRES_SORTIE'])
- affimp.append(mfact)
-
- affecl=[]
- for ECL in ECOULEMENT :
- mfact=_F(GROUP_MA=ECL['GROUP_MA_1'],FLUN=ECL['VNOR_1'])
- affecl.append(mfact)
- mfact=_F(GROUP_MA=ECL['GROUP_MA_2'],FLUN=ECL['VNOR_2'])
- affecl.append(mfact)
- __CHARG2=AFFE_CHAR_THER( MODELE = __NOFLUI,
- TEMP_IMPO = affimp ,
- FLUX_REP = affecl )
-
- __POTEN = THER_LINEAIRE( MODELE = __NOFLUI,
- CHAM_MATER = __NOMCMA ,
- EXCIT = _F( CHARGE = __CHARG2 ) )
-
-# ---------------------------------------------------------------
-# calcul amortissement proprement dit
- if MATR_AMOR_AJOU!=None :
- self.DeclareOut('AMORAJ',MATR_AMOR_AJOU)
- solveur=SOLVEUR[0].cree_dict_valeurs(SOLVEUR[0].mc_liste)
- mostcles={}
- if NUME_DDL_GENE!=None : mostcles['NUME_DDL_GENE'] =NUME_DDL_GENE
- if INFO !=None : mostcles['INFO'] =INFO
- if MODE_MECA !=None : mostcles['MODE_MECA'] =MODE_MECA
- elif DEPL_IMPO !=None : mostcles['CHAM_NO'] =DEPL_IMPO
- else :
- UTMESS('F', "MACRO_MATR_AJOU", "amortissement ajoute sur modele generalise non encore implante")
-
- AMORAJ = CALC_MATR_AJOU(MODELE_FLUIDE = __NOMFLU,
- MODELE_INTERFACE = __NOMINT,
- CHARGE = __CHARGE,
- CHAM_MATER = __NOMCMA,
- OPTION = 'AMOR_AJOU',
- SOLVEUR = solveur,
- POTENTIEL = __POTEN,
- **mostcles)
-
-# ---------------------------------------------------------------
-# calcul de la rigidite ajoutee
- if MATR_RIGI_AJOU!=None :
- self.DeclareOut('RIGIAJ',MATR_RIGI_AJOU)
- solveur=SOLVEUR[0].cree_dict_valeurs(SOLVEUR[0].mc_liste)
- mostcles={}
- if NUME_DDL_GENE!=None : mostcles['NUME_DDL_GENE'] =NUME_DDL_GENE
- if INFO !=None : mostcles['INFO'] =INFO
- if MODE_MECA !=None : mostcles['MODE_MECA'] =MODE_MECA
- elif DEPL_IMPO !=None : mostcles['CHAM_NO'] =DEPL_IMPO
- else :
- UTMESS('F', "MACRO_MATR_AJOU", "rigidite ajoute sur modele generalise non encore implante")
-
- RIGIAJ = CALC_MATR_AJOU(MODELE_FLUIDE = __NOMFLU,
- MODELE_INTERFACE = __NOMINT,
- CHARGE = __CHARGE,
- CHAM_MATER = __NOMCMA,
- OPTION = 'RIGI_AJOU',
- SOLVEUR = solveur,
- POTENTIEL = __POTEN,
- **mostcles)
-
-# ---------------------------------------------------------------
-# boucle sur le nombre de vecteurs a projeter, commande CALC_FORC_AJOU
- if FORC_AJOU!=None :
- for FORCAJ in FORC_AJOU:
- self.DeclareOut('VECTAJ',FORCAJ['VECTEUR'])
- solveur=SOLVEUR[0].cree_dict_valeurs(SOLVEUR[0].mc_liste)
- mostcles={}
- if NUME_DDL_GENE!=None : mostcles['NUME_DDL_GENE'] =NUME_DDL_GENE
- if MODE_MECA !=None : mostcles['MODE_MECA'] =MODE_MECA
- elif MODELE_GENE !=None :
- mostcles['MODELE_GENE'] =MODELE_GENE
- mostcles['AVEC_MODE_STAT']=AVEC_MODE_STAT
- mostcles['DIST_REFE'] =DIST_REFE
- if NOEUD_DOUBLE !=None : mostcles['NOEUD_DOUBLE'] =NOEUD_DOUBLE
- if MODE_STAT !=None :
- mostcles['MODE_STAT'] =MODE_STAT
- if FORCAJ['NOEUD'] !=None : mostcles['NOEUD'] =FORCAJ['NOEUD']
- if FORCAJ['GROUP_NO'] !=None : mostcles['GROUP_NO'] =FORCAJ['GROUP_NO']
- else :
- mostcles['MONO_APPUI'] =MONO_APPUI
-
- VECTAJ = CALC_FORC_AJOU(DIRECTION = FORCAJ['DIRECTION'],
- MODELE_FLUIDE = __NOMFLU,
- MODELE_INTERFACE = __NOMINT,
- CHARGE = __CHARGE,
- CHAM_MATER = __NOMCMA,
- SOLVEUR = solveur,
- **mostcles)
-
-
- return ier
+++ /dev/null
-#@ MODIF macro_matr_asse_ops Macro DATE 05/09/2005 AUTEUR DURAND C.DURAND
-# -*- coding: iso-8859-1 -*-
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-
-
-
-def macro_matr_asse_ops(self,MODELE,CHAM_MATER,CARA_ELEM,MATR_ASSE,
- SOLVEUR,NUME_DDL,CHARGE,INST,**args):
- """
- Ecriture de la macro MACRO_MATR_ASSE
- """
- ier=0
- from Utilitai.Utmess import UTMESS
-
- # On met le mot cle NUME_DDL dans une variable locale pour le proteger
- numeddl=NUME_DDL
- # On importe les definitions des commandes a utiliser dans la macro
- # Le nom de la variable doit etre obligatoirement le nom de la commande
- CALC_MATR_ELEM=self.get_cmd('CALC_MATR_ELEM')
- NUME_DDL =self.get_cmd('NUME_DDL')
- ASSE_MATRICE =self.get_cmd('ASSE_MATRICE')
- # La macro compte pour 1 dans la numerotation des commandes
- self.set_icmd(1)
-
- if SOLVEUR:
- methode=SOLVEUR['METHODE']
- if methode=='LDLT':
- if SOLVEUR['RENUM']:
- renum=SOLVEUR['RENUM']
- else:
- renum='RCMK'
- if renum not in ('SANS','RCMK'):
- UTMESS('F', "MACRO_MATR_ASSE", "Avec methode LDLT, RENUM doit etre SANS ou RCMK")
- elif methode=='MULT_FRONT':
- if SOLVEUR['RENUM']:
- renum=SOLVEUR['RENUM']
- else:
- renum='MDA'
- if renum not in ('MDA','MD','METIS'):
- UTMESS('F', "MACRO_MATR_ASSE", "Avec methode MULT_FRONT, RENUM doit etre MDA, MD ou RCMK")
- elif methode=='MUMPS':
- if SOLVEUR['RENUM']:
- renum=SOLVEUR['RENUM']
- else:
- renum='SANS'
- if renum not in ('SANS',):
- UTMESS('F', "MACRO_MATR_ASSE", "Avec methode MUMPS, RENUM doit etre SANS")
- elif methode=='GCPC':
- if SOLVEUR['RENUM']:
- renum=SOLVEUR['RENUM']
- else:
- renum='SANS'
- if renum not in ('SANS','RCMK'):
- UTMESS('F', "MACRO_MATR_ASSE", "Avec methode GCPC, RENUM doit etre SANS ou RCMK")
- else:
- methode='MULT_FRONT'
- renum ='MDA'
-
- if numeddl in self.sdprods:
- # Si le concept numeddl est dans self.sdprods
- # il doit etre produit par la macro
- # il faudra donc appeler la commande NUME_DDL
- lnume = 1
- else:
- lnume = 0
- lrigel = 0
- lmasel = 0
-
-# decalage eventuel en premiere position dans la liste de l occurence de MATR_ASSE contenant
-# l option de rigidite
- try :
- for m in MATR_ASSE:
- option=m['OPTION']
- if option in ('RIGI_MECA','RIGI_MECA_LAGR','RIGI_THER','RIGI_ACOU') :
- decal=m
- MATR_ASSE.remove(decal)
- MATR_ASSE.insert(0,decal)
- break
- except: pass
-
- iocc=0
- for m in MATR_ASSE:
- iocc=iocc+1
- option=m['OPTION']
- if iocc == 1 and lnume == 1 and option not in ('RIGI_MECA','RIGI_MECA_LAGR',
- 'RIGI_THER','RIGI_ACOU') :
- UTMESS('F', "MACRO_MATR_ASSE", "UNE DES OPTIONS DOIT ETRE RIGI_MECA OU RIGI_THER OU RIGI_ACOU OU RIGI_MECA_LAGR")
-
-
- motscles={'OPTION':option}
- if option == 'AMOR_MECA':
- if (not lrigel or not lmasel):
- UTMESS('F', "MACRO_MATR_ASSE", "POUR CALCULER AMOR_MECA, IL FAUT AVOIR CALCULE RIGI_MECA ET MASS_MECA AUPARAVANT (DANS LE MEME APPEL)")
- if CHAM_MATER != None:
- motscles['RIGI_MECA'] =rigel
- motscles['MASS_MECA'] =masel
- if CHARGE != None:
- if option[0:9] not in ('MASS_THER','RIGI_GEOM','MASS_ID_M'):
- motscles['CHARGE'] =CHARGE
- if CHAM_MATER != None: motscles['CHAM_MATER'] =CHAM_MATER
- if CARA_ELEM != None: motscles['CARA_ELEM'] =CARA_ELEM
- if INST != None: motscles['INST'] =INST
-
- try : motscles['SIEF_ELGA'] =m['SIEF_ELGA']
- except IndexError : pass
-
- try : motscles['MODE_FOURIER'] =m['MODE_FOURIER']
- except IndexError : pass
-
- try : motscles['THETA'] =m['THETA']
- except IndexError : pass
-
- try : motscles['PROPAGATION'] =m['PROPAGATION']
- except IndexError : pass
- __a=CALC_MATR_ELEM(MODELE=MODELE,**motscles)
-
- if option == 'RIGI_MECA':
- rigel = __a
- lrigel = 1
- if option == 'MASS_MECA':
- masel = __a
- lmasel = 1
-
- if lnume and option in ('RIGI_MECA','RIGI_THER','RIGI_ACOU','RIGI_MECA_LAGR'):
- self.DeclareOut('num',numeddl)
- # On peut passer des mots cles egaux a None. Ils sont ignores
- num=NUME_DDL(MATR_RIGI=__a,METHODE=methode,RENUM=renum)
- else:
- num=numeddl
-
- self.DeclareOut('mm',m['MATRICE'])
- mm=ASSE_MATRICE(MATR_ELEM=__a,NUME_DDL=num)
- return ier
+++ /dev/null
-#@ MODIF macro_miss_3d_ops Macro DATE 14/06/2005 AUTEUR DURAND C.DURAND
-# -*- coding: iso-8859-1 -*-
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-
-
-
-def macro_miss_3d_ops(self,UNITE_IMPR_ASTER,UNITE_OPTI_MISS,
- UNITE_MODELE_SOL,UNITE_RESU_IMPE,
- PROJET,REPERTOIRE,OPTION,VERSION,**args):
- """
- Ecriture de la macro MACRO_MISS_3D
- """
- import types
- from Accas import _F
-
- ier=0
- # On importe les definitions des commandes a utiliser dans la macro
- # Le nom de la variable doit etre obligatoirement le nom de la commande
- DEFI_FICHIER =self.get_cmd('DEFI_FICHIER')
- EXEC_LOGICIEL =self.get_cmd('EXEC_LOGICIEL')
- # La macro compte pour 1 dans la numerotation des commandes
- self.set_icmd(1)
-
- DEFI_FICHIER(ACTION='LIBERER',UNITE=UNITE_IMPR_ASTER)
-
- import aster
- loc_fic=aster.repout()
- miss3d=loc_fic+'miss3d'
- #miss3d='/home/acbhhcd/MISS3D/V6.4/miss3d.csh'
-
- if OPTION['TOUT']!=None:
- MODUL2='COMPLET'
- elif OPTION['MODULE']=='MISS_IMPE':
- MODUL2='CALC_IMPE'
- elif OPTION['MODULE']=='MISS_EVOL':
- MODUL2='MISS_PTAS'
- elif OPTION['MODULE']=='PRE_MISS':
- MODUL2='GTASTER'
-
- ETUDE = PROJET
- BASE = REPERTOIRE
- paste = 'fort.'+str(UNITE_IMPR_ASTER)
- popti = 'fort.'+str(UNITE_OPTI_MISS)
- pdsol = 'fort.'+str(UNITE_MODELE_SOL)
- primp = 'fort.'+str(UNITE_RESU_IMPE)
-
- EXEC_LOGICIEL(
- LOGICIEL=miss3d,
- ARGUMENT=(_F(NOM_PARA=MODUL2),
- _F(NOM_PARA=ETUDE),
- _F(NOM_PARA=BASE),
- _F(NOM_PARA=paste),
- _F(NOM_PARA=popti),
- _F(NOM_PARA=pdsol),
- _F(NOM_PARA=primp),
- _F(NOM_PARA=VERSION), ),
- )
-
- return ier
+++ /dev/null
-#@ MODIF macro_mode_meca_ops Macro DATE 14/06/2005 AUTEUR DURAND C.DURAND
-# -*- coding: iso-8859-1 -*-
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-
-
-
-def macro_mode_meca_ops(self,MATR_A,MATR_B,INFO,METHODE,OPTION,CALC_FREQ,
- VERI_MODE,NORM_MODE,FILTRE_MODE,IMPRESSION,**args):
- """
- Ecriture de la macro MACRO_MODE_MECA
- """
- from Accas import _F
- ier=0
-
- # on protege le contenu du mot cle NORM_MODE pour eviter les confusions
- # avec la commande du meme nom
-
- normode=NORM_MODE
-
- # On importe les definitions des commandes a utiliser dans la macro
- MODE_ITER_SIMULT =self.get_cmd('MODE_ITER_SIMULT')
- NORM_MODE =self.get_cmd('NORM_MODE')
- IMPR_RESU =self.get_cmd('IMPR_RESU')
- EXTR_MODE =self.get_cmd('EXTR_MODE')
- DETRUIRE =self.get_cmd('DETRUIRE')
- # La macro compte pour 1 dans la numerotation des commandes
- self.set_icmd(1)
-
- nompro=None
- iocc=0
- if CALC_FREQ['FREQ']:
- nnfreq=len(CALC_FREQ['FREQ'])
- else:
- lborne=[]
- nnfreq= CALC_FREQ['NB_BLOC_FREQ']+1
- zlborn=(CALC_FREQ['FREQ_MAX']-CALC_FREQ['FREQ_MIN'])/(nnfreq-1)
- for i in range(0,nnfreq):
- lborne.append(CALC_FREQ['FREQ_MIN']+i*zlborn)
-
- motscles={}
- motscles['FILTRE_MODE']=[]
- for i in range(0,nnfreq-1):
- motscit={}
- motscfa={}
- if CALC_FREQ['DIM_SOUS_ESPACE']: motscfa['DIM_SOUS_ESPACE']=CALC_FREQ['DIM_SOUS_ESPACE']
- if CALC_FREQ['COEF_DIM_ESPACE']: motscfa['COEF_DIM_ESPACE']=CALC_FREQ['COEF_DIM_ESPACE']
- if CALC_FREQ['FREQ']:
- motscfa['FREQ']=(CALC_FREQ['FREQ'][i],CALC_FREQ['FREQ'][i+1])
- else:
- motscfa['FREQ']=(lborne[i],lborne[i+1])
- motscit['CALC_FREQ']=_F(OPTION ='BANDE',
- SEUIL_FREQ =CALC_FREQ['SEUIL_FREQ'],
- NPREC_SOLVEUR =CALC_FREQ['NPREC_SOLVEUR'],
- NMAX_ITER_SHIFT =CALC_FREQ['NMAX_ITER_SHIFT'],
- PREC_SHIFT =CALC_FREQ['PREC_SHIFT'],
- **motscfa)
- motscit['VERI_MODE']=_F(STOP_ERREUR=VERI_MODE['STOP_ERREUR'],
- SEUIL =VERI_MODE['SEUIL'],
- STURM =VERI_MODE['STURM'],
- PREC_SHIFT =VERI_MODE['PREC_SHIFT'])
- motscit['STOP_FREQ_VIDE']=CALC_FREQ['STOP_FREQ_VIDE']
-
- if METHODE=='TRI_DIAG':
- if args.has_key('NMAX_ITER_ORTHO'):
- motscit['NMAX_ITER_ORTHO'] =args['NMAX_ITER_ORTHO']
- if args.has_key('PREC_ORTHO'):
- motscit['PREC_ORTHO'] =args['PREC_ORTHO']
- if args.has_key('PREC_LANCZOS'):
- motscit['PREC_LANCZOS'] =args['PREC_LANCZOS']
- if args.has_key('MAX_ITER_QR'):
- motscit['NMAX_ITER_QR'] =args['NMAX_ITER_QR']
- elif METHODE=='JACOBI':
- if args.has_key('NMAX_ITER_BATHE'):
- motscit['NMAX_ITER_BATHE'] =args['NMAX_ITER_BATHE']
- if args.has_key('PREC_BATHE'):
- motscit['PREC_BATHE'] =args['PREC_BATHE']
- if args.has_key('NMAX_ITER_JACOBI'):
- motscit['NMAX_ITER_JACOBI']=args['NMAX_ITER_JACOBI']
- if args.has_key('PREC_JACOBI'):
- motscit['PREC_JACOBI'] =args['PREC_JACOBI']
- elif METHODE=='SORENSEN':
- if args.has_key('NMAX_ITER_SOREN'):
- motscit['NMAX_ITER_SOREN'] =args['NMAX_ITER_SOREN']
- if args.has_key('PARA_ORTHO_SOREN'):
- motscit['PARA_ORTHO_SOREN']=args['PARA_ORTHO_SOREN']
- if args.has_key('PREC_SOREN'):
- motscit['PREC_SOREN'] =args['PREC_SOREN']
-
- __nomre0=MODE_ITER_SIMULT(MATR_A =MATR_A,
- MATR_B =MATR_B,
- INFO =INFO,
- METHODE =METHODE,
- OPTION =OPTION,
- **motscit)
-
- __nomre0=NORM_MODE(reuse =__nomre0,
- MASS_INER =normode['MASS_INER'],
- MODE =__nomre0,
- NORME =normode['NORME'],
- INFO =normode['INFO'],)
-
- if IMPRESSION['TOUT_PARA']=='OUI':
- IMPR_RESU(RESU=_F(RESULTAT=__nomre0,
- TOUT_ORDRE='OUI',
- TOUT_CHAM ='NON',
- TOUT_PARA ='OUI',) )
-
- if FILTRE_MODE :
- motscles['FILTRE_MODE'].append(_F(MODE =__nomre0,
- CRIT_EXTR =FILTRE_MODE['CRIT_EXTR'],
- SEUIL =FILTRE_MODE['SEUIL'], ))
- else:
- motscles['FILTRE_MODE'].append(_F(MODE =__nomre0,
- TOUT_ORDRE='OUI',) )
-
-
- motscles['IMPRESSION']=_F(CUMUL =IMPRESSION['CUMUL'],
- CRIT_EXTR=IMPRESSION['CRIT_EXTR'],)
- self.DeclareOut('nomres',self.sd)
- nomres=EXTR_MODE(**motscles)
- DETRUIRE(CONCEPT=_F(NOM='__nomre0',),ALARME='NON')
- return ier
+++ /dev/null
-#@ MODIF macro_proj_base_ops Macro DATE 05/09/2005 AUTEUR DURAND C.DURAND
-# -*- coding: iso-8859-1 -*-
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-
-
-
-def macro_proj_base_ops(self,BASE,NB_VECT,MATR_ASSE_GENE,VECT_ASSE_GENE,PROFIL,**args):
- """
- Ecriture de la macro MACRO_PROJ_BASE
- """
- ier=0
- from Utilitai.Utmess import UTMESS
- # On importe les definitions des commandes a utiliser dans la macro
- NUME_DDL_GENE =self.get_cmd('NUME_DDL_GENE')
- PROJ_MATR_BASE =self.get_cmd('PROJ_MATR_BASE')
- PROJ_VECT_BASE =self.get_cmd('PROJ_VECT_BASE')
- # La macro compte pour 1 dans la numerotation des commandes
- self.set_icmd(1)
-
- _num=NUME_DDL_GENE(BASE=BASE,NB_VECT=NB_VECT,STOCKAGE=PROFIL)
- if MATR_ASSE_GENE:
- for m in MATR_ASSE_GENE:
- motscles={}
- if m['MATR_ASSE'] : motscles['MATR_ASSE'] =m['MATR_ASSE']
- elif m['MATR_ASSE_GENE']: motscles['MATR_ASSE_GENE']=m['MATR_ASSE_GENE']
- else:
- UTMESS('F', "MACRO_PROJ_BASE", "MATR_ASSE et MATR_ASSE_GENE absents")
- self.DeclareOut('mm',m['MATRICE'])
- mm=PROJ_MATR_BASE(BASE=BASE,NUME_DDL_GENE=_num,**motscles)
-
- if VECT_ASSE_GENE:
- _num=NUME_DDL_GENE(BASE=BASE,NB_VECT=NB_VECT,STOCKAGE=PROFIL)
- for v in VECT_ASSE_GENE:
- motscles={}
- if v['VECT_ASSE'] : motscles['VECT_ASSE'] =v['VECT_ASSE']
- elif v['VECT_ASSE_GENE']: motscles['VECT_ASSE_GENE']=v['VECT_ASSE_GENE']
- else:
- UTMESS('F', "MACRO_PROJ_BASE", "MATR_ASSE et MATR_ASSE_GENE absents")
- motscles['TYPE_VECT']=v['TYPE_VECT']
- self.DeclareOut('vv',v['VECTEUR'])
- vv=PROJ_VECT_BASE(BASE=BASE,NUME_DDL_GENE=_num,**motscles)
-
- return ier
+++ /dev/null
-#@ MODIF reca_algo Macro DATE 05/09/2005 AUTEUR DURAND C.DURAND
-# -*- coding: iso-8859-1 -*-
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-
-
-
-import Numeric
-from Numeric import take
-import copy,os
-import LinearAlgebra
-from Cata.cata import INFO_EXEC_ASTER
-from Cata.cata import DETRUIRE
-from Accas import _F
-from Utilitai.Utmess import UTMESS
-
-
-def calcul_gradient(A,erreur):
- grad = Numeric.dot(Numeric.transpose(A),erreur)
- return grad
-
-
-#-------------------------------------------
-#classe gérant l'adimensionnement et le dimensionnemnt
-class Dimension:
- #le constructeur calcul la matrice D et son inverse
- def __init__(self,val_initiales,para):
- self.val_init = val_initiales
- dim =len(self.val_init)
- self.D = Numeric.zeros((dim,dim),Numeric.Float)
- for i in range(dim):
- self.D[i][i] = self.val_init[i]
- self.inv_D=LinearAlgebra.inverse(self.D)
-
-
- def adim_sensi(self,A):
- for i in range(A.shape[0]):
- for j in range(A.shape[1]):
- A[i,j] = A[i,j] * self.val_init[j]
- return A
-
-
-
- def redim_sensi(self,A):
- for i in range(A.shape[0]):
- for j in range(A.shape[1]):
- A[i,j] = A[i,j] / self.val_init[j]
- return A
-
-
- def adim(self,tab):
- tab_adim = Numeric.dot(self.inv_D,copy.copy(tab))
- return tab_adim
-
-
- def redim(self,tab_adim):
- tab = Numeric.dot(self.D,tab_adim)
- return tab
-
-#------------------------------------------
-def cond(matrix):
- e1=LinearAlgebra.eigenvalues(matrix)
- e=map(abs,e1)
- size=len(e)
- e=Numeric.sort(e)
- try:
- condi=e[size-1]/e[0]
- except ZeroDivisionError:
- condi=0.0
- return condi,e[size-1],e[0]
-
-#-----------------------------------------
-def norm(matrix):
- e=LinearAlgebra.Heigenvalues(matrix)
- size=len(e)
- e=Numeric.sort(e)
- norm=e[size-1]
- return norm
-
-#-----------------------------------------
-def lambda_init(matrix):
-# Routine qui calcule la valeur initial du parametre
-# de regularisation l.
- condi,emax,emin=cond(matrix)
- id=Numeric.identity(matrix.shape[0])
- if (condi==0.0):
- l=1.e-3*norm(matrix)
- elif (condi<=10000):
- l=1.e-16*norm(matrix)
- elif (condi>10000):
- l=abs(10000.*emin-emax)/10001.
- return l
-
-#-----------------------------------------
-
-
-def temps_CPU(self,restant_old,temps_iter_old):
- # Fonction controlant le temps CPU restant
- CPU=INFO_EXEC_ASTER(LISTE_INFO = ("CPU_RESTANT",))
- TEMPS=CPU['CPU_RESTANT',1]
- DETRUIRE(CONCEPT=_F(NOM='CPU'),INFO=1)
- err=0
- # Indique une execution interactive
- if (TEMPS>1.E+9):
- return 0.,0.,0
- # Indique une execution en batch
- else:
- restant=TEMPS
- # Initialisation
- if (restant_old==0.):
- temps_iter=-1.
- else:
- # Première mesure
- if (temps_iter_old==-1.):
- temps_iter=(restant_old-restant)
- # Mesure courante
- else:
- temps_iter=(temps_iter_old + (restant_old-restant))/2.
- if ((temps_iter>0.96*restant)or(restant<0.)):
- err=1
- UTMESS('F', "MACR_RECAL", 'Arret de MACR_RECAL par manque de temps CPU')
- return restant,temps_iter,err
-
-
-
-
-def Levenberg_bornes(self,val,Dim,val_init,borne_inf,borne_sup,A,erreur,l,ul_out):
- # on resoud le système par contraintes actives:
- # Q.dval + s + d =0
- # soumis à :
- # borne_inf < dval < borne_sup
- # 0 < s
- # s.(borne_inf - dval)=0
- # s.(borne_sup - dval)=0
- dim = len(val)
- id = Numeric.identity(dim)
- # Matrice du système
- Q=Numeric.matrixmultiply(Numeric.transpose(A),A) +l*id
- # Second membre du système
- d=Numeric.matrixmultiply(Numeric.transpose(A),erreur)
- # Ens. de liaisons actives
- Act=Numeric.array([])
- k=0
- done=0
- # Increment des parametres
- dval=Numeric.zeros(dim,Numeric.Float)
- while done <1 :
- k=k+1
- I=Numeric.ones(dim)
- for i in Act:
- I[i]=0
- I=Numeric.nonzero(Numeric.greater(I,0))
- s=Numeric.zeros(dim,Numeric.Float)
- for i in Act:
- # test sur les bornes (on stocke si on est en butée haute ou basse)
- if (val[i]+dval[i]>=borne_sup[i]):
- dval[i]=borne_sup[i]-val[i]
- s[i]=1.
- if (val[i]+dval[i]<=borne_inf[i]):
- dval[i]=borne_inf[i]-val[i]
- s[i]=-1.
- if (len(I)!=0):
- # xi=-Q(I)-1.(d(I)+Q(I,Act).dval(Act))
- xi=-LinearAlgebra.solve_linear_equations(take(take(Q,I),I,1),(take(d,I)+Numeric.dot(take(take(Q,I),Act,1),take(Dim.adim(dval),Act))))
- for i in Numeric.arange(len(I)):
- dval[I[i]]=xi[i]*val_init[I[i]]
- if (len(Act)!=0):
- # s(Av)=-d(Act)-Q(Act,:).dval
- sa=-take(d,Act)-Numeric.dot(take(Q,Act),Dim.adim(dval))
- for i in range(len(Act)):
- if (s[Act[i]]==-1.):
- s[Act[i]]=-sa[i]
- else:
- s[Act[i]]=sa[i]
- # Nouvel ens. de liaisons actives
- Act=Numeric.concatenate((Numeric.nonzero(Numeric.greater(dval,borne_sup-val)),Numeric.nonzero(Numeric.less(dval,borne_inf-val)),Numeric.nonzero(Numeric.greater(s,0.))))
- done=(max(val+dval-borne_sup)<=0)&(min(val+dval-borne_inf)>=0)&(min(s)>=0.0)
- # Pour éviter le cyclage
- if (k>50):
- try:
- l=l*2
- Q=Numeric.matrixmultiply(Numeric.transpose(A),A) +l*id
- k=0
- except:
- res=open(os.getcwd()+'/fort.'+str(ul_out),'a')
- res.write('\n\nQ = \n'+Numeric.array2string(Q-l*id,array_output=1,separator=','))
- res.write('\n\nd = '+Numeric.array2string(d,array_output=1,separator=','))
- res.write('\n\nval = '+Numeric.array2string(val,array_output=1,separator=','))
- res.write('\n\nval_ini= '+Numeric.array2string(val_init,array_output=1,separator=','))
- res.write('\n\nborne_inf= '+Numeric.array2string(borne_inf,array_output=1,separator=','))
- res.write('\n\nborne_sup= '+Numeric.array2string(borne_sup,array_output=1,separator=','))
- UTMESS('F', "MACR_RECAL", "Erreur dans l'algorithme de bornes de MACR_RECAL")
- return
- newval=copy.copy(val+dval)
- return newval,s,l,Act
-
-
-def actualise_lambda(l,val,new_val,A,erreur,new_J,old_J):
- dim = len(val)
- id = Numeric.identity(dim)
- # Matrice du système
- Q=Numeric.matrixmultiply(Numeric.transpose(A),A) +l*id
- # Second membre du système
- d=Numeric.matrixmultiply(Numeric.transpose(A),erreur)
- old_Q=old_J
- new_Q=old_J+0.5*Numeric.dot(Numeric.transpose(new_val-val),Numeric.dot(Q,new_val-val))+Numeric.dot(Numeric.transpose(new_val-val),d)
- # Ratio de la décroissance réelle et de l'approx. quad.
- try:
- R=(old_J-new_J)/(old_Q-new_Q)
- if (R<0.25):
- l = l*10.
- elif (R>0.75):
- l = l/15.
- except ZeroDivisionError:
- if (old_J>new_J):
- l = l*10.
- else:
- l = l/10.
- return l
-
-
-def test_convergence(gradient_init,erreur,A,s):
- gradient = calcul_gradient(A,erreur)+s
- epsilon = Numeric.dot(gradient,gradient)/Numeric.dot(gradient_init,gradient_init)
- epsilon = epsilon**0.5
- return epsilon
-
-
-# fonction appellée quand la convergence est atteinte
-# on calcule le Hessien et les valeurs propres et vecteurs
-# propre associés au Hessien
-# A = sensibilite
-# At*A = hessien
-def calcul_etat_final(para,A,iter,max_iter,prec,residu,Messg,ul_out):
- if ((iter < max_iter) or (residu < prec)):
- Hessien = Numeric.matrixmultiply(Numeric.transpose(A),A)
- valeurs_propres,vecteurs_propres = LinearAlgebra.eigenvectors(Hessien)
- sensible=Numeric.nonzero(Numeric.greater(abs(valeurs_propres/max(abs(valeurs_propres))),1.E-1))
- insensible=Numeric.nonzero(Numeric.less(abs(valeurs_propres/max(abs(valeurs_propres))),1.E-2))
- Messg.affiche_calcul_etat_final(para,Hessien,valeurs_propres,vecteurs_propres,sensible,insensible,ul_out)
-
-
-
-
-
+++ /dev/null
-#@ MODIF reca_graphique Macro DATE 08/11/2005 AUTEUR ASSIRE A.ASSIRE
-# -*- coding: iso-8859-1 -*-
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2005 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-
-import string, copy, Numeric, types
-import Cata
-from Cata.cata import DEFI_FICHIER, IMPR_FONCTION
-from Utilitai.Utmess import UTMESS
-from Accas import _F
-
-try:
- import Gnuplot
-except:
- pass
-
-
-#_____________________________________________
-#
-# IMPRESSIONS GRAPHIQUES
-#_____________________________________________
-
-def graphique(FORMAT, L_F, res_exp, reponses, iter, UL_out, interactif):
-
- if FORMAT=='XMGRACE':
- for i in range(len(L_F)):
- _tmp = []
- courbe1 = res_exp[i]
- _tmp.append( { 'ABSCISSE': courbe1[:,0].tolist(), 'ORDONNEE': courbe1[:,1].tolist(), 'COULEUR': 1 } )
- courbe2 = L_F[i]
- _tmp.append( { 'ABSCISSE': courbe2[:,0].tolist(), 'ORDONNEE': courbe2[:,1].tolist(), 'COULEUR': 2 } )
-
- motscle2= {'COURBE': _tmp }
- if interactif: motscle2['PILOTE']= 'INTERACTIF'
- else: motscle2['PILOTE']= 'POSTSCRIPT'
-
-# DEFI_FICHIER(UNITE=int(UL_out), ACCES='NEW',)
-
- IMPR_FONCTION(FORMAT='XMGRACE',
- UNITE=int(UL_out),
- TITRE='Courbe de : ' + reponses[i][0],
- SOUS_TITRE='Iteration : ' + str(iter),
- LEGENDE_X=reponses[i][1],
- LEGENDE_Y=reponses[i][2],
- **motscle2
- );
-# DEFI_FICHIER(ACTION='LIBERER',UNITE=int(UL_out),)
-
- elif FORMAT=='GNUPLOT':
- graphe=[]
- impr=Gnuplot.Gnuplot()
- Gnuplot.GnuplotOpts.prefer_inline_data=1
- impr('set data style linespoints')
- impr('set grid')
- impr('set pointsize 2.')
- impr('set terminal postscript color')
- impr('set output "fort.'+str(UL_out)+'"')
-
- for i in range(len(L_F)):
- if interactif:
- graphe.append(Gnuplot.Gnuplot(persist=0))
- graphe[i]('set data style linespoints')
- graphe[i]('set grid')
- graphe[i]('set pointsize 2.')
- graphe[i].xlabel(reponses[i][1])
- graphe[i].ylabel(reponses[i][2])
- graphe[i].title(reponses[i][0]+' Iteration '+str(iter))
- graphe[i].plot(Gnuplot.Data(L_F[i],title='Calcul'),Gnuplot.Data(res_exp[i],title='Experimental'))
- graphe[i]('pause 5')
-
- impr.xlabel(reponses[i][1])
- impr.ylabel(reponses[i][2])
- impr.title(reponses[i][0]+' Iteration '+str(iter))
- impr.plot(Gnuplot.Data(L_F[i],title='Calcul'),Gnuplot.Data(res_exp[i],title='Experimental'))
-
- else:
- pass
+++ /dev/null
-#@ MODIF reca_interp Macro DATE 05/09/2005 AUTEUR DURAND C.DURAND
-# -*- coding: iso-8859-1 -*-
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-
-import os
-import Numeric
-import Macro
-from Macro.recal import calcul_F
-from Utilitai.Utmess import UTMESS
-
-#===========================================================================================
-
-
-# INTERPOLATION, CALCUL DE SENSIBILITE, ETC....
-
-#--------------------------------------
-class Sim_exp :
-
- def __init__ (self,result_exp,poids) :
- self.resu_exp = result_exp
- self.poids = poids
-
-# Distance verticale d'un point M à une ligne brisée composée de n points
-
- def DistVertAdimPointLigneBrisee (self, M, points) :
- # M = Point (2 colonnes, 1 ligne)
- # points = Tableau de n points (2 colonnes, n lignes)
- # on suppose qu'il existe au moins 2 points,
- # et que les points sont classés selon les abscisses croissantes
- n = len(points)
- if ( M[0] < points[0][0] ) or ( M[0] > points[n-1][0] ) :
- return 0.
- i = 1
- while M[0] > points[i][0] :
- i = i+1
- y_proj_vert = (M[0]-points[i-1][0]) * (points[i][1]-points[i-1][1]) / (points[i][0]-points[i-1][0]) + points[i-1][1]
- d = (M[1] - y_proj_vert)
- # Attention: la distance n'est pas normalisée
- # Attention: problème si points[0][0] = points[1][0] = M[0]
- # Attention: problème si M[1] = 0
- return d
-
-
-# La Fonction Interpole ,interpole une et une seule F_calc sur F_exp et renvoie l'erreur seulement
- def Interpole (self, F_calc,experience,poids) : #ici on passe en argument "une" experience
- n = 0
- resu_num = F_calc
- n_exp = len(experience) # nombre de points sur la courbe expérimentale num.i
- stockage = Numeric.ones(n_exp, Numeric.Float) # matrice de stockage des erreurs en chaque point
- for j in xrange(n_exp) :
- d = self.DistVertAdimPointLigneBrisee(experience[j], resu_num)
- try:
- stockage[n] = d/experience[j][1]
- except ZeroDivisionError:
- stockage[n] = d
- n = n + 1 # on totalise le nombre de points valables
- err = Numeric.ones(n, Numeric.Float)
- for i in xrange(n) :
- err[i] = poids*stockage[i]
- return err
-
- #cette fonction appelle la fonction interpole et retourne les sous fonctionnelle J et l'erreur
- def multi_interpole(self,L_F, reponses): #on interpole toutes les reponses une à une en appelent la methode interpole
- L_erreur=[]
- for i in range(len(reponses)):
- err = self.Interpole(L_F[i],self.resu_exp[i],self.poids[i])
- L_erreur.append(err)
- #on transforme L_erreur en tab num
- dim=[]
- J=[]
- for i in range(len(L_erreur)):
- dim.append(len(L_erreur[i]))
- dim_totale = Numeric.sum(dim)
- L_J = self.calcul_J(L_erreur)
- a=0
- erreur = Numeric.zeros((dim_totale),Numeric.Float)
- for n in range(len(L_erreur)):
- for i in range(dim[n]):
- erreur[i+a] = L_erreur[n][i]
- a = dim[n]
- del(L_erreur) #on vide la liste puisqu'on n'en a plus besoin
- return L_J,erreur
-
- #cette fonction retourne seulement l'erreur ,je l'appelle dans la methode sensibilité
- #on interpole toutes les reponses une à une en appelent la methode interpole
- def multi_interpole_sensib(self,L_F,reponses):
- L_erreur=[]
- for i in range(len(reponses)):
- err = self.Interpole(L_F[i],self.resu_exp[i],self.poids[i])
- L_erreur.append(err)
- #on transforme L_erreur en tab num
- return L_erreur
-
- def calcul_J(self,L_erreur):
- L_J = []
- for i in range(len(L_erreur)):
- total = 0
- for j in range(len(L_erreur[i])):
- total = total + L_erreur[i][j]**2
- L_J.append(total)
- return L_J
-
- def norme_J(self,L_J_init,L_J,unite_resu):
- #cette fonction calcul une valeur normée de J
- for i in range(len(L_J)):
- try:
- L_J[i] = L_J[i]/L_J_init[i]
- except ZeroDivisionError:
- message= 'Problème de division par zéro dans la normalisation de la fonctionnelle.\n'
- message=message+'Une des valeurs de la fonctionnelle initiale est nulle ou inférieure à la précision machine : %.2f \n'%L_J_init
- fic=open(os.getcwd()+'/fort.'+str(unite_resu),'a')
- fic.write(message)
- fic.close()
- UTMESS('F', "MACR_RECAL", message)
-
- J = Numeric.sum(L_J)
- J = J/len(L_J)
- return J
-
- def sensibilite(self,objet,UL,F,val,para,reponses,pas,unite_resu):
- F_interp=self.multi_interpole_sensib(F, reponses) #F_interp est une liste contenant des tab num des reponses interpolés
- L_A=[] #creation de la liste des matrices de sensibilités
- for i in range(len(reponses)):
- L_A.append(Numeric.zeros((len(self.resu_exp[i]),len(val)),Numeric.Float) )
- #calcul de la sensibilité
- fic=open(os.getcwd()+'/fort.'+str(unite_resu),'a')
- fic.write('\nCalcul de la sensibilité par rapport à :')
- fic.close()
- for k in range(len(val)): #pour une colone de A
- h = val[k]*pas
- val[k] = val[k] + h
- F_perturbe = calcul_F(objet,UL,para,val,reponses)
- fic=open(os.getcwd()+'/fort.'+str(unite_resu),'a')
- fic.write(' '+para[k])
- fic.close()
- F_perturbe_interp =self.multi_interpole_sensib(F_perturbe, reponses)
- val[k] = val[k] - h
- for j in range(len(reponses)):
- for i in range(len(self.resu_exp[j])):
- try:
- L_A[j][i,k] = -1*(F_interp[j][i] - F_perturbe_interp[j][i])/h
- except ZeroDivisionError:
- message= 'Probleme de division par zéro dans le calcul de la matrice de sensiblité\n '
- message=message+'Le parametre '+para[k]+'est nul ou plus petit que la précision machine \n'
- fic=open(os.getcwd()+'/fort.'+str(unite_resu),'a')
- fic.write(message)
- fic.close()
- UTMESS('F', "MACR_RECAL", message)
- #on construit la matrice de sensiblité sous forme d'un tab num
- dim =[]
- for i in range(len(L_A)):
- dim.append(len(L_A[i]))
- dim_totale = Numeric.sum(dim)
- a=0
- A = Numeric.zeros((dim_totale,len(val)),Numeric.Float)
- for n in range(len(L_A)):
- for k in range(len(val)):
- for i in range(dim[n]):
- A[i+a][k] = L_A[n][i,k]
- a=dim[n]
- del(L_A) #on ecrase tout ce qu'il y a dans L_A puisqu'on n'en a plus besoin
- return A
-
-
-
+++ /dev/null
-#@ MODIF reca_message Macro DATE 14/09/2004 AUTEUR MCOURTOI M.COURTOIS
-# -*- coding: iso-8859-1 -*-
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-
-import os,Numeric
-
-#===========================================================================================
-
-
-# AFFICHAGE DES MESSAGES
-
-class Message :
- """classe gérant l'affichage des messages concernant le déroulement de l'optmisation """
- #Constructeur de la classe
- def __init__(self,para,val_init,resu_exp,ul_out):
- self.nom_para = para
- self.res_exp = resu_exp
- res=open(os.getcwd()+'/fort.'+str(ul_out),'a')
- res.write(' <INFO> MACR_RECAL V1.1 \n\n\n')
- res.close()
-
-
- def affiche_result_iter(self,iter,J,val,residu,Act,ul_out):
- res=open(os.getcwd()+'/fort.'+str(ul_out),'a')
- res.write('\n=======================================================\n')
- res.write('Iteration '+str(iter)+' :\n')
- res.write('\n=> Fonctionnelle = '+str(J))
- res.write('\n=> Résidu = '+str(residu))
- res.write('\n=> Paramètres = ')
- for i in range(len(val)):
- res.write('\n '+ self.nom_para[i]+' = '+str(val[i]) )
- if (len(Act)!=0):
- if (len(Act)==1):
- res.write('\n\n Le paramètre ')
- else:
- res.write('\n\n Les paramètres ')
- for i in Act:
- res.write(self.nom_para[i]+' ')
- if (len(Act)==1):
- res.write('\n est en butée sur un bord de leur domaine admissible.')
- else:
- res.write('\n sont en butée sur un bord de leur domaine admissible.')
- res.write('\n=======================================================\n\n')
- res.close()
-
- def affiche_etat_final_convergence(self,iter,max_iter,prec,residu,Act,ul_out):
- res=open(os.getcwd()+'/fort.'+str(ul_out),'a')
- if ((iter < max_iter) or (residu < prec)):
- res.write('\n=======================================================\n')
- res.write(' CONVERGENCE ATTEINTE ')
- if (len(Act)!=0):
- res.write("\n\n ATTENTION : L'OPTIMUM EST ATTEINT AVEC ")
- res.write("\n DES PARAMETRES EN BUTEE SUR LE BORD ")
- res.write("\n DU DOMAINE ADMISSIBLE ")
- res.write('\n=======================================================\n')
- res.close()
- else:
- res.write("\n=======================================================\n")
- res.write(' CONVERGENCE NON ATTEINTE ')
- res.write("\n Le nombre maximal d'itération ("+str(max_iter)+") a été dépassé")
- res.write('\n=======================================================\n')
- res.close()
-
- def affiche_calcul_etat_final(self,para,Hessien,valeurs_propres,vecteurs_propres,sensible,insensible,ul_out):
- res=open(os.getcwd()+'/fort.'+str(ul_out),'a')
- res.write('\n\nValeurs propres du Hessien:\n')
- res.write(str( valeurs_propres))
- res.write('\n\nVecteurs propres associés:\n')
- res.write(str( vecteurs_propres))
- res.write('\n\n --------')
- res.write('\n\nOn peut en déduire que :')
- # Paramètres sensibles
- if (len(sensible)!=0):
- res.write('\n\nLes combinaisons suivantes de paramètres sont prépondérantes pour votre calcul :\n')
- k=0
- for i in sensible:
- k=k+1
- colonne=vecteurs_propres[:,i]
- numero=Numeric.nonzero(Numeric.greater(abs(colonne/max(abs(colonne))),1.E-1))
- res.write('\n '+str(k)+') ')
- for j in numero:
- res.write('%+3.1E ' %colonne[j]+'* '+para[j]+' ')
- res.write('\n associée à la valeur propre %3.1E \n' %valeurs_propres[i])
- # Paramètres insensibles
- if (len(insensible)!=0):
- res.write('\n\nLes combinaisons suivantes de paramètres sont insensibles pour votre calcul :\n')
- k=0
- for i in insensible:
- k=k+1
- colonne=vecteurs_propres[:,i]
- numero=Numeric.nonzero(Numeric.greater(abs(colonne/max(abs(colonne))),1.E-1))
- res.write('\n '+str(k)+') ')
- for j in numero:
- res.write('%+3.1E ' %colonne[j]+'* '+para[j]+' ')
- res.write('\n associée à la valeur propre %3.1E \n' %valeurs_propres[i])
- res.close()
-
-
-
+++ /dev/null
-#@ MODIF recal Macro DATE 08/11/2005 AUTEUR ASSIRE A.ASSIRE
-# -*- coding: iso-8859-1 -*-
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-
-
-
-
-import string, copy, Numeric, types
-# import Gnuplot
-import Cata
-from Cata.cata import INCLUDE, DETRUIRE, FIN, EXEC_LOGICIEL, DEFI_FICHIER, IMPR_TABLE, LIRE_TABLE, INFO_EXEC_ASTER, EXTR_TABLE
-from Utilitai.Utmess import UTMESS
-from Accas import _F
-
-import os, aster, cPickle, sys
-
-# try:
-# import Gnuplot
-# except: pass
-
-try:
- from Utilitai.Utmess import UTMESS
-except ImportError:
- def UTMESS(code,sprg,texte):
- fmt='\n <%s> <%s> %s\n\n'
- print fmt % (code,sprg,texte)
-
-
-#_____________________________________________
-#
-# DIVERS UTILITAIRES POUR LA MACRO
-#_____________________________________________
-
-
-# Transforme les données entrées par l'utilisateur en tableau Numeric
-def transforme_list_Num(parametres,res_exp):
- dim_para = len(parametres) #donne le nb de parametres
- val_para = Numeric.zeros(dim_para,Numeric.Float)
- borne_inf = Numeric.zeros(dim_para,Numeric.Float)
- borne_sup = Numeric.zeros(dim_para,Numeric.Float)
- para = []
- for i in range(dim_para):
- para.append(parametres[i][0])
- val_para[i] = parametres[i][1]
- borne_inf[i] = parametres[i][2]
- borne_sup[i] = parametres[i][3]
- return para,val_para,borne_inf,borne_sup
-
-def mes_concepts(list_concepts=[],base=None):
- # Fonction qui liste les concepts créés
- for e in base.etapes:
- if e.nom in ('INCLUDE','MACR_RECAL',) :
- list_concepts=list(mes_concepts(list_concepts=list_concepts,base=e))
- elif (e.sd != None) and (e.parent.nom=='INCLUDE') :
- nom_concept=e.sd.get_name()
- if not(nom_concept in list_concepts):
- list_concepts.append( nom_concept )
- return tuple(list_concepts)
-
-
-def detr_concepts(self):
- liste_concepts=mes_concepts(base=self.parent)
- for e in liste_concepts:
- nom = string.strip(e)
- DETRUIRE( CONCEPT =self.g_context['_F'](NOM = nom),INFO=1)
- if self.jdc.g_context.has_key(nom) : del self.jdc.g_context[nom]
- del(liste_concepts)
-
-
-def calcul_F(self,UL,para,val,reponses):
- fic = open('fort.'+str(UL),'r')
- #On stocke le contenu de fort.UL dans la variable fichier qui est un string
- fichier=fic.read()
- #On stocke le contenu initial de fort.UL dans la variable fichiersauv
- fichiersauv=copy.copy(fichier)
- fic.close()
-
- #Fichier_Resu est une liste ou l'on va stocker le fichier modifié
- #idée générale :on délimite des 'blocs' dans fichier
- #on modifie ou non ces blocs suivant les besoins
- #on ajoute ces blocs dans la liste Fichier_Resu
- Fichier_Resu=[]
-
- try:
- #cherche l'indice de DEBUT()
- index_deb=string.index(fichier,'DEBUT(')
- while( fichier[index_deb]!='\n'):
- index_deb=index_deb+1
- #on restreind fichier en enlevant 'DEBUT();'
- fichier = fichier[index_deb+1:]
- except :
- #on va dans l'except si on a modifié le fichier au moins une fois
- pass
-
- try:
- #cherche l'indice de FIN()
- index_fin = string.index(fichier,'FIN(')
- #on restreind fichier en enlevant 'FIN();'
- fichier = fichier[:index_fin]
- except : pass
- #--------------------------------------------------------------------------------
- #on cherche à délimiter le bloc des parametres dans le fichier
- #Tout d'abord on cherche les indices d'apparition des paras dans le fichier
- #en effet l'utilisateur n'est pas obligé de rentrer les paras dans optimise
- #avec le meme ordre de son fichier de commande
- index_para = Numeric.zeros(len(para))
- for i in range(len(para)):
- index_para[i] = string.index(fichier,para[i])
- #On range les indices par ordre croissant afin de déterminer
- #les indice_max et indice_min
- index_para = Numeric.sort(index_para)
- index_first_para = index_para[0]
- index_last_para = index_para[len(index_para)-1]
-
-
- #on va délimiter les blocs intermédiaires entre chaque para "utiles" à l'optimsation
- bloc_inter ='\n'
- for i in range(len(para)-1):
- j = index_para[i]
- k = index_para[i+1]
- while(fichier[j]!= '\n'):
- j=j+1
- bloc_inter=bloc_inter + fichier[j:k] + '\n'
-
- #on veut se placer sur le premier retour chariot que l'on trouve sur la ligne du dernier para
- i = index_last_para
- while(fichier[i] != '\n'):
- i = i + 1
- index_last_para = i
- #on délimite les blocs suivants:
- pre_bloc = fichier[:index_first_para] #fichier avant premier parametre
- post_bloc = fichier[ index_last_para+ 1:] #fichier après dernier parametre
-
- #on ajoute dans L tous ce qui est avant le premier paramètre
- Fichier_Resu.append(pre_bloc)
- Fichier_Resu.append('\n')
- #On ajoute la nouvelle valeur des parametres
- dim_para=len(para)
- for j in range(dim_para):
- Fichier_Resu.append(para[j]+'='+str(val[j]) + ';' + '\n')
- #On ajoute à Fichier_Resu tous ce qui est entre les parametres
- Fichier_Resu.append(bloc_inter)
-
- Fichier_Resu.append(post_bloc)
- #--------------------------------------------------------------------------------
- #on va ajouter la fonction d'extraction du numarray de la table par la méthode Array
- #et on stocke les réponses calculées dans la liste Lrep
- #qui va etre retournée par la fonction calcul_F
- self.g_context['Lrep'] = []
- Fichier_Resu.append('Lrep=[]'+'\n')
- for i in range(len(reponses)):
- Fichier_Resu.append('t'+str(reponses[i][0])+'='+str(reponses[i][0])+'.EXTR_TABLE()'+'\n')
- Fichier_Resu.append('_F_ = '+'t'+str(reponses[i][0])+'.Array('+"'"+str(reponses[i][1])+"'"+','+"'"+str(reponses[i][2])+"'"+')'+'\n')
- Fichier_Resu.append('Lrep.append(_F_)'+'\n')
-
- #ouverture du fichier fort.3 et mise a jour de celui ci
- x=open('fort.'+str(UL),'w')
- x.writelines('from Accas import _F \nfrom Cata.cata import * \n')
- x.writelines(Fichier_Resu)
- x.close()
- del(Fichier_Resu)
- del(pre_bloc)
- del(post_bloc)
- del(fichier)
-
- INCLUDE(UNITE = UL)
- detr_concepts(self)
- # on remet le fichier dans son etat initial
- x=open('fort.'+str(UL),'w')
- x.writelines(fichiersauv)
- x.close()
- return self.g_context['Lrep']
-
-
-#_____________________________________________
-#
-# CONTROLE DES ENTREES UTILISATEUR
-#_____________________________________________
-
-def erreur_de_type(code_erreur,X):
- #code_erreur ==0 --> X est une liste
- #code erreur ==1 --> X est un char
- #code erreur ==2 --> X est un float
- #test est un boolean (test = 0 défaut et 1 si un test if est verifier
- txt=""
- if(code_erreur == 0 ):
- if type(X) is not types.ListType:
- txt="\nCette entrée: " +str(X)+" n'est pas une liste valide"
- if(code_erreur == 1 ):
- if type(X) is not types.StringType:
- txt="\nCette entrée: " +str(X)+" n'est pas une chaine de caractère valide ; Veuillez la ressaisir en lui appliquant le type char de python"
- if(code_erreur == 2 ):
- if type(X) is not types.FloatType:
- txt="\nCette entrée: " +str(X)+" n'est pas une valeur float valide ; Veuillez la ressaisir en lui appliquant le type float de python"
- return txt
-
-
-def erreur_dimension(PARAMETRES,REPONSES):
-#On verifie que la dimension de chaque sous_liste de parametre est 4
-#et que la dimension de chaque sous_liste de REPONSES est 3
- txt=""
- for i in range(len(PARAMETRES)):
- if (len(PARAMETRES[i]) != 4):
- txt=txt + "\nLa sous-liste de la variable paramètre numéro " + str(i+1)+" n'est pas de longueur 4"
- for i in range(len(REPONSES)):
- if (len(REPONSES[i]) != 3):
- txt=txt + "\nLa sous-liste de la variable réponse numéro " + str(i+1)+" n'est pas de longueur 3"
- return txt
-
-
-def compare__dim_rep__dim_RESU_EXP(REPONSES,RESU_EXP):
- # X et Y sont deux arguments qui doivent avoir la meme dimension
- # pour éviter l'arret du programme
- txt=""
- if( len(REPONSES) != len(RESU_EXP)):
- txt="\nVous avez entré " +str(len(REPONSES))+ " réponses et "+str(len(RESU_EXP))+ " expériences ; On doit avoir autant de réponses que de résultats expérimentaux"
- return txt
-
-def compare__dim_poids__dim_RESU_EXP(POIDS,RESU_EXP):
- # POIDS et Y sont deux arguments qui doivent avoir la meme dimension
- # pour éviter l'arret du programme
- txt=""
- if( len(POIDS) != len(RESU_EXP)):
- txt="\nVous avez entré " +str(len(POIDS))+ " poids et "+str(len(RESU_EXP))+ " expériences ; On doit avoir autant de poids que de résultats expérimentaux"
- return txt
-
-
-def verif_fichier(UL,PARAMETRES,REPONSES):
-#On verifie les occurences des noms des PARAMETRES et REPONSES
-#dans le fichier de commande ASTER
- txt=""
- fichier = open('fort.'+str(UL),'r')
- fic=fichier.read()
- for i in range(len(PARAMETRES)):
- if((string.find(fic,PARAMETRES[i][0])==-1) or ((string.find(fic,PARAMETRES[i][0]+'=')==-1) and (string.find(fic,PARAMETRES[i][0]+' ')==-1))):
- txt=txt + "\nLe paramètre "+PARAMETRES[i][0]+" que vous avez entré pour la phase d'optimisation n'a pas été trouvé dans votre fichier de commandes ASTER"
- for i in range(len(REPONSES)):
- if((string.find(fic,REPONSES[i][0])==-1) or ((string.find(fic,REPONSES[i][0]+'=')==-1) and (string.find(fic,REPONSES[i][0]+' ')==-1))):
- txt=txt + "\nLa réponse "+REPONSES[i][0]+" que vous avez entrée pour la phase d'optimisation n'a pas été trouvée dans votre fichier de commandes ASTER"
- return txt
-
-
-def verif_valeurs_des_PARAMETRES(PARAMETRES):
-#On verifie que pour chaque PARAMETRES de l'optimisation
-# les valeurs entrées par l'utilisateur sont telles que :
-# val_inf<val_sup
-# val_init appartient à [borne_inf, borne_sup]
-# val_init!=0
-# borne_sup!=0
-# borne_inf!=0
- txt=""
- #verification des bornes
- for i in range(len(PARAMETRES)):
- if( PARAMETRES[i][2] >PARAMETRES[i][3]):
- txt=txt + "\nLa borne inférieure "+str(PARAMETRES[i][2])+" de "+PARAMETRES[i][0]+ "est plus grande que sa borne supérieure"+str(PARAMETRES[i][3])
- #verification de l'encadrement de val_init
- for i in range(len(PARAMETRES)):
- if( (PARAMETRES[i][1] < PARAMETRES[i][2]) or (PARAMETRES[i][1] > PARAMETRES[i][3])):
- txt=txt + "\nLa valeur initiale "+str(PARAMETRES[i][1])+" de "+PARAMETRES[i][0]+ " n'est pas dans l'intervalle [borne_inf,born_inf]=["+str(PARAMETRES[i][2])+" , "+str(PARAMETRES[i][3])+"]"
- #verification que val_init !=0
- for i in range(len(PARAMETRES)):
- if (PARAMETRES[i][1] == 0. ):
- txt=txt + "\nProblème de valeurs initiales pour le paramètre "+PARAMETRES[i][0]+" : ne pas donner de valeur initiale nulle mais un ordre de grandeur."
- #verification que borne_sup !=0
- for i in range(len(PARAMETRES)):
- if (PARAMETRES[i][3] == 0. ):
- txt=txt + "\nProblème de borne supérieure pour le paramètre "+PARAMETRES[i][0]+" : ne pas donner de valeur strictement nulle."
- #verification que borne_inf !=0
- for i in range(len(PARAMETRES)):
- if (PARAMETRES[i][2] == 0. ):
- txt=txt + "\nProblème de borne inférieure pour le paramètre "+PARAMETRES[i][0]+" : ne pas donner de valeur strictement nulle."
- return txt
-
-
-def verif_UNITE(GRAPHIQUE,UNITE_RESU):
- # On vérifie que les unités de résultat et
- # de graphique sont différentes
- txt=""
- GRAPHE_UL_OUT=GRAPHIQUE['UNITE']
- if (GRAPHE_UL_OUT==UNITE_RESU):
- txt=txt + "\nLes unités logiques des fichiers de résultats graphiques et de résultats d'optimisation sont les memes."
- return txt
-
-
-
-def gestion(UL,PARAMETRES,REPONSES,RESU_EXP,POIDS,GRAPHIQUE,UNITE_RESU):
- #Cette methode va utiliser les methodes de cette classe declarée ci_dessus
- #test est un boolean: test=0 -> pas d'erreur
- # test=1 -> erreur détectée
-
- texte=""
- #On vérifie d'abord si PARAMETRES, REPONSES, RESU_EXP sont bien des listes au sens python
- #test de PARAMETRES
- texte = texte + erreur_de_type(0,PARAMETRES)
- #test de REPONSES
- texte = texte + erreur_de_type(0,REPONSES)
- #test de RESU_EXP
- texte = texte + erreur_de_type(0,RESU_EXP)
-
- #On vérifie si chaque sous liste de PARAMETRES, REPONSES, possède le type adéquat
- #test des sous_listes de PARAMETRES
- for i in range(len(PARAMETRES)):
- texte = texte + erreur_de_type(0,PARAMETRES[i])
- #test des sous_listes de REPONSES
- for i in range(len(REPONSES)):
- texte = texte + erreur_de_type(0,REPONSES[i])
-
- #On verifie si la dimension de chaque sous-liste de : PARAMETRES, REPONSES
- #il faut que:la dimension d'une sous-liste de PARAMETRES = 4
- #et que la dimension d'une sous liste de REPONSES = 3
- texte = texte + erreur_dimension(PARAMETRES,REPONSES)
-
- #on verifie que l'on a autant de réponses que de résultats expérimentaux
- texte = texte + compare__dim_rep__dim_RESU_EXP(REPONSES,RESU_EXP)
- #on verifie que l'on a autant de poids que de résultats expérimentaux
- texte = texte + compare__dim_poids__dim_RESU_EXP(POIDS,RESU_EXP)
-
- #on verifie les types des arguments de chaque sous liste de PARAMETRES et REPONSES
- #verification du type stringet type float des arguments de PARAMETRES
- for i in range(len(PARAMETRES)):
- texte = texte + erreur_de_type(1,PARAMETRES[i][0])
- for k in [1,2,3]:
- texte = texte + erreur_de_type(2,PARAMETRES[i][k])
-
- #verification du type string pour les arguments de REPONSES
- for i in range(len(REPONSES)):
- for j in range(len(REPONSES[i])):
- texte = texte + erreur_de_type(1,REPONSES[i][j])
-
- #verification du fichier de commndes ASTER
- texte = texte + verif_fichier(UL,PARAMETRES,REPONSES)
-
- #verifiaction des valeurs des PARAMETRES entrées par l'utilisteur
- texte = texte + verif_valeurs_des_PARAMETRES(PARAMETRES)
-
- #verifiaction des unités logiques renseignées par l'utilisateur
- texte = texte + verif_UNITE(GRAPHIQUE,UNITE_RESU)
-
- return texte
-
-
+++ /dev/null
-#@ MODIF stanley_ops Macro DATE 08/11/2005 AUTEUR ASSIRE A.ASSIRE
-# -*- coding: iso-8859-1 -*-
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-
-
-
-def stanley_ops(self,RESULTAT,MODELE,CHAM_MATER,CARA_ELEM,DISPLAY,**args):
-
- """
- Importation et lancement de Stanley
- """
-
- import os,string
- import aster
- from Accas import _F
- from Noyau.N_utils import AsType
- from Utilitai.Utmess import UTMESS
-
- ier=0
-
- # La macro compte pour 1 dans la numerotation des commandes
- self.set_icmd(1)
-
- # Redefinition eventuelle du DISPLAY
- if DISPLAY:
- UTMESS('I','STANLEY', 'Redefinition du DISPLAY vers : ' + DISPLAY)
- os.environ['DISPLAY'] = DISPLAY
-
- # On ne lance Stanley que si la variable DISPLAY est définie
- if os.environ.has_key('DISPLAY'):
-
- import Stanley
- from Stanley import stanley
-
- if (RESULTAT and MODELE and CHAM_MATER):
- _MAIL = aster.getvectjev( string.ljust(MODELE.nom,8) + '.MODELE .NOMA ' )
- _MAIL = string.strip(_MAIL[0])
- MAILLAGE = self.jdc.g_context[_MAIL]
- if CARA_ELEM:
- stanley.STANLEY(RESULTAT,MAILLAGE,MODELE,CHAM_MATER,CARA_ELEM)
- else:
- stanley.STANLEY(RESULTAT,MAILLAGE,MODELE,CHAM_MATER,None)
- else:
- stanley.PRE_STANLEY()
-
- else:
- UTMESS('A','STANLEY',
- """Aucune variable d'environnement DISPLAY définie !
- STANLEY ne pourra pas fonctionner. On l'ignore.
-
- Si vous etes en Interactif, cochez le bouton Suivi Interactif
- dans ASTK.
-
- Vous pouvez également préciser votre DISPLAY dans les arguments
- de la commande STANLEY :
-
- STANLEY(DISPLAY='adresse_ip:0.0');""")
-
- return ier
+++ /dev/null
-#@ MODIF test_fichier_ops Macro DATE 19/09/2005 AUTEUR MCOURTOI M.COURTOIS
-# -*- coding: iso-8859-1 -*-
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-
-import sys
-import os.path
-import re
-import string
-import math
-import md5
-
-#-------------------------------------------------------------------------------
-def test_fichier_ops(self, UNITE, FICHIER, NB_CHIFFRE, EPSILON, VALE_K, INFO, **args):
- """
- Macro TEST_FICHIER permettant de tester la non-regression d'un fichier
- 'a une tolerance' pres pour les nombres reels en calculant
- le md5sum.
- """
- import aster
- from Accas import _F
- ier=0
- # La macro compte pour 1 dans la numerotation des commandes
- self.set_icmd(1)
-
- # On importe les definitions des commandes a utiliser dans la macro
- # Le nom de la variable doit etre obligatoirement le nom de la commande
- INFO_EXEC_ASTER = self.get_cmd('INFO_EXEC_ASTER')
- DETRUIRE = self.get_cmd('DETRUIRE')
- CREA_TABLE = self.get_cmd('CREA_TABLE')
- TEST_TABLE = self.get_cmd('TEST_TABLE')
-
- import os.path
- import re
- from types import StringType
-
- import aster
- from Macro.test_fichier_ops import md5file
- from Utilitai.Utmess import UTMESS
-
- # vérifie la syntaxe des expressions régulières fournies
- l_regexp=[]
- if args['EXPR_IGNORE']:
- if type(args['EXPR_IGNORE']) is StringType:
- lexp = [args['EXPR_IGNORE']]
- else:
- lexp = args['EXPR_IGNORE']
- for exp in lexp:
- try:
- obj=re.compile(exp)
- except re.error, s:
- UTMESS('F', 'TEST_FICHIER',
- '<INVALID_REGEXP> %s pour %s' % (str(s), repr(exp)))
- else:
- l_regexp.append(exp)
- if len(l_regexp) < len(lexp):
- self.cr.fatal(' <F> <TEST_FICHIER> Expression régulière invalide (voir <INVALID_REGEXP>)')
-
-
- is_ok=0
-
- # vérifier que le fichier a été fermé
- tinfo__ = INFO_EXEC_ASTER(LISTE_INFO='ETAT_UNITE', FICHIER=FICHIER)
-
- if tinfo__['ETAT_UNITE',1].find('OUVERT')>-1:
- UTMESS('A', 'TEST_FICHIER',
- "LE FICHIER N'A PAS ETE FERME :\n%s" % FICHIER)
-
- # fichier correctement fermé
- else:
- # calcule le md5sum du fichier
- ier, mdsum = md5file(FICHIER, NB_CHIFFRE, EPSILON, l_regexp, INFO)
- if ier != 0:
- if ier==4:
- texte_erreur='Fichier inexistant : '+FICHIER
- else:
- texte_erreur='Erreur dans md5file, code retour = '+str(ier)
- texte_erreur='<S> <TEST_FICHIER> '+texte_erreur
- # aujourd'hui, je ne sais pas déclencher autre chose que <F>...
- self.cr.fatal(texte_erreur)
- return ier
-
- # comparaison a la reference
- if INFO > 0 :
- aster.affiche('MESSAGE',' %-20s : %32s\n' % ('REFERENCE',VALE_K))
-
- if mdsum == VALE_K:
- is_ok=1
-
- # produit le TEST_TABLE
- tab1__=CREA_TABLE(LISTE=(_F(PARA='TEST',
- TYPE_K='K8',
- LISTE_K='VALEUR ',),
- _F(PARA='BOOLEEN',
- LISTE_I=is_ok,),),)
- if args['REFERENCE'] == 'NON_REGRESSION':
- TEST_TABLE(UNITE=UNITE,
- TABLE=tab1__,
- FILTRE=_F(NOM_PARA='TEST',
- VALE_K='VALEUR ',),
- NOM_PARA='BOOLEEN',
- VALE_I=1,
- PRECISION=1.e-3,
- CRITERE='ABSOLU',
- REFERENCE=args['REFERENCE'],
- VERSION=args['VERSION'],)
- else:
- TEST_TABLE(UNITE=UNITE,
- TABLE=tab1__,
- FILTRE=_F(NOM_PARA='TEST',
- VALE_K='VALEUR ',),
- NOM_PARA='BOOLEEN',
- VALE_I=1,
- PRECISION=1.e-3,
- CRITERE='ABSOLU',
- REFERENCE=args['REFERENCE'],)
-
- DETRUIRE(CONCEPT=_F(NOM=('tinfo__','tab1__'),),
- ALARME='NON',INFO=1,)
- return ier
-
-
-#-------------------------------------------------------------------------------
-def md5file(fich, nbch, epsi, regexp_ignore=[], info=0, output=None):
- """
- Cette methode retourne le md5sum d'un fichier en arrondissant les nombres
- reels a la valeur significative.
- IN :
- fich : nom du fichier
- nbch : nombre de decimales significatives
- epsi : valeur en deca de laquelle on prend 0
- regexp_ignore : liste d'expressions régulières permettant d'ignorer
- certaines lignes
- output : pour rediriger l'interprétation du fichier (INFO=2)
- dans le fichier de nom `output`.
- OUT :
- code retour : 0 si ok, >0 sinon
- md5sum
-
- NE PAS AJOUTER D'IMPORT QUI RENDRAIT CETTE FONCTION
- INUTILISABLE EN DEHORS DE CODE_ASTER.
- """
- if output<>None:
- try:
- sys.stdout=open(output, 'w')
- except IOError, msg:
- print "Erreur d'écriture sur %s : %s" % (fout, msg)
-
- # 1 Mo 10 Mo 100 Mo
- # v0 2.6 s 20.4 s 196.6 s
- # v1 2.0 s 10.3 s 94.9 s (pas de distinction entier/reel)
- # remplacer le try/except par if re.search(...), 80% plus lent
- if not os.path.isfile(fich):
- return 4, ''
- f=open(fich,'r')
- format_float='%'+str(nbch+7)+'.'+str(nbch)+'g'
- m=md5.new()
- i=0
- for ligne in f:
- i=i+1
- if info>=2:
- print 'LIGNE',i,
- keep=True
- for exp in regexp_ignore:
- if re.search(exp,ligne):
- keep=False
- if info>=2:
- print ' >>>>>>>>>> IGNOREE <<<<<<<<<<',
- break
- if keep:
- # découpe des nombres collés : 1.34E-142-1.233D+09
- ligne=re.sub('([0-9]+)\-','\g<1> -',ligne)
- # conversion des DOUBLE fortran en 'E'
- ligne=re.sub('([0-9]+)[dD]([\-\+]{0,1}[0-9]+)','\g<1>E\g<2>',ligne)
- r=string.split(ligne)
- for x in r:
- try:
- if abs(float(x))<epsi:
- s='0'
- else:
- s=format_float % float(x)
- except ValueError:
- s=x
- if info>=2:
- print (' %'+str(nbch+7)+'s') % s,
- m.update(s)
- if info>=2:
- print
- f.close()
- md5sum=m.hexdigest()
-
- affich_resu=True
- if info>=1:
- while affich_resu:
- form=' %-20s : %32s'
- print form % ('Fichier',fich)
- print form % ('Nombre de lignes',str(i))
- print form % ('Format des reels',format_float)
- print form % ('Epsilon',str(epsi))
- print form % ('md5sum',md5sum)
- if output==None:
- affich_resu=False
- else:
- sys.stdout=sys.__stdout__
- output=None
- return 0, md5sum
-
-
-#-------------------------------------------------------------------------------
-if __name__ == '__main__':
- from optparse import OptionParser, OptionGroup
-
- p=OptionParser(usage='usage: %s a_tester [options]' % sys.argv[0])
- p.add_option('-n', '--nbch',
- action='store', dest='nbch', type='int', default=6,
- help='nombre de chiffres significatifs')
- p.add_option('-e', '--epsilon',
- action='store', dest='epsi', type='float', default=1.e-14,
- help='epsilon en dessous duquel on considère les nombres nuls')
- p.add_option('-o', '--output',
- action='store', dest='output', type='string', default='output.txt',
- help='fichier de sortie')
- opts, args = p.parse_args()
-
- if len(args)<1:
- p.print_usage()
- sys.exit(1)
-
- print 'Lignes retenues dans %s' % opts.output
- iret = md5file(args[0], opts.nbch, opts.epsi, info=2, output=opts.output)
+++ /dev/null
-import os,sys
-import prefs
-import sys
-rep_macro = os.path.join(prefs.REPINI,'Cata/cataSTA81')
-sys.path.insert(0,rep_macro)
-from cata import *
+++ /dev/null
-#& MODIF ENTETE DATE 08/11/2005 AUTEUR CIBHHLV L.VIVAN
-# -*- coding: iso-8859-1 -*-
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-
-import Accas
-from Accas import *
-from Accas import _F
-import string
-import types
-import Numeric
-from math import sin,cos,tan,asin,acos,atan2,atan,sinh,cosh,tanh,exp,log,log10
-from math import sqrt,pi
-import ops
-
-try:
- import aster
-except:
- pass
-
-#
-__version__="$Name: $"
-__Id__="$Id: cata_aster_v6.py,v 1.12 2001/01/16 15:55:05 iliade Exp $"
-#
-JdC = JDC_CATA(code='ASTER',
- execmodul=None,
- regles = (AU_MOINS_UN('DEBUT','POURSUITE'),
- AU_MOINS_UN('FIN'),
- A_CLASSER(('DEBUT','POURSUITE'),'FIN')))
-# Type le plus general
-class entier (ASSD):
- def __init__(self,valeur=None,**args):
- ASSD.__init__(self,**args)
- self.valeur=valeur
-
-# Type geometriques
-class no (GEOM):pass
-class grno(GEOM):pass
-class ma (GEOM):pass
-class grma(GEOM):pass
-
-
-
-# Autres
-
-class cabl_precont (ASSD):pass
-class cara_elem (ASSD):pass
-class cham_mater (ASSD):pass
-class char_acou (ASSD):pass
-class char_cine_acou (ASSD):pass
-class char_cine_meca (ASSD):pass
-class char_cine_ther (ASSD):pass
-class char_meca (ASSD):pass
-class char_ther (ASSD):pass
-class compor_sdaster (ASSD):pass
-class courbe_sdaster (ASSD):pass
-class fiss_xfem (ASSD):pass
-class fond_fiss (ASSD):pass
-class interf_dyna_clas(ASSD):pass
-class interspfact (ASSD):pass
-class listis_sdaster (ASSD):pass
-class mater_sdaster (ASSD):pass
-class melasflu_sdaster(ASSD):pass
-class nume_ddl_sdaster(ASSD):pass
-class nume_ddl_gene (ASSD):pass
-class obstacle_sdaster(ASSD):pass
-class sd_feti_sdaster (ASSD):pass
-class spectre_sdaster (ASSD):pass
-class surface_sdaster (ASSD):pass
-class tran_gene (ASSD):pass
-class type_flui_stru (ASSD):pass
-
-# modeles :
-#--------------------------------
-class modele_sdaster (ASSD):pass
-class modele_gene (ASSD):
- def LIST_SOUS_STRUCT(self) :
- """ retourne la liste des sous structures du modele generalise
- la liste des macro-elements sous-jacents"""
- nommodgen=self.get_name()
- ncham=nommodgen+(8-len(nommodgen))*' '
- ssno=aster.getvectjev(ncham+(14-len(ncham))*' '+'.MODG.SSNO')
- ssme=aster.getcolljev(ncham+(14-len(ncham))*' '+'.MODG.SSME')
- return [([ssno[ind], ssme[ind+1]]) for ind in range(len(ssno))]
- def LIST_LIAIS_STRUCT(self) :
- """ retourne la liste des liaisons entre sous structures du modele generalise sous la forme :
- [ (ss1, nom_liais1, ss2 , nom_liais2), ...] """
- nommodgen=self.get_name()
- ncham=nommodgen+(8-len(nommodgen))*' '
- lidf=aster.getcolljev(ncham+(14-len(ncham))*' '+'.MODG.LIDF')
- return [([(lidf[ind][indb]) for indb in range(4)]) for ind in lidf]
-
-
-# macro-elements :
-#--------------------------------
-class macr_elem_dyna (ASSD):
- def NBRE_MODES(self) :
- """ retourne le nombre de modes total, dynamiques et d'interface """
- nommacr=self.get_name()
- ncham=nommacr+(8-len(nommacr))*' '
- ncham=nommacr+(8-len(nommacr))*' '+'.MAEL'
- nombase=aster.getvectjev(ncham+'_REFE')[0]
- nbmode=Numeric.array(aster.getvectjev(nombase[0:8]+(19-len(nombase[0:8]))*' '+'.UTIL'))
- nbmodtot=nbmode[1]
- nbmoddyn=nbmode[2]
- nbmodint=nbmode[3]
- return [nbmodtot,nbmoddyn,nbmodint]
-
- def EXTR_MATR_GENE(self,typmat) :
- """ retourne les valeurs des matrices generalisees reelles
- dans un format Numerical Array
- typmat='MASS_GENE' pour obtenir la matrice de masse generalisee
- typmat='RIGI_GENE' pour obtenir la matrice de raideur generalisee
- typmat='AMOR_GENE' pour obtenir la matrice d'amortissement generalisee
- Attributs retourne
- - self.valeurs : Numeric.array contenant les valeurs """
-
- nommacr=self.get_name()
- if (typmat=='MASS_GENE') :
- ext='.MAEL_MASS'
- elif (typmat=='RIGI_GENE') :
- ext='.MAEL_RAID'
- elif (typmat=='AMOR_GENE') :
- ext='.MAEL_AMOR'
- else:
- raise Accas.AsException("Le type de la matrice est incorrect")
- ncham=nommacr+(8-len(nommacr))*' '+ext
- print ncham
- desc=Numeric.array(aster.getvectjev(ncham+'_DESC'))
-
-# On teste si le DESC du vecteur existe
- if (desc==None):
- raise Accas.AsException("L'objet matrice n'existe pas ou \
- est mal cree par Code Aster")
-
- tmp=Numeric.array(aster.getvectjev(ncham+'_VALE'))
- matrice=Numeric.zeros([desc[1],desc[1]],Numeric.Float)
- for j in range(desc[1]+1):
- for i in range(j):
- k=j*(j-1)/2+i
- matrice[j-1,i]=tmp[k]
- matrice=(matrice+Numeric.transpose(matrice))
- for i in range(desc[1]):
- matrice[i,i]=0.5*matrice[i,i]
- return matrice
-
- def RECU_MATR_GENE(self,typmat,matrice) :
- """ envoie les valeurs d'un Numerical Array dans des matrices generalisees
- reelles definies dans jeveux
- typmat='MASS_GENE' pour obtenir la matrice de masse generalisee
- typmat='RIGI_GENE' pour obtenir la matrice de raideur generalisee
- typmat='AMOR_GENE' pour obtenir la matrice d'amortissement generalisee
- Attributs ne retourne rien """
- from Utilitai.Utmess import UTMESS
-
-# avertissement generique
- UTMESS('A','RECU_MATR_GENE',' ATTENTION, VOUS ALLEZ ECRASER DES CONCEPTS EXISTANTS')
-
- nommacr=self.get_name()
- if (typmat=='MASS_GENE') :
- ext='.MAEL_MASS'
- elif (typmat=='RIGI_GENE') :
- ext='.MAEL_RAID'
- elif (typmat=='AMOR_GENE') :
- ext='.MAEL_AMOR'
- else:
- raise Accas.AsException("Le type de la matrice \
- est incorrect")
- ncham=nommacr+(8-len(nommacr))*' '+ext
- desc=Numeric.array(aster.getvectjev(ncham+'_DESC'))
-
-# On teste si le DESC de la matrice jeveux existe
- if (desc==None):
- raise Accas.AsException("L'objet matrice n'existe pas ou \
- est mal cree par Code Aster")
- Numeric.asarray(matrice)
-
-# On teste si la matrice python est de dimension 2
- if (len(Numeric.shape(matrice))<>2):
- raise Accas.AsException("La dimension de la matrice \
- est incorrecte")
-
-# On teste si les tailles de la matrice jeveux et python sont identiques
- if (tuple([desc[1],desc[1]])<>Numeric.shape(matrice)) :
- raise Accas.AsException("La dimension de la matrice \
- est incorrecte")
- taille=desc[1]*desc[1]/2.0+desc[1]/2.0
- tmp=Numeric.zeros([int(taille)],Numeric.Float)
- for j in range(desc[1]+1):
- for i in range(j):
- k=j*(j-1)/2+i
- tmp[k]=matrice[j-1,i]
- aster.putvectjev(ncham+'_VALE',len(tmp),tuple((
- range(1,len(tmp)+1))),tuple(tmp),tuple(tmp),1)
- return
-
-
-class macr_elem_stat (ASSD):pass
-
-
-# liste :
-#--------------------------------
-class listr8_sdaster (ASSD):
- def Valeurs(self) :
- """
- Retourne la liste des valeurs : [val1, ..., valN]
- """
- vale=string.ljust(self.get_name(),19)+'.VALE'
- return list(aster.getvectjev(vale))
-
-
-# post-traitement :
-#--------------------------------
-class post_comp_cham_el :
- def __init__(self,valeurs,maille=None,point=None,sous_point=None) :
- self.valeurs=valeurs
- self.maille=maille
- self.point=point
- self.sous_point=sous_point
-
-class post_comp_cham_no :
- def __init__(self,valeurs,noeud=None) :
- self.valeurs=valeurs
- self.noeud=noeud
-
-# maillage :
-#--------------------------------
-class maillage_sdaster(ASSD):
- def LIST_GROUP_NO(self) :
- """ retourne la liste des groupes de noeuds sous la forme :
- [ (gno1, nb noeuds gno1), ...] """
- nommail=self.get_name()
- dic_gpno=aster.getcolljev(nommail.ljust(8)+".GROUPENO")
- return [(gpno.strip(),len(dic_gpno[gpno])) for gpno in dic_gpno]
- def LIST_GROUP_MA(self) :
- """ retourne la liste des groupes de mailles sous la forme :
- [ (gma1, nb mailles gma1, dime max des mailles gma1), ...] """
- nommail=self.get_name()
- nommail=nommail.ljust(8)
- ngpma=[]
- ltyma =aster.getvectjev("&CATA.TM.NOMTM")
- catama=aster.getcolljev("&CATA.TM.TMDIM")
- dic_gpma=aster.getcolljev(nommail+".GROUPEMA")
- dimama=[catama[ltyma[ma-1]][0] for ma in aster.getvectjev(nommail+".TYPMAIL")]
- for grp in dic_gpma.keys():
- dim=max([dimama[ma-1] for ma in dic_gpma[grp]])
- ngpma.append((grp.strip(),len(dic_gpma[grp]),dim))
- return ngpma
-
-
-class squelette (maillage_sdaster):pass
-
-
-# cham_gd_sdaster (carte_sdaster,cham_no_sdaster,cham_elem_sdaster)
-#--------------------------------
-
-class cham_gd_sdaster(ASSD):pass
-
-# cham_gd_sdaster/carte_sdaster :
-#--------------------------------
-class carte_sdaster (cham_gd_sdaster):pass
-class carte_dbel_r (carte_sdaster):pass
-class carte_depl_c (carte_sdaster):pass
-class carte_depl_f (carte_sdaster):pass
-class carte_depl_r (carte_sdaster):pass
-class carte_durt_r (carte_sdaster):pass
-class carte_ener_r (carte_sdaster):pass
-class carte_epsi_c (carte_sdaster):pass
-class carte_epsi_r (carte_sdaster):pass
-class carte_erreur (carte_sdaster):pass
-class carte_flux_r (carte_sdaster):pass
-class carte_g_depl_r (carte_sdaster):pass
-class carte_geom_r (carte_sdaster):pass
-class carte_hydr_r (carte_sdaster):pass
-class carte_inst_r (carte_sdaster):pass
-class carte_inte_r (carte_sdaster):pass
-class carte_irra_r (carte_sdaster):pass
-class carte_neut_f (carte_sdaster):pass
-class carte_neut_r (carte_sdaster):pass
-class carte_pres_f (carte_sdaster):pass
-class carte_pres_r (carte_sdaster):pass
-class carte_sief_c (carte_sdaster):pass
-class carte_sief_r (carte_sdaster):pass
-class carte_sour_r (carte_sdaster):pass
-class carte_temp_f (carte_sdaster):pass
-class carte_temp_r (carte_sdaster):pass
-class carte_var2_r (carte_sdaster):pass
-class carte_vnor_c (carte_sdaster):pass
-class carte_corr_r (carte_sdaster):pass
-
-
-# cham_gd_sdaster/cham_elem_sdaster :
-#--------------------------------
-class cham_elem_sdaster(cham_gd_sdaster):
-
- def EXTR_COMP(self,comp,lgma,topo=0) :
- """ retourne les valeurs de la composante comp du champ sur la liste
- de groupes de mailles lgma avec eventuellement l'info de la
- topologie si topo>0. Si lgma est une liste vide, c'est equivalent
- a un TOUT='OUI' dans les commandes aster
- Attributs retourne
- - self.valeurs : Numeric.array contenant les valeurs
- Si on a demande la topo :
- - self.maille : numero de mailles
- - self.point : numero du point dans la maille
- - self.sous_point : numero du sous point dans la maille """
-
-
- ncham=self.get_name()
- ncham=ncham+(8-len(ncham))*' '
- nchams=ncham[0:7]+'S'
- ncmp=comp+(8-len(comp))*' '
-
- aster.prepcompcham(ncham,nchams,ncmp,"EL ",topo,lgma)
-
- valeurs=Numeric.array(aster.getvectjev(nchams+(19-len(ncham))*' '+'.V'))
-
- if (topo>0) :
- maille=(aster.getvectjev(nchams+(19-len(ncham))*' '+'.M'))
- point=(aster.getvectjev(nchams+(19-len(ncham))*' '+'.P'))
- sous_point=(aster.getvectjev(nchams+(19-len(ncham))*' '+'.SP'))
- else :
- maille=None
- point=None
- sous_point=None
-
- aster.prepcompcham("__DETR__",nchams,ncmp,"EL ",topo,lgma)
-
- return post_comp_cham_el(valeurs,maille,point,sous_point)
-
-class cham_elem_crit_r(cham_elem_sdaster):pass
-class cham_elem_dbel_r(cham_elem_sdaster):pass
-class cham_elem_depl_c(cham_elem_sdaster):pass
-class cham_elem_depl_f(cham_elem_sdaster):pass
-class cham_elem_depl_r(cham_elem_sdaster):pass
-class cham_elem_dommag(cham_elem_sdaster):pass
-class cham_elem_durt_r(cham_elem_sdaster):pass
-class cham_elem_ener_r(cham_elem_sdaster):pass
-class cham_elem_epsi_c(cham_elem_sdaster):pass
-class cham_elem_epsi_r(cham_elem_sdaster):pass
-class cham_elem_erreur(cham_elem_sdaster):pass
-class cham_elem_facy_r(cham_elem_sdaster):pass
-class cham_elem_flux_r(cham_elem_sdaster):pass
-class cham_elem_g_depl(cham_elem_sdaster):pass
-class cham_elem_geom_r(cham_elem_sdaster):pass
-class cham_elem_hydr_r(cham_elem_sdaster):pass
-class cham_elem_inst_r(cham_elem_sdaster):pass
-class cham_elem_inte_r(cham_elem_sdaster):pass
-class cham_elem_irra_r(cham_elem_sdaster):pass
-class cham_elem_neut_f(cham_elem_sdaster):pass
-class cham_elem_neut_r(cham_elem_sdaster):pass
-class cham_elem_pres_f(cham_elem_sdaster):pass
-class cham_elem_pres_r(cham_elem_sdaster):pass
-class cham_elem_sief_c(cham_elem_sdaster):pass
-class cham_elem_sief_r(cham_elem_sdaster):pass
-class cham_elem_sour_r(cham_elem_sdaster):pass
-class cham_elem_spma_r(cham_elem_sdaster):pass
-class cham_elem_temp_f(cham_elem_sdaster):pass
-class cham_elem_temp_r(cham_elem_sdaster):pass
-class cham_elem_vari_r(cham_elem_sdaster):pass
-class cham_elem_vnor_c(cham_elem_sdaster):pass
-
-
-# cham_gd/cham_no :
-#--------------------------------
-class cham_no_sdaster(cham_gd_sdaster):
-
- def EXTR_COMP(self,comp,lgno,topo=0) :
- """ retourne les valeurs de la composante comp du champ sur la liste
- de groupes de noeuds lgno avec eventuellement l'info de la
- topologie si topo>0. Si lgno est une liste vide, c'est equivalent
- a un TOUT='OUI' dans les commandes aster
- Attributs retourne
- - self.valeurs : Numeric.array contenant les valeurs
- Si on a demande la topo (i.e. self.topo = 1) :
- - self.noeud : numero de noeud """
-
-
- ncham=self.get_name()
- ncham=ncham+(8-len(ncham))*' '
- nchams=ncham[0:7]+'S'
- ncmp=comp+(8-len(comp))*' '
-
- aster.prepcompcham(ncham,nchams,ncmp,"NO ",topo,lgno)
-
- valeurs=Numeric.array(aster.getvectjev(nchams+(19-len(ncham))*' '+'.V'))
-
- if (topo>0) :
- noeud=(aster.getvectjev(nchams+(19-len(ncham))*' '+'.N'))
- else :
- noeud=None
-
- aster.prepcompcham("__DETR__",nchams,ncmp,"NO ",topo,lgno)
-
- return post_comp_cham_no(valeurs,noeud)
-
-class cham_no_corr_r (cham_no_sdaster):pass
-class cham_no_dbel_r (cham_no_sdaster):pass
-class cham_no_depl_c (cham_no_sdaster):pass
-class cham_no_depl_f (cham_no_sdaster):pass
-class cham_no_depl_r (cham_no_sdaster):pass
-class cham_no_durt_r (cham_no_sdaster):pass
-class cham_no_ener_r (cham_no_sdaster):pass
-class cham_no_epsi_c (cham_no_sdaster):pass
-class cham_no_epsi_r (cham_no_sdaster):pass
-class cham_no_erreur (cham_no_sdaster):pass
-class cham_no_facy_r (cham_no_sdaster):pass
-class cham_no_flux_r (cham_no_sdaster):pass
-class cham_no_g_depl_r (cham_no_sdaster):pass
-class cham_no_geom_r (cham_no_sdaster):pass
-class cham_no_hydr_r (cham_no_sdaster):pass
-class cham_no_inst_r (cham_no_sdaster):pass
-class cham_no_inte_r (cham_no_sdaster):pass
-class cham_no_irra_r (cham_no_sdaster):pass
-class cham_no_neut_f (cham_no_sdaster):pass
-class cham_no_neut_r (cham_no_sdaster):pass
-class cham_no_pres_c (cham_no_sdaster):pass
-class cham_no_pres_f (cham_no_sdaster):pass
-class cham_no_pres_r (cham_no_sdaster):pass
-class cham_no_sief_c (cham_no_sdaster):pass
-class cham_no_sief_r (cham_no_sdaster):pass
-class cham_no_sour_r (cham_no_sdaster):pass
-class cham_no_spma_r (cham_no_sdaster):pass
-class cham_no_temp_c (cham_no_sdaster):pass
-class cham_no_temp_f (cham_no_sdaster):pass
-class cham_no_temp_r (cham_no_sdaster):pass
-class cham_no_vanl_r (cham_no_sdaster):pass
-class cham_no_var2_r (cham_no_sdaster):pass
-class cham_no_vnor_c (cham_no_sdaster):pass
-
-
-# resultat_sdaster : (evol_sdaster,mode_stat,mode_meca)
-#--------------------------------------
-
-class resultat_sdaster(ASSD):
- def LIST_CHAMPS (self) :
- return aster.GetResu(self.get_name(), "CHAMPS")
- def LIST_NOM_CMP (self) :
- return aster.GetResu(self.get_name(), "COMPOSANTES")
- def LIST_VARI_ACCES (self) :
- return aster.GetResu(self.get_name(), "VARI_ACCES")
- def LIST_PARA (self) :
- return aster.GetResu(self.get_name(), "PARAMETRES")
-
-class acou_harmo (resultat_sdaster):pass
-class base_modale (resultat_sdaster):pass
-class comb_fourier (resultat_sdaster):pass
-class dyna_harmo (resultat_sdaster):pass
-class dyna_trans (resultat_sdaster):pass
-class fourier_elas (resultat_sdaster):pass
-class harm_gene (resultat_sdaster):pass
-class mode_acou (resultat_sdaster):pass
-class mode_cycl (resultat_sdaster):pass
-class mode_flamb (resultat_sdaster):pass
-class mode_gene (resultat_sdaster):pass
-class mult_elas (resultat_sdaster):pass
-class theta_geom (resultat_sdaster):pass
-
-# resultat_sdaster/evol_sdaster :
-#--------------------------------
-class evol_sdaster(resultat_sdaster):pass
-class evol_char(evol_sdaster):pass
-class evol_elas(evol_sdaster):pass
-class evol_noli(evol_sdaster):pass
-class evol_ther(evol_sdaster):pass
-class evol_varc(evol_sdaster):pass
-
-# resultat_sdaster/mode_stat :
-#--------------------------------
-class mode_stat(resultat_sdaster):pass
-class mode_stat_depl(mode_stat):pass
-class mode_stat_acce(mode_stat):pass
-class mode_stat_forc(mode_stat):pass
-
-
-# resultat_sdaster/mode_meca :
-#--------------------------------
-class mode_meca(resultat_sdaster):pass
-class mode_meca_c(mode_meca):pass
-
-
-# types 'fonction' :
-#--------------------------------
-class fonction_class(ASSD):
- def Valeurs(self):pass
- def Parametres(self):
- """
- Retourne un dictionnaire contenant les parametres de la fonction ;
- le type jeveux (FONCTION, FONCT_C, NAPPE) n'est pas retourne,
- le dictionnaire peut ainsi etre fourni a CALC_FONC_INTERP tel quel.
- """
- if hasattr(self,'etape') and self.etape.nom=='DEFI_FONCTION' :
- dico={
- 'INTERPOL' : self.etape['INTERPOL'],
- 'NOM_PARA' : self.etape['NOM_PARA'],
- 'NOM_RESU' : self.etape['NOM_RESU'],
- 'PROL_DROITE' : self.etape['PROL_DROITE'],
- 'PROL_GAUCHE' : self.etape['PROL_GAUCHE'],
- }
- if type(dico['INTERPOL'])==types.TupleType :
- dico['INTERPOL']=list(dico['INTERPOL'])
- elif type(dico['INTERPOL'])==types.StringType :
- dico['INTERPOL']=[dico['INTERPOL'],]
- if len(dico['INTERPOL'])==1 :
- dico['INTERPOL']=dico['INTERPOL']*2
- else :
- TypeProl={'E':'EXCLU', 'L':'LINEAIRE', 'C':'CONSTANT' }
- prol=aster.getvectjev(string.ljust(self.get_name(),19)+'.PROL')
- dico={
- 'INTERPOL' : [prol[1][0:3],prol[1][4:7]],
- 'NOM_PARA' : string.strip(prol[2][0:16]),
- 'NOM_RESU' : string.strip(prol[3][0:16]),
- 'PROL_DROITE' : TypeProl[prol[4][1]],
- 'PROL_GAUCHE' : TypeProl[prol[4][0]],
- }
- return dico
- def Trace(self,FORMAT='TABLEAU',**kargs):
- """Tracé d'une fonction"""
- from Utilitai.Graph import Graph
- gr=Graph()
- gr.AjoutCourbe(Val=self.Valeurs(),
- Lab=[self.Parametres()['NOM_PARA'],self.Parametres()['NOM_RESU']])
- gr.Trace(FORMAT=FORMAT,**kargs)
-class fonction_sdaster(fonction_class):
- def convert(self,arg='real'):
- """
- Retourne un objet de la classe t_fonction
- représentation python de la fonction
- """
- from Utilitai.t_fonction import t_fonction,t_fonction_c
- if arg=='real' :
- return t_fonction(self.Absc(),
- self.Ordo(),
- self.Parametres())
- elif arg=='complex' :
- return t_fonction_c(self.Absc(),
- self.Ordo(),
- self.Parametres())
- def Valeurs(self) :
- """
- Retourne deux listes de valeurs : abscisses et ordonnees
- """
- if hasattr(self,'etape') and self.etape.nom=='DEFI_FONCTION' :
- if self.etape['VALE']!=None:
- lbl=list(self.etape['VALE'])
- dim=len(lbl)
- lx=[lbl[i] for i in range(0,dim,2)]
- ly=[lbl[i] for i in range(1,dim,2)]
- return [lx,ly]
- elif self.etape['VALE_PARA']!=None:
- return [self.etape['VALE_PARA'].Valeurs(),self.etape['VALE_FONC'].Valeurs()]
- else :
- vale=string.ljust(self.get_name(),19)+'.VALE'
- lbl=list(aster.getvectjev(vale))
- dim=len(lbl)/2
- lx=lbl[0:dim]
- ly=lbl[dim:2*dim]
- return [lx,ly]
- def Absc(self):
- """Retourne la liste des abscisses"""
- return self.Valeurs()[0]
- def Ordo(self):
- """Retourne la liste des ordonnées"""
- return self.Valeurs()[1]
- def __call__(self,val):
- ### Pour EFICAS : substitution de l'instance de classe
- ### parametre par sa valeur
- if type(val)==types.InstanceType : val=val.valeur
- ###
- __ff=self.convert()
- return __ff(val)
-class para_sensi(fonction_sdaster): pass
-class fonction_c(fonction_class):
- def convert(self,arg='real'):
- """
- Retourne un objet de la classe t_fonction ou t_fonction_c,
- représentation python de la fonction complexe
- """
- from Utilitai.t_fonction import t_fonction,t_fonction_c
- if arg=='real' :
- return t_fonction(self.Absc(),
- self.Ordo(),
- self.Parametres())
- elif arg=='imag' :
- return t_fonction(self.Absc(),
- self.OrdoImg(),
- self.Parametres())
- elif arg=='modul' :
- modul=Numeric.sqrt(Numeric.array(self.Ordo())**2+Numeric.array(self.OrdoImg())**2)
- return t_fonction(self.Absc(),
- modul,
- self.Parametres())
- elif arg=='phase' :
- phase=Numeric.arctan2(Numeric.array(self.OrdoImg()),Numeric.array(self.Ordo()))
- phase=phase*180./pi
- return t_fonction(self.Absc(),
- phase,
- self.Parametres())
- elif arg=='complex' :
- return t_fonction_c(self.Absc(),
- map(complex,self.Ordo(),self.OrdoImg()),
- self.Parametres())
- def Valeurs(self) :
- """
- Retourne trois listes de valeurs : abscisses, parties reelles et imaginaires.
- """
- if self.etape.nom=='DEFI_FONCTION' :
- lbl=list(self.etape['VALE_C'])
- dim=len(lbl)
- lx=[lbl[i] for i in range(0,dim,3)]
- lr=[lbl[i] for i in range(1,dim,3)]
- li=[lbl[i] for i in range(2,dim,3)]
- return [lx,lr,li]
- else :
- vale=string.ljust(self.get_name(),19)+'.VALE'
- lbl=list(aster.getvectjev(vale))
- dim=len(lbl)/3
- lx=lbl[0:dim]
- lr=[]
- li=[]
- for i in range(dim):
- lr.append(lbl[dim+2*i])
- li.append(lbl[dim+2*i+1])
- return [lx,lr,li]
- def Absc(self):
- """Retourne la liste des abscisses"""
- return self.Valeurs()[0]
- def Ordo(self):
- """Retourne la liste des parties réelles des ordonnées"""
- return self.Valeurs()[1]
- def OrdoImg(self):
- """Retourne la liste des parties imaginaires des ordonnées"""
- return self.Valeurs()[2]
- def Trace(self,FORMAT='TABLEAU',**kargs):
- """Tracé d'une fonction complexe"""
- from Utilitai.Graph import Graph
- gr=Graph()
- gr.AjoutCourbe(Val=self.Valeurs(),
- Lab=[self.Parametres()['NOM_PARA'],self.Parametres()['NOM_RESU'],'IMAG'])
- gr.Trace(FORMAT=FORMAT,**kargs)
- def __call__(self,val):
- ### Pour EFICAS : substitution de l'instance de classe
- ### parametre par sa valeur
- import types
- if type(val)==types.InstanceType : val=val.valeur
- ###
- __ff=convert(self)
- return __ff(val)
-class nappe_sdaster(fonction_class):
- def convert(self):
- """
- Retourne un objet de la classe t_nappe, représentation python de la nappe
- """
- from Utilitai.t_fonction import t_fonction,t_nappe
- para=self.Parametres()
- vale=self.Valeurs()
- l_fonc=[]
- i=0
- for pf in para[1] :
- para_f={'INTERPOL' : pf['INTERPOL_FONC'],
- 'PROL_DROITE' : pf['PROL_DROITE_FONC'],
- 'PROL_GAUCHE' : pf['PROL_GAUCHE_FONC'],
- 'NOM_PARA' : para[0]['NOM_PARA_FONC'],
- 'NOM_RESU' : para[0]['NOM_RESU'],
- }
- l_fonc.append(t_fonction(vale[1][i][0],vale[1][i][1],para_f))
- i+=1
- return t_nappe(vale[0],
- l_fonc,
- para[0])
- def Valeurs(self):
- """
- Retourne la liste des valeurs du parametre,
- et une liste de couples (abscisses,ordonnees) de chaque fonction.
- """
- nsd=string.ljust(self.get_name(),19)
- dicv=aster.getcolljev(nsd+'.VALE')
- # les cles de dicv sont 1,...,N (indice du parametre)
- lpar=aster.getvectjev(nsd+'.PARA')
- lval=[]
- for k in range(len(dicv)):
- lbl=dicv[k+1]
- dim=len(lbl)/2
- lval.append([lbl[0:dim],lbl[dim:2*dim]])
- return [list(lpar),lval]
- def Parametres(self):
- """
- Retourne un dictionnaire contenant les parametres de la nappe,
- le type jeveux (NAPPE) n'est pas retourne,
- le dictionnaire peut ainsi etre fourni a CALC_FONC_INTERP tel quel,
- et une liste de dictionnaire des parametres de chaque fonction.
- """
- TypeProl={'E':'EXCLU', 'L':'LINEAIRE', 'C':'CONSTANT' }
- prol=aster.getvectjev(string.ljust(self.get_name(),19)+'.PROL')
- dico={
- 'INTERPOL' : [prol[1][0:3],prol[1][4:7]],
- 'NOM_PARA' : string.strip(prol[2][0:16]),
- 'NOM_RESU' : string.strip(prol[3][0:16]),
- 'PROL_DROITE' : TypeProl[prol[4][1]],
- 'PROL_GAUCHE' : TypeProl[prol[4][0]],
- 'NOM_PARA_FONC' : string.strip(prol[5][0:4]),
- }
- lparf=[]
- nbf=(len(prol)-6)/2
- for i in range(nbf):
- dicf={
- 'INTERPOL_FONC' : [prol[6+i*2][0:3],prol[6+i*2][4:7]],
- 'PROL_DROITE_FONC' : TypeProl[prol[7+i*2][1]],
- 'PROL_GAUCHE_FONC' : TypeProl[prol[7+i*2][0]],
- }
- lparf.append(dicf)
- return [dico,lparf]
- def Absc(self):
- """Retourne la liste des abscisses"""
- return self.Valeurs()[0]
- def Trace(self,FORMAT='TABLEAU',**kargs):
- """Tracé d'une nappe"""
- from Utilitai.Graph import Graph
- gr=Graph()
- lv=self.Valeurs()[1]
- dp=self.Parametres()[0]
- for lx,ly in lv:
- gr.AjoutCourbe(Val=[lx,ly], Lab=[dp['NOM_PARA_FONC'],dp['NOM_RESU']])
- gr.Trace(FORMAT=FORMAT,**kargs)
-
-# matr_asse :
-#--------------------------------
-class matr_asse(ASSD):pass
-class matr_asse_gene(matr_asse):pass
-
-class matr_asse_gene_r(matr_asse_gene):
- def EXTR_MATR_GENE(self) :
- """ retourne les valeurs de la matrice generalisee reelle
- dans un format Numerical Array
- Attributs retourne
- - self.valeurs : Numeric.array contenant les valeurs """
-
- ncham=self.get_name()
- ncham=ncham+(8-len(ncham))*' '
- desc=Numeric.array(aster.getvectjev(ncham+(19-len(ncham))*' '+'.DESC'))
-# On teste si le DESC de la matrice existe
- if (desc==None):
- raise Accas.AsException("L'objet matrice n'existe pas ou \
- est mal cree par Code Aster")
-# Si le stockage est plein
- if desc[2]==2 :
- tmp=Numeric.array(aster.getcolljev(ncham+(19-len(ncham))*' '+'.VALE')[1])
- valeur=Numeric.zeros([desc[1],desc[1]],Numeric.Float)
- for j in range(desc[1]+1):
- for i in range(j):
- k=j*(j-1)/2+i
- valeur[j-1,i]=tmp[k]
- valeur=(valeur+Numeric.transpose(valeur))
- for i in range(desc[1]):
- valeur[i,i]=0.5*valeur[i,i]
-# Si le stockage est diagonal
- elif desc[2]==1 :
- tmp=Numeric.array(aster.getcolljev(ncham+(19-len(ncham))*' '+'.VALE')[1])
- valeur=Numeric.zeros([desc[1],desc[1]],Numeric.Float)
- for i in range(desc[1]):
- valeur[i,i]=tmp[i]
-# Sinon on arrete tout
- else:
- raise KeyError
- return valeur
-
- def RECU_MATR_GENE(self,matrice) :
- """ envoie les valeurs d'un Numerical Array dans des matrices
- generalisees reelles definies dans jeveux
- Attributs ne retourne rien """
- from Utilitai.Utmess import UTMESS
-
-# avertissement generique
- UTMESS('A','RECU_MATR_GENE',' ATTENTION, VOUS ALLEZ ECRASER DES CONCEPTS EXISTANTS')
-
- ncham=self.get_name()
- ncham=ncham+(8-len(ncham))*' '
- desc=Numeric.array(aster.getvectjev(ncham+(19-len(ncham))*' '+'.DESC'))
-
-# On teste si le DESC de la matrice existe
- if (desc==None):
- raise Accas.AsException("L'objet matrice n'existe pas ou \
- est mal cree par Code Aster")
- Numeric.asarray(matrice)
-
-# On teste si la dimension de la matrice python est 2
- if (len(Numeric.shape(matrice))<>2) :
- raise Accas.AsException("La dimension de la matrice est incorrecte ")
-
-# On teste si les tailles des matrices jeveux et python sont identiques
- if (tuple([desc[1],desc[1]])<>Numeric.shape(matrice)) :
- raise Accas.AsException("La taille de la matrice est incorrecte ")
-
-# Si le stockage est plein
- if desc[2]==2 :
- taille=desc[1]*desc[1]/2.0+desc[1]/2.0
- tmp=Numeric.zeros([int(taille)],Numeric.Float)
- for j in range(desc[1]+1):
- for i in range(j):
- k=j*(j-1)/2+i
- tmp[k]=matrice[j-1,i]
- aster.putcolljev(ncham+(19-len(ncham))*' '+'.VALE',len(tmp),tuple((\
- range(1,len(tmp)+1))),tuple(tmp),tuple(tmp),1)
-# Si le stockage est diagonal
- elif desc[2]==1 :
- tmp=Numeric.zeros(desc[1],Numeric.Float)
- for j in range(desc[1]):
- tmp[j]=matrice[j,j]
- aster.putcolljev(ncham+(19-len(ncham))*' '+'.VALE',len(tmp),tuple((\
- range(1,len(tmp)+1))),tuple(tmp),tuple(tmp),1)
-# Sinon on arrete tout
- else:
- raise KeyError
- return
-
-
-class matr_asse_gene_c(matr_asse_gene):
- def EXTR_MATR_GENE(self) :
- """ retourne les valeurs de la matrice generalisee complexe
- dans un format Numerical Array
- Attributs retourne
- - self.valeurs : Numeric.array contenant les valeurs """
-
- ncham=self.get_name()
- ncham=ncham+(8-len(ncham))*' '
- desc=Numeric.array(aster.getvectjev(ncham+(19-len(ncham))*' '+'.DESC'))
- if (desc==None):
- raise Accas.AsException("L'objet matrice n'existe pas ou \
- est mal cree par Code Aster ")
-# Si le stockage est plein
- if desc[2]==2 :
- tmp=Numeric.array(aster.getcolljev(ncham+(19-len(ncham))*' '+'.VALE')[1])
- valeur=Numeric.zeros([desc[1],desc[1]],Numeric.Complex)
- for j in range(desc[1]+1):
- for i in range(j):
- k=j*(j-1)/2+i
- valeur[j-1,i]=tmp[k]
- valeur=(valeur+Numeric.transpose(valeur))
- for i in range(desc[1]):
- valeur[i,i]=0.5*valeur[i,i]
-# Si le stockage est diagonal
- elif desc[2]==1 :
- tmp=Numeric.array(aster.getcolljev(ncham+(19-len(ncham))*' '+'.VALE')[1])
- valeur=Numeric.zeros([desc[1],desc[1]],Numeric.Complex)
- for i in range(desc[1]):
- valeur[i,i]=tmp[i]
-# Sinon on arrete tout
- else:
- raise KeyError
- return valeur
-
- def RECU_MATR_GENE(self,matrice) :
- """ envoie les valeurs d'un Numerical Array dans des matrices
- generalisees reelles definies dans jeveux
- Attributs ne retourne rien """
- from Utilitai.Utmess import UTMESS
-
-# avertissement generique
- UTMESS('A','RECU_MATR_GENE',' ATTENTION, VOUS ALLEZ ECRASER DES CONCEPTS EXISTANTS')
-
- Numeric.asarray(matrice)
- ncham=self.get_name()
- ncham=ncham+(8-len(ncham))*' '
- desc=Numeric.array(aster.getvectjev(ncham+(19-len(ncham))*' '+'.DESC'))
-
-# On teste si le DESC de la matrice existe
- if (desc==None):
- raise Accas.AsException("L'objet matrice n'existe pas ou \
- est mal cree par Code Aster")
- Numeric.asarray(matrice)
-
-# On teste si la dimension de la matrice python est 2
- if (len(Numeric.shape(matrice))<>2) :
- raise Accas.AsException("La dimension de la matrice est incorrecte ")
-
-# On teste si la taille de la matrice jeveux et python est identique
- if (tuple([desc[1],desc[1]])<>Numeric.shape(matrice)) :
- raise Accas.AsException("La taille de la matrice est incorrecte ")
-
-# Si le stockage est plein
- if desc[2]==2 :
- taille=desc[1]*desc[1]/2.0+desc[1]/2.0
- tmpr=Numeric.zeros([int(taille)],Numeric.Float)
- tmpc=Numeric.zeros([int(taille)],Numeric.Float)
- for j in range(desc[1]+1):
- for i in range(j):
- k=j*(j-1)/2+i
- tmpr[k]=matrice[j-1,i].real
- tmpc[k]=matrice[j-1,i].imag
- aster.putvectjev(ncham+(19-len(ncham))*' '+'.VALE',len(tmpr),tuple((\
- range(1,len(tmpr)+1))),tuple(tmpr),tuple(tmpc),1)
-# Si le stockage est diagonal
- elif desc[2]==1 :
- tmpr=Numeric.zeros(desc[1],Numeric.Float)
- tmpc=Numeric.zeros(desc[1],Numeric.Float)
- for j in range(desc[1]):
- tmpr[j]=matrice[j,j].real
- tmpc[j]=matrice[j,j].imag
- aster.putvectjev(ncham+(19-len(ncham))*' '+'.VALE',len(tmpr),tuple((\
- range(1,len(tmpr)+1))),tuple(tmpr),tuple(tmpc),1)
-# Sinon on arrete tout
- else:
- raise KeyError
- return
-
-
-class matr_asse_gd(matr_asse):pass
-class matr_asse_depl_c(matr_asse_gd):pass
-class matr_asse_depl_r(matr_asse_gd):pass
-class matr_asse_pres_c(matr_asse_gd):pass
-class matr_asse_pres_r(matr_asse_gd):pass
-class matr_asse_temp_c(matr_asse_gd):pass
-class matr_asse_temp_r(matr_asse_gd):pass
-
-# matr_elem :
-#--------------------------------
-class matr_elem(ASSD):pass
-class matr_elem_depl_c(matr_elem):pass
-class matr_elem_depl_r(matr_elem):pass
-class matr_elem_pres_c(matr_elem):pass
-class matr_elem_temp_r(matr_elem):pass
-
-
-
-
-# table :
-#--------------------------------
-class table_sdaster(ASSD):
- def __getitem__(self,key):
- requete=string.ljust(key[0],24)
- tblp=string.ljust(self.get_name(),19)+'.TBLP'
- tabnom=list(aster.getvectjev(tblp))
- for i in range(len(tabnom)) :
- if tabnom[i]==requete: break
- resu=aster.getvectjev(tabnom[i+2])
- exist=aster.getvectjev(tabnom[i+3])
- if key[1]>len(resu) or exist[key[1]-1]==0:
- raise KeyError
- else:
- return resu[key[1]-1]
- def EXTR_TABLE(self) :
- """Produit un objet Table à partir du contenu d'une table Aster
- """
- def Nonefy(l1,l2) :
- if l2==0 : return None
- else : return l1
- from Utilitai.Table import Table
- tblp=string.ljust(self.get_name(),19)+'.TBLP'
- tabnom=list(aster.getvectjev(tblp))
- nparam=len(tabnom)/4
- lparam=[tabnom[4*i:4*i+4] for i in range(nparam)]
- dval={}
- # liste des paramètres et des types
- lpar=[]
- ltyp=[]
- for i in lparam :
- value=list(aster.getvectjev(i[2]))
- exist=aster.getvectjev(i[3])
- dval[string.strip(i[0])]=map(Nonefy,value,exist)
- lpar.append(string.strip(i[0]))
- ltyp.append(string.strip(i[1]))
- n=len(dval[lpar[0]])
- # contenu : liste de dict
- lisdic=[]
- for i in range(n) :
- d={}
- for p in lpar : d[p]=dval[p][i]
- lisdic.append(d)
- # titre
- titj=aster.getvectjev(self.get_name().ljust(19)+'.TITR')
- if titj<>None:
- titr='\n'.join(titj)
- else:
- titr=''
- return Table(lisdic, lpar, ltyp, titr)
-
-class table_jeveux(table_sdaster):
- """Classe permettant d'accéder à une table jeveux qui n'a pas d'ASSD associée,
- c'est le cas des concepts résultats (table, evol_xxxx) dérivés."""
- def __init__(self,nom_jeveux):
- self.nom=nom_jeveux
-
-class tabl_aire_int (table_sdaster):pass
-class tabl_calc_g_loca(table_sdaster):pass
-class tabl_calc_g_th (table_sdaster):pass
-class tabl_cara_geom (table_sdaster):pass
-class tabl_char_limite(table_sdaster):pass
-class tabl_ener_elas (table_sdaster):pass
-class tabl_ener_pot (table_sdaster):pass
-class tabl_ener_cin (table_sdaster):pass
-class tabl_trav_ext (table_sdaster):pass
-class tabl_ener_totale(table_sdaster):pass
-class tabl_indic_ener (table_sdaster):pass
-class tabl_indic_seuil(table_sdaster):pass
-class tabl_intsp (table_sdaster):pass
-class tabl_mass_iner (table_sdaster):pass
-class tabl_post_alea (table_sdaster):pass
-class tabl_post_beta (table_sdaster):pass
-class tabl_post_dyna (table_sdaster):pass
-class tabl_post_f_alea(table_sdaster):pass
-class tabl_post_fatig (table_sdaster):pass
-class tabl_post_gouj2e(table_sdaster):pass
-class tabl_post_k (table_sdaster):pass
-class tabl_post_rccm (table_sdaster):pass
-class tabl_post_rele (table_sdaster):pass
-class tabl_post_simpli(table_sdaster):pass
-class tabl_post_usur (table_sdaster):pass
-class tabl_reca_weib (table_sdaster):pass
-class tabl_rice_tracey(table_sdaster):pass
-class tabl_texture (table_sdaster):pass
-class tabl_trc (table_sdaster):pass
-class tabl_weibull (table_sdaster):pass
-
-
-# vect_asse :
-#--------------------------------
-class vect_asse(ASSD):pass
-class vect_asse_gene(vect_asse):pass
-class vect_asse_gene_r(vect_asse_gene):
- def EXTR_VECT_GENE(self) :
- """ retourne les valeurs du vecteur generalisee
- dans un format Numerical Array
- Attributs retourne
- - self.valeurs : Numeric.array contenant les valeurs """
-
- ncham=self.get_name()
- ncham=ncham+(8-len(ncham))*' '
- valeur=Numeric.array(aster.getvectjev(ncham+(19-len(ncham))*' '+'.VALE'))
-
- return valeur
-
- def RECU_VECT_GENE(self,vecteur) :
- """ envoie les valeurs d'un Numerical Array dans un vecteur generalise
- reel definie dans jeveux
- Attributs ne retourne rien """
- from Utilitai.Utmess import UTMESS
-
-# avertissement generique
- UTMESS('A','RECU_VECT_GENE',' ATTENTION, VOUS ALLEZ ECRASER DES CONCEPTS EXISTANTS')
-
- Numeric.asarray(vecteur)
- ncham=self.get_name()
- ncham=ncham+(8-len(ncham))*' '
- desc=Numeric.array(aster.getvectjev(ncham+(19-len(ncham))*' '+'.DESC'))
-# On teste si le DESC du vecteur existe
- if (desc==None):
- raise Accas.AsException("L'objet vecteur n'existe pas ou \
- est mal cree par Code Aster")
-# On teste si la taille du vecteur jeveux et python est identique
- if desc[1]<>Numeric.shape(vecteur)[0] :
- raise Accas.AsException("La taille du vecteur python est incorrecte")
- aster.putvectjev(ncham+(19-len(ncham))*' '+'.VALE',len(vecteur),tuple((\
- range(1,len(vecteur)+1))),tuple(vecteur),tuple(vecteur),1)
- return
-
-
-class vect_asse_gene_c(vect_asse_gene):
- def EXTR_VECT_GENE(self) :
- """ retourne les valeurs du vecteur generalisee
- dans un format Numerical Array
- Attributs retourne
- - self.valeurs : Numeric.array contenant les valeurs """
-
- ncham=self.get_name()
- ncham=ncham+(8-len(ncham))*' '
- valeur=Numeric.array(aster.getvectjev(ncham+(19-len(ncham))*' '+'.VALE'),Numeric.Complex)
-
- return valeur
-
- def RECU_VECT_GENE(self,vecteur) :
- """ envoie les valeurs d'un Numerical Array dans un vecteur generalise
- complexe definie dans jeveux
- Attributs ne retourne rien """
- from Utilitai.Utmess import UTMESS
-
-# avertissement generique
- UTMESS('A','RECU_VECT_GENE',' ATTENTION, VOUS ALLEZ ECRASER DES CONCEPTS EXISTANTS')
-
- Numeric.asarray(vecteur)
- ncham=self.get_name()
- ncham=ncham+(8-len(ncham))*' '
- desc=Numeric.array(aster.getvectjev(ncham+(19-len(ncham))*' '+'.DESC'))
-# On teste si le DESC de la matrice existe
- if (desc==None):
- raise Accas.AsException("L'objet vecteur n'existe pas ou \
- est mal cree par Code Aster")
-# On teste si la taille de la matrice jeveux et python est identique
- if desc[1]<>Numeric.shape(vecteur)[0] :
- raise Accas.AsException("La taille du vecteur python est incorrecte")
- tmpr=vecteur.real
- tmpc=vecteur.imag
- aster.putvectjev(ncham+(19-len(ncham))*' '+'.VALE',len(tmpr),tuple((
- range(1,len(tmpr)+1))),tuple(tmpr),tuple(tmpc),1)
- return
-
-
-# vect_elem :
-#--------------------------------
-class vect_elem(ASSD):pass
-class vect_elem_depl_r(vect_elem):pass
-class vect_elem_pres_c(vect_elem):pass
-class vect_elem_pres_r(vect_elem):pass
-class vect_elem_temp_r(vect_elem):pass
-
-#& MODIF COMMUN DATE 07/10/2005 AUTEUR CIBHHPD L.SALMONA
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2003 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-def C_COMP_INCR() : return FACT(statut='f',min=1,max='**', #COMMUN#
- RELATION =SIMP(statut='o',typ='TXM',defaut="VMIS_ISOT_TRAC",
- into=( "ELAS",
- "VMIS_ISOT_TRAC",
- "VISC_ISOT_TRAC",
- "VMIS_ISOT_LINE",
- "VISC_ISOT_LINE",
- "VMIS_ECMI_TRAC",
- "VMIS_ECMI_LINE",
- "LABORD_1D",
- "ENDO_FRAGILE",
- "ENDO_ISOT_BETON",
- "ENDO_ORTH_BETON",
- "BETON_REGLE_PR",
- "MAZARS",
- "JOINT_BA",
- "RUPT_FRAG",
- "CZM_EXP_REG",
- "CZM_EXP",
- "META_P_IL",
- "META_P_IL_PT",
- "META_P_IL_RE",
- "META_P_IL_PT_RE",
- "META_V_IL",
- "META_V_IL_PT",
- "META_V_IL_RE",
- "META_V_IL_PT_RE",
- "META_P_INL",
- "META_P_INL_PT",
- "META_P_INL_RE",
- "META_P_INL_PT_RE",
- "META_V_INL",
- "META_V_INL_PT",
- "META_V_INL_RE",
- "META_V_INL_PT_RE",
- "META_P_CL",
- "META_P_CL_PT",
- "META_P_CL_RE",
- "META_P_CL_PT_RE",
- "META_V_CL",
- "META_V_CL_PT",
- "META_V_CL_RE",
- "META_V_CL_PT_RE",
- "VMIS_CINE_LINE",
- "VISC_TAHERI",
- "CHABOCHE",
- "VISCOCHAB",
- "VISC_CIN1_CHAB",
- "VISC_CIN2_CHAB",
- "POLY_CFC",
- "LMARC",
- "LMARC_IRRA",
- "ROUSSELIER",
- "ROUSS_PR",
- "ROUSS_VISC",
- "VMIS_POU_LINE",
- "VMIS_POU_FLEJOU",
- "ARME",
- "ASSE_CORN",
- "NORTON_HOFF",
- "LEMAITRE",
- "LEMAITRE_IRRA",
- "LEMA_SEUIL",
- "ZIRC_CYRA2",
- "VISC_IRRA_LOG",
- "GRAN_IRRA_LOG",
- "ZIRC_EPRI",
- "VENDOCHAB",
- "NADAI_B",
- "DIS_CONTACT",
- "DIS_CHOC",
- "DIS_GRICRA",
- "DIS_GOUJ2E_PLAS",
- "DIS_GOUJ2E_ELAS",
- "GRILLE_ISOT_LINE",
- "GRILLE_CINE_LINE",
- "GRILLE_PINTO_MEN",
- "PINTO_MENEGOTTO",
- "CJS",
- "CAM_CLAY",
- "BARCELONE",
- "LAIGLE",
- "DRUCKER_PRAGER",
- "HOEK_BROWN",
- "OHNO",
- "GRANGER_FP",
- "GRANGER_FP_INDT",
- "GRANGER_FP_V",
- "BAZANT_FD",
- "BETON_UMLV_FP",
- "BETON_DOUBLE_DP",
- "KIT_HM",
- "KIT_HHM",
- "KIT_THH",
- "KIT_THV",
- "KIT_THM",
- "KIT_THHM",
- "VMIS_ASYM_LINE",
- "ELAS_THM",
- "ELAS_THER",
- "SURF_ETAT_NSAT",
- "SURF_ETAT_SATU",
- "CAM_CLAY_THM",
- "KIT_DDI",
- "GLRC",
- "SANS",
- "CORR_ACIER",
- "MONOCRISTAL",
- "POLYCRISTAL",
- "ZMAT",
- "GATT_MONERIE",
- ) ),
- ELAS =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
- SANS =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
- CORR_ACIER =SIMP(statut='c',typ='I',defaut=3,into=(3,)),
- VMIS_ISOT_TRAC =SIMP(statut='c',typ='I',defaut=2,into=(2,)),
- VISC_ISOT_TRAC =SIMP(statut='c',typ='I',defaut=3,into=(3,)),
- VMIS_ISOT_LINE =SIMP(statut='c',typ='I',defaut=2,into=(2,)),
- VISC_ISOT_LINE =SIMP(statut='c',typ='I',defaut=3,into=(3,)),
- VMIS_ECMI_TRAC =SIMP(statut='c',typ='I',defaut=8,into=(8,)),
- VMIS_ECMI_LINE =SIMP(statut='c',typ='I',defaut=8,into=(8,)),
- LABORD_1D =SIMP(statut='c',typ='I',defaut=5,into=(5,)),
- ENDO_FRAGILE =SIMP(statut='c',typ='I',defaut=2,into=(2,)),
- ENDO_ISOT_BETON =SIMP(statut='c',typ='I',defaut=2,into=(2,)),
- ENDO_ORTH_BETON =SIMP(statut='c',typ='I',defaut=7,into=(7,)),
- BETON_REGLE_PR =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
- MAZARS =SIMP(statut='c',typ='I',defaut=3,into=(3,)),
- JOINT_BA =SIMP(statut='c',typ='I',defaut=6,into=(6,)),
- RUPT_FRAG =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
- CZM_EXP_REG =SIMP(statut='c',typ='I',defaut=4,into=(4,)),
- CZM_EXP =SIMP(statut='c',typ='I',defaut=7,into=(7,)),
- META_P_IL =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
- META_P_IL_PT =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
- META_P_IL_RE =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
- META_P_IL_PT_RE =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
- META_V_IL =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
- META_V_IL_PT =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
- META_V_IL_RE =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
- META_V_IL_PT_RE =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
- META_P_INL =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
- META_P_INL_PT =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
- META_P_INL_RE =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
- META_P_INL_PT_RE =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
- META_V_INL =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
- META_V_INL_PT =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
- META_V_INL_RE =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
- META_V_INL_PT_RE =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
- META_P_CL =SIMP(statut='c',typ='I',defaut=6,into=(6,)),
- META_P_CL_PT =SIMP(statut='c',typ='I',defaut=6,into=(6,)),
- META_P_CL_RE =SIMP(statut='c',typ='I',defaut=6,into=(6,)),
- META_P_CL_PT_RE =SIMP(statut='c',typ='I',defaut=6,into=(6,)),
- META_V_CL =SIMP(statut='c',typ='I',defaut=6,into=(6,)),
- META_V_CL_PT =SIMP(statut='c',typ='I',defaut=6,into=(6,)),
- META_V_CL_RE =SIMP(statut='c',typ='I',defaut=6,into=(6,)),
- META_V_CL_PT_RE =SIMP(statut='c',typ='I',defaut=6,into=(6,)),
- VMIS_CINE_LINE =SIMP(statut='c',typ='I',defaut=7,into=(7,)),
- CHABOCHE =SIMP(statut='c',typ='I',defaut=14,into=(14,)),
- VISCOCHAB =SIMP(statut='c',typ='I',defaut=28,into=(28,)),
- VISC_CIN1_CHAB =SIMP(statut='c',typ='I',defaut=8,into=(8,)),
- VISC_CIN2_CHAB =SIMP(statut='c',typ='I',defaut=14,into=(14,)),
- POLY_CFC =SIMP(statut='c',typ='I',defaut=1688,into=(1688,)),
- LMARC =SIMP(statut='c',typ='I',defaut=20,into=(20,)),
- LMARC_IRRA =SIMP(statut='c',typ='I',defaut=20,into=(20,)),
- VISC_TAHERI =SIMP(statut='c',typ='I',defaut=9,into=(9,)),
- ROUSSELIER =SIMP(statut='c',typ='I',defaut=9,into=(9,)),
- ROUSS_PR =SIMP(statut='c',typ='I',defaut=3,into=(3,)),
- ROUSS_VISC =SIMP(statut='c',typ='I',defaut=3,into=(3,)),
- VMIS_POU_LINE =SIMP(statut='c',typ='I',defaut=9,into=(9,)),
- VMIS_POU_FLEJOU =SIMP(statut='c',typ='I',defaut=9 ,into=(9,)),
- ASSE_CORN =SIMP(statut='c',typ='I',defaut=7,into=(7,)),
- ARME =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
- NORTON_HOFF =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
- LEMAITRE =SIMP(statut='c',typ='I',defaut=2,into=(2,)),
- LEMA_SEUIL =SIMP(statut='c',typ='I',defaut=2,into=(2,)),
- LEMAITRE_IRRA =SIMP(statut='c',typ='I',defaut=2,into=(2,)),
- ZIRC_CYRA2 =SIMP(statut='c',typ='I',defaut=2,into=(2,)),
- ZIRC_EPRI =SIMP(statut='c',typ='I',defaut=2,into=(2,)),
- VISC_IRRA_LOG =SIMP(statut='c',typ='I',defaut=2,into=(2,)),
- GRAN_IRRA_LOG =SIMP(statut='c',typ='I',defaut=2,into=(2,)),
- NADAI_B =SIMP(statut='c',typ='I',defaut=34,into=(34,)),
- VENDOCHAB =SIMP(statut='c',typ='I',defaut=10,into=(10,)),
- GRILLE_ISOT_LINE=SIMP(statut='c',typ='I',defaut=4,into=(4,)),
- GRILLE_CINE_LINE=SIMP(statut='c',typ='I',defaut=4,into=(4,)),
- GRILLE_PINTO_MEN=SIMP(statut='c',typ='I',defaut=16,into=(16,)),
- DIS_CONTACT =SIMP(statut='c',typ='I',defaut=6,into=(6,)),
- DIS_CHOC =SIMP(statut='c',typ='I',defaut=7,into=(7,)),
- DIS_GRICRA =SIMP(statut='c',typ='I',defaut=12,into=(12,)),
- DIS_GOUJ2E_PLAS =SIMP(statut='c',typ='I',defaut=2,into=(2,)),
- DIS_GOUJ2E_ELAS =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
- PINTO_MENEGOTTO =SIMP(statut='c',typ='I',defaut=8,into=(8,)),
- CJS =SIMP(statut='c',typ='I',defaut=16,into=(16,)),
- CAM_CLAY =SIMP(statut='c',typ='I',defaut=2,into=(2,)),
- BARCELONE =SIMP(statut='c',typ='I',defaut=5,into=(5,)),
- LAIGLE =SIMP(statut='c',typ='I',defaut=4,into=(4,)),
- DRUCKER_PRAGER =SIMP(statut='c',typ='I',defaut=3,into=(3,)),
- HOEK_BROWN =SIMP(statut='c',typ='I',defaut=3,into=(3,)),
- OHNO =SIMP(statut='c',typ='I',defaut=32,into=(32,)),
- GRANGER_FP =SIMP(statut='c',typ='I',defaut=55,into=(55,)),
- GRANGER_FP_INDT =SIMP(statut='c',typ='I',defaut=55,into=(55,)),
- GRANGER_FP_V =SIMP(statut='c',typ='I',defaut=55,into=(55,)),
- BAZANT_FD =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
- BETON_DOUBLE_DP =SIMP(statut='c',typ='I',defaut=4,into=(4,)),
- KIT_HM =SIMP(statut='c',typ='I',defaut=0,into=(0,)),
- KIT_HHM =SIMP(statut='c',typ='I',defaut=0,into=(0,)),
- KIT_THH =SIMP(statut='c',typ='I',defaut=0,into=(0,)),
- KIT_THV =SIMP(statut='c',typ='I',defaut=0,into=(0,)),
- KIT_THM =SIMP(statut='c',typ='I',defaut=0,into=(0,)),
- KIT_THHM =SIMP(statut='c',typ='I',defaut=0,into=(0,)),
- VMIS_ASYM_LINE =SIMP(statut='c',typ='I',defaut=4,into=(4,)),
- BETON_UMLV_FP =SIMP(statut='c',typ='I',defaut=21,into=(21,)),
- GLRC =SIMP(statut='c',typ='I',defaut=7,into=(7,)),
- GATT_MONERIE =SIMP(statut='c',typ='I',defaut=2,into=(2,)),
-
- b_monox = BLOC(condition = "RELATION == 'MONOCRISTAL' ",
- fr="SD issue de DEFI_COMPOR",
- COMPOR =SIMP(statut='o',typ=compor_sdaster,max=1),),
-#
- b_polyx = BLOC(condition = "RELATION == 'POLYCRISTAL' ",
- fr="SD issue de DEFI_COMPOR",
- COMPOR =SIMP(statut='o',typ=compor_sdaster,max=1),),
-#
- b_zmat = BLOC(condition = "RELATION == 'ZMAT' ",
- fr="Comportement de la bibliotheque Zmat",
- NB_VARI =SIMP(statut='o',typ='I',max=1),
- UNITE =SIMP(statut='o',typ='I',max=1),),
-
-
-
- RELATION_KIT =SIMP(statut='f',typ='TXM',max='**',validators=NoRepeat(),
- into=(
-# MECA
- "ELAS",
- "CJS",
- "CAM_CLAY",
- "BARCELONE",
- "LAIGLE",
- "DRUCKER_PRAGER",
- "HOEK_BROWN",
- "ELAS_THM",
- "ELAS_THER",
- "SURF_ETAT_NSAT",
- "SURF_ETAT_SATU",
- "CAM_CLAY_THM",
- "MAZARS",
- "ENDO_ISOT_BETON",
-# THMC
- "GAZ",
- "LIQU_SATU",
- "LIQU_SATU_GAT",
- "LIQU_GAZ_ATM",
- "LIQU_VAPE_GAZ",
- "LIQU_AD_GAZ_VAPE",
- "LIQU_VAPE",
- "LIQU_NSAT_GAT",
- "LIQU_GAZ",
-# HYDR
- "HYDR_UTIL",
- "HYDR",
- "HYDR_ENDO",
-# MECA_META
- "ACIER",
- "ZIRC",
-# MECA KIT_DDI
- "VMIS_ISOT_TRAC",
- "VMIS_ISOT_LINE",
- "VMIS_ISOT_CINE",
- "GRANGER_FP",
- "GRANGER_FP_INDT",
- "GRANGER_FP_V",
- "BETON_UMLV_FP",
- "ROUSS_PR",
- "CHABOCHE",
- "OHNO",
- "NADAI_B",
- "BETON_DOUBLE_DP",
- ),),
-
-
- ELAS_THM =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
- SURF_ETAT_NSAT =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
- SURF_ETAT_SATU =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
- CAM_CLAY_THM =SIMP(statut='c',typ='I',defaut=6,into=(6,)),
- GAZ =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
- LIQU_SATU =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
- LIQU_SATU_GAT =SIMP(statut='c',typ='I',defaut=2,into=(2,)),
- LIQU_GAZ_ATM =SIMP(statut='c',typ='I',defaut=2,into=(2,)),
- LIQU_VAPE_GAZ =SIMP(statut='c',typ='I',defaut=3,into=(3,)),
- LIQU_AD_GAZ_VAPE=SIMP(statut='c',typ='I',defaut=3,into=(3,)),
- LIQU_VAPE =SIMP(statut='c',typ='I',defaut=3,into=(3,)),
- LIQU_NSAT_GAT =SIMP(statut='c',typ='I',defaut=3,into=(3,)),
- LIQU_GAZ =SIMP(statut='c',typ='I',defaut=2,into=(2,)),
- HYDR_UTIL =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
- HYDR =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
- HYDR_ENDO =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
- ACIER =SIMP(statut='c',typ='I',defaut=5,into=(5,)),
- ZIRC =SIMP(statut='c',typ='I',defaut=3,into=(3,)),
-
- DEFORMATION =SIMP(statut='f',typ='TXM',defaut="PETIT",into=("PETIT","PETIT_REAC","SIMO_MIEHE","GREEN_GR","GREEN",)),
- ALGO_C_PLAN =SIMP(statut='f',typ='TXM',defaut="ANALYTIQUE",into=("DEBORST","ANALYTIQUE",)),
- ALGO_1D =SIMP(statut='f',typ='TXM',defaut="ANALYTIQUE",into=("DEBORST","ANALYTIQUE",)),
- regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- RESI_INTE_RELA =SIMP(statut='f',typ='R',defaut= 1.0E-6),
- ITER_INTE_MAXI =SIMP(statut='f',typ='I',defaut= 10 ),
- ITER_INTE_PAS =SIMP(statut='f',typ='I',defaut= 0 ),
- RESO_INTE =SIMP(statut='f',typ='TXM',defaut="IMPLICITE",
- into=("RUNGE_KUTTA_2","RUNGE_KUTTA_4","IMPLICITE")),
- ) ;
-#& MODIF COMMUN DATE 18/07/2005 AUTEUR VABHHTS J.PELLET
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2003 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE VABHHTS J.PELLET
-# ce fichier contient la liste des "into" possibles pour le mot cle NOM_CHAM
-# c'est a dire les noms de champs des SD RESULTAT (DATA de la routine RSCRSD)
-def C_NOM_CHAM_INTO() : return ("ACCE", #COMMUN#
- "ACCE_ABSOLU",
- "ALPH0_ELGA_EPSP",
- "ALPHP_ELGA_ALPH0",
- "COMPORTEMENT",
- "COMPORTHER",
- "CRIT_ELNO_RUPT",
- "DCHA_ELGA_SIGM",
- "DCHA_ELNO_SIGM",
- "DCHA_NOEU_SIGM",
- "DEDE_ELNO_DLDE",
- "DEDE_NOEU_DLDE",
- "DEGE_ELNO_DEPL",
- "DEGE_NOEU_DEPL",
- "DEPL",
- "DEPL_ABSOLU",
- "DESI_ELNO_DLSI",
- "DESI_NOEU_DLSI",
- "DETE_ELNO_DLTE",
- "DETE_NOEU_DLTE",
- "DURT_ELGA_META",
- "DURT_ELNO_META",
- "DURT_NOEU_META",
- "ECIN_ELEM_DEPL",
- "EFGE_ELNO_CART",
- "EFGE_ELNO_DEPL",
- "EFGE_NOEU_CART",
- "EFGE_NOEU_DEPL",
- "ENDO_ELGA",
- "ENDO_ELNO_ELGA",
- "ENDO_ELNO_SIGA",
- "ENDO_ELNO_SINO",
- "ENDO_NOEU_SINO",
- "ENEL_ELGA",
- "ENEL_ELNO_ELGA",
- "ENEL_NOEU_ELGA",
- "EPEQ_ELNO_TUYO",
- "EPGR_ELGA",
- "EPGR_ELNO",
- "EPME_ELGA_DEPL",
- "EPME_ELNO_DEPL",
- "EPMG_ELGA_DEPL",
- "EPMG_ELNO_DEPL",
- "EPMG_NOEU_DEPL",
- "EPOT_ELEM_DEPL",
- "EPSA_ELNO",
- "EPSA_NOEU",
- "EPSG_ELGA_DEPL",
- "EPSG_ELNO_DEPL",
- "EPSG_NOEU_DEPL",
- "EPSI_ELGA_DEPL",
- "EPSI_ELNO_DEPL",
- "EPSI_ELNO_TUYO",
- "EPSI_NOEU_DEPL",
- "EPSP_ELGA",
- "EPSP_ELNO",
- "EPSP_ELNO_ZAC",
- "EPSP_NOEU",
- "EPSP_NOEU_ZAC",
- "EQUI_ELGA_EPME",
- "EQUI_ELGA_EPSI",
- "EQUI_ELGA_SIGM",
- "EQUI_ELNO_EPME",
- "EQUI_ELNO_EPSI",
- "EQUI_ELNO_SIGM",
- "EQUI_NOEU_EPME",
- "EQUI_NOEU_EPSI",
- "EQUI_NOEU_SIGM",
- "ERRE_ELEM_NOZ1",
- "ERRE_ELEM_NOZ2",
- "ERRE_ELGA_NORE",
- "ERRE_ELNO_ELGA",
- "ERRE_NOEU_ELGA",
- "SING_ELEM",
- "SING_ELNO_ELEM",
- "ERTH_ELEM_TEMP",
- "ERTH_ELNO_ELEM",
- "ETOT_ELEM",
- "ETOT_ELGA",
- "ETOT_ELNO_ELGA",
- "EXTR_ELGA_VARI",
- "EXTR_ELNO_VARI",
- "EXTR_NOEU_VARI",
- "FLUX_ELGA_TEMP",
- "FLUX_ELNO_TEMP",
- "FLUX_NOEU_TEMP",
- "FORC_NODA",
- "FSUR_2D",
- "FSUR_3D",
- "FVOL_2D",
- "FVOL_3D",
- "GRAD_NOEU_THETA",
- "HYDR_ELNO_ELGA",
- "HYDR_NOEU_ELGA",
- "INDI_LOCA_ELGA",
- "INTE_ELNO_ACTI",
- "INTE_ELNO_REAC",
- "INTE_NOEU_ACTI",
- "INTE_NOEU_REAC",
- "IRRA",
- "LANL_ELGA",
- "META_ELGA_TEMP",
- "META_ELNO_TEMP",
- "META_NOEU_TEMP",
- "MODE_FLAMB",
- "PMPB_ELGA_SIEF",
- "PMPB_ELNO_SIEF",
- "PMPB_NOEU_SIEF",
- "PRES",
- "PRES_DBEL_DEPL",
- "PRES_ELNO_DBEL",
- "PRES_ELNO_IMAG",
- "PRES_ELNO_REEL",
- "PRES_NOEU_DBEL",
- "PRES_NOEU_IMAG",
- "PRES_NOEU_REEL",
- "RADI_ELGA_SIGM",
- "RADI_ELNO_SIGM",
- "RADI_NOEU_SIGM",
- "REAC_NODA",
- "SIEF_ELGA",
- "SIEF_ELGA_DEPL",
- "SIEF_ELNO",
- "SIEF_ELNO_ELGA",
- "SIEF_NOEU",
- "SIEF_NOEU_ELGA",
- "SIEQ_ELNO_TUYO",
- "SIGM_ELNO_CART",
- "SIGM_ELNO_COQU",
- "SIGM_ELNO_DEPL",
- "SIGM_ELNO_SIEF",
- "SIGM_ELNO_TUYO",
- "SIGM_ELNO_ZAC",
- "SIGM_NOEU_CART",
- "SIGM_NOEU_COQU",
- "SIGM_NOEU_DEPL",
- "SIGM_NOEU_SIEF",
- "SIGM_NOEU_ZAC",
- "SIGM_NOZ1_ELGA",
- "SIGM_NOZ2_ELGA",
- "SIPO_ELNO_DEPL",
- "SIPO_ELNO_SIEF",
- "SIPO_NOEU_DEPL",
- "SIPO_NOEU_SIEF",
- "SIRE_ELNO_DEPL",
- "SIRE_NOEU_DEPL",
- "SOUR_ELGA_ELEC",
- "TEMP",
- "THETA",
- "VALE_CONT",
- "VALE_NCOU_MAXI",
- "VARI_ELGA",
- "VARI_ELGA_ZAC",
- "VARI_ELNO",
- "VARI_ELNO_COQU",
- "VARI_ELNO_ELGA",
- "VARI_ELNO_TUYO",
- "VARI_NOEU",
- "VARI_NOEU_ELGA",
- "VARI_NON_LOCAL",
- "VITE",
- "VITE_ABSOLU",
- "VITE_VENT",
- )
-#& MODIF COMMUN DATE 27/06/2005 AUTEUR D6BHHJP J.P.LEFEBVRE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2005 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# ce fichier contient la liste des noms des grandeurs de CODE_ASTER
-def C_NOM_GRANDEUR() : return ( #COMMUN#
-"ABSC_R",
-"ADRSJEVE",
-"ADRSJEVN",
-"CAARPO",
-"CACABL",
-"CACOQU",
-"CADISA",
-"CADISK",
-"CADISM",
-"CAFI_R",
-"CAGEBA",
-"CAGEPO",
-"CAGNBA",
-"CAGNPO",
-"CAMASS",
-"CAORIE",
-"CAPOUF",
-"CARCRI",
-"CASECT",
-"CHLI_R",
-"CODE_I",
-"COEH_F",
-"COEH_R",
-"COMPOR",
-"CORR_R",
-"CRRU_R",
-"DBEL_R",
-"DCEL_I",
-"DDLI_C",
-"DDLI_F",
-"DDLI_R",
-"DDLM_C",
-"DDLM_R",
-"DEPL_C",
-"DEPL_F",
-"DEPL_R",
-"DOMMAG",
-"DURT_R",
-"ENER_R",
-"EPSI_F",
-"EPSI_R",
-"ERRETEMP",
-"ERREUR",
-"FACY_R",
-"FELECR",
-"FISS_R",
-"FLAPLA",
-"FLUN_F",
-"FLUN_R",
-"FLUX_F",
-"FLUX_R",
-"FORC_C",
-"FORC_F",
-"FORC_R",
-"FREQ_R",
-"FTHM_F",
-"FTHM_R",
-"G",
-"GEOM_R",
-"G_DEPL_R",
-"HARMON",
-"HYDR_R",
-"IMPE_C",
-"IMPE_F",
-"IMPE_R",
-"IND_LOCA",
-"INFC_R",
-"INST_R",
-"INTE_R",
-"INTLOC",
-"IRRA_R",
-"ITECREL",
-"ITEDEC",
-"J",
-"LISTMA",
-"MACOMP",
-"MASS_R",
-"MATE_F",
-"NBSP_I",
-"NEUT_F",
-"NEUT_I",
-"NEUT_K16",
-"NEUT_K24",
-"NEUT_K8",
-"NEUT_R",
-"NUMC_I",
-"NUMMOD",
-"ONDE_F",
-"ONDE_R",
-"PESA_R",
-"PILO_K",
-"PILO_R",
-"POSI",
-"PREC",
-"PRES_C",
-"PRES_F",
-"PRES_R",
-"RAYO_F",
-"RAYO_R",
-"RCCM_K",
-"RCCM_R",
-"RESCREL",
-"RICE_TRA",
-"ROTA_R",
-"SECTION",
-"SIEF_C",
-"SIEF_R",
-"SIZZ_R",
-"SOUR_F",
-"SOUR_R",
-"SPMA_R",
-"STAOUDYN",
-"TEMP_C",
-"TEMP_F",
-"TEMP_R",
-"THETA",
-"VALO_R",
-"VANL_R",
-"VAR2_R",
-"VARI_R",
-"VENTCX_F",
-"VNOR_C",
-"VNOR_F",
-"VOISIN",
-"WEIBULL",
-"XCONTAC",
- )
-#& MODIF COMMUN DATE 27/06/2005 AUTEUR D6BHHJP J.P.LEFEBVRE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# ce fichier contient la liste des PARA possibles pour les fonctions et les nappes
-def C_PARA_FONCTION() : return ( #COMMUN#
- "DX","DY","DZ","DRX","DRY","DRZ","TEMP","TSEC",
- "INST","X","Y","Z","EPSI","META","FREQ","PULS","DSP",
- "AMOR","ABSC","SIGM","HYDR","SECH","PORO","SAT",
- "PGAZ","PCAP","VITE","ENDO","NORM","EPAIS",
- "NEUT1","NEUT2",)
-#& MODIF COMMUN DATE 27/06/2005 AUTEUR D6BHHJP J.P.LEFEBVRE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-#
-# ce fichier contient la liste des "into" possibles pour le mot cle TYPE_CHAM
-def C_TYPE_CHAM_INTO() : #COMMUN#
- l=[]
- for gd in C_NOM_GRANDEUR() :
- for typ in ("ELEM","ELNO","ELGA","CART","NOEU") :
- l.append(typ+"_"+gd)
- return tuple(l)
-
-#& MODIF COMMANDE DATE 09/05/2005 AUTEUR MJBHHPE J.L.FLEJOU
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE MJBHHPE J.L.FLEJOU
-AFFE_CARA_ELEM=OPER(nom="AFFE_CARA_ELEM",op= 19,sd_prod=cara_elem,
- fr="Affectation de caractéristiques à des éléments de structure",
- reentrant='n',
- UIinfo={"groupes":("Modélisation",)},
- regles=(AU_MOINS_UN('POUTRE','BARRE','COQUE','CABLE','DISCRET','DISCRET_2D','MASSIF',
- 'ASSE_GRIL','GRILLE','AFFE_SECT','AFFE_FIBRE','RIGI_PARASOL'),),
- MODELE =SIMP(statut='o',typ=modele_sdaster ),
- INFO =SIMP(statut='f',typ='I', defaut= 1 ,into=(1,2) ),
- VERIF =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',into=("MAILLE","NOEUD") ),
-
-#============================================================================
- POUTRE =FACT(statut='f',max='**',
- regles=(UN_PARMI('MAILLE','GROUP_MA'),),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- SECTION =SIMP(statut='o',typ='TXM' ,into=("GENERALE","RECTANGLE","CERCLE") ),
- PREC_AIRE =SIMP(statut='f',typ='R',defaut=0.01),
- PREC_INERTIE =SIMP(statut='f',typ='R',defaut=0.1),
- b_generale =BLOC( condition = "SECTION=='GENERALE'",
- VARI_SECT =SIMP(statut='f',typ='TXM',into=("CONSTANT","HOMOTHETIQUE"),defaut="CONSTANT"),
- b_constant =BLOC( condition = "VARI_SECT=='CONSTANT'",
- CARA =SIMP(statut='o',typ='TXM',validators=NoRepeat(),min=4 ,max=15,
- fr="A,IY,IZ,JX sont des paramètres obligatoires",
- into=("A","IY","IZ","AY","AZ","EY","EZ","JX","RY","RZ","RT",
- "JG","IYR2","IZR2","AI") ),
- VALE =SIMP(statut='o',typ='R',min=4 ,max=15),
- ),
- b_homothetique =BLOC( condition = "VARI_SECT=='HOMOTHETIQUE'",
- CARA =SIMP(statut='o',typ='TXM',validators=NoRepeat(),min=8 ,max=30,
- fr="A1,A2,IY1,IY2,IZ1,IZ2,JX1,JX2 sont des paramètres obligatoires",
- into=("A1","IY1","IZ1","AY1","AZ1","EY1","EZ1","JX1","RY1",
- "RZ1","RT1","JG1","IYR21","IZR21","AI1",
- "A2","IY2","IZ2","AY2","AZ2","EY2","EZ2","JX2","RY2",
- "RZ2","RT2","JG2","IYR22","IZR22","AI2") ),
- VALE =SIMP(statut='o',typ='R',min=8 ,max=30),
- ),
- ),
- b_rectangle =BLOC( condition = "SECTION=='RECTANGLE'",
- VARI_SECT =SIMP(statut='f',typ='TXM',into=("CONSTANT","HOMOTHETIQUE","AFFINE"),defaut="CONSTANT"),
- b_constant =BLOC( condition = "VARI_SECT=='CONSTANT'",
- CARA =SIMP(statut='o',typ='TXM',validators=NoRepeat(),min=1 ,max=4,
- into=("H","EP", "HY","HZ","EPY","EPZ") ),
- VALE =SIMP(statut='o',typ='R',min=1 ,max=4),
- ),
- b_homothetique =BLOC( condition = "VARI_SECT=='HOMOTHETIQUE'",
- CARA =SIMP(statut='o',typ='TXM',validators=NoRepeat(),min=2 ,max=8,
- into=("H1","HZ1","HY1","EP1","EPY1","EPZ1",
- "H2","HZ2","HY2","EP2","EPY2","EPZ2") ),
- VALE =SIMP(statut='o',typ='R',min=2 ,max=8),
- ),
- b_affine =BLOC( condition = "VARI_SECT=='AFFINE'",
- CARA =SIMP(statut='o',typ='TXM',validators=NoRepeat(),min=3 ,max=6,
- into=("HY","EPY", "HZ1","EPZ1","HZ2","EPZ2") ),
- VALE =SIMP(statut='o',typ='R',min=3 ,max=6),
- ),
- ),
- b_cercle =BLOC( condition = "SECTION=='CERCLE'",
- VARI_SECT =SIMP(statut='f',typ='TXM',into=("CONSTANT","HOMOTHETIQUE"),defaut="CONSTANT"),
- b_constant =BLOC( condition = "VARI_SECT=='CONSTANT'",
- CARA =SIMP(statut='o',typ='TXM',validators=NoRepeat(),min=1 ,max=2,
- fr="R est un paramètre obligatoire",
- into=("R","EP") ),
- VALE =SIMP(statut='o',typ='R',min=1 ,max=2),
- ),
- b_homothetique =BLOC( condition = "VARI_SECT=='HOMOTHETIQUE'",
- CARA =SIMP(statut='o',typ='TXM',validators=NoRepeat(),min=2 ,max=4,
- fr="R1, R2 sont des paramètres obligatoires",
- into=("R1","R2","EP1","EP2") ),
- VALE =SIMP(statut='o',typ='R',min=2 ,max=4),
- ),
- MODI_METRIQUE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
- FCX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- TUYAU_NSEC =SIMP(statut='f',typ='I',val_max=32,defaut=16),
- TUYAU_NCOU =SIMP(statut='f',typ='I',val_max=10,defaut=3),
- ),
- ),
-
-#============================================================================
- BARRE =FACT(statut='f',max='**',
- regles=(UN_PARMI('MAILLE','GROUP_MA'),),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- SECTION =SIMP(statut='o',typ='TXM',into=("GENERALE","RECTANGLE","CERCLE") ),
- b_generale =BLOC( condition = "SECTION=='GENERALE'",
- CARA =SIMP(statut='o',typ='TXM',into=("A",) ),
- VALE =SIMP(statut='o',typ='R',min=1,max=1 ),
- ),
- b_rectangle =BLOC( condition = "SECTION=='RECTANGLE'",
- CARA =SIMP(statut='o',typ='TXM',into=("H","EP",
- "HZ","HY","EPY","EPZ"),
- validators=NoRepeat(),min=1,max=4 ),
- VALE =SIMP(statut='o',typ='R',min=1,max=4 ),
- ),
- b_cercle =BLOC( condition = "SECTION=='CERCLE'",
- CARA =SIMP(statut='o',typ='TXM',validators=NoRepeat(),min=1,max=2,into=("R","EP") ),
- VALE =SIMP(statut='o',typ='R',min=1,max=2 ),
- ),
- FCX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- ),
-
-#============================================================================
- COQUE =FACT(statut='f',max='**',
- regles=(UN_PARMI('MAILLE','GROUP_MA' ),
- PRESENT_PRESENT( 'EXCENTREMENT','INER_ROTA' ),),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- EPAIS =SIMP(statut='o',typ='R' ),
- ANGL_REP =SIMP(statut='f',typ='R',min=2,max=2),
- A_CIS =SIMP(statut='c',typ='R',defaut= 0.8333333E0),
- COEF_RIGI_DRZ =SIMP(statut='f',typ='R',defaut= 1.0E-5 ),
- COQUE_NCOU =SIMP(statut='f',typ='I',defaut= 1 ),
- EXCENTREMENT =SIMP(statut='f',typ='R' ),
- INER_ROTA =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- MODI_METRIQUE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
- ),
-
-#============================================================================
- CABLE =FACT(statut='f',max='**',
- regles=(UN_PARMI('MAILLE','GROUP_MA'),),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- N_INIT =SIMP(statut='f',typ='R',defaut= 5000. ),
- SECTION =SIMP(statut='f',typ='R' ),
- FCX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- ),
-
-#============================================================================
- DISCRET =FACT(statut='f',max='**',
- regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
- NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- REPERE =SIMP(statut='f',typ='TXM',into=("LOCAL","GLOBAL") ),
- AMOR_HYST =SIMP(statut='f',typ='R' ),
- CARA =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=1,
- fr="Affectation de matrices de rigidité, de masse ou d'amortissement à des mailles ou noeuds",
- into=("K_T_D_N","K_T_D_L","K_TR_D_N","K_TR_D_L",
- "K_T_N", "K_T_L", "K_TR_N", "K_TR_L",
- "M_T_D_N","M_TR_D_N","M_T_N",
- "M_T_L", "M_TR_N", "M_TR_L",
- "A_T_D_N","A_TR_D_N","A_T_D_L","A_TR_D_L",
- "A_T_N", "A_T_L", "A_TR_N", "A_TR_L") ),
-
-# affection des caractéristiques de RIGIDITE/AMORTISSEMENT
- b_K_T_D_N =BLOC(condition = "(CARA=='K_T_D_N')or(CARA=='A_T_D_N')",
- VALE =SIMP(statut='o',typ='R',min=3 ,max=3 ),),
- b_K_T_D_L =BLOC(condition = "(CARA=='K_T_D_L')or(CARA=='A_T_D_L')",
- VALE =SIMP(statut='o',typ='R',min=3 ,max=3 ),),
- b_K_TR_D_N =BLOC(condition = "(CARA=='K_TR_D_N')or(CARA=='A_TR_D_N')",
- VALE =SIMP(statut='o',typ='R',min=6 ,max=6 ),),
- b_K_TR_D_L =BLOC(condition = "(CARA=='K_TR_D_L')or(CARA=='A_TR_D_L')",
- VALE =SIMP(statut='o',typ='R',min=6 ,max=6 ),),
- b_K_T_N =BLOC(condition = "(CARA=='K_T_N')or(CARA=='A_T_N')",
- VALE =SIMP(statut='o',typ='R',min=6 ,max=6 ),),
- b_K_T_L =BLOC(condition = "(CARA=='K_T_L')or(CARA=='A_T_L')",
- VALE =SIMP(statut='o',typ='R',min=21,max=21),),
- b_K_TR_N =BLOC(condition = "(CARA=='K_TR_N')or(CARA=='A_TR_N')",
- VALE =SIMP(statut='o',typ='R',min=21,max=21),),
- b_K_TR_L =BLOC(condition = "(CARA=='K_TR_L')or(CARA=='A_TR_L')",
- VALE =SIMP(statut='o',typ='R',min=78,max=78),),
-
-# affection des caractéristiques de MASSE
- b_M_T_D_N =BLOC(condition = "CARA=='M_T_D_N'",
- fr="NOEUD: 1 valeur de masse",
- VALE =SIMP(statut='o',typ='R',min=1 ,max=1 ),),
- b_M_TR_D_N =BLOC(condition = "CARA=='M_TR_D_N'",
- fr="NOEUD: 1 valeur de masse, 6 valeurs du tenseur d'inertie, 3 composantes du vecteur d'excentricité",
- VALE =SIMP(statut='o',typ='R',min=10,max=10),),
- b_M_T_N =BLOC(condition = "CARA=='M_T_N'",
- fr="NOEUD: 6 valeurs de masse (triangulaire supérieure par colonne)",
- VALE =SIMP(statut='o',typ='R',min=6 ,max=6 ),),
- b_M_T_L =BLOC(condition = "CARA=='M_T_L'",
- fr="SEGMENT: 21 valeurs de masse (triangulaire supérieure par colonne)",
- VALE =SIMP(statut='o',typ='R',min=21,max=21),),
- b_M_TR_N =BLOC(condition = "CARA=='M_TR_N'",
- fr="NOEUD: 21 valeurs de masse (triangulaire supérieure par colonne)",
- VALE =SIMP(statut='o',typ='R',min=21,max=21),),
- b_M_TR_L =BLOC(condition = "CARA=='M_TR_L'",
- fr="SEGMENT: 78 valeurs de masse (triangulaire supérieure par colonne)",
- VALE =SIMP(statut='o',typ='R',min=78,max=78),),
- ),
-
-#============================================================================
- DISCRET_2D =FACT(statut='f',max='**',
- regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO'),),
- NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- REPERE =SIMP(statut='f',typ='TXM',into=("LOCAL","GLOBAL") ),
- AMOR_HYST =SIMP(statut='f',typ='R' ),
- CARA =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=1,
- fr="Affectation de matrices de rigidité, de masse ou d'amortissement à des mailles ou noeuds",
- into=("K_T_D_N","K_T_D_L","K_TR_D_N","K_TR_D_L",
- "K_T_N", "K_T_L", "K_TR_N", "K_TR_L",
- "M_T_D_N","M_T_N", "M_TR_D_N",
- "M_T_L", "M_TR_N", "M_TR_L",
- "A_T_D_N","A_TR_D_N","A_T_D_L","A_TR_D_L",
- "A_T_N", "A_T_L", "A_TR_N", "A_TR_L") ),
-
-# affection des caractéristiques de RIGIDITE/AMORTISSEMENT
- b_K_T_D_N =BLOC(condition = "(CARA=='K_T_D_N')or(CARA=='A_T_D_N')",
- VALE =SIMP(statut='o',typ='R',min=2 ,max=2 ),),
- b_K_T_D_L =BLOC(condition = "(CARA=='K_T_D_L')or(CARA=='A_T_D_L')",
- VALE =SIMP(statut='o',typ='R',min=2 ,max=2 ),),
- b_K_TR_D_N =BLOC(condition = "(CARA=='K_TR_D_N')or(CARA=='A_TR_D_N')",
- VALE =SIMP(statut='o',typ='R',min=3 ,max=3 ),),
- b_K_TR_D_L =BLOC(condition = "(CARA=='K_TR_D_L')or(CARA=='A_TR_D_L')",
- VALE =SIMP(statut='o',typ='R',min=3 ,max=3 ),),
- b_K_T_N =BLOC(condition = "(CARA=='K_T_N')or(CARA=='A_T_N')",
- VALE =SIMP(statut='o',typ='R',min=3 ,max=3 ),),
- b_K_T_L =BLOC(condition = "(CARA=='K_T_L')or(CARA=='A_T_L')",
- VALE =SIMP(statut='o',typ='R',min=10,max=10),),
- b_K_TR_N =BLOC(condition = "(CARA=='K_TR_N')or(CARA=='A_TR_N')",
- VALE =SIMP(statut='o',typ='R',min=6 ,max=6),),
- b_K_TR_L =BLOC(condition = "(CARA=='K_TR_L')or(CARA=='A_TR_L')",
- VALE =SIMP(statut='o',typ='R',min=21,max=21),),
-
-# affection des caractéristiques de MASSE
- b_M_T_D_N =BLOC(condition = "CARA=='M_T_D_N'",
- fr="NOEUD: 1 valeur de masse",
- VALE =SIMP(statut='o',typ='R',min=1 ,max=1 ),),
- b_M_TR_D_N =BLOC(condition = "CARA=='M_TR_D_N'",
- fr="NOEUD: 1 valeur de masse(m), 1 valeur d'inertie(Izz), 2 composantes du vecteur d'excentricité(ex,ey) ",
- VALE =SIMP(statut='o',typ='R',min=4 ,max=4 ),),
- b_M_T_N =BLOC(condition = "CARA=='M_T_N'",
- fr="NOEUD: 3 valeurs de masse (triangulaire supérieure par colonne)",
- VALE =SIMP(statut='o',typ='R',min=3 ,max=3 ),),
- b_M_T_L =BLOC(condition = "CARA=='M_T_L'",
- fr="SEGMENT: 10 valeurs de masse (triangulaire supérieure par colonne)",
- VALE =SIMP(statut='o',typ='R',min=10,max=10),),
- b_M_TR_N =BLOC(condition = "CARA=='M_TR_N'",
- fr="NOEUD: 6 valeurs de masse (triangulaire supérieure par colonne)",
- VALE =SIMP(statut='o',typ='R',min=6 ,max=6 ),),
- b_M_TR_L =BLOC(condition = "CARA=='M_TR_L'",
- fr="SEGMENT: 21 valeurs de masse (triangulaire supérieure par colonne)",
- VALE =SIMP(statut='o',typ='R',min=21,max=21),),
- ),
-
-#============================================================================
- ORIENTATION =FACT(statut='f',max='**',
- regles=(UN_PARMI('MAILLE','GROUP_MA','NOEUD','GROUP_NO' ),),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- CARA =SIMP(statut='o',typ='TXM',
- into=("VECT_Y","ANGL_VRIL","VECT_X_Y","ANGL_NAUT","GENE_TUYAU") ),
- VALE =SIMP(statut='o',typ='R',max='**'),
- PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-4 ),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
- ),
-
-#============================================================================
- DEFI_ARC =FACT(statut='f',max='**',
- regles=(UN_PARMI('MAILLE','GROUP_MA'),
- UN_PARMI('ORIE_ARC','CENTRE','NOEUD_CENTRE','GROUP_NO_CENTRE',
- 'POIN_TANG','NOEUD_POIN_TANG','GROUP_NO_POIN_TG'),
- PRESENT_PRESENT('ORIE_ARC','RAYON'),
- EXCLUS('COEF_FLEX','COEF_FLEX_XY'),
- EXCLUS('COEF_FLEX','COEF_FLEX_XZ'),
- EXCLUS('INDI_SIGM','INDI_SIGM_XY'),
- EXCLUS('INDI_SIGM','INDI_SIGM_XZ'),
- PRESENT_PRESENT('COEF_FLEX_XY','COEF_FLEX_XZ'),
- PRESENT_PRESENT('INDI_SIGM_XY','INDI_SIGM_XZ'),),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- ORIE_ARC =SIMP(statut='f',typ='R'),
- CENTRE =SIMP(statut='f',typ='R',max='**'),
- NOEUD_CENTRE =SIMP(statut='f',typ=no),
- GROUP_NO_CENTRE =SIMP(statut='f',typ=grno),
- POIN_TANG =SIMP(statut='f',typ='R',max='**'),
- NOEUD_POIN_TANG =SIMP(statut='f',typ=no),
- GROUP_NO_POIN_TG=SIMP(statut='f',typ=grno),
- RAYON =SIMP(statut='f',typ='R'),
- COEF_FLEX =SIMP(statut='f',typ='R'),
- INDI_SIGM =SIMP(statut='f',typ='R'),
- COEF_FLEX_XY =SIMP(statut='f',typ='R'),
- INDI_SIGM_XY =SIMP(statut='f',typ='R'),
- COEF_FLEX_XZ =SIMP(statut='f',typ='R'),
- INDI_SIGM_XZ =SIMP(statut='f',typ='R'),
- PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
- ),
-
-#============================================================================
- MASSIF =FACT(statut='f',max='**',
- regles=(UN_PARMI('MAILLE','GROUP_MA'),
- UN_PARMI('ANGL_REP','ANGL_AXE'),
- EXCLUS('ANGL_REP','ANGL_AXE'),
- EXCLUS('ANGL_REP','ORIG_AXE'),
- PRESENT_PRESENT('ANGL_AXE','ORIG_AXE'), ),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- ANGL_REP =SIMP(statut='f',typ='R',max=3),
- ANGL_AXE =SIMP(statut='f',typ='R',max=2),
- ORIG_AXE =SIMP(statut='f',typ='R',max=3),
- ),
-
-#============================================================================
- POUTRE_FLUI =FACT(statut='f',max='**',
- regles=(UN_PARMI('MAILLE','GROUP_MA'),),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- B_T =SIMP(statut='o',typ='R'),
- B_N =SIMP(statut='o',typ='R'),
- B_TN =SIMP(statut='o',typ='R',defaut= 0.E+0 ),
- A_FLUI =SIMP(statut='o',typ='R'),
- A_CELL =SIMP(statut='o',typ='R'),
- COEF_ECHELLE =SIMP(statut='o',typ='R'),
- ),
-
-#============================================================================
- GRILLE =FACT(statut='f',max='**',
- regles=(UN_PARMI('MAILLE','GROUP_MA'),
- EXCLUS('ANGL_REP','ORIG_AXE'),
- ENSEMBLE('ORIG_AXE','AXE')),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- SECTION =SIMP(statut='o',typ='R'),
- ANGL_REP =SIMP(statut='f',typ='R',max=2),
- EXCENTREMENT =SIMP(statut='f',typ='R'),
- ORIG_AXE =SIMP(statut='f',typ='R',max='**'),
- AXE =SIMP(statut='f',typ='R',max='**'),
- COEF_RIGI_DRZ =SIMP(statut='f',typ='R',defaut= 1.0E-10 ),
- GRILLE_NCOU =SIMP(statut='f',typ='I',defaut= 1,),
- ),
-
-#============================================================================
- RIGI_PARASOL =FACT(statut='f',max='**',
- regles=(UN_PARMI('COEF_GROUP','FONC_GROUP'),
- UN_PARMI('COOR_CENTRE','NOEUD_CENTRE','GROUP_NO_CENTRE'),
- EXCLUS('GROUP_MA_POI1','GROUP_MA_SEG2'),),
- GROUP_MA =SIMP(statut='o',typ=ma,validators=NoRepeat(),max='**',
- fr="Surface servant à répartir les caractéristiques des discrets"),
- GROUP_MA_POI1 =SIMP(statut='f',typ=ma,validators=NoRepeat(),max=1,
- fr="Mailles de type point correspondant aux discrets"),
- GROUP_MA_SEG2 =SIMP(statut='f',typ=ma,validators=NoRepeat(),max=1,
- fr="Mailles de type seg2 correspondant aux discrets"),
- FONC_GROUP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- COEF_GROUP =SIMP(statut='f',typ='R',max='**'),
- REPERE =SIMP(statut='f',typ='TXM',into=("LOCAL","GLOBAL") ),
- CARA =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=2,
- into=("K_TR_D_N","K_T_D_N","K_TR_D_L","K_T_D_L",
- "A_TR_D_N","A_T_D_N","A_TR_D_L","A_T_D_L") ),
- VALE =SIMP(statut='o',typ='R',max='**'),
- GROUP_NO_CENTRE =SIMP(statut='f',typ=grno),
- NOEUD_CENTRE =SIMP(statut='f',typ=no),
- COOR_CENTRE =SIMP(statut='f',typ='R',min=2,max=3),
- ),
-
-#============================================================================
- RIGI_MISS_3D =FACT(statut='f',max='**',
- GROUP_MA_POI1 =SIMP(statut='o',typ=ma,max=1),
- GROUP_MA_SEG2 =SIMP(statut='f',typ=ma,max=1),
- FREQ_EXTR =SIMP(statut='o',typ='R',max=1),
- UNITE_RESU_IMPE =SIMP(statut='f',typ='I',defaut=30),
- ),
-
-#============================================================================
- ASSE_GRIL =FACT(statut='f',max='**',
- regles=(UN_PARMI('MAILLE','GROUP_MA'),),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- CARA =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',
- into=("K_TR_D_N","K_TR_D_L_T","K_TR_D_L_N",) ),
- VALE =SIMP(statut='o',typ='R',max='**'),
- PAS_T =SIMP(statut='o',typ='R'),
- PAS_N =SIMP(statut='o',typ='R'),
- ANGL_REP =SIMP(statut='o',typ='R',max='**'),
- COEF_ECHELLE =SIMP(statut='o',typ='R'),
- ),
-
-
-#============================================================================
- AFFE_SECT =FACT(statut='f',max='**',
- regles=(AU_MOINS_UN('GROUP_MA','MAILLE'),
- AU_MOINS_UN('TOUT_SECT','GROUP_MA_SECT','MAILLE_SECT'),
- PRESENT_ABSENT('TOUT_SECT','GROUP_MA_SECT','MAILLE_SECT'),),
-
- NOM =SIMP(statut='f',typ='TXM'),
-
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
-
- TOUT_SECT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA_SECT =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE_SECT =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
-
- MAILLAGE_SECT =SIMP(statut='o',typ=maillage_sdaster),
- COOR_AXE_POUTRE =SIMP(statut='o',typ='R',min=2,max=2),
- ),
-
-
-#============================================================================
- AFFE_FIBRE =FACT(statut='f',max='**',
- regles=(AU_MOINS_UN('GROUP_MA','MAILLE'),),
-
- NOM =SIMP(statut='f',typ='TXM'),
-
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
-
- CARA =SIMP(statut='f',typ='TXM',defaut='SURFACE',into=('SURFACE','DIAMETRE',)),
- VALE =SIMP(statut='o',typ='R',max='**'),
- COOR_AXE_POUTRE =SIMP(statut='o',typ='R',min=2,max=2),
- ),
-
-
-) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-AFFE_CHAR_ACOU=OPER(nom="AFFE_CHAR_ACOU",op= 68,sd_prod=char_acou,
- fr="Affectation de charges et conditions aux limites acoustiques constantes",
- reentrant='n',
- UIinfo={"groupes":("Modélisation",)},
- regles=(AU_MOINS_UN('PRES_IMPO','VITE_FACE','IMPE_FACE','LIAISON_UNIF' ),),
- MODELE =SIMP(statut='o',typ=modele_sdaster ),
- VERI_DDL =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
- PRES_IMPO =FACT(statut='f',max='**',
- regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD'),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- PRES =SIMP(statut='o',typ='C' ),
- ),
- VITE_FACE =FACT(statut='f',max='**',
- regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
- PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- VNOR =SIMP(statut='o',typ='C' ),
- ),
- IMPE_FACE =FACT(statut='f',max='**',
- regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
- PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- IMPE =SIMP(statut='o',typ='C' ),
- ),
- LIAISON_UNIF =FACT(statut='f',max='**',
- regles=(UN_PARMI('GROUP_NO','NOEUD','GROUP_MA','MAILLE' ),),
- GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- DDL =SIMP(statut='o',typ='TXM',max='**'),
- ),
-) ;
-#& MODIF COMMANDE DATE 05/09/2005 AUTEUR CIBHHLV L.VIVAN
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE VABHHTS J.PELLET
-def affe_char_cine_prod(MECA_IMPO,THER_IMPO,ACOU_IMPO,**args):
- if MECA_IMPO != None : return char_cine_meca
- if THER_IMPO != None : return char_cine_ther
- if ACOU_IMPO != None : return char_cine_acou
- raise AsException("type de concept resultat non prevu")
-
-AFFE_CHAR_CINE=OPER(nom="AFFE_CHAR_CINE",op= 101,sd_prod=affe_char_cine_prod
- ,fr="Affectation de conditions aux limites cinématiques constantes pour un traitement sans dualisation",
- reentrant='n',
- UIinfo={"groupes":("Modélisation",)},
- regles=(AU_MOINS_UN('MECA_IMPO','THER_IMPO','ACOU_IMPO'),
- EXCLUS('MECA_IMPO','THER_IMPO'),
- EXCLUS('MECA_IMPO','ACOU_IMPO'),
- EXCLUS('THER_IMPO','ACOU_IMPO'),),
- MODELE =SIMP(statut='o',typ=modele_sdaster ),
- MECA_IMPO =FACT(statut='f',max='**',
- regles=(UN_PARMI('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD'),
- AU_MOINS_UN('DX','DY','DZ','DRX','DRY','DRZ','GRX','PRES','PHI',
- 'TEMP','PRE1','PRE2','UI2','UI3','VI2','VI3','WI2','WI3','UO2',
- 'UO3','VO2','VO3','WO2','WO3','UI4','UI5','VI4','VI5','WI4',
- 'WI5','UO4','UO5','VO4','VO5','WO4','WO5','UI6','UO6','VI6',
- 'VO6','WI6','WO6','WO','WI1','WO1','GONF','DCX','DCY','DCZ',
- 'H1X','H1Y','H1Z','E1X','E1Y','E1Z','E2X','E2Y','E2Z',
- 'E3X','E3Y','E3Z','E4X','E4Y','E4Z'),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- DX =SIMP(statut='f',typ='R' ),
- DY =SIMP(statut='f',typ='R' ),
- DZ =SIMP(statut='f',typ='R' ),
- DRX =SIMP(statut='f',typ='R' ),
- DRY =SIMP(statut='f',typ='R' ),
- DRZ =SIMP(statut='f',typ='R' ),
- GRX =SIMP(statut='f',typ='R' ),
- PRES =SIMP(statut='f',typ='R' ),
- PHI =SIMP(statut='f',typ='R' ),
- TEMP =SIMP(statut='f',typ='R' ),
- PRE1 =SIMP(statut='f',typ='R' ),
- PRE2 =SIMP(statut='f',typ='R' ),
- UI2 =SIMP(statut='f',typ='R' ),
- UI3 =SIMP(statut='f',typ='R' ),
- UI4 =SIMP(statut='f',typ='R' ),
- UI5 =SIMP(statut='f',typ='R' ),
- UI6 =SIMP(statut='f',typ='R' ),
- UO2 =SIMP(statut='f',typ='R' ),
- UO3 =SIMP(statut='f',typ='R' ),
- UO4 =SIMP(statut='f',typ='R' ),
- UO5 =SIMP(statut='f',typ='R' ),
- UO6 =SIMP(statut='f',typ='R' ),
- VI2 =SIMP(statut='f',typ='R' ),
- VI3 =SIMP(statut='f',typ='R' ),
- VI4 =SIMP(statut='f',typ='R' ),
- VI5 =SIMP(statut='f',typ='R' ),
- VI6 =SIMP(statut='f',typ='R' ),
- VO2 =SIMP(statut='f',typ='R' ),
- VO3 =SIMP(statut='f',typ='R' ),
- VO4 =SIMP(statut='f',typ='R' ),
- VO5 =SIMP(statut='f',typ='R' ),
- VO6 =SIMP(statut='f',typ='R' ),
- WI2 =SIMP(statut='f',typ='R' ),
- WI3 =SIMP(statut='f',typ='R' ),
- WI4 =SIMP(statut='f',typ='R' ),
- WI5 =SIMP(statut='f',typ='R' ),
- WI6 =SIMP(statut='f',typ='R' ),
- WO2 =SIMP(statut='f',typ='R' ),
- WO3 =SIMP(statut='f',typ='R' ),
- WO4 =SIMP(statut='f',typ='R' ),
- WO5 =SIMP(statut='f',typ='R' ),
- WO6 =SIMP(statut='f',typ='R' ),
- WO =SIMP(statut='f',typ='R' ),
- WI1 =SIMP(statut='f',typ='R' ),
- WO1 =SIMP(statut='f',typ='R' ),
- GONF =SIMP(statut='f',typ='R' ),
- DCX =SIMP(statut='f',typ='R' ),
- DCY =SIMP(statut='f',typ='R' ),
- DCZ =SIMP(statut='f',typ='R' ),
- H1X =SIMP(statut='f',typ='R' ),
- H1Y =SIMP(statut='f',typ='R' ),
- H1Z =SIMP(statut='f',typ='R' ),
- E1X =SIMP(statut='f',typ='R' ),
- E1Y =SIMP(statut='f',typ='R' ),
- E1Z =SIMP(statut='f',typ='R' ),
- E2X =SIMP(statut='f',typ='R' ),
- E2Y =SIMP(statut='f',typ='R' ),
- E2Z =SIMP(statut='f',typ='R' ),
- E3X =SIMP(statut='f',typ='R' ),
- E3Y =SIMP(statut='f',typ='R' ),
- E3Z =SIMP(statut='f',typ='R' ),
- E4X =SIMP(statut='f',typ='R' ),
- E4Y =SIMP(statut='f',typ='R' ),
- E4Z =SIMP(statut='f',typ='R' ),
- ),
- THER_IMPO =FACT(statut='f',max='**',
- regles=(UN_PARMI('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD'),
- AU_MOINS_UN('TEMP','TEMP_INF','TEMP_SUP'),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- TEMP_SUP =SIMP(statut='f',typ='R' ),
- TEMP =SIMP(statut='f',typ='R' ),
- TEMP_INF =SIMP(statut='f',typ='R' ),
- ),
- ACOU_IMPO =FACT(statut='f',max='**',
- regles=(UN_PARMI('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD'),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- PRES =SIMP(statut='o',typ='C' ),
- ),
- INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
-) ;
-#& MODIF COMMANDE DATE 05/09/2005 AUTEUR CIBHHLV L.VIVAN
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#fon
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-def affe_char_cine_f_prod(MECA_IMPO,THER_IMPO,**args):
- if MECA_IMPO != None : return char_cine_meca
- if THER_IMPO != None : return char_cine_ther
- raise AsException("type de concept resultat non prevu")
-
-AFFE_CHAR_CINE_F=OPER(nom="AFFE_CHAR_CINE_F",op= 108,sd_prod=affe_char_cine_f_prod,
- fr="Affectation de conditions aux limites cinématiques fonction d'un (ou plusieurs) paramètres"
- +" pour un traitement sans dualisation",
- reentrant='n',
- UIinfo={"groupes":("Modélisation",)},
- regles=(AU_MOINS_UN('MECA_IMPO','THER_IMPO'),
- EXCLUS('MECA_IMPO','THER_IMPO'),),
- MODELE =SIMP(statut='o',typ=modele_sdaster ),
- MECA_IMPO =FACT(statut='f',max='**',
- regles=(UN_PARMI('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD'),
- AU_MOINS_UN('DX','DY','DZ','DRX','DRY','DRZ','GRX','PRES','TEMP','PHI'),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- DX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- DY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- DZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- DRX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- DRY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- DRZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- GRX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- PRES =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- PHI =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- ),
- THER_IMPO =FACT(statut='f',max='**',
- regles=(UN_PARMI('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD'),
- AU_MOINS_UN('TEMP','TEMP_INF','TEMP_SUP' ),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- TEMP_SUP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- TEMP_INF =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- ),
- INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
-) ;
-#& MODIF COMMANDE DATE 24/10/2005 AUTEUR KHAM M.KHAM
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE G8BHHXD X.DESROCHES
-AFFE_CHAR_MECA=OPER(nom="AFFE_CHAR_MECA",op= 7,sd_prod=char_meca,
- fr="Affectation de charges et conditions aux limites mécaniques constantes",
- reentrant='n',
- UIinfo={"groupes":("Modélisation",)},
- regles=(AU_MOINS_UN('DDL_IMPO','FACE_IMPO','CHAMNO_IMPO','LIAISON_DDL','LIAISON_XFEM','FORCE_NODALE',
- 'FORCE_FACE','FORCE_ARETE','FORCE_CONTOUR','FORCE_INTERNE',
- 'PRES_REP','FORCE_POUTRE','FORCE_COQUE','LIAISON_OBLIQUE',
- 'FORCE_ELEC','INTE_ELEC','PESANTEUR','ROTATION','IMPE_FACE',
- 'VITE_FACE','TEMP_CALCULEE','RELA_CINE_BP','EPSI_INIT','CONTACT',
- 'LIAISON_GROUP','LIAISON_UNIF','FLUX_THM_REP',
- 'LIAISON_SOLIDE','LIAISON_ELEM','ONDE_FLUI',
- 'EPSA_CALCULEE','LIAISON_CHAMNO','VECT_ASSE','LIAISON_COQUE',
- 'LIAISON_MAIL','LIAISON_CYCL','FORCE_TUYAU','SECH_CALCULEE','HYDR_CALCULEE',
- 'EFFE_FOND','EVOL_CHAR','ARLEQUIN','DDL_POUTRE','GRAPPE_FLUIDE'),
- ),
- VERI_NORM =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
- MODELE =SIMP(statut='o',typ=(modele_sdaster) ),
- TEMP_CALCULEE =SIMP(statut='f',fr="Champ de température issu d'un autre calcul",
- typ=(evol_ther,cham_no_temp_r,carte_temp_r,carte_temp_f ) ),
- HYDR_CALCULEE =SIMP(statut='f',fr="Champ d hydratation issu d'un autre calcul",
- typ=evol_ther ),
- SECH_CALCULEE =SIMP(statut='f',fr="Champ de séchage issu d'un autre calcul",
- typ=(evol_ther,cham_no_temp_r,carte_temp_r,carte_temp_f ) ),
- EPSA_CALCULEE =SIMP(statut='f',fr="Champ de déformation anélastique issu d'un autre calcul",
- typ=evol_noli ),
- EVOL_CHAR =SIMP(statut='f',fr="Champ de pression issu d'un autre calcul",
- typ=evol_char ),
-
- PESANTEUR =SIMP(statut='f',typ='R',fr="Champ de pesanteur",min=4,max=4),
- ROTATION =SIMP(statut='f',typ='R',fr="Champ de rotation", min=4,max=4),
- b_rotation =BLOC ( condition = "ROTATION != None",
- CENTRE =SIMP(statut='f',typ='R',defaut=(0.,0.,0.),max=3),),
-
- DDL_IMPO =FACT(statut='f',max='**',
- fr="Impose à des noeuds une ou plusieurs valeurs de déplacement (ou de certaines grandeurs asscociées)",
- regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD'),
- AU_MOINS_UN('DX','DY','DZ','DRX','DRY','DRZ','GRX','PRES','PHI',
- 'TEMP','PRE1','PRE2','UI2','UI3','VI2','VI3','WI2','WI3','UO2',
- 'UO3','VO2','VO3','WO2','WO3','UI4','UI5','VI4','VI5','WI4',
- 'WI5','UO4','UO5','VO4','VO5','WO4','WO5','UI6','UO6','VI6',
- 'VO6','WI6','WO6','WO','WI1','WO1','GONF','LIAISON','DCX',
- 'DCY','DCZ','H1X','H1Y','H1Z','E1X','E1Y','E1Z','E2X','E2Y','E2Z',
- 'E3X','E3Y','E3Z','E4X','E4Y','E4Z'),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- LIAISON =SIMP(statut='f',typ='TXM',into=('ENCASTRE',)),
- DX =SIMP(statut='f',typ='R' ),
- DY =SIMP(statut='f',typ='R' ),
- DZ =SIMP(statut='f',typ='R' ),
- DRX =SIMP(statut='f',typ='R' ),
- DRY =SIMP(statut='f',typ='R' ),
- DRZ =SIMP(statut='f',typ='R' ),
- GRX =SIMP(statut='f',typ='R' ),
- PRES =SIMP(statut='f',typ='R' ),
- PHI =SIMP(statut='f',typ='R' ),
- TEMP =SIMP(statut='f',typ='R' ),
- PRE1 =SIMP(statut='f',typ='R' ),
- PRE2 =SIMP(statut='f',typ='R' ),
- UI2 =SIMP(statut='f',typ='R' ),
- UI3 =SIMP(statut='f',typ='R' ),
- UI4 =SIMP(statut='f',typ='R' ),
- UI5 =SIMP(statut='f',typ='R' ),
- UI6 =SIMP(statut='f',typ='R' ),
- UO2 =SIMP(statut='f',typ='R' ),
- UO3 =SIMP(statut='f',typ='R' ),
- UO4 =SIMP(statut='f',typ='R' ),
- UO5 =SIMP(statut='f',typ='R' ),
- UO6 =SIMP(statut='f',typ='R' ),
- VI2 =SIMP(statut='f',typ='R' ),
- VI3 =SIMP(statut='f',typ='R' ),
- VI4 =SIMP(statut='f',typ='R' ),
- VI5 =SIMP(statut='f',typ='R' ),
- VI6 =SIMP(statut='f',typ='R' ),
- VO2 =SIMP(statut='f',typ='R' ),
- VO3 =SIMP(statut='f',typ='R' ),
- VO4 =SIMP(statut='f',typ='R' ),
- VO5 =SIMP(statut='f',typ='R' ),
- VO6 =SIMP(statut='f',typ='R' ),
- WI2 =SIMP(statut='f',typ='R' ),
- WI3 =SIMP(statut='f',typ='R' ),
- WI4 =SIMP(statut='f',typ='R' ),
- WI5 =SIMP(statut='f',typ='R' ),
- WI6 =SIMP(statut='f',typ='R' ),
- WO2 =SIMP(statut='f',typ='R' ),
- WO3 =SIMP(statut='f',typ='R' ),
- WO4 =SIMP(statut='f',typ='R' ),
- WO5 =SIMP(statut='f',typ='R' ),
- WO6 =SIMP(statut='f',typ='R' ),
- WO =SIMP(statut='f',typ='R' ),
- WI1 =SIMP(statut='f',typ='R' ),
- WO1 =SIMP(statut='f',typ='R' ),
- GONF =SIMP(statut='f',typ='R' ),
- DCX =SIMP(statut='f',typ='R' ),
- DCY =SIMP(statut='f',typ='R' ),
- DCZ =SIMP(statut='f',typ='R' ),
- H1X =SIMP(statut='f',typ='R' ),
- H1Y =SIMP(statut='f',typ='R' ),
- H1Z =SIMP(statut='f',typ='R' ),
- E1X =SIMP(statut='f',typ='R' ),
- E1Y =SIMP(statut='f',typ='R' ),
- E1Z =SIMP(statut='f',typ='R' ),
- E2X =SIMP(statut='f',typ='R' ),
- E2Y =SIMP(statut='f',typ='R' ),
- E2Z =SIMP(statut='f',typ='R' ),
- E3X =SIMP(statut='f',typ='R' ),
- E3Y =SIMP(statut='f',typ='R' ),
- E3Z =SIMP(statut='f',typ='R' ),
- E4X =SIMP(statut='f',typ='R' ),
- E4Y =SIMP(statut='f',typ='R' ),
- E4Z =SIMP(statut='f',typ='R' ),
- ),
-
-
-
- DDL_POUTRE =FACT(statut='f',max='**',
- fr="Bloque des DDLs dans un repère local d'une poutre",
- regles=(AU_MOINS_UN('GROUP_NO','NOEUD'),
- AU_MOINS_UN('DX','DY','DZ','DRX','DRY','DRZ'),
- UN_PARMI('VECT_Y','ANGL_VRIL'),),
- GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- DX =SIMP(statut='f',typ='R' ),
- DY =SIMP(statut='f',typ='R' ),
- DZ =SIMP(statut='f',typ='R' ),
- DRX =SIMP(statut='f',typ='R' ),
- DRY =SIMP(statut='f',typ='R' ),
- DRZ =SIMP(statut='f',typ='R' ),
-# définition du repère local
- VECT_Y =SIMP(statut='f',typ='R',min=3,max=3),
- ANGL_VRIL =SIMP(statut='f',typ='R',),
-# restriction sur les mailles servant à définir le repère local
- GROUP_MA =SIMP(statut='f',typ=grma,),
- MAILLE =SIMP(statut='f',typ=ma,),
- ),
-
-
-
- FACE_IMPO =FACT(statut='f',max='**',
- fr="Impose à tous les noeuds d'une face une ou plusieurs valeurs de déplacement (ou de certaines grandeurs associées)",
- regles=(UN_PARMI('GROUP_MA','MAILLE',),
- AU_MOINS_UN('DX','DY','DZ','DRX','DRY','DRZ','GRX','PRES','PHI',
- 'TEMP','PRE1','PRE2','DNOR','DTAN'),
- EXCLUS('DNOR','DX'),
- EXCLUS('DNOR','DY'),
- EXCLUS('DNOR','DZ'),
- EXCLUS('DNOR','DRX'),
- EXCLUS('DNOR','DRY'),
- EXCLUS('DNOR','DRZ'),
- EXCLUS('DTAN','DX'),
- EXCLUS('DTAN','DY'),
- EXCLUS('DTAN','DZ'),
- EXCLUS('DTAN','DRX'),
- EXCLUS('DTAN','DRY'),
- EXCLUS('DTAN','DRZ'),),
-# rajout d'un mot clé REPERE :/ LOCAL /GLOBAL
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- DX =SIMP(statut='f',typ='R' ),
- DY =SIMP(statut='f',typ='R' ),
- DZ =SIMP(statut='f',typ='R' ),
- DRX =SIMP(statut='f',typ='R' ),
- DRY =SIMP(statut='f',typ='R' ),
- DRZ =SIMP(statut='f',typ='R' ),
- DNOR =SIMP(statut='f',typ='R' ),
- DTAN =SIMP(statut='f',typ='R' ),
- GRX =SIMP(statut='f',typ='R' ),
- PRES =SIMP(statut='f',typ='R' ),
- PHI =SIMP(statut='f',typ='R' ),
- TEMP =SIMP(statut='f',typ='R' ),
- PRE1 =SIMP(statut='f',typ='R' ),
- PRE2 =SIMP(statut='f',typ='R' ),
- ),
-
- CHAMNO_IMPO =FACT(statut='f',max='**',
- fr="Impose des DDLs aux valeurs d'un concept cham_no_sdaster",
-# type de cham_no_sdaster CO()
- CHAM_NO =SIMP(statut='o',typ=cham_no_sdaster), #CO()
- COEF_MULT =SIMP(statut='o',typ='R' ),
- NUME_LAGR =SIMP(statut='f',typ='TXM',defaut="NORMAL",into=("NORMAL","APRES") ),
- ),
-
-
- LIAISON_DDL =FACT(statut='f',max='**',
- fr="Définit une relation linéaire entre des DDLs de deux ou plusieurs noeuds",
- regles=(UN_PARMI('GROUP_NO','NOEUD'),),
- GROUP_NO =SIMP(statut='f',typ=grno ,max='**'),
- NOEUD =SIMP(statut='f',typ=no ,max='**'),
- DDL =SIMP(statut='o',typ='TXM',max='**'),
- COEF_MULT =SIMP(statut='o',typ='R' ,max='**'),
- COEF_IMPO =SIMP(statut='o',typ='R' ),
- ),
-
- LIAISON_OBLIQUE =FACT(statut='f',max='**',
- fr="Applique à des noeuds la meme valeur de déplacement définie composante par composante"
- +" dans un repère oblique quelconque",
- regles=(UN_PARMI('GROUP_NO','NOEUD'),
- UN_PARMI('DX','DY','DZ','DRX','DRY','DRZ'),),
- GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- ANGL_NAUT =SIMP(statut='o',typ='R',max=3),
- DX =SIMP(statut='f',typ='R' ),
- DY =SIMP(statut='f',typ='R' ),
- DZ =SIMP(statut='f',typ='R' ),
- DRX =SIMP(statut='f',typ='R' ),
- DRY =SIMP(statut='f',typ='R' ),
- DRZ =SIMP(statut='f',typ='R' ),
- ),
-
- LIAISON_GROUP =FACT(statut='f',max='**',
- fr="Définit la meme relation linéaire entre certains DDLs de couples de noeuds",
- regles=(UN_PARMI('GROUP_MA_1','MAILLE_1','GROUP_NO_1','NOEUD_1'),
- UN_PARMI('GROUP_MA_2','MAILLE_2','GROUP_NO_2','NOEUD_2'),
- EXCLUS('GROUP_MA_1','GROUP_NO_2'),
- EXCLUS('GROUP_MA_1','NOEUD_2'),
- EXCLUS('GROUP_NO_1','GROUP_MA_2'),
- EXCLUS('GROUP_NO_1','MAILLE_2'),
- EXCLUS('MAILLE_1','GROUP_NO_2'),
- EXCLUS('MAILLE_1','NOEUD_2'),
- EXCLUS('NOEUD_1','GROUP_MA_2'),
- EXCLUS('NOEUD_1','MAILLE_2'),
- EXCLUS('SANS_NOEUD','SANS_GROUP_NO'),),
-
- GROUP_MA_1 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE_1 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_MA_2 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE_2 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_NO_1 =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- NOEUD_1 =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- GROUP_NO_2 =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- NOEUD_2 =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
-
- SANS_NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- SANS_GROUP_NO =SIMP(statut='f',typ=grno ,validators=NoRepeat(),max='**'),
- DDL_1 =SIMP(statut='o',typ='TXM',max='**'),
- COEF_MULT_1 =SIMP(statut='o',typ='R' ,max='**'),
- DDL_2 =SIMP(statut='o',typ='TXM',max='**'),
- COEF_MULT_2 =SIMP(statut='o',typ='R' ,max='**'),
- COEF_IMPO =SIMP(statut='o',typ='R' ),
- SOMMET =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- TRAN =SIMP(statut='f',typ='R',max=3),
- ANGL_NAUT =SIMP(statut='f',typ='R',max=3),
- CENTRE =SIMP(statut='f',typ='R',max=3),
- ),
-
- LIAISON_MAIL =FACT(statut='f',max='**',
- fr="Définit des relations linéaires permettant de recoller deux bords d'une structure",
- regles=(AU_MOINS_UN('GROUP_MA_MAIT','MAILLE_MAIT'),
- AU_MOINS_UN('GROUP_MA_ESCL','MAILLE_ESCL','GROUP_NO_ESCL','NOEUD_ESCL'),
- PRESENT_PRESENT('DDL_MAIT','DDL_ESCL'),),
- GROUP_MA_MAIT =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE_MAIT =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_MA_ESCL =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE_ESCL =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_NO_ESCL =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- NOEUD_ESCL =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- TRAN =SIMP(statut='f',typ='R',max=3 ),
- ANGL_NAUT =SIMP(statut='f',typ='R',max=3 ),
- CENTRE =SIMP(statut='f',typ='R',max=3 ),
- DDL_MAIT =SIMP(statut='f',typ='TXM',into=("DNOR",) ),
- DDL_ESCL =SIMP(statut='f',typ='TXM',into=("DNOR",) ),
- ELIM_MULT =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
- ),
-
- LIAISON_CYCL =FACT(statut='f',max='**',
- fr="Définit des relations linéaires permettant de recoller les bords de deux parties symétriquement cycliques",
- regles=(AU_MOINS_UN('GROUP_MA_MAIT1','MAILLE_MAIT1'),
- AU_MOINS_UN('GROUP_MA_ESCL','MAILLE_ESCL','GROUP_NO_ESCL','NOEUD_ESCL'),
- PRESENT_PRESENT('DDL_MAIT','DDL_ESCL'),
- ),
- GROUP_MA_MAIT1 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE_MAIT1 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_MA_MAIT2 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE_MAIT2 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_MA_ESCL =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE_ESCL =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_NO_ESCL =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- NOEUD_ESCL =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- TRAN =SIMP(statut='f',typ='R',max=3 ),
- ANGL_NAUT =SIMP(statut='f',typ='R',max=3 ),
- CENTRE =SIMP(statut='f',typ='R',max=3 ),
- COEF_MAIT1 =SIMP(statut='f',typ='R',max=1 ),
- COEF_MAIT2 =SIMP(statut='f',typ='R',max=1 ),
- COEF_ESCL =SIMP(statut='f',typ='R',max=1 ),
- DDL_MAIT =SIMP(statut='f',typ='TXM',into=("DNOR",) ),
- DDL_ESCL =SIMP(statut='f',typ='TXM',into=("DNOR",) ),
- ),
-
-
- LIAISON_SOLIDE =FACT(statut='f',fr="Modélise une partie indéformable d'une structure",max='**',
- regles=(UN_PARMI('GROUP_NO','NOEUD','GROUP_MA','MAILLE'),),
- GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- NUME_LAGR =SIMP(statut='f',typ='TXM',defaut="NORMAL",into=("NORMAL","APRES") ),
- ),
-
- LIAISON_ELEM =FACT(statut='f',max='**',
- fr="Modélise le raccord d'une partie massive 3D avec une poutre ou avec un tuyau, le raccord d'une coque"
- +" avec une poutre ou avec un tuyau",
- regles=(UN_PARMI('GROUP_MA_1','MAILLE_1'),
- UN_PARMI('GROUP_NO_2','NOEUD_2'),),
- OPTION =SIMP(statut='o',typ='TXM',into=("3D_TUYAU","3D_POU","COQ_POU","COQ_TUYAU") ),
- GROUP_MA_1 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE_1 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_NO_2 =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- NOEUD_2 =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- NUME_LAGR =SIMP(statut='f',typ='TXM',defaut="NORMAL",into=("NORMAL","APRES") ),
- CARA_ELEM =SIMP(statut='f',typ=(cara_elem) ),
- AXE_POUTRE =SIMP(statut='f',typ='R',max=3),
- ANGL_MAX =SIMP(statut='f',typ='R',defaut= 1. ),
- ),
-
- LIAISON_UNIF =FACT(statut='f',max='**',
- fr="Impose une meme valeur (inconnue) à des DDLs d'un ensemble de noeuds",
- regles=(UN_PARMI('GROUP_NO','NOEUD','GROUP_MA','MAILLE'),),
- GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- DDL =SIMP(statut='o',typ='TXM',max='**'),
- ),
-
- LIAISON_CHAMNO =FACT(statut='f',max='**',
- fr="Définit une relation linéaire entre tous les DDLs présents dans un concept CHAM_NO",
-# type de cham_no_sdaster CO()
- CHAM_NO =SIMP(statut='o',typ=cham_no_sdaster), #CO()
- COEF_IMPO =SIMP(statut='o',typ='R' ),
- NUME_LAGR =SIMP(statut='f',typ='TXM',defaut="NORMAL",into=("NORMAL","APRES") ),
- ),
-
- LIAISON_XFEM =SIMP(statut='f',typ='TXM',into=("OUI","NON"),defaut="NON" ),
-
- VECT_ASSE =SIMP(statut='f',typ=cham_no_depl_r ),
-
- CONTACT =FACT(statut='f',max='**',
- fr="Définit les zones soumises à des conditions de contact unilatéral avec ou sans frottement",
- regles=(UN_PARMI('GROUP_MA_ESCL','MAILLE_ESCL'),),
- APPARIEMENT =SIMP(statut='f',typ='TXM',defaut="MAIT_ESCL",
- into=("NON","NODAL","MAIT_ESCL","MAIT_ESCL_SYME")),
- RECHERCHE =SIMP(statut='f',typ='TXM',defaut="NOEUD_BOUCLE",
- into=("NOEUD_BOUCLE","NOEUD_VOISIN")),
- LISSAGE =SIMP(statut='f',typ='TXM',defaut="NON",
- into=("OUI","NON")),
- NORMALE =SIMP(statut='f',typ='TXM',defaut="MAIT",
- into=("MAIT","MAIT_ESCL")),
- METHODE =SIMP(statut='f',typ='TXM',defaut="CONTRAINTE",
- into=("VERIF","CONTRAINTE","LAGRANGIEN","PENALISATION","CONTINUE") ),
- PROJECTION =SIMP(statut='f',typ='TXM',defaut="LINEAIRE",
- into=("LINEAIRE","QUADRATIQUE") ),
- GROUP_MA_MAIT =SIMP(statut='f',typ=grma ,validators=NoRepeat(),max='**'),
- MAILLE_MAIT =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_MA_ESCL =SIMP(statut='f',typ=grma ,validators=NoRepeat(),max='**'),
- MAILLE_ESCL =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
-
- b_verif =BLOC(condition = "METHODE == 'VERIF' ",
- fr="Paramètres de la méthode sans calcul de contact",
- STOP_INTERP =SIMP(statut='f',typ='TXM',defaut="NON",
- into=("OUI","NON")),
- TOLE_INTERP =SIMP(statut='f',typ='R',defaut = 0.),
- DIST_MAIT =SIMP(statut='f',typ='R'),
- DIST_ESCL =SIMP(statut='f',typ='R'),
- VECT_NORM_ESCL =SIMP(statut='f',typ='R',max=3),
- VECT_Y =SIMP(statut='f',typ='R',min=3,max=3),
- ),
-
- b_active =BLOC(condition = "METHODE == 'CONTRAINTE' ",
- fr="Paramètres de la méthode des contraintes actives (contact uniquement)",
- regles=(EXCLUS('DIST_ESCL','COEF_IMPO'),
- EXCLUS('DIST_MAIT','COEF_IMPO'),),
- NOM_CHAM =SIMP(statut='f',typ='TXM',defaut="DEPL",
- into=("DEPL","PRES","TEMP","PRE1","PRE2")),
- GLISSIERE =SIMP(statut='f',typ='TXM',defaut="NON",
- into=("OUI","NON")),
- b_glissiere =BLOC(condition = "GLISSIERE == 'OUI' ",
- ALARME_JEU =SIMP(statut='f',typ='R',defaut=0.),
- ),
- TOLE_PROJ_EXT =SIMP(statut='f',typ='R' ,defaut=0.50),
- TOLE_PROJ_INT =SIMP(statut='f',typ='R' ,defaut=0.001),
- TOLE_REAC_GEOM =SIMP(statut='f',typ='R' ,defaut=0.05),
- STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",
- into=("OUI","NON")),
- NB_RESOL =SIMP(statut='f',typ='I', defaut=10 ),
- REAC_GEOM =SIMP(statut='f',typ='TXM',defaut="AUTOMATIQUE",
- into=("AUTOMATIQUE","CONTROLE","SANS")),
- b_reac_sans =BLOC(condition = "REAC_GEOM == 'SANS' ",
- fr="Paramètre de la réactualisation géométrique",
-
- STOP_REAC_GEOM =SIMP(statut='f',typ='TXM',defaut="NON",
- into=("OUI","NON")),
- ),
- b_reac_geom =BLOC(condition = "REAC_GEOM == 'CONTROLE' ",
- fr="Paramètre de la réactualisation géométrique",
- NB_REAC_GEOM =SIMP(statut='o',typ='I'),
-
- STOP_REAC_GEOM =SIMP(statut='f',typ='TXM',defaut="ALARME",
- into=("OUI","NON")),
- ),
- b_reac_auto =BLOC(condition = "REAC_GEOM == 'AUTOMATIQUE' ",
- fr="Paramètre de la réactualisation géométrique auto",
- NB_REAC_MAXI =SIMP(statut='o',typ='I',defaut = 10),
- ),
- SANS_NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- SANS_GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- SANS_NOEUD_QUAD =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
- COEF_IMPO =SIMP(statut='f',typ='R'),
- COEF_MULT_ESCL =SIMP(statut='f',typ='R'),
- VECT_NORM_ESCL =SIMP(statut='f',typ='R',max=3),
- VECT_Y =SIMP(statut='f',typ='R',min=3,max=3),
- DIST_MAIT =SIMP(statut='f',typ='R'),
- DIST_ESCL =SIMP(statut='f',typ='R'),
-
- ),
- b_lagrangien =BLOC(condition = "METHODE == 'LAGRANGIEN' ",
- fr="Paramètres de la méthode Lagrangienne (contact avec ou sans frottement)",
- NOM_CHAM =SIMP(statut='f',typ='TXM',defaut="DEPL",into=("DEPL",)),
- FROTTEMENT =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","COULOMB",) ),
- TOLE_PROJ_EXT =SIMP(statut='f',typ='R' ,defaut=0.50),
- TOLE_PROJ_INT =SIMP(statut='f',typ='R' ,defaut=0.001),
- TOLE_REAC_GEOM =SIMP(statut='f',typ='R' ,defaut=0.05),
- STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",
- into=("OUI","NON")),
- NB_RESOL =SIMP(statut='f',typ='I', defaut=10 ),
- ITER_MULT_MAXI =SIMP(statut='f',typ='I' ,defaut=4),
-
- REAC_GEOM =SIMP(statut='f',typ='TXM',defaut="AUTOMATIQUE",
- into=("AUTOMATIQUE","CONTROLE","SANS")),
- b_reac_sans =BLOC(condition = "REAC_GEOM == 'SANS' ",fr="Paramètre de la réactualisation géométrique",
- VERI_REAC_GEOM =SIMP(statut='f',typ='TXM',defaut="ALARME",
- into=("ALARME","ERREUR","NON")),
- ),
- b_reac_geom =BLOC(condition = "REAC_GEOM == 'CONTROLE' ",fr="Paramètre de la réactualisation géométrique",
- NB_REAC_GEOM =SIMP(statut='o',typ='I'),
-
- VERI_REAC_GEOM =SIMP(statut='f',typ='TXM',defaut="ALARME",
- into=("ALARME","ERREUR","NON")),
- ),
- b_reac_auto =BLOC(condition = "REAC_GEOM == 'AUTOMATIQUE' ",
- fr="Paramètre de la réactualisation géométrique auto",
- NB_REAC_MAXI =SIMP(statut='o',typ='I',defaut = 10),
- ),
-
-
- SANS_NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- SANS_GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- SANS_NOEUD_QUAD =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
- DIST_MAIT =SIMP(statut='f',typ='R'),
- DIST_ESCL =SIMP(statut='f',typ='R'),
- VECT_Y =SIMP(statut='f',typ='R',min=3,max=3),
- b_frottement =BLOC(condition = "FROTTEMENT == 'COULOMB' ",fr="Paramètres du frottement de Coulomb",
- COULOMB =SIMP(statut='o',typ='R',),
- COEF_MATR_FROT =SIMP(statut='f',typ='R',defaut=0.E+0),
- ),),
-
- b_penalisation =BLOC(condition = "METHODE == 'PENALISATION' ",
- fr="Paramètres de la méthode pénalisée (contact avec ou sans frottement)",
- NOM_CHAM =SIMP(statut='f',typ='TXM',defaut="DEPL",into=("DEPL",)),
- E_N =SIMP(statut='f',typ='R'),
- FROTTEMENT =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","COULOMB",) ),
- TOLE_PROJ_EXT =SIMP(statut='f',typ='R' ,defaut=0.50),
- TOLE_PROJ_INT =SIMP(statut='f',typ='R' ,defaut=0.001),
- TOLE_REAC_GEOM =SIMP(statut='f',typ='R' ,defaut=0.05),
- STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",
- into=("OUI","NON")),
- NB_RESOL =SIMP(statut='f',typ='I', defaut=10 ),
- ITER_MULT_MAXI =SIMP(statut='f',typ='I',defaut=4),
-
- REAC_GEOM =SIMP(statut='f',typ='TXM',defaut="AUTOMATIQUE",
- into=("AUTOMATIQUE","CONTROLE","SANS")),
- b_reac_sans =BLOC(condition = "REAC_GEOM == 'SANS' ",fr="Paramètre de la réactualisation géométrique",
- VERI_REAC_GEOM =SIMP(statut='f',typ='TXM',defaut="ALARME",
- into=("ALARME","ERREUR","NON")),
- ),
- b_reac_geom =BLOC(condition = "REAC_GEOM == 'CONTROLE' ",fr="Paramètre de la réactualisation géométrique",
- NB_REAC_GEOM =SIMP(statut='o',typ='I'),
-
- VERI_REAC_GEOM =SIMP(statut='f',typ='TXM',defaut="ALARME",
- into=("ALARME","ERREUR","NON")),
- ),
- b_reac_auto =BLOC(condition = "REAC_GEOM == 'AUTOMATIQUE' ",
- fr="Paramètre de la réactualisation géométrique auto",
- NB_REAC_MAXI =SIMP(statut='o',typ='I',defaut = 10),
- ),
-
- SANS_NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- SANS_GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- SANS_NOEUD_QUAD =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
- DIST_MAIT =SIMP(statut='f',typ='R'),
- DIST_ESCL =SIMP(statut='f',typ='R'),
- VECT_Y =SIMP(statut='f',typ='R',min=3,max=3),
-
- b_frottement =BLOC(condition = "FROTTEMENT == 'COULOMB' ",fr="Paramètres du frottement de Coulomb",
- COULOMB =SIMP(statut='o',typ='R',),
- E_T =SIMP(statut='f',typ='R',
- fr="Active la pénalisation sur le frottement et définit le coefficient de pénalisation"),
- COEF_MATR_FROT =SIMP(statut='f',typ='R',defaut=0.E+0),
- ),),
-
- b_continue =BLOC(condition = "METHODE == 'CONTINUE' ",
- fr="Paramètres de la méthode continue (contact avec ou sans frottement)",
-# regles=(UN_PARMI('GLISSIERE','FROTTEMENT'),),
- NOM_CHAM =SIMP(statut='f',typ='TXM',defaut="DEPL",into=("DEPL","VITE")),
- GLISSIERE =SIMP(statut='f',typ='TXM',defaut="NON",
- into=("OUI","NON")),
- b_glissiere =BLOC(condition = "GLISSIERE == 'OUI' ",
- ALARME_JEU =SIMP(statut='f',typ='R',defaut=0.),
- ),
- FROTTEMENT =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","COULOMB",) ),
- COMPLIANCE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON",) ),
- INTEGRATION =SIMP(statut='f',typ='TXM',defaut="NOEUD",into=("GAUSS","NOEUD","SIMPSON","SIMPSON1","SIMPSON2",
- "NCOTES","NCOTES1","NCOTES2")),
- COEF_REGU_CONT =SIMP(statut='f',typ='R',defaut=100.E+0),
- MODL_AXIS =SIMP(statut='o',typ='TXM',into=("OUI","NON")),
- FORMULATION =SIMP(statut='f',typ='TXM',defaut="DEPL",into=("DEPL","VITE")),
- DIRE_APPA =SIMP(statut='f',typ='R',max=3,defaut=(0.,0.,0.,)),
- ITER_GEOM_MAXI =SIMP(statut='f',typ='I',defaut=2),
- ITER_CONT_MAXI =SIMP(statut='f',typ='I',defaut=30),
- DIST_MAIT =SIMP(statut='f',typ='R',defaut=0.),
- DIST_ESCL =SIMP(statut='f',typ='R',defaut=0.),
- CONTACT_INIT =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON",) ),
- b_compliance =BLOC(condition = "COMPLIANCE == 'OUI' ",fr="Parametres de la compliance",
- ASPERITE =SIMP(statut='o',typ='R',),
- E_N =SIMP(statut='o',typ='R',),
- E_V =SIMP(statut='f',typ='R',defaut=0.E+0),),
- b_frottement =BLOC(condition = "FROTTEMENT == 'COULOMB' ",fr="Paramètres du frottement de Coulomb",
- COULOMB =SIMP(statut='o',typ='R',),
- SANS_NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- SANS_GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- VECT_Y =SIMP(statut='f',typ='R',min=3,max=3),
- VECT_Z =SIMP(statut='f',typ='R',min=3,max=3),
- ITER_FROT_MAXI =SIMP(statut='f',typ='I',defaut=2),
- COEF_REGU_FROT =SIMP(statut='f',typ='R',defaut=100.E+0),
- SEUIL_INIT =SIMP(statut='f',typ='R',defaut=0.E+0),),),
- ),
-
- FORCE_NODALE =FACT(statut='f',fr="Applique à des noeuds des forces nodales",max='**',
- regles=(AU_MOINS_UN('GROUP_NO','NOEUD'),
- AU_MOINS_UN('FX','FY','FZ','MX','MY','MZ' ),),
- GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- FX =SIMP(statut='f',typ='R' ),
- FY =SIMP(statut='f',typ='R' ),
- FZ =SIMP(statut='f',typ='R' ),
- MX =SIMP(statut='f',typ='R' ),
- MY =SIMP(statut='f',typ='R' ),
- MZ =SIMP(statut='f',typ='R' ),
- ANGL_NAUT =SIMP(statut='f',typ='R',max=3),
- ),
-
- FORCE_FACE =FACT(statut='f',max='**',
- fr="Applique des forces surfaciques sur une face d'élément volumique",
- regles=(AU_MOINS_UN('GROUP_MA','MAILLE'),
- AU_MOINS_UN('FX','FY','FZ'),),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- FX =SIMP(statut='f',typ='R' ),
- FY =SIMP(statut='f',typ='R' ),
- FZ =SIMP(statut='f',typ='R' ),
- ),
-
- FORCE_ARETE =FACT(statut='f',max='**',
- fr="Applique des forces linéiques à une arete d'élément volumique ou de coque",
- regles=(AU_MOINS_UN('GROUP_MA','MAILLE',),
- AU_MOINS_UN('FX','FY','FZ','MX','MY','MZ' ),),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- FX =SIMP(statut='f',typ='R' ),
- FY =SIMP(statut='f',typ='R' ),
- FZ =SIMP(statut='f',typ='R' ),
- MX =SIMP(statut='f',typ='R' ),
- MY =SIMP(statut='f',typ='R' ),
- MZ =SIMP(statut='f',typ='R' ),
- ),
-
- FORCE_CONTOUR =FACT(statut='f',max='**',
- fr="Applique des forces linéiques au bord d'un domaine 2D ou AXIS ou AXIS_FOURIER",
- regles=(AU_MOINS_UN('GROUP_MA','MAILLE'),
- AU_MOINS_UN('FX','FY','FZ','MX','MY','MZ'),),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- FX =SIMP(statut='f',typ='R' ),
- FY =SIMP(statut='f',typ='R' ),
- FZ =SIMP(statut='f',typ='R' ),
- MX =SIMP(statut='f',typ='R' ),
- MY =SIMP(statut='f',typ='R' ),
- MZ =SIMP(statut='f',typ='R' ),
- ),
-
- FORCE_INTERNE =FACT(statut='f',max='**',
- fr="Applique des forces volumiques (2D ou 3D) à un domaine volumique",
- regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
- PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
- AU_MOINS_UN('FX','FY','FZ' ),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- FX =SIMP(statut='f',typ='R' ),
- FY =SIMP(statut='f',typ='R' ),
- FZ =SIMP(statut='f',typ='R' ),
- ),
-
- PRES_REP =FACT(statut='f',max='**',
- fr="Applique une pression à un domaine de milieu continu 2D ou 3D, ou à un domaine de coques et tuyaux",
- regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
- PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
- AU_MOINS_UN('PRES','CISA_2D' ),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- PRES =SIMP(statut='f',typ='R' ),
- CISA_2D =SIMP(statut='f',typ='R' ),
- ),
-
- EFFE_FOND =FACT(statut='f',max='**',
- fr="Calcul l'effet de fond sur une branche de tuyauterie (modélisation 3D) soumise à une pression",
- regles=(AU_MOINS_UN('GROUP_MA','MAILLE'),),
- GROUP_MA_INT =SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**'),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- PRES =SIMP(statut='o',typ='R' ),
- ),
-
- EPSI_INIT =FACT(statut='f',max='**',
- fr="Applique un chargement de déformation initiale à un élément 2D, 3D ou de structure",
- regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
- PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
- AU_MOINS_UN('EPXX','EPYY','EPZZ','EPXY','EPXZ','EPYZ','EPX',
- 'KY','KZ','EXX','EYY','EXY','KXX','KYY','KXY'),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- EPXX =SIMP(statut='f',typ='R' ),
- EPYY =SIMP(statut='f',typ='R' ),
- EPZZ =SIMP(statut='f',typ='R' ),
- EPXY =SIMP(statut='f',typ='R' ),
- EPXZ =SIMP(statut='f',typ='R' ),
- EPYZ =SIMP(statut='f',typ='R' ),
- EPX =SIMP(statut='f',typ='R' ),
- KY =SIMP(statut='f',typ='R' ),
- KZ =SIMP(statut='f',typ='R' ),
- EXX =SIMP(statut='f',typ='R' ),
- EYY =SIMP(statut='f',typ='R' ),
- EXY =SIMP(statut='f',typ='R' ),
- KXX =SIMP(statut='f',typ='R' ),
- KYY =SIMP(statut='f',typ='R' ),
- KXY =SIMP(statut='f',typ='R' ),
- ),
-
- ARLEQUIN =FACT(statut='f',min=1,max='**',
- fr="Définit les paramètres de la méthode Arlequin",
- GROUP_MA_1 =SIMP(statut='o',typ=grma,max='**'),
- GROUP_MA_2 =SIMP(statut='o',typ=grma,max='**'),
- GROUP_MA_COLL =SIMP(statut='f',typ=grma,max='**'),
- CARA_ELEM =SIMP(statut='f',typ=cara_elem ),
- COND_LIM =SIMP(statut='f',typ=char_meca ),
- COLLAGE =SIMP(statut='f',typ='TXM',defaut="GROSSIER",into=("GROSSIER","FIN","GROUP_MA_1","GROUP_MA_2"),),
- regles =(UN_PARMI('POIDS_1','POIDS_2','POIDS_GROSSIER','POIDS_FIN',),),
- POIDS_1 =SIMP(statut='f',typ='R'),
- POIDS_2 =SIMP(statut='f',typ='R'),
- POIDS_GROSSIER =SIMP(statut='f',typ='R'),
- POIDS_FIN =SIMP(statut='f',typ='R'),),
-
- FORCE_POUTRE =FACT(statut='f',max='**',
- fr="Applique des forces linéiques sur des éléments de type poutre",
- regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
- PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
- AU_MOINS_UN('FX','FY','FZ','N','VY','VZ'),
- PRESENT_ABSENT('FX','N','VY','VZ'),
- PRESENT_ABSENT('FY','N','VY','VZ'),
- PRESENT_ABSENT('FZ','N','VY','VZ'),
- PRESENT_ABSENT('N','FX','FY','FZ'),
- PRESENT_ABSENT('VY','FX','FY','FZ'),
- PRESENT_ABSENT('VZ','FX','FY','FZ'),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- TYPE_CHARGE =SIMP(statut='f',typ='TXM',defaut="FORCE",into=("VENT","FORCE",) ),
-# rajour d'un mot clé REPERE :/ LOCAL /GLOBAL
- FX =SIMP(statut='f',typ='R' ),
- FY =SIMP(statut='f',typ='R' ),
- FZ =SIMP(statut='f',typ='R' ),
-
- N =SIMP(statut='f',typ='R' ),
- VY =SIMP(statut='f',typ='R' ),
- VZ =SIMP(statut='f',typ='R' ),
-
- ),
-
- FORCE_TUYAU =FACT(statut='f',max='**',
- fr="Applique une pression sur des éléments TUYAU",
- regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
- PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- PRES =SIMP(statut='f',typ='R' ),
- ),
-
- FORCE_COQUE =FACT(statut='f',max='**',
- fr="Applique des forces surfaciques sur des éléments de types coques",
- regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
- PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
- AU_MOINS_UN('FX','FY','FZ','MX','MY','MZ','PRES','F1','F2','F3','MF1','MF2'),
- PRESENT_ABSENT('FX','PRES','F1','F2','F3','MF1','MF2'),
- PRESENT_ABSENT('FY','PRES','F1','F2','F3','MF1','MF2'),
- PRESENT_ABSENT('FZ','PRES','F1','F2','F3','MF1','MF2'),
- PRESENT_ABSENT('MX','PRES','F1','F2','F3','MF1','MF2'),
- PRESENT_ABSENT('MY','PRES','F1','F2','F3','MF1','MF2'),
- PRESENT_ABSENT('MZ','PRES','F1','F2','F3','MF1','MF2'),
- PRESENT_ABSENT('F1','FX','FY','FZ','MX','MY','MZ','PRES'),
- PRESENT_ABSENT('F2','FX','FY','FZ','MX','MY','MZ','PRES'),
- PRESENT_ABSENT('F3','FX','FY','FZ','MX','MY','MZ','PRES'),
- PRESENT_ABSENT('MF1','FX','FY','FZ','MX','MY','MZ','PRES'),
- PRESENT_ABSENT('MF2','FX','FY','FZ','MX','MY','MZ','PRES'),
- PRESENT_ABSENT('PRES','FX','FY','FZ','MX','MY','MZ','F1','F2','F3','MF1','MF2'),),
-# rajour d'un mot clé REPERE :/ LOCAL /GLOBAL
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
-
- FX =SIMP(statut='f',typ='R' ),
- FY =SIMP(statut='f',typ='R' ),
- FZ =SIMP(statut='f',typ='R' ),
- MX =SIMP(statut='f',typ='R' ),
- MY =SIMP(statut='f',typ='R' ),
- MZ =SIMP(statut='f',typ='R' ),
-
- F1 =SIMP(statut='f',typ='R' ),
- F2 =SIMP(statut='f',typ='R' ),
- F3 =SIMP(statut='f',typ='R' ),
- MF1 =SIMP(statut='f',typ='R' ),
- MF2 =SIMP(statut='f',typ='R' ),
-
- PRES =SIMP(statut='f',typ='R' ),
- PLAN =SIMP(statut='f',typ='TXM',defaut="MAIL",into=("SUP","INF","MOY","MAIL",) ),
- ),
-
-
- GRAPPE_FLUIDE =FACT(statut='f',max='**',
- fr="Définit les données de calcul des forces fluides lors des études de chute de grappe",
- regles=(EXCLUS('GROUP_NO_EXTR','NOEUD_EXTR'),
- EXCLUS('GROUP_NO_ORIG','NOEUD_ORIG'),
- PRESENT_PRESENT('CARA_HYDR','VALE_HYDR'),
- PRESENT_PRESENT('CARA_GRAPPE','VALE_GRAPPE'),
- PRESENT_PRESENT('CARA_COMMANDE','VALE_COMMANDE'),
- PRESENT_PRESENT('CARA_MANCHETTE','VALE_MANCHETTE'),
- PRESENT_PRESENT('CARA_GUIDE','VALE_GUIDE'),
- PRESENT_PRESENT('CARA_ASSEMBLAGE','VALE_ASSEMBLAGE'),
- PRESENT_PRESENT('CARA_PDC','VALE_PDC'),),
- GROUP_MA =SIMP(statut='f',typ=grma,max=1),
- GROUP_NO_EXTR =SIMP(statut='f',typ=grno,max=1),
- NOEUD_EXTR =SIMP(statut='f',typ=no,max=1),
- GROUP_NO_ORIG =SIMP(statut='f',typ=grno,max=1),
- NOEUD_ORIG =SIMP(statut='f',typ=no,max=1),
- Z0 =SIMP(statut='f',typ='R' ),
- CARA_HYDR =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',
- fr="définition des données hydrauliques",
- into=("Q","ROC","ROD","ROP","ROM","ROML","ROG","NUC","NUM",
- "NUML","NUG","P2","P3","P4","CGG","G") ),
- VALE_HYDR =SIMP(statut='f',typ='R',max='**',
- fr="valeurs des données hydrauliques",),
- CARA_GRAPPE =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',
- fr="définition des données géométriques de la grappe",
- into=("M","DTIGE","DTMOY","ROTIGE","LTIGE","LLT","LCT",
- "VARAI","RORAI","DCRAY","ROCRAY","LCRAY","LCHUT",
- "CFCM","CFCI","CFCG","HRUGC","HRUGTC","NCA") ),
- VALE_GRAPPE =SIMP(statut='f',typ='R',max='**',
- fr="valeurs des données géométriques de la grappe",),
- CARA_COMMANDE =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',
- fr="définition des données géométriques du mécanisme de commande",
- into=("LI","LML","LG","LIG","DIML","DEML","DCSP",
- "DG","HRUGML","HRUGCSP","HRUGG") ),
- VALE_COMMANDE =SIMP(statut='f',typ='R',max='**',
- fr="valeurs des données géométriques du mécanisme de commande",),
- CARA_MANCHETTE =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',
- fr="définition des données géométriques de la manchette et son adaptateur",
- into=("LM","LA","LIM","DIMT","DEMT","DCMT","VMT",
- "ROMT","DA","HRUGM","HRUGA") ),
- VALE_MANCHETTE =SIMP(statut='f',typ='R',max='**',
- fr="valeurs des données géométriques de la manchette et son adaptateur",),
- CARA_GUIDE =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',
- fr="définition des données géométriques des tubes guides",
- into=("NRET","L0","L1","L2","L3","L4","DTG","DR",
- "DOR","D0","D00","HRUGTG") ),
- VALE_GUIDE =SIMP(statut='f',typ='R',max='**',
- fr="valeurs des données géométriques des tubes guides",),
- CARA_ASSEMBLAGE =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',
- fr="définition des données géométriques des assemblages",
- into=("SASS","DCC","DTI","NGM","NGMDP","KM","KS","KI",
- "KES","KEI","KF") ),
- VALE_ASSEMBLAGE =SIMP(statut='f',typ='R',max='**',
- fr="valeurs des données géométriques des assemblages",),
- CARA_PDC =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',
- fr="définition des coefficients de perte de charge singulière",
- into=("CD0","CD1","CD2","CDELARG","CDRET","CDM","CDA","CDML",
- "CDI","CDG") ),
- VALE_PDC =SIMP(statut='f',typ='R',max='**',
- fr="valeurs des coefficients de perte de charge singulière",),
- APPL_FORC_ARCHI =SIMP(statut='f',typ='TXM',defaut="REPARTIE" ,
- fr="application de la force d'archimède",
- into=("REPARTIE","CDG") ),
- APPL_FORC_FPLAQ =SIMP(statut='f',typ='TXM',defaut="REPARTIE" ,
- fr="application de la force de plaquage dans le guidage continu",
- into=("REPARTIE","CDG","ZONE","MILIEU","DISTRI") ),
- APPL_FORC_FMEC =SIMP(statut='f',typ='TXM',defaut="REPARTIE" ,
- fr="application de la force dans le mécanisme de levée",
- into=("REPARTIE","CDG","ZONE","PTREP") ),
- APPL_FORC_FTG =SIMP(statut='f',typ='TXM',defaut="REPARTIE" ,
- fr="application de la force tube_guide",
- into=("REPARTIE","CDG","ZONE","PTREP") ),
- DIRE_FORC_FPLAQ =SIMP(statut='f',typ='R',min=3,max=3,
- fr="direction d'application de la force de plaquage",),
- b_CDG =BLOC(condition = "(APPL_FORC_ARCHI == 'CDG') or (APPL_FORC_FPLAQ == 'CDG') or \
- (APPL_FORC_FMEC == 'CDG') or (APPL_FORC_FTG == 'CDG')",
- MASS_INER =SIMP(statut='o',typ=tabl_mass_iner ),
- ),
- UNITE_IMPR_FORCE =SIMP(statut='f',typ='I',
- fr="unité d'impression des forces",),
- UNITE_IMPR_NOEUD =SIMP(statut='f',typ='I',
- fr="unité d'impression des noeuds par zone",),
- ),
-
- LIAISON_COQUE =FACT(statut='f',max='**',
- fr="Permet de représenter le raccord entre des éléments de coques au moyen des relations linéaires",
- GROUP_MA_1 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE_1 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_NO_1 =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- NOEUD_1 =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- GROUP_MA_2 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE_2 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_NO_2 =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- NOEUD_2 =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- NUME_LAGR =SIMP(statut='f',typ='TXM',defaut="NORMAL",into=("NORMAL","APRES") ),
- ),
-
- RELA_CINE_BP =FACT(statut='f',max='**',
- fr="Etablir des relations cinématiques permettant de relier les noeuds cable aux noeuds du béton, et spécifier"
- +" la prise en compte des contraintes initiales dans les cables",
- CABLE_BP =SIMP(statut='o',typ=cabl_precont ),
- SIGM_BPEL =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
- RELA_CINE =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
- ),
-
- FORCE_ELEC =FACT(statut='f',max='**',
- fr="Appliquer la force de LAPLACE agissant sur un conducteur principal, due à la présence d'un conducteur"
- +" secondaire droit",
- regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
- PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),),
-
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
-
- POSITION =SIMP(statut='f',typ='TXM',fr="Direction prédéfinie",into=("PARA","INFI","FINI",) ),
- b_fxyz =BLOC ( condition = "POSITION == None",
- FX =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- FY =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- FZ =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- ),
-
- b_para =BLOC ( condition = "POSITION == 'PARA'",
- regles=(UN_PARMI('TRANS','DIST'),),
- TRANS =SIMP(statut='f',typ='R',max=3),
- DIST =SIMP(statut='f',typ='R' ),
- b_point2 =BLOC ( condition = "DIST != None",
- POINT2 =SIMP(statut='o',typ='R',max=3),
- ),
- ),
- b_fini_infi =BLOC ( condition = "(POSITION == 'FINI') or (POSITION == 'INFI')",
- POINT1 =SIMP(statut='o',typ='R',max=3),
- POINT2 =SIMP(statut='o',typ='R',max=3),
- ),
- ),
-
-
-
-
- INTE_ELEC =FACT(statut='f',max='**',
- fr="Appliquer la force de LAPLACE agissant sur un conducteur principal, due à la présence d'un conducteur"
- +" secondaire non nécessairement droit",
- regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
- PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
- AU_MOINS_UN('GROUP_MA_2','MAILLE_2','TRANS','SYME'),
- EXCLUS('TRANS','SYME'),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_MA_2 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE_2 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- TRANS =SIMP(statut='f',typ='R' ,max='**'),
- SYME =SIMP(statut='f',typ='R' ,max='**'),
- ),
-
-
- IMPE_FACE =FACT(statut='f',fr="Applique une impédance acoustique à une face",max='**',
- regles=(AU_MOINS_UN('GROUP_MA','MAILLE' ),),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- IMPE =SIMP(statut='o',typ='R' ),
- ),
-
- VITE_FACE =FACT(statut='f',fr="Impose des vitesses normales à une face (phénomène ACOUSTIQUE), ",max='**',
- regles=(AU_MOINS_UN('GROUP_MA','MAILLE'),),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- VNOR =SIMP(statut='o',typ='R' ),
- ),
-
-
-
- ONDE_FLUI =FACT(statut='f',max='**',
- fr="Applique une amplitude de pression d'onde incidente sinusoidale arrivant normalement à une face",
- regles=(AU_MOINS_UN('GROUP_MA','MAILLE'),),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- PRES =SIMP(statut='o',typ='R' ),
- ),
-
- FLUX_THM_REP =FACT(statut='f',max='**',
- fr="Applique à un domaine de milieu continu 2D ou 3D un flux de chaleur et/ou un apport de masse fluide"
- +" (flux hydraulique)",
- regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
- PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
- AU_MOINS_UN('FLUN','FLUN_HYDR1','FLUN_HYDR2'),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- FLUN =SIMP(statut='f',typ='R' ),
- FLUN_HYDR1 =SIMP(statut='f',typ='R' ),
- FLUN_HYDR2 =SIMP(statut='f',typ='R' ),
- ),
-
- INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
-) ;
-
-
-#& MODIF COMMANDE DATE 24/08/2005 AUTEUR MABBAS M.ABBAS
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE G8BHHXD X.DESROCHES
-AFFE_CHAR_MECA_C=OPER(nom="AFFE_CHAR_MECA_C",op= 7,sd_prod=char_meca,
- fr="Affectation de charges et conditions aux limites mécaniques complexes",
- reentrant='n',
- UIinfo={"groupes":("Modélisation",)},
- regles=(AU_MOINS_UN('DDL_IMPO','FORCE_POUTRE','LIAISON_DDL', ),),
- MODELE =SIMP(statut='o',typ=modele_sdaster ),
- VERI_DDL =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
- DDL_IMPO =FACT(statut='f',max='**',
- fr="Impose à des noeuds une ou plusieurs valeurs de déplacement (ou de certaines grandeurs asscociées)",
- regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD',),
- AU_MOINS_UN('DX','DY','DZ','DRX','DRY','DRZ','GRX','PRES','PHI','LIAISON', ),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- LIAISON =SIMP(statut='f',typ='TXM',into=('ENCASTRE',)),
- DX =SIMP(statut='f',typ='C' ),
- DY =SIMP(statut='f',typ='C' ),
- DZ =SIMP(statut='f',typ='C' ),
- DRX =SIMP(statut='f',typ='C' ),
- DRY =SIMP(statut='f',typ='C' ),
- DRZ =SIMP(statut='f',typ='C' ),
- GRX =SIMP(statut='f',typ='C' ),
- PRES =SIMP(statut='f',typ='C' ),
- PHI =SIMP(statut='f',typ='C' ),
- ),
- FORCE_POUTRE =FACT(statut='f',max='**',
- fr="Applique des forces linéiques sur des éléments de type poutre",
- regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
- PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
- AU_MOINS_UN('FX','FY','FZ','N','VY','VZ',),
- PRESENT_ABSENT('FX','N','VY','VZ',),
- PRESENT_ABSENT('FY','N','VY','VZ',),
- PRESENT_ABSENT('FZ','N','VY','VZ',),
- PRESENT_ABSENT('N','FX','FY','FZ',),
- PRESENT_ABSENT('VY', 'FX','FY','FZ',),
- PRESENT_ABSENT('VZ','FX','FY','FZ', ),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- TYPE_CHARGE =SIMP(statut='f',typ='TXM',defaut="FORCE",into=("VENT","FORCE") ),
- FX =SIMP(statut='f',typ='C' ),
- FY =SIMP(statut='f',typ='C' ),
- FZ =SIMP(statut='f',typ='C' ),
- N =SIMP(statut='f',typ='C' ),
- VY =SIMP(statut='f',typ='C' ),
- VZ =SIMP(statut='f',typ='C' ),
- ),
- LIAISON_DDL =FACT(statut='f',max='**',
- fr="Définit une relation linéaire entre les DDLs de deux ou plusieurs noeuds",
- regles=(UN_PARMI('GROUP_NO','NOEUD', ),),
- GROUP_NO =SIMP(statut='f',typ=grno,max='**'),
- NOEUD =SIMP(statut='f',typ=no ,max='**'),
- DDL =SIMP(statut='o',typ='TXM',max='**'),
- COEF_MULT =SIMP(statut='o',typ='R' ,max='**'),
- COEF_IMPO =SIMP(statut='o',typ='C' ),
- ),
- INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
-) ;
-#& MODIF COMMANDE DATE 11/10/2005 AUTEUR VABHHTS J.PELLET
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE G8BHHXD X.DESROCHES
-AFFE_CHAR_MECA_F=OPER(nom="AFFE_CHAR_MECA_F",op=7,sd_prod=char_meca,
- fr="Affectation de charges et conditions aux limites mécaniques fonction d'un (ou plusieurs) paramètres",
- reentrant='n',
- UIinfo={"groupes":("Modélisation",)},
- regles=(AU_MOINS_UN('DDL_IMPO','FACE_IMPO','LIAISON_DDL','FORCE_NODALE',
- 'FORCE_FACE','FORCE_ARETE','FORCE_CONTOUR','FORCE_INTERNE',
- 'PRES_REP','FORCE_POUTRE','VITE_FACE','IMPE_FACE','ONDE_PLANE',
- 'LIAISON_OBLIQUE','EPSI_INIT','LIAISON_GROUP','LIAISON_UNIF',
- 'LIAISON_SOLIDE','FORCE_COQUE','LIAISON_COQUE','FORCE_TUYAU',
- 'CONTACT','EFFE_FOND','FLUX_THM_REP'),),
- VERI_DDL =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
- VERI_NORM =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
- MODELE =SIMP(statut='o',typ=modele_sdaster),
-
- DDL_IMPO =FACT(statut='f',max='**',
- fr="Impose à des noeuds une ou plusieurs valeurs de déplacement (ou de certaines grandeurs asscociées) fournies"
- +" par l'intermédiaire d'un concept fonction ",
- regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD'),
- AU_MOINS_UN('DX','DY','DZ','DRX','DRY','DRZ','GRX','PRES','PHI',
- 'TEMP','PRE1','PRE2','LIAISON','DCX','DCY','DCZ','H1X',
- 'H1Y','H1Z','E1X','E1Y','E1Z','E2X','E2Y','E2Z',
- 'E3X','E3Y','E3Z','E4X','E4Y','E4Z'),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- LIAISON =SIMP(statut='f',typ='TXM',into=('ENCASTRE',)),
- DX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- DY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- DZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- DRX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- DRY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- DRZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- GRX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- PRES =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- PHI =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- PRE1 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- PRE2 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- DCX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- DCY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- DCZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- H1X =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- H1Y =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- H1Z =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- E1X =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- E1Y =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- E1Z =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- E2X =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- E2Y =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- E2Z =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- E3X =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- E3Y =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- E3Z =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- E4X =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- E4Y =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- E4Z =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- ),
-
- FACE_IMPO =FACT(statut='f',max='**',
- fr="Impose à tous les noeuds d'une face une ou plusieurs valeurs de déplacement (ou de certaines grandeurs associées)"
- +" fournies par l'intérmédiaire d'un concept fonction",
- regles=(UN_PARMI('GROUP_MA','MAILLE'),
- AU_MOINS_UN('DX','DY','DZ','DRX','DRY','DRZ','GRX','PRES','PHI','TEMP','PRE1','PRE2','DNOR','DTAN'),
- EXCLUS('DNOR','DX'),
- EXCLUS('DNOR','DY'),
- EXCLUS('DNOR','DZ'),
- EXCLUS('DNOR','DRX'),
- EXCLUS('DNOR','DRY'),
- EXCLUS('DNOR','DRZ'),
- EXCLUS('DTAN','DX'),
- EXCLUS('DTAN','DY'),
- EXCLUS('DTAN','DZ'),
- EXCLUS('DTAN','DRX'),
- EXCLUS('DTAN','DRY'),
- EXCLUS('DTAN','DRZ'),),
-# rajout d un mot cle REPERE : / GLOBAL / LOCAL
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- DX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- DY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- DZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- DRX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- DRY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- DRZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- GRX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- PRES =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- PHI =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- PRE1 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- PRE2 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- DNOR =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- DTAN =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- ),
-
- LIAISON_DDL =FACT(statut='f',max='**',
- fr="Définit une relation linéaire entre des DDLs de deux ou plusieurs noeuds, les valeurs sont fournies par"
- +" l'intermediaire d'un concept de type fonction",
- regles=(UN_PARMI('GROUP_NO','NOEUD'),),
- GROUP_NO =SIMP(statut='f',typ=grno,max='**'),
- NOEUD =SIMP(statut='f',typ=no ,max='**'),
- DDL =SIMP(statut='o',typ='TXM',max='**'),
- COEF_MULT =SIMP(statut='o',typ='R',max='**'),
- COEF_IMPO =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- ),
-
- LIAISON_OBLIQUE =FACT(statut='f',max='**',
- fr="Applique à des noeuds la meme valeur de déplacement définie composante par composante dans un repère oblique"
- +" quelconque, les valeurs sont fournis par l'intermédiaire d'un concept fonction",
- regles=(UN_PARMI('GROUP_NO','NOEUD'),
- UN_PARMI('DX','DY','DZ','DRX','DRY','DRZ'),),
- GROUP_NO =SIMP(statut='f',typ=grno,max='**'),
- NOEUD =SIMP(statut='f',typ=no ,max='**'),
- ANGL_NAUT =SIMP(statut='o',typ='R',max=3),
- DX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- DY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- DZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- DRX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- DRY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- DRZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- ),
-
- LIAISON_GROUP =FACT(statut='f',max='**',
- fr="Définit la meme relation linéaire entre certains DDLs de couples de noeuds, les valeurs sont fournies par"
- +" l'intermédiaire de concept fonction",
- regles=(UN_PARMI('GROUP_MA_1','MAILLE_1','GROUP_NO_1','NOEUD_1'),
- UN_PARMI('GROUP_MA_2','MAILLE_2','GROUP_NO_2','NOEUD_2'),
- EXCLUS('GROUP_MA_1','GROUP_NO_2'),
- EXCLUS('GROUP_MA_1','NOEUD_2'),
- EXCLUS('GROUP_NO_1','GROUP_MA_2'),
- EXCLUS('GROUP_NO_1','MAILLE_2'),
- EXCLUS('MAILLE_1','GROUP_NO_2'),
- EXCLUS('MAILLE_1','NOEUD_2'),
- EXCLUS('NOEUD_1','GROUP_MA_2'),
- EXCLUS('NOEUD_1','MAILLE_2'),
- EXCLUS('SANS_NOEUD','SANS_GROUP_NO'),),
- GROUP_MA_1 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE_1 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_NO_1 =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- NOEUD_1 =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- GROUP_MA_2 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE_2 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_NO_2 =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- NOEUD_2 =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- SANS_NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- SANS_GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- DDL_1 =SIMP(statut='o',typ='TXM',max='**'),
- COEF_MULT_1 =SIMP(statut='o',typ='R',max='**'),
- DDL_2 =SIMP(statut='o',typ='TXM',max='**'),
- COEF_MULT_2 =SIMP(statut='o',typ='R',max='**'),
- COEF_IMPO =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- SOMMET =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- TRAN =SIMP(statut='f',typ='R',max=3),
- ANGL_NAUT =SIMP(statut='f',typ='R',max=3),
- CENTRE =SIMP(statut='f',typ='R',max=3),
- ),
-
- CONTACT =FACT(statut='f',
- fr="Définit les zones soumises à des conditions de contact unilatéral avec ou \sans frottement, certaines valeurs"
- +" sont données par l'intermédiaire de concept fonction",max='**',
- regles=(UN_PARMI('GROUP_MA_ESCL','MAILLE_ESCL'),),
- APPARIEMENT =SIMP(statut='f',typ='TXM',defaut="MAIT_ESCL",
- into=("NON","NODAL","MAIT_ESCL","MAIT_ESCL_SYME")),
- RECHERCHE =SIMP(statut='f',typ='TXM',defaut="NOEUD_BOUCLE",into=("NOEUD_BOUCLE","NOEUD_VOISIN")),
- LISSAGE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
- NORMALE =SIMP(statut='f',typ='TXM',defaut="MAIT",into=("MAIT","MAIT_ESCL")),
- METHODE =SIMP(statut='f',typ='TXM',defaut="CONTRAINTE",
- into=("CONTRAINTE","VERIF","LAGRANGIEN","PENALISATION","CONTINUE") ),
- PROJECTION =SIMP(statut='f',typ='TXM',defaut="LINEAIRE",into=("LINEAIRE","QUADRATIQUE") ),
- GROUP_MA_MAIT =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE_MAIT =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_MA_ESCL =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE_ESCL =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
-
- b_verif =BLOC(condition = "METHODE == 'VERIF' ",
- fr="Paramètres de la méthode sans calcul de contact",
- STOP_INTERP =SIMP(statut='f',typ='TXM',defaut="NON",
- into=("OUI","NON")),
- TOLE_INTERP =SIMP(statut='f',typ='R',defaut = 0.),
- DIST_MAIT =SIMP(statut='f',typ='R'),
- DIST_ESCL =SIMP(statut='f',typ='R'),
- VECT_NORM_ESCL =SIMP(statut='f',typ='R',max=3),
- VECT_Y =SIMP(statut='f',typ='R',min=3,max=3),
- ),
-
- b_active =BLOC(condition = "METHODE == 'CONTRAINTE' ",
- fr="Paramètres de la méthode des contraintes actives (contact uniquement)",
- regles=(EXCLUS('DIST_ESCL','COEF_IMPO'),
- EXCLUS('DIST_MAIT','COEF_IMPO'),),
- NOM_CHAM =SIMP(statut='f',typ='TXM',defaut="DEPL",
- into=("DEPL","PRES","TEMP","PRE1","PRE2")),
- GLISSIERE =SIMP(statut='f',typ='TXM',defaut="NON",
- into=("OUI","NON")),
- b_glissiere =BLOC(condition = "GLISSIERE == 'OUI' ",
- ALARME_JEU =SIMP(statut='f',typ='R',defaut=0.),
- ),
- TOLE_PROJ_EXT =SIMP(statut='f',typ='R' ,defaut=0.50),
- TOLE_PROJ_INT =SIMP(statut='f',typ='R' ,defaut=0.001),
- TOLE_REAC_GEOM =SIMP(statut='f',typ='R' ,defaut=0.05),
- STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",
- into=("OUI","NON")),
- NB_RESOL =SIMP(statut='f',typ='I', defaut=10 ),
- REAC_GEOM =SIMP(statut='f',typ='TXM',defaut="AUTOMATIQUE",
- into=("AUTOMATIQUE","CONTROLE","SANS")),
- b_reac_sans =BLOC(condition = "REAC_GEOM == 'SANS' ",
- fr="Parametre de la reactualisation geometrique",
-
- VERI_REAC_GEOM =SIMP(statut='f',typ='TXM',defaut="ALARME",
- into=("ALARME","ERREUR","NON")),
- ),
- b_reac_geom =BLOC(condition = "REAC_GEOM == 'CONTROLE' ",
- fr="Parametre de la reactualisation geometrique",
- NB_REAC_GEOM =SIMP(statut='o',typ='I'),
-
- VERI_REAC_GEOM =SIMP(statut='f',typ='TXM',defaut="ALARME",
- into=("ALARME","ERREUR","NON")),
- ),
- b_reac_auto =BLOC(condition = "REAC_GEOM == 'AUTOMATIQUE' ",
- fr="Parametre de la reactualisation geometrique auto",
- NB_REAC_MAXI =SIMP(statut='o',typ='I',defaut = 10),
- ),
- SANS_NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- SANS_GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- SANS_NOEUD_QUAD =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
- COEF_IMPO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- COEF_MULT_ESCL =SIMP(statut='f',typ='R'),
- VECT_NORM_ESCL =SIMP(statut='f',typ='R',max=3),
- VECT_Y =SIMP(statut='f',typ='R',min=3,max=3),
- DIST_MAIT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- DIST_ESCL =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- ),
- b_lagrangien =BLOC(condition = "METHODE == 'LAGRANGIEN' ",
- fr="Paramètres de la méthode Lagrangienne (contact avec ou sans frottement)",
- NOM_CHAM =SIMP(statut='f',typ='TXM',defaut="DEPL",into=("DEPL",)),
- FROTTEMENT =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","COULOMB",) ),
- TOLE_PROJ_EXT =SIMP(statut='f',typ='R' ,defaut=0.50),
- TOLE_PROJ_INT =SIMP(statut='f',typ='R' ,defaut=0.001),
- TOLE_REAC_GEOM =SIMP(statut='f',typ='R' ,defaut=0.05),
- STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",
- into=("OUI","NON")),
- NB_RESOL =SIMP(statut='f',typ='I', defaut=10 ),
- ITER_MULT_MAXI =SIMP(statut='f',typ='I' ,defaut=4),
-
- REAC_GEOM =SIMP(statut='f',typ='TXM',defaut="AUTOMATIQUE",
- into=("AUTOMATIQUE","CONTROLE","SANS")),
- b_reac_sans =BLOC(condition = "REAC_GEOM == 'SANS' ",fr="Parametre de la reactualisation geometrique",
- VERI_REAC_GEOM =SIMP(statut='f',typ='TXM',defaut="ALARME",
- into=("ALARME","ERREUR","NON")),
- ),
- b_reac_geom =BLOC(condition = "REAC_GEOM == 'CONTROLE' ",fr="Parametre de la reactualisation geometrique",
- NB_REAC_GEOM =SIMP(statut='o',typ='I'),
-
- VERI_REAC_GEOM =SIMP(statut='f',typ='TXM',defaut="ALARME",
- into=("ALARME","ERREUR","NON")),
- ),
- b_reac_auto =BLOC(condition = "REAC_GEOM == 'AUTOMATIQUE' ",
- fr="Parametre de la reactualisation geometrique auto",
- NB_REAC_MAXI =SIMP(statut='o',typ='I',defaut = 10),
- ),
-
- SANS_NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- SANS_GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- SANS_NOEUD_QUAD =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
- DIST_MAIT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- DIST_ESCL =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- VECT_Y =SIMP(statut='f',typ='R',min=3,max=3),
-
- b_frottement =BLOC(condition = "FROTTEMENT == 'COULOMB' ",fr="Paramètres du frottement de Coulomb",
- COULOMB =SIMP(statut='o',typ='R',),
- COEF_MATR_FROT =SIMP(statut='f',typ='R',defaut=0.E+0),
- ),),
- b_penalisation =BLOC(condition = "METHODE == 'PENALISATION' ",
- fr="Paramètres de la méthode pénalisée (contact avec ou sans frottement)",
- NOM_CHAM =SIMP(statut='f',typ='TXM',defaut="DEPL",into=("DEPL",)),
- E_N =SIMP(statut='f',typ='R'),
- FROTTEMENT =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","COULOMB",) ),
- TOLE_PROJ_EXT =SIMP(statut='f',typ='R' ,defaut=0.50),
- TOLE_PROJ_INT =SIMP(statut='f',typ='R' ,defaut=0.001),
- TOLE_REAC_GEOM =SIMP(statut='f',typ='R' ,defaut=0.05),
- STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",
- into=("OUI","NON")),
- NB_RESOL =SIMP(statut='f',typ='I', defaut=10 ),
- ITER_MULT_MAXI =SIMP(statut='f',typ='I',defaut=4),
-
- REAC_GEOM =SIMP(statut='f',typ='TXM',defaut="AUTOMATIQUE",
- into=("AUTOMATIQUE","CONTROLE","SANS")),
- b_reac_sans =BLOC(condition = "REAC_GEOM == 'SANS' ",fr="Paramètre de la réactualisation géométrique",
- VERI_REAC_GEOM =SIMP(statut='f',typ='TXM',defaut="ALARME",
- into=("ALARME","ERREUR","NON")),
- ),
- b_reac_geom =BLOC(condition = "REAC_GEOM == 'CONTROLE' ",fr="Paramètre de la réactualisation géométrique",
- NB_REAC_GEOM =SIMP(statut='o',typ='I'),
-
- VERI_REAC_GEOM =SIMP(statut='f',typ='TXM',defaut="ALARME",
- into=("ALARME","ERREUR","NON")),
- ),
- b_reac_auto =BLOC(condition = "REAC_GEOM == 'AUTOMATIQUE' ",
- fr="Paramètre de la réactualisation géométrique auto",
- NB_REAC_MAXI =SIMP(statut='o',typ='I',defaut = 10),
- ),
- SANS_NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- SANS_GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- SANS_NOEUD_QUAD =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
- DIST_MAIT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- DIST_ESCL =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- VECT_Y =SIMP(statut='f',typ='R',min=3,max=3),
-
- b_frottement =BLOC(condition = "FROTTEMENT == 'COULOMB' ",fr="Paramètres du frottement de Coulomb",
- COULOMB =SIMP(statut='o',typ='R',),
- E_T =SIMP(statut='f',typ='R',
- fr="Active la pénalisation sur le frottement et définit le coefficient de pénalisation"),
- COEF_MATR_FROT =SIMP(statut='f',typ='R',defaut=0.E+0),
- ),),
- b_continue =BLOC(condition = "METHODE == 'CONTINUE' ",
- fr="Paramètres de la méthode continue (contact avec ou sans frottement)",
-# regles=(UN_PARMI('GLISSIERE','FROTTEMENT'),),
- NOM_CHAM =SIMP(statut='f',typ='TXM',defaut="DEPL",into=("DEPL",)),
- GLISSIERE =SIMP(statut='f',typ='TXM',defaut="NON",
- into=("OUI","NON")),
- b_glissiere =BLOC(condition = "GLISSIERE == 'OUI' ",
- ALARME_JEU =SIMP(statut='f',typ='R',defaut=0.),
- ),
- FROTTEMENT =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","COULOMB",) ),
- COMPLIANCE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON",) ),
- INTEGRATION =SIMP(statut='f',typ='TXM',defaut="NOEUD",into=("GAUSS","NOEUD","SIMPSON","SIMPSON1","SIMPSON2",
- "NCOTES","NCOTES1","NCOTES2")),
- COEF_REGU_CONT =SIMP(statut='f',typ='R',defaut=100.E+0),
- FORMULATION =SIMP(statut='f',typ='TXM',defaut="DEPL",into=("DEPL","VITE")),
- MODL_AXIS =SIMP(statut='o',typ='TXM',into=("OUI","NON")),
- DIRE_APPA =SIMP(statut='f',typ='R',max=3),
- ITER_GEOM_MAXI =SIMP(statut='f',typ='I',defaut=2),
- ITER_CONT_MAXI =SIMP(statut='f',typ='I',defaut=30),
- DIST_MAIT =SIMP(statut='f',typ='R'),
- DIST_ESCL =SIMP(statut='f',typ='R'),
- CONTACT_INIT =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON",) ),
- b_compliance =BLOC(condition = "COMPLIANCE == 'OUI' ",fr="Parametres de la compliance",
- ASPERITE =SIMP(statut='o',typ='R',),
- E_N =SIMP(statut='o',typ='R',),
- E_V =SIMP(statut='f',typ='R',defaut=0.E+0),),
- b_frottement =BLOC(condition = "FROTTEMENT == 'COULOMB' ",fr="Paramètres du frottement de Coulomb",
- COULOMB =SIMP(statut='o',typ='R',),
- SANS_NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- SANS_GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- VECT_Y =SIMP(statut='f',typ='R',min=3,max=3),
- VECT_Z =SIMP(statut='f',typ='R',min=3,max=3),
- ITER_FROT_MAXI =SIMP(statut='f',typ='I',defaut=2),
- COEF_REGU_FROT =SIMP(statut='f',typ='R',defaut=100.E+0),
- SEUIL_INIT =SIMP(statut='f',typ='I',defaut=0),),),
- ),
-
- LIAISON_UNIF =FACT(statut='f',max='**',
- fr="Impose une meme valeur (inconnue) à des DDLs d'un ensemble de noeuds",
- regles=(UN_PARMI('GROUP_NO','NOEUD','GROUP_MA','MAILLE'),),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- DDL =SIMP(statut='o',typ='TXM',max='**'),
- ),
-
- LIAISON_SOLIDE =FACT(statut='f',max='**',
- fr="Modélise une partie indéformable d'une structure",
- regles=(UN_PARMI('GROUP_NO','NOEUD','GROUP_MA','MAILLE'),),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- NUME_LAGR =SIMP(statut='f',typ='TXM',defaut="NORMAL",into=("NORMAL","APRES",) ),
- ),
-
-
-
- FORCE_NODALE =FACT(statut='f',max='**',
- fr="Applique à des noeuds des forces nodales dont les valeurs des composantes sont fournies par l'intermédiaire"
- +" d'un concept fonction",
- regles=(UN_PARMI('GROUP_NO','NOEUD'),
- AU_MOINS_UN('FX','FY','FZ','MX','MY','MZ'),),
- GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- FX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- FY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- FZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- MX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- MY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- MZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- ANGL_NAUT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),max=3 ),
- ),
-
- FORCE_FACE =FACT(statut='f',max='**',
- fr="Applique des forces surfaciques sur une face d'élément volumique dont les valeurs des composantes sont fournies"
- +" par l'intermédiaire d'un concept fonction",
- regles=(AU_MOINS_UN('GROUP_MA','MAILLE'),
- AU_MOINS_UN('FX','FY','FZ'),),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- FX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- FY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- FZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- ),
- FORCE_ARETE =FACT(statut='f',max='**',
- fr="Applique des forces linéiques à une arete d'élément volumique ou de coque dont les valeurs des composantes sont"
- +" fournies par l'intermédiaire d'un concept fonction",
- regles=(AU_MOINS_UN('GROUP_MA','MAILLE'),
- AU_MOINS_UN('FX','FY','FZ','MX','MY','MZ'),),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- FX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- FY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- FZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- MX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- MY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- MZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- ),
- FORCE_CONTOUR =FACT(statut='f',max='**',
- fr="Applique des forces linéiques au bord d'un domaine 2D ou AXIS ou AXIS_FOURIER, dont les valeurs des composantes"
- +" sont fournies par l'intermédiaire d'un concept fonction",
- regles=(AU_MOINS_UN('GROUP_MA','MAILLE'),
- AU_MOINS_UN('FX','FY','FZ','MX','MY','MZ'),),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- FX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- FY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- FZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- MX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- MY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- MZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- ),
-
- FORCE_INTERNE =FACT(statut='f',max='**',
- fr="Applique des forces volumiques (2D ou 3D) à un domaine volumique, dont les valeurs des composantes sont fournies"
- +" par l'intermédiaire d'un concept fonction",
- regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
- PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
- AU_MOINS_UN('FX','FY','FZ'),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- FX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- FY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- FZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- ),
-
- PRES_REP =FACT(statut='f',max='**',
- fr="Applique une pression à un domaine de milieu continu 2D ou 3D ou à un domaine de coques et tuyaux, dont les"
- +" valeurs imposées (pression et/ou cisaillement) sont fournies par l'intermédiaire d'un concept fonction",
- regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
- PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
- AU_MOINS_UN('PRES','CISA_2D'),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- PRES =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- CISA_2D =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- ),
-
- EFFE_FOND =FACT(statut='f',max='**',
- fr="Calcul l'effet de fond sur une branche de tuyauterie (modélisation 3D) soumise"
- +" à une pression dont la valeur est fournie par l'intermédiaire d'un concept fonction",
- regles=(AU_MOINS_UN('GROUP_MA','MAILLE'),),
- GROUP_MA_INT =SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**'),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- PRES =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- ),
-
- EPSI_INIT =FACT(statut='f',max='**',
- fr="Applique un chargement de déformation initiale à un élément 2D, 3D ou de structure dont les composantes"
- +" du tenseur de déformation sont fournies par l'intermédiaire d'un concept fonction",
- regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
- PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
- AU_MOINS_UN('EPXX','EPYY','EPZZ','EPXY','EPXZ','EPYZ'),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- EPXX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- EPYY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- EPZZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- EPXY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- EPXZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- EPYZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- ),
-
- FORCE_POUTRE =FACT(statut='f',max='**',
- fr="Applique des forces linéiques sur des éléments de type poutre dont les valeurs sont fournies par"
- +" l'intermédiaire d'un concept fonction",
- regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
- PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
- AU_MOINS_UN('FX','FY','FZ','N','VY','VZ'),
- PRESENT_ABSENT('FX','N','VY','VZ'),
- PRESENT_ABSENT('FY','N','VY','VZ'),
- PRESENT_ABSENT('FZ','N','VY','VZ'),
- PRESENT_ABSENT('N','FX','FY','FZ'),
- PRESENT_ABSENT('VY','FX','FY','FZ'),
- PRESENT_ABSENT('VZ','FX','FY','FZ'),),
-# rajout d un mot cle REPERE : / GLOBAL / LOCAL
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- TYPE_CHARGE =SIMP(statut='f',typ='TXM',defaut="FORCE",into=("VENT","FORCE") ),
- FX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- FY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- FZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- N =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- VY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- VZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- ),
-
- FORCE_TUYAU =FACT(statut='f',max='**',
- fr="Applique une pression sur des éléments TUYAU, la valeur est fournie par l'intermédiaire d'un concept fonction",
- regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
- PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- PRES =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- ),
-
- FORCE_COQUE =FACT(statut='f',max='**',
- fr="Applique des forces surfaciques sur des éléments de types coques dont les valeurs sont fournies par"
- +" l'intermédiaires d'un concept fonction",
- regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
- PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
- AU_MOINS_UN('FX','FY','FZ','MX','MY','MZ','PRES','F1','F2','F3','MF1','MF2'),
- PRESENT_ABSENT('FX','PRES','F1','F2','F3','MF1','MF2'),
- PRESENT_ABSENT('FY','PRES','F1','F2','F3','MF1','MF2'),
- PRESENT_ABSENT('FZ','PRES','F1','F2','F3','MF1','MF2'),
- PRESENT_ABSENT('MX','PRES','F1','F2','F3','MF1','MF2'),
- PRESENT_ABSENT('MY','PRES','F1','F2','F3','MF1','MF2'),
- PRESENT_ABSENT('MZ','PRES','F1','F2','F3','MF1','MF2'),
- PRESENT_ABSENT('F1','PRES','FX','FY','FZ','MX','MY','MZ'),
- PRESENT_ABSENT('F2','PRES','FX','FY','FZ','MX','MY','MZ'),
- PRESENT_ABSENT('F3','PRES','FX','FY','FZ','MX','MY','MZ'),
- PRESENT_ABSENT('MF1','PRES','FX','FY','FZ','MX','MY','MZ'),
- PRESENT_ABSENT('MF2','PRES','FX','FY','FZ','MX','MY','MZ'),
- PRESENT_ABSENT('PRES','FX','FY','FZ','MX','MY','MZ','F1','F2','F3','MF1','MF2'),),
-# rajout d un mot cle REPERE : / GLOBAL / LOCAL
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- FX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- FY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- FZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- MX =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- MY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- MZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- F1 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- F2 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- F3 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- MF1 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- MF2 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- PRES =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- PLAN =SIMP(statut='f',typ='TXM',defaut="MAIL",
- into=("SUP","INF","MOY","MAIL") ),
- ),
-
- LIAISON_COQUE =FACT(statut='f',max='**',
- fr="Permet de représenter le raccord entre des éléments de coques au moyen des relations linéaires",
- GROUP_MA_1 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE_1 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_NO_1 =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- NOEUD_1 =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- GROUP_MA_2 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE_2 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_NO_2 =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- NOEUD_2 =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- NUME_LAGR =SIMP(statut='f',typ='TXM',defaut="NORMAL",into=("NORMAL","APRES",) ),
- ),
-
-
- VITE_FACE =FACT(statut='f',max='**',
- fr="Impose des vitesses normales à une face (phénomène ACOUSTIQUE) dont les valeurs sont fournies par"
- +" l'intermédiaire d'un concept fonction",
- regles=(AU_MOINS_UN('GROUP_MA','MAILLE'),
- PRESENT_ABSENT('GROUP_MA','MAILLE'),),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- VNOR =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- ),
- IMPE_FACE =FACT(statut='f',max='**',
- fr="Applique à une face une impédance acoustique dont la valeur est fournie par l'intermédiaire"
- +" d'un concept fonction",
- regles=(AU_MOINS_UN('GROUP_MA','MAILLE'),
- PRESENT_ABSENT('GROUP_MA','MAILLE'),),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- IMPE =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- ),
- ONDE_PLANE =FACT(statut='f',max='**',
- fr="Impose un chargement sismique par onde plane dont la valeur est fournie par l'intermédiaire"
- +" d'un concept fonction",
- DIRECTION =SIMP(statut='o',typ='R',max='**'),
- TYPE_ONDE =SIMP(statut='o',typ='TXM' ),
- FONC_SIGNAL =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- DIST_ORIG =SIMP(statut='o',typ='R' ),
- ),
-
-
-
- FLUX_THM_REP =FACT(statut='f',max='**',
- fr="Applique à un domaine continue 2D ou 3D un flux de chaleur et/ou un apport de masse fluide (flux hydraulique)"
- +" dont les valeurs des flux sont fournies par l'intermédiaire d'un concept fonction",
- regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
- PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
- AU_MOINS_UN('FLUN','FLUN_HYDR1','FLUN_HYDR2'),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- FLUN =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- FLUN_HYDR1 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- FLUN_HYDR2 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- ),
-
- INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
-) ;
-
-
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-AFFE_CHAR_OPS011=OPER(nom="AFFE_CHAR_OPS011",op= 190,sd_prod=char_ther,
- fr="Affectation de charges et conditions limites thermiques spécifique à CARA_TORSION",
- reentrant='n',
- UIinfo={"groupes":("Outils métier",)},
- regles=(AU_MOINS_UN('CARA_TORSION', ),),
- MODELE =SIMP(statut='o',typ=modele_sdaster ),
- VERI_DDL =SIMP(statut='f',typ='TXM',defaut="OUI",
- into=("OUI","NON") ),
- CARA_TORSION =FACT(statut='f',max='**',
- regles=(UN_PARMI('TOUT','GROUP_MA'),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- ),
- INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ),
-) ;
-#& MODIF COMMANDE DATE 11/10/2005 AUTEUR VABHHTS J.PELLET
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-AFFE_CHAR_THER=OPER(nom="AFFE_CHAR_THER",op=34,sd_prod=char_ther
- ,fr="Affectation de charges et conditions aux limites thermiques constantes",
- reentrant='n',
- UIinfo={"groupes":("Modélisation",)},
- regles=(AU_MOINS_UN('TEMP_IMPO','SOURCE','FLUX_REP','ECHANGE',
- 'ECHANGE_PAROI','GRAD_TEMP_INIT','LIAISON_DDL','LIAISON_GROUP',
- 'LIAISON_UNIF','LIAISON_CHAMNO','RAYONNEMENT','LIAISON_MAIL' ),),
- MODELE =SIMP(statut='o',typ=(modele_sdaster) ),
-
- TEMP_IMPO =FACT(statut='f',max='**',
- regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD'),
- AU_MOINS_UN('TEMP_SUP','TEMP','TEMP_INF'),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- TEMP =SIMP(statut='f',typ='R'),
- TEMP_INF =SIMP(statut='f',typ='R'),
- TEMP_SUP =SIMP(statut='f',typ='R'), ),
-
- FLUX_REP =FACT(statut='f',max='**',
- regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
- PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
- PRESENT_PRESENT('CARA_TORSION','GROUP_MA'),
- AU_MOINS_UN('FLUN','FLUN_INF','FLUN_SUP','CARA_TORSION') ),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- FLUN =SIMP(statut='f',typ='R'),
- FLUN_INF =SIMP(statut='f',typ='R'),
- FLUN_SUP =SIMP(statut='f',typ='R'),
- CARA_TORSION =SIMP(statut='f',typ=tabl_aire_int ),
- ),
-
-
- RAYONNEMENT =FACT(statut='f',max='**',
- fr="Attention, exprimer les températures en Celsius si rayonnement",
- regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
- PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- SIGMA =SIMP(statut='o',typ='R'),
- EPSILON =SIMP(statut='o',typ='R'),
- TEMP_EXT =SIMP(statut='o',typ='R'),
- ),
-
- ECHANGE =FACT(statut='f',max='**',
- regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
- PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
- AU_MOINS_UN('COEF_H','COEF_H_INF','COEF_H_SUP'),
- ENSEMBLE('COEF_H','TEMP_EXT',),
- ENSEMBLE('COEF_H_INF','TEMP_EXT_INF'),
- ENSEMBLE('COEF_H_SUP','TEMP_EXT_SUP'),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- COEF_H =SIMP(statut='f',typ='R'),
- TEMP_EXT =SIMP(statut='f',typ='R'),
- COEF_H_INF =SIMP(statut='f',typ='R'),
- TEMP_EXT_INF =SIMP(statut='f',typ='R'),
- COEF_H_SUP =SIMP(statut='f',typ='R'),
- TEMP_EXT_SUP =SIMP(statut='f',typ='R'),
- ),
-
- SOURCE =FACT(statut='f',max='**',
- regles=(UN_PARMI('SOUR','SOUR_CALCULEE',),
- PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
- PRESENT_ABSENT('SOUR_CALCULEE','TOUT','GROUP_MA','MAILLE'),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- SOUR =SIMP(statut='f',typ='R'),
- SOUR_CALCULEE =SIMP(statut='f',typ=(cham_elem_sour_r) ),
- ),
-
- GRAD_TEMP_INIT =FACT(statut='f',max='**',
- regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
- PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
- AU_MOINS_UN('FLUX_X','FLUX_Y','FLUX_Z'),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- FLUX_X =SIMP(statut='f',typ='R' ),
- FLUX_Y =SIMP(statut='f',typ='R' ),
- FLUX_Z =SIMP(statut='f',typ='R' ),
- ),
-
- LIAISON_DDL =FACT(statut='f',max='**',
- regles=(UN_PARMI('GROUP_NO','NOEUD', ),),
- GROUP_NO =SIMP(statut='f',typ=grno,max='**'),
- NOEUD =SIMP(statut='f',typ=no ,max='**'),
- DDL =SIMP(statut='f',typ='TXM',max='**',
- into=("TEMP","TEMP_INF","TEMP_SUP") ),
- COEF_MULT =SIMP(statut='o',typ='R',max='**'),
- COEF_IMPO =SIMP(statut='o',typ='R' ),
- ),
-
- LIAISON_GROUP =FACT(statut='f',max='**',
- regles=(UN_PARMI('GROUP_MA_1','MAILLE_1','GROUP_NO_1','NOEUD_1'),
- UN_PARMI('GROUP_MA_2','MAILLE_2','GROUP_NO_2','NOEUD_2'),
- EXCLUS('GROUP_MA_1','GROUP_NO_2'),
- EXCLUS('GROUP_MA_1','NOEUD_2'),
- EXCLUS('GROUP_NO_1','GROUP_MA_2'),
- EXCLUS('GROUP_NO_1','MAILLE_2'),
- EXCLUS('MAILLE_1','GROUP_NO_2'),
- EXCLUS('MAILLE_1','NOEUD_2'),
- EXCLUS('NOEUD_1','GROUP_MA_2'),
- EXCLUS('NOEUD_1','MAILLE_2'),
- EXCLUS('SANS_NOEUD','SANS_GROUP_NO'),),
- GROUP_MA_1 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE_1 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_NO_1 =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- NOEUD_1 =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- GROUP_MA_2 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE_2 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_NO_2 =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- NOEUD_2 =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- SANS_NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- SANS_GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- DDL_1 =SIMP(statut='f',typ='TXM',max='**',defaut="TEMP",
- into=("TEMP","TEMP_INF","TEMP_SUP") ),
- COEF_MULT_1 =SIMP(statut='o',typ='R',max='**'),
- DDL_2 =SIMP(statut='f',typ='TXM',max='**',defaut="TEMP",
- into=("TEMP","TEMP_INF","TEMP_SUP",) ),
- COEF_MULT_2 =SIMP(statut='o',typ='R',max='**'),
- COEF_IMPO =SIMP(statut='o',typ='R' ),
- SOMMET =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- TRAN =SIMP(statut='f',typ='R',max='**'),
- ANGL_NAUT =SIMP(statut='f',typ='R',max='**'),
- CENTRE =SIMP(statut='f',typ='R',max='**'),
- ),
-
- LIAISON_MAIL =FACT(statut='f',max='**',
- regles=(AU_MOINS_UN('GROUP_MA_MAIT','MAILLE_MAIT'),
- AU_MOINS_UN('GROUP_MA_ESCL','MAILLE_ESCL','GROUP_NO_ESCL',
- 'NOEUD_ESCL'),),
- GROUP_MA_MAIT =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE_MAIT =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_MA_ESCL =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE_ESCL =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_NO_ESCL =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- NOEUD_ESCL =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- TRAN =SIMP(statut='f',typ='R',max='**' ),
- ANGL_NAUT =SIMP(statut='f',typ='R',max='**' ),
- CENTRE =SIMP(statut='f',typ='R',max='**' ),
- ELIM_MULT =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
- ),
-
- ECHANGE_PAROI =FACT(statut='f',max='**',
- regles=(UN_PARMI('GROUP_MA_1','MAILLE_1'),
- UN_PARMI('GROUP_MA_2','MAILLE_2'),),
- GROUP_MA_1 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE_1 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_MA_2 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE_2 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- COEF_H =SIMP(statut='f',typ='R'),
- TRAN =SIMP(statut='f',typ='R',min=2,max=3),
- ANGL_NAUT =SIMP(statut='f',typ='R',max=3),
- CENTRE =SIMP(statut='f',typ='R',min=2,max=3),
- ),
-
- LIAISON_UNIF =FACT(statut='f',max='**',
- regles=(UN_PARMI('GROUP_NO','NOEUD','GROUP_MA','MAILLE'),),
- GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- DDL =SIMP(statut='f',typ='TXM',max='**',defaut="TEMP",
- into=("TEMP","TEMP_INF","TEMP_SUP") ),
- ),
-
- LIAISON_CHAMNO =FACT(statut='f',max='**',
- CHAM_NO =SIMP(statut='o',typ=cham_no_sdaster),# CO()# "il faut definir une structure de donnee generique chamno"
- COEF_IMPO =SIMP(statut='o',typ='R' ),
- NUME_LAGR =SIMP(statut='f',typ='TXM',defaut="NORMAL",into=("NORMAL","APRES") ),
- ),
-
- CONVECTION =FACT(statut='f',max='**',
- VITESSE =SIMP(statut='o',typ=(cham_no_depl_r) ),
- ),
-
-
- INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ),
-) ;
-#& MODIF COMMANDE DATE 11/10/2005 AUTEUR VABHHTS J.PELLET
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-AFFE_CHAR_THER_F=OPER(nom="AFFE_CHAR_THER_F",op=33,sd_prod=char_ther,
- fr="Affectation de charges et conditions aux limites thermiques fonction d'un (ou plusieurs)"
- +" paramètres (temps, ...)",
- reentrant='n',
- UIinfo={"groupes":("Modélisation",)},
- regles=(AU_MOINS_UN('TEMP_IMPO','SOURCE','FLUX_REP','FLUX_NL','ECHANGE',
- 'ECHANGE_PAROI','LIAISON_DDL','LIAISON_GROUP','LIAISON_UNIF',
- 'GRAD_TEMP_INIT','RAYONNEMENT'),),
- MODELE =SIMP(statut='o',typ=(modele_sdaster) ),
-
- TEMP_IMPO =FACT(statut='f',max='**',
- regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD'),
- AU_MOINS_UN('TEMP_SUP','TEMP','TEMP_INF','EVOL_THER'),
- PRESENT_ABSENT('EVOL_THER','TEMP','TEMP_INF','TEMP_SUP'),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- EVOL_THER =SIMP(statut='f',typ=(evol_ther) ),
- DDL =SIMP(statut='f',typ='TXM',into=("TEMP",) ),
- TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- TEMP_INF =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- TEMP_SUP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- ),
-
- FLUX_REP =FACT(statut='f',max='**',
- regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
- PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
- AU_MOINS_UN('FLUN','FLUN_INF','FLUN_SUP','FLUX_X','FLUX_Y','FLUX_Z'),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- FLUN =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- FLUN_INF =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- FLUN_SUP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- FLUX_X =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- FLUX_Y =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- FLUX_Z =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- ),
-
- FLUX_NL =FACT(statut='f',max='**',
- regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
- PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- FLUN =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- ),
-
-
- RAYONNEMENT =FACT(statut='f',max='**',
- fr="Attention, exprimer les températures en Celsius si rayonnement",
- regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
- PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- SIGMA =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- EPSILON =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- TEMP_EXT =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- ),
-
-
-
- ECHANGE =FACT(statut='f',max='**',
- regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
- PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
- AU_MOINS_UN('COEF_H','COEF_H_INF','COEF_H_SUP'),
- ENSEMBLE('COEF_H','TEMP_EXT'),
- ENSEMBLE('COEF_H_INF','TEMP_EXT_INF'),
- ENSEMBLE('COEF_H_SUP','TEMP_EXT_SUP'),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- COEF_H =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- TEMP_EXT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- COEF_H_INF =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- TEMP_EXT_INF =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- COEF_H_SUP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- TEMP_EXT_SUP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- ),
-
-
- SOURCE =FACT(statut='f',max='**',
- regles=(UN_PARMI('TOUT','GROUP_MA','MAILLE'),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- SOUR =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- ),
-
- GRAD_TEMP_INIT =FACT(statut='f',max='**',
- regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),
- PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
- AU_MOINS_UN('FLUX_X','FLUX_Y','FLUX_Z'),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- FLUX_X =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- FLUX_Y =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- FLUX_Z =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- ),
-
- ECHANGE_PAROI =FACT(statut='f',max='**',
- regles=(UN_PARMI('GROUP_MA_1','MAILLE_1'),
- UN_PARMI('GROUP_MA_2','MAILLE_2'),),
- GROUP_MA_1 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE_1 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_MA_2 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE_2 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- COEF_H =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- TRAN =SIMP(statut='f',typ='R',min=2,max=3),
- ANGL_NAUT =SIMP(statut='f',typ='R',max=3),
- CENTRE =SIMP(statut='f',typ='R',min=2,max=3),
- ),
-
- LIAISON_DDL =FACT(statut='f',max='**',
- regles=(UN_PARMI('GROUP_NO','NOEUD'),),
- GROUP_NO =SIMP(statut='f',typ=grno,max='**'),
- NOEUD =SIMP(statut='f',typ=no ,max='**'),
- DDL =SIMP(statut='f',typ='TXM',max='**',into=("TEMP","TEMP_INF","TEMP_SUP") ),
- COEF_MULT =SIMP(statut='o',typ='R',max='**'),
- COEF_IMPO =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- ),
-
- LIAISON_GROUP =FACT(statut='f',max='**',
- regles=(UN_PARMI('GROUP_MA_1','MAILLE_1','GROUP_NO_1','NOEUD_1'),
- UN_PARMI('GROUP_MA_2','MAILLE_2','GROUP_NO_2','NOEUD_2'),
- EXCLUS('GROUP_MA_1','GROUP_NO_2'),
- EXCLUS('GROUP_MA_1','NOEUD_2'),
- EXCLUS('GROUP_NO_1','GROUP_MA_2'),
- EXCLUS('GROUP_NO_1','MAILLE_2'),
- EXCLUS('MAILLE_1','GROUP_NO_2'),
- EXCLUS('MAILLE_1','NOEUD_2'),
- EXCLUS('NOEUD_1','GROUP_MA_2'),
- EXCLUS('NOEUD_1','MAILLE_2'),
- EXCLUS('SANS_NOEUD','SANS_GROUP_NO'),),
- GROUP_MA_1 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE_1 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_NO_1 =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- NOEUD_1 =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- GROUP_MA_2 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE_2 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_NO_2 =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- NOEUD_2 =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- SANS_NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- SANS_GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- DDL_1 =SIMP(statut='f',typ='TXM',max='**',defaut="TEMP",
- into=("TEMP","TEMP_INF","TEMP_SUP") ),
- COEF_MULT_1 =SIMP(statut='o',typ='R',max='**'),
- DDL_2 =SIMP(statut='f',typ='TXM',max='**',defaut="TEMP",
- into=("TEMP","TEMP_INF","TEMP_SUP") ),
- COEF_MULT_2 =SIMP(statut='o',typ='R',max='**'),
- COEF_IMPO =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- SOMMET =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- TRAN =SIMP(statut='f',typ='R',max='**'),
- ANGL_NAUT =SIMP(statut='f',typ='R',max='**'),
- CENTRE =SIMP(statut='f',typ='R',max='**'),
- ),
-
- LIAISON_UNIF =FACT(statut='f',max='**',
- regles=(UN_PARMI('GROUP_NO','NOEUD','GROUP_MA','MAILLE'),),
- GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- DDL =SIMP(statut='f',typ='TXM',defaut="TEMP",
- into=("TEMP","TEMP_INF","TEMP_SUP") ),
- ),
-
- CONVECTION =FACT(statut='f',max='**',
- VITESSE =SIMP(statut='o',typ=(cham_no_depl_r) ),
- ),
-
- INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ),
-) ;
-#& MODIF COMMANDE DATE 27/06/2005 AUTEUR D6BHHJP J.P.LEFEBVRE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE VABHHTS J.PELLET
-AFFE_MATERIAU=OPER(nom="AFFE_MATERIAU",op=6,sd_prod=cham_mater,
- fr="Affecter des matériaux à des zones géométriques d'un maillage",
- reentrant='n',
- UIinfo={"groupes":("Modélisation",)},
- MAILLAGE =SIMP(statut='o',typ=maillage_sdaster),
- MODELE =SIMP(statut='f',typ=modele_sdaster),
-
- # affectation du nom du matériau :
- # -------------------------------
- AFFE =FACT(statut='o',max='**',
- regles=(UN_PARMI('TOUT','GROUP_MA','MAILLE'),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- MATER =SIMP(statut='o',typ=mater_sdaster,max=30),
- TEMP_REF =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- SECH_REF =SIMP(statut='f',typ='R',val_min=0.E+0),
- ),
-
- # affectation des variables de commande :
- # --------------------------------------------------
- # un mot clé caché qui ne sert qu'à boucler sur les VARC possibles :
- LIST_NOM_VARC =SIMP(statut='c',typ='TXM', defaut=("CORR","IRRA","NEUT1","NEUT2")),
-
- AFFE_VARC =FACT(statut='f',max='**',
-
- regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
- PRESENT_ABSENT('GROUP_MA','TOUT'),
- PRESENT_ABSENT('MAILLE','TOUT'),
- UN_PARMI('EVOL','CHAMP_GD'),),
-
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ), # [défaut]
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
-
- CHAMP_GD =SIMP(statut='f',typ=cham_gd_sdaster,),
- B_CHAMP_GD =BLOC(condition="CHAMP_GD!=None",
- NOM_VARC =SIMP(statut='o',typ='TXM', into=("CORR","IRRA","NEUT1","NEUT2")),
- ),
- EVOL =SIMP(statut='f',typ=evol_sdaster,),
- B_EVOL =BLOC(condition="EVOL!=None",
- NOM_VARC =SIMP(statut='o',typ='TXM', into=("CORR","IRRA","NEUT1","NEUT2")),
- B_NOM_CORR =BLOC(condition="NOM_VARC=='CORR'", NOM_CHAM=SIMP(statut='f',typ='TXM',defaut= 'CORR',),),
- B_NOM_IRRA =BLOC(condition="NOM_VARC=='IRRA'", NOM_CHAM=SIMP(statut='f',typ='TXM',defaut= 'IRRA',),),
- B_NOM_NEUT1 =BLOC(condition="NOM_VARC=='NEUT1'", NOM_CHAM=SIMP(statut='f',typ='TXM',defaut= 'NEUT',),),
- B_NOM_NEUT2 =BLOC(condition="NOM_VARC=='NEUT2'", NOM_CHAM=SIMP(statut='f',typ='TXM',defaut= 'NEUT',),),
- PROL_DROITE =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU") ),
- PROL_GAUCHE =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU") ),
- ),
- VALE_REF =SIMP(statut='f',typ='R'),
- ),
-
- # mots clés cachés pour les variables de commande NEUTi :
- # -------------------------------------------------------
- VARC_NEUT1 =FACT(statut='d',
- NOM_VARC =SIMP(statut='c',typ='TXM',defaut="NEUT1"),
- GRANDEUR =SIMP(statut='c',typ='TXM',defaut="NEUT_R"),
- CMP_GD =SIMP(statut='c',typ='TXM',max=1,min=1,defaut=("X1")),
- CMP_VARC =SIMP(statut='c',typ='TXM',max=1,min=1,defaut=("NEUT1")),
- ),
- VARC_NEUT2 =FACT(statut='d',
- NOM_VARC =SIMP(statut='c',typ='TXM',defaut="NEUT2"),
- GRANDEUR =SIMP(statut='c',typ='TXM',defaut="NEUT_R"),
- CMP_GD =SIMP(statut='c',typ='TXM',max=1,min=1,defaut=("X1")),
- CMP_VARC =SIMP(statut='c',typ='TXM',max=1,min=1,defaut=("NEUT2")),
- ),
-
- # mots clés cachés pour variable de commande TEMP :
- # --------------------------------------------------
- VARC_TEMP =FACT(statut='d',
- NOM_VARC =SIMP(statut='c',typ='TXM',defaut="TEMP"),
- GRANDEUR =SIMP(statut='c',typ='TXM',defaut="TEMP_R"),
- CMP_GD =SIMP(statut='c',typ='TXM',max=1,min=1,defaut=("TEMP",)),
- CMP_VARC =SIMP(statut='c',typ='TXM',max=1,min=1,defaut=("TEMP",)),
- ),
-
- # mots clés cachés pour variable de commande SECH :
- # --------------------------------------------------
- VARC_SECH =FACT(statut='d',
- NOM_VARC =SIMP(statut='c',typ='TXM',defaut="SECH"),
- GRANDEUR =SIMP(statut='c',typ='TXM',defaut="TEMP_R"),
- CMP_GD =SIMP(statut='c',typ='TXM',max=1,min=1,defaut=("TEMP",)),
- CMP_VARC =SIMP(statut='c',typ='TXM',max=1,min=1,defaut=("SECH",)),
- ),
-
- # mots clés cachés pour variable de commande HYDR :
- # --------------------------------------------------
- VARC_HYDR =FACT(statut='d',
- NOM_VARC =SIMP(statut='c',typ='TXM',defaut="HYDR"),
- GRANDEUR =SIMP(statut='c',typ='TXM',defaut="HYDR_R"),
- CMP_GD =SIMP(statut='c',typ='TXM',max=1,min=1,defaut=("HYDR",)),
- CMP_VARC =SIMP(statut='c',typ='TXM',max=1,min=1,defaut=("HYDR",)),
- ),
-
- # mots clés cachés pour variable de commande CORR :
- # --------------------------------------------------
- VARC_CORR =FACT(statut='d',
- NOM_VARC =SIMP(statut='c',typ='TXM',defaut="CORR"),
- GRANDEUR =SIMP(statut='c',typ='TXM',defaut="CORR_R"),
- CMP_GD =SIMP(statut='c',typ='TXM',max=1,min=1,defaut=("CORR",)),
- CMP_VARC =SIMP(statut='c',typ='TXM',max=1,min=1,defaut=("CORR",)),
- ),
-
- # mots clés cachés pour variable de commande IRRA :
- # --------------------------------------------------
- VARC_IRRA =FACT(statut='d',
- NOM_VARC =SIMP(statut='c',typ='TXM',defaut="IRRA"),
- GRANDEUR =SIMP(statut='c',typ='TXM',defaut="IRRA_R"),
- CMP_GD =SIMP(statut='c',typ='TXM',max=1,min=1,defaut=("IRRA",)),
- CMP_VARC =SIMP(statut='c',typ='TXM',max=1,min=1,defaut=("IRRA",)),
- VALE_DEF =SIMP(statut='c',typ='TXM',max=1,min=1,defaut=(0.,)),
- ),
-
- # mots clés cachés pour variable de commande EPSA :
- # --------------------------------------------------
- VARC_EPSA =FACT(statut='d',
- NOM_VARC =SIMP(statut='c',typ='TXM',defaut="EPSA"),
- GRANDEUR =SIMP(statut='c',typ='TXM',defaut="EPSI_R"),
- CMP_GD =SIMP(statut='c',typ='TXM',max=6,min=6,defaut=("EPXX","EPYY","EPZZ","EPXY","EPXZ","EPYZ",)),
- CMP_VARC =SIMP(statut='c',typ='TXM',max=6,min=6,defaut=("EPXX","EPYY","EPZZ","EPXY","EPXZ","EPYZ",)),
- VALE_DEF =SIMP(statut='c',typ='TXM',max=6,min=6,defaut=( 0., 0., 0., 0., 0., 0., )),
- ),
-) ;
-
-
-#& MODIF COMMANDE DATE 16/08/2005 AUTEUR ROMEO R.FERNANDES
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE JMBHH01 J.M.PROIX
-AFFE_MODELE=OPER(nom="AFFE_MODELE",op=18,sd_prod=modele_sdaster,
- UIinfo={"groupes":("Modélisation",)},
- fr="Définir le phénomène physique modélisé et le type d'éléments finis sur le maillage",reentrant='n',
- regles=(AU_MOINS_UN('AFFE','AFFE_SOUS_STRUC'),),
- MAILLAGE =SIMP(statut='o',typ=(maillage_sdaster) ),
- INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
- VERIF =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=2,into=("MAILLE","NOEUD") ),
- AFFE_SOUS_STRUC =FACT(statut='f',
- regles=(UN_PARMI('TOUT','MAILLE'),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- MAILLE =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**'),
- PHENOMENE =SIMP(statut='f',typ='TXM',defaut="MECANIQUE",into=("MECANIQUE",) ),
- ),
- AFFE =FACT(statut='f',max='**',
- regles=(UN_PARMI('TOUT','GROUP_MA','GROUP_NO','MAILLE','NOEUD'),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- PHENOMENE =SIMP(statut='o',typ='TXM',
- into=("MECANIQUE","THERMIQUE","ACOUSTIQUE") ),
- b_mecanique =BLOC( condition = "PHENOMENE=='MECANIQUE'",
- fr="modelisations mécaniques",
- MODELISATION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',into=(
- "2D_DIS_T",
- "2D_DIS_TR",
- "2D_FLUI_ABSO",
- "2D_FLUI_PESA",
- "2D_FLUI_STRU",
- "2D_FLUIDE",
- "3D",
- "3D_ABSO",
- "3D_FAISCEAU",
- "3D_FLUI_ABSO",
- "3D_FLUIDE",
- "3D_INCO",
- "3D_JOINT_CT",
- "3D_SI",
- "3D_GRAD_EPSI",
- "3D_GRAD_VARI",
- "3D_XFEM",
- "APPUI_REP",
- "ASSE_GRIL",
- "AXIS",
- "AXIS_FLUI_STRU",
- "AXIS_FLUIDE",
- "AXIS_FOURIER",
- "AXIS_INCO",
- "AXIS_NS",
- "AXIS_SI",
- "AXIS_GRAD_VARI",
- "AXIS_JOINT",
- "AXIS_ELDI",
- "BARRE",
- "2D_BARRE",
- "C_PLAN",
- "C_PLAN_NS",
- "C_PLAN_SI",
- "C_PLAN_GRAD_EPSI",
- "C_PLAN_GRAD_VARI",
- "CABLE",
- "CABLE_POULIE",
- "COQUE_3D",
- "COQUE_AXIS",
- "COQUE_C_PLAN",
- "COQUE_D_PLAN",
- "D_PLAN",
- "D_PLAN_GRAD_EPSI",
- "D_PLAN_GRAD_VARI",
- "D_PLAN_NS",
- "PLAN_JOINT",
- "PLAN_ELDI",
- "D_PLAN_ABSO",
- "D_PLAN_INCO",
- "D_PLAN_SI",
- "DIS_T",
- "DIS_TR",
- "DKT",
- "DKTG",
- "DST",
- "FLUI_STRU",
- "GRILLE",
- "GRILLE_MEMBRANE",
- "POU_C_T",
- "POU_D_E",
- "POU_D_EM",
- "POU_D_T",
- "POU_D_T_GD",
- "POU_D_TG",
- "POU_D_TGM",
- "Q4G",
- "TUYAU_3M",
- "TUYAU_6M",
- "SHB8",
- "D_PLAN_HHM",
- "D_PLAN_HM",
- "D_PLAN_THH",
- "D_PLAN_THHM",
- "D_PLAN_THM",
- "D_PLAN_HHMD",
- "D_PLAN_HH2MD",
- "D_PLAN_HMD",
- "D_PLAN_THHD",
- "D_PLAN_THH2D",
- "D_PLAN_THVD",
- "D_PLAN_THH2MD",
- "D_PLAN_THHMD",
- "D_PLAN_THMD",
- "D_PLAN_HHMS",
- "D_PLAN_HH2MS",
- "D_PLAN_HMS",
- "D_PLAN_THHS",
- "D_PLAN_THH2S",
- "D_PLAN_THVS",
- "D_PLAN_THH2MS",
- "D_PLAN_THHMS",
- "D_PLAN_THMS",
- "AXIS_THH",
- "AXIS_THHM",
- "AXIS_THM",
- "AXIS_HHM",
- "AXIS_HM",
- "AXIS_HH2MD",
- "AXIS_HHMD",
- "AXIS_HMD",
- "AXIS_THHD",
- "AXIS_THH2D",
- "AXIS_THVD",
- "AXIS_THHMD",
- "AXIS_THH2MD",
- "AXIS_THMD",
- "AXIS_HH2MS",
- "AXIS_HHMS",
- "AXIS_HMS",
- "AXIS_THHS",
- "AXIS_THH2S",
- "AXIS_THVS",
- "AXIS_THHMS",
- "AXIS_THH2MS",
- "AXIS_THMS",
- "3D_HHM" ,
- "3D_HM",
- "3D_THH",
- "3D_THV",
- "3D_THHM",
- "3D_THM",
- "3D_HHMD",
- "3D_HMD",
- "3D_THHD",
- "3D_THVD",
- "3D_THHMD",
- "3D_THMD",
- "3D_HHMS",
- "3D_HMS",
- "3D_THHS",
- "3D_THVS",
- "3D_THHMS",
- "3D_THMS",
- ) ) ),
-
- b_thermique =BLOC( condition = "PHENOMENE=='THERMIQUE'",
- fr="modelisations thermiques",
- MODELISATION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',into=(
- "3D",
- "3D_DIAG",
- "AXIS",
- "AXIS_DIAG",
- "AXIS_FOURIER",
- "COQUE",
- "COQUE_AXIS",
- "COQUE_PLAN",
- "PLAN",
- "PLAN_DIAG",
- ),),),
-
- b_acoustique =BLOC( condition = "PHENOMENE=='ACOUSTIQUE'",
- fr="modelisations acoustiques",
- MODELISATION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',into=(
- "3D",
- "PLAN"
- ), ),),
-
- ),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-AIDE=PROC(nom="AIDE",op=42,
- UIinfo={"groupes":("Modélisation",)},
- fr="Interroger et imprimer une documentation partielle sur les noms des concepts déjà définis et sur les couples"
- +" (type d'éléments, option) disponibles dans la version.",
- regles=(AU_MOINS_UN('CONCEPT','TYPE_ELEM', ),),
- UNITE =SIMP(statut='f',typ='I',defaut=8),
- TYPE_ELEM =FACT(fr="couple type_elem option",statut='f',
- INITEL =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON",) ),
- ),
- CONCEPT =FACT(statut='f',max='**',
- NOM =SIMP(fr="liste des noms de concept",statut='f',typ='TXM',validators=NoRepeat(),max='**',defaut="*"),
- OPTION =SIMP(fr="option d'édition de concept",statut='f',typ='TXM',defaut="TOUT_TYPE",
- into=("TOUT_TYPE","CREER","A_CREER",) ),
- ),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE VABHHTS J.PELLET
-ASSE_MAILLAGE=OPER(nom="ASSE_MAILLAGE",op= 105,sd_prod=maillage_sdaster,
- fr="Assembler deux maillages pour en former un nouveau",
- reentrant='n',
- UIinfo={"groupes":("Maillage",)},
- MAILLAGE_1 = SIMP(statut='o',typ=maillage_sdaster,),
- MAILLAGE_2 = SIMP(statut='o',typ=maillage_sdaster,),
- OPERATION = SIMP(statut='o',typ='TXM',into=("SOUS_STR","SUPERPOSE","COLLAGE"),),
- b_collage = BLOC(condition = "OPERATION == 'COLLAGE'",
- COLLAGE = FACT(statut='o',
- GROUP_MA_1 =SIMP(statut='o',typ=grma),
- GROUP_MA_2 =SIMP(statut='o',typ=grma),
- ),
- ),
-) ;
-#& MODIF COMMANDE DATE 18/04/2005 AUTEUR NICOLAS O.NICOLAS
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-ASSE_MATR_GENE=OPER(nom="ASSE_MATR_GENE",op= 128,sd_prod=matr_asse_gene_r,
- fr="Assemblage des matrices généralisées de macro éléments pour construction de la matrice globale généralisée",
- reentrant='n',
- UIinfo={"groupes":("Matrices/vecteurs",)},
- NUME_DDL_GENE =SIMP(statut='o',typ=nume_ddl_gene ),
- METHODE =SIMP(statut='f',typ='TXM',defaut="CLASSIQUE",into=("CLASSIQUE","INITIAL") ),
- b_option =BLOC(condition = "METHODE == 'CLASSIQUE'",
- OPTION =SIMP(statut='o',typ='TXM',into=("RIGI_GENE","MASS_GENE","AMOR_GENE") ),
- ),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE VABHHTS J.PELLET
-def asse_matrice_prod(MATR_ELEM,**args):
- if AsType(MATR_ELEM) == matr_elem_depl_r : return matr_asse_depl_r
- if AsType(MATR_ELEM) == matr_elem_depl_c : return matr_asse_depl_c
- if AsType(MATR_ELEM) == matr_elem_temp_r : return matr_asse_temp_r
- if AsType(MATR_ELEM) == matr_elem_pres_c : return matr_asse_pres_c
- raise AsException("type de concept resultat non prevu")
-
-ASSE_MATRICE=OPER(nom="ASSE_MATRICE",op=12,sd_prod=asse_matrice_prod,
- fr="Construction d'une matrice assemblée",reentrant='n',
- UIinfo={"groupes":("Matrices/vecteurs",)},
- MATR_ELEM =SIMP(statut='o',
- typ=(matr_elem_depl_r,matr_elem_depl_c,matr_elem_temp_r,matr_elem_pres_c) ),
- NUME_DDL =SIMP(statut='o',typ=nume_ddl_sdaster),
- CHAR_CINE =SIMP(statut='f',typ=(char_cine_meca,char_cine_ther,char_cine_acou) ),
- INFO =SIMP(statut='f',typ='I',into=(1,2) ),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-ASSE_VECT_GENE=OPER(nom="ASSE_VECT_GENE",op= 140,sd_prod=vect_asse_gene_r,
- fr="Projection des chargements sur la base modale d'une sous structure",
- reentrant='n',
- UIinfo={"groupes":("Matrices/vecteurs",)},
- NUME_DDL_GENE =SIMP(statut='o',typ=nume_ddl_gene ),
- METHODE =SIMP(statut='f',typ='TXM',defaut="CLASSIQUE",into=("CLASSIQUE","INITIAL") ),
- b_nume =BLOC(condition = "METHODE == 'CLASSIQUE'",
- CHAR_SOUS_STRUC =FACT(statut='o',max='**',
- SOUS_STRUC =SIMP(statut='o',typ='TXM' ),
- VECT_ASSE =SIMP(statut='o',typ=cham_no_depl_r ),
- ),
- ),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE VABHHTS J.PELLET
-def asse_vecteur_prod(VECT_ELEM,**args):
- if AsType(VECT_ELEM) == vect_elem_depl_r : return cham_no_depl_r
- if AsType(VECT_ELEM) == vect_elem_temp_r : return cham_no_temp_r
- if AsType(VECT_ELEM) == vect_elem_pres_r : return cham_no_pres_r
- if AsType(VECT_ELEM) == vect_elem_pres_c : return cham_no_pres_c
- raise AsException("type de concept resultat non prevu ")
-
-ASSE_VECTEUR=OPER(nom="ASSE_VECTEUR",op=13,sd_prod=asse_vecteur_prod,
- fr="Construire un champ aux noeuds par assemblage de vecteurs élémentaires",reentrant='n',
- UIinfo={"groupes":("Matrices/vecteurs",)},
- VECT_ELEM =SIMP(statut='o',typ=vect_elem,max='**'),
- NUME_DDL =SIMP(statut='o',typ=nume_ddl_sdaster ),
- INFO =SIMP(statut='f',typ='I',into=(1,2,) ),
-) ;
-#& MODIF COMMANDE DATE 30/06/2004 AUTEUR MCOURTOI M.COURTOIS
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-CALC_AMOR_MODAL=OPER(nom="CALC_AMOR_MODAL",op= 172,sd_prod=listr8_sdaster,
- fr="Création d'une liste d'amortissements modaux calculés selon la règle du RCC-G",
- reentrant='n',
- UIinfo={"groupes":("Résolution",)},
- ENER_SOL =FACT(statut='o',
- regles=(UN_PARMI('GROUP_NO_RADIER','GROUP_MA_RADIER'),
- PRESENT_ABSENT('COEF_GROUP','FONC_GROUP'),
-# Peut-on remplacer les deux règles suivantes par un ENSEMBLE_('KRX','KRY','KRZ')
- PRESENT_PRESENT('KRX','KRY'),
- PRESENT_PRESENT('KRX','KRZ'),
- PRESENT_ABSENT('COOR_CENTRE','NOEUD_CENTRE'),
- PRESENT_ABSENT('GROUP_NO_CENTRE','NOEUD_CENTRE'),
- PRESENT_ABSENT('GROUP_NO_CENTRE','COOR_CENTRE'),),
- METHODE =SIMP(statut='f',typ='TXM',defaut="DEPL",into=("DEPL","RIGI_PARASOL") ),
- MODE_MECA =SIMP(statut='o',typ=mode_meca ),
- GROUP_NO_RADIER =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- GROUP_MA_RADIER =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- FONC_GROUP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- COEF_GROUP =SIMP(statut='f',typ='R',max='**'),
- KX =SIMP(statut='o',typ='R' ),
- KY =SIMP(statut='o',typ='R' ),
- KZ =SIMP(statut='o',typ='R' ),
- KRX =SIMP(statut='f',typ='R' ),
- KRY =SIMP(statut='f',typ='R' ),
- KRZ =SIMP(statut='f',typ='R' ),
- GROUP_NO_CENTRE =SIMP(statut='f',typ=grno),
- NOEUD_CENTRE =SIMP(statut='f',typ=no),
- COOR_CENTRE =SIMP(statut='f',typ='R',max=3),
- ),
- AMOR_INTERNE =FACT(statut='o',
- ENER_POT =SIMP(statut='o',typ=tabl_ener_pot ),
- GROUP_MA =SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**'),
- AMOR_REDUIT =SIMP(statut='o',typ='R',max='**'),
- ),
- AMOR_SOL =FACT(statut='o',
- AMOR_REDUIT =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- FONC_AMOR_GEO =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule),max='**' ),
- HOMOGENE =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
- SEUIL =SIMP(statut='f',typ='R',defaut= 0.3 ),
- ),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE JMBHH01 J.M.PROIX
-def calc_cham_elem_prod(OPTION,**args):
-
-
-# options thermiques
-
- if OPTION == "FLUX_ELGA_TEMP" : return cham_elem_flux_r
- if OPTION == "FLUX_ELNO_TEMP" : return cham_elem_flux_r
-
-# options acoustiques
-
- if OPTION == "PRES_ELNO_DBEL" : return cham_elem_dbel_r
- if OPTION == "PRES_ELNO_REEL" : return cham_elem_pres_r
- if OPTION == "PRES_ELNO_IMAG" : return cham_elem_pres_r
-
-# autres options
-
- if OPTION == "COOR_ELGA" : return cham_elem_geom_r
-
- raise AsException("type de concept resultat non prevu")
-
-CALC_CHAM_ELEM=OPER(nom="CALC_CHAM_ELEM",op=38,sd_prod=calc_cham_elem_prod,
- fr="Calculer un champ élémentaire en thermique et en accoustique à partir de champs déjà calculés"
- +" de type cham_no",
- reentrant='n',
- UIinfo={"groupes":("Post traitements",)},
- MODELE =SIMP(statut='o',typ=modele_sdaster),
- CHAM_MATER =SIMP(statut='o',typ=cham_mater),
- CARA_ELEM =SIMP(statut='f',typ=cara_elem),
-
- regles=(EXCLUS('TOUT','GROUP_MA',),EXCLUS('TOUT','MAILLE',),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
-
-#
-#
-# introduire un mot cle de type modelisation : mécanique,thermique,...
-#
-
- OPTION =SIMP(statut='o',typ='TXM',
- into=("FLUX_ELGA_TEMP","FLUX_ELNO_TEMP",
- "PRES_ELNO_DBEL","PRES_ELNO_REEL","PRES_ELNO_IMAG",
- "COOR_ELGA"), ),
-
- b_thermique =BLOC(condition="OPTION in ('FLUX_ELNO_TEMP','FLUX_ELGA_TEMP',)",
- TEMP =SIMP(statut='o',typ=(cham_no_temp_r,)),
- ),
-
- b_acoustique =BLOC(condition="OPTION in ('PRES_ELNO_DBEL','PRES_ELNO_REEL','PRES_ELNO_IMAG',)",
- PRES =SIMP(statut='o',typ=(cham_no_pres_c,)),
- ),
-
-
-
- EXCIT =FACT(statut='f',max='**',
- regles=(EXCLUS('FONC_MULT','COEF_MULT', ),),
- CHARGE =SIMP(statut='o',typ=(char_meca,char_ther,char_acou)),
- FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- COEF_MULT =SIMP(statut='f',typ='R'), ),
-
- INST =SIMP(statut='f',typ='R',defaut= 0.E+0),
- ACCE =SIMP(statut='f',typ=cham_no_depl_r),
- NUME_COUCHE =SIMP(statut='f',typ='I',defaut= 1),
- NIVE_COUCHE =SIMP(statut='f',typ='TXM',defaut="MOY",into=("SUP","INF","MOY") ),
- MODE_FOURIER =SIMP(statut='f',typ='I',defaut= 0 ),
- ANGLE =SIMP(statut='f',typ='I',defaut= 0),
-) ;
-#& MODIF COMMANDE DATE 24/01/2005 AUTEUR LEBOUVIE F.LEBOUVIER
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE VABHHTS J.PELLET
-def calc_char_cine_prod(CHAR_CINE,**args):
- if AsType(CHAR_CINE) == char_cine_meca : return cham_no_depl_r
- if AsType(CHAR_CINE) == char_cine_ther : return cham_no_temp_r
- if AsType(CHAR_CINE) == char_cine_acou : return cham_no_pres_c
- raise AsException("type de concept resultat non prevu")
-
-CALC_CHAR_CINE=OPER(nom="CALC_CHAR_CINE",op= 102,sd_prod=calc_char_cine_prod,
- fr="Calcul des seconds membres associés à des charges cinématiques (conditions aux limites non dualisées)",
- reentrant='n',
- UIinfo={"groupes":("Matrices/vecteurs",)},
- NUME_DDL =SIMP(statut='o',typ=nume_ddl_sdaster ),
- CHAR_CINE =SIMP(statut='o',typ=(char_cine_meca,char_cine_ther,char_cine_acou ),validators=NoRepeat(),max='**' ),
- INST =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2 ) ),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-def calc_char_seisme_prod(MATR_MASS,**args ):
- if AsType(MATR_MASS) == matr_asse_depl_r : return cham_no_depl_r
- raise AsException("type de concept resultat non prevu")
-
-CALC_CHAR_SEISME=OPER(nom="CALC_CHAR_SEISME",op= 92,sd_prod=calc_char_seisme_prod,
- reentrant='n',fr="Calcul du chargement sismique",
- UIinfo={"groupes":("Matrices/vecteurs",)},
- regles=(UN_PARMI('MONO_APPUI','MODE_STAT' ),),
- MATR_MASS =SIMP(statut='o',typ=matr_asse_depl_r,fr="Matrice de masse" ),
- DIRECTION =SIMP(statut='o',typ='R',max=6,fr="Directions du séisme imposé"),
- MONO_APPUI =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- MODE_STAT =SIMP(statut='f',typ=(mode_stat_depl,mode_stat_acce,mode_stat_forc,) ),
- b_mode_stat =BLOC ( condition = "MODE_STAT != None",
- regles=(UN_PARMI('NOEUD','GROUP_NO' ),),
- NOEUD =SIMP(statut='f',typ=no,validators=NoRepeat(),max='**'),
- GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- ),
- TITRE =SIMP(statut='f',typ='TXM',max='**'),
-) ;
-#& MODIF COMMANDE DATE 11/07/2005 AUTEUR VABHHTS J.PELLET
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE JMBHH01 J.M.PROIX
-def calc_elem_prod(RESULTAT,**args):
- if AsType(RESULTAT) != None : return AsType(RESULTAT)
- raise AsException("type de concept resultat non prevu")
-
-CALC_ELEM=OPER(nom="CALC_ELEM",op=58,sd_prod=calc_elem_prod,reentrant='f',
- UIinfo={"groupes":("Post traitements",)},
- fr="Compléter ou créer un résultat en calculant des champs par éléments (contraintes, déformations,... )",
- MODELE =SIMP(statut='f',typ=modele_sdaster),
- CHAM_MATER =SIMP(statut='f',typ=cham_mater),
- CARA_ELEM =SIMP(statut='f',typ=cara_elem),
-
- RESULTAT =SIMP(statut='o',typ=(evol_elas,dyna_trans,dyna_harmo,mode_meca,
- mode_stat,mode_stat_depl,mode_stat_acce,mode_stat_forc,
- evol_noli,mult_elas,fourier_elas,
- evol_ther,base_modale,
- acou_harmo,mode_acou,mode_flamb) ,
- fr="Résultat d'une commande globale"),
-
- regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','FREQ','NUME_MODE',
- 'NOEUD_CMP','LIST_INST','LIST_FREQ','LIST_ORDRE','NOM_CAS'),),
- TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
- NUME_MODE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
- NOEUD_CMP =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'),
- NOM_CAS =SIMP(statut='f',typ='TXM' ),
-
- INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
- FREQ =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
- LIST_INST =SIMP(statut='f',typ=listr8_sdaster),
- LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster),
- PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3 ),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",) ),
- LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster),
-
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**',
- fr="le calcul ne sera effectué que sur ces mailles là"),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**',
- fr="le calcul ne sera effectué que sur ces mailles là"),
-
-# options pour des resultats lineaire
-
- b_lineaire =BLOC( condition = "AsType(RESULTAT) in (evol_elas,dyna_trans,dyna_harmo,mode_meca,\
- mode_stat,mode_stat_depl,mode_stat_acce,mode_stat_forc,\
- mult_elas,fourier_elas,base_modale,mode_flamb)",
- fr="options mecaniques lineaires",
- TYPE_OPTION =SIMP(statut='f',typ='TXM',defaut='TOUTES',fr="type d'options mecaniques lineaires",
- into=("SIGM_MASSIF","SIGM_STRUCT","EPSI","ENER","CRIT","DERIVEES",
- "INDI_ERRE","AUTRES","TOUTES"),
- ),
- b_toutes=BLOC( condition = "TYPE_OPTION == 'TOUTES'",fr="toutes les options evol elas",
- OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',defaut="SIEF_ELNO_ELGA",
- # contraintes
- into=( "SIEF_ELNO_ELGA","SIGM_ELNO_DEPL","SIEF_ELGA_DEPL",
- "SIPO_ELNO_DEPL","EFGE_ELNO_DEPL","EFGE_ELNO_CART","SIGM_ELNO_CART",
- "SIGM_ELNO_SIEF","SIPO_ELNO_SIEF","SIGM_ELNO_TUYO",
- # déformations
- "EPSI_ELNO_DEPL","EPSI_ELGA_DEPL","EPSG_ELGA_DEPL","EPSG_ELNO_DEPL",
- "EPME_ELNO_DEPL","EPME_ELGA_DEPL","DEGE_ELNO_DEPL","EPSI_ELNO_TUYO",
- # ENER
- "EPOT_ELEM_DEPL","ECIN_ELEM_DEPL","ENEL_ELGA","ENEL_ELNO_ELGA",
- "ETOT_ELGA","ETOT_ELNO_ELGA","ETOT_ELEM",
- # estimateurs erreur
- "SIGM_NOZ1_ELGA","ERRE_ELEM_NOZ1","SIGM_NOZ2_ELGA","ERRE_ELEM_NOZ2",
- "SIRE_ELNO_DEPL","ERRE_ELGA_NORE","ERRE_ELNO_ELGA",
- "SING_ELEM","SING_ELNO_ELEM",
- # CRIT
- "EQUI_ELNO_SIGM","EQUI_ELGA_SIGM","CRIT_ELNO_RUPT",
- "EQUI_ELNO_EPSI","EQUI_ELGA_EPSI","EQUI_ELNO_EPME","EQUI_ELGA_EPME",
- "ENDO_ELGA","ENDO_ELNO_ELGA",
- "ENDO_ELNO_SIGA","ENDO_ELNO_SINO","SIEQ_ELNO_TUYO","EPEQ_ELNO_TUYO",
- # derivees
- "DEUL_ELGA_DEPL","DEDE_ELNO_DLDE","DESI_ELNO_DLSI",
- # autres
- "VNOR_ELEM_DEPL","VALE_NCOU_MAXI","PRES_DBEL_DEPL"),),
-
- NUME_COUCHE =SIMP(statut='f',typ='I',defaut= 1,
- fr="numero de couche dans l'épaisseur de la coque ou du tuyau" ),
- NIVE_COUCHE =SIMP(statut='f',typ='TXM',defaut="MOY",into=("SUP","INF","MOY"),
- fr="position dans l'épaisseur de la coque, ou de la couche" ),
- ANGLE =SIMP(statut='f',typ='I',defaut= 0,fr="angle en degres à partir de la génératrice"),
- NOM_CHAM =SIMP(statut='f',typ='TXM',fr="nom du champ pour VALE_NCOU_MAXI", ),
- NOM_CMP =SIMP(statut='f',typ='TXM',fr="nom de la composante pour VALE_NCOU_MAXI", ),
- PLAN = SIMP(statut='f',typ='TXM',defaut="MAIL",into=("SUP","INF","MOY","MAIL"),
- fr="Plan de calcul pour les plaques excentrées" ),
-
- b_sing =BLOC(condition= "OPTION == 'SING_ELEM' or \
- (type(OPTION)==type(()) and 'SING_ELEM' in OPTION)",
- PREC_ERR=SIMP(statut='o',typ='R',val_min= 0.,val_max= 1.,
- fr="precision demandee pour calculer la carte de taille des elements"),),
-
- EXCIT =FACT(statut='f',max='**',
- fr="Charges contenant les températures, les efforts répartis pour les poutres...",
- regles=(EXCLUS('FONC_MULT','FONC_MULT_C','COEF_MULT','COEF_MULT_C'),),
- CHARGE =SIMP(statut='o',typ=char_meca ),
- FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FONC_MULT_C =SIMP(statut='f',typ=fonction_c),
- COEF_MULT =SIMP(statut='f',typ='R'),
- COEF_MULT_C =SIMP(statut='f',typ='C'),
- PHAS_DEG =SIMP(statut='f',typ='R'),
- PUIS_PULS =SIMP(statut='f',typ='I'),
- TYPE_CHARGE =SIMP(statut='f',typ='TXM',defaut="FIXE",into=("FIXE",),),),
-
-
- ),
-# fin bloc b_toutes
-
- b_sigm_massif =BLOC( condition = "TYPE_OPTION == 'SIGM_MASSIF'",
- fr="options de contraintes elasticite 2D et 3D",
- OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',defaut='SIEF_ELNO_ELGA',
- fr="option de calcul des contraintes",
- into=( "SIEF_ELNO_ELGA","SIGM_ELNO_DEPL","SIEF_ELGA_DEPL",),),
-
- b_charge =BLOC( condition = "OPTION in ('SIGM_ELNO_DEPL','SIEF_ELGA_DEPL',) or \
- (type(OPTION)==type(()) and 'SIGM_ELNO_DEPL' in OPTION ) or \
- (type(OPTION)==type(()) and 'SIEF_ELGA_DEPL' in OPTION ) ",
- fr="charge contenant les temperatures ou autre charge",
- EXCIT =FACT(statut='f',max='**',
- CHARGE =SIMP(statut='o',typ=char_meca ),),
- ),
- ),
-
- b_sigm_struct =BLOC( condition = "TYPE_OPTION == 'SIGM_STRUCT'",
- fr="options de contraintes elasticite poutres, coques, tuyaux",
- OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',defaut='SIEF_ELNO_ELGA',
- fr="option de calcul des contraintes ou efforts generalises",
- into=( "SIEF_ELNO_ELGA","SIGM_ELNO_DEPL","SIEF_ELGA_DEPL","SIGM_ELNO_TUYO",
- "SIPO_ELNO_DEPL","EFGE_ELNO_DEPL","EFGE_ELNO_CART","SIGM_ELNO_CART",
- "SIGM_ELNO_SIEF","SIPO_ELNO_SIEF"),),
-
- b_charge =BLOC( condition = "OPTION in ('SIGM_ELNO_DEPL','SIEF_ELGA_DEPL',\
- 'SIPO_ELNO_DEPL','EFGE_ELNO_DEPL',) or \
- (type(OPTION)==type(()) and 'SIGM_ELNO_DEPL' in OPTION ) or \
- (type(OPTION)==type(()) and 'SIEF_ELGA_DEPL' in OPTION ) or \
- (type(OPTION)==type(()) and 'SIPO_ELNO_DEPL' in OPTION ) or \
- (type(OPTION)==type(()) and 'EFGE_ELNO_DEPL' in OPTION ) ",
- fr="charge contenant les temperatures ou les efforts répartis (poutres) ou autre",
- EXCIT =FACT(statut='f',max='**',
- regles=(EXCLUS('FONC_MULT','FONC_MULT_C','COEF_MULT','COEF_MULT_C'),),
- CHARGE =SIMP(statut='f',typ=char_meca ),
- FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FONC_MULT_C =SIMP(statut='f',typ=fonction_c),
- COEF_MULT =SIMP(statut='f',typ='R'),
- COEF_MULT_C =SIMP(statut='f',typ='C'),
- PHAS_DEG =SIMP(statut='f',typ='R'),
- PUIS_PULS =SIMP(statut='f',typ='I'),
- TYPE_CHARGE =SIMP(statut='f',typ='TXM',defaut="FIXE",into=("FIXE",),),),
- ),
-
- b_niv_couche = BLOC( condition = "OPTION in ('SIGM_ELNO_DEPL',) or \
- (type(OPTION)==type(()) and 'SIGM_ELNO_DEPL' in OPTION) ",
-
- NUME_COUCHE =SIMP(statut='f',typ='I',defaut= 1,
- fr="numero de couche dans l'épaisseur de la coque (coques multicouches)" ),
- NIVE_COUCHE =SIMP(statut='f',typ='TXM',defaut="MOY",into=("SUP","INF","MOY"),
- fr="position dans l'épaisseur de la coque, ou de la couche" ),
- ),
-
- b_sigtuyo = BLOC( condition = "OPTION == 'SIGM_ELNO_TUYO' or \
- (type(OPTION)==type(()) and 'SIGM_ELNO_TUYO' in OPTION) ",
- NUME_COUCHE =SIMP(statut='f',typ='I',defaut= 1 ,
- fr="numero de couche dans l'épaisseur du tuyau" ),
- ANGLE =SIMP(statut='f',typ='I',defaut= 0,fr="angle en degres à partir de la génératrice" ),
- NIVE_COUCHE =SIMP(statut='f',typ='TXM',defaut="MOY",into=("SUP","INF","MOY"),
- fr="position dans l'épaisseur de la couche" ),
- ),
- b_plan_excentrement =BLOC( condition = "OPTION=='EFGE_ELNO_DEPL' or \
- (type(OPTION)==type(()) and 'EFGE_ELNO_DEPL' in OPTION)",
- fr="Plan de calcul des efforts pour les plaques avec excentrement",
- PLAN = SIMP(statut='f',typ='TXM',defaut="MAIL",into=("SUP","INF","MOY","MAIL"),
- fr="Plan de calcul des efforts pour les plaques avec excentrement",),
-
- ),
- ),
-# fin bloc contraintes struct
-
- b_epsi =BLOC( condition = "TYPE_OPTION=='EPSI'",
- OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',
- into=("EPSI_ELNO_DEPL","EPSI_ELGA_DEPL","EPME_ELNO_DEPL","EPME_ELGA_DEPL",
- "DEGE_ELNO_DEPL","EPSI_ELNO_TUYO",),
- ),
- b_niv_couche = BLOC( condition = "OPTION =='EPSI_ELNO_DEPL' or \
- (type(OPTION)==type(()) and 'EPSI_ELNO_DEPL' in OPTION) ",
- NUME_COUCHE =SIMP(statut='f',typ='I',defaut= 1,
- fr="numero de couche dans l'épaisseur de la coque (coques multicouches)" ),
- NIVE_COUCHE =SIMP(statut='f',typ='TXM',defaut="MOY",into=("SUP","INF","MOY"),
- fr="position dans l'épaisseur de la coque, ou de la couche" ),
- ) ,
- b_epstuyo = BLOC( condition = "OPTION == 'EPSI_ELNO_TUYO' or \
- (type(OPTION)==type(()) and 'EPSI_ELNO_TUYO' in OPTION) ",
- NUME_COUCHE =SIMP(statut='f',typ='I',defaut= 1 ,
- fr="numero de couche dans l'épaisseur du tuyau" ),
- ANGLE =SIMP(statut='f',typ='I',defaut= 0,fr="angle en degres à partir de la génératrice" ),
- NIVE_COUCHE =SIMP(statut='f',typ='TXM',defaut="MOY",into=("SUP","INF","MOY"),
- fr="position dans l'épaisseur de la couche" ),
- ),
-b_charge =BLOC( condition = "OPTION in ('EPME_ELNO_DEPL','EPSI_ELGA_DEPL','EPME_ELGA_DEPL','EPSI_ELNO_DEPL','EPSI_ELNO_TUYO' ) or \
- (type(OPTION)==type(()) and 'EPSI_ELNO_DEPL' in OPTION ) or \
- (type(OPTION)==type(()) and 'EPSI_ELNO_TUYO' in OPTION ) or \
- (type(OPTION)==type(()) and 'EPSI_ELGA_DEPL' in OPTION ) or \
- (type(OPTION)==type(()) and 'EPME_ELNO_DEPL' in OPTION ) or \
- (type(OPTION)==type(()) and 'EPME_ELGA_DEPL' in OPTION ) ",
- fr="charge contenant les temperatures",
- EXCIT =FACT(statut='f',max='**',
- CHARGE =SIMP(statut='o',typ=(char_meca,char_ther,char_acou) ),),
- ),
- ),
- b_ener =BLOC( condition = "TYPE_OPTION=='ENER'",
- OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',
- into=("EPOT_ELEM_DEPL","ECIN_ELEM_DEPL","ENEL_ELGA","ENEL_ELNO_ELGA",
- "ETOT_ELGA","ETOT_ELNO_ELGA","ETOT_ELEM",),
- ),
- b_charge =BLOC( condition = "OPTION in ('EPOT_ELEM_DEPL','ECIN_ELEM_DEPL','ENEL_ELGA','ENEL_ELNO_ELGA',) or \
- (type(OPTION)==type(()) and 'EPOT_ELEM_DEPL' in OPTION ) or \
- (type(OPTION)==type(()) and 'ENEL_ELGA' in OPTION ) or \
- (type(OPTION)==type(()) and 'ENEL_ELNO_ELGA' in OPTION ) or \
- (type(OPTION)==type(()) and 'ECIN_ELEM_DEPL' in OPTION ) ",
- fr="charge contenant les temperatures",
- EXCIT =FACT(statut='f',max='**',
- CHARGE =SIMP(statut='f',typ=(char_meca,char_ther,char_acou) ),),
- ),
- ),
-
- b_crit =BLOC( condition = "TYPE_OPTION=='CRIT'",
- OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',
- into=("EQUI_ELNO_SIGM","EQUI_ELGA_SIGM",
- "EQUI_ELNO_EPSI","EQUI_ELGA_EPSI","EQUI_ELNO_EPME","EQUI_ELGA_EPME",
- "ENDO_ELGA","ENDO_ELNO_ELGA",
- "ENDO_ELNO_SIGA","ENDO_ELNO_SINO","CRIT_ELNO_RUPT","SIEQ_ELNO_TUYO","EPEQ_ELNO_TUYO",
- ) ),
- b_niv_couche = BLOC( condition = "OPTION in ('CRIT_ELNO_RUPT','EQUI_ELNO_SIGM') or \
- (type(OPTION)==type(()) and 'EQUI_ELNO_SIGM' in OPTION) or \
- (type(OPTION)==type(()) and 'SIEQ_ELNO_TUYO' in OPTION) or \
- (type(OPTION)==type(()) and 'CRIT_ELNO_RUPT' in OPTION) ",
- NUME_COUCHE =SIMP(statut='f',typ='I',defaut= 1,
- fr="numero de couche dans l'épaisseur de la coque (coques multicouches)" ),
- NIVE_COUCHE =SIMP(statut='f',typ='TXM',defaut="MOY",into=("SUP","INF","MOY"),
- fr="position dans l'épaisseur de la coque, ou de la couche" ),
- ),
- EXCIT =FACT(statut='f',max='**',fr="charge contenant les temperatures",
- CHARGE =SIMP(statut='o',typ=(char_meca,char_ther,char_acou) ),),
- ),
-
- b_derivees =BLOC( condition = "TYPE_OPTION=='DERIVEES'",
- OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',
- into=("DEUL_ELGA_DEPL","DEDE_ELNO_DLDE","DESI_ELNO_DLSI",
- ) ),),
-
- b_autres =BLOC( condition = "TYPE_OPTION=='AUTRES'",
- OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',
- into=("VALE_NCOU_MAXI","PRES_DBEL_DEPL","VNOR_ELEM_DEPL",
- ) ),
- b_maxi =BLOC( condition = "OPTION=='VALE_NCOU_MAXI' or \
- (type(OPTION)==type(()) and 'VALE_NCOU_MAXI' in OPTION)",
- NOM_CHAM =SIMP(statut='o',typ='TXM',fr="Nom du champ pour VALE_NCOU_MAXI" ),
- NOM_CMP =SIMP(statut='o',typ='TXM',fr="Nom de la composante pour VALE_NCOU_MAXI"),),
- ),
-
- b_indi_erre =BLOC( condition = "TYPE_OPTION=='INDI_ERRE'",
- OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',defaut="ERRE_ELGA_NORE",
- into=("SIGM_NOZ1_ELGA","ERRE_ELEM_NOZ1","SIGM_NOZ2_ELGA","ERRE_ELEM_NOZ2",
- "SIRE_ELNO_DEPL","ERRE_ELGA_NORE","ERRE_ELNO_ELGA",
- "SING_ELEM","SING_ELNO_ELEM",
- )),
-
- b_sing =BLOC(condition= "OPTION == 'SING_ELEM' or \
- (type(OPTION)==type(()) and 'SING_ELEM' in OPTION)",
- PREC_ERR=SIMP(statut='o',typ='R',val_min= 0.,val_max=1.,
- fr="precision demandee pour calculer la de taille des elements" ),),
-
- EXCIT =FACT(statut='f',max='**',fr="charge contenant les temperatures",
- CHARGE =SIMP(statut='o',typ=(char_meca,char_ther,char_acou) ),),
- ),
- ),
-# fin bloc lineaire
-
-
-# statique ou dynamique non lineaire : evol_noli
- b_noli =BLOC( condition = "AsType(RESULTAT) == evol_noli",fr="options evol noli",
- TYPE_OPTION =SIMP(statut='f',typ='TXM',defaut='TOUTES',
- into=("SIGM_MASSIF","SIGM_STRUCT","EPSI","ENER","CRIT",
- "VARI","INDI_ERRE","TOUTES","AUTRES"),
- ),
- b_toutes =BLOC( condition = "TYPE_OPTION == 'TOUTES'",fr="toutes les options evol elas",
- OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',
- into=( "SIEF_ELNO_ELGA",
- "SIGM_ELNO_TUYO","SIGM_ELNO_COQU",
- "SIGM_ELNO_SIEF","SIPO_ELNO_SIEF","EFGE_ELNO_CART",
- # EPSI
- "EPSI_ELNO_DEPL","EPSI_ELGA_DEPL","EPSG_ELNO_DEPL","EPSG_ELGA_DEPL",
- "EPME_ELNO_DEPL","EPME_ELGA_DEPL","EPMG_ELNO_DEPL","EPMG_ELGA_DEPL",
- "DEGE_ELNO_DEPL","EPSI_ELNO_TUYO",
- "EPSP_ELNO","EPSP_ELGA",
- "EPGR_ELNO","EPGR_ELGA",
- "VARI_ELNO_ELGA","VARI_ELNO_TUYO","VARI_ELNO_COQU","CRIT_ELNO_RUPT",
- "EXTR_ELGA_VARI","EXTR_ELNO_VARI",
- # CRIT
- "EQUI_ELNO_SIGM","EQUI_ELGA_SIGM","SIEQ_ELNO_TUYO","EPEQ_ELNO_TUYO",
- "ERRE_ELGA_NORE","ERRE_ELNO_ELGA","ERRE_ELEM_NOZ1","ERRE_ELEM_NOZ2",
- "EQUI_ELNO_EPSI","EQUI_ELGA_EPSI","EQUI_ELNO_EPME","EQUI_ELGA_EPME",
- "DCHA_ELNO_SIGM","DCHA_ELGA_SIGM","RADI_ELNO_SIGM","RADI_ELGA_SIGM",
- "ENDO_ELGA","ENDO_ELNO_ELGA","INDI_LOCA_ELGA","SING_ELEM",
- "SING_ELNO_ELEM","ENDO_ELNO_SIGA","ENDO_ELNO_SINO",
- "PMPB_ELNO_SIEF","PMPB_ELGA_SIEF","ENEL_ELGA","ENEL_ELNO_ELGA",
- "ETOT_ELGA","ETOT_ELNO_ELGA","ETOT_ELEM","VALE_NCOU_MAXI"),
- ),
- NORME =SIMP(statut='f',typ='TXM',defaut="VMIS",
- into=("VMIS","TOTAL","VMIS_CINE","TOTAL_CINE"),
- fr="Type de norme pour les options RADI_ et DCHA_"),
-
- NUME_COUCHE =SIMP(statut='f',typ='I',defaut= 1,fr="numéro de couche pour coques et tuyaux" ),
- NIVE_COUCHE =SIMP(statut='f',typ='TXM',defaut="MOY",into=("SUP","INF","MOY"),
- fr="choix du point d'intégration dans la couche" ),
- ANGLE =SIMP(statut='f',typ='I',defaut= 0 ,fr="angle de dépouillement pour les tuyaux"),
- NOM_CHAM =SIMP(statut='f',typ='TXM',fr="Nom du champ pour VALE_NCOU_MAXI"),
- NOM_CMP =SIMP(statut='f',typ='TXM',fr="Nom de la composante pour VALE_NCOU_MAXI"),
- PLAN = SIMP(statut='f',typ='TXM',defaut="MAIL",into=("SUP","INF","MOY","MAIL") ),
-
- b_sing =BLOC(condition= "OPTION == 'SING_ELEM' or \
- (type(OPTION)==type(()) and 'SING_ELEM' in OPTION)",
- PREC_ERR=SIMP(statut='o',typ='R',val_min= 0.,val_max=1.,
- fr="precision demandee pour calculer la carte de taille des elements" ),),
-
-
- b_extr = BLOC( condition = "OPTION in ('EXTR_ELNO_VARI','EXTR_ELGA_VARI')",
- NOM_VARI =SIMP(statut='o',typ='TXM',min= 1,max=1,fr="nom de la variable à extraire",
- into=("DPORO","DRHOLQ","DPVP","SATLIQ","EVP","IND_ETA","D","IND_END","TEMP_MAX","GAMP","PCR",
- "SEUIL_HYD","IND_HYD","PCOHE","COMP_ROC","SEUIL_ISO","ANG_DEV","X11","X22","X33","X12","X13","X23",
- "DIST_DEV","DEV_SUR_CRIT","DIST_ISO","NB_ITER","ARRET","NB_REDE","SIGNE"),),
- ),
- EXCIT =FACT(statut='f',max='**',
- regles=(EXCLUS('FONC_MULT','FONC_MULT_C','COEF_MULT','COEF_MULT_C'),),
- CHARGE =SIMP(statut='o',typ=char_meca ),
- FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FONC_MULT_C =SIMP(statut='f',typ=fonction_c),
- COEF_MULT =SIMP(statut='f',typ='R'),
- COEF_MULT_C =SIMP(statut='f',typ='C'),
- PHAS_DEG =SIMP(statut='f',typ='R'),
- PUIS_PULS =SIMP(statut='f',typ='I'),
- TYPE_CHARGE =SIMP(statut='f',typ='TXM',defaut="FIXE",into=("FIXE",),),),
- ),
-
- b_sigm_massif =BLOC( condition = "TYPE_OPTION == 'SIGM_MASSIF'",
- fr="options de contraintes non lin 2D et 3D",
- OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',
- # contraintes
- into=( "SIEF_ELNO_ELGA",),),
- ),
-
- b_sigm_struct =BLOC( condition = "TYPE_OPTION == 'SIGM_STRUCT'",
- fr="options de contraintes non lin poutres, coques",
- OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',
- # contraintes
- into=( "SIEF_ELNO_ELGA","EFGE_ELNO_CART","SIGM_ELNO_TUYO","SIGM_ELNO_COQU",
- "SIGM_ELNO_SIEF","SIPO_ELNO_SIEF",),),
- b_sigcoqu = BLOC( condition = "OPTION in ('SIGM_ELNO_COQU',) or \
- (type(OPTION)==type(()) and 'SIGM_ELNO_COQU' in OPTION) ",
- NUME_COUCHE =SIMP(statut='f',typ='I',defaut= 1,
- fr="numéro de couche dans l'épaisseur de la coque" ),
- NIVE_COUCHE =SIMP(statut='f',typ='TXM',defaut="MOY",into=("SUP","INF","MOY"),
- fr="choix du point d'intégration dans la couche" ),
- ),
- b_sigtuyo = BLOC( condition = "OPTION in ('SIGM_ELNO_TUYO',) or \
- (type(OPTION)==type(()) and 'SIGM_ELNO_TUYO' in OPTION)",
- NUME_COUCHE =SIMP(statut='f',typ='I',defaut= 1,
- fr="numéro de couche dans l'épaisseur du tuyau" ),
- ANGLE =SIMP(statut='f',typ='I',defaut= 0,
- fr="angle de dépouillement pour les tuyaux, en degres" ),
- NIVE_COUCHE =SIMP(statut='f',typ='TXM',defaut="MOY",into=("SUP","INF","MOY"),
- fr="choix du point d'intégration dans la couche"),
- ),
- ),
-
- b_epsi =BLOC( condition = "TYPE_OPTION=='EPSI'",
- OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',
- into=( "EPSI_ELNO_DEPL","EPSI_ELGA_DEPL","EPSG_ELNO_DEPL","EPSG_ELGA_DEPL",
- "EPME_ELNO_DEPL","EPME_ELGA_DEPL","EPMG_ELNO_DEPL","EPMG_ELGA_DEPL",
- "EPSP_ELNO","EPSP_ELGA","EPGR_ELNO","EPGR_ELGA",
- "DEGE_ELNO_DEPL",),
- ),
- b_niv_couche = BLOC( condition = "OPTION =='EPSI_ELNO_DEPL' or \
- (type(OPTION)==type(()) and 'EPSI_ELNO_DEPL' in OPTION) ",
- NUME_COUCHE =SIMP(statut='f',typ='I',defaut= 1,
- fr="numero de couche dans l'épaisseur de la coque (coques multicouches)" ),
- NIVE_COUCHE =SIMP(statut='f',typ='TXM',defaut="MOY",into=("SUP","INF","MOY"),
- fr="position dans l'épaisseur de la coque, ou de la couche" ),
- ) ,
- EXCIT =FACT(statut='f',max='**',fr="charge contenant les temperatures",
- CHARGE =SIMP(statut='o',typ=(char_meca,char_ther,char_acou) ),),
- ),
- b_epstuyo = BLOC( condition = "OPTION == 'EPSI_ELNO_TUYO' or \
- (type(OPTION)==type(()) and 'EPSI_ELNO_TUYO' in OPTION) ",
- NUME_COUCHE =SIMP(statut='f',typ='I',defaut= 1 ,
- fr="numero de couche dans l'épaisseur du tuyau" ),
- ANGLE =SIMP(statut='f',typ='I',defaut= 0,fr="angle en degres à partir de la génératrice" ),
- NIVE_COUCHE =SIMP(statut='f',typ='TXM',defaut="MOY",into=("SUP","INF","MOY"),
- fr="position dans l'épaisseur de la couche" ),
- EXCIT =FACT(statut='f',max='**',fr="charge contenant les temperatures",
- CHARGE =SIMP(statut='o',typ=(char_meca,char_ther,char_acou) ),),
- ),
-
- b_vari =BLOC( condition = "TYPE_OPTION=='VARI'",
- fr="Calcul et extraction des variables internes",
- OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',
- into=("VARI_ELNO_ELGA","VARI_ELNO_TUYO","VARI_ELNO_COQU",
- "EXTR_ELGA_VARI","EXTR_ELNO_VARI"),
- ),
- b_varcoqu = BLOC( condition = "OPTION in ('VARI_ELNO_COQU',) or \
- (type(OPTION)==type(()) and 'VARI_ELNO_COQU' in OPTION) ",
- NUME_COUCHE =SIMP(statut='f',typ='I',defaut= 1,
- fr="numéro de couche dans l'épaisseur de la coque"),
- NIVE_COUCHE =SIMP(statut='f',typ='TXM',defaut="MOY",into=("SUP","INF","MOY"),
- fr="choix du point d'intégration dans la couche" ),
- ),
- b_vartuyo = BLOC( condition = "OPTION in ('VARI_ELNO_TUYO',) or \
- (type(OPTION)==type(()) and 'VARI_ELNO_TUYO' in OPTION) ",
- NUME_COUCHE =SIMP(statut='f',typ='I',defaut= 1,
- fr="numéro de couche dans l'épaisseur de tuyau" ),
- ANGLE =SIMP(statut='f',typ='I',defaut= 0,
- fr="angle de dépouillement pour les tuyaux, en degres"),
- NIVE_COUCHE =SIMP(statut='f',typ='TXM',defaut="MOY",into=("SUP","INF","MOY"),
- fr="choix du point d'intégration dans la couche" ),
- ),
- b_extr = BLOC( condition = "OPTION in ('EXTR_ELNO_VARI','EXTR_ELGA_VARI')",
- NOM_VARI =SIMP(statut='o',typ='TXM',min= 1,max=1,fr="nom de la variable à extraire",
- into=("DPORO","DRHOLQ","DPVP","SATLIQ","EVP","IND_ETA","D","IND_END","TEMP_MAX","GAMP","PCR",
- "SEUIL_HYD","IND_HYD","PCOHE","COMP_ROC","SEUIL_ISO","ANG_DEV","X11","X22","X33","X12","X13","X23",
- "DIST_DEV","DEV_SUR_CRIT","DIST_ISO","NB_ITER","ARRET","NB_REDE","SIGNE"),),
- ),
- ),
-
- b_ener =BLOC( condition = "TYPE_OPTION=='ENER'",
- OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',
- into=("ETOT_ELGA","ETOT_ELNO_ELGA","ETOT_ELEM","ENEL_ELGA","ENEL_ELNO_ELGA",),
- ),
- EXCIT =FACT(statut='f',max='**',fr="charge contenant les temperatures",
- CHARGE =SIMP(statut='o',typ=(char_meca,char_ther,char_acou) ),),
- ),
-
- b_crit =BLOC( condition = "TYPE_OPTION=='CRIT'",
- OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',
- into=("EQUI_ELNO_SIGM","EQUI_ELGA_SIGM",
- "EQUI_ELNO_EPSI","EQUI_ELGA_EPSI","EQUI_ELNO_EPME","EQUI_ELGA_EPME",
- "ENDO_ELNO_SIGA","ENDO_ELNO_SINO","CRIT_ELNO_RUPT",
- "ENDO_ELGA","ENDO_ELNO_ELGA",
- "PMPB_ELNO_SIEF","PMPB_ELGA_SIEF","SIEQ_ELNO_TUYO","EPEQ_ELNO_TUYO",
- ) ),
- NUME_COUCHE =SIMP(statut='f',typ='I',defaut= 1,fr="numéro de couche dans l'épaisseur de la coque"),
- NIVE_COUCHE =SIMP(statut='f',typ='TXM',defaut="MOY",into=("SUP","INF","MOY"),
- fr="choix du point d'intégration dans la couche" ),
- ),
-
- b_autres =BLOC( condition = "TYPE_OPTION=='AUTRES'",
- OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',
- into=("VALE_NCOU_MAXI",) ),
- b_maxi =BLOC( condition = "OPTION=='VALE_NCOU_MAXI' or \
- (type(OPTION)==type(()) and 'VALE_NCOU_MAXI' in OPTION)",
- NOM_CHAM =SIMP(statut='o',typ='TXM',fr="Nom du champ pour VALE_NCOU_MAXI" ),
- NOM_CMP =SIMP(statut='o',typ='TXM',fr="Nom de la composante pour VALE_NCOU_MAXI"),),
- ),
-
-
- b_indi_erre =BLOC( condition = "TYPE_OPTION=='INDI_ERRE'",
- OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',defaut="ERRE_ELGA_NORE",
- into=("ERRE_ELGA_NORE","ERRE_ELNO_ELGA","ERRE_ELEM_NOZ1","ERRE_ELEM_NOZ2",
- "DCHA_ELNO_SIGM","DCHA_ELGA_SIGM","RADI_ELNO_SIGM","RADI_ELGA_SIGM",
- "SING_ELEM","SING_ELNO_ELEM",) ),
-
- b_sing =BLOC(condition= "OPTION == 'SING_ELEM' or \
- (type(OPTION)==type(()) and 'SING_ELEM' in OPTION)",
- PREC_ERR=SIMP(statut='o',typ='R',val_min= 0.,val_max=1.,
- fr="precision demandee pour calculer la carte de taille des elements" ),),
-
- b_indic = BLOC( condition ="OPTION in ('DCHA_ELNO_SIGM','DCHA_ELGA_SIGM','RADI_ELNO_SIGM','RADI_ELGA_SIGM') or\
- (type(OPTION)==type(()) and 'DCHA_ELNO_SIGM' in OPTION) or\
- (type(OPTION)==type(()) and 'DCHA_ELGA_SIGM' in OPTION) or\
- (type(OPTION)==type(()) and 'RADI_ELNO_SIGM' in OPTION) or\
- (type(OPTION)==type(()) and 'RADI_ELGA_SIGM' in OPTION) ",
- NORME =SIMP(statut='f',typ='TXM',defaut="VMIS",
- into=("VMIS","TOTAL","VMIS_CINE","TOTAL_CINE") ),
- ),
- ),
- ),
-# fin bloc evol_noli
-
-# thermique : evol_ther
- b_ther =BLOC( condition = "AsType(RESULTAT) == evol_ther",fr="options thermiques",
- OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',
- into=("DEUL_ELGA_TEMP","DETE_ELNO_DLTE","FLUX_ELGA_TEMP","FLUX_ELNO_TEMP",
- "HYDR_ELNO_ELGA","DURT_ELGA_META","DURT_ELNO_META",
- "SOUR_ELGA_ELEC","ERTH_ELEM_TEMP","ERTH_ELNO_ELEM",),),
- EXCIT =FACT(statut='f',max='**',
- regles=(EXCLUS('FONC_MULT','FONC_MULT_C','COEF_MULT','COEF_MULT_C'),),
- CHARGE =SIMP(statut='o',typ=char_ther ),
- FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FONC_MULT_C =SIMP(statut='f',typ=fonction_c),
- COEF_MULT =SIMP(statut='f',typ='R'),
- COEF_MULT_C =SIMP(statut='f',typ='C'),
- PHAS_DEG =SIMP(statut='f',typ='R'),
- PUIS_PULS =SIMP(statut='f',typ='I'),
- TYPE_CHARGE =SIMP(statut='f',typ='TXM',defaut="FIXE",into=("FIXE",),),
- ),
- NIVE_COUCHE =SIMP(statut='f',typ='TXM',defaut="MOY",into=("SUP","INF","MOY"),
- fr="choix du point de calcul dans l'épaisseur des coques" ),
-
- ),
-
-# acoustique
- b_acou =BLOC( condition = "AsType(RESULTAT) in (acou_harmo,mode_acou,)",fr="options acoustiques",
- OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',
- into=("PRES_ELNO_DBEL","PRES_ELNO_REEL","PRES_ELNO_IMAG",
- "INTE_ELNO_ACTI","INTE_ELNO_REAC",
- ),),
- EXCIT =FACT(statut='f',max='**',
- regles=(EXCLUS('FONC_MULT','FONC_MULT_C','COEF_MULT','COEF_MULT_C'),),
- CHARGE =SIMP(statut='o',typ=char_acou ),
- FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FONC_MULT_C =SIMP(statut='f',typ=fonction_c),
- COEF_MULT =SIMP(statut='f',typ='R'),
- COEF_MULT_C =SIMP(statut='f',typ='C'),
- PHAS_DEG =SIMP(statut='f',typ='R'),
- PUIS_PULS =SIMP(statut='f',typ='I'),
- TYPE_CHARGE =SIMP(statut='f',typ='TXM',defaut="FIXE",into=("FIXE",),),),
- ),
-
- SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**',
- fr="Liste des paramètres de sensibilité.",
- ang="List of sensitivity parameters"),
- INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
- TITRE =SIMP(statut='f',typ='TXM',max='**'),
-) ;
-#& MODIF COMMANDE DATE 28/06/2005 AUTEUR F1BHHAJ J.ANGLES
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-def calc_fatigue_prod(TYPE_CALCUL,OPTION,**args):
- if TYPE_CALCUL == "CUMUL_DOMMAGE" : return cham_elem_dommag
- if TYPE_CALCUL == "FATIGUE_MULTI" and OPTION == "DOMA_ELGA": return cham_elem_facy_r
- if TYPE_CALCUL == "FATIGUE_MULTI" and OPTION == "DOMA_NOEUD": return cham_no_facy_r
- raise AsException("type de calcul non prevu")
-
-CALC_FATIGUE=OPER(nom="CALC_FATIGUE",op= 151,sd_prod=calc_fatigue_prod,reentrant='n',
- fr="Calculer un champ de dommage de fatigue subit par une structure et déterminer le plan critique"
- +" dans lequel le cisaillement est maximal.",
- UIinfo={"groupes":("Post traitements",)},
-
- TYPE_CALCUL = SIMP(statut='o',typ='TXM',
- into=("CUMUL_DOMMAGE","FATIGUE_MULTI",) ),
-
- b_cumul_domma =BLOC(condition = "TYPE_CALCUL == 'CUMUL_DOMMAGE'",
- fr="Calcul d un champ de dommage subi par une structure.",
- regles=(PRESENT_PRESENT('DOMMAGE','MATER', ),),
- OPTION =SIMP(statut='o',typ='TXM',
- into=("DOMA_ELNO_SIGM","DOMA_ELGA_SIGM",
- "DOMA_ELNO_EPSI","DOMA_ELGA_EPSI",
- "DOMA_ELNO_EPME","DOMA_ELGA_EPME") ),
- HISTOIRE =FACT(statut='o',
- RESULTAT =SIMP(statut='o',typ=(evol_elas,dyna_trans,
- evol_noli) ),
- EQUI_GD =SIMP(statut='f',typ='TXM',defaut="VMIS_SG",
- into=("VMIS_SG","INVA_2_SG") ),
- ),
- DOMMAGE =SIMP(statut='o',typ='TXM',
- into=("WOHLER","MANSON_COFFIN","TAHERI_MANSON",
- "TAHERI_MIXTE",) ),
- MATER =SIMP(statut='o',typ=(mater_sdaster) ),
- TAHERI_NAPPE =SIMP(statut='f',typ=(nappe_sdaster,formule) ),
- TAHERI_FONC =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- ),
-
- b_fatigue_multi =BLOC(condition = "TYPE_CALCUL == 'FATIGUE_MULTI'",
- fr="Plan critique dans le cas de la fatigue multiaxiale à grand nombre de cycles.",
- TYPE_CHARGE =SIMP(statut='o',typ='TXM',into=("PERIODIQUE","NON_PERIODIQUE") ),
- OPTION =SIMP(statut='o',typ='TXM',into=("DOMA_ELGA","DOMA_NOEUD") ),
- RESULTAT =SIMP(statut='o',typ=(evol_elas, evol_noli) ),
- CHAM_MATER =SIMP(statut='o',typ=(cham_mater) ),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**' ),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**' ),
- GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**' ),
- NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**' ),
- COEF_PREECROU =SIMP(statut='f',typ='R',defaut= 1.0E+0),
- b_period =BLOC(condition = "TYPE_CHARGE == 'PERIODIQUE'",
- CRITERE =SIMP(statut='o',typ='TXM',into=("MATAKE","DANG_VAN_MODI_AC") ),
- METHODE =SIMP(statut='o',typ='TXM',into=("CERCLE_EXACT",) ),
- ),
- b_non_period =BLOC(condition = "TYPE_CHARGE == 'NON_PERIODIQUE'",
- CRITERE =SIMP(statut='o',typ='TXM',into=("DOMM_MAXI","DANG_VAN_MODI_AV","FATEMI_SOCIE") ),
- PROJECTION =SIMP(statut='o',typ='TXM',into=("UN_AXE", "DEUX_AXES") ),
- DELTA_OSCI =SIMP(statut='f',typ='R',defaut= 0.0E+0),
- ),
- b_fati_grmano =BLOC(condition = "(GROUP_MA != None or MAILLE != None or GROUP_NO != None or NOEUD != None)",
- MAILLAGE =SIMP(statut='o',typ=maillage_sdaster ),
- ),
- ),
-
- INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-CALC_FLUI_STRU=OPER(nom="CALC_FLUI_STRU",op= 144,sd_prod=melasflu_sdaster,
- reentrant='n',
- fr="Calculer les paramètres modaux d'une structure soumise à un écoulement",
- UIinfo={"groupes":("Matrices/vecteurs",)},
- VITE_FLUI =FACT(statut='f',
- fr="Définir la plage de vitesse fluide étudiée",
- VITE_MIN =SIMP(statut='f',typ='R' ),
- VITE_MAX =SIMP(statut='f',typ='R' ),
- NB_POIN =SIMP(statut='f',typ='I' ),
- ),
- BASE_MODALE =FACT(statut='o',
-
- regles=(AU_MOINS_UN('AMOR_REDUIT','AMOR_UNIF','AMOR_REDUIT_CONN'),),
- MODE_MECA =SIMP(statut='o',typ=mode_meca ),
- NUME_ORDRE =SIMP(statut='f',typ='I',max='**'),
- AMOR_REDUIT =SIMP(statut='f',typ='R',max='**',val_min=0.E+00),
- AMOR_UNIF =SIMP(statut='f',typ='R',val_min=0.E+00 ),
- AMOR_REDUIT_CONN=SIMP(statut='f',typ='R',max='**',val_min=0.E+00),
- ),
- TYPE_FLUI_STRU =SIMP(statut='o',typ=type_flui_stru ),
- IMPRESSION =FACT(statut='f',
- fr="Choix des informations à imprimer dans le fichier RESULTAT",
- PARA_COUPLAGE =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
- DEFORMEE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
- ),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-def calc_fonc_interp_prod(FONCTION,**args):
- if AsType(FONCTION) ==nappe_sdaster : return nappe_sdaster
- elif AsType(FONCTION)==fonction_sdaster : return fonction_sdaster
- elif AsType(FONCTION)==fonction_c : return fonction_c
- elif AsType(FONCTION)==formule : return fonction_sdaster
- elif AsType(FONCTION)==para_sensi : return para_sensi
- raise AsException("type de concept resultat non prevu")
-
-CALC_FONC_INTERP=OPER(nom="CALC_FONC_INTERP",op= 134,sd_prod=calc_fonc_interp_prod,
- docu="U4.32.01-e",reentrant='n',
- fr="Définit une fonction (ou une nappe) à partir d'une fonction FORMULE à 1 ou 2 variables",
- UIinfo={"groupes":("Fonction",)},
- regles=(UN_PARMI('VALE_PARA','LIST_PARA'),),
- FONCTION =SIMP(statut='o',typ=(formule,fonction_sdaster,nappe_sdaster,fonction_c) ),
- VALE_PARA =SIMP(statut='f',typ='R',max='**'),
- LIST_PARA =SIMP(statut='f',typ=listr8_sdaster ),
- NOM_RESU =SIMP(statut='f',typ='TXM'),
- NOM_PARA =SIMP(statut='f',typ='TXM'),
- INTERPOL =SIMP(statut='f',typ='TXM',max=2,into=("NON","LIN","LOG") ),
- PROL_DROITE =SIMP(statut='f',typ='TXM',into=("EXCLU","CONSTANT","LINEAIRE") ),
- PROL_GAUCHE =SIMP(statut='f',typ='TXM',into=("EXCLU","CONSTANT","LINEAIRE") ),
- NOM_PARA_FONC =SIMP(statut='f',typ='TXM'),
- b_eval_nappe =BLOC(condition = "NOM_PARA_FONC != None",
- regles=(UN_PARMI('VALE_PARA_FONC','LIST_PARA_FONC'),),
- VALE_PARA_FONC =SIMP(statut='f',typ='R',max='**'),
- LIST_PARA_FONC =SIMP(statut='f',typ=listr8_sdaster ),
- INTERPOL_FONC =SIMP(statut='f',typ='TXM',max=2,into=("NON","LIN","LOG")),
- PROL_DROITE_FONC=SIMP(statut='f',typ='TXM',into=("EXCLU","CONSTANT","LINEAIRE") ),
- PROL_GAUCHE_FONC=SIMP(statut='f',typ='TXM',into=("EXCLU","CONSTANT","LINEAIRE") ),
- ),
- TITRE =SIMP(statut='f',typ='TXM',max='**'),
- INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2 ) ),
-) ;
-#& MODIF COMMANDE DATE 19/09/2005 AUTEUR DURAND C.DURAND
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE MCOURTOI M.COURTOIS
-from Macro.calc_fonction_ops import calc_fonction_ops
-def calc_fonction_prod(self,DERIVE,EXTRACTION,INTEGRE,INVERSE,COMB,COMB_C,
- ENVELOPPE,SPEC_OSCI,ASSE,FFT,COMPOSE,CORR_ACCE,PUISSANCE,
- LISS_ENVELOP,ABS, **args):
-
- if (INTEGRE != None): return fonction_sdaster
- if (DERIVE != None): return fonction_sdaster
- if (INVERSE != None): return fonction_sdaster
- if (COMB != None):
- type_vale=AsType(COMB[0]['FONCTION'])
- for mcfact in COMB :
- if(AsType(mcfact['FONCTION'])!=type_vale):
- raise AsException("CALC_FONCTION/COMB : pas de types hétérogènes nappe/fonction")
- return type_vale
- if (COMB_C != None):
- vale=COMB_C[0]['FONCTION']
- if(AsType(vale) == nappe_sdaster):
- for mcfact in COMB_C[1:] :
- if(AsType(mcfact['FONCTION'])!=nappe_sdaster):
- raise AsException("CALC_FONCTION/COMB_C : pas de types hétérogènes nappe/fonction")
- return nappe_sdaster
- else:
- for mcfact in COMB_C :
- if(AsType(mcfact['FONCTION'])==nappe_sdaster):
- raise AsException("CALC_FONCTION/COMB_C : pas de types hétérogènes nappe/fonction")
- return fonction_c
- if (ENVELOPPE != None): return AsType(ENVELOPPE[0]['FONCTION'])
- if (EXTRACTION != None): return fonction_sdaster
- if (SPEC_OSCI != None): return nappe_sdaster
- if (COMPOSE != None): return fonction_sdaster
- if (ASSE != None): return fonction_sdaster
- if (FFT != None):
- vale=FFT[0]['FONCTION']
- if (AsType(vale) == fonction_sdaster ) : return fonction_c
- if (AsType(vale) == fonction_c) : return fonction_sdaster
- if (CORR_ACCE != None): return fonction_sdaster
- if (LISS_ENVELOP!= None): return nappe_sdaster
- if (PUISSANCE != None): return AsType(PUISSANCE[0]['FONCTION'])
- if (ABS != None): return fonction_sdaster
- raise AsException("type de concept resultat non prevu")
-
-CALC_FONCTION=MACRO(nom="CALC_FONCTION",op=calc_fonction_ops,sd_prod=calc_fonction_prod
- ,fr="Effectue des opérations mathématiques sur des concepts de type fonction",
- reentrant='n',
- UIinfo={"groupes":("Fonction",)},
- regles=(UN_PARMI('DERIVE','INTEGRE','SPEC_OSCI','COMB','COMB_C','ENVELOPPE',
- 'COMPOSE','EXTRACTION','ASSE','FFT','CORR_ACCE', 'PUISSANCE',
- 'LISS_ENVELOP','INVERSE','ABS'),),
- FFT =FACT(statut='f',fr="Transformée de Fourier ou de son inverse",
- FONCTION =SIMP(statut='o',typ=(fonction_sdaster,fonction_c) ),
- METHODE =SIMP(statut='f',typ='TXM',defaut="PROL_ZERO",into=("PROL_ZERO","TRONCATURE") ),
- b_syme =BLOC ( condition = " AsType(FONCTION)==fonction_c ",
- SYME =SIMP(statut='f',typ='TXM',into=('OUI','NON'),defaut='OUI' ),
- ),
- ),
- DERIVE =FACT(statut='f',fr="Dérivée d une fonction",
- METHODE =SIMP(statut='f',typ='TXM',defaut="DIFF_CENTREE",into=("DIFF_CENTREE",) ),
- FONCTION =SIMP(statut='o',typ=fonction_sdaster ),
- ),
- INTEGRE =FACT(statut='f',fr="Intégrale d'une fonction",
- METHODE =SIMP(statut='f',typ='TXM',defaut="TRAPEZE",into=("SIMPSON","TRAPEZE") ),
- FONCTION =SIMP(statut='o',typ=fonction_sdaster),
- COEF =SIMP(statut='f',typ='R',defaut= 0.E+0,fr="Valeur de la constante d intégration" ),
- ),
- LISS_ENVELOP = FACT(statut='f',fr="Lissage d une enveloppe",
- NAPPE =SIMP(statut='o',typ=nappe_sdaster ),
- FREQ_MIN =SIMP(statut='f',typ='R',defaut =0.2),
- FREQ_MAX =SIMP(statut='f',typ='R',defaut =35.5),
- ELARG =SIMP(statut='f',typ='R',defaut =0.1 ),
- TOLE_LISS =SIMP(statut='f',typ='R',defaut =0.25 ),
- ),
- SPEC_OSCI =FACT(statut='f',fr="Spectre d'oscillateur",
- METHODE =SIMP(statut='f',typ='TXM',defaut="NIGAM",into=("NIGAM",) ),
- FONCTION =SIMP(statut='o',typ=fonction_sdaster ),
- AMOR_REDUIT =SIMP(statut='f',typ='R',max='**'),
- LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster ),
- FREQ =SIMP(statut='f',typ='R',max='**'),
- NORME =SIMP(statut='o',typ='R',defaut= 9.81E+0,fr="Valeur de la norme du spectre d oscillateur" ),
- NATURE =SIMP(statut='f',typ='TXM',defaut="ACCE",into=("DEPL","VITE","ACCE") ),
- NATURE_FONC =SIMP(statut='f',typ='TXM',defaut="ACCE",into=("DEPL","VITE","ACCE") ),
- ),
- ABS =FACT(statut='f',fr="Valeur absolue d'une fonction",
- FONCTION =SIMP(statut='o',typ=fonction_sdaster,),
- ),
- COMB =FACT(statut='f',max='**',fr="Combinaison linéaire réelle de fonctions",
- FONCTION =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster) ),
- COEF =SIMP(statut='o',typ='R',fr="Coefficient réel de la combinaison linéaire associée à la fonction" ),
- ),
- COMB_C =FACT(statut='f',max='**',fr="Combinaison linéaire complexe de fonctions",
- regles=(UN_PARMI('COEF_R','COEF_C'),),
- FONCTION =SIMP(statut='o',typ=(fonction_sdaster,fonction_c,nappe_sdaster) ),
- COEF_R =SIMP(statut='f',typ='R',fr="Coefficient réel de la combinaison linéaire associée à la fonction" ),
- COEF_C =SIMP(statut='f',typ='C',fr="Coefficient complexe de la combinaison linéaire associée à la fonction" ),
- ),
- b_comb =BLOC ( condition = " (COMB != None) or (COMB_C != None)",
- LIST_PARA =SIMP(statut='f',typ=listr8_sdaster ),
- ),
- COMPOSE =FACT(statut='f',fr="Composition de deux fonctions FONC_RESU(FONC_PARA)",
- FONC_RESU =SIMP(statut='o',typ=fonction_sdaster),
- FONC_PARA =SIMP(statut='o',typ=fonction_sdaster),
- ),
- EXTRACTION =FACT(statut='f',fr="Extraction sur une fonction complexe",
- FONCTION =SIMP(statut='o',typ=fonction_c),
- PARTIE =SIMP(statut='o',typ='TXM',into=("REEL","IMAG","MODULE","PHASE"),fr="Partie à extraire"),
- ),
- ENVELOPPE =FACT(statut='f',fr="Enveloppe d une famille de fonctions",
- FONCTION =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster),max='**' ),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="SUP",into=("SUP","INF"),fr="Type de l enveloppe" ),
- ),
- ASSE =FACT(statut='f',fr="Concatenation de fonctions",
- FONCTION =SIMP(statut='o',typ=fonction_sdaster,min=2,max=2 ),
- SURCHARGE =SIMP(statut='f',typ='TXM',defaut="DROITE",into=("DROITE","GAUCHE")),
- ),
- CORR_ACCE =FACT(statut='f',fr="Correction d un accelerogramme reel",
- CORR_DEPL =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
- FONCTION =SIMP(statut='o',typ=fonction_sdaster ),
- ),
- PUISSANCE =FACT(statut='f',fr="Fonction élevée à une puissance",
- FONCTION =SIMP(statut='o', typ=(fonction_sdaster,nappe_sdaster) ),
- EXPOSANT =SIMP(statut='f', typ='I', defaut=1 ),
- ),
- INVERSE =FACT(statut='f',fr="Inverse d'une fonction",
- FONCTION =SIMP(statut='o', typ=fonction_sdaster),
- ),
- NOM_PARA =SIMP(statut='f',typ='TXM',into=C_PARA_FONCTION() ),
- NOM_RESU =SIMP(statut='f',typ='TXM' ),
- INTERPOL =SIMP(statut='f',typ='TXM',max=2,into=("NON","LIN","LOG") ),
- PROL_DROITE =SIMP(statut='f',typ='TXM',into=("CONSTANT","LINEAIRE","EXCLU") ),
- PROL_GAUCHE =SIMP(statut='f',typ='TXM',into=("CONSTANT","LINEAIRE","EXCLU") ),
- NOM_PARA_FONC =SIMP(statut='f',typ='TXM',into=C_PARA_FONCTION() ),
- INTERPOL_FONC =SIMP(statut='f',typ='TXM',max=2,into=("NON","LIN","LOG") ),
- PROL_DROITE_FONC=SIMP(statut='f',typ='TXM',into=("CONSTANT","LINEAIRE","EXCLU") ),
- PROL_GAUCHE_FONC=SIMP(statut='f',typ='TXM',into=("CONSTANT","LINEAIRE","EXCLU") ),
- INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
-)
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-CALC_FORC_AJOU=OPER(nom="CALC_FORC_AJOU",op=199,sd_prod=vect_asse_gene_r,
- fr="Calculer l'effet de surpression hydrodynamique due au mouvement d'entrainement de la structure"
- +" en analyse sismique",
- reentrant ='n',
- UIinfo={"groupes":("Matrices/vecteurs",)},
-
- regles=(EXCLUS('MODE_MECA','MODELE_GENE'),
- PRESENT_PRESENT( 'MODELE_GENE','NUME_DDL_GENE'),
- UN_PARMI('MONO_APPUI', 'NOEUD','GROUP_NO'),
- UN_PARMI('MONO_APPUI','MODE_STAT')),
-
- MODELE_FLUIDE =SIMP(statut='o',typ=modele_sdaster ),
- MODELE_INTERFACE=SIMP(statut='o',typ=modele_sdaster ),
- CHAM_MATER =SIMP(statut='o',typ=cham_mater ),
- CHARGE =SIMP(statut='o',typ=char_ther ),
- MODE_MECA =SIMP(statut='f',typ=mode_meca ),
- MODELE_GENE =SIMP(statut='f',typ=modele_gene ),
- NUME_DDL_GENE =SIMP(statut='f',typ=nume_ddl_gene ),
- DIST_REFE =SIMP(statut='f',typ='R',defaut= 1.E-2 ),
- AVEC_MODE_STAT =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
- NUME_MODE_MECA =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
- POTENTIEL =SIMP(statut='f',typ=evol_ther ),
- NOEUD_DOUBLE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
-
- DIRECTION =SIMP(statut='o',typ='R',max=3),
- MONO_APPUI =SIMP(statut='f',typ='TXM',into=("OUI",),),
- NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- MODE_STAT =SIMP(statut='f',typ=(mode_stat_depl,mode_stat_acce,mode_stat_forc,),),
-
- INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2 ) ),
-
- SOLVEUR =FACT(statut='d',
- METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC") ),
- b_mult_front = BLOC ( condition = "METHODE == 'MULT_FRONT' ",fr="Paramètres de la méthode multi frontale",
- RENUM =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ),
- ),
- b_ldlt =BLOC( condition = "METHODE == 'LDLT' ",fr="Paramètres de la méthode LDLT",
- RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("RCMK","SANS") ),
- ),
- b_ldlt_mult =BLOC( condition = "METHODE == 'LDLT' or METHODE == 'MULT_FRONT' ",
- fr="Paramètres relatifs à la non iversibilité de la matrice à factorise",
- NPREC =SIMP(statut='f',typ='I',defaut= 8 ),
- STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
- ),
- b_gcpc =BLOC (condition = "METHODE == 'GCPC' ", fr="Paramètres de la méthode du gradient conjugué",
- PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC",),defaut="LDLT_INC" ),
- NIVE_REMPLISSAGE=SIMP(statut='f',typ='I',defaut=0),
- RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ),
- RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ),
- NMAX_ITER =SIMP(statut='f',typ='I',defaut= 0 ),
- ),
- ),
-
- ) ;
-#& MODIF COMMANDE DATE 03/10/2005 AUTEUR GALENNE E.GALENNE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-CALC_G_LOCAL_T=OPER(nom="CALC_G_LOCAL_T",op=77,sd_prod=tabl_calc_g_loca,
- fr="Calculer le taux de restitution d'énergie local et sous certaines conditions"
- +" les facteurs d'intensité de contraintes en 3D par la méthode théta",
- UIinfo={"groupes":("Post traitements",)},reentrant='n',
- MODELE =SIMP(statut='f',typ=modele_sdaster),
- CHAM_MATER =SIMP(statut='f',typ=cham_mater),
- regles=(UN_PARMI('RESULTAT','DEPL'),
- PRESENT_PRESENT('VITE','ACCE'),
- UN_PARMI('R_INF','R_INF_FO'),
- PRESENT_PRESENT('R_INF','R_SUP'),
- PRESENT_PRESENT('R_INF_FO','R_SUP_FO'), ),
- FOND_FISS =SIMP(statut='f',typ=fond_fiss),
- DEPL =SIMP(statut='f',typ=cham_no_depl_r),
- VITE =SIMP(statut='f',typ=cham_no_depl_r),
- ACCE =SIMP(statut='f',typ=cham_no_depl_r),
- RESULTAT =SIMP(statut='f',typ=(evol_elas,evol_noli,dyna_trans,mode_meca),),
- b_extrac =BLOC(condition="RESULTAT != None",fr="extraction d un champ",
- regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','INST','LIST_INST',
- 'TOUT_MODE','NUME_MODE','LIST_MODE','FREQ','LIST_FREQ',),),
- TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
- LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster),
- INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
- LIST_INST =SIMP(statut='f',typ=listr8_sdaster),
- TOUT_MODE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- NUME_MODE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
- LIST_MODE =SIMP(statut='f',typ=listis_sdaster),
- LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster),
- FREQ =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
-
- b_acce_reel =BLOC(condition="(INST != None)or(LIST_INST != None)or(FREQ != None)or(LIST_FREQ != None)",
- PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-6),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
- ),
- ),
- EXCIT =FACT(statut='f',max='**',
- CHARGE =SIMP(statut='o',typ=(char_meca,char_cine_meca)),
- FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- TYPE_CHARGE =SIMP(statut='f',typ='TXM',defaut="FIXE",into=("FIXE",) ),
- ),
- SYME_CHAR =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SYME","ANTI","SANS") ),
-
- COMP_ELAS =FACT(statut='f',
- RELATION =SIMP(statut='f',typ='TXM',defaut="ELAS",
- into=("ELAS","ELAS_VMIS_LINE","ELAS_VMIS_TRAC") ),
- ELAS =SIMP(statut='f',typ='I',defaut=1,into=(1,) ),
- ELAS_VMIS_LINE =SIMP(statut='f',typ='I',defaut=1,into=(1,) ),
- ELAS_VMIS_TRAC =SIMP(statut='f',typ='I',defaut=1,into=(1,) ),
- DEFORMATION =SIMP(statut='f',typ='TXM',defaut="PETIT",into=("PETIT","GREEN") ),
- regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**'),
- ),
-
- COMP_INCR =FACT(statut='f',
- RELATION =SIMP(statut='f',typ='TXM',defaut="ELAS",
- into=("ELAS","VMIS_ISOT_TRAC","VMIS_ISOT_LINE","VMIS_CINE_LINE") ),
- ELAS =SIMP(statut='f',typ='I',defaut=1,into=(1,) ),
- VMIS_ISOT_TRAC =SIMP(statut='f',typ='I',defaut=2,into=(2,) ),
- VMIS_ISOT_LINE =SIMP(statut='f',typ='I',defaut=2,into=(2,) ),
- DEFORMATION =SIMP(statut='f',typ='TXM',defaut="PETIT",into=("PETIT","PETIT_REAC") ),
- regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**'),
- ),
-
- ETAT_INIT =FACT(statut='f',
- SIGM =SIMP(statut='f',typ=cham_elem_sief_r),
- DEPL =SIMP(statut='f',typ=cham_no_depl_r),
- ),
-
- OPTION =SIMP(statut='f',typ='TXM',defaut="CALC_G",
- into=("CALC_G","CALC_K_G","CALC_G_LGLO","G_BILINEAIRE","CALC_G_MAX","K_G_MODA") ),
- b_g =BLOC(condition="OPTION=='CALC_G'",
- LISSAGE_THETA =SIMP(statut='f',typ='TXM',defaut="LEGENDRE",into=("LEGENDRE","LAGRANGE") ),
- LISSAGE_G =SIMP(statut='f',typ='TXM',defaut="LEGENDRE",into=("LEGENDRE","LAGRANGE","LAGRANGE_NO_NO",) ),
- ),
- b_g_lglo =BLOC(condition="OPTION=='CALC_G_LGLO'",
- PROPAGATION =SIMP(statut='o',typ='R'),
- THETA =SIMP(statut='o',typ=theta_geom),
- DIRE_THETA =SIMP(statut='f',typ=cham_no_depl_r),
- LISSAGE_THETA =SIMP(statut='f',typ='TXM',defaut="LEGENDRE",into=("LEGENDRE","LAGRANGE") ),
- LISSAGE_G =SIMP(statut='f',typ='TXM',defaut="LEGENDRE",into=("LEGENDRE","LAGRANGE","LAGRANGE_NO_NO",) ),
- ),
- b_g_bilin =BLOC(condition="OPTION=='G_BILINEAIRE'",
- LISSAGE_THETA =SIMP(statut='f',typ='TXM',defaut="LEGENDRE",into=("LEGENDRE","LAGRANGE") ),
- LISSAGE_G =SIMP(statut='f',typ='TXM',defaut="LEGENDRE",into=("LEGENDRE","LAGRANGE") ),
- ),
- b_k_g =BLOC(condition="OPTION=='CALC_K_G'",
- LISSAGE_THETA =SIMP(statut='f',typ='TXM',defaut="LEGENDRE",into=("LEGENDRE","LAGRANGE") ),
- LISSAGE_G =SIMP(statut='f',typ='TXM',defaut="LEGENDRE",into=("LEGENDRE","LAGRANGE") ),
- FISSURE =SIMP(statut='o',typ=fiss_xfem,max=1),
- ),
- b_calc_g_max =BLOC(condition="OPTION=='CALC_G_MAX'",
- BORNES =FACT(statut='o',max='**',
- NUME_ORDRE =SIMP(statut='o',typ='I'),
- VALE_MIN =SIMP(statut='o',typ='R'),
- VALE_MAX =SIMP(statut='o',typ='R'),
- ),
- LISSAGE_THETA =SIMP(statut='f',typ='TXM',defaut="LEGENDRE",into=("LEGENDRE","LAGRANGE") ),
- LISSAGE_G =SIMP(statut='f',typ='TXM',defaut="LEGENDRE",into=("LEGENDRE","LAGRANGE") ),
- ),
- b_k_g_moda =BLOC(condition="OPTION=='K_G_MODA'",
- LISSAGE_THETA =SIMP(statut='f',typ='TXM',defaut="LAGRANGE",into=("LEGENDRE","LAGRANGE") ),
- LISSAGE_G =SIMP(statut='f',typ='TXM',defaut="LAGRANGE",into=("LEGENDRE","LAGRANGE") ),
- FISSURE =SIMP(statut='o',typ=fiss_xfem,max=1),
- ),
-
- DEGRE =SIMP(statut='f',typ='I',defaut=5,into=(0,1,2,3,4,5,6,7) ),
-
- R_INF =SIMP(statut='f',typ='R'),
- R_SUP =SIMP(statut='f',typ='R'),
- R_INF_FO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- R_SUP_FO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
-
- TITRE =SIMP(statut='f',typ='TXM',max='**'),
- INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
-) ;
-#& MODIF COMMANDE DATE 03/10/2005 AUTEUR GALENNE E.GALENNE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-CALC_G_THETA_T=OPER(nom="CALC_G_THETA_T",op=53,sd_prod=tabl_calc_g_th,
- fr="Calcul du taux de restitution d'énergie par la méthode theta en thermo-élasticité en 2D ou en 3D"
- +" et les facteurs d'intensité de contraintes en 2D.",
- reentrant='f',
- UIinfo={"groupes":("Post traitements",)},
- regles=(UN_PARMI('RESULTAT','DEPL'),
- PRESENT_PRESENT('VITE','ACCE'),
- EXCLUS('COMP_ELAS','COMP_INCR'),),
- MODELE =SIMP(statut='f',typ=modele_sdaster),
- CHAM_MATER =SIMP(statut='f',typ=cham_mater),
- THETA =SIMP(statut='o',typ=(theta_geom,cham_no_depl_r),),
- DEPL =SIMP(statut='f',typ=cham_no_depl_r),
- VITE =SIMP(statut='f',typ=cham_no_depl_r),
- ACCE =SIMP(statut='f',typ=cham_no_depl_r),
- RESULTAT =SIMP(statut='f',typ=(evol_elas,evol_noli,dyna_trans,mode_meca),),
-
- b_extrac =BLOC(condition="RESULTAT != None",fr="extraction d un champ",
- regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','INST','LIST_INST',
- 'TOUT_MODE','NUME_MODE','LIST_MODE','FREQ','LIST_FREQ',),),
- TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
- LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster),
- INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
- LIST_INST =SIMP(statut='f',typ=listr8_sdaster),
- TOUT_MODE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- NUME_MODE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
- LIST_MODE =SIMP(statut='f',typ=listis_sdaster),
- LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster),
- FREQ =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
-
- b_acce_reel =BLOC(condition="(INST != None)or(LIST_INST != None)or(FREQ != None)or(LIST_FREQ != None)",
- PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-6),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
- ),
- ),
- EXCIT =FACT(statut='f',max='**',
- CHARGE =SIMP(statut='o',typ=(char_meca,char_cine_meca)),
- FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- TYPE_CHARGE =SIMP(statut='f',typ='TXM',defaut="FIXE",into=("FIXE",) ),
- ),
- SYME_CHAR =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SYME","ANTI","SANS") ),
-
- COMP_ELAS =FACT(statut='f',
- RELATION =SIMP(statut='f',typ='TXM',defaut="ELAS",
- into=("ELAS","ELAS_VMIS_LINE","ELAS_VMIS_TRAC") ),
- ELAS =SIMP(statut='f',typ='I',defaut=1,into=(1,) ),
- ELAS_VMIS_LINE =SIMP(statut='f',typ='I',defaut=1,into=(1,) ),
- ELAS_VMIS_TRAC =SIMP(statut='f',typ='I',defaut=1,into=(1,) ),
- DEFORMATION =SIMP(statut='f',typ='TXM',defaut="PETIT",into=("PETIT","GREEN") ),
- regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**'),
- ),
- COMP_INCR =FACT(statut='f',
- RELATION =SIMP(statut='f',typ='TXM',defaut="ELAS",
- into=("ELAS","VMIS_ISOT_TRAC","VMIS_ISOT_LINE","VMIS_CINE_LINE") ),
- ELAS =SIMP(statut='f',typ='I',defaut=1,into=(1,) ),
- VMIS_ISOT_TRAC =SIMP(statut='f',typ='I',defaut=2,into=(2,) ),
- VMIS_ISOT_LINE =SIMP(statut='f',typ='I',defaut=2,into=(2,) ),
- DEFORMATION =SIMP(statut='f',typ='TXM',defaut="PETIT",into=("PETIT","PETIT_REAC") ),
- regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**'),
- ),
- ETAT_INIT =FACT(statut='f',
- SIGM =SIMP(statut='f',typ=cham_elem_sief_r),
- DEPL =SIMP(statut='f',typ=cham_no_depl_r),
- ),
- OPTION =SIMP(statut='f',typ='TXM',defaut="CALC_G",
- into=("CALC_G","CALC_G_LAGR","CALC_K_G","G_BILINEAIRE","CALC_G_MAX","K_G_MODA") ),
- b_calc_g_max =BLOC(condition="OPTION=='CALC_G_MAX'",
- BORNES =FACT(statut='o',max='**',
- NUME_ORDRE =SIMP(statut='o',typ='I'),
- VALE_MIN =SIMP(statut='o',typ='R'),
- VALE_MAX =SIMP(statut='o',typ='R'),
- ),
- ),
- b_calc_k_g =BLOC(condition="OPTION=='CALC_K_G'",
- FOND_FISS =SIMP(statut='o',typ=fond_fiss),
- ),
- b_calc_g_lagr =BLOC(condition="OPTION=='CALC_G_LAGR'",
- PROPAGATION =SIMP(statut='o',typ='R'),
- ),
- b_k_g_moda =BLOC(condition="OPTION=='K_G_MODA'",
- FOND_FISS =SIMP(statut='o',typ=fond_fiss,max=1),
- ),
-
- SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**',
- fr="Liste des paramètres de sensibilité.",
- ang="List of sensitivity parameters"),
-
- TITRE =SIMP(statut='f',typ='TXM',max='**'),
- INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-CALC_INTE_SPEC=OPER(nom="CALC_INTE_SPEC",op= 120,sd_prod=tabl_intsp,
- fr="Calcul d'une matrice interspectrale à partir d'une fonction du temps",
- reentrant='n',
- UIinfo={"groupes":("Fonction",)},
- INST_INIT =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- INST_FIN =SIMP(statut='o',typ='R' ),
- DUREE_ANALYSE =SIMP(statut='f',typ='R' ),
- DUREE_DECALAGE =SIMP(statut='f',typ='R' ),
- NB_POIN =SIMP(statut='o',typ='I' ),
- FONCTION =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule),max='**' ),
- TITRE =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'),
- INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-CALC_MATR_AJOU=OPER(nom="CALC_MATR_AJOU",op= 152,sd_prod=matr_asse_gene_r,
- fr="Calcul des matrices de masse, d'amortissement ou de rigidité ajoutés",
- reentrant='n',
- UIinfo={"groupes":("Matrices/vecteurs",)},
- regles=(EXCLUS('MODE_MECA','CHAM_NO','MODELE_GENE'),
- PRESENT_ABSENT('NUME_DDL_GENE','CHAM_NO'),
- PRESENT_PRESENT('MODELE_GENE','NUME_DDL_GENE'),),
- MODELE_FLUIDE =SIMP(statut='o',typ=modele_sdaster ),
- MODELE_INTERFACE=SIMP(statut='o',typ=modele_sdaster ),
- CHAM_MATER =SIMP(statut='o',typ=cham_mater ),
- CHARGE =SIMP(statut='o',typ=char_ther ),
- MODE_MECA =SIMP(statut='f',typ=mode_meca ),
- CHAM_NO =SIMP(statut='f',typ=cham_no_depl_r ),
- MODELE_GENE =SIMP(statut='f',typ=modele_gene ),
- NUME_DDL_GENE =SIMP(statut='f',typ=nume_ddl_gene ),
- DIST_REFE =SIMP(statut='f',typ='R',defaut= 1.E-2 ),
- AVEC_MODE_STAT =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
- NUME_MODE_MECA =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
- OPTION =SIMP(statut='o',typ='TXM',into=("MASS_AJOU","AMOR_AJOU","RIGI_AJOU") ),
- POTENTIEL =SIMP(statut='f',typ=evol_ther ),
- NOEUD_DOUBLE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
- INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2 ) ),
-
- SOLVEUR =FACT(statut='d',
- METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC") ),
- b_mult_front = BLOC ( condition = "METHODE == 'MULT_FRONT' ",fr="Paramètres de la méthode multi frontale",
- RENUM =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ),
- ),
- b_ldlt =BLOC( condition = "METHODE == 'LDLT' ",fr="Paramètres de la méthode LDLT",
- RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("RCMK","SANS") ),
- ),
- b_ldlt_mult =BLOC( condition = "METHODE == 'LDLT' or METHODE == 'MULT_FRONT' ",
- fr="Paramètres relatifs à la non iversibilité de la matrice à factorise",
- NPREC =SIMP(statut='f',typ='I',defaut= 8 ),
- STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
- ),
- b_gcpc =BLOC (condition = "METHODE == 'GCPC' ", fr="Paramètres de la méthode du gradient conjugué",
- PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC",),defaut="LDLT_INC" ),
- NIVE_REMPLISSAGE=SIMP(statut='f',typ='I',defaut=0),
- RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ),
- RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ),
- NMAX_ITER =SIMP(statut='f',typ='I',defaut= 0 ),
- ),
- ),
-) ;
-#& MODIF COMMANDE DATE 28/01/2005 AUTEUR VABHHTS J.PELLET
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE VABHHTS J.PELLET
-def calc_matr_elem_prod(OPTION,**args):
- if OPTION == "RIGI_MECA" : return matr_elem_depl_r
- if OPTION == "RIGI_FLUI_STRU" : return matr_elem_depl_r
- if OPTION == "RIGI_MECA_LAGR" : return matr_elem_depl_r
- if OPTION == "MASS_ID_MDEP_R" : return matr_elem_depl_r
- if OPTION == "MASS_ID_MDNS_R" : return matr_elem_depl_r
- if OPTION == "MASS_ID_MTEM_R" : return matr_elem_temp_r
- if OPTION == "MASS_ID_MTNS_R" : return matr_elem_temp_r
- if OPTION == "MASS_MECA" : return matr_elem_depl_r
- if OPTION == "MASS_FLUI_STRU" : return matr_elem_depl_r
- if OPTION == "RIGI_GEOM" : return matr_elem_depl_r
- if OPTION == "RIGI_ROTA" : return matr_elem_depl_r
- if OPTION == "AMOR_MECA" : return matr_elem_depl_r
- if OPTION == "IMPE_MECA" : return matr_elem_depl_r
- if OPTION == "ONDE_FLUI" : return matr_elem_depl_r
- if OPTION == "RIGI_MECA_HYST" : return matr_elem_depl_c
- if OPTION == "RIGI_THER" : return matr_elem_temp_r
- if OPTION == "MASS_THER" : return matr_elem_temp_r
- if OPTION == "MASS_MECA_DIAG" : return matr_elem_depl_r
- if OPTION == "RIGI_ACOU" : return matr_elem_pres_c
- if OPTION == "MASS_ACOU" : return matr_elem_pres_c
- if OPTION == "AMOR_ACOU" : return matr_elem_pres_c
- raise AsException("type de concept resultat non prevu")
-
-CALC_MATR_ELEM=OPER(nom="CALC_MATR_ELEM",op= 9,sd_prod=calc_matr_elem_prod
- ,fr="Calcul des matrices élémentaires",reentrant='n',
- UIinfo={"groupes":("Matrices/vecteurs",)},
-
- OPTION =SIMP(statut='o',typ='TXM',
- into=("RIGI_MECA","MASS_MECA","RIGI_GEOM",
- "AMOR_MECA","RIGI_THER","MASS_THER","IMPE_MECA",
- "ONDE_FLUI","MASS_FLUI_STRU","RIGI_FLUI_STRU",
- "RIGI_ROTA","MASS_MECA_DIAG","RIGI_ACOU",
- "MASS_ID_MDEP_R","MASS_ID_MDNS_R","MASS_ID_MTEM_R","MASS_ID_MTNS_R",
- "MASS_ACOU","AMOR_ACOU","RIGI_MECA_HYST",
- "RIGI_MECA_LAGR") ),
-
- # mots clés facultatifs que l'on a du mal à mettre dans les blocs
- # sans gener MACRO_MATR_ASSE :
- #------------------------------------------------------------------
- INST=SIMP(statut='f',typ='R',defaut= 0.E+0 ),
-
-
- b_rigi_meca = BLOC( condition = "OPTION=='RIGI_MECA'",
- regles=(AU_MOINS_UN('MODELE','CHARGE' ),),
- MODELE =SIMP(statut='f',typ=modele_sdaster ),
- b_modele =BLOC(condition = "MODELE != None",
- CHAM_MATER =SIMP(statut='f',typ=cham_mater ),
- CARA_ELEM =SIMP(statut='f',typ=cara_elem ),
- MODE_FOURIER =SIMP(statut='f',typ='I',defaut= 0 ),
- ),
- CHARGE =SIMP(statut='f',typ=char_meca,validators=NoRepeat(),max='**' ),
- ),
-
- b_rigi_meca_lagr =BLOC(condition = "OPTION=='RIGI_MECA_LAGR'",
- MODELE =SIMP(statut='o',typ=modele_sdaster ),
- CHAM_MATER =SIMP(statut='o',typ=cham_mater ),
- CHARGE =SIMP(statut='f',typ=char_meca,validators=NoRepeat(),max='**' ),
- THETA =SIMP(statut='o',typ=theta_geom ),
- PROPAGATION =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- ),
-
- b_mass_meca =BLOC(condition = "(OPTION=='MASS_MECA') or (OPTION=='MASS_MECA_DIAG')",
- regles=(AU_MOINS_UN('MODELE','CHARGE'),),
- MODELE =SIMP(statut='f',typ=modele_sdaster ),
- b_modele =BLOC(condition = "MODELE != None",
- CHAM_MATER =SIMP(statut='f',typ=cham_mater ),
- CARA_ELEM =SIMP(statut='f',typ=cara_elem ),
- ),
- CHARGE =SIMP(statut='f',typ=char_meca,validators=NoRepeat(),max='**'),
- ),
-
- b_mass_identite =BLOC(condition = "(OPTION in ('MASS_ID_MDEP_R','MASS_ID_MTEM_R','MASS_ID_MDNS_R','MASS_ID_MTNS_R')) ",
- MODELE =SIMP(statut='o',typ=modele_sdaster ),
- # j'ajoute ces 2 mot clés inutiles à cause de l'alarme pas assez subtile de MEDOME
- CHAM_MATER =SIMP(statut='f',typ=cham_mater ),
- CARA_ELEM =SIMP(statut='f',typ=cara_elem ),
- ),
-
- b_rigi_geom =BLOC(condition = "OPTION=='RIGI_GEOM'",
- MODELE =SIMP(statut='o',typ=modele_sdaster ),
- CARA_ELEM =SIMP(statut='f',typ=cara_elem ),
- SIEF_ELGA =SIMP(statut='o',typ=cham_elem_sief_r ),
- MODE_FOURIER =SIMP(statut='f',typ='I',defaut= 0 ),
- ),
-
- b_rigi_rota =BLOC(condition = "OPTION=='RIGI_ROTA'",
- MODELE =SIMP(statut='o',typ=modele_sdaster ),
- CHAM_MATER =SIMP(statut='o',typ=cham_mater ),
- CHARGE =SIMP(statut='o',typ=char_meca,validators=NoRepeat(),max='**' ),
- ),
-
- b_amor_meca =BLOC(condition = "OPTION=='AMOR_MECA'",
- regles=(AU_MOINS_UN('CARA_ELEM','RIGI_MECA'),
- ENSEMBLE('RIGI_MECA','MASS_MECA','CHAM_MATER'), ),
- MODELE =SIMP(statut='o',typ=modele_sdaster ),
- CARA_ELEM =SIMP(statut='f',typ=cara_elem ),
- CHAM_MATER =SIMP(statut='f',typ=cham_mater ),
- RIGI_MECA =SIMP(statut='f',typ=matr_elem_depl_r ),
- MASS_MECA =SIMP(statut='f',typ=matr_elem_depl_r ),
- CHARGE =SIMP(statut='f',typ=char_meca,validators=NoRepeat(),max='**'),
- ),
-
- b_rigi_meca_hyst =BLOC( condition = "OPTION=='RIGI_MECA_HYST'",
- MODELE =SIMP(statut='o',typ=modele_sdaster ),
- CHARGE =SIMP(statut='f',typ=char_meca ,validators=NoRepeat(),max='**' ),
- CHAM_MATER =SIMP(statut='f',typ=cham_mater ),
- CARA_ELEM =SIMP(statut='f',typ=cara_elem ),
- RIGI_MECA =SIMP(statut='o',typ=matr_elem_depl_r ),
- ),
-
- b_rigi_ther =BLOC(condition = "OPTION=='RIGI_THER'",
- regles=(AU_MOINS_UN('MODELE','CHARGE' ),),
- MODELE =SIMP(statut='f',typ=modele_sdaster ),
- b_modele =BLOC(condition = "MODELE != None",
- CHAM_MATER =SIMP(statut='o',typ=cham_mater ),
- CARA_ELEM =SIMP(statut='f',typ=cara_elem ),
- MODE_FOURIER =SIMP(statut='f',typ='I',defaut= 0 ),
- ),
- CHARGE =SIMP(statut='f',typ=char_ther,validators=NoRepeat(),max='**' ),
- ),
-
- b_mass_ther =BLOC(condition = "OPTION=='MASS_THER'",
- MODELE =SIMP(statut='o',typ=modele_sdaster ),
- CHAM_MATER =SIMP(statut='o',typ=cham_mater ),
- CARA_ELEM =SIMP(statut='f',typ=cara_elem ),
- CHARGE =SIMP(statut='f',typ=char_ther ,validators=NoRepeat(),max='**' ),
- ),
-
- b_rigi_acou =BLOC(condition = "OPTION=='RIGI_ACOU'",
- MODELE =SIMP(statut='o',typ=modele_sdaster ),
- CHAM_MATER =SIMP(statut='o',typ=cham_mater ),
- CHARGE =SIMP(statut='f',typ=char_acou ,validators=NoRepeat(),max='**' ),
- ),
-
- b_mass_acou =BLOC(condition = "(OPTION=='MASS_ACOU') or (OPTION=='AMOR_ACOU')",
- MODELE =SIMP(statut='o',typ=modele_sdaster ),
- CHAM_MATER =SIMP(statut='o',typ=cham_mater ),
- CHARGE =SIMP(statut='f',typ=char_acou ,validators=NoRepeat(),max='**' ),
- ),
-
- b_rigi_flui =BLOC(condition = "OPTION=='RIGI_FLUI_STRU'",
- MODELE =SIMP(statut='o',typ=modele_sdaster ),
- CARA_ELEM =SIMP(statut='o',typ=cara_elem ),
- CHAM_MATER =SIMP(statut='o',typ=cham_mater ),
- CHARGE =SIMP(statut='o',typ=char_meca ,validators=NoRepeat(),max='**' ),
- ),
-
- b_mass_flui =BLOC(condition = "OPTION=='MASS_FLUI_STRU'",
- MODELE =SIMP(statut='o',typ=modele_sdaster ),
- CARA_ELEM =SIMP(statut='o',typ=cara_elem ),
- CHAM_MATER =SIMP(statut='o',typ=cham_mater ),
- CHARGE =SIMP(statut='o',typ=char_meca ,validators=NoRepeat(),max='**'),
- ),
-
- b_impe_meca =BLOC(condition = "(OPTION=='IMPE_MECA') or (OPTION=='ONDE_FLUI')",
- MODELE =SIMP(statut='o',typ=modele_sdaster ),
- CHAM_MATER =SIMP(statut='o',typ=cham_mater ),
- CHARGE =SIMP(statut='o',typ=char_meca,validators=NoRepeat(),max='**' ),
- ),
-) ;
-#& MODIF COMMANDE DATE 24/10/2005 AUTEUR ADBHHVV V.CANO
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-CALC_META=OPER(nom="CALC_META",op=194,sd_prod=evol_ther,reentrant='o',
- UIinfo={"groupes":("Post traitements",)},
- fr="Calcule l'évolution métallurgique à partir du résultat d'un calcul thermique",
- MODELE =SIMP(statut='o',typ=modele_sdaster ),
- CHAM_MATER =SIMP(statut='o',typ=cham_mater ),
- RESULTAT =SIMP(statut='o',typ=evol_ther ),
- ETAT_INIT =FACT(statut='o',
- regles=(UN_PARMI('EVOL_THER', 'META_INIT_ELNO'),),
- EVOL_THER =SIMP(statut='f',typ=evol_ther ),
- META_INIT_ELNO =SIMP(statut='f',typ=carte_var2_r ),
- b_etat =BLOC(condition="EVOL_THER != None",
- regles=(UN_PARMI('NUME_INIT', 'INST_INIT',),),
- NUME_INIT =SIMP(statut='f',typ='I'),
- INST_INIT =SIMP(statut='f',typ='R'),
- b_inst =BLOC(condition="INST_INIT != None",
- PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") )
- ),
- ),
- ),
- COMP_INCR =FACT(statut='o',max='**',
- RELATION =SIMP(statut='o',typ='TXM',into=("ACIER","ZIRC",) ),
- ACIER =SIMP(statut='c',typ='I',defaut=7,into=(7,) ),
- ZIRC =SIMP(statut='c',typ='I',defaut=3,into=(3,) ),
- regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma),
- MAILLE =SIMP(statut='f',typ=ma),
- ),
- OPTION =SIMP(statut='f',typ='TXM'
- ,into=("META_ELNO_TEMP",) ),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE G8BHHXD X.DESROCHES
-def calc_no_prod(RESULTAT,**args):
- if AsType(RESULTAT) != None : return AsType(RESULTAT)
- raise AsException("type de concept resultat non prevu")
-
-CALC_NO=OPER(nom="CALC_NO",op= 106,sd_prod=calc_no_prod,reentrant='o',
- fr="Enrichir une SD Résultat par des champs aux noeuds calculés à partir de champs aux éléments évalués aux noeuds",
- UIinfo={"groupes":("Post traitements",)},
- RESULTAT =SIMP(statut='o',typ=(evol_elas,dyna_trans,dyna_harmo,acou_harmo,mode_meca,
- mode_acou,mode_stat,mode_stat_depl,mode_stat_acce,
- mode_stat_forc,evol_ther,evol_noli,base_modale,
- mult_elas,fourier_elas,mode_flamb ) ),
- SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**',
- fr="Liste des paramètres de sensibilité.",
- ang="List of sensitivity parameters"),
-
- regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','FREQ','NUME_MODE',
- 'NOEUD_CMP','LIST_INST','LIST_FREQ','LIST_ORDRE','NOM_CAS'),),
- TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
- NUME_MODE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
- NOEUD_CMP =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'),
- NOM_CAS =SIMP(statut='f',typ='TXM' ),
- INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
- FREQ =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
- LIST_INST =SIMP(statut='f',typ=listr8_sdaster),
- LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster),
- PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3 ),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
- LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster),
-
- OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',
- into=("FORC_NODA","REAC_NODA",
- "DCHA_NOEU_SIGM",
- "DEGE_NOEU_DEPL",
- "DETE_NOEU_DLTE",
- "DEDE_NOEU_DLDE",
- "DESI_NOEU_DLSI",
- "DURT_NOEU_META",
- "EFGE_NOEU_CART","EFGE_NOEU_DEPL",
- "ENDO_NOEU_SINO",
- "ENEL_NOEU_ELGA",
- "EPMG_NOEU_DEPL",
- "EPSA_NOEU",
- "EPSG_NOEU_DEPL",
- "EPSI_NOEU_DEPL",
- "EPSP_NOEU" ,"EPSP_NOEU_ZAC",
- "EQUI_NOEU_EPME","EQUI_NOEU_EPSI","EQUI_NOEU_SIGM",
- "ERRE_NOEU_ELGA",
- "FLUX_NOEU_TEMP",
- "HYDR_NOEU_ELGA",
- "INTE_NOEU_ACTI","INTE_NOEU_REAC",
- "META_NOEU_TEMP",
- "PMPB_NOEU_SIEF",
- "PRES_NOEU_DBEL","PRES_NOEU_IMAG","PRES_NOEU_REEL",
- "RADI_NOEU_SIGM",
- "SIEF_NOEU" ,"SIEF_NOEU_ELGA",
- "SIGM_NOEU_CART","SIGM_NOEU_COQU","SIGM_NOEU_DEPL",
- "SIGM_NOEU_SIEF","SIGM_NOEU_ZAC",
- "SIPO_NOEU_DEPL","SIPO_NOEU_SIEF",
- "SIRE_NOEU_DEPL",
- "VARI_NOEU","EXTR_NOEU_VARI","VARI_NOEU_ELGA",) ),
-
- b_forc_reac =BLOC(condition = """(OPTION == 'FORC_NODA') or (type(OPTION) == type(()) and 'FORC_NODA' in OPTION) or\
- (OPTION == 'REAC_NODA') or (type(OPTION) == type(()) and 'REAC_NODA' in OPTION)""",
- MODELE =SIMP(statut='f',typ=modele_sdaster),
- ),
-
- CHAM_MATER =SIMP(statut='f',typ=cham_mater),
- CARA_ELEM =SIMP(statut='f',typ=cara_elem),
- EXCIT =FACT(statut='f',max='**',
- CHARGE =SIMP(statut='f',typ=(char_meca,char_ther,char_acou) ),
- FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- TYPE_CHARGE =SIMP(statut='f',typ='TXM',defaut="FIXE_CSTE",
- into=("FIXE_CSTE","FIXE_PILO","SUIV") ),
- ),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**'),
- GROUP_MA_RESU =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE_RESU =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**'),
- GROUP_NO_RESU =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- NOEUD_RESU =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**'),
-) ;
-#& MODIF COMMANDE DATE 07/10/2005 AUTEUR CIBHHPD L.SALMONA
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2003 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE ASSIRE A.ASSIRE
-
-from Macro.calc_precont_ops import calc_precont_ops
-
-
-# ===========================================================================
-# CATALOGUE DE LA MACRO "CALC_PRECONT"
-# -----------------------------------------
-# USAGE :
-#
-#
-# ===========================================================================
-
-CALC_PRECONT=MACRO(nom="CALC_PRECONT",op=calc_precont_ops,sd_prod=evol_noli,
- fr="Imposer la tension définie par le BPEL dans les cables",
- reentrant='f',UIinfo={"groupe":("Modélisation",)},
- reuse =SIMP(statut='f',typ='evol_noli'),
- MODELE =SIMP(statut='o',typ=modele_sdaster),
- CHAM_MATER =SIMP(statut='o',typ=cham_mater),
- CARA_ELEM =SIMP(statut='o',typ=cara_elem),
- CABLE_BP =SIMP(statut='o',typ=cabl_precont,validators=NoRepeat(),max='**'),
- CABLE_BP_INACTIF =SIMP(statut='f',typ=cabl_precont,validators=NoRepeat(),max='**'),
- INCREMENT =FACT(statut='o',
- LIST_INST =SIMP(statut='o',typ=listr8_sdaster),
- INST_INIT =SIMP(statut='f',typ='R'),
- INST_FIN =SIMP(statut='f',typ='R'),
- PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3 ),
- SUBD_PAS =SIMP(statut='f',typ='I',defaut=1),
- SUBD_PAS_MINI =SIMP(statut='f',typ='R'),
- COEF_SUBD_PAS_1 =SIMP(statut='f',typ='R',defaut= 1.0E+0),
- ),
-
- NEWTON =FACT(statut='d',
- REAC_INCR =SIMP(statut='f',typ='I',defaut= 1 ),
- PREDICTION =SIMP(statut='f',typ='TXM',into=("DEPL_CALCULE","TANGENTE","ELASTIQUE","EXTRAPOL") ),
- MATRICE =SIMP(statut='f',typ='TXM',defaut="TANGENTE",into=("TANGENTE","ELASTIQUE") ),
- PAS_MINI_ELAS =SIMP(statut='f',typ='R',defaut=0.0E+0),
- REAC_ITER =SIMP(statut='f',typ='I',defaut=0),
- EVOL_NOLI =SIMP(statut='f',typ=evol_noli),
- ),
- RECH_LINEAIRE =FACT(statut='f',
- RESI_LINE_RELA =SIMP(statut='f',typ='R',defaut= 1.0E-1 ),
- ITER_LINE_MAXI =SIMP(statut='f',typ='I',defaut= 3),
- ),
- CONVERGENCE =FACT(statut='d',
- RESI_GLOB_MAXI =SIMP(statut='f',typ='R'),
- RESI_GLOB_RELA =SIMP(statut='f',typ='R'),
- ITER_GLOB_MAXI =SIMP(statut='f',typ='I',defaut=10),
- ITER_GLOB_ELAS =SIMP(statut='f',typ='I',defaut=25),
- ARRET =SIMP(statut='f',typ='TXM',defaut="OUI"),
- ),
- ETAT_INIT =FACT(statut='f',
- regles=(AU_MOINS_UN('EVOL_NOLI','DEPL','SIGM','VARI','VARI_NON_LOCAL',),
- EXCLUS('EVOL_NOLI','DEPL',),
- EXCLUS('EVOL_NOLI','SIGM',),
- EXCLUS('EVOL_NOLI','VARI',),
- EXCLUS('EVOL_NOLI','VARI_NON_LOCAL',),
- EXCLUS('NUME_ORDRE','INST'), ),
- DEPL =SIMP(statut='f',typ=cham_no_depl_r),
- SIGM =SIMP(statut='f',typ=(cham_elem_sief_r,carte_sief_r)),
- VARI =SIMP(statut='f',typ=cham_elem_vari_r),
- VARI_NON_LOCAL =SIMP(statut='f',typ=cham_no_vanl_r),
- EVOL_NOLI =SIMP(statut='f',typ=evol_noli),
- NUME_ORDRE =SIMP(statut='f',typ='I'),
- INST =SIMP(statut='f',typ='R'),
- PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3 ),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
- NUME_DIDI =SIMP(statut='f',typ='I'),
- INST_ETAT_INIT =SIMP(statut='f',typ='R'),
- ),
- SOLVEUR =FACT(statut='d',
- METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC") ),
- b_mult_front =BLOC(condition = "METHODE == 'MULT_FRONT' ",fr="Paramètres de la méthode multi frontale",
- RENUM =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ),
- ),
- b_ldlt =BLOC(condition = "METHODE == 'LDLT' ",fr="Paramètres de la méthode LDLT",
- RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("RCMK","SANS") ),
- ),
- b_ldlt_mult =BLOC(condition = "METHODE == 'LDLT' or METHODE == 'MULT_FRONT' ",
- fr="Paramètres relatifs à la non inversibilité de la matrice à factorise",
- NPREC =SIMP(statut='f',typ='I',defaut= 8 ),
- STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON","DECOUPE") ),
- ),
- b_gcpc =BLOC(condition = "METHODE == 'GCPC' ", fr="Paramètres de la méthode du gradient conjugué",
- PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC",),defaut="LDLT_INC" ),
- NIVE_REMPLISSAGE=SIMP(statut='f',typ='I',defaut= 0 ),
- RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ),
- RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ),
- NMAX_ITER =SIMP(statut='f',typ='I',defaut= 0 ),
- ),
- SYME =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
- ),
- SOLV_NON_LOCAL =FACT(statut='f',
- METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC") ),
- b_mult_front =BLOC(condition = "METHODE == 'MULT_FRONT' ",fr="Paramètres de la méthode multi frontale",
- RENUM =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ),
- ),
- b_ldlt =BLOC(condition = "METHODE == 'LDLT' ",fr="Paramètres de la méthode LDLT",
- RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("RCMK","SANS") ),
- ),
- b_ldlt_mult =BLOC(condition = "METHODE == 'LDLT' or METHODE == 'MULT_FRONT' ",
- fr="Paramètres relatifs à la non inversibilité de la matrice à factorise",
- NPREC =SIMP(statut='f',typ='I',defaut= 8 ),
- STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
- ),
- b_gcpc =BLOC(condition = "METHODE == 'GCPC' ", fr="Paramètres de la méthode du gradient conjugué",
- PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC",),defaut="LDLT_INC" ),
- NIVE_REMPLISSAGE=SIMP(statut='f',typ='I',defaut= 0 ),
- RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ),
- NMAX_ITER =SIMP(statut='f',typ='I',defaut= 0 ),
- ),
- EPS =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- ),
- LAGR_NON_LOCAL =FACT(statut='f',
- ITER_DUAL_MAXI =SIMP(statut='f',typ='I',defaut= 50),
- RESI_DUAL_ABSO =SIMP(statut='o',typ='R'),
- RESI_PRIM_ABSO =SIMP(statut='o',typ='R'),
- R =SIMP(statut='f',typ='R',defaut= 1000.),
- ITER_PRIM_MAXI =SIMP(statut='f',typ='I',defaut= 10),
- ),
- PARM_THETA =SIMP(statut='f',typ='R'
- ,defaut= 1. ),
- INFO =SIMP(statut='f',typ='I',into=(1,2) ),
- TITRE =SIMP(statut='f',typ='TXM',max='**' ),
-
- EXCIT =FACT(statut='o',max='**',
- CHARGE =SIMP(statut='o',typ=char_meca),
- ),
-
- COMP_INCR =C_COMP_INCR(),
- ) ;
-#& MODIF COMMANDE DATE 14/11/2005 AUTEUR MCOURTOI M.COURTOIS
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2005 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# -*- coding: iso-8859-1 -*-
-
-# RESPONSABLE MCOURTOI M.COURTOIS
-
-def calc_table_prod(self, TABLE, **kargs):
- """Typage du concept produit.
- """
- typ_table = AsType(TABLE)
- if issubclass(typ_table, table_sdaster):
- return typ_table
- raise AsException("type de concept resultat non prevu")
-
-from Macro.calc_table_ops import calc_table_ops
-
-CALC_TABLE=MACRO(nom="CALC_TABLE",op=calc_table_ops, sd_prod=calc_table_prod,
- fr="Opérations sur une table",
- reentrant='f',
- TABLE = SIMP(statut='o',typ=table_sdaster),
- regles=(UN_PARMI('FILTRE', 'EXTR', 'RENOMME', 'TRI', 'COMB', 'OPER',),),
- FILTRE = FACT(statut='f',max='**',
- fr="Sélectionne les lignes de la table vérifiant un critère",
- NOM_PARA = SIMP(statut='o',typ='TXM'),
- CRIT_COMP = SIMP(statut='f',typ='TXM',defaut="EQ",
- into=("EQ","LT","GT","NE","LE","GE","VIDE",
- "NON_VIDE","MAXI","ABS_MAXI","MINI","ABS_MINI"),),
- b_vale =BLOC(condition = "(CRIT_COMP in ('EQ','NE','GT','LT','GE','LE'))",
- regles=(UN_PARMI('VALE','VALE_I','VALE_K','VALE_C',),),
- VALE =SIMP(statut='f',typ='R'),
- VALE_I =SIMP(statut='f',typ='I'),
- VALE_C =SIMP(statut='f',typ='C'),
- VALE_K =SIMP(statut='f',typ='TXM'),
- ),
- b_crit =BLOC(condition = "CRIT_COMP in ('EQ','NE')",
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
- PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3 ),
- ),
- ),
- EXTR =FACT(statut='f',
- fr="Extrait une ou plusieurs colonnes de la table",
- NOM_PARA =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',
- fr="Noms des colonnes à extraire"),
- ),
- RENOMME =FACT(statut='f', max='**',
- fr="Renomme un ou plusieurs paramètres de la table",
- NOM_PARA =SIMP(statut='o',typ='TXM',validators=NoRepeat(),min=2,max=2,
- fr="Couple (ancien nom du paramètre, nouveau nom du paramètre)",),
- ),
- TRI =FACT(statut='f',
- fr="Ordonne les lignes de la table selon les valeurs d'un ou plusieurs paramètres",
- NOM_PARA =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**'),
- ORDRE =SIMP(statut='f',typ='TXM',defaut="CROISSANT", # max='**',
- into=("CROISSANT","DECROISSANT") ),
- ),
- COMB =FACT(statut='f',
- fr="Combine deux tables ayant éventuellement des paramètres communs",
- TABLE =SIMP(statut='o',typ=table_sdaster,
- fr="Table dont les colonnes vont venir surcharger la table initiale"),
- NOM_PARA =SIMP(statut='f',typ='TXM',max='**',
- fr="Noms des paramètres dont les valeurs doivent etre identiques dans les deux tables "\
- "pour que les colonnes soient combinées"),
- ),
- OPER =FACT(statut='f', max='**',
- fr="Applique une formule dans laquelle les variables sont les paramètres de la table",
- FORMULE =SIMP(statut='o',typ=formule,
- fr="Formule à appliquer aux colonnes de la table"),
- NOM_PARA =SIMP(statut='o',typ='TXM',
- fr="Nom de la nouvelle colonne"),
- ),
- TITRE =SIMP(statut='f',typ='TXM',max='**',
- fr="Titre de la table produite"),
- INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
-)
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-CALC_THETA=OPER(nom="CALC_THETA",op=54,sd_prod=theta_geom,reentrant='n',
- UIinfo={"groupes":("Post traitements",)},
- fr="Définir un champ theta pour le calcul du taux de restitution d'énergie"
- +" ou des facteurs d'intensité de contraintes",
- regles=(UN_PARMI('THETA_2D','THETA_3D','THETA_BANDE'),
- PRESENT_ABSENT('THETA_2D','DIRE_THETA'),
- EXCLUS('DIRECTION','DIRE_THETA'),),
- OPTION =SIMP(statut='f',typ='TXM',defaut="COURONNE",into=("COURONNE","BANDE") ),
- MODELE =SIMP(statut='o',typ=(modele_sdaster) ),
- THETA_3D =FACT(statut='f',max='**',
- regles=(UN_PARMI('TOUT','GROUP_NO','NOEUD'),
- UN_PARMI('MODULE','MODULE_FO'),
- ENSEMBLE('MODULE','R_INF','R_SUP'),
- ENSEMBLE('MODULE_FO','R_INF_FO','R_SUP_FO'),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- MODULE =SIMP(statut='f',typ='R'),
- R_INF =SIMP(statut='f',typ='R'),
- R_SUP =SIMP(statut='f',typ='R'),
- MODULE_FO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- R_INF_FO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- R_SUP_FO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- ),
- b_theta_3d =BLOC(condition="THETA_3D != None",
- FOND_FISS =SIMP(statut='f',typ=fond_fiss),),
- DIRE_THETA =SIMP(statut='f',typ=(cham_no_depl_r) ),
- DIRECTION =SIMP(statut='f',typ='R',max='**'),
- THETA_2D =FACT(statut='f',max='**',
- regles=(UN_PARMI('GROUP_NO','NOEUD'),),
- GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- MODULE =SIMP(statut='o',typ='R'),
- R_INF =SIMP(statut='o',typ='R'),
- R_SUP =SIMP(statut='o',typ='R'),
- ),
- THETA_BANDE =FACT(statut='f',max='**',
- MODULE =SIMP(statut='o',typ='R'),
- R_INF =SIMP(statut='o',typ='R'),
- R_SUP =SIMP(statut='o',typ='R'),
- ),
- GRAD_NOEU_THETA =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
- IMPRESSION =FACT(statut='f',
- UNITE =SIMP(statut='f',typ='I',defaut=8),
- FORMAT =SIMP(statut='f',typ='TXM',defaut="EXCEL",into=("EXCEL","AGRAF") ),
- ),
-) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE VABHHTS J.PELLET
-def calc_vect_elem_prod(OPTION,**args):
- if OPTION == "CHAR_MECA" : return vect_elem_depl_r
- if OPTION == "CHAR_MECA_LAGR" : return vect_elem_depl_r
- if OPTION == "CHAR_THER" : return vect_elem_temp_r
- if OPTION == "CHAR_ACOU" : return vect_elem_pres_c
- if OPTION == "FORC_NODA" : return vect_elem_depl_r
- raise AsException("type de concept resultat non prevu")
-
-CALC_VECT_ELEM=OPER(nom="CALC_VECT_ELEM",op=8,sd_prod=calc_vect_elem_prod,reentrant='n',
- UIinfo={"groupes":("Matrices/vecteurs",)},
- fr="Calcul des seconds membres élémentaires",
- OPTION =SIMP(statut='o',typ='TXM',into=("CHAR_MECA","CHAR_THER","CHAR_ACOU",
- "FORC_NODA","CHAR_MECA_LAGR") ),
- b_char_meca =BLOC(condition = "OPTION=='CHAR_MECA'",
- regles=(AU_MOINS_UN('CHARGE','MODELE'),),
- CHARGE =SIMP(statut='f',typ=char_meca,validators=NoRepeat(),max='**'),
- MODELE =SIMP(statut='f',typ=modele_sdaster),
- b_charge =BLOC(condition = "CHARGE != None", fr="modèle ne contenant pas de sous-structure",
- CHAM_MATER =SIMP(statut='f',typ=cham_mater),
- CARA_ELEM =SIMP(statut='f',typ=cara_elem),
- INST =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- MODE_FOURIER =SIMP(statut='f',typ='I',defaut= 0 ),
- ),
- b_modele =BLOC(condition = "(MODELE != None)",fr="modèle contenant une sous-structure",
- SOUS_STRUC =FACT(statut='o',min=01,
- regles=(UN_PARMI('TOUT','MAILLE'),),
- CAS_CHARGE =SIMP(statut='o',typ='TXM' ),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- MAILLE =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**',),
- ),
- ),
- ),
- b_char_ther =BLOC(condition = "OPTION=='CHAR_THER'",
- CARA_ELEM =SIMP(statut='f',typ=cara_elem),
- CHARGE =SIMP(statut='o',typ=char_ther,validators=NoRepeat(),max='**'),
- INST =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- ),
-
- b_char_acou =BLOC(condition = "OPTION=='CHAR_ACOU'",
- CHAM_MATER =SIMP(statut='o',typ=cham_mater),
- CHARGE =SIMP(statut='o',typ=char_acou,validators=NoRepeat(),max='**'),
- ),
-
- b_forc_noda =BLOC(condition = "OPTION=='FORC_NODA'",
- SIEF_ELGA =SIMP(statut='o',typ=cham_elem_sief_r),
- CARA_ELEM =SIMP(statut='f',typ=cara_elem),
- MODELE =SIMP(statut='f',typ=modele_sdaster),
- ),
-
- b_meca_lagr =BLOC(condition = "OPTION=='CHAR_MECA_LAGR'",
- CHAM_MATER =SIMP(statut='o',typ=cham_mater),
- THETA =SIMP(statut='o',typ=theta_geom),
- PROPAGATION =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- CHARGE =SIMP(statut='f',typ=char_meca,validators=NoRepeat(),max='**'),
- INST =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- ),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE G8BHHXD X.DESROCHES
-def comb_cham_elem_prod(COMB_R=None,COMB_C=None,COMB_FOURIER=None,**args):
-
- if COMB_R != None:
- vale=COMB_R[0]['CHAM_ELEM']
- elif COMB_C != None:
- vale=COMB_C[0]['CHAM_ELEM']
- elif COMB_FOURIER != None:
- vale=COMB_FOURIER[0]['CHAM_ELEM']
- else :
- raise AsException("type de concept resultat non prevu")
-
- if AsType(vale) == cham_elem_sief_r : return cham_elem_sief_r
- if AsType(vale) == cham_elem_flux_r : return cham_elem_flux_r
- if AsType(vale) == cham_elem_epsi_r : return cham_elem_epsi_r
- if AsType(vale) == cham_elem_ener_r : return cham_elem_ener_r
- if AsType(vale) == cham_elem_crit_r : return cham_elem_crit_r
- if AsType(vale) == cham_elem_dbel_r : return cham_elem_dbel_r
- if AsType(vale) == cham_elem_pres_r : return cham_elem_pres_r
- if AsType(vale) == cham_elem_sief_c : return cham_elem_sief_c
- raise AsException("type de concept resultat non prevu")
-
-COMB_CHAM_ELEM=OPER(nom="COMB_CHAM_ELEM",op= 139,sd_prod=comb_cham_elem_prod,reentrant='f',
- fr="Effectuer la combinaison linéaire de champs par éléments",
- UIinfo={"groupes":("Résultats et champs",)},
- regles=(UN_PARMI('COMB_R','COMB_C','COMB_FOURIER'),
- PRESENT_PRESENT('COMB_FOURIER','ANGL'),),
- COMB_R =FACT(statut='f',max='**',
- PARTIE =SIMP(statut='f',typ='TXM',into=("REEL","IMAG") ),
- COEF_R =SIMP(statut='o',typ='R'),
- CHAM_ELEM =SIMP(statut='o',
- typ=(cham_elem_sief_r,cham_elem_flux_r,cham_elem_epsi_r,
- cham_elem_ener_r,cham_elem_crit_r,cham_elem_dbel_r,
- cham_elem_pres_r,cham_elem_sief_c ) ),
- ),
- COMB_C =FACT(statut='f',max='**',
- regles=(UN_PARMI('COEF_R','COEF_C', ),),
- COEF_R =SIMP(statut='f',typ='R'),
- COEF_C =SIMP(statut='f',typ='C'),
- CHAM_ELEM =SIMP(statut='o',typ=(cham_elem_sief_r) ),
- ),
- COMB_FOURIER =FACT(statut='f',max='**',
- COEF_R =SIMP(statut='f',typ='R',defaut= 1.),
- NUME_MODE =SIMP(statut='o',typ='I'),
- TYPE_MODE =SIMP(statut='o',typ='TXM',into=("SYME","ANTI") ),
- CHAM_ELEM =SIMP(statut='o',typ=(cham_elem_sief_r,cham_elem_flux_r,cham_elem_epsi_r ) ),
- ),
- ANGL =SIMP(statut='f',typ='R' ),
-) ;
-
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE G8BHHXD X.DESROCHES
-def comb_cham_no_prod(COMB_R,COMB_C,COMB_FOURIER,**args):
- if COMB_C != None:
- type_mat = AsType(COMB_C[0]['CHAM_NO'])
- if type_mat in (cham_no_depl_c,cham_no_depl_r) : return cham_no_depl_c
- if type_mat in (cham_no_temp_c,cham_no_temp_r) : return cham_no_temp_c
- if type_mat in (cham_no_pres_c,cham_no_pres_r) : return cham_no_pres_c
- elif COMB_R != None:
- type_mat = AsType(COMB_R[0]['CHAM_NO'])
- if type_mat in (cham_no_depl_c,cham_no_depl_r) : return cham_no_depl_r
- if type_mat in (cham_no_temp_c,cham_no_temp_r) : return cham_no_temp_r
- if type_mat in (cham_no_pres_c,cham_no_pres_r) : return cham_no_pres_r
- if type_mat == matr_asse_gene_r : return matr_asse_gene_r
- elif COMB_FOURIER != None:
- type_mat = AsType(COMB_FOURIER[0]['CHAM_NO'])
- if type_mat == cham_no_temp_r : return cham_no_temp_r
- if type_mat == cham_no_depl_r : return cham_no_depl_r
- raise AsException("type de concept resultat non prevu")
-
-
-COMB_CHAM_NO=OPER(nom="COMB_CHAM_NO",op= 30,sd_prod=comb_cham_no_prod
- ,fr="Effectuer la combinaison linéaire de champs aux noeuds",
- reentrant='f',
- UIinfo={"groupes":("Résultats et champs",)},
- regles=(UN_PARMI('COMB_R','COMB_C','COMB_FOURIER'),),
- COMB_R =FACT(statut='f',max='**',
- PARTIE =SIMP(statut='f',typ='TXM',into=("REEL","IMAG",) ),
- CHAM_NO =SIMP(statut='o',typ=(cham_no_temp_r,cham_no_temp_c,cham_no_depl_r,cham_no_depl_c
- ,cham_no_pres_r,cham_no_pres_c ) ),
- COEF_R =SIMP(statut='o',typ='R' ),
- ),
- COMB_C =FACT(statut='f',max='**',
- regles=(UN_PARMI('COEF_R','COEF_C' ),),
- CHAM_NO =SIMP(statut='o',typ=(cham_no_temp_r,cham_no_depl_r,cham_no_pres_r,cham_no_temp_c
- ,cham_no_depl_c,cham_no_pres_c ) ),
- COEF_R =SIMP(statut='f',typ='R' ),
- COEF_C =SIMP(statut='f',typ='C' ),
- ),
- COMB_FOURIER =FACT(statut='f',max='**',
- CHAM_NO =SIMP(statut='o',typ=(cham_no_temp_r,cham_no_depl_r) ),
- COEF_R =SIMP(statut='f',typ='R',defaut= 1. ),
- NUME_MODE =SIMP(statut='o',typ='I' ),
- TYPE_MODE =SIMP(statut='o',typ='TXM',into=("SYME","ANTI") ),
- ),
- b_angl = BLOC ( condition = "COMB_FOURIER != None",
- ANGL =SIMP(statut='o',typ='R' ),
- ),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE G8BHHXD X.DESROCHES
-COMB_FOURIER=OPER(nom="COMB_FOURIER",op= 161,sd_prod=comb_fourier,
- reentrant='n',fr="Recombiner les modes de Fourier d'une SD Résultat dans des directions particulières",
- UIinfo={"groupes":("Post traitements",)},
- RESULTAT =SIMP(statut='o',typ=fourier_elas ),
- ANGL =SIMP(statut='o',typ='R',max='**'),
- NOM_CHAM =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=5,
- into=("DEPL","REAC_NODA","SIEF_ELGA_DEPL","EPSI_ELNO_DEPL","SIGM_ELNO_DEPL") ),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE VABHHTS J.PELLET
-def comb_matr_asse_prod(COMB_R,COMB_C,CALC_AMOR_GENE,**args):
- if COMB_C != None:
- type_mat = AsType(COMB_C[0]['MATR_ASSE'])
- if type_mat in (matr_asse_depl_c,matr_asse_depl_r) : return matr_asse_depl_c
- if type_mat in (matr_asse_gene_c,matr_asse_gene_r) : return matr_asse_gene_c
- if type_mat in (matr_asse_temp_c,matr_asse_temp_r) : return matr_asse_temp_c
- if type_mat in (matr_asse_pres_c,matr_asse_pres_r) : return matr_asse_pres_c
- elif COMB_R != None:
- type_mat = AsType(COMB_R[0]['MATR_ASSE'])
- if type_mat in (matr_asse_depl_c,matr_asse_depl_r) : return matr_asse_depl_r
- if type_mat in (matr_asse_temp_c,matr_asse_temp_r) : return matr_asse_temp_r
- if type_mat in (matr_asse_pres_c,matr_asse_pres_r) : return matr_asse_pres_r
- if type_mat in (matr_asse_gene_c,matr_asse_gene_r) : return matr_asse_gene_r
- elif CALC_AMOR_GENE != None: return matr_asse_gene_r
- raise AsException("type de concept resultat non prevu")
-
-COMB_MATR_ASSE=OPER(nom="COMB_MATR_ASSE",op= 31,sd_prod=comb_matr_asse_prod,
- fr="Effectuer la combinaison linéaire de matrices assemblées",
- reentrant='f',
- UIinfo={"groupes":("Résultats et champs",)},
- regles=(UN_PARMI('COMB_R','COMB_C','CALC_AMOR_GENE' ),),
- COMB_R =FACT(statut='f',max='**',
- PARTIE =SIMP(statut='f',typ='TXM',into=("REEL","IMAG") ),
- MATR_ASSE =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_depl_c,matr_asse_temp_r,matr_asse_temp_c
- ,matr_asse_pres_r,matr_asse_pres_c,matr_asse_gene_r,matr_asse_gene_c ) ),
- COEF_R =SIMP(statut='o',typ='R' ),
- ),
- COMB_C =FACT(statut='f',max='**',
- regles=(UN_PARMI('COEF_R','COEF_C' ),),
- MATR_ASSE =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_depl_c,matr_asse_temp_r,matr_asse_temp_c
- ,matr_asse_pres_r,matr_asse_pres_c,matr_asse_gene_r,matr_asse_gene_c ) ),
- COEF_R =SIMP(statut='f',typ='R' ),
- COEF_C =SIMP(statut='f',typ='C' ),
- ),
- CALC_AMOR_GENE =FACT(statut='f',
- regles=(UN_PARMI('AMOR_REDUIT','LIST_AMOR' ),),
- MASS_GENE = SIMP(statut='f', typ=matr_asse_gene_r),
- RIGI_GENE = SIMP(statut='f', typ=matr_asse_gene_r),
- AMOR_REDUIT = SIMP(statut='f',typ='R',max='**'),
- LIST_AMOR = SIMP(statut='f',typ=listr8_sdaster ),
- ),
- SANS_CMP =SIMP(statut='f',typ='TXM',into=("LAGR",) ),
-) ;
-#& MODIF COMMANDE DATE 30/06/2004 AUTEUR MCOURTOI M.COURTOIS
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-COMB_SISM_MODAL=OPER(nom="COMB_SISM_MODAL",op= 109,sd_prod=mode_stat,
- fr="Réponse sismique par recombinaison modale par une méthode spectrale",
- reentrant='n',
- UIinfo={"groupes":("Post traitements",)},
- regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','FREQ','NUME_MODE','LIST_FREQ','LIST_ORDRE'),
- UN_PARMI('AMOR_REDUIT','LIST_AMOR','AMOR_GENE' ),),
- MODE_MECA =SIMP(statut='o',typ=mode_meca ),
- TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
- LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster ),
- NUME_MODE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
- FREQ =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
- LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster ),
- b_freq =BLOC(condition = "FREQ != None or LIST_FREQ != None",
- PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
- ),
- MODE_CORR =SIMP(statut='f',typ=mode_stat_acce ),
-
- AMOR_REDUIT =SIMP(statut='f',typ='R',max='**'),
- LIST_AMOR =SIMP(statut='f',typ=listr8_sdaster ),
- AMOR_GENE =SIMP(statut='f',typ=matr_asse_gene_r ),
-
- MASS_INER =SIMP(statut='f',typ=tabl_mass_iner ),
- CORR_FREQ =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
-
- EXCIT =FACT(statut='o',max='**',
- regles=(UN_PARMI('MONO_APPUI','NOEUD','GROUP_NO'),
- UN_PARMI('AXE','TRI_AXE','TRI_SPEC' ),),
-
- MONO_APPUI =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- AXE =SIMP(statut='f',typ='R',max=3,fr="Excitation suivant un seul axe",),
- TRI_AXE =SIMP(statut='f',typ='R',max=3,fr="Excitation suivant les trois axes mais avec le meme spectre",),
- TRI_SPEC =SIMP(statut='f',typ='TXM',into=("OUI",),
- fr="Excitation suivant les trois axes avec trois spectres"),
- b_axe =BLOC(condition = "AXE != None",fr="Excitation suivant un seul axe",
- SPEC_OSCI =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule),),
- ECHELLE =SIMP(statut='f',typ='R',),
- ),
- b_tri_axe =BLOC(condition = "TRI_AXE != None",fr="Excitation suivant les trois axes mais avec le meme spectre",
- SPEC_OSCI =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule),),
- ECHELLE =SIMP(statut='f',typ='R',),
- ),
- b_tri_spec =BLOC(condition = "TRI_SPEC != None",fr="Excitation suivant les trois axes avec trois spectres",
- SPEC_OSCI =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule),min=3,max=3 ),
- ECHELLE =SIMP(statut='f',typ='R',min=3,max=3),
- ),
- NATURE =SIMP(statut='f',typ='TXM',defaut="ACCE",into=("ACCE","VITE","DEPL") ),
- ),
- COMB_MODE =FACT(statut='o',
- TYPE =SIMP(statut='o',typ='TXM',into=("SRSS","CQC","DSC","ABS","DPC") ),
- DUREE =SIMP(statut='f',typ='R' ),
- ),
- COMB_DIRECTION =FACT(statut='f',
- TYPE =SIMP(statut='f',typ='TXM',into=("QUAD","NEWMARK") ),
- ),
- COMB_MULT_APPUI =FACT(statut='f',max='**',
- regles=(UN_PARMI('TOUT','NOEUD','GROUP_NO' ),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- TYPE_COMBI =SIMP(statut='f',typ='TXM',into=("QUAD","LINE",) ),
- ),
- COMB_DEPL_APPUI=FACT(statut='f',max='**',
- regles=(UN_PARMI('TOUT','LIST_CAS'),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",)),
- LIST_CAS =SIMP(statut='f',typ='I',max='**'),
- TYPE_COMBI =SIMP(statut='f',typ='TXM',into=("QUAD","LINE","ABS") ),
- ),
- DEPL_MULT_APPUI =FACT(statut='f',max='**',
- regles=(UN_PARMI('NOEUD','GROUP_NO'),
- AU_MOINS_UN('DX','DY','DZ' ),),
- NOM_CAS =SIMP(statut='o',typ='TXM',max='**'),
- NUME_CAS =SIMP(statut='o',typ='I',max='**'),
- MODE_STAT =SIMP(statut='f',typ=(mode_stat_depl,), ),
- NOEUD_REFE =SIMP(statut='f',typ=no),
- NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- DX =SIMP(statut='f',typ='R' ),
- DY =SIMP(statut='f',typ='R' ),
- DZ =SIMP(statut='f',typ='R' ),
- ),
- OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=9,
- into=("DEPL","VITE","ACCE_ABSOLU","SIGM_ELNO_DEPL","SIEF_ELGA_DEPL",
- "EFGE_ELNO_DEPL","REAC_NODA","FORC_NODA","EFGE_ELNO_CART",
- "SIPO_ELNO_DEPL") ),
- INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2 ) ),
- IMPRESSION =FACT(statut='f',max='**',
- regles=(EXCLUS('TOUT','NIVEAU'),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- NIVEAU =SIMP(statut='f',typ='TXM',into=("SPEC_OSCI","MASS_EFFE","MAXI_GENE"),validators=NoRepeat(),max=3 ),
- ),
- TITRE =SIMP(statut='f',typ='TXM',max='**'),
-) ;
-#& MODIF COMMANDE DATE 14/11/2005 AUTEUR DURAND C.DURAND
-# RESPONSABLE VABHHTS J.PELLET
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-def crea_champ_prod(TYPE_CHAM,**args):
- import string
- grandeur=string.lower(TYPE_CHAM[5:])
-
- if TYPE_CHAM[0:5] == "CART_" :
- uu="carte_"+grandeur
- elif TYPE_CHAM[0:5] == "NOEU_" :
- uu="cham_no_"+grandeur
- elif TYPE_CHAM[0:2] == "EL" :
- uu="cham_elem_"+grandeur
- else :
- raise AsException("type de concept resultat_sdaster non prevu")
-
- try :
- vv=eval(uu)
- except :
- raise AsException("type de concept champ non prevu : %s" % uu)
- return vv
-
-
-CREA_CHAMP=OPER(nom="CREA_CHAMP",op= 195,sd_prod=crea_champ_prod,
- fr="Création d'un champ de type CHAM_NO, CARTE ou CHAM_ELEM",reentrant='n',
- UIinfo={"groupes":("Résultats et champs",)},
- TYPE_CHAM =SIMP(statut='o',typ='TXM',into=C_TYPE_CHAM_INTO()),
- # TYPE_CHAM doit etre de la forme : CART_xx, NOEU_xx, ELEM_xx, ELGA_xx ou ELNO_xx
- # ou xx est le nom d'une grandeur définie dans le catalogue des grandeurs
-
-# SI CREATION D'UN CHAM_NO, POUR IMPOSER LA NUMEROTATION DES DDLS :
-# ------------------------------------------------------------------
- regles=(EXCLUS('NUME_DDL','CHAM_NO',)),
- NUME_DDL =SIMP(statut='f',typ=(nume_ddl_sdaster) ),
- CHAM_NO =SIMP(statut='f',typ=(cham_no_sdaster) ),
-
-# SI CREATION D'UN CHAM_ELEM, POUR aider a l'allocation du champ :
-# (PAR DEFAUT : TOU_INI_ELNO/_ELGA/_ELEM)
-# ------------------------------------------------------------------
- OPTION =SIMP(statut='f',typ='TXM'),
-
- OPERATION =SIMP(statut='o',typ='TXM',into=("AFFE","ASSE","EVAL","EXTR","DISC",) ),
-
- b_affe =BLOC(condition = "OPERATION == 'AFFE'",
- regles=(UN_PARMI('MAILLAGE','MODELE'),),
- MAILLAGE =SIMP(statut='f',typ=(maillage_sdaster) ),
- MODELE =SIMP(statut='f',typ=(modele_sdaster) ),
- b_affe_modele =BLOC(condition = "MODELE != None",
- PROL_ZERO =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON",) ), ),
- AFFE =FACT(statut='o',max='**',
- regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD',),
- UN_PARMI('VALE','VALE_I','VALE_C','VALE_F', ),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma ,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_NO =SIMP(statut='f',typ=grno ,validators=NoRepeat(),max='**'),
- NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- NOM_CMP =SIMP(statut='o',typ='TXM',max='**'),
- VALE =SIMP(statut='f',typ='R',max='**' ),
- VALE_I =SIMP(statut='f',typ='I',max='**' ),
- VALE_C =SIMP(statut='f',typ='C',max='**' ),
- VALE_F =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),max='**'),
- ),
- ),
- b_asse =BLOC(condition = "OPERATION == 'ASSE'",
- regles=(UN_PARMI('MAILLAGE','MODELE'),),
- MAILLAGE =SIMP(statut='f',typ=(maillage_sdaster) ),
- MODELE =SIMP(statut='f',typ=(modele_sdaster) ),
- b_asse_modele =BLOC(condition = "MODELE != None",
- PROL_ZERO =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON",) ), ),
- ASSE =FACT(statut='o',max='**',
- regles=(AU_MOINS_UN('TOUT','GROUP_MA','GROUP_NO','MAILLE','NOEUD',),
- PRESENT_PRESENT('NOM_CMP_RESU','NOM_CMP', ),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- CHAM_GD =SIMP(statut='o',typ=(cham_gd_sdaster)),
- NOM_CMP =SIMP(statut='f',typ='TXM',max='**' ),
- NOM_CMP_RESU =SIMP(statut='f',typ='TXM',max='**' ),
- CUMUL =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON",) ),
- COEF_R =SIMP(statut='f',typ='R',defaut= 1. ),
- ),
- ),
- b_eval =BLOC(condition = "OPERATION == 'EVAL'",
- CHAM_F =SIMP(statut='o',typ=(cham_gd_sdaster)),
- CHAM_PARA =SIMP(statut='o',typ=(cham_gd_sdaster),max='**'),
- ),
- b_disc =BLOC(condition = "OPERATION == 'DISC'",
- MODELE =SIMP(statut='f',typ=(modele_sdaster) ),
- PROL_ZERO =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON",) ),
- CHAM_GD =SIMP(statut='o',typ=(cham_gd_sdaster)),
- ),
- b_extr =BLOC(condition = "OPERATION == 'EXTR'",
- regles=(AU_MOINS_UN('MAILLAGE','FISSURE','RESULTAT','TABLE'),),
- MAILLAGE =SIMP(statut='f',typ=(maillage_sdaster) ),
- FISSURE =SIMP(statut='f',typ=(fiss_xfem) ),
- RESULTAT =SIMP(statut='f',typ=(resultat_sdaster) ),
- TABLE =SIMP(statut='f',typ=(table_sdaster),min=1,max=1),
- b_extr_maillage =BLOC(condition = "MAILLAGE != None and TABLE == None",
- NOM_CHAM =SIMP(statut='o',typ='TXM',into=("GEOMETRIE",)),
- ),
- b_extr_fissure =BLOC(condition = "FISSURE != None",
- NOM_CHAM =SIMP(statut='o',typ='TXM',into=("LTNO","LNNO","GRLTNO","GRLNNO",)),
- ),
- b_extr_table =BLOC(condition = "TABLE != None",
- regles=( EXCLUS('MODELE','MAILLAGE'),
- EXCLUS('PROL_ZERO','MAILLAGE'),),
- MAILLAGE =SIMP(statut='f',typ=(maillage_sdaster),),
- MODELE =SIMP(statut='f',typ=(modele_sdaster),),
- OPTION =SIMP(statut='f',typ='TXM'),
- PROL_ZERO =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON",) ),
- ),
- b_extr_resultat =BLOC(condition = "RESULTAT != None",
- SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),
- fr="Paramètre de sensibilité.",
- ang="Sensitivity parameter"),
- NOM_CHAM =SIMP(statut='o',typ='TXM',into=C_NOM_CHAM_INTO()),
- TYPE_MAXI =SIMP(statut='f',typ='TXM',into=("MAXI","MINI","MAXI_ABS","MINI_ABS","NORM_TRAN",) ),
-
- # si TYPE_MAXI, on spécifie en général plusieurs numéros d'ordre :
- b_type_maxi =BLOC(condition = "TYPE_MAXI != None",
- TYPE_RESU =SIMP(statut='o',typ='TXM',defaut="VALE",into=("VALE","INST",) ),
-
- regles=(AU_PLUS_UN('LIST_INST','LIST_FREQ','NUME_ORDRE','INST',
- 'FREQ','NUME_MODE','NOEUD_CMP','NOM_CAS','ANGL'),),
- LIST_INST =SIMP(statut='f',typ=(listr8_sdaster) ),
- LIST_FREQ =SIMP(statut='f',typ=(listr8_sdaster) ),
- NUME_ORDRE =SIMP(statut='f',typ='I',max='**'),
- INST =SIMP(statut='f',typ='R',max='**'),
- FREQ =SIMP(statut='f',typ='R',max='**'),
- NUME_MODE =SIMP(statut='f',typ='I',max='**'),
- NOEUD_CMP =SIMP(statut='f',typ='TXM',max='**'),
- NOM_CAS =SIMP(statut='f',typ='TXM',max='**'),
- ANGL =SIMP(statut='f',typ='R',max='**'),
-
- b_tout =BLOC(condition = "(LIST_INST,LIST_FREQ,NUME_ORDRE,INST,\
- FREQ,NUME_MODE,NOEUD_CMP,NOM_CAS,ANGL)\
- ==(None ,None ,None ,None,\
- None,None ,None ,None ,None)",
- TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",),defaut="OUI",),
- ),
- ),
-
- # si .not. TYPE_MAXI, on ne doit spécifier qu'un seul numéro d'ordre :
- b_non_type_maxi =BLOC(condition = "TYPE_MAXI == None",
- regles=(AU_PLUS_UN('INST','FREQ','NUME_MODE','NOEUD_CMP','NOM_CAS','ANGL'),),
- INST =SIMP(statut='f',typ='R'),
- FREQ =SIMP(statut='f',typ='R'),
- NUME_MODE =SIMP(statut='f',typ='I'),
- NOEUD_CMP =SIMP(statut='f',typ='TXM',max=2),
- NOM_CAS =SIMP(statut='f',typ='TXM'),
- ANGL =SIMP(statut='f',typ='R'),
-
- b_nume_1 =BLOC(condition = "(INST,FREQ,NUME_MODE,NOEUD_CMP,NOM_CAS,ANGL)\
- ==(None,None,None ,None ,None ,None)",
- NUME_ORDRE =SIMP(statut='f',typ='I',defaut=1,),
- ),
-
- INTERPOL =SIMP(statut='f',typ='TXM',defaut="NON",into=("NON","LIN",) ),
- ),
-
- PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",) ),
-
- ), # fin bloc b_extr
-
- ),
-# FIN DU CATALOGUE : INFO,TITRE ET TYPAGE DU RESULAT :
-#-----------------------------------------------------
- INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2,) ),
- TITRE =SIMP(statut='f',typ='TXM',max='**' ),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# RESPONSABLE MCOURTOI M.COURTOIS
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-CREA_MAILLAGE=OPER(nom="CREA_MAILLAGE",op= 167,sd_prod=maillage_sdaster,
- reentrant='n',fr="Crée un maillage à partir d'un maillage existant",
- UIinfo={"groupes":("Maillage",)},
- regles=(EXCLUS('ECLA_PG','CREA_MAILLE'),
- EXCLUS('ECLA_PG','CREA_GROUP_MA'),
- EXCLUS('ECLA_PG','DETR_GROUP_MA'),
- EXCLUS('ECLA_PG','MODI_MAILLE'),
- EXCLUS('ECLA_PG','LINE_QUAD'),
- EXCLUS('ECLA_PG','CREA_FISS'),
- EXCLUS('ECLA_PG','COQU_VOLU'),
- EXCLUS('LINE_QUAD','MODI_MAILLE'),
- EXCLUS('LINE_QUAD','CREA_MAILLE'),
- EXCLUS('LINE_QUAD','CREA_GROUP_MA'),
- EXCLUS('LINE_QUAD','DETR_GROUP_MA'),
- EXCLUS('LINE_QUAD','CREA_FISS'),
- EXCLUS('LINE_QUAD','COQU_VOLU'),
- EXCLUS('CREA_FISS','MODI_MAILLE'),
- EXCLUS('CREA_FISS','CREA_MAILLE'),
- EXCLUS('CREA_FISS','CREA_GROUP_MA'),
- EXCLUS('CREA_FISS','DETR_GROUP_MA'),
- EXCLUS('CREA_FISS','COQU_VOLU'),
- EXCLUS('COQU_VOLU','MODI_MAILLE'),
- EXCLUS('COQU_VOLU','CREA_MAILLE'),
- EXCLUS('COQU_VOLU','CREA_GROUP_MA'),
- EXCLUS('COQU_VOLU','DETR_GROUP_MA'),
- ),
-
- # le MAILLAGE est inutile si ECLA_PG
- MAILLAGE =SIMP(statut='f',typ=maillage_sdaster ),
-
- CREA_POI1 =FACT(statut='f',max='**',fr="Création de mailles de type POI1 à partir de noeuds",
- regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD' ),),
- NOM_GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- ),
- CREA_MAILLE =FACT(statut='f',max='**',fr="Duplication de mailles",
- regles=(AU_MOINS_UN('TOUT','MAILLE','GROUP_MA'),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- PREF_MAILLE =SIMP(statut='o',typ='TXM' ),
- PREF_NUME =SIMP(statut='f',typ='I' ),
- ),
- CREA_GROUP_MA =FACT(statut='f',max='**',fr="Duplication de mailles et création de groupes de mailles",
- regles=(AU_MOINS_UN('TOUT','MAILLE','GROUP_MA' ),),
- NOM =SIMP(statut='o',typ='TXM'),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- PREF_MAILLE =SIMP(statut='o',typ='TXM' ),
- PREF_NUME =SIMP(statut='f',typ='I' ),
- ),
- DETR_GROUP_MA =FACT(statut='f',fr="Destruction de groupes de mailles",
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- NB_MAILLE =SIMP(statut='f',typ='I',defaut= 0,
- fr="Nombre minimal de mailles que doit contenir le groupe pour etre détruit", ),
- ),
- COQU_VOLU =FACT(statut='f',
- fr="Creation de mailles volumiques à partir de mailles surfaciques",
- NOM =SIMP(statut='o',typ='TXM'),
- GROUP_MA =SIMP(statut='o',typ=grma,validators=NoRepeat(),max ='**'),
- EPAIS =SIMP(statut='o',typ='R' ),
- PREF_MAILLE =SIMP(statut='f',typ='TXM',defaut="MS" ),
- PREF_NOEUD =SIMP(statut='f',typ='TXM',defaut="NS" ),
- PREF_NUME =SIMP(statut='f',typ='I' ,defaut=1 ),
- PLAN =SIMP(statut='o',typ='TXM',into=("SUP","MOY","INF")),
- b_MOY =BLOC(condition = "PLAN == 'MOY'",
- TRANSLATION =SIMP(statut='o',typ='TXM',into=("SUP","INF") ),
- ),
- ),
- MODI_MAILLE =FACT(statut='f',max='**',fr="Modification du type de mailles",
- regles=(AU_MOINS_UN('TOUT','MAILLE','GROUP_MA' ),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- MAILLE =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- GROUP_MA =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- OPTION =SIMP(statut='o',typ='TXM',into=("TRIA6_7","QUAD8_9","SEG3_4","QUAD_TRIA3"),
- fr="Choix de la transformation" ),
- b_NOS =BLOC(condition = "OPTION == 'TRIA6_7' or OPTION == 'QUAD8_9' or OPTION == 'SEG3_4'",
- PREF_NOEUD =SIMP(statut='f',typ='TXM',defaut="NS"),
- PREF_NUME =SIMP(statut='f',typ='I',defaut= 1 ),
- ),
- b_QTR =BLOC(condition = "OPTION == 'QUAD_TRIA3'",
- PREF_MAILLE =SIMP(statut='f',typ='TXM',defaut="MS" ),
- PREF_NUME =SIMP(statut='f',typ='I',defaut= 1 ),
- ),
- ),
- CREA_FISS = FACT(statut='f',max='**',fr="Creation d'une fissure potentielle avec elts de joint ou elts à disc",
- NOM =SIMP(statut='o',typ='TXM'),
- GROUP_NO_1 =SIMP(statut='o',typ=grno),
- GROUP_NO_2 =SIMP(statut='o',typ=grno),
- PREF_MAILLE =SIMP(statut='o',typ='TXM'),
- PREF_NUME =SIMP(statut='f',typ='I',defaut=1 ),
- ),
- LINE_QUAD =FACT(statut='f',fr="Passage linéaire -> quadratique",
- regles=(AU_MOINS_UN('TOUT','MAILLE','GROUP_MA' ),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- MAILLE =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- GROUP_MA =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- PREF_NOEUD =SIMP(statut='f',typ='TXM',defaut="NS"),
- PREF_NUME =SIMP(statut='f',typ='I',defaut= 1 ),
- ),
- QUAD_LINE =FACT(statut='f',fr="Passage quadratique -> linéaire",
- regles=(AU_MOINS_UN('TOUT','MAILLE','GROUP_MA' ),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- MAILLE =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- GROUP_MA =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- ),
- REPERE =FACT(statut='f',max='**',
- fr="changement de repère servant à déterminer les caractéristiques d'une section de poutre",
- TABLE =SIMP(statut='o',typ=tabl_cara_geom,
- fr="Nom de la table contenant les caractéristiques de la section de poutre" ),
- NOM_ORIG =SIMP(statut='f',typ='TXM',into=("CDG","TORSION"),fr="Origine du nouveau repère" ),
- NOM_ROTA =SIMP(statut='f',typ='TXM',into=("INERTIE",),fr="Direction du repére" ),
- b_cdg =BLOC(condition = "NOM_ORIG == 'CDG'",
- GROUP_MA =SIMP(statut='f',typ=grma,
- fr="Nom du groupe de mailles dont le centre de gravité sera l origine du nouveau repère"),
- ),
- ),
- ECLA_PG =FACT(statut='f',
- fr="Eclatement des mailles en petites mailles contenant chacune un seul point de gauss",
- MODELE =SIMP(statut='o',typ=modele_sdaster ),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- SHRINK =SIMP(statut='f',typ='R',defaut= 0.9, fr="Facteur de réduction" ),
- TAILLE_MIN =SIMP(statut='f',typ='R',defaut= 0.0, fr="Taille minimale d'un coté" ),
- NOM_CHAM =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',
- into=("SIEF_ELGA","VARI_ELGA","SIEF_ELGA_DEPL","FLUX_ELGA_TEMP",) ),
- ),
- TITRE =SIMP(statut='f',typ='TXM',max='**'),
-#
- INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ),
-) ;
-#& MODIF COMMANDE DATE 24/10/2005 AUTEUR CIBHHLV L.VIVAN
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-def crea_resu_prod(TYPE_RESU,**args):
- if TYPE_RESU == "EVOL_ELAS" : return evol_elas
- if TYPE_RESU == "EVOL_NOLI" : return evol_noli
- if TYPE_RESU == "EVOL_THER" : return evol_ther
- if TYPE_RESU == "MULT_ELAS" : return mult_elas
- if TYPE_RESU == "FOURIER_ELAS" : return fourier_elas
- if TYPE_RESU == "EVOL_VARC" : return evol_varc
- if TYPE_RESU == "EVOL_CHAR" : return evol_char
- raise AsException("type de concept resultat non prevu")
-
-CREA_RESU=OPER(nom="CREA_RESU",op=124,sd_prod=crea_resu_prod,reentrant='f',
- UIinfo={"groupes":("Modélisation",)},
- fr="Créer ou enrichir une structure de donnees resultat à partir de champs aux noeuds",
-
- OPERATION =SIMP(statut='o',typ='TXM',into=("AFFE","ECLA_PG","PERM_CHAM","PROL_RTZ",),
- fr="choix de la fonction a activer",),
-
- b_affe =BLOC(condition = "OPERATION == 'AFFE'",
-
- TYPE_RESU =SIMP(statut='o',typ='TXM',into=("MULT_ELAS","EVOL_ELAS","EVOL_NOLI","FOURIER_ELAS",
- "EVOL_THER","EVOL_VARC","EVOL_CHAR",) ),
- NOM_CHAM =SIMP(statut='o',typ='TXM',into=C_NOM_CHAM_INTO()),
-
- AFFE =FACT(statut='o',max='**',
- CHAM_GD =SIMP(statut='o',typ=(cham_gd_sdaster)),
- MODELE =SIMP(statut='f',typ=modele_sdaster),
- CHAM_MATER =SIMP(statut='f',typ=cham_mater),
- CARA_ELEM =SIMP(statut='f',typ=cara_elem),
-
- # affectation de plusieurs instants à l'aide d'un champ aux noeuds de fonctions du temps:
- b_fonc =BLOC(condition = "AsType(CHAM_GD) in (cham_no_temp_f,cham_no_depl_f)",
- INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
- LIST_INST =SIMP(statut='f',typ=listr8_sdaster),
- NUME_INIT =SIMP(statut='f',typ='I', val_min=1),
- NUME_FIN =SIMP(statut='f',typ='I', val_min=1),
- PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3 ),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
- ),
-
- # affectation d'un seul nume_ordre :
- b_reel =BLOC(condition = "AsType(CHAM_GD) not in (cham_no_temp_f,cham_no_depl_f)",
- regles=(UN_PARMI('NOM_CAS','NUME_MODE','INST','LIST_INST'),),
- NOM_CAS =SIMP(statut='f',typ='TXM' ),
- NUME_MODE =SIMP(statut='f',typ='I'),
- TYPE_MODE =SIMP(statut='f',typ='TXM',defaut="SYME",into=("SYME","ANTI","TOUS") ),
- INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
- LIST_INST =SIMP(statut='f',typ=listr8_sdaster),
- NUME_INIT =SIMP(statut='f',typ='I', val_min=1),
- NUME_FIN =SIMP(statut='f',typ='I', val_min=1),
- PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3 ),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
- ),
- ),
- ),
-
- b_ecla_pg =BLOC(condition = "OPERATION == 'ECLA_PG'",
-
- TYPE_RESU =SIMP(statut='o',typ='TXM',into=("EVOL_ELAS","EVOL_NOLI","EVOL_THER"), ),
-
- ECLA_PG =FACT(statut='o',
- regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','LIST_INST','LIST_ORDRE'),),
- NOM_CHAM =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',
- into=("SIEF_ELGA","VARI_ELGA","SIEF_ELGA_DEPL","FLUX_ELGA_TEMP",) ),
- MODELE_INIT =SIMP(statut='o',typ=modele_sdaster),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- RESU_INIT =SIMP(statut='o',typ=resultat_sdaster),
- MAILLAGE =SIMP(statut='o',typ=maillage_sdaster),
- TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
- LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster),
- INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
- LIST_INST =SIMP(statut='f',typ=listr8_sdaster),
- PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",) ),
- ),
- ),
-
- b_perm_cham =BLOC(condition = "OPERATION == 'PERM_CHAM'",
-
- TYPE_RESU =SIMP(statut='o',typ='TXM',into=("EVOL_NOLI",) ),
- NOM_CHAM =SIMP(statut='f',typ='TXM',into=("DEPL","SIEF_ELGA","VARI_ELGA",),validators=NoRepeat(),max='**' ),
- RESU_INIT =SIMP(statut='o',typ=evol_noli),
- INST_INIT =SIMP(statut='f',typ='R'),
- PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3),
- CRITERE =SIMP(statut='f',typ='TXM',into=('RELATIF','ABSOLU'),defaut='RELATIF'),
- MAILLAGE_INIT =SIMP(statut='o',typ=maillage_sdaster,),
- RESU_FINAL =SIMP(statut='o',typ=evol_noli,),
- MAILLAGE_FINAL =SIMP(statut='o',typ=maillage_sdaster,),
- PERM_CHAM =FACT(statut='o',max='**',
- GROUP_MA_FINAL =SIMP(statut='o',typ=grma),
- GROUP_MA_INIT =SIMP(statut='o',typ=grma),
- TRAN =SIMP(statut='o',typ='R',max='**'),
- PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3),
- ),
- ),
-
- b_prol_rtz =BLOC(condition = "OPERATION == 'PROL_RTZ'",
-
- TYPE_RESU =SIMP(statut='o',typ='TXM',into=("EVOL_THER",) ),
-
- PROL_RTZ =FACT(statut='o',
- regles=(EXCLUS('INST','LIST_INST'),),
- MAILLAGE_FINAL =SIMP(statut='o',typ=maillage_sdaster,),
- TABLE =SIMP(statut='o',typ=tabl_post_rele,fr="Table issue de post_releve_t"),
- INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
- LIST_INST =SIMP(statut='f',typ=listr8_sdaster),
- b_acce_reel =BLOC(condition="(INST != None)or(LIST_INST != None)",
- PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-6),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
- ),
- PROL_DROITE =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU",),),
- PROL_GAUCHE =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU",),),
- REPERE =SIMP(statut='o',typ='TXM',into=("CYLINDRIQUE",),),
- ORIGINE =SIMP(statut='o',typ='R',min=3,max=3),
- AXE_Z =SIMP(statut='o',typ='R',min=3,max=3),
- ),
- ),
-
-) ;
-#& MODIF COMMANDE DATE 14/11/2005 AUTEUR MCOURTOI M.COURTOIS
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2003 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-def dict_table_types():
- """Extraction des types de table
- """
- from types import ClassType
- # en attendant la résorption des 30 types de table !
- d_table = {}
- for k, v in globals().items():
- if type(v) is ClassType and issubclass(v, table_sdaster):
- d_table[k] = v
- # traduction de type
- d_table['table'] = d_table['table_sdaster']
- d_table['tabl_inte_spec'] = d_table['tabl_intsp']
- return d_table
-
-def into_table_types():
- """Récupération de la liste des type de table.
- """
- return tuple([typ.upper() for typ in dict_table_types().keys()])
-
-def crea_table_prod(TYPE_TABLE,**args):
- """Typage du concept résultat
- """
- d_table = dict_table_types()
- if TYPE_TABLE.lower() in d_table.keys():
- return d_table[TYPE_TABLE.lower()]
- raise AsException("type de concept resultat non prevu")
-
-CREA_TABLE=OPER(nom="CREA_TABLE",op= 36,sd_prod=crea_table_prod,
- fr="Création d'une table à partir d'une fonction ou de deux listes",
- reentrant='n',UIinfo={"groupes":("Table",)},
-
- regles=(EXCLUS('FONCTION','LISTE')),
-
- TYPE_TABLE=SIMP(statut='f',typ='TXM',defaut="TABLE",
- into=into_table_types(),),
- LISTE=FACT(statut='f',min=2,max='**',
- fr="Creation d'une table a partir de listes",
- regles=(UN_PARMI('LISTE_I','LISTE_R','LISTE_K')),
- PARA=SIMP(statut='o',typ='TXM'),
- TYPE_K=SIMP(statut='f',typ='TXM',defaut='K8',
- into=('K8','K16','K24')),
- NUME_LIGN=SIMP(statut='f',typ='I',max='**'),
- LISTE_I=SIMP(statut='f',typ='I',max='**'),
- LISTE_R=SIMP(statut='f',typ='R',max='**'),
- LISTE_K=SIMP(statut='f',typ='TXM', max='**')),
- FONCTION=FACT(statut='f',min=1,max=1,
- fr="Creation d'une table a partir d'une fonction",
- FONCTION=SIMP(statut='o',typ=fonction_sdaster),
- PARA=SIMP(statut='f',typ='TXM',min=2,max=2)),
- TITRE=SIMP(statut='f',typ='TXM',max='**'),
-) ;
-
-
-
-#& MODIF COMMANDE DATE 17/10/2005 AUTEUR MCOURTOI M.COURTOIS
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-DEBUT=MACRO(nom="DEBUT",op=ops.build_debut ,repetable='n',
- UIinfo={"groupes":("Gestion du travail",)},
- fr="Ouverture d'une étude. Allocation des ressources mémoire et disque et fichiers",
- sd_prod=ops.DEBUT,
-
- PAR_LOT =SIMP(fr="mode de traitement des commandes",statut='f',typ='TXM',
- into=("OUI","NON"),defaut="OUI"),
- IMPR_MACRO =SIMP(fr="affichage des sous-commandes produites par les macros dans le fichier mess",
- statut='f',typ='TXM',into=("OUI","NON"),defaut="NON"),
- FORMAT_HDF =SIMP(fr="sauvegarde de la base GLOBALE au format HDF",statut='f',
- typ='TXM',defaut="NON",into=("OUI","NON",) ),
- BASE =FACT(fr="définition des paramètres associés aux bases JEVEUX",
- statut='f',min=1,max=3,
- FICHIER =SIMP(fr="nom de la base",statut='o',typ='TXM',
- into=('GLOBALE','VOLATILE','LOCALE'),),
- TITRE =SIMP(statut='f',typ='TXM'),
- CAS =SIMP(statut='f',typ='TXM'),
- NMAX_ENRE =SIMP(fr="nombre maximum d enregistrements",statut='f',typ='I'),
- LONG_ENRE =SIMP(fr="longueur des enregistrements",statut='f',typ='I'),
- LONG_REPE =SIMP(fr="longueur du répertoire",statut='f',typ='I'),
- ),
- IMPRESSION =FACT(statut='f',min=1,max=3,
- FICHIER =SIMP(statut='o',typ='TXM'),
- UNITE =SIMP(statut='o',typ='I'),
- ),
- CATALOGUE =FACT(statut='f',min=1,max=10,
- FICHIER =SIMP(statut='o',typ='TXM'),
- TITRE =SIMP(statut='f',typ='TXM'),
- UNITE =SIMP(statut='f',typ='I'),
- ),
- CODE =FACT(fr="définition d un nom pour l'ensemble d'une étude",
- statut='f',min=1,max=1,
- NOM =SIMP(statut='o',typ='TXM'),
- NIV_PUB_WEB =SIMP(statut='o',typ='TXM',into=('INTERNET','INTRANET')),
- VISU_EFICAS =SIMP(statut='f',typ='TXM',into=('OUI','NON'),defaut='OUI'),
- UNITE =SIMP(statut='f',typ='I',defaut=15),
- ),
- ERREUR =FACT(fr="comportement en cas d'erreur",statut='f',min=1,max=1,
- ERREUR_F =SIMP(statut='f',typ='TXM',into=('ABORT','EXCEPTION'),defaut='ABORT'),
- ),
- DEBUG =FACT(fr="option de déboggage reservée aux développeurs",
- statut='f',min=1,max=1,
- JXVERI =SIMP(fr="vérifie l intégrité de la segmentation mémoire",
- statut='f',typ='TXM',into=('OUI','NON'),defaut='NON'),
- JEVEUX =SIMP(fr="force les déchargement sur disque",
- statut='f',typ='TXM',into=('OUI','NON'),defaut='NON'),
- ENVIMA =SIMP(fr="imprime les valeurs définies dans ENVIMA",
- statut='f',typ='TXM',into=('TEST',)),
- ),
- MEMOIRE =FACT(fr="mode de gestion mémoire utilisé",statut='f',min=1,max=1,
- GESTION =SIMP(statut='f',typ='TXM',into=('COMPACTE','RAPIDE'),defaut='RAPIDE'),
- TYPE_ALLOCATION =SIMP(statut='f',typ='I',into=(1,2,3,4),defaut=1),
- TAILLE =SIMP(statut='f',typ='I'),
- TAILLE_BLOC =SIMP(statut='f',typ='R',defaut=800.),
- PARTITION =SIMP(statut='f',typ='R'),
- ),
- RESERVE_CPU =FACT(fr="reserve de temps pour terminer une execution",statut='f',max=1,
- regles=(EXCLUS('VALE','POURCENTAGE'),),
- VALE =SIMP(statut='f',typ='I',val_min=0),
- POURCENTAGE =SIMP(statut='f',typ='R',val_min=0.,val_max=1.0),
-# valeur en pourcentage du temps maximum bornée à 180 secondes
- BORNE =SIMP(statut='f',typ='I',val_min=0,defaut=180)
- ),
- );
-#& MODIF COMMANDE DATE 03/10/2005 AUTEUR NICOLAS O.NICOLAS
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-DEFI_BASE_MODALE=OPER(nom="DEFI_BASE_MODALE",op= 99,sd_prod=base_modale,
- reentrant='f',
- fr="Définit la base d'une sous-structuration dynamique ou d'une recombinaison modale",
- UIinfo={"groupes":("Matrices/vecteurs",)},
- regles=(UN_PARMI('CLASSIQUE','RITZ','DIAG_MASS','ORTHO_BASE'),),
- CLASSIQUE =FACT(statut='f',
- INTERF_DYNA =SIMP(statut='o',typ=interf_dyna_clas ),
- MODE_MECA =SIMP(statut='o',typ=mode_meca,max='**' ),
- NMAX_MODE =SIMP(statut='f',typ='I',defaut= 10 ),
- ),
- RITZ =FACT(statut='f',max='**',
- regles=(UN_PARMI('MODE_STAT','MODE_MECA','MULT_ELAS','BASE_MODALE'),),
- MODE_MECA =SIMP(statut='f',typ=mode_meca,max='**' ),
- NMAX_MODE =SIMP(statut='f',typ='I',defaut= 999 ),
- MODE_STAT =SIMP(statut='f',typ=(mode_stat_depl,mode_stat_acce,mode_stat_forc,) ),
- MULT_ELAS =SIMP(statut='f',typ=mult_elas ),
- BASE_MODALE =SIMP(statut='f',typ=base_modale ),
- ),
- b_ritz =BLOC(condition = "RITZ != None",
- INTERF_DYNA =SIMP(statut='f',typ=interf_dyna_clas ),
- NUME_REF =SIMP(statut='o',typ=nume_ddl_sdaster ),
- ORTHO =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),
- fr="Reorthonormalisation de la base de Ritz" ),
- b_ortho =BLOC(condition = "ORTHO == 'OUI' ",
- MATRICE =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_depl_c,matr_asse_gene_r,matr_asse_pres_r ) ),
- ),
- ),
- DIAG_MASS =FACT(statut='f',max='**',
- MODE_MECA =SIMP(statut='o',typ=mode_meca,max='**' ),
- MODE_STAT =SIMP(statut='o',typ=(mode_stat_depl,mode_stat_acce,mode_stat_forc,) ),
- ),
- ORTHO_BASE =FACT(statut='f',max='**',
- BASE =SIMP(statut='o',typ=(mode_meca,mode_stat_depl,mode_stat_acce,mode_stat_forc,mult_elas,base_modale)),
- MATRICE =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_depl_c,matr_asse_gene_r,matr_asse_pres_r ) ),
- ),
- TITRE =SIMP(statut='f',typ='TXM',max='**'),
- INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2003 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-
-from Macro.defi_cable_bp_ops import defi_cable_bp_ops
-
-# ===========================================================================
-# CATALOGUE DE LA MACRO "DEFI_CABLE_BP"
-# -----------------------------------------
-#
-# USAGE :
-# Entrée :
-# - MAILLAGE
-# - MODELE
-# - CABLE
-# - CHAM_MATER
-# - CARA_ELEM
-# - GROUP_MA_BETON
-# - DEFI_CABLE
-# - TENSION_INIT
-# - RECUL_ANCRAGE
-# - RELAXATION
-# - CONE
-# RAYON
-# LONGUEUR
-# PRESENT OUI ou NON deux fois
-# - TITRE
-# - INFO 1 / 2
-#
-# ===========================================================================
-
-DEFI_CABLE_BP=MACRO(nom="DEFI_CABLE_BP",op=defi_cable_bp_ops,sd_prod=cabl_precont,
- fr="Calculer les profils initiaux de tension le long des cables de précontrainte d'une structure en béton",
- reentrant='n',UIinfo={"groupe":("Modélisation",)},
- regles=(ENSEMBLE('MAILLAGE','CONE'),),
- MAILLAGE =SIMP(statut='f',typ=maillage_sdaster),
- MODELE =SIMP(statut='o',typ=modele_sdaster ),
- CHAM_MATER =SIMP(statut='o',typ=cham_mater ),
- CARA_ELEM =SIMP(statut='o',typ=cara_elem ),
- GROUP_MA_BETON =SIMP(statut='o',typ=grma,max='**'),
- DEFI_CABLE =FACT(statut='o',max='**',
- regles=(UN_PARMI('MAILLE','GROUP_MA'),
- UN_PARMI('NOEUD_ANCRAGE','GROUP_NO_ANCRAGE'),),
- MAILLE =SIMP(statut='f',typ=ma,min=2,validators=NoRepeat(),max='**'),
- GROUP_MA =SIMP(statut='f',typ=grma),
- NOEUD_ANCRAGE =SIMP(statut='f',typ=no ,validators=NoRepeat(),max=2),
- GROUP_NO_ANCRAGE=SIMP(statut='f',typ=grno,validators=NoRepeat(),max=2),
- ),
- TYPE_ANCRAGE =SIMP(statut='o',typ='TXM',min=2,max=2,into=("ACTIF","PASSIF") ),
- TENSION_INIT =SIMP(statut='o',typ='R',val_min=0.E+0 ),
- RECUL_ANCRAGE =SIMP(statut='o',typ='R',val_min=0.E+0 ),
- RELAXATION =FACT(statut='f',min=0,
- R_J =SIMP(statut='o',typ='R',val_min=0.E+0 ),
- ),
- CONE =FACT(statut='f',
- RAYON =SIMP(statut='o',typ='R',val_min=0.E+0 ),
- LONGUEUR =SIMP(statut='o',typ='R',val_min=0.E+0 ),
- PRESENT =SIMP(statut='o',typ='TXM',min=2,max=2,into=("OUI","NON") ),
- ),
- TITRE =SIMP(statut='f',typ='TXM',max='**' ),
- INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2003 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-
-DEFI_CABLE_OP=OPER(nom="DEFI_CABLE_OP",op= 180,sd_prod=cabl_precont,reentrant='n',
- fr="Définit les profils initiaux de tension d'une structure en béton le long des cables de précontrainte"
- +" (utilisée par la macro DEFI_CABLE_BP)",
- UIinfo={"groupes":("Modélisation",)},
- MODELE =SIMP(statut='o',typ=modele_sdaster ),
- CHAM_MATER =SIMP(statut='o',typ=cham_mater ),
- CARA_ELEM =SIMP(statut='o',typ=cara_elem ),
- GROUP_MA_BETON =SIMP(statut='o',typ=grma,max='**'),
- DEFI_CABLE =FACT(statut='o',max='**',
- regles=(UN_PARMI('MAILLE','GROUP_MA'),
- UN_PARMI('NOEUD_ANCRAGE','GROUP_NO_ANCRAGE'),),
- MAILLE =SIMP(statut='f',typ=ma,min=2,validators=NoRepeat(),max='**'),
- GROUP_MA =SIMP(statut='f',typ=grma),
- NOEUD_ANCRAGE =SIMP(statut='f',typ=no ,validators=NoRepeat(),max=2),
- GROUP_NO_ANCRAGE=SIMP(statut='f',typ=grno,validators=NoRepeat(),max=2),
- GROUP_NO_FUT =SIMP(statut='f',typ=grno,validators=NoRepeat(),max=2),
- ),
- TYPE_ANCRAGE =SIMP(statut='o',typ='TXM',min=2,max=2,into=("ACTIF","PASSIF") ),
- TENSION_INIT =SIMP(statut='o',typ='R',val_min=0.E+0 ),
- RECUL_ANCRAGE =SIMP(statut='o',typ='R',val_min=0.E+0 ),
- RELAXATION =FACT(statut='f',min=0,
- R_J =SIMP(statut='o',typ='R',val_min=0.E+0 ),
- ),
- TITRE =SIMP(statut='f',typ='TXM',max='**' ),
- INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
- CONE =FACT(statut='f',min=0,
- RAYON =SIMP(statut='o',typ='R',val_min=0.E+0 ),
- LONGUEUR =SIMP(statut='o',typ='R',val_min=0.E+0, defaut=0.E+0 ),
- PRESENT =SIMP(statut='o',typ='TXM',min=2,max=2,into=("OUI","NON") ),
- ),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# RESPONSABLE JMBHH01 J.M.PROIX
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-DEFI_COMPOR=OPER(nom="DEFI_COMPOR",op=59,sd_prod=compor_sdaster,
- fr="Définir le comportement d'un monocristal ou d'un polycristal",
- reentrant='n',
- UIinfo={"groupes":("Modélisation",)},
- regles=(EXCLUS('MONOCRISTAL','POLYCRISTAL'),),
-
- MONOCRISTAL =FACT(statut='f', max='**',
- MATER =SIMP(statut='o', typ=mater_sdaster, max=1),
- ECOULEMENT =SIMP(statut='o', typ='TXM', max=1,
- fr="Donner le nom du mot-clé facteur de DEFI_MATERIAU précisant le type d'écoulement viscoplastique"),
- ECRO_ISOT =SIMP(statut='o', typ='TXM', max=1,
- fr="Donner le nom du mot-clé facteur de DEFI_MATERIAU précisant le type d'écrouissage isotrope"),
- ECRO_CINE =SIMP(statut='o', typ='TXM', max=1,
- fr="Donner le nom du mot-clé facteur de DEFI_MATERIAU précisant le type d'écrouissage cinématique"),
- ELAS =SIMP(statut='f', typ='TXM', max=1,
- fr="Donner le nom du mot-clé facteur de DEFI_MATERIAU précisant le comportement élastique (un et un seul)"),
- FAMI_SYST_GLIS =SIMP(statut='o',typ='TXM', max=1,
- into=('BASAL', 'PRISMATIQUE', 'OCTAEDRIQUE', 'PYRAMIDAL1',
- 'PYRAMIDAL2', 'CUBIQUE1', 'CUBIQUE2', 'MACLAGE', 'JOINT_GRAIN', 'RL', 'UNIAXIAL'),),
- ),
-
-
- POLYCRISTAL =FACT(statut='f', max='**',
- MONOCRISTAL =SIMP(statut='o', typ=compor_sdaster, max=1),
- FRAC_VOL =SIMP(statut='o', typ='R', max=1,fr="fraction volumique de la phase correspondant au monocristal"),
- ANGL_REP =SIMP(statut='o',typ='R',max=3,fr="orientation du monocristal : 3 angles d'Euler en degrés"),
- ),
-
-
- b_poly =BLOC( condition = "POLYCRISTAL!='None'",
- LOCALISATION =SIMP(statut='f', typ='TXM', max=1, into=('BZ', 'BETA', 'RL',),
- fr="Donner le nom de la règle de localisation"),
-
- b_beta =BLOC( condition = "LOCALISATION=='BETA'",
- DL =SIMP(statut='o',typ='R',max=1),
- DA =SIMP(statut='o',typ='R',max=1),
- ),
- ),
-
- );
-
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-DEFI_CONSTANTE=OPER(nom="DEFI_CONSTANTE",op= 2,sd_prod=fonction_sdaster,
- fr="Définir la valeur d'une grandeur invariante",
- reentrant='n',
- UIinfo={"groupes":("Fonction",)},
- NOM_RESU =SIMP(statut='f',typ='TXM',defaut="TOUTRESU"),
- VALE =SIMP(statut='o',typ='R',),
- TITRE =SIMP(statut='f',typ='TXM',max='**'),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-DEFI_COQU_MULT=OPER(nom="DEFI_COQU_MULT",op=56,sd_prod=mater_sdaster,reentrant='n',
- UIinfo={"groupes":("Modélisation",)},
- fr="Déterminer les caractéristiques matériaux homogénéisées d'une coque multicouche à partir"
- +" des caractéristiques de chaque couche",
- COUCHE =FACT(statut='o',max='**',
- EPAIS =SIMP(statut='o',typ='R',val_min=0.E+0 ),
- MATER =SIMP(statut='o',typ=(mater_sdaster) ),
- ORIENTATION =SIMP(statut='f',typ='R',defaut= 0.E+0,
- val_min=-90.E+0,val_max=90.E+0 ),
- ),
- IMPRESSION =FACT(statut='f',
- UNITE =SIMP(statut='f',typ='I',defaut=8),
- ),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2003 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE D6BHHJP J.P.LEFEBVRE
-def DEFIC_prod(self,ACTION,UNITE,**args):
- if ACTION == "ASSOCIER" or ACTION == "RESERVER":
- if UNITE != None :
- return
- else :
- return entier
- elif ACTION == "LIBERER" :
- return
- else :
- raise AsException("ACTION non prevue : %s" % ACTION)
-
-DEFI_FICHIER=MACRO(nom="DEFI_FICHIER",op=ops.build_DEFI_FICHIER,sd_prod=DEFIC_prod,reentrant='n',
- UIinfo={"groupes":("Gestion du travail",)},
- fr="Ouvre ou ferme un fichier associé à un numéro d'unité logique",
-
- ACTION =SIMP(statut='f',typ='TXM',into=("ASSOCIER","LIBERER","RESERVER"),defaut="ASSOCIER"),
-
- b_associer =BLOC(condition = "ACTION == 'ASSOCIER'",
- fr="Paramètres pour l'ouverture du fichier",
- regles=(AU_MOINS_UN('FICHIER','UNITE'),),
- UNITE =SIMP(statut='f',typ='I' ,val_min=1),
- FICHIER =SIMP(statut='f',typ='TXM',validators=LongStr(1,255)),
- TYPE =SIMP(statut='f',typ='TXM',into=("ASCII","BINARY","LIBRE"),defaut="ASCII"),
-
- b_type_ascii =BLOC(condition = "TYPE == 'ASCII'",fr="Paramètres pour le type ASCII",
- ACCES =SIMP(statut='f',typ='TXM',into=("NEW","APPEND","OLD"),defaut="NEW"),
- ),
- b_type_autre =BLOC(condition = "TYPE != 'ASCII'",fr="Paramètres pour les types BINARY et LIBRE",
- ACCES =SIMP(statut='f',typ='TXM',into=("NEW","OLD"),defaut="NEW"),
- ),
- ),
-
- b_reserver =BLOC(condition = "ACTION == 'RESERVER'",
- fr="Paramètres pour la réservation de l'unité du fichier",
- regles=(AU_MOINS_UN('FICHIER','UNITE'),),
- UNITE =SIMP(statut='f',typ='I' ,val_min=1),
- FICHIER =SIMP(statut='f',typ='TXM',validators=LongStr(1,255)),
- TYPE =SIMP(statut='f',typ='TXM',into=("ASCII",),defaut="ASCII"),
- ACCES =SIMP(statut='f',typ='TXM',into=("APPEND",),defaut="APPEND"),
- ),
-
- b_liberer =BLOC(condition = "ACTION == 'LIBERER'",
- fr="Paramètres pour la fermeture du fichier",
- regles=(UN_PARMI('FICHIER','UNITE'),),
- UNITE =SIMP(statut='f',typ='I' ,val_min=1),
- FICHIER =SIMP(statut='f',typ='TXM',validators=LongStr(1,255)),
- ),
-
- INFO =SIMP(statut='f',typ='I',into=(1,2) ),
- )
-#& MODIF COMMANDE DATE 11/10/2005 AUTEUR VABHHTS J.PELLET
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-
-DEFI_FISS_XFEM=OPER(nom="DEFI_FISS_XFEM",op= 41,sd_prod=fiss_xfem,reentrant='f',
- UIinfo={"groupes":("Modélisation",)},
- fr="Définition des caratéristiques d'une fissure avec X-FEM",
-
- MODELE =SIMP(statut='o',typ=modele_sdaster),
- DEFI_FISS =FACT(statut='o',max=01,
- regles =(UN_PARMI('GROUP_MA_FISS','FONC_LT'),
- ENSEMBLE('FONC_LT','FONC_LN'),
- ENSEMBLE('GROUP_MA_FISS','GROUP_MA_FOND')),
- FONC_LT =SIMP(statut='f',typ=(fonction_sdaster,formule) ),
- FONC_LN =SIMP(statut='f',typ=(fonction_sdaster,formule) ),
- GROUP_MA_FISS =SIMP(statut='f',typ=grma,max=01),
- GROUP_MA_FOND =SIMP(statut='f',typ=grma),
- ),
- GROUP_MA_ENRI =SIMP(statut='o',typ=grma,max=01),
- RAYON_ENRI =SIMP(statut='f',typ='R',defaut=0.E+0),
- ORIE_FOND =FACT(statut='o',max=01,
- PFON_INI =SIMP(statut='o',typ='R',max=03),
- VECT_ORIE =SIMP(statut='o',typ='R',max=03),
- PT_ORIGIN =SIMP(statut='o',typ='R',max=03),
- ),
- CONTACT =FACT(statut='o',max=01,
- NOM_CHAM =SIMP(statut='f',typ='TXM',defaut="DEPL",into=("DEPL",) ),
- FROTTEMENT =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","COULOMB",) ),
- INTEGRATION =SIMP(statut='f',typ='TXM',defaut="FPG4",into=("GAUSS","FPG4","FPG6","FPG7",) ),
- COEF_REGU_CONT =SIMP(statut='f',typ='R',defaut=100.E+0),
- MODL_AXIS =SIMP(statut='f',typ='TXM',into=("NON",)),
- ITER_CONT_MAXI =SIMP(statut='f',typ='I',defaut=30),
- CONTACT_INIT =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON",) ),
- ALGO_LAGR =SIMP(statut='f',typ='TXM',defaut="VERSION1",into=("NON","VERSION1","VERSION2" , ) ),
- b_frottement =BLOC(condition = "FROTTEMENT == 'COULOMB' ",fr="Paramères du frottement de Coulomb",
- COULOMB =SIMP(statut='o',typ='R',),
- ITER_FROT_MAXI =SIMP(statut='f',typ='I',defaut=2),
- COEF_REGU_FROT =SIMP(statut='f',typ='R',defaut=100.E+0),
- SEUIL_INIT =SIMP(statut='f',typ='R',defaut=0.E+0),),
- ),
- INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2,3,) ),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-DEFI_FLUI_STRU=OPER(nom="DEFI_FLUI_STRU",op= 143,sd_prod=type_flui_stru,
- reentrant='n',fr="Définit les caractéristiques nécessaires à l'étude dynamique d'une structure sous écoulement",
- UIinfo={"groupes":("Maillage",)},
- regles=( UN_PARMI('FAISCEAU_TRANS','GRAPPE','FAISCEAU_AXIAL','COQUE_COAX',),),
- FAISCEAU_TRANS =FACT(statut='f',max='**',
- regles=( ENSEMBLE('CSTE_CONNORS','NB_CONNORS','RHO_TUBE'),),
- COUPLAGE =SIMP(statut='f',typ='TXM',into=("OUI","NON") ),
- CARA_ELEM =SIMP(statut='f',typ=cara_elem ),
- PROF_VITE_FLUI =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- PROF_RHO_F_INT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- PROF_RHO_F_EXT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- NOM_CMP =SIMP(statut='f',typ='TXM',into=("DX","DY","DZ") ),
- COEF_MASS_AJOU =SIMP(statut='f',typ='R' ),
- TYPE_PAS =SIMP(statut='f',typ='TXM',into=("CARRE_LIGN","TRIA_LIGN") ),
- TYPE_RESEAU =SIMP(statut='f',typ='I' ),
- UNITE_CD =SIMP(statut='f',typ='I',defaut=70),
- UNITE_CK =SIMP(statut='f',typ='I',defaut=71),
- PAS =SIMP(statut='f',typ='R' ),
- CSTE_CONNORS =SIMP(statut='f',typ='R',min=2,max=2,val_min=0.E+00),
- NB_CONNORS =SIMP(statut='f',typ='I',val_min=2,),
- RHO_TUBE =SIMP(statut='f',typ='R' ),
- ),
- GRAPPE =FACT(statut='f',
- regles=(ENSEMBLE('GRAPPE_2','NOEUD','CARA_ELEM','MODELE','RHO_FLUI',),
- PRESENT_PRESENT('COEF_MASS_AJOU','GRAPPE_2', ),),
-# peut on créer un bloc a partir de la valeur de couplage
- COUPLAGE =SIMP(statut='o',typ='TXM',into=("OUI","NON") ),
- GRAPPE_2 =SIMP(statut='f',typ='TXM',
- into=("ASC_CEN","ASC_EXC","DES_CEN","DES_EXC") ),
- NOEUD =SIMP(statut='f',typ=no),
- CARA_ELEM =SIMP(statut='f',typ=cara_elem ),
- MODELE =SIMP(statut='f',typ=modele_sdaster ),
- COEF_MASS_AJOU =SIMP(statut='f',typ='R' ),
- RHO_FLUI =SIMP(statut='f',typ='R' ),
- UNITE_CA =SIMP(statut='f',typ='I',defaut=70),
- UNITE_KA =SIMP(statut='f',typ='I',defaut=71),
- ),
- FAISCEAU_AXIAL =FACT(statut='f',max='**',
- regles=(UN_PARMI('GROUP_MA','TRI_GROUP_MA'),
- UN_PARMI('CARA_ELEM','RAYON_TUBE'),
- ENSEMBLE('RAYON_TUBE','COOR_TUBE'),
- PRESENT_ABSENT('RAYON_TUBE','TRI_GROUP_MA'),
- ENSEMBLE('CARA_PAROI','VALE_PAROI'),
- ENSEMBLE('LONG_TYPG','LARG_TYPG','EPAI_TYPG','RUGO_TYPG','COEF_TRAI_TYPG','COEF_DPOR_TYPG',
- 'COOR_GRILLE','TYPE_GRILLE', ),),
-# on doit pouvoir mettre des blocs conditionnels mais pas assez d infos pour le faire
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- TRI_GROUP_MA =SIMP(statut='f',typ='TXM' ),
- VECT_X =SIMP(statut='f',typ='R',max=3),
- PROF_RHO_FLUI =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- PROF_VISC_CINE =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- CARA_ELEM =SIMP(statut='f',typ=cara_elem ),
- RAYON_TUBE =SIMP(statut='f',typ='R' ),
- COOR_TUBE =SIMP(statut='f',typ='R',max='**'),
- PESANTEUR =SIMP(statut='f',typ='R',min=4,max=4),
- RUGO_TUBE =SIMP(statut='f',typ='R' ),
- CARA_PAROI =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=5,
- into=("YC","ZC","R","HY","HZ") ),
- VALE_PAROI =SIMP(statut='f',typ='R',max=5),
- ANGL_VRIL =SIMP(statut='f',typ='R' ),
- LONG_TYPG =SIMP(statut='f',typ='R',max='**',val_min=0.E+0),
- LARG_TYPG =SIMP(statut='f',typ='R',max='**',val_min=0.E+0),
- EPAI_TYPG =SIMP(statut='f',typ='R',max='**',val_min=0.E+0),
- RUGO_TYPG =SIMP(statut='f',typ='R',max='**',val_min=0.E+0),
- COEF_TRAI_TYPG =SIMP(statut='f',typ='R',max='**',val_min=0.E+0),
- COEF_DPOR_TYPG =SIMP(statut='f',typ='R',max='**'),
- COOR_GRILLE =SIMP(statut='f',typ='R',max='**'),
- TYPE_GRILLE =SIMP(statut='f',typ='I',max='**'),
- ),
- COQUE_COAX =FACT(statut='f',
- MASS_AJOU =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
- GROUP_MA_INT =SIMP(statut='o',typ=grma),
- GROUP_MA_EXT =SIMP(statut='o',typ=grma),
- VECT_X =SIMP(statut='o',typ='R',max='**'),
- CARA_ELEM =SIMP(statut='o',typ=cara_elem ),
- MATER_INT =SIMP(statut='o',typ=mater_sdaster ),
- MATER_EXT =SIMP(statut='o',typ=mater_sdaster ),
- RHO_FLUI =SIMP(statut='o',typ='R' ),
- VISC_CINE =SIMP(statut='o',typ='R' ),
- RUGOSITE =SIMP(statut='o',typ='R' ),
- PDC_MOY_1 =SIMP(statut='o',typ='R' ),
- PDC_DYN_1 =SIMP(statut='o',typ='R' ),
- PDC_MOY_2 =SIMP(statut='o',typ='R' ),
- PDC_DYN_2 =SIMP(statut='o',typ='R' ),
- ),
- INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-DEFI_FONC_ELEC=OPER(nom="DEFI_FONC_ELEC",op=64,sd_prod=fonction_sdaster,reentrant='n',
- UIinfo={"groupes":("Outils métier",)},
- fr="Définir une fonction du temps intervenant dans le calcul des forces de LAPLACE",
- regles=(UN_PARMI('COUR_PRIN','COUR'),
- EXCLUS('COUR','COUR_SECO'), ),
- FREQ =SIMP(statut='f',typ='R',defaut= 50.),
- SIGNAL =SIMP(statut='f',typ='TXM',defaut="COMPLET",into=("COMPLET","CONTINU") ),
- COUR =FACT(statut='f',max='**',
- fr="Définition du courant de court-circuit",
- regles=(UN_PARMI('PHI_CC_1','INTC_CC_1'),
- UN_PARMI('PHI_CC_2','INTC_CC_2'),),
- INTE_CC_1 =SIMP(statut='o',typ='R'),
- TAU_CC_1 =SIMP(statut='o',typ='R'),
- PHI_CC_1 =SIMP(statut='f',typ='R'),
- INTC_CC_1 =SIMP(statut='f',typ='R'),
- INTE_CC_2 =SIMP(statut='o',typ='R'),
- TAU_CC_2 =SIMP(statut='o',typ='R'),
- PHI_CC_2 =SIMP(statut='f',typ='R'),
- INTC_CC_2 =SIMP(statut='f',typ='R'),
- INST_CC_INIT =SIMP(statut='o',typ='R'),
- INST_CC_FIN =SIMP(statut='o',typ='R'),
- ),
- COUR_PRIN =FACT(statut='f',
- fr="Définition du courant de court-circuit avec réenclenchement",
- regles=(UN_PARMI('PHI_CC_1','INTC_CC_1'),),
- INTE_CC_1 =SIMP(statut='o',typ='R'),
- TAU_CC_1 =SIMP(statut='o',typ='R'),
- PHI_CC_1 =SIMP(statut='f',typ='R'),
- INTC_CC_1 =SIMP(statut='f',typ='R'),
- INTE_RENC_1 =SIMP(statut='f',typ='R'),
- TAU_RENC_1 =SIMP(statut='f',typ='R'),
- PHI_RENC_1 =SIMP(statut='f',typ='R'),
- INST_CC_INIT =SIMP(statut='o',typ='R'),
- INST_CC_FIN =SIMP(statut='o',typ='R'),
- INST_RENC_INIT =SIMP(statut='f',typ='R',defaut= 0.0E+0),
- INST_RENC_FIN =SIMP(statut='f',typ='R',defaut= 0.0E+0),
- ),
- COUR_SECO =FACT(statut='f',max='**',
- fr="Définition du courant de court-circuit avec un intervalle de temps différent de celui de COUR_PRIN",
- regles=(UN_PARMI('PHI_CC_2','INTC_CC_2'),),
- INTE_CC_2 =SIMP(statut='o',typ='R'),
- TAU_CC_2 =SIMP(statut='o',typ='R'),
- PHI_CC_2 =SIMP(statut='f',typ='R'),
- INTC_CC_2 =SIMP(statut='f',typ='R'),
- INTE_RENC_2 =SIMP(statut='f',typ='R'),
- TAU_RENC_2 =SIMP(statut='f',typ='R'),
- PHI_RENC_2 =SIMP(statut='f',typ='R'),
- DIST =SIMP(statut='f',typ='R',defaut=1.0E+0),
- ),
- INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-DEFI_FONC_FLUI=OPER(nom="DEFI_FONC_FLUI",op= 142,sd_prod=fonction_sdaster,
- reentrant='n',
- fr="Définit un profil de vitesse d'écoulement fluide le long d'une poutre",
- UIinfo={"groupes":("Fonction",)},
- MAILLAGE =SIMP(statut='o',typ=(maillage_sdaster) ),
- NOEUD_INIT =SIMP(statut='o',typ=no),
- NOEUD_FIN =SIMP(statut='o',typ=no),
- VITE =FACT(statut='o',
- VALE =SIMP(statut='f',typ='R',defaut= 1. ),
- PROFIL =SIMP(statut='o',typ='TXM',into=("UNIFORME","LEONARD") ),
- NB_BAV =SIMP(statut='f',typ='I',defaut= 0,into=( 0 , 2 , 3 ) ),
- ),
- INTERPOL =SIMP(statut='f',typ='TXM',max=2,defaut="LIN",
- into=("NON","LIN","LOG") ),
- PROL_DROITE =SIMP(statut='f',typ='TXM',defaut="EXCLU",
- into=("CONSTANT","LINEAIRE","EXCLU") ),
- PROL_GAUCHE =SIMP(statut='f',typ='TXM' ,defaut="EXCLU",
- into=("CONSTANT","LINEAIRE","EXCLU") ),
- INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2 ) ),
- TITRE =SIMP(statut='f',typ='TXM',max='**'),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE MCOURTOI M.COURTOIS
-def defi_fonction_prod(VALE,VALE_PARA,VALE_C,NOEUD_PARA,**args):
- if VALE != None : return fonction_sdaster
- if VALE_C != None : return fonction_c
- if VALE_PARA != None : return fonction_sdaster
- if NOEUD_PARA != None : return fonction_sdaster
- raise AsException("type de concept resultat non prevu")
-
-DEFI_FONCTION=OPER(nom="DEFI_FONCTION",op=3,sd_prod=defi_fonction_prod
- ,fr="Définit une fonction réelle ou complexe d'une variable réelle",
- reentrant='n',
- UIinfo={"groupes":("Fonction",)},
- regles=(UN_PARMI('VALE','VALE_C','VALE_PARA','NOEUD_PARA'),),
- NOM_PARA =SIMP(statut='o',typ='TXM',into=C_PARA_FONCTION() ),
- NOM_RESU =SIMP(statut='f',typ='TXM',defaut="TOUTRESU"),
- VALE =SIMP(statut='f',typ='R',min=2,max='**',
- fr ="Fonction réelle définie par une liste de couples (abscisse,ordonnée)"),
- VALE_C =SIMP(statut='f',typ='R',min=2,max='**',
- fr ="Fonction complexe définie par une liste de couples"),
- VALE_PARA =SIMP(statut='f',typ=listr8_sdaster,
- fr ="Fonction réelle définie par deux concepts de type listr8" ),
- b_vale_para =BLOC(condition = "VALE_PARA != None",
- VALE_FONC =SIMP(statut='o',typ=listr8_sdaster ),
- ),
- NOEUD_PARA =SIMP(statut='f',typ=no,max='**',
- fr ="Fonction réelle définie par une liste de noeuds et un maillage"),
- b_noeud_para =BLOC(condition = "NOEUD_PARA != None",
- MAILLAGE =SIMP(statut='o',typ=maillage_sdaster ),
- VALE_Y =SIMP(statut='o',typ='R',max='**'),
- ),
-
- INTERPOL =SIMP(statut='f',typ='TXM',max=2,defaut="LIN",into=("NON","LIN","LOG") ),
- PROL_DROITE =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU") ),
- PROL_GAUCHE =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU") ),
- VERIF =SIMP(statut='f',typ='TXM',defaut="CROISSANT",into=("CROISSANT","NON") ),
- INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
- TITRE =SIMP(statut='f',typ='TXM',max='**'),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-DEFI_FOND_FISS=OPER(nom="DEFI_FOND_FISS",op=55,sd_prod=fond_fiss,reentrant='n',
- UIinfo={"groupes":("Post traitements",)},
- fr="Définition de lèvres et d'un fond de fissure en 3D",
- regles=(UN_PARMI('FOND_FISS','FOND_FERME'),
- EXCLUS('FOND_FERME','DTAN_ORIG'),
- EXCLUS('FOND_FERME','DTAN_EXTR'),
- EXCLUS('FOND_FERME','VECT_GRNO_ORIG'),
- EXCLUS('FOND_FERME','VECT_GRNO_EXTR'),
- UN_PARMI('LEVRE_SUP','NORMALE'),
- EXCLUS('LEVRE_INF','NORMALE'),
- ENSEMBLE('DTAN_ORIG','DTAN_EXTR'),
- ENSEMBLE('VECT_GRNO_ORIG','VECT_GRNO_EXTR'),
- EXCLUS('DTAN_ORIG','VECT_GRNO_ORIG'),
- EXCLUS('DTAN_EXTR','VECT_GRNO_EXTR') ,),
- MAILLAGE =SIMP(statut='o',typ=maillage_sdaster ),
- FOND_FISS =FACT(statut='f',
- regles=(UN_PARMI('GROUP_NO','NOEUD','GROUP_MA','MAILLE'),
- EXCLUS('NOEUD_ORIG','GROUP_NO_ORIG'),
- EXCLUS('NOEUD_EXTR','GROUP_NO_EXTR'),),
- GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
-# à mettre à jour le max vaut-il 1
- NOEUD_ORIG =SIMP(statut='f',typ=no,),
- GROUP_NO_ORIG =SIMP(statut='f',typ=grno,),
- NOEUD_EXTR =SIMP(statut='f',typ=no,),
- GROUP_NO_EXTR =SIMP(statut='f',typ=grno,),
- ),
- FOND_FERME =FACT(statut='f',
- regles=(UN_PARMI('GROUP_NO','NOEUD','GROUP_MA','MAILLE'),
- EXCLUS('NOEUD_ORIG','GROUP_NO_ORIG'),),
- GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- NOEUD_ORIG =SIMP(statut='f',typ=no,),
- GROUP_NO_ORIG =SIMP(statut='f',typ=grno,),
- MAILLE_ORIG =SIMP(statut='f',typ=ma,),
- GROUP_MA_ORIG =SIMP(statut='f',typ=ma,),
- ),
- LEVRE_SUP =FACT(statut='f',
- regles=(UN_PARMI('GROUP_MA','MAILLE'),),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- ),
- LEVRE_INF =FACT(statut='f',
- regles=(UN_PARMI('GROUP_MA','MAILLE', ),),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- ),
- NORMALE =SIMP(statut='f',typ='R',max='**'),
- DTAN_ORIG =SIMP(statut='f',typ='R',max='**'),
- DTAN_EXTR =SIMP(statut='f',typ='R',max='**'),
- VECT_GRNO_ORIG =SIMP(statut='f',typ=grno,validators=NoRepeat(),max=2),
- VECT_GRNO_EXTR =SIMP(statut='f',typ=grno,validators=NoRepeat(),max=2),
- INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
-) ;
-#& MODIF COMMANDE DATE 04/07/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE VABHHTS J.PELLET
-def defi_group_prod(MAILLAGE,**args):
- if AsType(MAILLAGE) == maillage_sdaster : return maillage_sdaster
- if AsType(MAILLAGE) == squelette : return squelette
- raise AsException("type de concept resultat non prevu")
-
-DEFI_GROUP=OPER(nom="DEFI_GROUP",op= 104,sd_prod=defi_group_prod,
- fr="Définition de nouveaux groupes de noeuds et/ou de mailles dans un concept maillage",
- reentrant='o',
- UIinfo={"groupes":("Maillage",)},
- regles=(AU_MOINS_UN('CREA_GROUP_MA','CREA_GROUP_NO','DETR_GROUP_NO','DETR_GROUP_MA'),),
- MAILLAGE =SIMP(statut='o',typ=(maillage_sdaster,squelette) ),
- DETR_GROUP_MA =FACT(statut='f',max='**',
- NOM =SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**'),),
- DETR_GROUP_NO =FACT(statut='f',max='**',
- NOM =SIMP(statut='o',typ=grno,validators=NoRepeat(),max='**'),),
- CREA_GROUP_MA =FACT(statut='f',max='**',
-
-regles=(UN_PARMI('TOUT','GROUP_MA','MAILLE','INTERSEC','UNION','DIFFE','OPTION'),),
-# quel est le concept attendu deriere NOM
- NOM =SIMP(statut='o',typ=grma),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- INTERSEC =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- UNION =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- DIFFE =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- OPTION =SIMP(statut='f',typ='TXM',into=("FACE_NORMALE","SPHERE","CYLINDRE","BANDE","APPUI_LACHE") ),
- b_group_ma =BLOC(condition = "GROUP_MA != None",
- regles=(EXCLUS('POSITION','NUME_INIT'),),
- NUME_INIT =SIMP(statut='f',typ='I'),
- POSITION =SIMP(statut='f',typ='TXM',into=("INIT","FIN","MILIEU") ),
- b_nume_init =BLOC(condition = "NUME_INIT != None",
- NUME_FIN =SIMP(statut='f',typ='I' ),
- ),
- ),
- b_face_normale =BLOC(condition = "OPTION == 'FACE_NORMALE'",
- regles=(UN_PARMI('ANGL_NAUT','VECT_NORMALE'),),
- ANGL_NAUT =SIMP(statut='f',typ='R',max=2),
- VECT_NORMALE =SIMP(statut='f',typ='R',max=3),
- ANGL_PREC =SIMP(statut='f',typ='R',defaut= 0.5 ),
- VERI_SIGNE =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
- ),
- b_sphere =BLOC(condition = "OPTION == 'SPHERE'",
- regles=(UN_PARMI('POINT','NOEUD_CENTRE','GROUP_NO_CENTRE'),),
- POINT =SIMP(statut='f',typ='R',max=3),
- NOEUD_CENTRE =SIMP(statut='f',typ=no),
- GROUP_NO_CENTRE =SIMP(statut='f',typ=grno),
- RAYON =SIMP(statut='o',typ='R' ),
- ),
- b_cylindre =BLOC(condition = "OPTION == 'CYLINDRE'",
- regles=(UN_PARMI('POINT','NOEUD_CENTRE','GROUP_NO_CENTRE'),
- UN_PARMI('ANGL_NAUT','VECT_NORMALE'),),
- POINT =SIMP(statut='f',typ='R',max=3),
- NOEUD_CENTRE =SIMP(statut='f',typ=no),
- GROUP_NO_CENTRE =SIMP(statut='f',typ=grno),
- RAYON =SIMP(statut='o',typ='R' ),
- ANGL_NAUT =SIMP(statut='f',typ='R',max=2),
- VECT_NORMALE =SIMP(statut='f',typ='R',max=3),
- ),
- b_bande =BLOC(condition = "OPTION == 'BANDE'",
- regles=(UN_PARMI('POINT','NOEUD_CENTRE','GROUP_NO_CENTRE'),
- UN_PARMI('ANGL_NAUT','VECT_NORMALE'),),
- POINT =SIMP(statut='f',typ='R' ,max=3),
- NOEUD_CENTRE =SIMP(statut='f',typ=no ,validators=NoRepeat(),max=1),
- GROUP_NO_CENTRE =SIMP(statut='f',typ=grno,validators=NoRepeat(),max=1),
- DIST =SIMP(statut='o',typ='R' ),
- ANGL_NAUT =SIMP(statut='f',typ='R',max=2),
- VECT_NORMALE =SIMP(statut='f',typ='R',max=3),
- ),
- b_app_lache =BLOC(condition = "OPTION == 'APPUI_LACHE'",
- regles=(UN_PARMI('NOEUD','GROUP_NO'),),
- NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- ),
- ),
- CREA_GROUP_NO =FACT(statut='f',max='**',
- OPTION =SIMP(statut='f',typ='TXM',into=("ENV_SPHERE","ENV_CYLINDRE","PLAN",
- "SEGM_DROI_ORDO","NOEUD_ORDO","TUNNEL") ),
-
- b_option =BLOC(condition = "OPTION == None" ,
- regles=(UN_PARMI('TOUT_GROUP_MA','GROUP_MA','GROUP_NO','NOEUD',
- 'INTERSEC','UNION','DIFFE'),),
- TOUT_GROUP_MA =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- INTERSEC =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- UNION =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- DIFFE =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
-
- b_nom_group_ma =BLOC(condition = "GROUP_MA != None",
- NOM = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- CRIT_NOEUD = SIMP(statut='f',typ='TXM',defaut="TOUS",
- into=("TOUS","SOMMET","MILIEU","CENTRE"),),
- ),
- b_group_no =BLOC(condition = "GROUP_NO != None",
- regles=(EXCLUS('POSITION','NUME_INIT'),),
- NUME_INIT =SIMP(statut='f',typ='I'),
- POSITION =SIMP(statut='f',typ='TXM',into=("INIT","FIN","MILIEU") ),
- b_nume_init =BLOC(condition = "NUME_INIT != None",
- NUME_FIN =SIMP(statut='f',typ='I' ),
- ),
- ),
- b_nom =BLOC(condition = "GROUP_MA == None and TOUT_GROUP_MA == None" ,
- NOM =SIMP(statut='o',typ=geom),
- ),
- ),
-
- b_env_sphere =BLOC(condition = "OPTION == 'ENV_SPHERE'",
- regles=(UN_PARMI('POINT','NOEUD_CENTRE','GROUP_NO_CENTRE'),),
- NOM =SIMP(statut='o',typ=geom),
- POINT =SIMP(statut='f',typ='R' ,max=3),
- NOEUD_CENTRE =SIMP(statut='f',typ=no ,validators=NoRepeat(),max=1),
- GROUP_NO_CENTRE =SIMP(statut='f',typ=grno,validators=NoRepeat(),max=1),
- RAYON =SIMP(statut='o',typ='R' ),
- PRECISION =SIMP(statut='o',typ='R' ),
- ),
- b_env_cylindre =BLOC(condition = "OPTION == 'ENV_CYLINDRE'",
- regles=(UN_PARMI('POINT','NOEUD_CENTRE','GROUP_NO_CENTRE'),
- UN_PARMI('ANGL_NAUT','VECT_NORMALE'),),
- NOM =SIMP(statut='o',typ=geom),
- POINT =SIMP(statut='f',typ='R' ,max=3),
- NOEUD_CENTRE =SIMP(statut='f',typ=no ,validators=NoRepeat(),max=1),
- GROUP_NO_CENTRE =SIMP(statut='f',typ=grno,validators=NoRepeat(),max=1),
- RAYON =SIMP(statut='o',typ='R' ),
- ANGL_NAUT =SIMP(statut='f',typ='R',max=3),
- VECT_NORMALE =SIMP(statut='f',typ='R',max=3),
- PRECISION =SIMP(statut='o',typ='R' ),
- ),
- b_env_plan =BLOC(condition = "OPTION == 'PLAN'",
- regles=(UN_PARMI('POINT','NOEUD_CENTRE','GROUP_NO_CENTRE'),
- UN_PARMI('ANGL_NAUT','VECT_NORMALE'),),
- NOM =SIMP(statut='o',typ=geom),
- POINT =SIMP(statut='f',typ='R' ,max=3),
- NOEUD_CENTRE =SIMP(statut='f',typ=no ,validators=NoRepeat(),max=1),
- GROUP_NO_CENTRE =SIMP(statut='f',typ=grno,validators=NoRepeat(),max=1),
- ANGL_NAUT =SIMP(statut='f',typ='R' ,max=3),
- VECT_NORMALE =SIMP(statut='f',typ='R' ,max=3),
- PRECISION =SIMP(statut='o',typ='R' ),
- ),
- b_segm_droi_ordo=BLOC(condition = "OPTION == 'SEGM_DROI_ORDO'",
- regles=(AU_MOINS_UN('NOEUD','GROUP_NO'),
- UN_PARMI('NOEUD_ORIG','GROUP_NO_ORIG'),
- UN_PARMI('NOEUD_EXTR','GROUP_NO_EXTR'),),
- NOM =SIMP(statut='o',typ=geom),
- NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- NOEUD_ORIG =SIMP(statut='f',typ=no),
- GROUP_NO_ORIG =SIMP(statut='f',typ=grno),
- NOEUD_EXTR =SIMP(statut='f',typ=no),
- GROUP_NO_EXTR =SIMP(statut='f',typ=grno),
- PRECISION =SIMP(statut='o',typ='R' ),
- CRITERE =SIMP(statut='o',typ='TXM',into=("ABSOLU","RELATIF") ),
- ),
- b_noeud_ordo =BLOC(condition = "OPTION == 'NOEUD_ORDO'",
- regles=(EXCLUS('NOEUD_ORIG','GROUP_NO_ORIG'),
- EXCLUS('NOEUD_EXTR','GROUP_NO_EXTR'),),
- NOM =SIMP(statut='o',typ=geom),
- GROUP_MA =SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**'),
- NOEUD_ORIG =SIMP(statut='f',typ=no),
- GROUP_NO_ORIG =SIMP(statut='f',typ=grno),
- NOEUD_EXTR =SIMP(statut='f',typ=no),
- GROUP_NO_EXTR =SIMP(statut='f',typ=grno),
- ),
- b_tunnel =BLOC(condition = "OPTION == 'TUNNEL'",
- regles=(AU_MOINS_UN ('TOUT','GROUP_MA','MAILLE'),
- EXCLUS('NOEUD_ORIG','GROUP_NO_ORIG'),
- AU_MOINS_UN ('GROUP_MA_AXE','MAILLE_AXE'),),
- NOM =SIMP(statut='o',typ=geom),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_MA_AXE =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE_AXE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- NOEUD_ORIG =SIMP(statut='f',typ=no),
- GROUP_NO_ORIG =SIMP(statut='f',typ=grno),
- RAYON =SIMP(statut='o',typ='R'),
- LONGUEUR =SIMP(statut='f',typ='R'),
- ),
- ),
- ALARME =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
- INFO =SIMP(statut='f',typ='I',into=( 1 , 2 ) ),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-DEFI_INTE_SPEC=OPER(nom="DEFI_INTE_SPEC",op= 115,sd_prod=tabl_intsp,
- reentrant='n',fr="Définit une matrice interspectrale",
- UIinfo={"groupes":("Fonction",)},
-
- DIMENSION =SIMP(statut='f',typ='I',defaut= 1 ),
-
- PAR_FONCTION =FACT(statut='f',max='**',
- NUME_ORDRE_I =SIMP(statut='o',typ='I' ),
- NUME_ORDRE_J =SIMP(statut='o',typ='I' ),
- FONCTION =SIMP(statut='o',typ=fonction_c ),
- ),
- KANAI_TAJIMI =FACT(statut='f',max='**',
- regles=(EXCLUS('VALE_R','VALE_C'),),
- NUME_ORDRE_I =SIMP(statut='o',typ='I' ),
- NUME_ORDRE_J =SIMP(statut='o',typ='I' ),
- FREQ_MIN =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- FREQ_MAX =SIMP(statut='f',typ='R',defaut= 100. ),
- PAS =SIMP(statut='f',typ='R',defaut= 1. ),
- AMOR_REDUIT =SIMP(statut='f',typ='R',defaut= 0.6 ),
- FREQ_MOY =SIMP(statut='f',typ='R',defaut= 5. ),
- VALE_R =SIMP(statut='f',typ='R' ),
- VALE_C =SIMP(statut='f',typ='C' ),
- INTERPOL =SIMP(statut='f',typ='TXM',max=2,defaut="LIN",into=("NON","LIN","LOG") ),
- PROL_DROITE =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU") ),
- PROL_GAUCHE =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU") ),
- ),
- CONSTANT =FACT(statut='f',max='**',
- regles=(EXCLUS('VALE_R','VALE_C'),),
- NUME_ORDRE_I =SIMP(statut='o',typ='I' ),
- NUME_ORDRE_J =SIMP(statut='o',typ='I' ),
- FREQ_MIN =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- FREQ_MAX =SIMP(statut='f',typ='R',defaut= 100. ),
- PAS =SIMP(statut='f',typ='R',defaut= 1. ),
- VALE_R =SIMP(statut='f',typ='R' ),
- VALE_C =SIMP(statut='f',typ='C' ),
- INTERPOL =SIMP(statut='f',typ='TXM',max=2,defaut="LIN",into=("NON","LIN","LOG") ),
- PROL_DROITE =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU") ),
- PROL_GAUCHE =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU") ),
- ),
- TITRE =SIMP(statut='f',typ='TXM',max='**'),
- INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-DEFI_INTERF_DYNA=OPER(nom="DEFI_INTERF_DYNA",op= 98,sd_prod=interf_dyna_clas,
- reentrant='n',
- UIinfo={"groupes":("Matrices/vecteurs",)},
- fr="Définir les interfaces d'une structure et leur affecter un type",
- NUME_DDL =SIMP(statut='o',typ=nume_ddl_sdaster ),
- INTERFACE =FACT(statut='o',max='**',
- regles=(ENSEMBLE('NOM','TYPE'),
-# erreur doc U sur la condition qui suit
- UN_PARMI('NOEUD','GROUP_NO'),),
- NOM =SIMP(statut='f',typ='TXM' ),
- TYPE =SIMP(statut='f',typ='TXM',into=("MNEAL","CRAIGB","CB_HARMO","AUCUN") ),
- NOEUD =SIMP(statut='f',typ=no,max='**'),
- GROUP_NO =SIMP(statut='f',typ=grno,max='**'),
- DDL_ACTIF =SIMP(statut='f',typ='TXM',max='**'),
- MASQUE =SIMP(statut='f',typ='TXM',max='**'),
- ),
- FREQ =SIMP(statut='f',typ='R',defaut= 1.),
- INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE VABHHTS J.PELLET
-DEFI_LIST_ENTI=OPER(nom="DEFI_LIST_ENTI",op=22,sd_prod=listis_sdaster,
- fr="Définir une liste d'entier strictement croissante",
- reentrant='n',
- UIinfo={"groupes":("Fonction",)},
- regles=(UN_PARMI('VALE','DEBUT'),
- EXCLUS('VALE','INTERVALLE'),),
- VALE =SIMP(statut='f',typ='I',max='**'),
- DEBUT =SIMP(statut='f',typ='I'),
- INTERVALLE =FACT(statut='f',max='**',
- regles=(UN_PARMI('NOMBRE','PAS'),),
- JUSQU_A =SIMP(statut='o',typ='I'),
- NOMBRE =SIMP(statut='f',typ='I',val_min=1,),
- PAS =SIMP(statut='f',typ='I',val_min=1,),
- ),
- INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
- TITRE =SIMP(statut='f',typ='TXM',max='**'),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE VABHHTS J.PELLET
-DEFI_LIST_REEL=OPER(nom="DEFI_LIST_REEL",op=24,sd_prod=listr8_sdaster,
- fr="Définir une liste de réels strictement croissante",
- reentrant='n',
- UIinfo={"groupes":("Fonction",)},
- regles=(UN_PARMI('VALE','DEBUT',),
- EXCLUS('VALE','INTERVALLE'),
- ENSEMBLE('DEBUT','INTERVALLE')),
- VALE =SIMP(statut='f',typ='R',max='**'),
- DEBUT =SIMP(statut='f',typ='R'),
- INTERVALLE =FACT(statut='f',max='**',
- regles=(UN_PARMI('NOMBRE','PAS'),),
- JUSQU_A =SIMP(statut='o',typ='R'),
- NOMBRE =SIMP(statut='f',typ='I'),
- PAS =SIMP(statut='f',typ='R'),
- ),
- INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
- TITRE =SIMP(statut='f',typ='TXM',max='**'),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE VABHHTS J.PELLET
-DEFI_MAILLAGE=OPER(nom="DEFI_MAILLAGE",op= 88,sd_prod=maillage_sdaster,
- fr="Définition d'un nouveau maillage à partir de macro-éléments",
- reentrant='n',
- UIinfo={"groupes":("Maillage",)},
- DEFI_MAILLE =FACT(statut='o',max='**',
- MACR_ELEM_STAT =SIMP(statut='o',typ=macr_elem_stat,max='**' ),
- MAILLE =SIMP(statut='f',typ=ma,max='**'),
- TRAN =SIMP(statut='f',typ='R',max=3),
- ANGL_NAUT =SIMP(statut='f',typ='R',max=3),
- b_angl_naut =BLOC(condition = "ANGL_NAUT != None",
- CENTRE =SIMP(statut='f',typ='R',max=3),
- ),
- ),
- RECO_GLOBAL =FACT(statut='f',max='**',
- regles=(UN_PARMI('TOUT','MAILLE'),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- MAILLE =SIMP(statut='f',typ=ma,max='**'),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
- PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ),
- ),
- RECO_MAILLE =FACT(statut='f',max='**',
- MAILLE =SIMP(statut='o',typ=ma,max='**'),
- GROUP_NO =SIMP(statut='o',typ=grno,max='**'),
- OPTION =SIMP(statut='f',typ='TXM',defaut="GEOMETRIQUE",into=("GEOMETRIQUE","NOEUD_A_NOEUD","INVERSE") ),
- geometrique =BLOC(condition = "OPTION == 'GEOMETRIQUE'",
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
- PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ),
- ),
- ),
- DEFI_NOEUD =FACT(statut='f',max='**',
- regles=(UN_PARMI('TOUT','NOEUD_INIT'),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",),
- fr="Renommage de tous les noeuds" ),
- NOEUD_INIT =SIMP(statut='f',typ=no,
- fr="Renommage d un seul noeud"),
- b_tout =BLOC(condition = "TOUT != None",
- PREFIXE =SIMP(statut='f',typ='TXM' ),
- INDEX =SIMP(statut='o',typ='I',max='**'),
- ),
- b_noeud_init =BLOC(condition = "NOEUD_INIT != None",
- MAILLE =SIMP(statut='o',typ=ma),
- NOEUD_FIN =SIMP(statut='o',typ=no),
- ),
- ),
- DEFI_GROUP_NO =FACT(statut='f',max='**',
- regles=(UN_PARMI('TOUT','MAILLE'),
- AU_MOINS_UN('INDEX','GROUP_NO_FIN'),
- ENSEMBLE('GROUP_NO_INIT','GROUP_NO_FIN'),),
-# la regle ancien catalogue AU_MOINS_UN__: ( INDEX , GROUP_NO_FIN ) incoherente avec doc U
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",),
- fr="Création de plusieurs groupes de noeuds" ),
- MAILLE =SIMP(statut='f',typ=ma,
- fr="Création de plusieurs groupes de noeuds"),
- GROUP_NO_INIT =SIMP(statut='f',typ=grno,
- fr="Création d un seul groupe de noeuds"),
- PREFIXE =SIMP(statut='f',typ='TXM' ),
- INDEX =SIMP(statut='f',typ='I',max='**'),
- GROUP_NO_FIN =SIMP(statut='f',typ=grno),
- ),
-) ;
-#& MODIF COMMANDE DATE 04/10/2005 AUTEUR CIBHHPD L.SALMONA
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-DEFI_MATERIAU=OPER(nom="DEFI_MATERIAU",op=5,sd_prod=mater_sdaster,
- fr="Définition des paramètres décrivant le comportement d un matériau",
- reentrant='n',
- UIinfo={"groupes":("Modélisation",)},
- regles=(EXCLUS('ELAS','ELAS_FO','ELAS_FLUI','ELAS_ISTR','ELAS_ISTR_FO','ELAS_ORTH',
- 'ELAS_ORTH_FO','ELAS_COQUE','ELAS_COQUE_FO',
- 'SURF_ETAT_SATU','CAM_CLAY_THM','SURF_ETAT_NSAT'),
- EXCLUS('THER','THER_FO','THER_ORTH','THER_NL'),
- EXCLUS('ECRO_LINE','ECRO_LINE_FO'),
- EXCLUS('TAHERI','TAHERI_FO'),
- EXCLUS('ROUSSELIER','ROUSSELIER_FO'),
- PRESENT_PRESENT('ROUSSELIER','TRACTION'),
- PRESENT_PRESENT('ROUSSELIER_FO','TRACTION'),
- EXCLUS('CIN1_CHAB','CIN1_CHAB_FO'),
- EXCLUS('CIN2_CHAB','CIN2_CHAB_FO'),
- EXCLUS('VISCOCHAB','VISCOCHAB_FO'),
- EXCLUS('POLY_CFC','POLY_CFC_FO'),
- EXCLUS('LEMAITRE','LEMAITRE_FO','ZIRC_CYRA2','ZIRC_EPRI','VISC_IRRA_LOG',
- 'LEMA_SEUIL','LEMA_SEUIL_FO','LEMAITRE_IRRA','LMARC_IRRA',),
- EXCLUS('OHNO','OHNO_FO'),
- EXCLUS('LMARC','LMARC_FO'),
- EXCLUS('VMIS_POUTRE','VMIS_POUTRE_FO'),
- EXCLUS('VENDOCHAB','VENDOCHAB_FO'),
- PRESENT_PRESENT('BPEL_ACIER','ELAS'),
- EXCLUS('RCCM','RCCM_FO'),
- EXCLUS('WEIBULL','WEIBULL_FO'),
- PRESENT_PRESENT('BARCELONE','CAM_CLAY','ELAS'),
- PRESENT_PRESENT('CAM_CLAY','ELAS'),
- PRESENT_PRESENT('LAIGLE','ELAS'),
- PRESENT_PRESENT('DRUCK_PRAGER','ELAS'),
- PRESENT_PRESENT('HOEK_BROWN','ELAS'),
- EXCLUS('MAZARS','MAZARS_FO'),
- PRESENT_PRESENT('BAZANT_FD','ELAS_FO'),
- EXCLUS('GLRC','GLRC_FO'),
- PRESENT_PRESENT('JOINT_BA','ELAS'),
- PRESENT_PRESENT('CABLE','ELAS'),
- ),
-#
-# comportement élastique
-#
- ELAS =FACT(statut='f',
- E =SIMP(statut='o',typ='R',val_min=0.E+0),
- NU =SIMP(statut='o',typ='R',val_min=-1.E+0,val_max=0.5E+0),
- RHO =SIMP(statut='f',typ='R'),
- ALPHA =SIMP(statut='f',typ='R'),
- AMOR_ALPHA =SIMP(statut='f',typ='R'),
- AMOR_BETA =SIMP(statut='f',typ='R'),
- AMOR_HYST =SIMP(statut='f',typ='R'),
- ),
- ELAS_FO =FACT(statut='f',
- regles=(PRESENT_PRESENT('ALPHA','TEMP_DEF_ALPHA'),),
- E =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- NU =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- RHO =SIMP(statut='f',typ='R'),
- TEMP_DEF_ALPHA =SIMP(statut='f',typ='R'),
- PRECISION =SIMP(statut='f',typ='R',defaut= 1.),
- ALPHA =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- AMOR_ALPHA =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- AMOR_BETA =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- AMOR_HYST =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- K_DESSIC =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- B_ENDOGE =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- FONC_DESORP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP","INST","HYDR","SECH","NEUT1","NEUT2",) ),
- ),
- ELAS_FLUI =FACT(statut='f',
- E =SIMP(statut='o',typ='R'),
- NU =SIMP(statut='o',typ='R'),
- RHO =SIMP(statut='o',typ='R'),
- PROF_RHO_F_INT =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PROF_RHO_F_EXT =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- COEF_MASS_AJOU =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("ABSC",) ),
- ),
- ELAS_ISTR =FACT(statut='f',
- E_L =SIMP(statut='o',typ='R'),
- E_N =SIMP(statut='o',typ='R'),
- NU_LT =SIMP(statut='o',typ='R'),
- NU_LN =SIMP(statut='o',typ='R'),
- G_LN =SIMP(statut='o',typ='R'),
- RHO =SIMP(statut='f',typ='R'),
- ALPHA_L =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- ALPHA_N =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- ),
- ELAS_ISTR_FO =FACT(statut='f',
- regles=(
- PRESENT_PRESENT('ALPHA_L','TEMP_DEF_ALPHA'),
- PRESENT_PRESENT('ALPHA_N','TEMP_DEF_ALPHA'),
- ),
- E_L =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- E_N =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- NU_LT =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- NU_LN =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- G_LN =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- RHO =SIMP(statut='f',typ='R'),
- TEMP_DEF_ALPHA =SIMP(statut='f',typ='R'),
- PRECISION =SIMP(statut='f',typ='R',defaut= 1.),
- ALPHA_L =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- ALPHA_N =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP","INST")),
- ),
- ELAS_ORTH =FACT(statut='f',
- E_L =SIMP(statut='o',typ='R'),
- E_T =SIMP(statut='o',typ='R'),
- E_N =SIMP(statut='f',typ='R'),
- NU_LT =SIMP(statut='o',typ='R'),
- NU_LN =SIMP(statut='f',typ='R'),
- NU_TN =SIMP(statut='f',typ='R'),
- G_LT =SIMP(statut='o',typ='R'),
- G_LN =SIMP(statut='f',typ='R'),
- G_TN =SIMP(statut='f',typ='R'),
- RHO =SIMP(statut='f',typ='R'),
- ALPHA_L =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- ALPHA_T =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- ALPHA_N =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- XT =SIMP(statut='f',typ='R',defaut= 1. ),
- XC =SIMP(statut='f',typ='R',defaut= 1. ),
- YT =SIMP(statut='f',typ='R',defaut= 1. ),
- YC =SIMP(statut='f',typ='R',defaut= 1. ),
- S_LT =SIMP(statut='f',typ='R',defaut= 1. ),
- ),
- ELAS_ORTH_FO =FACT(statut='f',
- regles=(
- PRESENT_PRESENT('ALPHA_L','TEMP_DEF_ALPHA'),
- PRESENT_PRESENT('ALPHA_N','TEMP_DEF_ALPHA'),
- PRESENT_PRESENT('ALPHA_T','TEMP_DEF_ALPHA'),
- ),
- E_L =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- E_T =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- E_N =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- NU_LT =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- NU_LN =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- NU_TN =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- G_LT =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- G_LN =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- G_TN =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- RHO =SIMP(statut='f',typ='R'),
- TEMP_DEF_ALPHA =SIMP(statut='f',typ='R'),
- PRECISION =SIMP(statut='f',typ='R',defaut= 1. ),
- ALPHA_L =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- ALPHA_T =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- ALPHA_N =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP","INST",) ),
- ),
- ELAS_THM =FACT(statut='f',
- RHO_S =SIMP(statut='o',typ='R'),
- UN_SUR_KS =SIMP(statut='o',typ='R'),
- E =SIMP(statut='f',typ='R'),
- KB =SIMP(statut='f',typ='R'),
- D_KB_T =SIMP(statut='f',typ='R'),
- ALPHA_S =SIMP(statut='f',typ='R'),
- ALPHA_D =SIMP(statut='f',typ='R'),
- ),
- SURF_ETAT_SATU =FACT(statut='f',
- E_CHAR =SIMP(statut='o',typ='R'),
- E_DECHAR =SIMP(statut='o',typ='R'),
- XN =SIMP(statut='f',typ='R'),
- RF =SIMP(statut='f',typ='R'),
- EV_KB =SIMP(statut='f',typ='R'),
- EV_XM =SIMP(statut='f',typ='R'),
- D_E_T =SIMP(statut='f',typ='R'),
- ALPHA0 =SIMP(statut='f',typ='R'),
- ALPHA1 =SIMP(statut='f',typ='R'),
- ALPHA2 =SIMP(statut='f',typ='R'),
- ALPHA3 =SIMP(statut='f',typ='R'),
- ALPHA_S =SIMP(statut='f',typ='R'),
- ANG_FRT =SIMP(statut='o',typ='R'),
- COHE =SIMP(statut='o',typ='R'),
- RESI_TRAC =SIMP(statut='o',typ='R'),
- ),
- CAM_CLAY_THM =FACT(statut='f',
- NU =SIMP(statut='f',typ='R'),
- LAMBDA =SIMP(statut='o',typ='R'),
- KAPA =SIMP(statut='o',typ='R'),
- M =SIMP(statut='f',typ='R'),
- PRES_CRIT =SIMP(statut='f',typ='R'),
- GAMA =SIMP(statut='o',typ='R'),
- A0_PC =SIMP(statut='o',typ='R'),
- A1_PC =SIMP(statut='f',typ='R'),
- A2_PC =SIMP(statut='f',typ='R'),
- ALPHA0_PC =SIMP(statut='f',typ='R'),
- ALPHA1_PC =SIMP(statut='f',typ='R'),
- ALPHA2_PC =SIMP(statut='f',typ='R'),
- ALPHA3_PC =SIMP(statut='f',typ='R'),
- ALPHA_S =SIMP(statut='f',typ='R'),
- ),
- SURF_ETAT_NSAT =FACT(statut='f',
- E_CHAR =SIMP(statut='o',typ='R'),
- E_DECHAR =SIMP(statut='o',typ='R'),
- XN =SIMP(statut='f',typ='R'),
- RF =SIMP(statut='f',typ='R'),
- EV_KB =SIMP(statut='f',typ='R'),
- EV_XM =SIMP(statut='f',typ='R'),
- EV_A =SIMP(statut='f',typ='R'),
- EV_B =SIMP(statut='f',typ='R'),
- EV_CT =SIMP(statut='f',typ='R'),
- EV_SIGB =SIMP(statut='f',typ='R'),
- D_E_T =SIMP(statut='f',typ='R'),
- D_E_SUCC =SIMP(statut='f',typ='R'),
- ANG_FRT =SIMP(statut='o',typ='R'),
- COHE =SIMP(statut='o',typ='R'),
- D_COEH_SUCC =SIMP(statut='f',typ='R'),
- ANG_FRT_ULT =SIMP(statut='f',typ='R'),
- SUCC_ULTM =SIMP(statut='f',typ='R'),
- RESI_TRAC =SIMP(statut='f',typ='R'),
- A_SURF_SATU =SIMP(statut='f',typ='R'),
- B_SURF_SATU =SIMP(statut='f',typ='R'),
- C_SURF_SATU =SIMP(statut='f',typ='R'),
- D_SURF_SATU =SIMP(statut='f',typ='R'),
- ),
- ELAS_COQUE =FACT(statut='f',
- regles=(EXCLUS('MEMB_L','M_LLLL',),
- PRESENT_PRESENT('MEMB_L','MEMB_LT', 'MEMB_T','MEMB_G_LT','FLEX_L','FLEX_LT',
- 'FLEX_T','FLEX_G_LT','CISA_L','CISA_T',),
- PRESENT_PRESENT('M_LLLL','M_LLTT','M_LLLT','M_TTTT','M_TTLT','M_LTLT','F_LLLL',
- 'F_LLTT','F_LLLT','F_TTTT','F_TTLT','F_LTLT','MF_LLLL',
- 'MF_LLTT','MF_LLLT','MF_TTTT','MF_TTLT','MF_LTLT','MC_LLLZ',
- 'MC_LLTZ','MC_TTLZ','MC_TTTZ','MC_LTLZ','MC_LTTZ','FC_LLLZ',
- 'FC_LLTZ','FC_TTLZ','FC_TTTZ','FC_LTLZ','FC_LTTZ','C_LZLZ',
- 'C_LZTZ','C_TZTZ'),),
- MEMB_L =SIMP(statut='f',typ='R'),
- MEMB_LT =SIMP(statut='f',typ='R'),
- MEMB_T =SIMP(statut='f',typ='R'),
- MEMB_G_LT =SIMP(statut='f',typ='R'),
- FLEX_L =SIMP(statut='f',typ='R'),
- FLEX_LT =SIMP(statut='f',typ='R'),
- FLEX_T =SIMP(statut='f',typ='R'),
- FLEX_G_LT =SIMP(statut='f',typ='R'),
- CISA_L =SIMP(statut='f',typ='R'),
- CISA_T =SIMP(statut='f',typ='R'),
- M_LLLL =SIMP(statut='f',typ='R'),
- M_LLTT =SIMP(statut='f',typ='R'),
- M_LLLT =SIMP(statut='f',typ='R'),
- M_TTTT =SIMP(statut='f',typ='R'),
- M_TTLT =SIMP(statut='f',typ='R'),
- M_LTLT =SIMP(statut='f',typ='R'),
- F_LLLL =SIMP(statut='f',typ='R'),
- F_LLTT =SIMP(statut='f',typ='R'),
- F_LLLT =SIMP(statut='f',typ='R'),
- F_TTTT =SIMP(statut='f',typ='R'),
- F_TTLT =SIMP(statut='f',typ='R'),
- F_LTLT =SIMP(statut='f',typ='R'),
- MF_LLLL =SIMP(statut='f',typ='R'),
- MF_LLTT =SIMP(statut='f',typ='R'),
- MF_LLLT =SIMP(statut='f',typ='R'),
- MF_TTTT =SIMP(statut='f',typ='R'),
- MF_TTLT =SIMP(statut='f',typ='R'),
- MF_LTLT =SIMP(statut='f',typ='R'),
- MC_LLLZ =SIMP(statut='f',typ='R'),
- MC_LLTZ =SIMP(statut='f',typ='R'),
- MC_TTLZ =SIMP(statut='f',typ='R'),
- MC_TTTZ =SIMP(statut='f',typ='R'),
- MC_LTLZ =SIMP(statut='f',typ='R'),
- MC_LTTZ =SIMP(statut='f',typ='R'),
- FC_LLLZ =SIMP(statut='f',typ='R'),
- FC_LLTZ =SIMP(statut='f',typ='R'),
- FC_TTLZ =SIMP(statut='f',typ='R'),
- FC_TTTZ =SIMP(statut='f',typ='R'),
- FC_LTLZ =SIMP(statut='f',typ='R'),
- FC_LTTZ =SIMP(statut='f',typ='R'),
- C_LZLZ =SIMP(statut='f',typ='R'),
- C_LZTZ =SIMP(statut='f',typ='R'),
- C_TZTZ =SIMP(statut='f',typ='R'),
- RHO =SIMP(statut='f',typ='R'),
- ALPHA =SIMP(statut='f',typ='R'),
- ),
- ELAS_COQUE_FO =FACT(statut='f',
- regles=(EXCLUS('MEMB_L','M_LLLL',),
- PRESENT_PRESENT('MEMB_L','MEMB_LT','MEMB_T','MEMB_G_LT','FLEX_L','FLEX_LT',
- 'FLEX_T','FLEX_G_LT','CISA_L','CISA_T',),
- PRESENT_PRESENT('M_LLLL','M_LLTT','M_LLLT','M_TTTT','M_TTLT','M_LTLT','F_LLLL',
- 'F_LLTT','F_LLLT','F_TTTT','F_TTLT','F_LTLT','MF_LLLL','MF_LLTT',
- 'MF_LLLT','MF_TTTT','MF_TTLT','MF_LTLT','MC_LLLZ','MC_LLTZ',
- 'MC_TTLZ','MC_TTTZ','MC_LTLZ','MC_LTTZ','FC_LLLZ','FC_LLTZ',
- 'FC_TTLZ','FC_TTTZ','FC_LTLZ','FC_LTTZ','C_LZLZ','C_LZTZ','C_TZTZ'),),
- MEMB_L =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- MEMB_LT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- MEMB_T =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- MEMB_G_LT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FLEX_L =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FLEX_LT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FLEX_T =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FLEX_G_LT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- CISA_L =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- CISA_T =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- M_LLLL =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- M_LLTT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- M_LLLT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- M_TTTT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- M_TTLT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- M_LTLT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- F_LLLL =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- F_LLTT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- F_LLLT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- F_TTTT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- F_TTLT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- F_LTLT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- MF_LLLL =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- MF_LLTT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- MF_LLLT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- MF_TTTT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- MF_TTLT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- MF_LTLT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- MC_LLLZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- MC_LLTZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- MC_TTLZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- MC_TTTZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- MC_LTLZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- MC_LTTZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FC_LLLZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FC_LLTZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FC_TTLZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FC_TTTZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FC_LTLZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FC_LTTZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- C_LZLZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- C_LZTZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- C_TZTZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- RHO =SIMP(statut='f',typ='R'),
- ALPHA =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP","INST") ),
- ),
- APPUI_ELAS =FACT(statut='f',
- E_N =SIMP(statut='o',typ='R'),
- E_TAN =SIMP(statut='f',typ='R',defaut= 0.E+0),
- ),
- CABLE =FACT(statut='f',
- EC_SUR_E =SIMP(statut='f',typ='R',defaut= 1.E-4 ),
- ),
-#
-# comportement mécanique non linéaire
-#
- TRACTION =FACT(statut='f',
- SIGM =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("EPSI","TEMP","HYDR","SECH",) ),
- ),
- ECRO_LINE =FACT(statut='f',
- D_SIGM_EPSI =SIMP(statut='o',typ='R',),
- SY =SIMP(statut='o',typ='R',),
- ),
- ECRO_LINE_FO =FACT(statut='f',
- D_SIGM_EPSI =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- SY =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP",) ),
- ),
- BETON_ECRO_LINE =FACT(statut='f',
- D_SIGM_EPSI =SIMP(statut='o',typ='R'),
- SYT =SIMP(statut='o',typ='R'),
- SYC =SIMP(statut='f',typ='R'),
- ),
- BETON_REGLE_PR =FACT(statut='f',
- D_SIGM_EPSI =SIMP(statut='o',typ='R'),
- SYT =SIMP(statut='o',typ='R'),
- SYC =SIMP(statut='f',typ='R'),
- EPSC =SIMP(statut='f',typ='R'),
- N =SIMP(statut='f',typ='R'),
- ),
- ENDO_ORTH_BETON =FACT(statut='f',
- ALPHA =SIMP(statut='f',typ='R',defaut=0.9),
- K0 =SIMP(statut='o',typ='R'),
- K1 =SIMP(statut='o',typ='R'),
- K2 =SIMP(statut='f',typ='R',defaut=7.E-4),
- ECROB =SIMP(statut='o',typ='R'),
- ECROD =SIMP(statut='o',typ='R'),
- ),
- PRAGER =FACT(statut='f',
- C =SIMP(statut='o',typ='R'),
- ),
- PRAGER_FO =FACT(statut='f',
- C =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP",) ),
- ),
- ECRO_FLEJOU =FACT(statut='f',
- EP =SIMP(statut='o',typ='R'),
- SY =SIMP(statut='o',typ='R'),
- SU =SIMP(statut='o',typ='R'),
- PUISS =SIMP(statut='o',typ='R'),
- ),
- TAHERI =FACT(statut='f',
- R_0 =SIMP(statut='o',typ='R'),
- ALPHA =SIMP(statut='o',typ='R'),
- M =SIMP(statut='o',typ='R'),
- A =SIMP(statut='o',typ='R'),
- B =SIMP(statut='o',typ='R'),
- C1 =SIMP(statut='o',typ='R'),
- C_INF =SIMP(statut='o',typ='R'),
- S =SIMP(statut='o',typ='R'),
- ),
- TAHERI_FO =FACT(statut='f',
- R_0 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- ALPHA =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- M =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- A =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- B =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- C1 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- C_INF =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- S =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP",) ),
- ),
- ROUSSELIER =FACT(statut='f',
- D =SIMP(statut='o',typ='R'),
- SIGM_1 =SIMP(statut='o',typ='R'),
- PORO_INIT =SIMP(statut='o',typ='R'),
- PORO_CRIT =SIMP(statut='f',typ='R',defaut= 1. ),
- PORO_ACCE =SIMP(statut='f',typ='R',defaut= 1. ),
- PORO_LIMI =SIMP(statut='f',typ='R',defaut= 0.999 ),
- D_SIGM_EPSI_NORM=SIMP(statut='f',typ='R',defaut= 1. ),
- AN =SIMP(statut='f',typ='R',defaut= 0. ),
- ),
- ROUSSELIER_FO =FACT(statut='f',
- D =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- SIGM_1 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PORO_INIT =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PORO_CRIT =SIMP(statut='f',typ='R',defaut= 1. ),
- PORO_ACCE =SIMP(statut='f',typ='R',defaut= 1. ),
- PORO_LIMI =SIMP(statut='f',typ='R',defaut= 0.999 ),
- D_SIGM_EPSI_NORM=SIMP(statut='f',typ='R',defaut= 1. ),
- AN =SIMP(statut='f',typ='R',defaut= 0. ),
- VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP",) ),
- ),
- VISC_SINH =FACT(statut='f',
- SIGM_0 =SIMP(statut='o',typ='R'),
- EPSI_0 =SIMP(statut='o',typ='R'),
- M =SIMP(statut='o',typ='R'),
- ),
- CHABOCHE =FACT(statut='f',
- R_I =SIMP(statut='o',typ='R'),
- R_0 =SIMP(statut='o',typ='R'),
- B =SIMP(statut='o',typ='R'),
- K =SIMP(statut='o',typ='R'),
- W =SIMP(statut='o',typ='R'),
- A1 =SIMP(statut='o',typ='R'),
- A2 =SIMP(statut='o',typ='R'),
- C1 =SIMP(statut='o',typ='R'),
- C2 =SIMP(statut='o',typ='R'),
- ),
- CIN1_CHAB =FACT(statut='f',
- R_0 =SIMP(statut='o',typ='R'),
- R_I =SIMP(statut='f',typ='R'),
- B =SIMP(statut='f',typ='R',defaut= 0.0E+0),
- C_I =SIMP(statut='o',typ='R'),
- K =SIMP(statut='f',typ='R',defaut= 1.0E+0),
- W =SIMP(statut='f',typ='R',defaut= 0.0E+0),
- G_0 =SIMP(statut='o',typ='R'),
- A_I =SIMP(statut='f',typ='R',defaut= 1.0E+0),
- ),
- CIN1_CHAB_FO =FACT(statut='f',
- R_0 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- R_I =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- B =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- C_I =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- K =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- W =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- G_0 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- A_I =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP",)),
- ),
- CIN2_CHAB =FACT(statut='f',
- R_0 =SIMP(statut='o',typ='R'),
- R_I =SIMP(statut='f',typ='R'),
- B =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- C1_I =SIMP(statut='o',typ='R'),
- C2_I =SIMP(statut='o',typ='R'),
- K =SIMP(statut='f',typ='R',defaut= 1.),
- W =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- G1_0 =SIMP(statut='o',typ='R'),
- G2_0 =SIMP(statut='o',typ='R'),
- A_I =SIMP(statut='f',typ='R',defaut= 1.E+0 ),
- ),
- CIN2_CHAB_FO =FACT(statut='f',
- R_0 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- R_I =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- B =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- C1_I =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- C2_I =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- K =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- W =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- G1_0 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- G2_0 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- A_I =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP",) ),
- ),
- VISCOCHAB =FACT(statut='f',
- K_0 =SIMP(statut='o',typ='R'),
- A_K =SIMP(statut='o',typ='R'),
- A_R =SIMP(statut='o',typ='R'),
- K =SIMP(statut='o',typ='R'),
- N =SIMP(statut='o',typ='R'),
- ALP =SIMP(statut='o',typ='R'),
- B =SIMP(statut='o',typ='R'),
- M_R =SIMP(statut='o',typ='R'),
- G_R =SIMP(statut='o',typ='R'),
- MU =SIMP(statut='o',typ='R'),
- Q_M =SIMP(statut='o',typ='R'),
- Q_0 =SIMP(statut='o',typ='R'),
- QR_0 =SIMP(statut='o',typ='R'),
- ETA =SIMP(statut='o',typ='R'),
- C1 =SIMP(statut='o',typ='R'),
- M_1 =SIMP(statut='o',typ='R'),
- D1 =SIMP(statut='o',typ='R'),
- G_X1 =SIMP(statut='o',typ='R'),
- G1_0 =SIMP(statut='o',typ='R'),
- C2 =SIMP(statut='o',typ='R'),
- M_2 =SIMP(statut='o',typ='R'),
- D2 =SIMP(statut='o',typ='R'),
- G_X2 =SIMP(statut='o',typ='R'),
- G2_0 =SIMP(statut='o',typ='R'),
- A_I =SIMP(statut='o',typ='R'),
- ),
- VISCOCHAB_FO =FACT(statut='f',
- K_0 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- A_K =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- A_R =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- K =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- N =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- ALP =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- B =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- M_R =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- G_R =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- MU =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- Q_M =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- Q_0 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- QR_0 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- ETA =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- C1 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- M_1 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D1 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- G_X1 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- G1_0 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- C2 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- M_2 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D2 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- G_X2 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- G2_0 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- A_I =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP",) ),
- ),
- POLY_CFC =FACT(statut='f',
- TEXTURE =SIMP(statut='o',typ=(tabl_texture) ),
- DL =SIMP(statut='f',typ='R'),
- DA =SIMP(statut='f',typ='R'),
- N =SIMP(statut='o',typ='R'),
- K =SIMP(statut='o',typ='R'),
- TAU_0 =SIMP(statut='o',typ='R'),
- Q1 =SIMP(statut='o',typ='R'),
- B1 =SIMP(statut='o',typ='R'),
- HL =SIMP(statut='o',typ='R'),
- Q2 =SIMP(statut='o',typ='R'),
- B2 =SIMP(statut='o',typ='R'),
- C1 =SIMP(statut='o',typ='R'),
- D1 =SIMP(statut='o',typ='R'),
- C2 =SIMP(statut='o',typ='R'),
- ),
- POLY_CFC_FO =FACT(statut='f',
- TEXTURE =SIMP(statut='o',typ=(tabl_texture) ),
- DL =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- DA =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- N =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- K =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- TAU_0 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- Q1 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- B1 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- HL =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- Q2 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- B2 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- C1 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D1 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- C2 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP",) ),
- ),
- LEMAITRE =FACT(statut='f',
- N =SIMP(statut='o',typ='R'),
- UN_SUR_K =SIMP(statut='o',typ='R'),
- UN_SUR_M =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- ),
- LEMAITRE_IRRA =FACT(statut='f',
- N =SIMP(statut='o',typ='R'),
- UN_SUR_K =SIMP(statut='o',typ='R'),
- UN_SUR_M =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- QSR_K =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- BETA =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- PHI_ZERO =SIMP(statut='f',typ='R',defaut= 1.E+20),
- L =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- GRAN_A =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- GRAN_B =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- GRAN_S =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- ),
- LMARC_IRRA =FACT(statut='f',
- DE_0 =SIMP(statut='o',typ='R'),
- R_0 =SIMP(statut='o',typ='R'),
- N =SIMP(statut='o',typ='R'),
- K =SIMP(statut='o',typ='R'),
- Y_I =SIMP(statut='o',typ='R'),
- Y_0 =SIMP(statut='o',typ='R'),
- B =SIMP(statut='o',typ='R'),
- A_0 =SIMP(statut='o',typ='R'),
- RM =SIMP(statut='o',typ='R'),
- M =SIMP(statut='o',typ='R'),
- P =SIMP(statut='o',typ='R'),
- P1 =SIMP(statut='o',typ='R'),
- P2 =SIMP(statut='o',typ='R'),
- M11 =SIMP(statut='o',typ='R'),
- M22 =SIMP(statut='o',typ='R'),
- M33 =SIMP(statut='o',typ='R'),
- M66 =SIMP(statut='o',typ='R'),
- N11 =SIMP(statut='o',typ='R'),
- N22 =SIMP(statut='o',typ='R'),
- N33 =SIMP(statut='o',typ='R'),
- N66 =SIMP(statut='o',typ='R'),
- Q11 =SIMP(statut='o',typ='R'),
- Q22 =SIMP(statut='o',typ='R'),
- Q33 =SIMP(statut='o',typ='R'),
- Q66 =SIMP(statut='o',typ='R'),
- R11 =SIMP(statut='o',typ='R'),
- R22 =SIMP(statut='o',typ='R'),
- R33 =SIMP(statut='o',typ='R'),
- R66 =SIMP(statut='o',typ='R'),
- GRAN_A =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- GRAN_B =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- GRAN_S =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- ),
- ZIRC_CYRA2 =FACT(statut='f',
- EPSI_FAB =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- TEMP_RECUIT =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FLUX_PHI =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("INST",) ),
- ),
- VISC_IRRA_LOG =FACT(statut='f',
- A =SIMP(statut='f',typ='R',defaut= 1.28E-1),
- B =SIMP(statut='f',typ='R',defaut= 0.01159),
- CSTE_TPS =SIMP(statut='f',typ='R',defaut= 0.3540),
- ENER_ACT =SIMP(statut='f',typ='R',defaut= 5000.),
- FLUX_PHI =SIMP(statut='o',typ='R',),
- ),
- GRAN_IRRA_LOG =FACT(statut='f',
- A =SIMP(statut='f',typ='R',defaut= 1.28E-1),
- B =SIMP(statut='f',typ='R',defaut= 0.01159),
- CSTE_TPS =SIMP(statut='f',typ='R',defaut= 0.3540),
- ENER_ACT =SIMP(statut='f',typ='R',defaut= 5000.),
- FLUX_PHI =SIMP(statut='o',typ='R',),
- GRAN_A =SIMP(statut='f',typ='R',defaut= 0.E+0),
- GRAN_B =SIMP(statut='f',typ='R',defaut= 0.E+0),
- GRAN_S =SIMP(statut='f',typ='R',defaut= 0.E+0),
- ),
- LEMA_SEUIL =FACT(statut='f',
- A =SIMP(statut='o',typ='R',),
- S =SIMP(statut='o',typ='R',),
- ),
- LEMA_SEUIL_FO=FACT(statut='f',
- A =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- S =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP",) ),
- ),
- ZIRC_EPRI =FACT(statut='f',
- FLUX_PHI =SIMP(statut='o',typ='R'),
- R_P =SIMP(statut='o',typ='R'),
- THETA_MAX =SIMP(statut='o',typ='R'),
- ),
- LEMAITRE_FO =FACT(statut='f',
- N =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- UN_SUR_K =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- UN_SUR_M =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP",) ),
- ),
- OHNO =FACT(statut='f',
- R_I =SIMP(statut='o',typ='R'),
- R_0 =SIMP(statut='o',typ='R'),
- B =SIMP(statut='o',typ='R'),
- PHI =SIMP(statut='o',typ='R'),
- A1 =SIMP(statut='o',typ='R'),
- A2 =SIMP(statut='o',typ='R'),
- A3 =SIMP(statut='o',typ='R'),
- A4 =SIMP(statut='o',typ='R'),
- A5 =SIMP(statut='o',typ='R'),
- GAMMA1 =SIMP(statut='o',typ='R'),
- GAMMA2 =SIMP(statut='o',typ='R'),
- GAMMA3 =SIMP(statut='o',typ='R'),
- GAMMA4 =SIMP(statut='o',typ='R'),
- GAMMA5 =SIMP(statut='o',typ='R'),
- M1 =SIMP(statut='o',typ='R'),
- M2 =SIMP(statut='o',typ='R'),
- M3 =SIMP(statut='o',typ='R'),
- M4 =SIMP(statut='o',typ='R'),
- M5 =SIMP(statut='o',typ='R'),
- ),
- OHNO_FO =FACT(statut='f',
- R_I =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- R_0 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- B =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PHI =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- A1 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- A2 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- A3 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- A4 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- A5 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- GAMMA1 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- GAMMA2 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- GAMMA3 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- GAMMA4 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- GAMMA5 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- M1 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- M2 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- M3 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- M4 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- M5 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP",) ),
- ),
- LMARC =FACT(statut='f',
- DE_0 =SIMP(statut='o',typ='R'),
- R_0 =SIMP(statut='o',typ='R'),
- N =SIMP(statut='o',typ='R'),
- K =SIMP(statut='o',typ='R'),
- Y_I =SIMP(statut='o',typ='R'),
- Y_0 =SIMP(statut='o',typ='R'),
- B =SIMP(statut='o',typ='R'),
- A_0 =SIMP(statut='o',typ='R'),
- RM =SIMP(statut='o',typ='R'),
- M =SIMP(statut='o',typ='R'),
- P =SIMP(statut='o',typ='R'),
- P1 =SIMP(statut='o',typ='R'),
- P2 =SIMP(statut='o',typ='R'),
- M11 =SIMP(statut='o',typ='R'),
- M22 =SIMP(statut='o',typ='R'),
- M33 =SIMP(statut='o',typ='R'),
- M66 =SIMP(statut='o',typ='R'),
- N11 =SIMP(statut='o',typ='R'),
- N22 =SIMP(statut='o',typ='R'),
- N33 =SIMP(statut='o',typ='R'),
- N66 =SIMP(statut='o',typ='R'),
- Q11 =SIMP(statut='o',typ='R'),
- Q22 =SIMP(statut='o',typ='R'),
- Q33 =SIMP(statut='o',typ='R'),
- Q66 =SIMP(statut='o',typ='R'),
- R11 =SIMP(statut='o',typ='R'),
- R22 =SIMP(statut='o',typ='R'),
- R33 =SIMP(statut='o',typ='R'),
- R66 =SIMP(statut='o',typ='R'),
- ),
- LMARC_FO =FACT(statut='f',
- DE_0 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- R_0 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- N =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- K =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- Y_I =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- Y_0 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- B =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- A_0 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- RM =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- M =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- P =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- P1 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- P2 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- M11 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- M22 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- M33 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- M66 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- N11 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- N22 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- N33 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- N66 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- Q11 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- Q22 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- Q33 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- Q66 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- R11 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- R22 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- R33 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- R66 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP",) ),
- ),
- VMIS_POUTRE =FACT(statut='f',
- NP =SIMP(statut='o',typ='R'),
- MEY =SIMP(statut='o',typ='R'),
- MPY =SIMP(statut='o',typ='R'),
- CAY =SIMP(statut='o',typ='R'),
- CBY =SIMP(statut='o',typ='R'),
- MEZ =SIMP(statut='o',typ='R'),
- MPZ =SIMP(statut='o',typ='R'),
- CAZ =SIMP(statut='o',typ='R'),
- CBZ =SIMP(statut='o',typ='R'),
- MPX =SIMP(statut='o',typ='R'),
- ),
- VMIS_POUTRE_FO =FACT(statut='f',
- NP =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- MEY =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- MPY =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- CAY =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- CBY =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- MEZ =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- MPZ =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- CAZ =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- CBZ =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- MPX =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP",) ),
- ),
- ARME =FACT(statut='f',
- KYE =SIMP(statut='o',typ='R'),
- DLE =SIMP(statut='o',typ='R'),
- KYP =SIMP(statut='o',typ='R'),
- DLP =SIMP(statut='o',typ='R'),
- KYG =SIMP(statut='o',typ='R'),
- ),
- ASSE_CORN =FACT(statut='f',
- NU_1 =SIMP(statut='o',typ='R'),
- MU_1 =SIMP(statut='o',typ='R'),
- DXU_1 =SIMP(statut='o',typ='R'),
- DRYU_1 =SIMP(statut='o',typ='R'),
- C_1 =SIMP(statut='o',typ='R'),
- NU_2 =SIMP(statut='o',typ='R'),
- MU_2 =SIMP(statut='o',typ='R'),
- DXU_2 =SIMP(statut='o',typ='R'),
- DRYU_2 =SIMP(statut='o',typ='R'),
- C_2 =SIMP(statut='o',typ='R'),
- KY =SIMP(statut='o',typ='R'),
- KZ =SIMP(statut='o',typ='R'),
- KRX =SIMP(statut='o',typ='R'),
- KRZ =SIMP(statut='o',typ='R'),
- R_P0 =SIMP(statut='f',typ='R',defaut= 1.E+4 ),
- ),
- DIS_CONTACT =FACT(statut='f',
- RIGI_NOR =SIMP(statut='f',typ='R' ),
- DIST_1 =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- DIST_2 =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- RIGI_TAN =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- AMOR_NOR =SIMP(statut='f',typ='R' ),
- AMOR_TAN =SIMP(statut='f',typ='R' ),
- COULOMB =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- JEU =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- KT_ULTM =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- EFFO_N_INIT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- regles=(EXCLUS('RIGI_N_FO','RIGI_N_IRRA',),
- EXCLUS('RELA_MZ','ANGLE_1'),
- PRESENT_PRESENT('ANGLE_1','ANGLE_2','ANGLE_3','ANGLE_4',
- 'MOMENT_1','MOMENT_2','MOMENT_3','MOMENT_4'),),
- RIGI_N_IRRA =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- RIGI_N_FO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- RELA_MZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- ANGLE_1 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- ANGLE_2 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- ANGLE_3 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- ANGLE_4 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- MOMENT_1 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- MOMENT_2 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- MOMENT_3 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- MOMENT_4 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- C_PRAGER_MZ =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("DRZ","INST","TEMP",) ),
- ),
- DIS_GRICRA =FACT(statut='f',
- KN_BOS =SIMP(statut='o',typ='R' ),
- KT_BOS =SIMP(statut='o',typ='R' ),
- KN_RES =SIMP(statut='o',typ='R' ),
- KT_RES =SIMP(statut='o',typ='R' ),
- DIST_BOS =SIMP(statut='o',typ='R' ),
- FORC_SER =SIMP(statut='o',typ='R' ),
- COUL_BOS =SIMP(statut='o',typ='R' ),
- COUL_RES =SIMP(statut='o',typ='R' ),
- ECRO_BOS =SIMP(statut='o',typ='R' ),
- ECRO_RES =SIMP(statut='o',typ='R' ),
- F_IRRA_0 =SIMP(statut='f',typ='R' ),
- F_IRRA_1 =SIMP(statut='f',typ='R' ),
- F_IRRA_2 =SIMP(statut='f',typ='R' ),
- F_IRRA_3 =SIMP(statut='f',typ='R' ),
- F_IRRA_4 =SIMP(statut='f',typ='R' ),
- F_IRRA_5 =SIMP(statut='f',typ='R' ),
- F_TEMP_1 =SIMP(statut='f',typ='R' ),
- F_TEMP_2 =SIMP(statut='f',typ='R' ),
- TEMP_1 =SIMP(statut='f',typ='R' ),
- TEMP_2 =SIMP(statut='f',typ='R' ),
- VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("DRZ","INST","TEMP",) ),
- ),
- NADAI_B =FACT(statut='f',
- F_C =SIMP(statut='o',typ='R'),
- F_T =SIMP(statut='o',typ='R'),
- CRIT_E_C =SIMP(statut='o',typ='R'),
- EPSP_P_C =SIMP(statut='o',typ='R'),
- EPSP_R_C =SIMP(statut='o',typ='R'),
- EPSI_R_T =SIMP(statut='o',typ='R'),
- FAC_T_C =SIMP(statut='o',typ='R'),
- ),
- BETON_DOUBLE_DP =FACT(statut='f',
- F_C =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- F_T =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- COEF_BIAX =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- ENER_COMP_RUPT =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- ENER_TRAC_RUPT =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- COEF_ELAS_COMP =SIMP(statut='o',typ='R'),
- LONG_CARA =SIMP(statut='f',typ='R'),
- ECRO_COMP_P_PIC =SIMP(statut='f',typ='TXM',defaut="LINEAIRE",into=("LINEAIRE","PARABOLE") ),
- ECRO_TRAC_P_PIC =SIMP(statut='f',typ='TXM',defaut="LINEAIRE",into=("LINEAIRE","EXPONENT") ),
- VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP","INST","HYDR","SECH",) ),
- ),
- LABORD_1D=FACT(statut='f',min=0 ,
- Y01 =SIMP(statut='o',typ='R'),
- Y02 =SIMP(statut='o',typ='R'),
- A1 =SIMP(statut='o',typ='R'),
- A2 =SIMP(statut='o',typ='R'),
- B1 =SIMP(statut='o',typ='R'),
- B2 =SIMP(statut='o',typ='R'),
- BETA1 =SIMP(statut='o',typ='R'),
- BETA2 =SIMP(statut='o',typ='R'),
- SIGF =SIMP(statut='o',typ='R'),
- ),
- MAZARS=FACT(statut='f',min=0 ,
- EPSD0 =SIMP(statut='o',typ='R'),
- BETA =SIMP(statut='o',typ='R'),
- AC =SIMP(statut='o',typ='R'),
- BC =SIMP(statut='o',typ='R'),
- AT =SIMP(statut='o',typ='R'),
- BT =SIMP(statut='o',typ='R'),
- ),
- MAZARS_FO=FACT(statut='f',min=0 ,
- EPSD0 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- BETA =SIMP(statut='o',typ='R'),
- AC =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- BC =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- AT =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- BT =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP","SECH","HYDR") ),
- ),
- JOINT_BA=FACT(statut='f',min=0 ,max=1,
- HPEN =SIMP(statut='o',typ='R',defaut= 1.E+0,val_min=0.E+0),
- GTT =SIMP(statut='o',typ='R',val_min=0.E+0),
- GAMD0 =SIMP(statut='o',typ='R',val_min=1.E-4,val_max=1.E-1),
- AD1 =SIMP(statut='o',typ='R',val_min=0.E+0),
- BD1 =SIMP(statut='o',typ='R',defaut= 5.E-1,val_min=1.E-1),
- GAMD2 =SIMP(statut='o',typ='R',val_min=1.E-4,val_max=1.E+0),
- AD2 =SIMP(statut='o',typ='R',val_min=0.E+0),
- BD2 =SIMP(statut='o',typ='R',defaut= 1.E+0,val_min=1.E-1),
- VIFROT =SIMP(statut='o',typ='R',val_min=0.E+0),
- FA =SIMP(statut='o',typ='R',val_min=0.E+0),
- FC =SIMP(statut='o',typ='R',val_min=0.E+0),
- EPSTR0 =SIMP(statut='o',typ='R',val_min=1.E-4,val_max=1.E+0),
- ADN =SIMP(statut='o',typ='R',val_min=0.E+0),
- BDN =SIMP(statut='o',typ='R',defaut= 1.E+0,val_min=1.E-1),
- ),
- VENDOCHAB =FACT(statut='f',
- S_VP =SIMP(statut='o',typ='R'),
- SEDVP1 =SIMP(statut='o',typ='R'),
- SEDVP2 =SIMP(statut='o',typ='R'),
- N_VP =SIMP(statut='o',typ='R'),
- M_VP =SIMP(statut='o',typ='R'),
- K_VP =SIMP(statut='o',typ='R'),
- R_D =SIMP(statut='o',typ='R'),
- A_D =SIMP(statut='o',typ='R'),
- K_D =SIMP(statut='o',typ='R'),
- ),
- VENDOCHAB_FO =FACT(statut='f',
- S_VP =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- SEDVP1 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- SEDVP2 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- N_VP =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- M_VP =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- K_VP =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- R_D =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- A_D =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- K_D =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP","X",) ),
- ),
- PINTO_MENEGOTTO =FACT(statut='f',
- SY =SIMP(statut='o',typ='R'),
- EPSI_ULTM =SIMP(statut='o',typ='R'),
- SIGM_ULTM =SIMP(statut='o',typ='R'),
- ELAN =SIMP(statut='f',typ='R',defaut= 4. ),
- EPSP_HARD =SIMP(statut='o',typ='R'),
- R_PM =SIMP(statut='f',typ='R',defaut= 20. ),
- EP_SUR_E =SIMP(statut='f',typ='R'),
- A1_PM =SIMP(statut='f',typ='R',defaut= 18.5 ),
- A2_PM =SIMP(statut='f',typ='R',defaut= 0.15 ),
- A6_PM =SIMP(statut='f',typ='R',defaut= 620. ),
- C_PM =SIMP(statut='f',typ='R',defaut= 0.5 ),
- A_PM =SIMP(statut='f',typ='R',defaut= 6.0E-3 ),
- ),
- BPEL_BETON =FACT(statut='f',
- PERT_FLUA =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- PERT_RETR =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- ),
- BPEL_ACIER =FACT(statut='f',
- regles=(PRESENT_PRESENT('RELAX_1000','F_PRG',),
- PRESENT_PRESENT('MU0_RELAX','F_PRG',),),
- RELAX_1000 =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- MU0_RELAX =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- F_PRG =SIMP(statut='f',typ='R'),
- FROT_COURB =SIMP(statut='f',typ='R',defaut=0.E+0),
- FROT_LINE =SIMP(statut='f',typ='R',defaut=0.E+0),
- ),
- CAM_CLAY =FACT(statut='f',
- PORO =SIMP(statut='o',typ='R'),
- LAMBDA =SIMP(statut='o',typ='R'),
- KAPA =SIMP(statut='o',typ='R'),
- M =SIMP(statut='o',typ='R'),
- PRES_CRIT =SIMP(statut='o',typ='R'),
- PA =SIMP(statut='o',typ='R'),
- ),
- BARCELONE =FACT(statut='f',
- R =SIMP(statut='o',typ='R'),
- BETA =SIMP(statut='o',typ='R'),
- KC =SIMP(statut='o',typ='R'),
- PC0_INIT =SIMP(statut='o',typ='R'),
- KAPAS =SIMP(statut='o',typ='R'),
- LAMBDAS =SIMP(statut='o',typ='R'),
- ALPHAB =SIMP(statut='f',typ='R'),
- ),
- CJS =FACT(statut='f',
- BETA_CJS =SIMP(statut='o',typ='R'),
- RM =SIMP(statut='o',typ='R'),
- N_CJS =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- KP =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- RC =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- A_CJS =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- B_CJS =SIMP(statut='f',typ='R',defaut= 1.0E+25 ),
- C_CJS =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- GAMMA_CJS =SIMP(statut='o',typ='R'),
- MU_CJS =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- PCO =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- PA =SIMP(statut='o',typ='R'),
- Q_INIT =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- R_INIT =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- ),
- ECRO_ASYM_LINE =FACT(statut='f',
- DC_SIGM_EPSI =SIMP(statut='o',typ='R'),
- SY_C =SIMP(statut='o',typ='R'),
- DT_SIGM_EPSI =SIMP(statut='o',typ='R'),
- SY_T =SIMP(statut='o',typ='R'),
- ),
- GRANGER_FP =FACT(statut='f',
- J1 =SIMP(statut='f',typ='R'),
- J2 =SIMP(statut='f',typ='R'),
- J3 =SIMP(statut='f',typ='R'),
- J4 =SIMP(statut='f',typ='R'),
- J5 =SIMP(statut='f',typ='R'),
- J6 =SIMP(statut='f',typ='R'),
- J7 =SIMP(statut='f',typ='R'),
- J8 =SIMP(statut='f',typ='R'),
- TAUX_1 =SIMP(statut='f',typ='R'),
- TAUX_2 =SIMP(statut='f',typ='R'),
- TAUX_3 =SIMP(statut='f',typ='R'),
- TAUX_4 =SIMP(statut='f',typ='R'),
- TAUX_5 =SIMP(statut='f',typ='R'),
- TAUX_6 =SIMP(statut='f',typ='R'),
- TAUX_7 =SIMP(statut='f',typ='R'),
- TAUX_8 =SIMP(statut='f',typ='R'),
- QSR_K =SIMP(statut='f',typ='R'),
- ),
- GRANGER_FP_INDT =FACT(statut='f',
- J1 =SIMP(statut='f',typ='R'),
- J2 =SIMP(statut='f',typ='R'),
- J3 =SIMP(statut='f',typ='R'),
- J4 =SIMP(statut='f',typ='R'),
- J5 =SIMP(statut='f',typ='R'),
- J6 =SIMP(statut='f',typ='R'),
- J7 =SIMP(statut='f',typ='R'),
- J8 =SIMP(statut='f',typ='R'),
- TAUX_1 =SIMP(statut='f',typ='R'),
- TAUX_2 =SIMP(statut='f',typ='R'),
- TAUX_3 =SIMP(statut='f',typ='R'),
- TAUX_4 =SIMP(statut='f',typ='R'),
- TAUX_5 =SIMP(statut='f',typ='R'),
- TAUX_6 =SIMP(statut='f',typ='R'),
- TAUX_7 =SIMP(statut='f',typ='R'),
- TAUX_8 =SIMP(statut='f',typ='R'),
- ),
- V_GRANGER_FP =FACT(statut='f',
- QSR_VEIL =SIMP(statut='f',typ='R'),
- FONC_V =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("INST",) ),
- ),
- BAZANT_FD =FACT(statut='f',
- LAM_VISC =SIMP(statut='o',typ='R'),
- ),
- BETON_UMLV_FP =FACT(statut='f',min=0 ,
- K_RS =SIMP(statut='o',typ='R'),
- ETA_RS =SIMP(statut='o',typ='R'),
- K_IS =SIMP(statut='o',typ='R'),
- ETA_IS =SIMP(statut='o',typ='R'),
- K_RD =SIMP(statut='o',typ='R'),
- ETA_RD =SIMP(statut='o',typ='R'),
- ETA_ID =SIMP(statut='o',typ='R'),
- ETA_FD =SIMP(statut='f',typ='R'),
- ),
- GLRC =FACT(statut='f',min=0,max=1,
- MEX1 =SIMP(statut='o',typ='R',val_min=0.E+0),
- MEY1 =SIMP(statut='o',typ='R',val_min=0.E+0),
- MEX2 =SIMP(statut='o',typ='R',val_max=0.E+0),
- MEY2 =SIMP(statut='o',typ='R',val_max=0.E+0),
- CX1 =SIMP(statut='o',typ='R',val_min=0.E+0),
- CY1 =SIMP(statut='o',typ='R',val_min=0.E+0),
- CXY1 =SIMP(statut='o',typ='R',val_min=0.E+0),
- CX2 =SIMP(statut='o',typ='R',val_min=0.E+0),
- CY2 =SIMP(statut='o',typ='R',val_min=0.E+0),
- CXY2 =SIMP(statut='o',typ='R',val_min=0.E+0),
- ),
- GLRC_FO =FACT(statut='f',min=0,max=1,
- MEX1 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- MEY1 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- MEX2 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- MEY2 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- CX1 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- CY1 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- CXY1 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- CX2 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- CY2 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- CXY2 =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("NORM",) ),
- ),
- GATT_MONERIE =FACT(statut='f',min=0,max=1,
- D_GRAIN =SIMP(statut='o',typ='R',val_min=0.E+0),
- PORO_INIT =SIMP(statut='o',typ='R',val_min=0.E+0),
- EPSI_01 =SIMP(statut='o',typ='R',defaut= 2.7252E-10,val_min=0.E+0),
- EPSI_02 =SIMP(statut='o',typ='R',defaut= 9.1440E-41,val_min=0.E+0),
- ),
- CORR_ACIER =FACT(statut='f',min=0 ,max=1,
- D_CORR =SIMP(statut='o',typ='R'),
- ECRO_K =SIMP(statut='o',typ='R'),
- ECRO_M =SIMP(statut='o',typ='R'),
- SY =SIMP(statut='o',typ='R'),
- ),
-#
-# comportement thermique
-#
- THER_NL =FACT(statut='f',
- regles=(UN_PARMI('BETA','RHO_CP', ),),
- LAMBDA =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- BETA =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- RHO_CP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP",) ),
- ),
- THER_HYDR =FACT(statut='f',
- LAMBDA =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- BETA =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- AFFINITE =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- CHALHYDR =SIMP(statut='o',typ='R'),
- QSR_K =SIMP(statut='o',typ='R'),
- VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("HYDR","TEMP",) ),
- ),
- THER =FACT(statut='f',
- LAMBDA =SIMP(statut='o',typ='R'),
- RHO_CP =SIMP(statut='f',typ='R'),
- ),
- THER_FO =FACT(statut='f',
- LAMBDA =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- RHO_CP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("INST",) ),
- ),
- THER_ORTH =FACT(statut='f',
- LAMBDA_L =SIMP(statut='o',typ='R'),
- LAMBDA_T =SIMP(statut='o',typ='R'),
- LAMBDA_N =SIMP(statut='f',typ='R'),
- RHO_CP =SIMP(statut='f',typ='R'),
- ),
- THER_COQUE =FACT(statut='f',
- COND_LMM =SIMP(statut='o',typ='R'),
- COND_TMM =SIMP(statut='o',typ='R'),
- COND_LMP =SIMP(statut='o',typ='R'),
- COND_TMP =SIMP(statut='o',typ='R'),
- COND_LPP =SIMP(statut='o',typ='R'),
- COND_TPP =SIMP(statut='o',typ='R'),
- COND_LSI =SIMP(statut='o',typ='R'),
- COND_TSI =SIMP(statut='o',typ='R'),
- COND_NMM =SIMP(statut='o',typ='R'),
- COND_NMP =SIMP(statut='o',typ='R'),
- COND_NPP =SIMP(statut='o',typ='R'),
- COND_NSI =SIMP(statut='o',typ='R'),
- CMAS_MM =SIMP(statut='f',typ='R'),
- CMAS_MP =SIMP(statut='f',typ='R'),
- CMAS_PP =SIMP(statut='f',typ='R'),
- CMAS_SI =SIMP(statut='f',typ='R'),
- ),
- THER_COQUE_FO =FACT(statut='f',
- COND_LMM =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- COND_TMM =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- COND_LMP =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- COND_TMP =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- COND_LPP =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- COND_TPP =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- COND_LSI =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- COND_TSI =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- COND_NMM =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- COND_NMP =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- COND_NPP =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- COND_NSI =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- CMAS_MM =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- CMAS_MP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- CMAS_PP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- CMAS_SI =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- ),
- SECH_GRANGER =FACT(statut='f',
- A =SIMP(statut='o',typ='R'),
- B =SIMP(statut='o',typ='R'),
- QSR_K =SIMP(statut='o',typ='R'),
- TEMP_0_C =SIMP(statut='o',typ='R'),
- ),
- SECH_MENSI =FACT(statut='f',
- A =SIMP(statut='o',typ='R'),
- B =SIMP(statut='o',typ='R'),
- ),
- SECH_BAZANT =FACT(statut='f',
- D1 =SIMP(statut='o',typ='R'),
- ALPHA_BAZANT =SIMP(statut='o',typ='R'),
- N =SIMP(statut='o',typ='R'),
- FONC_DESORP =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP",) ),
- ),
- SECH_NAPPE =FACT(statut='f',
- FONCTION =SIMP(statut='o',typ=(nappe_sdaster,formule)),
- VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP","TSEC",) ),
- ),
-#
-# comportement métallurgique
-#
- META_ACIER =FACT(statut='f',
- TRC =SIMP(statut='o',typ=(tabl_trc) ),
- AR3 =SIMP(statut='o',typ='R'),
- ALPHA =SIMP(statut='o',typ='R'),
- MS0 =SIMP(statut='o',typ='R'),
- AC1 =SIMP(statut='o',typ='R'),
- AC3 =SIMP(statut='o',typ='R'),
- TAUX_1 =SIMP(statut='o',typ='R'),
- TAUX_3 =SIMP(statut='o',typ='R'),
- LAMBDA0 =SIMP(statut='f',typ='R'),
- QSR_K =SIMP(statut='f',typ='R'),
- D10 =SIMP(statut='f',typ='R'),
- WSR_K =SIMP(statut='f',typ='R'),
- ),
- META_ZIRC =FACT(statut='f',
- TDEQ =SIMP(statut='o',typ='R'),
- N =SIMP(statut='o',typ='R'),
- K =SIMP(statut='o',typ='R'),
- TDC =SIMP(statut='o',typ='R'),
- AC =SIMP(statut='o',typ='R'),
- M =SIMP(statut='o',typ='R'),
- QSR_K =SIMP(statut='f',typ='R'),
- TDR =SIMP(statut='o',typ='R'),
- AR =SIMP(statut='o',typ='R'),
- BR =SIMP(statut='o',typ='R'),
- ),
- DURT_META =FACT(statut='f',
- F1_DURT =SIMP(statut='o',typ='R'),
- F2_DURT =SIMP(statut='o',typ='R'),
- F3_DURT =SIMP(statut='o',typ='R'),
- F4_DURT =SIMP(statut='o',typ='R'),
- C_DURT =SIMP(statut='o',typ='R'),
- ),
- ELAS_META =FACT(statut='f',
- E =SIMP(statut='o',typ='R'),
- NU =SIMP(statut='o',typ='R'),
- F_ALPHA =SIMP(statut='o',typ='R'),
- C_ALPHA =SIMP(statut='o',typ='R'),
- PHASE_REFE =SIMP(statut='o',typ='TXM',into=("CHAUD","FROID")),
- EPSF_EPSC_TREF =SIMP(statut='o',typ='R'),
- PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E+0),
- F1_SY =SIMP(statut='f',typ='R'),
- F2_SY =SIMP(statut='f',typ='R'),
- F3_SY =SIMP(statut='f',typ='R'),
- F4_SY =SIMP(statut='f',typ='R'),
- C_SY =SIMP(statut='f',typ='R'),
- SY_MELANGE =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- F1_S_VP =SIMP(statut='f',typ='R'),
- F2_S_VP =SIMP(statut='f',typ='R'),
- F3_S_VP =SIMP(statut='f',typ='R'),
- F4_S_VP =SIMP(statut='f',typ='R'),
- C_S_VP =SIMP(statut='f',typ='R' ),
- S_VP_MELANGE =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("META",)),
- ),
- ELAS_META_FO =FACT(statut='f',
- regles=(
- PRESENT_PRESENT('F_ALPHA','TEMP_DEF_ALPHA'),
- PRESENT_PRESENT('C_ALPHA','TEMP_DEF_ALPHA'),
- ),
- E =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- NU =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- F_ALPHA =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- C_ALPHA =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PHASE_REFE =SIMP(statut='o',typ='TXM',into=("CHAUD","FROID")),
- EPSF_EPSC_TREF =SIMP(statut='o',typ='R'),
- TEMP_DEF_ALPHA =SIMP(statut='f',typ='R'),
- PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E+0),
- F1_SY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- F2_SY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- F3_SY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- F4_SY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- C_SY =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- SY_MELANGE =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- F1_S_VP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- F2_S_VP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- F3_S_VP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- F4_S_VP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- C_S_VP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- S_VP_MELANGE =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP","META",)),
- ),
- META_ECRO_LINE =FACT(statut='f',
- F1_D_SIGM_EPSI =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- F2_D_SIGM_EPSI =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- F3_D_SIGM_EPSI =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- F4_D_SIGM_EPSI =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- C_D_SIGM_EPSI =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP",)),
- ),
- META_TRACTION =FACT(statut='f',
- SIGM_F1 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- SIGM_F2 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- SIGM_F3 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- SIGM_F4 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- SIGM_C =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("EPSI","TEMP",)),
- ),
- META_VISC_FO =FACT(statut='f',
- F1_ETA =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- F1_N =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- F1_C =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- F1_M =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- F2_ETA =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- F2_N =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- F2_C =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- F2_M =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- F3_ETA =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- F3_N =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- F3_C =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- F3_M =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- F4_ETA =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- F4_N =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- F4_C =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- F4_M =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- C_ETA =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- C_N =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- C_C =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- C_M =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP",) ),
- ),
- META_PT =FACT(statut='f',
- F1_K =SIMP(statut='f',typ='R'),
- F2_K =SIMP(statut='f',typ='R'),
- F3_K =SIMP(statut='f',typ='R'),
- F4_K =SIMP(statut='f',typ='R'),
- F1_D_F_META =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- F2_D_F_META =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- F3_D_F_META =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- F4_D_F_META =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP","META",) ),
- ),
- META_RE =FACT(statut='f',
- C_F1_THETA =SIMP(statut='f',typ='R'),
- C_F2_THETA =SIMP(statut='f',typ='R'),
- C_F3_THETA =SIMP(statut='f',typ='R'),
- C_F4_THETA =SIMP(statut='f',typ='R'),
- F1_C_THETA =SIMP(statut='f',typ='R'),
- F2_C_THETA =SIMP(statut='f',typ='R'),
- F3_C_THETA =SIMP(statut='f',typ='R'),
- F4_C_THETA =SIMP(statut='f',typ='R'),
- ),
-#
-# comportement fluide
-#
- FLUIDE =FACT(statut='f',
- regles=(EXCLUS('CELE_C','CELE_R'),),
- RHO =SIMP(statut='o',typ='R'),
- CELE_C =SIMP(statut='f',typ='C'),
- CELE_R =SIMP(statut='f',typ='R'),
- ),
- PORO_JOINT =FACT(statut='f',
- RHO_FLUI =SIMP(statut='o',typ='R'),
- ENTRO_FLUI =SIMP(statut='o',typ='R'),
- BIOT_M =SIMP(statut='o',typ='R'),
- C_0 =SIMP(statut='o',typ='R'),
- T_R =SIMP(statut='o',typ='R'),
- ALPHA_M =SIMP(statut='o',typ='R'),
- LAMBDA_T =SIMP(statut='o',typ='R'),
- LAMBDA_H =SIMP(statut='o',typ='R'),
- SOURCE_INIT =SIMP(statut='o',typ='R'),
- OMEGA_0 =SIMP(statut='o',typ='R'),
- ),
-# =================================================================================
-# COMPORTEMENT THERMO_HYDRO_MECANIQUE
-# LES DONNEES NECESSAIRES A LA DEFINITION DU MATERIAU SONT DEPENDANTES
-# DE LA LOI DE COUPLAGE THM DE LA RELATION
-# LE COMPORTEMENT DE COUPLAGE COMP_THM N EST VALABLE QUE POUR LES LOIS
-# DE COUPLAGE : LIQU_SATU,LIQU_GAZ,GAZ,LIQU_GAZ_ATM,LIQU_VAPE_GAZ,LIQU_VAPE
-# ET LIQU_AD_GAZ_VAPE
-# POUR LES LOIS DE COUPLAGE LIQU_SATU_GAT ET LIQU_NSAT_GAT
-# ON NE MODIFIE RIEN
-# LA CORRESPONDANCE AVEC LES VARIABLES CACHEES EST LA SUIVANTE :
-# 1 --> LIQU_SATU
-# 2 --> GAZ
-# 3 --> LIQU_VAPE
-# 4 --> LIQU_VAPE_GAZ
-# 5 --> LIQU_GAZ
-# 6 --> LIQU_GAZ_ATM
-# 7 --> LIQU_SATU_GAT
-# 8 --> LIQU_NSAT_GAT
-# 9 --> LIQU_AD_GAZ_VAPE
-# =================================================================================
- COMP_THM = SIMP(statut='f', typ='TXM',
- into = ( "LIQU_SATU" ,
- "LIQU_GAZ" ,
- "GAZ" ,
- "LIQU_GAZ_ATM" ,
- "LIQU_VAPE_GAZ" ,
- "LIQU_VAPE" ,
- "LIQU_SATU_GAT" ,
- "LIQU_NSAT_GAT" ,
- "LIQU_AD_GAZ_VAPE" ,
- ) ),
-# =================================================================================
-# --- LOI DE COUPLAGE DE TYPE LIQU_SATU -------------------------------------------
-# =================================================================================
-# --- PRESENCE OBLIGATOIRE DES MOT-CLES SUIVANT : ---------------------------------
-# --- THM_INIT, THM_DIFFU, THM_LIQU -----------------------------------------------
-# =================================================================================
- b_liqusatu = BLOC(condition = "COMP_THM == 'LIQU_SATU' ",
- fr="Paramètres nécessaires pour une loi de couplage de type LIQU_SATU",
-# =================================================================================
-# --- MOT-CLE OBLIGATOIRE ---------------------------------------------------------
-# =================================================================================
- THM_INIT = FACT(statut='o',
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES OBLIGATOIRE -------------------------------------
-# ---------------------------------------------------------------------------------
- PRE1 = SIMP(statut='o',typ='R'),
- PORO = SIMP(statut='o',typ='R'),
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES NECESSAIRE SI THERMIQUE -------------------------
-# ---------------------------------------------------------------------------------
- TEMP = SIMP(statut='f',typ='R'),
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES INUTILES ----------------------------------------
-# ---------------------------------------------------------------------------------
- PRE2 = SIMP(statut='f',typ='R'),
- PRES_VAPE = SIMP(statut='f',typ='R'),
- DEGR_SATU = SIMP(statut='f',typ='R'),
- PRES_ATMO = SIMP(statut='f',typ='R'),
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEE CACHEE ---------------------------------------------
-# ---------------------------------------------------------------------------------
- COMP_THM = SIMP(statut='c',typ='R',defaut= 1.0,),
- ),
-# =================================================================================
-# --- MOT-CLE OBLIGATOIRE ---------------------------------------------------------
-# =================================================================================
- THM_DIFFU = FACT(statut='o',
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES OBLIGATOIRE -------------------------------------
-# ---------------------------------------------------------------------------------
- RHO = SIMP(statut='o',typ='R'),
- BIOT_COEF = SIMP(statut='o',typ='R'),
- PESA_X = SIMP(statut='o',typ='R'),
- PESA_Y = SIMP(statut='o',typ='R'),
- PESA_Z = SIMP(statut='o',typ='R'),
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES NECESSAIRE SI THERMIQUE -------------------------
-# ---------------------------------------------------------------------------------
- CP = SIMP(statut='f',typ='R'),
- PERM_IN = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PERM_END = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- regles = (EXCLUS('PERM_IN','PERM_END','PERMIN_X',),
- PRESENT_PRESENT('PERMIN_X','PERMIN_Y','PERMIN_Z',), ),
- PERMIN_X =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PERMIN_Y =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PERMIN_Z =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- LAMB_PHI = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_LB_PHI = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- LAMB_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_LB_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- LAMB_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_LB_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- LAMB_CT = SIMP(statut='f',typ='R'),
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES INUTILES ----------------------------------------
-# ---------------------------------------------------------------------------------
- R_GAZ = SIMP(statut='f',typ='R'),
- EMMAG = SIMP(statut='f',typ='R'),
- SATU_PRES =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_SATU_PRES =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PERM_LIQU =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_PERM_LIQU_SATU=SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PERM_GAZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_PERM_SATU_GAZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_PERM_PRES_GAZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- SIGMA_T =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_SIGMA_T =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PERM_G_INTR =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- CHAL_VAPO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKV_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKV_PV = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKV_PG = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKV_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_FV_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_FV_PG = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKA_PA = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKA_PL = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKA_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_FA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES CACHEES -------------------------------------------
-# ---------------------------------------------------------------------------------
- VERI_P =SIMP(statut='c',typ='TXM',defaut=("TEMP","SAT","PORO","PGAZ","PCAP","ENDO",) ),
- ),
-# =================================================================================
-# --- MOT-CLE OBLIGATOIRE ---------------------------------------------------------
-# =================================================================================
- THM_LIQU = FACT(statut='o',
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES OBLIGATOIRE -------------------------------------
-# ---------------------------------------------------------------------------------
- RHO = SIMP(statut='o',typ='R'),
- UN_SUR_K = SIMP(statut='o',typ='R'),
- VISC = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_VISC_TEMP = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES NECESSAIRE SI THERMIQUE -------------------------
-# ---------------------------------------------------------------------------------
- ALPHA = SIMP(statut='f',typ='R'),
- CP = SIMP(statut='f',typ='R'),
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES CACHEES -------------------------------------------
-# ---------------------------------------------------------------------------------
- VERI_P = SIMP(statut='c',typ='TXM',defaut=("TEMP",)),
- ),
-# =================================================================================
-# --- MOT-CLE INUTILE -------------------------------------------------------------
-# =================================================================================
- THM_GAZ =FACT(statut='f',
- MASS_MOL =SIMP(statut='f',typ='R'),
- CP =SIMP(statut='f',typ='R'),
- VISC =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_VISC_TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- VERI_P =SIMP(statut='c',typ='TXM',defaut=("TEMP",)),
- ),
-# =================================================================================
-# --- MOT-CLE INUTILE -------------------------------------------------------------
-# =================================================================================
- THM_VAPE_GAZ =FACT(statut='f',
- MASS_MOL =SIMP(statut='f',typ='R'),
- CP =SIMP(statut='f',typ='R'),
- VISC =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_VISC_TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- VERI_P =SIMP(statut='c',typ='TXM',defaut=("TEMP",)),
- ),
- ),
-# =================================================================================
-# --- LOI DE COUPLAGE DE TYPE LIQU_GAZ --------------------------------------------
-# =================================================================================
-# --- PRESENCE OBLIGATOIRE DES MOT-CLES SUIVANT : ---------------------------------
-# --- THM_INIT, THM_DIFFU, THM_LIQU, THM_GAZ --------------------------------------
-# =================================================================================
- b_liqugaz = BLOC(condition = "COMP_THM == 'LIQU_GAZ' ",
- fr="Paramètres nécessaires pour une loi de couplage de type LIQU_GAZ",
-# =================================================================================
-# --- MOT-CLE OBLIGATOIRE ---------------------------------------------------------
-# =================================================================================
- THM_INIT = FACT(statut='o',
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES OBLIGATOIRE -------------------------------------
-# ---------------------------------------------------------------------------------
- PRE1 = SIMP(statut='o',typ='R'),
- PRE2 = SIMP(statut='o',typ='R'),
- PORO = SIMP(statut='o',typ='R'),
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES NECESSAIRE SI THERMIQUE -------------------------
-# ---------------------------------------------------------------------------------
- TEMP = SIMP(statut='f',typ='R'),
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES INUTILES ----------------------------------------
-# ---------------------------------------------------------------------------------
- PRES_VAPE = SIMP(statut='f',typ='R'),
- DEGR_SATU = SIMP(statut='f',typ='R'),
- PRES_ATMO = SIMP(statut='f',typ='R'),
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEE CACHEE ---------------------------------------------
-# ---------------------------------------------------------------------------------
- COMP_THM = SIMP(statut='c',typ='R',defaut= 5.0,),
- ),
-# =================================================================================
-# --- MOT-CLE OBLIGATOIRE ---------------------------------------------------------
-# =================================================================================
- THM_DIFFU = FACT(statut='o',
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES OBLIGATOIRE -------------------------------------
-# ---------------------------------------------------------------------------------
- R_GAZ = SIMP(statut='o',typ='R'),
- RHO = SIMP(statut='o',typ='R'),
- BIOT_COEF = SIMP(statut='o',typ='R'),
- PESA_X = SIMP(statut='o',typ='R'),
- PESA_Y = SIMP(statut='o',typ='R'),
- PESA_Z = SIMP(statut='o',typ='R'),
- SATU_PRES = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_SATU_PRES = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PERM_LIQU = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_PERM_LIQU_SATU = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PERM_GAZ = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_PERM_SATU_GAZ = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_PERM_PRES_GAZ = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES NECESSAIRE SI THERMIQUE -------------------------
-# ---------------------------------------------------------------------------------
- CP = SIMP(statut='f',typ='R'),
- PERM_IN = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PERM_END = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- regles = (EXCLUS('PERM_IN','PERM_END','PERMIN_X',),
- PRESENT_PRESENT('PERMIN_X','PERMIN_Y','PERMIN_Z',), ),
- PERMIN_X =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PERMIN_Y =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PERMIN_Z =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- LAMB_PHI = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_LB_PHI = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- LAMB_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_LB_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- LAMB_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_LB_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- LAMB_CT = SIMP(statut='f',typ='R'),
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES INUTILES ----------------------------------------
-# ---------------------------------------------------------------------------------
- EMMAG = SIMP(statut='f',typ='R'),
- SIGMA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_SIGMA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PERM_G_INTR = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- CHAL_VAPO = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKV_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKV_PV = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKV_PG = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKV_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_FV_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_FV_PG = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKA_PA = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKA_PL = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKA_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_FA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES CACHEES -------------------------------------------
-# ---------------------------------------------------------------------------------
- VERI_P = SIMP(statut='c',typ='TXM',defaut=("TEMP","SAT","PORO","PGAZ","PCAP","ENDO",) ),
- ) ,
-# =================================================================================
-# --- MOT-CLE OBLIGATOIRE ---------------------------------------------------------
-# =================================================================================
- THM_LIQU = FACT(statut='o',
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES OBLIGATOIRE -------------------------------------
-# ---------------------------------------------------------------------------------
- RHO = SIMP(statut='o',typ='R'),
- UN_SUR_K = SIMP(statut='o',typ='R'),
- VISC = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_VISC_TEMP = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES NECESSAIRE SI THERMIQUE -------------------------
-# ---------------------------------------------------------------------------------
- ALPHA = SIMP(statut='f',typ='R'),
- CP = SIMP(statut='f',typ='R'),
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES CACHEES -------------------------------------------
-# ---------------------------------------------------------------------------------
- VERI_P = SIMP(statut='c',typ='TXM',defaut=("TEMP",)),
- ),
-# =================================================================================
-# --- MOT-CLE OBLIGATOIRE ---------------------------------------------------------
-# =================================================================================
- THM_GAZ = FACT(statut='o',
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES OBLIGATOIRE -------------------------------------
-# ---------------------------------------------------------------------------------
- MASS_MOL = SIMP(statut='o',typ='R'),
- VISC = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_VISC_TEMP = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES NECESSAIRE SI THERMIQUE -------------------------
-# ---------------------------------------------------------------------------------
- CP = SIMP(statut='f',typ='R'),
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES CACHEES -------------------------------------------
-# ---------------------------------------------------------------------------------
- VERI_P = SIMP(statut='c',typ='TXM',defaut=("TEMP",)),
- ),
-# =================================================================================
-# --- MOT-CLE INUTILE -------------------------------------------------------------
-# =================================================================================
- THM_VAPE_GAZ =FACT(statut='f',
- MASS_MOL =SIMP(statut='f',typ='R'),
- CP =SIMP(statut='f',typ='R'),
- VISC =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_VISC_TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- VERI_P =SIMP(statut='c',typ='TXM',defaut=("TEMP",)),
- ),
- ),
-# =================================================================================
-# --- LOI DE COUPLAGE DE TYPE GAZ -------------------------------------------------
-# =================================================================================
-# --- PRESENCE OBLIGATOIRE DES MOT-CLES SUIVANT : ---------------------------------
-# --- THM_INIT, THM_DIFFU, THM_GAZ ------------------------------------------------
-# =================================================================================
- b_gaz = BLOC(condition = "COMP_THM == 'GAZ' ",
- fr="Paramètres nécessaires pour une loi de couplage de type GAZ",
-# =================================================================================
-# --- MOT-CLE OBLIGATOIRE ---------------------------------------------------------
-# =================================================================================
- THM_INIT = FACT(statut='o',
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES OBLIGATOIRE -------------------------------------
-# ---------------------------------------------------------------------------------
- TEMP = SIMP(statut='o',typ='R'),
- PRE1 = SIMP(statut='o',typ='R'),
- PORO = SIMP(statut='o',typ='R'),
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES INUTILES ----------------------------------------
-# ---------------------------------------------------------------------------------
- PRE2 = SIMP(statut='f',typ='R'),
- PRES_VAPE = SIMP(statut='f',typ='R'),
- DEGR_SATU = SIMP(statut='f',typ='R'),
- PRES_ATMO = SIMP(statut='f',typ='R'),
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEE CACHEE ---------------------------------------------
-# ---------------------------------------------------------------------------------
- COMP_THM = SIMP(statut='c',typ='R',defaut= 2.0,),
- ),
-# =================================================================================
-# --- MOT-CLE OBLIGATOIRE ---------------------------------------------------------
-# =================================================================================
- THM_DIFFU = FACT(statut='o',
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES OBLIGATOIRE -------------------------------------
-# ---------------------------------------------------------------------------------
- R_GAZ = SIMP(statut='o',typ='R'),
- RHO = SIMP(statut='o',typ='R'),
- BIOT_COEF = SIMP(statut='o',typ='R'),
- PESA_X = SIMP(statut='o',typ='R'),
- PESA_Y = SIMP(statut='o',typ='R'),
- PESA_Z = SIMP(statut='o',typ='R'),
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES NECESSAIRE SI THERMIQUE -------------------------
-# ---------------------------------------------------------------------------------
- CP = SIMP(statut='f',typ='R'),
- PERM_IN = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PERM_END = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- regles = (EXCLUS('PERM_IN','PERM_END','PERMIN_X',),
- PRESENT_PRESENT('PERMIN_X','PERMIN_Y','PERMIN_Z',), ),
- PERMIN_X =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PERMIN_Y =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PERMIN_Z =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- LAMB_PHI = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_LB_PHI = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- LAMB_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_LB_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- LAMB_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_LB_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- LAMB_CT = SIMP(statut='f',typ='R'),
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES INUTILES ----------------------------------------
-# ---------------------------------------------------------------------------------
- EMMAG = SIMP(statut='f',typ='R'),
- SATU_PRES =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_SATU_PRES =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PERM_LIQU =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_PERM_LIQU_SATU=SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PERM_GAZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_PERM_SATU_GAZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_PERM_PRES_GAZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- SIGMA_T =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_SIGMA_T =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PERM_G_INTR =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- CHAL_VAPO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKV_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKV_PV = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKV_PG = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKV_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_FV_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_FV_PG = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKA_PA = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKA_PL = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKA_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_FA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES CACHEES -------------------------------------------
-# ---------------------------------------------------------------------------------
- VERI_P =SIMP(statut='c',typ='TXM',defaut=("TEMP","SAT","PORO","PGAZ","PCAP","ENDO",) ),
- ) ,
-# =================================================================================
-# --- MOT-CLE OBLIGATOIRE ---------------------------------------------------------
-# =================================================================================
- THM_GAZ = FACT(statut='o',
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES OBLIGATOIRE -------------------------------------
-# ---------------------------------------------------------------------------------
- MASS_MOL = SIMP(statut='o',typ='R'),
- VISC = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_VISC_TEMP = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES NECESSAIRE SI THERMIQUE -------------------------
-# ---------------------------------------------------------------------------------
- CP = SIMP(statut='f',typ='R'),
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES CACHEES -------------------------------------------
-# ---------------------------------------------------------------------------------
- VERI_P = SIMP(statut='c',typ='TXM',defaut=("TEMP",)),
- ),
-# =================================================================================
-# --- MOT-CLE INUTILE -------------------------------------------------------------
-# =================================================================================
- THM_LIQU =FACT(statut='f',
- RHO =SIMP(statut='f',typ='R'),
- UN_SUR_K =SIMP(statut='f',typ='R'),
- ALPHA =SIMP(statut='f',typ='R'),
- CP =SIMP(statut='f',typ='R'),
- VISC =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_VISC_TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- COEF_HENRY =SIMP(statut='f',typ='R'),
- VERI_P =SIMP(statut='c',typ='TXM',defaut=("TEMP",)),
- ),
-# =================================================================================
-# --- MOT-CLE INUTILE -------------------------------------------------------------
-# =================================================================================
- THM_VAPE_GAZ =FACT(statut='f',
- MASS_MOL =SIMP(statut='f',typ='R'),
- CP =SIMP(statut='f',typ='R'),
- VISC =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_VISC_TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- VERI_P =SIMP(statut='c',typ='TXM',defaut=("TEMP",)),
- ),
- ),
-# =================================================================================
-# --- LOI DE COUPLAGE DE TYPE LIQU_GAZ_ATM ----------------------------------------
-# =================================================================================
-# --- PRESENCE OBLIGATOIRE DES MOT-CLES SUIVANT : ---------------------------------
-# --- THM_INIT, THM_DIFFU, THM_LIQU, THM_GAZ --------------------------------------
-# =================================================================================
- b_liqugazatm = BLOC(condition = "COMP_THM == 'LIQU_GAZ_ATM' ",
- fr="Paramètres nécessaires pour une loi de couplage de type LIQU_GAZ_ATM",
-# =================================================================================
-# --- MOT-CLE OBLIGATOIRE ---------------------------------------------------------
-# =================================================================================
- THM_INIT = FACT(statut='o',
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES OBLIGATOIRE -------------------------------------
-# ---------------------------------------------------------------------------------
- PRE1 = SIMP(statut='o',typ='R'),
- PORO = SIMP(statut='o',typ='R'),
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES NECESSAIRE SI THERMIQUE -------------------------
-# ---------------------------------------------------------------------------------
- TEMP = SIMP(statut='f',typ='R'),
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES INUTILES ----------------------------------------
-# ---------------------------------------------------------------------------------
- PRE2 = SIMP(statut='f',typ='R'),
- PRES_VAPE = SIMP(statut='f',typ='R'),
- DEGR_SATU = SIMP(statut='f',typ='R'),
- PRES_ATMO = SIMP(statut='f',typ='R'),
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEE CACHEE ---------------------------------------------
-# ---------------------------------------------------------------------------------
- COMP_THM = SIMP(statut='c',typ='R',defaut= 6.0,),
- ),
-# =================================================================================
-# --- MOT-CLE OBLIGATOIRE ---------------------------------------------------------
-# =================================================================================
- THM_DIFFU = FACT(statut='o',
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES OBLIGATOIRE -------------------------------------
-# ---------------------------------------------------------------------------------
- RHO = SIMP(statut='o',typ='R'),
- BIOT_COEF = SIMP(statut='o',typ='R'),
- PESA_X = SIMP(statut='o',typ='R'),
- PESA_Y = SIMP(statut='o',typ='R'),
- PESA_Z = SIMP(statut='o',typ='R'),
- SATU_PRES = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_SATU_PRES = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PERM_LIQU = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_PERM_LIQU_SATU = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES NECESSAIRE SI THERMIQUE -------------------------
-# ---------------------------------------------------------------------------------
- CP = SIMP(statut='f',typ='R'),
- PERM_IN = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PERM_END = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- regles = (EXCLUS('PERM_IN','PERM_END','PERMIN_X',),
- PRESENT_PRESENT('PERMIN_X','PERMIN_Y','PERMIN_Z',), ),
- PERMIN_X =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PERMIN_Y =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PERMIN_Z =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- LAMB_PHI = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_LB_PHI = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- LAMB_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_LB_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- LAMB_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_LB_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- LAMB_CT = SIMP(statut='f',typ='R'),
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES INUTILES ----------------------------------------
-# ---------------------------------------------------------------------------------
- EMMAG = SIMP(statut='f',typ='R'),
- R_GAZ =SIMP(statut='f',typ='R'),
- PERM_GAZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_PERM_SATU_GAZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_PERM_PRES_GAZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- SIGMA_T =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_SIGMA_T =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PERM_G_INTR =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- CHAL_VAPO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKV_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKV_PV = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKV_PG = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKV_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_FV_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_FV_PG = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKA_PA = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKA_PL = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKA_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_FA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES CACHEES -------------------------------------------
-# ---------------------------------------------------------------------------------
- VERI_P =SIMP(statut='c',typ='TXM',defaut=("TEMP","SAT","PORO","PGAZ","PCAP","ENDO",) ),
- ) ,
-# =================================================================================
-# --- MOT-CLE OBLIGATOIRE ---------------------------------------------------------
-# =================================================================================
- THM_LIQU = FACT(statut='o',
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES OBLIGATOIRE -------------------------------------
-# ---------------------------------------------------------------------------------
- RHO = SIMP(statut='o',typ='R'),
- UN_SUR_K = SIMP(statut='o',typ='R'),
- VISC = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_VISC_TEMP = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES NECESSAIRE SI THERMIQUE -------------------------
-# ---------------------------------------------------------------------------------
- ALPHA = SIMP(statut='f',typ='R'),
- CP = SIMP(statut='f',typ='R'),
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES CACHEES -------------------------------------------
-# ---------------------------------------------------------------------------------
- VERI_P = SIMP(statut='c',typ='TXM',defaut=("TEMP",)),
- ),
-# =================================================================================
-# --- MOT-CLE INUTILE -------------------------------------------------------------
-# =================================================================================
- THM_GAZ = FACT(statut='f',
- MASS_MOL = SIMP(statut='f',typ='R'),
- VISC = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_VISC_TEMP = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- CP = SIMP(statut='f',typ='R'),
- VERI_P = SIMP(statut='c',typ='TXM',defaut=("TEMP",)),
- ),
-# =================================================================================
-# --- MOT-CLE INUTILE -------------------------------------------------------------
-# =================================================================================
- THM_VAPE_GAZ =FACT(statut='f',
- MASS_MOL =SIMP(statut='f',typ='R'),
- CP =SIMP(statut='f',typ='R'),
- VISC =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_VISC_TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- VERI_P =SIMP(statut='c',typ='TXM',defaut=("TEMP",)),
- ),
- ),
-# =================================================================================
-# --- LOI DE COUPLAGE DE TYPE LIQU_VAPE_GAZ ---------------------------------------
-# =================================================================================
-# --- PRESENCE OBLIGATOIRE DES MOT-CLES SUIVANT : ---------------------------------
-# --- THM_INIT, THM_DIFFU, THM_LIQU, THM_GAZ, THM_VAPE_GAZ ------------------------
-# =================================================================================
- b_liquvapegaz = BLOC(condition = "COMP_THM == 'LIQU_VAPE_GAZ' ",
- fr="Paramètres nécessaires pour une loi de couplage de type LIQU_VAPE_GAZ",
-# =================================================================================
-# --- MOT-CLE OBLIGATOIRE ---------------------------------------------------------
-# =================================================================================
- THM_INIT = FACT(statut='o',
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES OBLIGATOIRE -------------------------------------
-# ---------------------------------------------------------------------------------
- PRE1 = SIMP(statut='o',typ='R'),
- PRE2 = SIMP(statut='o',typ='R'),
- PORO = SIMP(statut='o',typ='R'),
- PRES_VAPE = SIMP(statut='o',typ='R'),
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES NECESSAIRE SI THERMIQUE -------------------------
-# ---------------------------------------------------------------------------------
- TEMP = SIMP(statut='f',typ='R'),
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES INUTILES ----------------------------------------
-# ---------------------------------------------------------------------------------
- DEGR_SATU = SIMP(statut='f',typ='R'),
- PRES_ATMO = SIMP(statut='f',typ='R'),
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEE CACHEE ---------------------------------------------
-# ---------------------------------------------------------------------------------
- COMP_THM = SIMP(statut='c',typ='R',defaut= 4.0,),
- ),
-# =================================================================================
-# --- MOT-CLE OBLIGATOIRE ---------------------------------------------------------
-# =================================================================================
- THM_DIFFU = FACT(statut='o',
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES OBLIGATOIRE -------------------------------------
-# ---------------------------------------------------------------------------------
- R_GAZ = SIMP(statut='o',typ='R'),
- RHO = SIMP(statut='o',typ='R'),
- BIOT_COEF = SIMP(statut='o',typ='R'),
- PESA_X = SIMP(statut='o',typ='R'),
- PESA_Y = SIMP(statut='o',typ='R'),
- PESA_Z = SIMP(statut='o',typ='R'),
- SATU_PRES = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_SATU_PRES = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PERM_LIQU = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_PERM_LIQU_SATU = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PERM_GAZ = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_PERM_SATU_GAZ = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_PERM_PRES_GAZ = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKV_T = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES NECESSAIRE SI THERMIQUE -------------------------
-# ---------------------------------------------------------------------------------
- CP = SIMP(statut='f',typ='R'),
- PERM_IN = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PERM_END = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- regles = (EXCLUS('PERM_IN','PERM_END','PERMIN_X',),
- PRESENT_PRESENT('PERMIN_X','PERMIN_Y','PERMIN_Z',), ),
- PERMIN_X =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PERMIN_Y =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PERMIN_Z =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- LAMB_PHI = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_LB_PHI = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- LAMB_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_LB_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- LAMB_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_LB_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- LAMB_CT = SIMP(statut='f',typ='R'),
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES FACULTATIVE ----------------------------------
-# ---------------------------------------------------------------------------------
- EMMAG = SIMP(statut='f',typ='R'),
- SIGMA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_SIGMA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PERM_G_INTR = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- CHAL_VAPO = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKV_PV = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKV_PG = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKV_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_FV_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_FV_PG = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES INUTILES ----------------------------------------
-# ---------------------------------------------------------------------------------
- FICKA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKA_PA = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKA_PL = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKA_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_FA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES CACHEES -------------------------------------------
-# ---------------------------------------------------------------------------------
- VERI_P = SIMP(statut='c',typ='TXM',defaut=("TEMP","SAT" ,"PORO","PGAZ","PCAP","ENDO","PVAP","PLIQ","PAD",) ),
- ) ,
-# =================================================================================
-# --- MOT-CLE OBLIGATOIRE ---------------------------------------------------------
-# =================================================================================
- THM_LIQU = FACT(statut='o',
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES OBLIGATOIRE -------------------------------------
-# ---------------------------------------------------------------------------------
- RHO = SIMP(statut='o',typ='R'),
- UN_SUR_K = SIMP(statut='o',typ='R'),
- VISC = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_VISC_TEMP = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES NECESSAIRE SI THERMIQUE -------------------------
-# ---------------------------------------------------------------------------------
- ALPHA = SIMP(statut='f',typ='R'),
- CP = SIMP(statut='f',typ='R'),
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES CACHEES -------------------------------------------
-# ---------------------------------------------------------------------------------
- VERI_P = SIMP(statut='c',typ='TXM',defaut=("TEMP",)),
- ),
-# =================================================================================
-# --- MOT-CLE OBLIGATOIRE ---------------------------------------------------------
-# =================================================================================
- THM_GAZ = FACT(statut='o',
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES OBLIGATOIRE -------------------------------------
-# ---------------------------------------------------------------------------------
- MASS_MOL = SIMP(statut='o',typ='R'),
- VISC = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_VISC_TEMP = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES NECESSAIRE SI THERMIQUE -------------------------
-# ---------------------------------------------------------------------------------
- CP = SIMP(statut='f',typ='R'),
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES CACHEES -------------------------------------------
-# ---------------------------------------------------------------------------------
- VERI_P = SIMP(statut='c',typ='TXM',defaut=("TEMP",)),
- ),
-# =================================================================================
-# --- MOT-CLE OBLIGATOIRE ---------------------------------------------------------
-# =================================================================================
- THM_VAPE_GAZ = FACT(statut='o',
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES OBLIGATOIRE -------------------------------------
-# ---------------------------------------------------------------------------------
- MASS_MOL = SIMP(statut='o',typ='R'),
- CP = SIMP(statut='o',typ='R'),
- VISC = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_VISC_TEMP = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES CACHEES -------------------------------------------
-# ---------------------------------------------------------------------------------
- VERI_P = SIMP(statut='c',typ='TXM',defaut=("TEMP",)),
- ),
- ),
-# =================================================================================
-# --- LOI DE COUPLAGE DE TYPE LIQU_AD_GAZ_VAPE -------------------------------------
-# =================================================================================
-# --- PRESENCE OBLIGATOIRE DES MOT-CLES SUIVANT : ---------------------------------
-# --- THM_INIT, THM_DIFFU, THM_LIQU, THM_GAZ, THM_VAPE_GAZ THM_AIR_DISSOUS---------
-# =================================================================================
- b_liquadvape = BLOC(condition = "COMP_THM == 'LIQU_AD_GAZ_VAPE' ",
- fr="Paramètres nécessaires pour une loi de couplage de type LIQU_AD_GAZ_VAPE",
-# =================================================================================
-# --- MOT-CLE OBLIGATOIRE ---------------------------------------------------------
-# =================================================================================
- THM_INIT = FACT(statut='o',
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES OBLIGATOIRE -------------------------------------
-# ---------------------------------------------------------------------------------
- PRE1 = SIMP(statut='o',typ='R'),
- PRE2 = SIMP(statut='o',typ='R'),
- PORO = SIMP(statut='o',typ='R'),
- PRES_VAPE = SIMP(statut='o',typ='R'),
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES NECESSAIRE SI THERMIQUE -------------------------
-# ---------------------------------------------------------------------------------
- TEMP = SIMP(statut='f',typ='R'),
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES INUTILES ----------------------------------------
-# ---------------------------------------------------------------------------------
- DEGR_SATU = SIMP(statut='f',typ='R'),
- PRES_ATMO = SIMP(statut='f',typ='R'),
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEE CACHEE ---------------------------------------------
-# ---------------------------------------------------------------------------------
- COMP_THM = SIMP(statut='c',typ='R',defaut= 9.0,),
- ),
-# =================================================================================
-# --- MOT-CLE OBLIGATOIRE ---------------------------------------------------------
-# =================================================================================
- THM_DIFFU = FACT(statut='o',
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES OBLIGATOIRE -------------------------------------
-# ---------------------------------------------------------------------------------
- R_GAZ = SIMP(statut='o',typ='R'),
- RHO = SIMP(statut='o',typ='R'),
- BIOT_COEF = SIMP(statut='o',typ='R'),
- PESA_X = SIMP(statut='o',typ='R'),
- PESA_Y = SIMP(statut='o',typ='R'),
- PESA_Z = SIMP(statut='o',typ='R'),
- SATU_PRES = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_SATU_PRES = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PERM_LIQU = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_PERM_LIQU_SATU = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PERM_GAZ = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_PERM_SATU_GAZ = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_PERM_PRES_GAZ = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKV_T = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKA_T = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES NECESSAIRE SI THERMIQUE -------------------------
-# ---------------------------------------------------------------------------------
- CP = SIMP(statut='f',typ='R'),
- PERM_IN = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PERM_END = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- regles = (EXCLUS('PERM_IN','PERM_END','PERMIN_X',),
- PRESENT_PRESENT('PERMIN_X','PERMIN_Y','PERMIN_Z',), ),
- PERMIN_X =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PERMIN_Y =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PERMIN_Z =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- LAMB_PHI = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_LB_PHI = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- LAMB_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_LB_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- LAMB_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_LB_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- LAMB_CT = SIMP(statut='f',typ='R'),
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES FACULTATIVES ------------------------------------
-# ---------------------------------------------------------------------------------
- EMMAG = SIMP(statut='f',typ='R'),
- SIGMA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_SIGMA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PERM_G_INTR = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- CHAL_VAPO = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKV_PV = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKV_PG = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKV_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_FV_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_FV_PG = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
-#
- FICKA_PA = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKA_PL = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKA_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_FA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES CACHEES -------------------------------------------
-# ---------------------------------------------------------------------------------
- VERI_P = SIMP(statut='c',typ='TXM',defaut=("TEMP","SAT","PORO","PGAZ","PCAP","ENDO","PVAP","PLIQ","PAD",) ),
- ) ,
-# =================================================================================
-# --- MOT-CLE OBLIGATOIRE ---------------------------------------------------------
-# =================================================================================
- THM_LIQU = FACT(statut='o',
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES OBLIGATOIRE -------------------------------------
-# ---------------------------------------------------------------------------------
- RHO = SIMP(statut='o',typ='R'),
- UN_SUR_K = SIMP(statut='o',typ='R'),
- VISC = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_VISC_TEMP = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES NECESSAIRE SI THERMIQUE -------------------------
-# ---------------------------------------------------------------------------------
- ALPHA = SIMP(statut='f',typ='R'),
- CP = SIMP(statut='f',typ='R'),
- LAMB_PHI = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_LB_PHI = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- LAMB_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_LB_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- LAMB_CT = SIMP(statut='f',typ='R'),
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES CACHEES -------------------------------------------
-# ---------------------------------------------------------------------------------
- VERI_P = SIMP(statut='c',typ='TXM',defaut=("TEMP",)),
- ),
-# =================================================================================
-# --- MOT-CLE OBLIGATOIRE ---------------------------------------------------------
-# =================================================================================
- THM_GAZ = FACT(statut='o',
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES OBLIGATOIRE -------------------------------------
-# ---------------------------------------------------------------------------------
- MASS_MOL = SIMP(statut='o',typ='R'),
- VISC = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_VISC_TEMP = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES NECESSAIRE SI THERMIQUE -------------------------
-# ---------------------------------------------------------------------------------
- CP = SIMP(statut='f',typ='R'),
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES CACHEES -------------------------------------------
-# ---------------------------------------------------------------------------------
- VERI_P = SIMP(statut='c',typ='TXM',defaut=("TEMP",)),
- ),
-# =================================================================================
-# --- MOT-CLE OBLIGATOIRE ---------------------------------------------------------
-# =================================================================================
- THM_VAPE_GAZ = FACT(statut='o',
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES OBLIGATOIRE -------------------------------------
-# ---------------------------------------------------------------------------------
- MASS_MOL = SIMP(statut='o',typ='R'),
- CP = SIMP(statut='o',typ='R'),
- VISC = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_VISC_TEMP = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES CACHEES -------------------------------------------
-# ---------------------------------------------------------------------------------
- VERI_P = SIMP(statut='c',typ='TXM',defaut=("TEMP",)),
- ),
-# =================================================================================
-# --- MOT-CLE OBLIGATOIRE ---------------------------------------------------------
-# =================================================================================
- THM_AIR_DISS = FACT(statut='o',
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES OBLIGATOIRE -------------------------------------
-# ---------------------------------------------------------------------------------
- CP = SIMP(statut='o',typ='R'),
- COEF_HENRY = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- VERI_P = SIMP(statut='c',typ='TXM',defaut=("TEMP",),),
- ),
- ),
-# =================================================================================
-# --- LOI DE COUPLAGE DE TYPE LIQU_VAPE -------------------------------------------
-# =================================================================================
-# --- PRESENCE OBLIGATOIRE DES MOT-CLES SUIVANT : ---------------------------------
-# --- THM_INIT, THM_DIFFU, THM_LIQU, THM_VAPE_GAZ ---------------------------------
-# =================================================================================
- b_liquvape = BLOC(condition = "COMP_THM == 'LIQU_VAPE' ",
- fr="Paramètres nécessaires pour une loi de couplage de type LIQU_VAPE",
-# =================================================================================
-# --- MOT-CLE OBLIGATOIRE ---------------------------------------------------------
-# =================================================================================
- THM_INIT = FACT(statut='o',
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES OBLIGATOIRE -------------------------------------
-# ---------------------------------------------------------------------------------
- PRE1 = SIMP(statut='o',typ='R'),
- PORO = SIMP(statut='o',typ='R'),
- PRES_VAPE = SIMP(statut='o',typ='R'),
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES NECESSAIRE SI THERMIQUE -------------------------
-# ---------------------------------------------------------------------------------
- TEMP = SIMP(statut='f',typ='R'),
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES INUTILES ----------------------------------------
-# ---------------------------------------------------------------------------------
- PRE2 = SIMP(statut='f',typ='R'),
- DEGR_SATU = SIMP(statut='f',typ='R'),
- PRES_ATMO = SIMP(statut='f',typ='R'),
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEE CACHEE ---------------------------------------------
-# ---------------------------------------------------------------------------------
- COMP_THM = SIMP(statut='c',typ='R',defaut= 3.0,),
- ),
-# =================================================================================
-# --- MOT-CLE OBLIGATOIRE ---------------------------------------------------------
-# =================================================================================
- THM_DIFFU = FACT(statut='o',
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES OBLIGATOIRE -------------------------------------
-# ---------------------------------------------------------------------------------
- R_GAZ = SIMP(statut='o',typ='R'),
- RHO = SIMP(statut='o',typ='R'),
- BIOT_COEF = SIMP(statut='o',typ='R'),
- PESA_X = SIMP(statut='o',typ='R'),
- PESA_Y = SIMP(statut='o',typ='R'),
- PESA_Z = SIMP(statut='o',typ='R'),
- SATU_PRES = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_SATU_PRES = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PERM_LIQU = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_PERM_LIQU_SATU = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PERM_GAZ = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_PERM_SATU_GAZ = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_PERM_PRES_GAZ = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES NECESSAIRE SI THERMIQUE -------------------------
-# ---------------------------------------------------------------------------------
- CP = SIMP(statut='f',typ='R'),
- PERM_IN = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PERM_END = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- regles = (EXCLUS('PERM_IN','PERM_END','PERMIN_X',),
- PRESENT_PRESENT('PERMIN_X','PERMIN_Y','PERMIN_Z',), ),
- PERMIN_X =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PERMIN_Y =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PERMIN_Z =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- LAMB_PHI = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_LB_PHI = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- LAMB_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_LB_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- LAMB_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_LB_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- LAMB_CT = SIMP(statut='f',typ='R'),
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES INUTILES ----------------------------------------
-# ---------------------------------------------------------------------------------
- EMMAG = SIMP(statut='f',typ='R'),
- SIGMA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_SIGMA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PERM_G_INTR = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- CHAL_VAPO = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKV_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKV_PV = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKV_PG = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKV_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_FV_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_FV_PG = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKA_PA = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKA_PL = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKA_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_FA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES CACHEES -------------------------------------------
-# ---------------------------------------------------------------------------------
- VERI_P = SIMP(statut='c',typ='TXM',defaut=("TEMP","SAT","PORO","PGAZ","PCAP","ENDO",) ),
- ) ,
-# =================================================================================
-# --- MOT-CLE OBLIGATOIRE ---------------------------------------------------------
-# =================================================================================
- THM_LIQU = FACT(statut='o',
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES OBLIGATOIRE -------------------------------------
-# ---------------------------------------------------------------------------------
- RHO = SIMP(statut='o',typ='R'),
- UN_SUR_K = SIMP(statut='o',typ='R'),
- VISC = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_VISC_TEMP = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES NECESSAIRE SI THERMIQUE -------------------------
-# ---------------------------------------------------------------------------------
- ALPHA = SIMP(statut='f',typ='R'),
- CP = SIMP(statut='f',typ='R'),
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES CACHEES ---------------------------------------------
-# ---------------------------------------------------------------------------------
- VERI_P = SIMP(statut='c',typ='TXM',defaut=("TEMP",)),
- ),
-# =================================================================================
-# --- MOT-CLE OBLIGATOIRE ---------------------------------------------------------
-# =================================================================================
- THM_VAPE_GAZ = FACT(statut='o',
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES OBLIGATOIRE -------------------------------------
-# ---------------------------------------------------------------------------------
- MASS_MOL = SIMP(statut='o',typ='R'),
- CP = SIMP(statut='o',typ='R'),
- VISC = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_VISC_TEMP = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEES CACHEES -------------------------------------------
-# ---------------------------------------------------------------------------------
- VERI_P = SIMP(statut='c',typ='TXM',defaut=("TEMP",)),
- ),
-# =================================================================================
-# --- MOT-CLE INUTILE -------------------------------------------------------------
-# =================================================================================
- THM_GAZ =FACT(statut='f',
- MASS_MOL =SIMP(statut='f',typ='R'),
- CP =SIMP(statut='f',typ='R'),
- VISC =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_VISC_TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- VERI_P =SIMP(statut='c',typ='TXM',defaut=("TEMP",)),
- ),
- ),
-# =================================================================================
- b_liqusatugat = BLOC(condition = "COMP_THM == 'LIQU_SATU_GAT' ",
- fr="Paramètres nécessaires pour une loi de couplage de type LIQU_SATU_GAT",
- THM_LIQU =FACT(statut='f',
- RHO =SIMP(statut='o',typ='R'),
- UN_SUR_K =SIMP(statut='f',typ='R'),
- ALPHA =SIMP(statut='f',typ='R'),
- CP =SIMP(statut='f',typ='R'),
- VISC =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_VISC_TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- LAMBDA =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_LAMBDA_TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- COEF_HENRY =SIMP(statut='f',typ='R'),
- VERI_P =SIMP(statut='c',typ='TXM',defaut=("TEMP",)),
- ),
- THM_GAZ =FACT(statut='f',
- MASS_MOL =SIMP(statut='f',typ='R'),
- CP =SIMP(statut='f',typ='R'),
- VISC =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_VISC_TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- LAMBDA =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_LAMBDA_TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- VERI_P =SIMP(statut='c',typ='TXM',defaut=("TEMP",)),
- ),
- THM_VAPE_GAZ =FACT(statut='f',
- MASS_MOL =SIMP(statut='f',typ='R'),
- CP =SIMP(statut='f',typ='R'),
- VISC =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_VISC_TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- VERI_P =SIMP(statut='c',typ='TXM',defaut=("TEMP",)),
- ),
- THM_AIR_DISS = FACT(statut='f',
- CP = SIMP(statut='f',typ='R'),
- COEF_HENRY = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- VERI_P = SIMP(statut='c',typ='TXM',defaut=("TEMP",),),
- ),
- THM_INIT =FACT(statut='f',
- TEMP =SIMP(statut='o',typ='R'),
- PRE1 =SIMP(statut='o',typ='R'),
- PRE2 =SIMP(statut='o',typ='R'),
- PORO =SIMP(statut='o',typ='R'),
- PRES_VAPE =SIMP(statut='o',typ='R'),
- DEGR_SATU =SIMP(statut='f',typ='R'),
- PRES_ATMO =SIMP(statut='f',typ='R'),
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEE CACHEE ---------------------------------------------
-# ---------------------------------------------------------------------------------
- COMP_THM = SIMP(statut='c',typ='R',defaut= 7.0,),
- ),
- THM_DIFFU =FACT(statut='f',
- R_GAZ =SIMP(statut='o',typ='R'),
- RHO =SIMP(statut='f',typ='R'),
- CP =SIMP(statut='f',typ='R'),
- BIOT_COEF =SIMP(statut='f',typ='R'),
- SATU_PRES =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_SATU_PRES =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PESA_X =SIMP(statut='f',typ='R'),
- PESA_Y =SIMP(statut='f',typ='R'),
- PESA_Z =SIMP(statut='f',typ='R'),
- PERM_IN =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PERM_END =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- regles = (EXCLUS('PERM_IN','PERM_END','PERMIN_X',),
- PRESENT_PRESENT('PERMIN_X','PERMIN_Y','PERMIN_Z',), ),
- PERMIN_X =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PERMIN_Y =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PERMIN_Z =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PERM_LIQU =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_PERM_LIQU_SATU=SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PERM_GAZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_PERM_SATU_GAZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_PERM_PRES_GAZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICK =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_FICK_TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_FICK_GAZ_PRES =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- LAMBDA =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_LAMBDA_TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- SIGMA_T =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_SIGMA_T =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PERM_G_INTR =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- CHAL_VAPO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKV_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKV_PV = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKV_PG = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKV_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_FV_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_FV_PG = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKA_PA = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKA_PL = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKA_S = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_FA_T = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- VERI_P = SIMP(statut='c',typ='TXM',defaut=("TEMP","SAT","PORO","PGAZ","PCAP","ENDO",) ),
- ),
- ),
- b_liqunsatgat = BLOC(condition = "COMP_THM == 'LIQU_NSAT_GAT' ",
- fr="Paramètres nécessaires pour une loi de couplage de type LIQU_NSAT_GAT",
- THM_LIQU =FACT(statut='f',
- RHO =SIMP(statut='o',typ='R'),
- UN_SUR_K =SIMP(statut='f',typ='R'),
- ALPHA =SIMP(statut='f',typ='R'),
- CP =SIMP(statut='f',typ='R'),
- VISC =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_VISC_TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- LAMBDA =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_LAMBDA_TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- COEF_HENRY =SIMP(statut='f',typ='R'),
- VERI_P =SIMP(statut='c',typ='TXM',defaut=("TEMP",)),
- ),
- THM_GAZ =FACT(statut='f',
- MASS_MOL =SIMP(statut='f',typ='R'),
- CP =SIMP(statut='f',typ='R'),
- VISC =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_VISC_TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- LAMBDA =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_LAMBDA_TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- VERI_P =SIMP(statut='c',typ='TXM',defaut=("TEMP",)),
- ),
- THM_AIR_DISS = FACT(statut='f',
- CP = SIMP(statut='f',typ='R'),
- COEF_HENRY = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- ),
- THM_VAPE_GAZ =FACT(statut='f',
- MASS_MOL =SIMP(statut='f',typ='R'),
- CP =SIMP(statut='f',typ='R'),
- VISC =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_VISC_TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- VERI_P =SIMP(statut='c',typ='TXM',defaut=("TEMP",)),
- ),
- THM_INIT =FACT(statut='f',
- TEMP =SIMP(statut='o',typ='R'),
- PRE1 =SIMP(statut='o',typ='R'),
- PRE2 =SIMP(statut='o',typ='R'),
- PORO =SIMP(statut='o',typ='R'),
- PRES_VAPE =SIMP(statut='o',typ='R'),
- DEGR_SATU =SIMP(statut='f',typ='R'),
- PRES_ATMO =SIMP(statut='f',typ='R'),
-# ---------------------------------------------------------------------------------
-# ------------------- DONNEE CACHEE ---------------------------------------------
-# ---------------------------------------------------------------------------------
- COMP_THM = SIMP(statut='c',typ='R',defaut= 8.0,),
- ),
- THM_DIFFU =FACT(statut='f',
- R_GAZ =SIMP(statut='o',typ='R'),
- RHO =SIMP(statut='f',typ='R'),
- CP =SIMP(statut='f',typ='R'),
- BIOT_COEF =SIMP(statut='f',typ='R'),
- SATU_PRES =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_SATU_PRES =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PESA_X =SIMP(statut='f',typ='R'),
- PESA_Y =SIMP(statut='f',typ='R'),
- PESA_Z =SIMP(statut='f',typ='R'),
- PERM_IN =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PERM_END =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- regles = (EXCLUS('PERM_IN','PERM_END','PERMIN_X',),
- PRESENT_PRESENT('PERMIN_X','PERMIN_Y','PERMIN_Z',), ),
- PERMIN_X =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PERMIN_Y =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PERMIN_Z =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PERM_LIQU =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_PERM_LIQU_SATU=SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PERM_GAZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_PERM_SATU_GAZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_PERM_PRES_GAZ =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICK =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_FICK_TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_FICK_GAZ_PRES =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- LAMBDA =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_LAMBDA_TEMP =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- SIGMA_T =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_SIGMA_T =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PERM_G_INTR =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- CHAL_VAPO =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKV_T =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKV_PV =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKV_PG =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKV_S =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_FV_T =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_FV_PG =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKA_T =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKA_PA =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKA_PL =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- FICKA_S =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- D_FA_T =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- VERI_P =SIMP(statut='c',typ='TXM',defaut=("TEMP","SAT","PORO","PGAZ","PCAP","ENDO",) ),
- ),
- ),
-# courbes et coefficients associés à la fatigue et au dommage
-#
- FATIGUE =FACT(statut='f',
- regles=(PRESENT_ABSENT('WOHLER','A_BASQUIN','BETA_BASQUIN'),
- PRESENT_ABSENT('WOHLER','A0','A1','A2','A3','SL'),
- PRESENT_ABSENT('A_BASQUIN','A0','A1','A2','A3','SL'),
- ENSEMBLE('A_BASQUIN','BETA_BASQUIN'),
- ENSEMBLE('A0','A1','A2','A3','SL'),
- PRESENT_PRESENT('A0','E_REFE'),
- ENSEMBLE('D0','TAU0'),),
- WOHLER =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- A_BASQUIN =SIMP(statut='f',typ='R'),
- BETA_BASQUIN =SIMP(statut='f',typ='R'),
- A0 =SIMP(statut='f',typ='R'),
- A1 =SIMP(statut='f',typ='R'),
- A2 =SIMP(statut='f',typ='R'),
- A3 =SIMP(statut='f',typ='R'),
- SL =SIMP(statut='f',typ='R'),
- MANSON_COFFIN =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- E_REFE =SIMP(statut='f',typ='R'),
- D0 =SIMP(statut='f',typ='R'),
- TAU0 =SIMP(statut='f',typ='R'),
- VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("SIGM","EPSI",) ),
- ),
- DOMMA_LEMAITRE =FACT(statut='f',
- S =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- EPSP_SEUIL =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- EXP_S =SIMP(statut='f',typ='R',val_min=0.0E0,defaut=1.0),
- VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP",) ),
- ),
- CISA_PLAN_CRIT =FACT(statut='f',
- CRITERE =SIMP(statut='o',typ='TXM',into=("MATAKE",
- "DANG_VAN_MODI_AC",
- "DANG_VAN_MODI_AV",
- "DOMM_MAXI",
- "FATEMI_SOCIE",
- ) ),
-
- b_critere_matake =BLOC(condition="CRITERE=='MATAKE'",
- fr="Cisaillement plan critique critère de matake",
- MATAKE_A =SIMP(statut='o',typ='R'),
- MATAKE_B =SIMP(statut='o',typ='R'),
- COEF_FLEX_TORS =SIMP(statut='o',typ='R',val_min=1.0E0,val_max=1.7321E0),
- ),
-
- b_critere_dang_van =BLOC(condition="(CRITERE=='DANG_VAN_MODI_AC' or CRITERE=='DANG_VAN_MODI_AV')",
- fr="Critère de Dang Van modifié pour les cas amplitude constante et amplitude variable",
- D_VAN_A =SIMP(statut='o',typ='R'),
- D_VAN_B =SIMP(statut='o',typ='R'),
- COEF_CISA_TRAC =SIMP(statut='o',typ='R',val_min=1.0E0,val_max=1.7321E0),
- ),
-
- b_crit_domm_maxi =BLOC(condition="CRITERE=='DOMM_MAXI'",
- fr="Critère pour chargement non périodique : domm_maxi",
- DOMM_A =SIMP(statut='o',typ='R'),
- DOMM_B =SIMP(statut='o',typ='R'),
- COEF_CISA_TRAC =SIMP(statut='o',typ='R',val_min=1.0E0,val_max=1.7321E0),
- ),
-
- b_critere_fate_soci =BLOC(condition="CRITERE=='FATEMI_SOCIE'",
- fr="Critère de Fatemi et Socie, en élasticité ou élastoplasticité, pour le cas amplitude variable",
- FATSOC_A =SIMP(statut='o',typ='R'),
- COEF_CISA_TRAC =SIMP(statut='o',typ='R',val_min=1.0E0,val_max=1.7321E0),
- ),
- ),
-#
-# autres comportements ...
-#
- WEIBULL =FACT(statut='f',
- M =SIMP(statut='o',typ='R'),
- VOLU_REFE =SIMP(statut='o',typ='R'),
- SIGM_REFE =SIMP(statut='o',typ='R'),
- SEUIL_EPSP_CUMU =SIMP(statut='f',typ='R',defaut= 1.0E-6),
- ),
- WEIBULL_FO =FACT(statut='f',
- M =SIMP(statut='o',typ='R'),
- VOLU_REFE =SIMP(statut='o',typ='R'),
- SIGM_CNV =SIMP(statut='o',typ='R'),
- SIGM_REFE =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- SEUIL_EPSP_CUMU =SIMP(statut='f',typ='R',defaut= 1.0E-6),
- VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP",) ),
- ),
- NON_LOCAL =FACT(statut='f',
- LONG_CARA =SIMP(statut='o',typ='R'),
- COEF_RIGI_MINI =SIMP(statut='f',typ='R'),
- ),
- RUPT_FRAG =FACT(statut='f',
- GC =SIMP(statut='o',typ='R'),
- SIGM_C =SIMP(statut='f',typ='R'),
- PENA_ADHERENCE =SIMP(statut='f',typ='R'),
- PENA_CONTACT =SIMP(statut='f',typ='R',defaut=1.),
- ),
- RUPT_FRAG_FO =FACT(statut='f',
- GC =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- SIGM_C =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PENA_ADHERENCE =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- PENA_CONTACT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),defaut=1.),
- VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP",) ),
- ),
- RCCM =FACT(statut='f',
- SY_02 =SIMP(statut='f',typ='R'),
- SM =SIMP(statut='f',typ='R'),
- SU =SIMP(statut='f',typ='R'),
- SC =SIMP(statut='f',typ='R'),
- SH =SIMP(statut='f',typ='R'),
- N_KE =SIMP(statut='f',typ='R'),
- M_KE =SIMP(statut='f',typ='R'),
- ),
- RCCM_FO =FACT(statut='f',
- SY_02 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- SM =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- SU =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- S =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- N_KE =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- M_KE =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- VERI_P =SIMP(statut='c',typ='TXM',max='**',defaut=("TEMP",) ),
- ),
- LAIGLE =FACT(statut='f',
- GAMMA_ULT =SIMP(statut='o',typ='R'),
- GAMMA_E =SIMP(statut='o',typ='R'),
- M_ULT =SIMP(statut='o',typ='R'),
- M_E =SIMP(statut='o',typ='R'),
- A_E =SIMP(statut='o',typ='R'),
- M_PIC =SIMP(statut='o',typ='R'),
- A_PIC =SIMP(statut='o',typ='R'),
- ETA =SIMP(statut='o',typ='R'),
- SIGMA_C =SIMP(statut='o',typ='R'),
- GAMMA =SIMP(statut='o',typ='R'),
- KSI =SIMP(statut='o',typ='R'),
- GAMMA_CJS =SIMP(statut='o',typ='R'),
- SIGMA_P1 =SIMP(statut='o',typ='R'),
- PA =SIMP(statut='o',typ='R'),
- ),
- DRUCK_PRAGER =FACT(statut='f',
- ALPHA =SIMP(statut='o',typ='R'),
- SY =SIMP(statut='o',typ='R'),
- P_ULTM =SIMP(statut='o',typ='R'),
- ECROUISSAGE = SIMP(statut='o',typ='TXM',into=("LINEAIRE","PARABOLIQUE")),
- b_lineaire =BLOC(condition="ECROUISSAGE=='LINEAIRE'",
- fr="Loi de comportement de type Drucker Prager avec un ecrouissage lineaire",
- H =SIMP(statut='o',typ='R'),
- TYPE_DP =SIMP(statut='c',typ='R',defaut= 1.0,),
- ),
- b_parabolique =BLOC(condition="ECROUISSAGE=='PARABOLIQUE'",
- fr="Loi de comportement de type Drucker Prager avec un ecrouissage parabolique",
- SY_ULTM =SIMP(statut='o',typ='R'),
- TYPE_DP =SIMP(statut='c',typ='R',defaut= 2.0,),
- ),
- ),
- HOEK_BROWN =FACT(statut='f',
- GAMMA_RUP =SIMP(statut='o',typ='R'),
- GAMMA_RES =SIMP(statut='o',typ='R'),
- S_END =SIMP(statut='o',typ='R'),
- S_RUP =SIMP(statut='o',typ='R'),
- M_END =SIMP(statut='o',typ='R'),
- M_RUP =SIMP(statut='o',typ='R'),
- BETA =SIMP(statut='o',typ='R'),
- ALPHAHB =SIMP(statut='o',typ='R'),
- PHI_RUP =SIMP(statut='o',typ='R'),
- PHI_RES =SIMP(statut='o',typ='R'),
- PHI_END =SIMP(statut='f',typ='R'),
- ),
-#### MONOCRISTAL
-
- ECOU_VISC1 =FACT(statut='f',
- TYPE_PARA =SIMP(statut='f',typ='TXM',into=("ECOU_VISC",),),
- N =SIMP(statut='o',typ='R'),
- K =SIMP(statut='o',typ='R'),
- C =SIMP(statut='o',typ='R'),
- ),
- ECOU_VISC2 =FACT(statut='f',
- TYPE_PARA =SIMP(statut='f',typ='TXM',into=("ECOU_VISC",),),
- N =SIMP(statut='o',typ='R'),
- K =SIMP(statut='o',typ='R'),
- C =SIMP(statut='o',typ='R'),
- D =SIMP(statut='o',typ='R'),
- A =SIMP(statut='o',typ='R'),
- ),
- ECOU_VISC3 =FACT(statut='f',
- TYPE_PARA =SIMP(statut='f',typ='TXM',into=("ECOU_VISC",),),
- K =SIMP(statut='o',typ='R',fr="Constante de Boltzmann, en eV/K"),
- TAUMU =SIMP(statut='o',typ='R',fr="Seuil d ecoulement, en unite de contraintes"),
- GAMMA0 =SIMP(statut='o',typ='R',fr="Vitesse d ecoulement initiale"),
- DELTAV =SIMP(statut='o',typ='R',fr="Volume d activation"),
- DELTAG0 =SIMP(statut='o',typ='R',fr="Gain d energie lie au franchissement d obstacle"),
- ),
- ECOU_PLAS1 =FACT(statut='f',
- TYPE_PARA =SIMP(statut='f',typ='TXM',into=("ECOU_PLAS",),),
- C =SIMP(statut='o',typ='R'),
- ),
- ECRO_ISOT1 =FACT(statut='f',
- TYPE_PARA =SIMP(statut='f',typ='TXM',into=("ECRO_ISOT",),),
- R_0 =SIMP(statut='o',typ='R'),
- Q =SIMP(statut='o',typ='R'),
- B =SIMP(statut='o',typ='R'),
- H =SIMP(statut='o',typ='R'),
- ),
- ECRO_ISOT2 =FACT(statut='f',
- TYPE_PARA =SIMP(statut='f',typ='TXM',into=("ECRO_ISOT",),),
- R_0 =SIMP(statut='o',typ='R'),
- Q1 =SIMP(statut='o',typ='R'),
- B1 =SIMP(statut='o',typ='R'),
- H =SIMP(statut='o',typ='R'),
- Q2 =SIMP(statut='o',typ='R'),
- B2 =SIMP(statut='o',typ='R'),
- ),
- ECRO_CINE1 =FACT(statut='f',
- TYPE_PARA =SIMP(statut='f',typ='TXM',into=("ECRO_CINE",),),
- D =SIMP(statut='o',typ='R'),
- ),
- ECRO_CINE2 =FACT(statut='f',
- TYPE_PARA =SIMP(statut='f',typ='TXM',into=("ECRO_CINE",),),
- D =SIMP(statut='o',typ='R'),
- GM =SIMP(statut='o',typ='R'),
- PM =SIMP(statut='o',typ='R'),
- C =SIMP(statut='o',typ='R'),
- ),
-
-#### MONOCRISTAL
-
- DRUCK_PRAGER_FO =FACT(statut='f',
- ALPHA =SIMP(statut='o',typ=(fonction_sdaster,formule)),
- SY =SIMP(statut='o',typ=(fonction_sdaster,formule)),
- P_ULTM =SIMP(statut='o',typ=(fonction_sdaster,formule)),
- ECROUISSAGE = SIMP(statut='o',typ='TXM',into=("LINEAIRE","PARABOLIQUE")),
- b_lineaire =BLOC(condition="ECROUISSAGE=='LINEAIRE'",
- fr="Loi de comportement de type Drucker Prager avec un ecrouissage lineaire",
- H =SIMP(statut='o',typ=(fonction_sdaster,formule)),
- TYPE_DP =SIMP(statut='c',typ='R',defaut= 1.0,),
- ),
- b_parabolique =BLOC(condition="ECROUISSAGE=='PARABOLIQUE'",
- fr="Loi de comportement de type Drucker Prager avec un ecrouissage parabolique",
- SY_ULTM =SIMP(statut='o',typ=(fonction_sdaster,formule)),
- TYPE_DP =SIMP(statut='c',typ='R',defaut= 2.0,),
- ),
- ),
-
-
- INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-DEFI_MODELE_GENE=OPER(nom="DEFI_MODELE_GENE",op= 126,sd_prod=modele_gene,
- reentrant='n',
- fr="Créer la structure globale à partir des sous-structures en sous-structuration dynamique",
- UIinfo={"groupes":("Matrices/vecteurs",)},
- SOUS_STRUC =FACT(statut='o',max='**',
- NOM =SIMP(statut='o',typ='TXM' ),
- MACR_ELEM_DYNA =SIMP(statut='o',typ=macr_elem_dyna ),
- ANGL_NAUT =SIMP(statut='f',typ='R',max=3),
- TRANS =SIMP(statut='f',typ='R',max=3),
- ),
- LIAISON =FACT(statut='o',max='**',
- SOUS_STRUC_1 =SIMP(statut='o',typ='TXM' ),
- INTERFACE_1 =SIMP(statut='o',typ='TXM' ),
- SOUS_STRUC_2 =SIMP(statut='o',typ='TXM' ),
- INTERFACE_2 =SIMP(statut='o',typ='TXM' ),
- regles=(EXCLUS('GROUP_MA_MAIT_1','GROUP_MA_MAIT_2','MAILLE_MAIT_2'),
- EXCLUS('MAILLE_MAIT_1','GROUP_MA_MAIT_2','MAILLE_MAIT_2'),),
- GROUP_MA_MAIT_1 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE_MAIT_1 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_MA_MAIT_2 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE_MAIT_2 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- OPTION =SIMP(statut='f',typ='TXM',defaut="CLASSIQUE",into=("REDUIT","CLASSIQUE") ),
- ),
- VERIF =FACT(statut='f',max='**',
-# dans la doc U stop_erreur est obligatoire
- STOP_ERREUR =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
- PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
- ),
- INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-DEFI_NAPPE=OPER(nom="DEFI_NAPPE",op= 4,sd_prod=nappe_sdaster,
- fr="Définir une fonction réelle de deux variables réelles",
- reentrant='n',
- UIinfo={"groupes":("Fonction",)},
- regles=(UN_PARMI('FONCTION','DEFI_FONCTION'),
- EXCLUS('FONCTION','NOM_PARA_FONC',),
- ENSEMBLE('NOM_PARA_FONC','DEFI_FONCTION'),),
- NOM_PARA =SIMP(statut='o',typ='TXM',into=C_PARA_FONCTION() ),
- NOM_RESU =SIMP(statut='f',typ='TXM',defaut="TOUTRESU"),
- PARA =SIMP(statut='o',typ='R',max='**'),
- FONCTION =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),max='**' ),
- NOM_PARA_FONC =SIMP(statut='f',typ='TXM',into=("TEMP","INST","X","Y","Z","EPSI","FREQ",
- "PULS","AMOR","EPAIS","SAT", "PGAZ","PCAP") ),
- DEFI_FONCTION =FACT(statut='f',max='**',
- VALE =SIMP(statut='o',typ='R',max='**'),
- INTERPOL =SIMP(statut='f',typ='TXM',max=2,defaut="LIN",into=("NON","LIN","LOG") ),
- PROL_DROITE =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU") ),
- PROL_GAUCHE =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU") ),
- ),
- INTERPOL =SIMP(statut='f',typ='TXM',max=2,defaut="LIN",into=("NON","LIN","LOG") ),
- PROL_DROITE =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU") ),
- PROL_GAUCHE =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU") ),
- INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
- VERIF =SIMP(statut='f',typ='TXM',into=("CROISSANT",) ),
- TITRE =SIMP(statut='f',typ='TXM',max='**'),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-DEFI_OBSTACLE=OPER(nom="DEFI_OBSTACLE",op= 73,sd_prod=obstacle_sdaster
- ,fr="Définition d'un obstacle plan perpendiculaire à une structure filaire",
- reentrant='n',
- UIinfo={"groupes":("Modélisation",)},
- TYPE =SIMP(statut='o',typ='TXM',defaut="CERCLE",
- into=("CERCLE","PLAN_Y","PLAN_Z","DISCRET",
- "BI_CERCLE","BI_PLAN_Y","BI_PLAN_Z","BI_CERC_INT",
- "CRAYON_900","CRAYON_1300","GUID_A_CARTE_900",
- "GUID_B_CARTE_900","GUID_C_CARTE_900",
- "GUID_D_CARTE_900","GUID_E_CARTE_900",
- "GUID_F_CARTE_900","GUID_A_CARTE_1300",
- "GUID_B_CARTE_1300","GUID_C_CARTE_1300",
- "GUID_D_CARTE_1300","GUID_E_CARTE_1300",
- "GUID_F_CARTE_1300","GUID_A_CARSP_900",
- "GUID_B_CARSP_900","GUID_C_CARSP_900",
- "GUID_D_CARSP_900","GUID_E_CARSP_900",
- "GUID_F_CARSP_900","GUID_A_CARSP_1300",
- "GUID_B_CARSP_1300","GUID_C_CARSP_1300",
- "GUID_D_CARSP_1300","GUID_E_CARSP_1300",
- "GUID_F_CARSP_1300","GUID_A_GCONT_900",
- "GUID_B_GCONT_900","GUID_C_GCONT_900",
- "GUID_D_GCONT_900","GUID_E_GCONT_900",
- "GUID_F_GCONT_900","GUID_A_GCONT_1300",
- "GUID_B_GCONT_1300","GUID_C_GCONT_1300",
- "GUID_D_GCONT_1300","GUID_E_GCONT_1300",
- "GUID_F_GCONT_1300","GUID_A_GCOMB_900",
- "GUID_B_GCOMB_900","GUID_C_GCOMB_900",
- "GUID_D_GCOMB_900","GUID_E_GCOMB_900",
- "GUID_F_GCOMB_900","GUID_A_GCOMB_1300",
- "GUID_B_GCOMB_1300","GUID_C_GCOMB_1300",
- "GUID_D_GCOMB_1300","GUID_E_GCOMB_1300",
- "GUID_F_GCOMB_1300",) ),
- VALE =SIMP(statut='f',typ='R',max='**'),
- VERIF =SIMP(statut='f',typ='TXM',defaut="FERME"),
-) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE GNICOLAS G.NICOLAS
-DEFI_PARA_SENSI=OPER(nom="DEFI_PARA_SENSI",op= 2,sd_prod=para_sensi,
- fr="Définition d'un paramètre de sensibilité",
- ang="Definition of a sensitive parameter",
- reentrant='n',
- UIinfo={"groupes":("Fonction",)},
- NOM_RESU =SIMP(statut='c',typ='TXM',into=("TOUTRESU",),defaut="TOUTRESU",
- fr="Nom du concept créé",
- ang="Name of the concept"),
- VALE =SIMP(statut='o',typ='R',
- fr="Valeur du parametre",
- ang="Value of the parameter"),
- TITRE =SIMP(statut='f',typ='TXM',max='**'),
-) ;
-#& MODIF COMMANDE DATE 30/08/2005 AUTEUR ASSIRE A.ASSIRE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE ASSIRE A.ASSIRE
-
-from Macro.defi_part_feti_ops import defi_part_feti_ops
-
-DEFI_PART_FETI=MACRO(nom="DEFI_PART_FETI",op=defi_part_feti_ops,sd_prod=sd_feti_sdaster,
- reentrant='n',UIinfo={"groupe":("Maillage",)},
- fr="Creation partitionnement en sous-domaines pour FETI",
- regles=(UN_PARMI('MAILLAGE','MODELE'),),
- MAILLAGE =SIMP(statut='f',typ=maillage_sdaster),
- MODELE =SIMP(statut='f',typ=modele_sdaster),
- NB_PART =SIMP(statut='o',typ='I',val_min=2),
- EXCIT =FACT(statut='f',max='**',
- CHARGE =SIMP(statut='f',typ=(char_meca,char_cine_meca)),),
-
- # Methode de partitionnement
- METHODE =SIMP(statut='f',typ='TXM',into=("PMETIS","SCOTCH","KMETIS",), defaut="SCOTCH" ),
-
- LOGICIEL =SIMP(statut='f',typ='TXM'),
-
- # Corrige les problemes possibles de non-connexite des sous-domaines
- CORRECTION_CONNEX =SIMP(statut='f',typ='TXM',defaut='NON',into=('OUI','NON')),
-
- # Permet de grouper des mailles dans un meme sous-doamine
- GROUPAGE =FACT(statut='f',max='**',
- GROUP_MA =SIMP(statut='o',typ=grma,),
- ),
- # Permet d'appliquer des poids sur certaines mailles
- POIDS_MAILLES =FACT(statut='f',max='**',
- GROUP_MA =SIMP(statut='o',typ=grma,),
- POIDS =SIMP(statut='f',typ='I',val_min=2),
- ),
- # Prefixe pour le nom des group_ma definissant les sous-domaines
- NOM_GROUP_MA =SIMP(statut='f',typ='TXM',defaut='SD' ),
-
- # Traiter les mailles de bords (elles sont enlevees du graphe puis reinjectees)
- TRAITER_BORDS =SIMP(statut='f',typ='TXM',defaut='OUI',into=('OUI','NON') ),
-
- # Si le mot-clé suivant est renseigné, crée de nouveau group_ma a partir des bords
- # Note : le calcul FETI sera impossible
- b_traiter_bords =BLOC(condition="TRAITER_BORDS == 'OUI'", fr="Crée t on des nouveaux group_ma",
- NOM_GROUP_MA_BORD =SIMP(statut='f',typ='TXM'),
- ),
-
- INFO =SIMP(statut='f',typ='I',into=(1, 2), defaut=1),
-);
-#& MODIF COMMANDE DATE 22/02/2005 AUTEUR DURAND C.DURAND
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE ASSIRE A.ASSIRE
-
-DEFI_PART_OPS=OPER(nom="DEFI_PART_OPS",op=21,sd_prod=sd_feti_sdaster,
- fr="Creation partitionnement en sous-domaines pour FETI",
- docu="U4.23.05",reentrant='n',
- UIinfo={"groupes":("Résolution",)},
- MODELE =SIMP(statut='o',typ=(modele_sdaster) ),
- MAILLAGE =SIMP(statut='f',typ=(maillage_sdaster) ),
- NOM =SIMP(statut='f',typ='TXM',defaut='SD'),
- INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2,3,4) ),
- DEFI =FACT(statut='f',max='**',
- GROUP_MA =SIMP(statut='o',typ=grma),
- GROUP_MA_BORD =SIMP(statut='f',typ=grma),
- ),
- EXCIT =FACT(statut='f',max='**',
- CHARGE =SIMP(statut='f',typ=(char_meca,char_cine_meca)),
- ),
-);
-#& MODIF COMMANDE DATE 30/08/2005 AUTEUR ASSIRE A.ASSIRE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2005 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE ASSIRE A.ASSIRE
-
-DEFI_PART_PA_OPS=OPER(nom="DEFI_PART_PA_OPS",op=29,sd_prod=sd_feti_sdaster,
- fr="Creation partitionnement en sous-domaines pour FETI",
- docu="U4.00.00",reentrant='n',
- UIinfo={"groupes":("Résolution",)},
- MAILLAGE =SIMP(statut='o',typ=(maillage_sdaster,squelette) ),
- MODELE =SIMP(statut='f',typ=(modele_sdaster)),
- NB_PART =SIMP(statut='o',typ='I',),
-
- # Methode de partitionnement
- METHODE =SIMP(statut='f',typ='TXM',into=("PMETIS","SCOTCH","KMETIS",), defaut="SCOTCH" ),
-
- LOGICIEL =SIMP(statut='f',typ='TXM'),
-
- # Corrige les problemes possibles de non-connexite des sous-domaines
- CORRECTION_CONNEX =SIMP(statut='f',typ='TXM',defaut='NON',into=('OUI','NON')),
-
- # Permet de grouper des mailles dans un meme sous-doamine
- GROUPAGE =FACT(statut='f',max='**',
- GROUP_MA =SIMP(statut='o',typ=grma,),
- ),
- # Permet d'appliquer des poids sur certaines mailles
- POIDS_MAILLES =FACT(statut='f',max='**',
- GROUP_MA =SIMP(statut='o',typ=grma,),
- POIDS =SIMP(statut='f',typ='I'),
- ),
- # Prefixe pour le nom des group_ma definissant les sous-domaines
- NOM_GROUP_MA =SIMP(statut='f',typ='TXM',defaut='SD' ),
-
- # Traiter les mailles de bords (elles sont enlevees du graphe puis reinjectees)
- TRAITER_BORDS =SIMP(statut='f',typ='TXM',defaut='OUI',into=('OUI','NON') ),
-
- # Si le mot-clé suivant est renseigné, crée de nouveau group_ma a partir des bords
- # Note : le calcul FETI sera impossible
- b_traiter_bords =BLOC(condition="TRAITER_BORDS == 'OUI'", fr="Crée t on des nouveaux group_ma",
- NOM_GROUP_MA_BORD =SIMP(statut='f',typ='TXM'),
- ),
-
- INFO =SIMP(statut='f',typ='I',into=(1, 2), defaut=1),
-
-);
-#& MODIF COMMANDE DATE 30/06/2004 AUTEUR MCOURTOI M.COURTOIS
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-DEFI_SPEC_TURB=OPER(nom="DEFI_SPEC_TURB",op= 145,sd_prod=spectre_sdaster,
- fr="Définition d'un spectre d'excitation turbulente",
- reentrant='n',
- UIinfo={"groupes":("Modélisation",)},
- regles=(UN_PARMI('SPEC_LONG_COR_1','SPEC_LONG_COR_2','SPEC_LONG_COR_3',
- 'SPEC_LONG_COR_4','SPEC_CORR_CONV_1','SPEC_CORR_CONV_2',
- 'SPEC_FONC_FORME','SPEC_EXCI_POINT'),),
- SPEC_LONG_COR_1 =FACT(statut='f',
- LONG_COR =SIMP(statut='o',typ='R' ),
- PROF_VITE_FLUI =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- VISC_CINE =SIMP(statut='o',typ='R' ),
- ),
- SPEC_LONG_COR_2 =FACT(statut='f',
- regles=(ENSEMBLE('FREQ_COUP','PHI0','BETA' ),),
- LONG_COR =SIMP(statut='o',typ='R' ),
- PROF_VITE_FLUI =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- FREQ_COUP =SIMP(statut='f',typ='R',defaut= 0.1 ),
- PHI0 =SIMP(statut='f',typ='R',defaut= 1.5E-3 ),
- BETA =SIMP(statut='f',typ='R',defaut= 2.7 ),
- ),
- SPEC_LONG_COR_3 =FACT(statut='f',
- regles=(ENSEMBLE('PHI0_1','BETA_1','PHI0_2','BETA_2','FREQ_COUP'),),
- LONG_COR =SIMP(statut='o',typ='R' ),
- PROF_VITE_FLUI =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- FREQ_COUP =SIMP(statut='f',typ='R',defaut= 0.2 ),
- PHI0_1 =SIMP(statut='f',typ='R',defaut= 5.E-3 ),
- BETA_1 =SIMP(statut='f',typ='R',defaut= 0.5 ),
- PHI0_2 =SIMP(statut='f',typ='R',defaut= 4.E-5 ),
- BETA_2 =SIMP(statut='f',typ='R',defaut= 3.5 ),
- ),
- SPEC_LONG_COR_4 =FACT(statut='f',
- regles=(ENSEMBLE('BETA','GAMMA'),),
- LONG_COR =SIMP(statut='o',typ='R' ),
- PROF_VITE_FLUI =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- TAUX_VIDE =SIMP(statut='o',typ='R' ),
- BETA =SIMP(statut='f',typ='R',defaut= 2. ),
- GAMMA =SIMP(statut='f',typ='R',defaut= 4. ),
- ),
- SPEC_CORR_CONV_1=FACT(statut='f',
- LONG_COR_1 =SIMP(statut='o',typ='R' ),
- LONG_COR_2 =SIMP(statut='f',typ='R' ),
- VITE_FLUI =SIMP(statut='o',typ='R' ),
- RHO_FLUI =SIMP(statut='o',typ='R' ),
- FREQ_COUP =SIMP(statut='f',typ='R' ),
- K =SIMP(statut='f',typ='R',defaut= 5.8E-3 ),
- D_FLUI =SIMP(statut='o',typ='R' ),
- COEF_VITE_FLUI_A=SIMP(statut='f',typ='R' ),
- COEF_VITE_FLUI_O=SIMP(statut='f',typ='R' ),
- METHODE =SIMP(statut='f',typ='TXM',defaut="GENERALE",
- into=("AU_YANG","GENERALE","CORCOS") ),
- ),
- SPEC_CORR_CONV_2=FACT(statut='f',
- FONCTION =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- VITE_FLUI =SIMP(statut='o',typ='R' ),
- FREQ_COUP =SIMP(statut='f',typ='R' ),
- METHODE =SIMP(statut='f',typ='TXM',defaut="GENERALE",
- into=("AU_YANG","GENERALE","CORCOS",) ),
- COEF_VITE_FLUI_A=SIMP(statut='f',typ='R' ),
- COEF_VITE_FLUI_O=SIMP(statut='f',typ='R' ),
- ),
- SPEC_FONC_FORME =FACT(statut='f',
- regles=(UN_PARMI('INTE_SPEC','GRAPPE_1'),
- ENSEMBLE('INTE_SPEC','FONCTION'),),
- INTE_SPEC =SIMP(statut='f',typ=tabl_intsp ),
- FONCTION =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),max='**'),
- GRAPPE_1 =SIMP(statut='f',typ='TXM',into=("DEBIT_180","DEBIT_300",) ),
- NOEUD =SIMP(statut='o',typ=no),
- CARA_ELEM =SIMP(statut='o',typ=cara_elem ),
- MODELE =SIMP(statut='o',typ=modele_sdaster ),
- ),
- SPEC_EXCI_POINT =FACT(statut='f',
- regles=(UN_PARMI('INTE_SPEC','GRAPPE_2'),),
- INTE_SPEC =SIMP(statut='f',typ=tabl_intsp ),
- GRAPPE_2 =SIMP(statut='f',typ='TXM',
- into=("ASC_CEN","ASC_EXC","DES_CEN","DES_EXC",) ),
-# Quels sont les statuts des mots cles à l interieur des deux blocs qui suivent
- b_inte_spec =BLOC(condition = "INTE_SPEC != None",
- NATURE =SIMP(statut='o',typ='TXM',max='**',into=("FORCE","MOMENT",) ),
- ANGL =SIMP(statut='o',typ='R',max='**'),
- NOEUD =SIMP(statut='o',typ=no,max='**'),
- ),
- b_grappe_2 =BLOC(condition = "GRAPPE_2 != None",
- RHO_FLUI =SIMP(statut='o',typ='R' ),
- NOEUD =SIMP(statut='o',typ=no),
- ),
- CARA_ELEM =SIMP(statut='o',typ=cara_elem ),
- MODELE =SIMP(statut='o',typ=modele_sdaster ),
- ),
- TITRE =SIMP(statut='f',typ='TXM',max='**'),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-DEFI_SQUELETTE=OPER(nom="DEFI_SQUELETTE",op= 110,sd_prod=squelette,
- fr="Définit un maillage pour visualiser les résultats d'une sous-structuration dynamique",
- reentrant='n',
- UIinfo={"groupes":("Maillage",)},
- regles=(UN_PARMI('CYCLIQUE','MODELE_GENE','MAILLAGE'),
- PRESENT_PRESENT('CYCLIQUE','SECTEUR'),
- EXCLUS('SOUS_STRUC','SECTEUR'),
- PRESENT_PRESENT('NOM_GROUP_MA','MODELE_GENE'),
- PRESENT_PRESENT('NOM_GROUP_MA','SOUS_STRUC'),),
- CYCLIQUE =FACT(statut='f',max='**',
- regles=(UN_PARMI('MODE_CYCL','MAILLAGE'),
- PRESENT_PRESENT('NB_SECTEUR','MAILLAGE'),),
- MODE_CYCL =SIMP(statut='f',typ=mode_cycl ),
- NB_SECTEUR =SIMP(statut='f',typ='I',validators=NoRepeat(),max=1 ),
- MAILLAGE =SIMP(statut='f',typ=maillage_sdaster ),
- ),
- MODELE_GENE =SIMP(statut='f',typ=modele_gene ),
- SQUELETTE =SIMP(statut='f',typ=squelette ),
- RECO_GLOBAL =FACT(statut='f',max='**',
- regles=(EXCLUS('TOUT','GROUP_NO_1'),
- PRESENT_PRESENT('GROUP_NO_1','GROUP_NO_2'),
- PRESENT_PRESENT('GROUP_NO_1','SOUS_STRUC_1'),
- PRESENT_PRESENT('GROUP_NO_2','SOUS_STRUC_2'),
- PRESENT_PRESENT('SOUS_STRUC_1','SOUS_STRUC_2'),),
- TOUT =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI",) ),
- GROUP_NO_1 =SIMP(statut='f',typ=grno),
- SOUS_STRUC_1 =SIMP(statut='f',typ='TXM' ),
- GROUP_NO_2 =SIMP(statut='f',typ=grno),
- SOUS_STRUC_2 =SIMP(statut='f',typ='TXM' ),
- PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
- DIST_REFE =SIMP(statut='f',typ='R' ),
- ),
- NOM_GROUP_MA =FACT(statut='f',max='**',
- NOM =SIMP(statut='o',typ='TXM' ),
- SOUS_STRUC =SIMP(statut='o',typ='TXM' ),
- GROUP_MA =SIMP(statut='o',typ=grma),
- ),
- EXCLUSIF =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
- MAILLAGE =SIMP(statut='f',typ=maillage_sdaster ),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- TRANS =SIMP(statut='f',typ='R',min=3,max=3),
- ANGL_NAUT =SIMP(statut='f',typ='R',min=3,max=3),
- SOUS_STRUC =FACT(statut='f',max='**',
- NOM =SIMP(statut='f',typ='TXM' ),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- ),
- SECTEUR =FACT(statut='f',max='**',
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- ),
- TITRE =SIMP(statut='f',typ='TXM',max='**'),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-DEFI_TEXTURE=OPER(nom="DEFI_TEXTURE",op= 181,sd_prod=tabl_texture,reentrant='n',
- fr="Définir pour un materiau CFC, les orientations cristillographiques et leur système de glissement ",
- UIinfo={"groupes":("Modélisation",)},
- SYST_GLISSEMENT =FACT(statut='o',min=3,max=3,
- N =SIMP(statut='o',typ='R',min=12,max=12 ),
- L =SIMP(statut='o',typ='R',max='**' ),
- ),
- PLAN =FACT(statut='o',min=1,max=40,
- ANGL_NAUT =SIMP(statut='o',typ='R',max='**' ),
- PROPORTION =SIMP(statut='o',typ='R' ),
- ),
- TITRE =SIMP(statut='f',typ='TXM',max='**' ),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-DEFI_THER_JOULE=OPER(nom="DEFI_THER_JOULE",op= 121,sd_prod=fonction_sdaster,reentrant='n',
- UIinfo={"groupes":("Outils métier",)},
- fr="Calculer l'évolution temporelle de la température due à l'effet JOULE d'un courant de court-circuit"
- +" dans un cable conducteur",
- LIST_INST =SIMP(statut='o',typ=listr8_sdaster),
- INST_CC_INIT =SIMP(statut='f',typ='R',defaut= 0.0E+0 ),
- INST_CC_FIN =SIMP(statut='f',typ='R',defaut= 1.0E+10),
- INST_RENC_INIT =SIMP(statut='f',typ='R',defaut= 1.0E+10),
- INST_RENC_FIN =SIMP(statut='f',typ='R',defaut= 1.0E+10),
- TEMP_EXT_POSE =SIMP(statut='f',typ='R',defaut= 15.0E+0),
- TEMP_EXT =SIMP(statut='f',typ='R',defaut= 15.0E+0),
- TEMP_RESI_REF =SIMP(statut='f',typ='R',defaut= 20.0E+0),
- PARA_COND_1D =FACT(statut='f',max='**',
- INTE_CC =SIMP(statut='f',typ='R',defaut= 0.0E+0),
- INTE_RENC =SIMP(statut='f',typ='R',defaut= 0.0E+0),
- A =SIMP(statut='f',typ='R',defaut= 1.0E+0),
- SECTION =SIMP(statut='f',typ='TXM',defaut="CERCLE",into=("CERCLE",) ),
- RESI_R0 =SIMP(statut='f',typ='R',defaut= 0.0E+0),
- RESI_R1 =SIMP(statut='f',typ='R',defaut= 0.E+0),
- RHO_CP =SIMP(statut='f',typ='R',defaut= 1.0E+0),
- COEF_H =SIMP(statut='f',typ='R',defaut= 40.0E+0),
- TEMP_INIT =SIMP(statut='f',typ='R',defaut= 15.0E+0),
- ),
-) ;
-
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-DEFI_TRC=OPER(nom="DEFI_TRC",op=94,sd_prod=tabl_trc,reentrant='n',
- UIinfo={"groupes":("Modélisation",)},
- fr="Définir d'un diagramme de transformations en refroidissement continu (TRC) de référence d'un acier"
- +" pour les calculs métallurgiques.",
- HIST_EXP =FACT(statut='o',max='**',
- VALE =SIMP(statut='o',typ='R',max='**'),
- ),
- TEMP_MS =FACT(statut='o',max='**',
- SEUIL =SIMP(statut='o',typ='R'),
- AKM =SIMP(statut='o',typ='R'),
- BKM =SIMP(statut='o',typ='R'),
- TPLM =SIMP(statut='o',typ='R'),
- ),
- GRAIN_AUST =FACT(statut='f',max='**',
- DREF =SIMP(statut='f',typ='R'),
- A =SIMP(statut='f',typ='R'),
- ),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-DEPL_INTERNE=OPER(nom="DEPL_INTERNE",op=89,sd_prod=cham_no_depl_r,reentrant='n',
- UIinfo={"groupes":("Matrices/vecteurs",)},
- fr="Calculer le champ de déplacement à l'intérieur d'une sous-structure statique",
- DEPL_GLOBAL =SIMP(statut='o',typ=cham_no_depl_r),
- MAILLE =SIMP(statut='o',typ=ma,),
- NOM_CAS =SIMP(statut='f',typ='TXM',defaut=" "),
-) ;
-#& MODIF COMMANDE DATE 17/10/2005 AUTEUR DURAND C.DURAND
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-DETRUIRE=MACRO(nom="DETRUIRE",op=-7,
- UIinfo={"groupes":("Gestion du travail",)},
- fr="Détruit des concepts utilisateurs dans la base GLOBALE ou des objets JEVEUX",
- op_init=ops.detruire,
- regles=(UN_PARMI('CONCEPT','OBJET',),),
- CONCEPT =FACT(statut='f',max='**',
- NOM =SIMP(statut='o',typ=assd,validators=NoRepeat(),max='**'),
- ),
- OBJET =FACT(statut='f',max='**',
- CLASSE =SIMP(statut='f',typ='TXM',into=('G','V','L'),defaut='G'),
- CHAINE =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**'),
- POSITION =SIMP(statut='f',typ='I' ,max='**'),
- ),
- ALARME =SIMP(statut='f',typ='TXM',into=('OUI','NON'),defaut='OUI',),
- INFO =SIMP(statut='f',typ='I',into=(1,2),defaut=2, ),
-);
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-DIST_LIGN_3D=OPER(nom="DIST_LIGN_3D",op= 133,sd_prod=fonction_sdaster,reentrant='n',
- UIinfo={"groupes":("Outils métier",)},
- fr="Calcul (au cours d'un transitoire) de la distance minimale entre deux structures filaires ou entre une structure"
- +" et un point fixe",
- regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','INST','LIST_INST'),
- UN_PARMI('GROUP_MA_2','POIN_FIXE'),),
- MODELE =SIMP(statut='o',typ=modele_sdaster),
- RESULTAT =SIMP(statut='o',typ=(evol_elas,dyna_trans,evol_noli) ),
- TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",)),
- NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
- INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
- LIST_INST =SIMP(statut='f',typ=listr8_sdaster),
- LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster),
- PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3 ),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
- GROUP_MA_1 =SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**'),
- GROUP_MA_2 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- POIN_FIXE =SIMP(statut='f',typ='R',min=3,max=3),
- INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-DYNA_ALEA_MODAL=OPER(nom="DYNA_ALEA_MODAL",op= 131,sd_prod=tabl_intsp
- ,fr="Calcul de la réponse spectrale d'une structure linéaire sous une excitation connue par sa DSP",
- reentrant='n',
- UIinfo={"groupes":("Résolution",)},
- BASE_MODALE =FACT(statut='o',
- regles=(UN_PARMI('NUME_ORDRE','BANDE'),),
- MODE_MECA =SIMP(statut='o',typ=mode_meca ),
- BANDE =SIMP(statut='f',typ='R',validators=NoRepeat(),max=2),
- NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
- b_bande =BLOC(condition = "BANDE != None",
- AMOR_UNIF =SIMP(statut='o',typ='R' ),
- ),
- b_nume_ordre =BLOC(condition = "NUME_ORDRE != None",
- AMOR_REDUIT =SIMP(statut='o',typ='R',max='**'),
- ),
- ),
- MODE_STAT =SIMP(statut='f',typ=(mode_stat_depl,mode_stat_acce,mode_stat_forc,)),
-# MODE_STAT devrait etre dans EXCIT car est utile et obligatoire que si NOM_CMP=depl_r, on pourrait
-# ainsi rajouter un bloc du genre b_mod_stat= BLOC(condition = "(GRANDEUR == None) or (GRANDEUR == 'DEPL_R')",
- EXCIT =FACT(statut='o',
- INTE_SPEC =SIMP(statut='o',typ=tabl_intsp ),
- NUME_VITE_FLUI =SIMP(statut='f',typ='I' ),
- OPTION =SIMP(statut='f',typ='TXM',defaut="TOUT",into=("TOUT","DIAG",) ),
- MODAL =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
- b_modal_non = BLOC(condition = "(MODAL == None) or (MODAL == 'NON')",
- regles=(UN_PARMI('NOEUD_I','NUME_ORDRE_I'),),
- NUME_ORDRE_I =SIMP(statut='f',typ='I',max='**'),
- NOEUD_I =SIMP(statut='f',typ=no,max='**'),
- b_nume_ordre_i =BLOC(condition = "NUME_ORDRE_I != None",
- regles=(EXCLUS('CHAM_NO','NOEUD'),),
-# on devrait rajouter EXCLUS('GRANDEUR','CHAM_NO') pour eviter ambiguite car CHAM_NO => GRANDEUR='EFFO'
-# cela impliquerait d'enlever la valeur par defaut a GRANDEUR
- NUME_ORDRE_J =SIMP(statut='o',typ='I',max='**'),
- CHAM_NO =SIMP(statut='f',typ=cham_no_sdaster),
- NOEUD =SIMP(statut='f',typ=no,max='**'),
- b_noeud =BLOC(condition = "NOEUD != None",
- NOM_CMP =SIMP(statut='o',typ='TXM',max='**'),
- ),
- GRANDEUR =SIMP(statut='f',typ='TXM',defaut="DEPL_R",
- into=("DEPL_R","EFFO","SOUR_DEBI_VOLU","SOUR_DEBI_MASS","SOUR_PRESS","SOUR_FORCE")),
-# que se passe-t-il en cas d'incompatibilite entre GRANDEUR et NOM_CMP
- DERIVATION =SIMP(statut='f',typ='I',defaut= 0,into=( 0 , 1 , 2 ) ),
- ),
- b_noeud_i =BLOC(condition = "NOEUD_I != None",
- NOEUD_J =SIMP(statut='o',typ=no,max='**'),
- NOM_CMP_I =SIMP(statut='o',typ='TXM',max='**'),
- NOM_CMP_J =SIMP(statut='o',typ='TXM',max='**'),
- NOEUD =SIMP(statut='o',typ=no,max='**'),
- NOM_CMP =SIMP(statut='o',typ='TXM',max='**'),
-# ne serait-il pas bien que NOEUD et NOM_CMP soient facultatifs, car l'information peut etre contenue dans
-# NOEUD_I, NOM_CMP_I ... => modif. du Fortran
- GRANDEUR =SIMP(statut='f',typ='TXM',defaut="DEPL_R",
- into=("DEPL_R","EFFO","SOUR_DEBI_VOLU","SOUR_DEBI_MASS","SOUR_PRESS","SOUR_FORCE")),
-# que se passe-t-il en cas d'incompatibilite entre GRANDEUR et NOM_CMP_I
- DERIVATION =SIMP(statut='f',typ='I',defaut= 0,into=( 0 , 1 , 2 ) ),
- ),
- ),
- b_modal_oui = BLOC(condition = "(MODAL == 'OUI')",
-# dans ce cas, y-a-t-il vraiment la possibilite d'une matrice interspectrale avec plusieurs termes
- NUME_ORDRE_I =SIMP(statut='o',typ='I',max='**'),
- NUME_ORDRE_J =SIMP(statut='o',typ='I',max='**'),
- GRANDEUR =SIMP(statut='f',typ='TXM',defaut="DEPL_R",
- into=("DEPL_R","EFFO","SOUR_DEBI_VOLU","SOUR_DEBI_MASS","SOUR_PRESS","SOUR_FORCE")),
- DERIVATION =SIMP(statut='f',typ='I',defaut= 0,into=( 0 , 1 , 2 ) ),
-# dans le cas MODAL=OUI, GRANDEUR peut-il etre different de EFFO et doit il etre impose a EFFO On devrait
-# pouvoir supprimer GRANDEUR et DERIVATION ici
- ),
-
- ),
- REPONSE =FACT(statut='f',
- regles=( ENSEMBLE('FREQ_MIN','FREQ_MAX'),),
- DERIVATION =SIMP(statut='f',typ='I',defaut= 0,into=( 0 , 1 , 2 ,) ),
- OPTION =SIMP(statut='f',typ='TXM',defaut="TOUT",into=("TOUT","DIAG") ),
- FREQ_MIN =SIMP(statut='f',typ='R' ),
- FREQ_MAX =SIMP(statut='f',typ='R' ),
- PAS =SIMP(statut='f',typ='R' ),
- b_defaut_freq =BLOC(condition = "FREQ_MIN == NONE",
- FREQ_EXCIT =SIMP(statut='f',typ='TXM',defaut="AVEC",into=("AVEC","SANS") ),
- NB_POIN_MODE =SIMP(statut='f',typ='I',defaut= 50 ),
- ),
- ),
- TITRE =SIMP(statut='f',typ='TXM',max='**'),
- INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
-) ;
-#& MODIF COMMANDE DATE 12/09/2005 AUTEUR NICOLAS O.NICOLAS
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-def dyna_line_harm_prod(MATR_RIGI,**args):
- if AsType(MATR_RIGI) == matr_asse_depl_r : return dyna_harmo
- if AsType(MATR_RIGI) == matr_asse_depl_c : return dyna_harmo
- if AsType(MATR_RIGI) == matr_asse_pres_c : return acou_harmo
- if AsType(MATR_RIGI) == matr_asse_gene_r : return harm_gene
- if AsType(MATR_RIGI) == matr_asse_gene_c : return harm_gene
- raise AsException("type de concept resultat non prevu")
-
-DYNA_LINE_HARM=OPER(nom="DYNA_LINE_HARM",op= 60,sd_prod=dyna_line_harm_prod,
- fr="Calcul de la réponse dynamique complexe d'un système à une excitation harmonique",
- reentrant='n',
- UIinfo={"groupes":("Résolution",)},
- regles=(PRESENT_ABSENT('AMOR_REDUIT','MATR_AMOR'),
- PRESENT_ABSENT('AMOR_REDUIT','LIST_AMOR'),
- PRESENT_ABSENT('MATR_AMOR','LIST_AMOR'),
- UN_PARMI('FREQ','LIST_FREQ'),),
- MODELE =SIMP(statut='f',typ=modele_sdaster ),
- CHAM_MATER =SIMP(statut='f',typ=cham_mater ),
- CARA_ELEM =SIMP(statut='f',typ=cara_elem ),
- MATR_MASS =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_pres_c,matr_asse_gene_r ) ),
- MATR_RIGI =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_depl_c,matr_asse_pres_c
- ,matr_asse_gene_r,matr_asse_gene_c ) ),
- MATR_AMOR =SIMP(statut='f',typ=(matr_asse_depl_r,matr_asse_pres_c,matr_asse_gene_r ) ),
- AMOR_REDUIT =SIMP(statut='f',typ='R',max='**'),
- LIST_AMOR =SIMP(statut='f',typ=listr8_sdaster ),
- MATR_IMPE_PHI =SIMP(statut='f',typ=(matr_asse_depl_r,matr_asse_gene_r) ),
- FREQ =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
- LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster ),
- TOUT_CHAM =SIMP(statut='f',typ='TXM',into=("OUI",)),
- NOM_CHAM =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=3,into=("DEPL","VITE","ACCE") ),
- EXCIT =FACT(statut='o',max='**',
- regles=(UN_PARMI('VECT_ASSE','CHARGE'),
- UN_PARMI('FONC_MULT','FONC_MULT_C','COEF_MULT','COEF_MULT_C'),
- ),
- VECT_ASSE =SIMP(statut='f',typ=(cham_no_depl_r,cham_no_depl_c,cham_no_pres_c,vect_asse_gene_r,vect_asse_gene_c ) ),
- CHARGE =SIMP(statut='f',typ=char_meca ),
- TYPE_CHARGE =SIMP(statut='f',typ='TXM',defaut="FIXE",into=("FIXE",) ),
- FONC_MULT_C =SIMP(statut='f',typ=fonction_c ),
- COEF_MULT_C =SIMP(statut='f',typ='C' ),
- FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- COEF_MULT =SIMP(statut='f',typ='R' ),
- PHAS_DEG =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- PUIS_PULS =SIMP(statut='f',typ='I',defaut= 0 ),
- ),
- TITRE =SIMP(statut='f',typ='TXM',max='**'),
- SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**',
- fr="Liste des paramètres de sensibilité.",
- ang="List of sensitivity parameters"),
-) ;
-# Rajouter test icompatibilite vect_asse et sensibilite
-# Peut-on aussi rajouter ici le test d incompatibilite charge complexe - derivation
-# presents dans le Fortran
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-DYNA_LINE_TRAN=OPER(nom="DYNA_LINE_TRAN",op= 48,sd_prod=dyna_trans,
- fr="Calcul de la réponse dynamique transitoire à une excitation temporelle quelconque",
- reentrant='f',
- UIinfo={"groupes":("Résolution",)},
-# regles=(UN_PARMI('WILSON','DIFF_CENTRE','ADAPT'),),
- regles=(UN_PARMI('NEWMARK','WILSON','DIFF_CENTRE','ADAPT'),),
- MODELE =SIMP(statut='f',typ=modele_sdaster ),
- CHAM_MATER =SIMP(statut='f',typ=cham_mater ),
- CARA_ELEM =SIMP(statut='f',typ=cara_elem ),
- MATR_MASS =SIMP(statut='o',typ=matr_asse_depl_r ),
- MATR_RIGI =SIMP(statut='o',typ=matr_asse_depl_r ),
- MATR_AMOR =SIMP(statut='f',typ=matr_asse_depl_r ),
- MODE_STAT =SIMP(statut='f',typ=(mode_stat_depl,mode_stat_acce,mode_stat_forc,) ),
- NEWMARK =FACT(statut='f',
- ALPHA =SIMP(statut='f',typ='R',defaut= 0.25 ),
- DELTA =SIMP(statut='f',typ='R',defaut= 0.5 ),
- ),
- WILSON =FACT(statut='f',
- THETA =SIMP(statut='f',typ='R',defaut= 1.4 ),
- ),
- DIFF_CENTRE =FACT(statut='f',
- ),
- ADAPT =FACT(statut='f',
- ),
- ETAT_INIT =FACT(statut='f',
- regles=(AU_MOINS_UN('DYNA_TRANS', 'DEPL_INIT', 'VITE_INIT',),
- PRESENT_ABSENT('DYNA_TRANS', 'DEPL_INIT', 'VITE_INIT'),),
- DYNA_TRANS =SIMP(statut='f',typ=dyna_trans ),
- b_dyna_trans =BLOC(condition = "DYNA_TRANS != None",
- regles=(EXCLUS('NUME_INIT','INST_INIT' ),),
- NUME_INIT =SIMP(statut='f',typ='I' ),
- INST_INIT =SIMP(statut='f',typ='R' ),
- b_inst_init =BLOC(condition = "INST_INIT != None",
- PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
- ),
- ),
- DEPL_INIT =SIMP(statut='f',typ=(cham_no_depl_r) ),
- VITE_INIT =SIMP(statut='f',typ=(cham_no_depl_r) ),
- ),
- EXCIT =FACT(statut='f',max='**',
- regles=(UN_PARMI('CHARGE','VECT_ASSE'),
- EXCLUS('CHARGE','COEF_MULT'),
- EXCLUS('FONC_MULT','COEF_MULT'),
- EXCLUS('ACCE','COEF_MULT'),
- PRESENT_ABSENT('ACCE','FONC_MULT'),
- PRESENT_PRESENT('ACCE','VITE','DEPL'),
- # PRESENT_ABSENT('MULT_APPUI','FONC_MULT'),
- ),
- VECT_ASSE =SIMP(statut='f',typ=cham_no_depl_r ),
- CHARGE =SIMP(statut='f',typ=char_meca ),
- FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- COEF_MULT =SIMP(statut='f',typ='R' ),
- TYPE_CHARGE =SIMP(statut='f',typ='TXM',defaut="FIXE",into=("FIXE",) ),
- ACCE =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- VITE =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- DEPL =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- MULT_APPUI =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
- DIRECTION =SIMP(statut='f',typ='R',max='**'),
- NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- ),
- AMOR_MODAL =FACT(statut='f',
- MODE_MECA =SIMP(statut='f',typ=mode_meca ),
- AMOR_REDUIT =SIMP(statut='f',typ='R',max='**'),
- NB_MODE =SIMP(statut='f',typ='I',defaut= 9999 ),
- REAC_VITE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
- ),
-# ce n est pas le mot clesolveur standard
- SOLVEUR =FACT(statut='d',
- NPREC =SIMP(statut='f',typ='I',defaut= 8 ),
- STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
- RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ),
- NMAX_ITER =SIMP(statut='f',typ='I',defaut= 0 ),
- ),
- INCREMENT =FACT(statut='o',max='**',
- regles=(UN_PARMI('LIST_INST','FONC_INST','PAS'),),
- LIST_INST =SIMP(statut='f',typ=listr8_sdaster ),
- FONC_INST =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- PAS =SIMP(statut='f',typ='R' ),
- b_pas =BLOC(condition = "PAS != None",
- INST_INIT =SIMP(statut='f',typ='R' ),
- INST_FIN =SIMP(statut='f',typ='R' ),
- ),
- b_list_fonc =BLOC(condition = "LIST_INST != None or FONC_INST != None",
- regles=(EXCLUS('INST_FIN','NUME_FIN'),),
- NUME_FIN =SIMP(statut='f',typ='I' ),
- INST_FIN =SIMP(statut='f',typ='R' ),
- ),
- VITE_MIN =SIMP(statut='f',typ='TXM',defaut="NORM",into=("MAXI","NORM") ),
- COEF_MULT_PAS =SIMP(statut='f',typ='R',defaut= 1.1 ),
- COEF_DIVI_PAS =SIMP(statut='f',typ='R',defaut= 1.33334 ),
- PAS_LIMI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ),
- NB_POIN_PERIODE =SIMP(statut='f',typ='I',defaut= 50 ),
- NMAX_ITER_PAS =SIMP(statut='f',typ='I',defaut= 16 ),
- PAS_CALCUL =SIMP(statut='f',typ='I',defaut= 1 ),
- ),
- ARCHIVAGE =FACT(statut='f',
- regles=(UN_PARMI('LIST_ARCH','PAS_ARCH', ),),
- LIST_ARCH =SIMP(statut='f',typ=listis_sdaster ),
- PAS_ARCH =SIMP(statut='f',typ='I' ),
- CHAM_EXCLU =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',into=("DEPL","VITE","ACCE") ),
- ),
- SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**',
- fr="Liste des param\350tres de sensibilit\351.",
- ang="List of sensitivity parameters",
- ),
- TITRE =SIMP(statut='f',typ='TXM',max='**'),
- INFO =SIMP(statut='f',typ='I',into=(1,2) ),
-) ;
-#& MODIF COMMANDE DATE 07/10/2005 AUTEUR CIBHHPD L.SALMONA
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-DYNA_NON_LINE=OPER(nom="DYNA_NON_LINE",op= 70,sd_prod=evol_noli,reentrant='f',
- fr="Calcul de l'évolution dynamique d'une structure dont le matériau ou la géométrie ont un comportement non linéaire",
- UIinfo={"groupes":("Résolution",)},
- regles=(AU_MOINS_UN('COMP_INCR','COMP_ELAS',),
- UN_PARMI('NEWMARK','HHT','TETA_METHODE', ),),
- MODELE =SIMP(statut='o',typ=modele_sdaster),
- CHAM_MATER =SIMP(statut='o',typ=cham_mater),
- MODE_STAT =SIMP(statut='f',typ=(mode_stat_depl,mode_stat_acce,mode_stat_forc,)),
- CARA_ELEM =SIMP(statut='f',typ=cara_elem),
- EXCIT =FACT(statut='o',max='**',
- regles=(PRESENT_ABSENT('FONC_MULT','ACCE'),
- PRESENT_PRESENT('ACCE','VITE','DEPL'),
- # PRESENT_ABSENT('MULT_APPUI','FONC_MULT'),
- ),
- TYPE_CHARGE =SIMP(statut='f',typ='TXM',defaut="FIXE_CSTE",
- into=("FIXE_CSTE","FIXE_PILO","SUIV","DIDI")),
- CHARGE =SIMP(statut='o',typ=(char_meca,char_cine_meca)),
- FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- DEPL =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- ACCE =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- VITE =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- MULT_APPUI =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
- DIRECTION =SIMP(statut='f',typ='R',max='**'),
- NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- ),
- SOUS_STRUC =FACT(statut='f',min=01,max='**',
- regles=(UN_PARMI('TOUT','MAILLE'),),
- CAS_CHARGE =SIMP(statut='o',typ='TXM' ),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- MAILLE =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**',),
- ),
- AMOR_MODAL =FACT(statut='f',
- MODE_MECA =SIMP(statut='f',typ=mode_meca),
- AMOR_REDUIT =SIMP(statut='f',typ='R',max='**' ),
- NB_MODE =SIMP(statut='f',typ='I',defaut= 9999 ),
- REAC_VITE =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
- ),
- COMP_INCR =C_COMP_INCR(),
- COMP_ELAS =FACT(statut='f',max='**',
- RELATION =SIMP(statut='o',typ='TXM',defaut="ELAS",
- into=("ELAS","ELAS_VMIS_LINE","ELAS_VMIS_TRAC",
- "ELAS_POUTRE_GR","CABLE")),
- ELAS =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
- ELAS_VMIS_TRAC =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
- ELAS_VMIS_LINE =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
- ELAS_POUTRE_GR =SIMP(statut='c',typ='I',defaut=3,into=(3,)),
- CABLE =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
- DEFORMATION =SIMP(statut='f',typ='TXM',defaut="PETIT" ,into=("PETIT","GREEN","GREEN_GR",) ),
- regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- RESI_INTE_RELA =SIMP(statut='f',typ='R',defaut= 1.0E-6),
- ITER_INTE_MAXI =SIMP(statut='f',typ='I',defaut= 10 ),
- ITER_INTE_PAS =SIMP(statut='f',typ='I',defaut= 0 ),
- RESO_INTE =SIMP(statut='f',typ='TXM',defaut="IMPLICITE",
- into=("RUNGE_KUTTA_2","RUNGE_KUTTA_4","IMPLICITE")),
- ),
-#-------------------------------------------------------------------
- b_reuse =BLOC(condition = "reuse",fr="en mode concept reentrant : ETAT_INIT obligatoire",
- ETAT_INIT =FACT(statut='o',
- regles=(AU_MOINS_UN('EVOL_NOLI','DEPL','VITE','SIGM','VARI','VARI_NON_LOCAL',),
- EXCLUS('EVOL_NOLI','DEPL',),
- EXCLUS('EVOL_NOLI','VITE'),
- EXCLUS('EVOL_NOLI','SIGM',),
- EXCLUS('EVOL_NOLI','VARI',),
- EXCLUS('EVOL_NOLI','VARI_NON_LOCAL',),
- EXCLUS('NUME_ORDRE','INST'), ),
- DEPL =SIMP(statut='f',typ=cham_no_depl_r),
- VITE =SIMP(statut='f',typ=cham_no_depl_r),
- SIGM =SIMP(statut='f',typ=(cham_elem_sief_r,carte_sief_r)),
- VARI =SIMP(statut='f',typ=cham_elem_vari_r),
- VARI_NON_LOCAL =SIMP(statut='f',typ=cham_no_vanl_r),
- EVOL_NOLI =SIMP(statut='f',typ=evol_noli),
- NUME_ORDRE =SIMP(statut='f',typ='I'),
- INST =SIMP(statut='f',typ='R'),
- PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3 ),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
- NUME_DIDI =SIMP(statut='f',typ='I'),
- INST_ETAT_INIT =SIMP(statut='f',typ='R'),
- ),),
- b_not_reuse =BLOC(condition = "not reuse",fr="en mode concept non reentrant : ETAT_INIT facultatif",
- ETAT_INIT =FACT(statut='f',
- regles=(AU_MOINS_UN('EVOL_NOLI','DEPL','VITE','SIGM','VARI','VARI_NON_LOCAL',),
- EXCLUS('EVOL_NOLI','DEPL',),
- EXCLUS('EVOL_NOLI','VITE'),
- EXCLUS('EVOL_NOLI','SIGM',),
- EXCLUS('EVOL_NOLI','VARI',),
- EXCLUS('EVOL_NOLI','VARI_NON_LOCAL',),
- EXCLUS('NUME_ORDRE','INST'), ),
- DEPL =SIMP(statut='f',typ=cham_no_depl_r),
- VITE =SIMP(statut='f',typ=cham_no_depl_r),
- SIGM =SIMP(statut='f',typ=(cham_elem_sief_r,carte_sief_r)),
- VARI =SIMP(statut='f',typ=cham_elem_vari_r),
- VARI_NON_LOCAL =SIMP(statut='f',typ=cham_no_vanl_r),
- EVOL_NOLI =SIMP(statut='f',typ=evol_noli),
- NUME_ORDRE =SIMP(statut='f',typ='I'),
- INST =SIMP(statut='f',typ='R'),
- PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3 ),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
- NUME_DIDI =SIMP(statut='f',typ='I'),
- INST_ETAT_INIT =SIMP(statut='f',typ='R'),
- ),),
-#-------------------------------------------------------------------
- INCREMENT =FACT(statut='o',
- regles=(EXCLUS('NUME_INST_INIT','INST_INIT'),
- EXCLUS('NUME_INST_FIN','INST_FIN'),),
- LIST_INST =SIMP(statut='o',typ=listr8_sdaster),
- EVOLUTION =SIMP(statut='f',typ='TXM',defaut="CHRONOLOGIQUE",
- into=("CHRONOLOGIQUE","RETROGRADE","SANS",) ),
- NUME_INST_INIT =SIMP(statut='f',typ='I'),
- INST_INIT =SIMP(statut='f',typ='R'),
- NUME_INST_FIN =SIMP(statut='f',typ='I'),
- INST_FIN =SIMP(statut='f',typ='R'),
- PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3 ),
- SUBD_PAS =SIMP(statut='f',typ='I',defaut=1),
- SUBD_PAS_MINI =SIMP(statut='f',typ='R'),
- COEF_SUBD_PAS_1 =SIMP(statut='f',typ='R',defaut= 1.0E+0),
- OPTI_LIST_INST =SIMP(statut='f',typ='TXM',into=("INCR_MAXI",),),
- NOM_CHAM =SIMP(statut='f',typ='TXM',),
- NOM_CMP =SIMP(statut='f',typ='TXM',),
- VALE =SIMP(statut='f',typ='R'),
- ),
-#-------------------------------------------------------------------
- NEWMARK =FACT(statut='f',
- ALPHA =SIMP(statut='f',typ='R',defaut= 0.25),
- DELTA =SIMP(statut='f',typ='R',defaut= 0.5),
- ),
- HHT =FACT(statut='f',
- ALPHA =SIMP(statut='f',typ='R'
- ,defaut= -0.29999999999999999 ),
- ),
- TETA_METHODE =FACT(statut='f',
- TETA =SIMP(statut='f',typ='R'
- ,defaut= 1.,val_min=0.5,val_max=1. ),
- ),
- NEWTON =FACT(statut='d',
- REAC_INCR =SIMP(statut='f',typ='I',defaut= 1 ),
- PREDICTION =SIMP(statut='f',typ='TXM',into=("TANGENTE","ELASTIQUE") ),
- MATRICE =SIMP(statut='f',typ='TXM',defaut="TANGENTE",into=("TANGENTE","ELASTIQUE") ),
- REAC_ITER =SIMP(statut='f',typ='I',defaut= 0),
- REAC_ITER_ELAS =SIMP(statut='f',typ='I',defaut=0),
- PAS_MINI_ELAS =SIMP(statut='f',typ='R',defaut=0.0E+0),
- ),
- PARM_THETA =SIMP(statut='f',typ='R',defaut= 1. ),
- SOLVEUR =FACT(statut='d',
- METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC","MUMPS") ),
- b_mult_front =BLOC(condition= "METHODE == 'MULT_FRONT' ",fr="Paramètres de la méthode multi frontale",
- RENUM =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ),
- ),
- b_ldlt =BLOC(condition= "METHODE == 'LDLT'",fr="Paramètres de la méthode LDLT",
- RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("RCMK","SANS") ),
- ),
- b_ldlt_mult =BLOC(condition="METHODE == 'LDLT' or METHODE == 'MULT_FRONT'",
- fr="Paramètres relatifs à la non inversibilité de la matrice à factorise",
- NPREC =SIMP(statut='f',typ='I',defaut= 8 ),
- STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON","DECOUPE") ),
- ),
- b_mumps =BLOC(condition = "METHODE == 'MUMPS' ",fr="Paramètres de la méthode MUMPS",
- TYPE_RESOL =SIMP(statut='f',typ='TXM',defaut='AUTO',into=('NONSYM','SYMGEN','SYMDEF','AUTO')),
- PCENT_PIVOT =SIMP(statut='f',typ='I',defaut=20,),
- RESI_RELA =SIMP(statut='f',typ='R',defaut=1.E-6,),
- ),
- b_gcpc =BLOC(condition="METHODE == 'GCPC'",fr="Paramètres de la méthode du gradient conjugué",
- PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC",),defaut="LDLT_INC" ),
- NIVE_REMPLISSAGE=SIMP(statut='f',typ='I',defaut=0),
- RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ),
- RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ),
- NMAX_ITER =SIMP(statut='f',typ='I',defaut= 0 ),
- ),
- SYME =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
- ),
-#-------------------------------------------------------------------
- RECH_LINEAIRE =FACT(statut='f',
- RESI_LINE_RELA =SIMP(statut='f',typ='R',defaut= 1.0E-1 ),
- ITER_LINE_MAXI =SIMP(statut='f',typ='I',defaut= 3),
- ITER_LINE_CRIT =SIMP(statut='f',typ='I',defaut= 20),
- PAS_MINI_CRIT =SIMP(statut='f',typ='R',defaut=0.0E+0),
- RHO_MIN =SIMP(statut='f',typ='R',defaut=1.0E-2),
- RHO_MAX =SIMP(statut='f',typ='R',defaut=1.0E+1),
- RHO_EXCL =SIMP(statut='f',typ='R',defaut=0.9E-2),
- ),
- PILOTAGE =FACT(statut='f',
- regles=(EXCLUS('NOEUD','GROUP_NO'),PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),),
- TYPE =SIMP(statut='o',typ='TXM',into=("DDL_IMPO","LONG_ARC","PRED_ELAS","PRED_ELAS_INCR","DEFORMATION","ANA_LIM") ),
- COEF_MULT =SIMP(statut='f',typ='R',defaut= 1.0E+0),
- ETA_PILO_MAX =SIMP(statut='f',typ='R'),
- ETA_PILO_MIN =SIMP(statut='f',typ='R'),
- ETA_PILO_R_MAX =SIMP(statut='f',typ='R'),
- ETA_PILO_R_MIN =SIMP(statut='f',typ='R'),
- PROJ_BORNES =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")),
- SELECTION =SIMP(statut='f',typ='TXM',defaut="NORM_INCR_DEPL", into=("RESIDU","ANGL_INCR_DEPL","NORM_INCR_DEPL") ),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma ,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- GROUP_NO =SIMP(statut='f',typ=grno ,validators=NoRepeat(),max='**'),
- NOM_CMP =SIMP(statut='f',typ='TXM',max='**' ),
- ),
- CONVERGENCE =FACT(statut='d',
- regles=(PRESENT_ABSENT('RESI_REFE_RELA','RESI_GLOB_MAXI','RESI_GLOB_RELA'),),
- SIGM_REFE =SIMP(statut='f',typ='R'),
- EPSI_REFE =SIMP(statut='f',typ='R'),
- FLUX_THER_REFE =SIMP(statut='f',typ='R'),
- FLUX_HYD1_REFE =SIMP(statut='f',typ='R'),
- FLUX_HYD2_REFE =SIMP(statut='f',typ='R'),
- RESI_REFE_RELA =SIMP(statut='f',typ='R'),
- RESI_GLOB_MAXI =SIMP(statut='f',typ='R'),
- RESI_GLOB_RELA =SIMP(statut='f',typ='R'),
- ITER_GLOB_MAXI =SIMP(statut='f',typ='I',defaut=10),
- ITER_GLOB_ELAS =SIMP(statut='f',typ='I',defaut=25),
- ARRET =SIMP(statut='f',typ='TXM',defaut="OUI"),
- ),
-#-------------------------------------------------------------------
- SUIVI_DDL = FACT(statut='f',max=4,
- regles=(UN_PARMI('NOEUD','MAILLE'),
- PRESENT_PRESENT('MAILLE','POINT'),),
- NUME_SUIVI =SIMP(statut='o',typ='I' ,min=1,max=4),
- NOM_CHAM =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=1,
- into=("DEPL","VITE","ACCE","SIEF_ELGA",
- "VARI_ELGA","FORC_NODA","DEPL_ABSOLU","VITE_ABSOLU","ACCE_ABSOLU",)),
- NOM_CMP =SIMP(statut='o',typ='TXM',max=1 ),
- NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max=1),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max=1),
- POINT =SIMP(statut='f',typ='I' ,validators=NoRepeat(),max=1),
- ),
-
- AFFICHAGE = FACT(statut='f',max=16,
-
- UNITE = SIMP(statut='f',typ='I',val_min=1),
-
- LONG_R = SIMP(statut='f',typ='I',defaut=12,val_min=1,val_max=12),
- PREC_R = SIMP(statut='f',typ='I',defaut=5, val_min=1,val_max=8),
- LONG_I = SIMP(statut='f',typ='I',defaut=6, val_min=1,val_max=12),
-
- NOM_COLONNE = SIMP(statut='o',typ='TXM',defaut="STANDARD",
- into=("STANDARD","MINIMUM",
- "ITER_NEWT",
- "INCR_TPS",
- "RESI_RELA","RELA_NOEU",
- "RESI_MAXI","MAXI_NOEU",
- "RESI_REFE","REFE_NOEU",
- "RELI_ITER","RELI_COEF",
- "PILO_PARA",
- "LAGR_ECAR","LAGR_INCR","LAGR_ITER",
- "MATR_ASSE",
- "ITER_DEBO",
- "CTCD_ITER","CTCD_INFO","CTCD_GEOM","CTCD_NOEU",
- "CTCC_GEOM","CTCC_FROT","CTCC_CONT",
- "SUIV_1","SUIV_2","SUIV_3","SUIV_4",
- ),
- ),
- b_residu = BLOC(condition = " NOM_COLONNE == 'RESI_RELA' or \
- NOM_COLONNE == 'RESI_MAXI' or\
- NOM_COLONNE == 'RESI_REFE' or\
- NOM_COLONNE == 'CTCD_GEOM' or\
- NOM_COLONNE == 'STANDARD' ",
- INFO_RESIDU = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
- ),
- ),
-#-------------------------------------------------------------------
- ARCHIVAGE =FACT(statut='f',
- regles=(EXCLUS('PAS_ARCH','LIST_INST','INST'),
- EXCLUS('ARCH_ETAT_INIT','NUME_INIT'), ),
- LIST_INST =SIMP(statut='f',typ=(listr8_sdaster) ),
- INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ),
- PAS_ARCH =SIMP(statut='f',typ='I' ),
- PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3),
- ARCH_ETAT_INIT =SIMP(statut='f',typ='TXM',into=("OUI",)),
- NUME_INIT =SIMP(statut='f',typ='I'),
- DETR_NUME_SUIV =SIMP(statut='f',typ='TXM',into=("OUI",)),
- CHAM_EXCLU =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',
- into=("DEPL","SIEF_ELGA","VARI_ELGA","ACCE","VITE","VARI_NON_LOCAL","LANL_ELGA")),
- ),
- OBSERVATION =FACT(statut='f',max='**',
- regles=(UN_PARMI('NOEUD','GROUP_NO','MAILLE'),
- PRESENT_PRESENT('MAILLE','POINT'),),
- NOM_CHAM =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',
-
-into=("DEPL","VITE","ACCE","SIEF_ELGA","VARI_ELGA","DEPL_ABSOLU","VITE_ABSOLU","ACCE_ABSOLU") ),
- NOM_CMP =SIMP(statut='o',typ='TXM',max='**' ),
- LIST_ARCH =SIMP(statut='f',typ=listis_sdaster),
- LIST_INST =SIMP(statut='f',typ=listr8_sdaster),
- INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ),
- PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3 ),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
- PAS_OBSE =SIMP(statut='f',typ='I'),
- NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- POINT =SIMP(statut='f',typ='I' ,max='**'),
- ),
-#-------------------------------------------------------------------
- SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**',
- fr="Liste des paramètres de sensibilité",
- ang="List of sensitivity parameters"),
-#-------------------------------------------------------------------
- SOLV_NON_LOCAL =FACT(statut='f',
- METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC","MUMPS") ),
- b_mult_front =BLOC(condition = "METHODE == 'MULT_FRONT' ",fr="Paramètres de la méthode multi frontale",
- RENUM =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ),
- ),
- b_ldlt =BLOC(condition = "METHODE == 'LDLT' ",fr="Paramètres de la méthode LDLT",
- RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("RCMK","SANS") ),
- ),
- b_ldlt_mult =BLOC(condition = "METHODE == 'LDLT' or METHODE == 'MULT_FRONT' ",
- fr="Paramètres relatifs à la non inversibilité de la matrice à factorise",
- NPREC =SIMP(statut='f',typ='I',defaut= 8 ),
- STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
- ),
- b_mumps =BLOC(condition = "METHODE == 'MUMPS' ",fr="Paramètres de la méthode MUMPS",
- TYPE_RESOL =SIMP(statut='f',typ='TXM',defaut='AUTO',into=('NONSYM','SYMGEN','SYMDEF','AUTO')),
- PCENT_PIVOT =SIMP(statut='f',typ='I',defaut=20,),
- RESI_RELA =SIMP(statut='f',typ='R',defaut=1.E-6,),
- ),
- b_gcpc =BLOC(condition = "METHODE == 'GCPC' ", fr="Paramètres de la méthode du gradient conjugué",
- PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC",),defaut="LDLT_INC" ),
- NIVE_REMPLISSAGE=SIMP(statut='f',typ='I',defaut= 0 ),
- RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ),
- NMAX_ITER =SIMP(statut='f',typ='I',defaut= 0 ),
- ),
- EPS =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- ),
- LAGR_NON_LOCAL =FACT(statut='f',
- ITER_DUAL_MAXI =SIMP(statut='f',typ='I',defaut= 50),
- RESI_DUAL_ABSO =SIMP(statut='o',typ='R'),
- RESI_PRIM_ABSO =SIMP(statut='o',typ='R'),
- R =SIMP(statut='f',typ='R',defaut= 1000.),
- ITER_PRIM_MAXI =SIMP(statut='f',typ='I',defaut= 10),
- ),
-#-------------------------------------------------------------------
- INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
- TITRE =SIMP(statut='f',typ='TXM',max='**'),
-) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-DYNA_SPEC_MODAL=OPER(nom="DYNA_SPEC_MODAL",op= 147,sd_prod=tabl_intsp,
- fr="Calcul de la réponse par recombinaison modale d'une structure linéaire pour une excitation aléatoire",
- reentrant='n',
- UIinfo={"groupes":("Résolution",)},
- BASE_ELAS_FLUI =SIMP(statut='o',typ=melasflu_sdaster ),
- EXCIT =FACT(statut='o',
- INTE_SPEC_GENE =SIMP(statut='o',typ=tabl_intsp ),
- ),
- OPTION =SIMP(statut='f',typ='TXM',defaut="TOUT",into=("TOUT","DIAG") ),
- TITRE =SIMP(statut='f',typ='TXM',max='**'),
-) ;
-#& MODIF COMMANDE DATE 07/10/2005 AUTEUR CIBHHPD L.SALMONA
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2003 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-#& RESPONSABLE
-DYNA_TRAN_EXPLI=OPER(nom="DYNA_TRAN_EXPLI",op= 70,sd_prod=evol_noli,reentrant='f',UIinfo={"groupe":("Résolution",)},
- fr="Calcul de l'évolution dynamique d'une structure dont la géométrie ou le matériau ont un comportement"
- +" non linéaire, par une méthode explicite sur les accélérations ",
- regles=(AU_MOINS_UN('COMP_INCR','COMP_ELAS',),),
- MODELE =SIMP(statut='o',typ=modele_sdaster),
- CHAM_MATER =SIMP(statut='o',typ=cham_mater),
- MODE_STAT =SIMP(statut='f',typ=(mode_stat_depl,mode_stat_acce,mode_stat_forc,)),
- CARA_ELEM =SIMP(statut='f',typ=cara_elem),
- EXCIT =FACT(statut='o',max='**',
- regles=(PRESENT_ABSENT('FONC_MULT','ACCE'),
- PRESENT_PRESENT('ACCE','VITE','DEPL'),
- # PRESENT_ABSENT('MULT_APPUI','FONC_MULT'),
- ),
- TYPE_CHARGE =SIMP(statut='f',typ='TXM',defaut="FIXE_CSTE",
- into=("FIXE_CSTE","FIXE_PILO","SUIV","DIDI")),
- CHARGE =SIMP(statut='o',typ=char_meca),
- FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- DEPL =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- ACCE =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- VITE =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- MULT_APPUI =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
- DIRECTION =SIMP(statut='f',typ='R',max=3),
- NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- ),
- AMOR_MODAL =FACT(statut='f',
- MODE_MECA =SIMP(statut='f',typ=mode_meca),
- AMOR_REDUIT =SIMP(statut='f',typ='R',max='**' ),
- NB_MODE =SIMP(statut='f',typ='I',defaut= 9999 ),
- REAC_VITE =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
- ),
- PROJ_MODAL =FACT(statut='f',
- MODE_MECA =SIMP(statut='f',typ=mode_meca),
- NB_MODE =SIMP(statut='f',typ='I',defaut= 9999 ),
- ),
- COMP_INCR =C_COMP_INCR(),
- COMP_ELAS =FACT(statut='f',max='**',
- RELATION =SIMP(statut='o',typ='TXM',defaut="ELAS",
- into=("ELAS","ELAS_VMIS_LINE","ELAS_VMIS_TRAC",
- "ELAS_POUTRE_GR","CABLE")),
- ELAS =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
- ELAS_VMIS_TRAC =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
- ELAS_VMIS_LINE =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
- ELAS_POUTRE_GR =SIMP(statut='c',typ='I',defaut=3,into=(3,)),
- CABLE =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
- DEFORMATION =SIMP(statut='f',typ='TXM',defaut="PETIT" ,into=("PETIT","GREEN","GREEN_GR",) ),
- regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- RESI_INTE_RELA =SIMP(statut='f',typ='R',defaut= 1.0E-6),
- ITER_INTE_MAXI =SIMP(statut='f',typ='I',defaut= 10 ),
- ITER_INTE_PAS =SIMP(statut='f',typ='I',defaut= 0 ),
- RESO_INTE =SIMP(statut='f',typ='TXM',defaut="IMPLICITE",
- into=("RUNGE_KUTTA_2","RUNGE_KUTTA_4","IMPLICITE")),
- ),
-#-------------------------------------------------------------------
- ETAT_INIT =FACT(statut='f',
- regles=(AU_MOINS_UN('EVOL_NOLI','DEPL','VITE','SIGM','VARI','VARI_NON_LOCAL',),
- EXCLUS('EVOL_NOLI','DEPL',),
- EXCLUS('EVOL_NOLI','VITE'),
- EXCLUS('EVOL_NOLI','SIGM',),
- EXCLUS('EVOL_NOLI','VARI',),
- EXCLUS('EVOL_NOLI','VARI_NON_LOCAL',),
- EXCLUS('NUME_ORDRE','INST'), ),
- DEPL =SIMP(statut='f',typ=cham_no_depl_r),
- VITE =SIMP(statut='f',typ=cham_no_depl_r),
- SIGM =SIMP(statut='f',typ=(cham_elem_sief_r,carte_sief_r)),
- VARI =SIMP(statut='f',typ=cham_elem_vari_r),
- VARI_NON_LOCAL =SIMP(statut='f',typ=cham_no_vanl_r),
- EVOL_NOLI =SIMP(statut='f',typ=evol_noli),
- NUME_ORDRE =SIMP(statut='f',typ='I'),
- INST =SIMP(statut='f',typ='R'),
- PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3 ),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
- NUME_DIDI =SIMP(statut='f',typ='I'),
- INST_ETAT_INIT =SIMP(statut='f',typ='R'),
- ),
-#-------------------------------------------------------------------
- INCREMENT =FACT(statut='o',
- regles=(EXCLUS('NUME_INST_INIT','INST_INIT'),
- EXCLUS('NUME_INST_FIN','INST_FIN'),),
- LIST_INST =SIMP(statut='o',typ=listr8_sdaster),
- EVOLUTION =SIMP(statut='f',typ='TXM',defaut="CHRONOLOGIQUE",
- into=("CHRONOLOGIQUE","RETROGRADE","SANS",) ),
- NUME_INST_INIT =SIMP(statut='f',typ='I'),
- INST_INIT =SIMP(statut='f',typ='R'),
- NUME_INST_FIN =SIMP(statut='f',typ='I'),
- INST_FIN =SIMP(statut='f',typ='R'),
- PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3 ),
- SUBD_PAS =SIMP(statut='f',typ='I',defaut=1),
- SUBD_PAS_MINI =SIMP(statut='f',typ='R'),
- COEF_SUBD_PAS_1 =SIMP(statut='f',typ='R',defaut= 1.0E+0),
- OPTI_LIST_INST =SIMP(statut='f',typ='TXM',into=("INCR_MAXI",),),
- NOM_CHAM =SIMP(statut='f',typ='TXM',),
- NOM_CMP =SIMP(statut='f',typ='TXM',),
- VALE =SIMP(statut='f',typ='R'),
- ),
-#-------------------------------------------------------------------
- NEWMARK =FACT(statut='d',
- ALPHA =SIMP(statut='f',typ='R',defaut= 0.25),
- DELTA =SIMP(statut='f',typ='R',defaut= 0.5),
- ),
- NEWTON =FACT(statut='c',
- REAC_INCR =SIMP(statut='f',typ='I',defaut= 1 ),
- PREDICTION =SIMP(statut='f',typ='TXM',into=("TANGENTE","ELASTIQUE") ),
- MATRICE =SIMP(statut='f',typ='TXM',defaut="TANGENTE",into=("TANGENTE","ELASTIQUE") ),
- REAC_ITER =SIMP(statut='f',typ='I',defaut= 0),
- REAC_ITER_ELAS =SIMP(statut='f',typ='I',defaut=0),
- PAS_MINI_ELAS =SIMP(statut='f',typ='R',defaut=0.0E+0),
- ),
- PARM_THETA =SIMP(statut='f',typ='R',defaut= 1. ),
- SOLVEUR =FACT(statut='d',
- METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC") ),
- b_mult_front =BLOC(condition= "METHODE == 'MULT_FRONT' ",fr="Paramètres de la méthode multi frontale",
- RENUM =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ),
- ),
- b_ldlt =BLOC(condition= "METHODE == 'LDLT'",fr="Paramètres de la méthode LDLT",
- RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("RCMK","SANS") ),
- ),
- b_ldlt_mult =BLOC(condition="METHODE == 'LDLT' or METHODE == 'MULT_FRONT'",
- fr="Paramètres relatifs à la non inversibilité de la matrice à factorise",
- NPREC =SIMP(statut='f',typ='I',defaut= 8 ),
- STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON","DECOUPE") ),
- ),
- b_gcpc =BLOC(condition="METHODE == 'GCPC'",fr="Paramètres de la méthode du gradient conjugué",
- PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC",),defaut="LDLT_INC" ),
- NIVE_REMPLISSAGE=SIMP(statut='f',typ='I',defaut=0),
- RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ),
- RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ),
- NMAX_ITER =SIMP(statut='f',typ='I',defaut= 0 ),
- ),
- SYME =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
- ),
-#-------------------------------------------------------------------
- RECH_LINEAIRE =FACT(statut='c',
- RESI_LINE_RELA =SIMP(statut='f',typ='R',defaut= 1.0E-1 ),
- ITER_LINE_MAXI =SIMP(statut='f',typ='I',defaut= 3),
- ITER_LINE_CRIT =SIMP(statut='f',typ='I',defaut= 20),
- PAS_MINI_CRIT =SIMP(statut='f',typ='R',defaut=0.0E+0),
- RHO_MIN =SIMP(statut='f',typ='R',defaut=1.0E-2),
- RHO_MAX =SIMP(statut='f',typ='R',defaut=1.0E+1),
- RHO_EXCL =SIMP(statut='f',typ='R',defaut=0.9E-2),
- ),
- PILOTAGE =FACT(statut='c',
- regles=(EXCLUS('NOEUD','GROUP_NO'),PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),),
- TYPE =SIMP(statut='o',typ='TXM',into=("DDL_IMPO","LONG_ARC","PRED_ELAS","PRED_ELAS_INCR","DEFORMATION","ANA_LIM") ),
- COEF_MULT =SIMP(statut='f',typ='R',defaut= 1.0E+0),
- ETA_PILO_MAX =SIMP(statut='f',typ='R'),
- ETA_PILO_MIN =SIMP(statut='f',typ='R'),
- ETA_PILO_R_MAX =SIMP(statut='f',typ='R'),
- ETA_PILO_R_MIN =SIMP(statut='f',typ='R'),
- PROJ_BORNES =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")),
- SELECTION =SIMP(statut='f',typ='TXM',defaut="NORM_INCR_DEPL", into=("RESIDU","ANGL_INCR_DEPL","NORM_INCR_DEPL") ),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma ,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- GROUP_NO =SIMP(statut='f',typ=grno ,validators=NoRepeat(),max='**'),
- NOM_CMP =SIMP(statut='f',typ='TXM',max='**' ),
- ),
- CONVERGENCE =FACT(statut='d',
- regles=(PRESENT_ABSENT('RESI_REFE_RELA','RESI_GLOB_MAXI','RESI_GLOB_RELA'),),
- SIGM_REFE =SIMP(statut='f',typ='R'),
- EPSI_REFE =SIMP(statut='f',typ='R'),
- FLUX_THER_REFE =SIMP(statut='f',typ='R'),
- FLUX_HYD1_REFE =SIMP(statut='f',typ='R'),
- FLUX_HYD2_REFE =SIMP(statut='f',typ='R'),
- RESI_REFE_RELA =SIMP(statut='f',typ='R'),
- RESI_GLOB_MAXI =SIMP(statut='f',typ='R'),
- RESI_GLOB_RELA =SIMP(statut='f',typ='R'),
- ITER_GLOB_MAXI =SIMP(statut='f',typ='I',defaut=10),
- ITER_GLOB_ELAS =SIMP(statut='f',typ='I',defaut=25),
- ARRET =SIMP(statut='f',typ='TXM',defaut="OUI"),
- RESI_INTE_RELA =SIMP(statut='f',typ='R'
- ,defaut= 1.0E-6),
- ITER_INTE_MAXI =SIMP(statut='f',typ='I',defaut= 10 ),
- ITER_INTE_PAS =SIMP(statut='f',typ='I',defaut= 0 ),
- RESO_INTE =SIMP(statut='f',typ='TXM',defaut="IMPLICITE",
- into=("RUNGE_KUTTA_2","RUNGE_KUTTA_4","IMPLICITE")),
- ),
-#-------------------------------------------------------------------
- AFFICHAGE = FACT(statut='f',max=16,
-
- UNITE = SIMP(statut='f',typ='I',val_min=1),
-
- LONG_R = SIMP(statut='f',typ='I',defaut=12,val_min=1,val_max=12),
- PREC_R = SIMP(statut='f',typ='I',defaut=5, val_min=1,val_max=8),
- LONG_I = SIMP(statut='f',typ='I',defaut=6, val_min=1,val_max=12),
-
- NOM_COLONNE = SIMP(statut='o',typ='TXM',defaut="STANDARD",
- into=("STANDARD","MINIMUM",
- "ITER_NEWT",
- "INCR_TPS",
- "RESI_RELA","RELA_NOEU",
- "RESI_MAXI","MAXI_NOEU",
- "RESI_REFE","REFE_NOEU",
- "RELI_ITER","RELI_COEF",
- "PILO_PARA",
- "LAGR_ECAR","LAGR_INCR","LAGR_ITER",
- "MATR_ASSE",
- "ITER_DEBO",
- "CTCD_ITER","CTCD_INFO","CTCD_GEOM","CTCD_NOEU",
- "CTCC_GEOM","CTCC_FROT","CTCC_CONT",
- "SUIV_1","SUIV_2","SUIV_3","SUIV_4",
- ),
- ),
- b_residu = BLOC(condition = " NOM_COLONNE == 'RESI_RELA' or \
- NOM_COLONNE == 'RESI_MAXI' or\
- NOM_COLONNE == 'RESI_REFE' or\
- NOM_COLONNE == 'CTCD_GEOM' or\
- NOM_COLONNE == 'STANDARD' ",
- INFO_RESIDU = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
- ),
- ),
-#-------------------------------------------------------------------
- ARCHIVAGE =FACT(statut='f',
- regles=(EXCLUS('PAS_ARCH','LIST_INST','INST'),
- EXCLUS('ARCH_ETAT_INIT','NUME_INIT'), ),
- LIST_INST =SIMP(statut='f',typ=(listr8_sdaster) ),
- INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ),
- PAS_ARCH =SIMP(statut='f',typ='I' ),
- PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3),
- ARCH_ETAT_INIT =SIMP(statut='f',typ='TXM',into=("OUI",)),
- NUME_INIT =SIMP(statut='f',typ='I'),
- DETR_NUME_SUIV =SIMP(statut='f',typ='TXM',into=("OUI",)),
- CHAM_EXCLU =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',
- into=("DEPL","SIEF_ELGA","VARI_ELGA","ACCE","VITE","VARI_NON_LOCAL","LANL_ELGA")),
- ),
- OBSERVATION =FACT(statut='f',max='**',
- regles=(UN_PARMI('NOEUD','GROUP_NO','MAILLE'),
- PRESENT_PRESENT('MAILLE','POINT'),),
- NOM_CHAM =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',
-
-into=("DEPL","VITE","ACCE","SIEF_ELGA","VARI_ELGA","DEPL_ABSOLU","VITE_ABSOLU","ACCE_ABSOLU") ),
- NOM_CMP =SIMP(statut='o',typ='TXM',max='**' ),
- LIST_ARCH =SIMP(statut='f',typ=listis_sdaster),
- LIST_INST =SIMP(statut='f',typ=listr8_sdaster),
- INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ),
- PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3 ),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
- PAS_OBSE =SIMP(statut='f',typ='I'),
- NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- POINT =SIMP(statut='f',typ='I' ,max='**'),
- ),
-#-------------------------------------------------------------------
- SOLV_NON_LOCAL =FACT(statut='f',
- METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC") ),
- b_mult_front =BLOC(condition = "METHODE == 'MULT_FRONT' ",fr="Paramètres de la méthode multi frontale",
- RENUM =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ),
- ),
- b_ldlt =BLOC(condition = "METHODE == 'LDLT' ",fr="Paramètres de la méthode LDLT",
- RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("RCMK","SANS") ),
- ),
- b_ldlt_mult =BLOC(condition = "METHODE == 'LDLT' or METHODE == 'MULT_FRONT' ",
- fr="Paramètres relatifs à la non inversibilité de la matrice à factorise",
- NPREC =SIMP(statut='f',typ='I',defaut= 8 ),
- STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
- ),
- b_gcpc =BLOC(condition = "METHODE == 'GCPC' ", fr="Paramètres de la méthode du gradient conjugué",
- PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC",),defaut="LDLT_INC" ),
- NIVE_REMPLISSAGE=SIMP(statut='f',typ='I',defaut= 0 ),
- RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ),
- NMAX_ITER =SIMP(statut='f',typ='I',defaut= 0 ),
- ),
- ),
- LAGR_NON_LOCAL =FACT(statut='f',
- ITER_DUAL_MAXI =SIMP(statut='f',typ='I',defaut= 50),
- RESI_DUAL_ABSO =SIMP(statut='o',typ='R'),
- RESI_PRIM_ABSO =SIMP(statut='o',typ='R'),
- R =SIMP(statut='f',typ='R',defaut= 1000.),
- ITER_PRIM_MAXI =SIMP(statut='f',typ='I',defaut= 10),
- ),
-#-------------------------------------------------------------------
- INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
- TITRE =SIMP(statut='f',typ='TXM',max='**'),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-DYNA_TRAN_MODAL=OPER(nom="DYNA_TRAN_MODAL",op= 74,sd_prod=tran_gene,
- fr="Calcul de la réponse dynamique transitoire d'un système amorti ou non en coordonées généralisées"
- +" par superposition modale ou par sous structuration",
- reentrant='f',
- UIinfo={"groupes":("Résolution",)},
- regles=(EXCLUS('AMOR_REDUIT','AMOR_GENE','LIST_AMOR'),
- PRESENT_ABSENT('MODE_STAT','MODE_CORR'),),
- METHODE =SIMP(statut='f',typ='TXM',defaut="EULER",
- into=("EULER","NEWMARK","DEVOGE","ADAPT","ITMI") ),
- MASS_GENE =SIMP(statut='o',typ=matr_asse_gene_r ),
- RIGI_GENE =SIMP(statut='o',typ=matr_asse_gene_r ),
- AMOR_GENE =SIMP(statut='f',typ=matr_asse_gene_r ),
- AMOR_REDUIT =SIMP(statut='f',typ='R',max='**'),
- LIST_AMOR =SIMP(statut='f',typ=listr8_sdaster ),
- MODE_STAT =SIMP(statut='f',typ=(mode_stat_depl,mode_stat_acce,mode_stat_forc) ),
- MODE_CORR =SIMP(statut='f',typ=(mult_elas,mode_stat_acce) ,),
-
- ETAT_INIT =FACT(statut='f',
- regles=(EXCLUS('RESU_GENE','DEPL_INIT_GENE'),
- EXCLUS('RESU_GENE','VITE_INIT_GENE'),),
- RESU_GENE =SIMP(statut='f',typ=tran_gene ),
- b_resu_gene =BLOC(condition = "RESU_GENE != None",
- INST_INIT =SIMP(statut='f',typ='R' ),
- PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
- ),
- DEPL_INIT_GENE =SIMP(statut='f',typ=vect_asse_gene_r ),
- VITE_INIT_GENE =SIMP(statut='f',typ=vect_asse_gene_r ),
- ),
- INCREMENT =FACT(statut='o',max='**',
- INST_INIT =SIMP(statut='f',typ='R' ),
- INST_FIN =SIMP(statut='o',typ='R' ),
- PAS =SIMP(statut='f',typ='R' ),
- VERI_PAS =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
- VITE_MIN =SIMP(statut='f',typ='TXM',defaut="NORM",into=("MAXI","NORM") ),
- COEF_MULT_PAS =SIMP(statut='f',typ='R',defaut= 1.1 ),
- COEF_DIVI_PAS =SIMP(statut='f',typ='R',defaut= 1.3333334 ),
- PAS_LIMI_RELA =SIMP(statut='f',typ='R',defaut= 1.0E-6 ),
- NB_POIN_PERIODE =SIMP(statut='f',typ='I',defaut= 50 ),
- NMAX_ITER_PAS =SIMP(statut='f',typ='I',defaut= 16 ),
- ),
- ARCHIVAGE =FACT(statut='f',
- regles=(UN_PARMI('LIST_ARCH','PAS_ARCH'),),
- LIST_ARCH =SIMP(statut='f',typ=listis_sdaster ),
- PAS_ARCH =SIMP(statut='f',typ='I' ),
- ),
-
- NMAX_ITER =SIMP(statut='f',typ='I',defaut= 20 ),
- RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.0E-3 ),
- LAMBDA =SIMP(statut='f',typ='R',defaut= 10. ),
-
- EXCIT =FACT(statut='f',max='**',
- regles=(UN_PARMI('FONC_MULT','COEF_MULT','ACCE'),
- PRESENT_PRESENT('ACCE','VITE','DEPL'),
- PRESENT_PRESENT('D_FONC_DT','D_FONC_DT2'),
- PRESENT_ABSENT('NUME_MODE','VECT_GENE','COEF_MULT'),
- EXCLUS('MULT_APPUI','CORR_STAT'),
- PRESENT_ABSENT('MULT_APPUI','COEF_MULT'),
- PRESENT_ABSENT('MULT_APPUI','FONC_MULT'),),
- VECT_GENE =SIMP(statut='f',typ=vect_asse_gene_r ),
- NUME_MODE =SIMP(statut='f',typ='I' ),
- FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- COEF_MULT =SIMP(statut='f',typ='R' ),
- ACCE =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- VITE =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- DEPL =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- MULT_APPUI =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- DIRECTION =SIMP(statut='f',typ='R',max='**'),
- b_loca =BLOC(condition= "DIRECTION != None",
- regles=(EXCLUS('NOEUD','GROUP_NO'),),
- NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- ),
- CORR_STAT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- D_FONC_DT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- D_FONC_DT2 =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- ),
- CHOC =FACT(statut='f',max='**',
- regles=(UN_PARMI('NOEUD_1','GROUP_NO_1' ),
- PRESENT_ABSENT('NOEUD_1','GROUP_NO_1'),
- PRESENT_ABSENT('NOEUD_2','GROUP_NO_2'),),
- INTITULE =SIMP(statut='f',typ='TXM' ),
- NOEUD_1 =SIMP(statut='f',typ=no),
- NOEUD_2 =SIMP(statut='f',typ=no),
- GROUP_NO_1 =SIMP(statut='f',typ=grno),
- GROUP_NO_2 =SIMP(statut='f',typ=grno),
- OBSTACLE =SIMP(statut='o',typ=obstacle_sdaster ),
- ORIG_OBST =SIMP(statut='f',typ='R',min=3,max=3),
- NORM_OBST =SIMP(statut='o',typ='R',min=3,max=3),
- ANGL_VRIL =SIMP(statut='f',typ='R' ),
- JEU =SIMP(statut='f',typ='R',defaut= 1. ),
- DIST_1 =SIMP(statut='f',typ='R',val_min=0.E+0 ),
- DIST_2 =SIMP(statut='f',typ='R',val_min=0.E+0 ),
- SOUS_STRUC_1 =SIMP(statut='f',typ='TXM' ),
- SOUS_STRUC_2 =SIMP(statut='f',typ='TXM' ),
- REPERE =SIMP(statut='f',typ='TXM',defaut="GLOBAL"),
- RIGI_NOR =SIMP(statut='f',typ='R' ),
- AMOR_NOR =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- RIGI_TAN =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- AMOR_TAN =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- COULOMB =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
-
- LAME_FLUIDE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
- b_lame =BLOC(condition="LAME_FLUIDE=='OUI'",
- ALPHA =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- BETA =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- CHI =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- DELTA =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- ),
- ),
- VERI_CHOC =FACT(statut='f',max='**',
- STOP_CRITERE =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
- SEUIL =SIMP(statut='f',typ='R',defaut= 0.5 ),
- ),
- FLAMBAGE =FACT(statut='f',max='**',
- regles=(UN_PARMI('NOEUD_1','GROUP_NO_1'),
- PRESENT_ABSENT('NOEUD_1','GROUP_NO_1'),
- PRESENT_ABSENT('NOEUD_2','GROUP_NO_2'),),
- NOEUD_1 =SIMP(statut='f',typ=no),
- NOEUD_2 =SIMP(statut='f',typ=no),
- GROUP_NO_1 =SIMP(statut='f',typ=grno),
- GROUP_NO_2 =SIMP(statut='f',typ=grno),
- OBSTACLE =SIMP(statut='o',typ=obstacle_sdaster ),
- ORIG_OBST =SIMP(statut='f',typ='R',max='**'),
- NORM_OBST =SIMP(statut='o',typ='R',max='**'),
- ANGL_VRIL =SIMP(statut='f',typ='R' ),
- JEU =SIMP(statut='f',typ='R',defaut= 1. ),
- DIST_1 =SIMP(statut='f',typ='R' ),
- DIST_2 =SIMP(statut='f',typ='R' ),
- REPERE =SIMP(statut='f',typ='TXM',defaut="GLOBAL"),
- RIGI_NOR =SIMP(statut='f',typ='R' ),
- FNOR_CRIT =SIMP(statut='f',typ='R' ),
- FNOR_POST_FL =SIMP(statut='f',typ='R' ),
- RIGI_NOR_POST_FL=SIMP(statut='f',typ='R' ),
- ),
- ANTI_SISM =FACT(statut='f',max='**',
- regles=(UN_PARMI('NOEUD_1','GROUP_NO_1'),
- UN_PARMI('NOEUD_2','GROUP_NO_2'),
- PRESENT_ABSENT('NOEUD_1','GROUP_NO_1'),
- PRESENT_ABSENT('NOEUD_2','GROUP_NO_2'),),
- NOEUD_1 =SIMP(statut='f',typ=no),
- NOEUD_2 =SIMP(statut='f',typ=no),
- GROUP_NO_1 =SIMP(statut='f',typ=grno),
- GROUP_NO_2 =SIMP(statut='f',typ=grno),
- RIGI_K1 =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- RIGI_K2 =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- SEUIL_FX =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- C =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- PUIS_ALPHA =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- DX_MAX =SIMP(statut='f',typ='R',defaut= 1. ),
- ),
- RELA_EFFO_DEPL =FACT(statut='f',max='**',
- NOEUD =SIMP(statut='o',typ=no),
- SOUS_STRUC =SIMP(statut='f',typ='TXM' ),
- NOM_CMP =SIMP(statut='f',typ='TXM' ),
- RELATION =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- ),
- RELA_TRANSIS =FACT(statut='f',max='**',
- NOEUD =SIMP(statut='o',typ=no),
- SOUS_STRUC =SIMP(statut='f',typ='TXM' ),
- NOM_CMP =SIMP(statut='f',typ='TXM' ),
- RELATION =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- ),
- RELA_EFFO_VITE =FACT(statut='f',max='**',
- NOEUD =SIMP(statut='o',typ=no),
- SOUS_STRUC =SIMP(statut='f',typ='TXM' ),
- NOM_CMP =SIMP(statut='f',typ='TXM' ),
- RELATION =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- ),
- b_itmi =BLOC(condition = "METHODE=='ITMI'",
- regles=(ENSEMBLE('BASE_ELAS_FLUI','NUME_VITE_FLUI'),),
- BASE_ELAS_FLUI =SIMP(statut='f',typ=melasflu_sdaster ),
- NUME_VITE_FLUI =SIMP(statut='f',typ='I' ),
- ETAT_STAT =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
- PREC_DUREE =SIMP(statut='f',typ='R',defaut= 1.E-2 ),
- CHOC_FLUI =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
- NB_MODE =SIMP(statut='f',typ='I' ),
- NB_MODE_FLUI =SIMP(statut='f',typ='I' ),
- NB_MODE_DIAG =SIMP(statut='f',typ='I' ),
- TS_REG_ETAB =SIMP(statut='f',typ='R' ),
- ),
- INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
- IMPRESSION =FACT(statut='f',max='**',
- regles=(EXCLUS('TOUT','NIVEAU'),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- NIVEAU =SIMP(statut='f',typ='TXM',into=("DEPL_LOC","VITE_LOC","FORC_LOC","TAUX_CHOC") ),
- INST_INIT =SIMP(statut='f',typ='R' ),
- INST_FIN =SIMP(statut='f',typ='R' ),
- ),
- TITRE =SIMP(statut='f',typ='TXM',max='**'),
- ) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE VABHHTS J.PELLET
-ENGENDRE_TEST=PROC(nom="ENGENDRE_TEST",op=178,
- UIinfo={"groupes":("Impression",)},
- fr="Engendre des tests pour la non régression du code (pour développeurs)",
- regles=(UN_PARMI('TOUT','CO'),),
- UNITE =SIMP(statut='f',typ='I',defaut=8),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- CO =SIMP(statut='f',typ=assd,validators=NoRepeat(),max='**'),
- TYPE_TEST =SIMP(statut='f',typ='TXM',defaut="SOMME",into=("SOMME","RESUME") ),
- FORMAT_R =SIMP(statut='f',typ='TXM',defaut="1PE12.5"),
- PREC_R =SIMP(statut='f',typ='TXM',defaut="1.E-5"),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-EXEC_LOGICIEL=PROC(nom="EXEC_LOGICIEL",op= 183,
- fr="Exécute un logiciel ou une commande système depuis Aster",
- UIinfo={"groupes":("Impression",)},
- LOGICIEL =SIMP(statut='f',typ='TXM' ),
- ARGUMENT =FACT(statut='f',max='**',
- NOM_PARA =SIMP(statut='f',typ='TXM' ),
- ),
-) ;
-#& MODIF COMMANDE DATE 14/10/2005 AUTEUR CIBHHLV L.VIVAN
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-def extr_mode_prod(FILTRE_MODE,**args):
- vale=FILTRE_MODE[0]['MODE']
- if AsType(vale) == mode_meca : return mode_meca
- if AsType(vale) == mode_meca_c : return mode_meca_c
- if AsType(vale) == mode_gene : return mode_gene
- raise AsException("type de concept resultat non prevu")
-
-EXTR_MODE=OPER(nom="EXTR_MODE",op= 168,sd_prod=extr_mode_prod,
- reentrant='n',fr="Extraire séléctivement des modes des structures de données modales",
- UIinfo={"groupes":("Résolution",)},
- FILTRE_MODE =FACT(statut='o',max='**',
- regles=(UN_PARMI('TOUT_ORDRE','NUME_ORDRE','NUME_MODE','NUME_MODE_EXCLU','FREQ_MIN','CRIT_EXTR',),),
- MODE =SIMP(statut='o',typ=(mode_meca,mode_meca_c,mode_gene ) ),
- TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI","NON") ),
- NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
- NUME_MODE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
- NUME_MODE_EXCLU =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
- FREQ_MIN =SIMP(statut='f',typ='R' ),
- CRIT_EXTR =SIMP(statut='f',typ='TXM',into=("MASS_EFFE_UN","MASS_GENE") ),
- b_freq_min =BLOC(condition = "FREQ_MIN != None",
- FREQ_MAX =SIMP(statut='o',typ='R' ),
- PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ),
- ),
- b_crit_extr =BLOC(condition = "CRIT_EXTR != None",
- regles=(AU_MOINS_UN('SEUIL','SEUIL_X','SEUIL_Y','SEUIL_Z'),),
- SEUIL =SIMP(statut='f',typ='R'),
- SEUIL_X =SIMP(statut='f',typ='R'),
- SEUIL_Y =SIMP(statut='f',typ='R'),
- SEUIL_Z =SIMP(statut='f',typ='R'),
- ),
- ),
- TITRE =SIMP(statut='f',typ='TXM',max='**'),
- IMPRESSION =FACT(statut='f',
- CUMUL =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
- CRIT_EXTR =SIMP(statut='f',typ='TXM',defaut="MASS_EFFE_UN",into=("MASS_EFFE_UN","MASS_GENE") ),
- ),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-def extr_resu_prod(RESULTAT,**args):
- if AsType(RESULTAT) == evol_elas : return evol_elas
- if AsType(RESULTAT) == evol_noli : return evol_noli
- if AsType(RESULTAT) == evol_ther : return evol_ther
- if AsType(RESULTAT) == dyna_trans : return dyna_trans
- if AsType(RESULTAT) == dyna_harmo : return dyna_harmo
- if AsType(RESULTAT) == acou_harmo : return acou_harmo
- if AsType(RESULTAT) == mode_meca : return mode_meca
- if AsType(RESULTAT) == mode_acou : return mode_acou
- if AsType(RESULTAT) == mode_stat : return mode_stat
- if AsType(mode_stat) == mode_stat_depl : return mode_stat_depl
- if AsType(mode_stat) == mode_stat_acce : return mode_stat_acce
- if AsType(mode_stat) == mode_stat_forc : return mode_stat_forc
- if AsType(RESULTAT) == mult_elas : return mult_elas
- if AsType(RESULTAT) == fourier_elas : return fourier_elas
- raise AsException("type de concept resultat non prevu")
-
-EXTR_RESU=OPER(nom="EXTR_RESU",op=176,sd_prod=extr_resu_prod,reentrant='f',
- UIinfo={"groupes":("Résultats et champs",)},
- fr="Extraire des champs au sein d'une SD Résultat",
- RESULTAT =SIMP(statut='o',typ=(evol_elas,dyna_trans,dyna_harmo,acou_harmo,mode_meca,
- mode_acou,mode_stat_depl,mode_stat_acce,mode_stat_forc,evol_ther,evol_noli,
- mult_elas,fourier_elas ) ),
-
- SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**',
- fr="Liste des paramètres de sensibilité.",
- ang="List of sensitivity parameters"),
-
- ARCHIVAGE =FACT(statut='f',
- regles=( UN_PARMI('NUME_ORDRE', 'INST', 'FREQ', 'NUME_MODE',
- 'NOEUD_CMP', 'LIST_INST', 'LIST_FREQ', 'LIST_ORDRE',
- 'NOM_CAS', 'LIST_ARCH', 'PAS_ARCH' ),
- EXCLUS( 'CHAM_EXCLU','NOM_CHAM' ), ),
- CHAM_EXCLU =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'),
- NOM_CHAM =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',into=C_NOM_CHAM_INTO()),
- PRECISION =SIMP(statut='f',typ='R',defaut=1.E-3 ),
- CRITERE =SIMP(statut='f',typ='TXM',into=("RELATIF","ABSOLU"),defaut="RELATIF"),
- LIST_ARCH =SIMP(statut='f',typ=listis_sdaster),
- PAS_ARCH =SIMP(statut='f',typ='I'),
- NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
- LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster),
- INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
- LIST_INST =SIMP(statut='f',typ=listr8_sdaster),
- FREQ =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
- LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster),
- NUME_MODE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
- NOEUD_CMP =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'),
- NOM_CAS =SIMP(statut='f',typ='TXM'),
- ),
-
- TITRE =SIMP(statut='f',typ='TXM',max='**' ),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2003 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-def extr_table_prod(TYPE_RESU,**args):
- if TYPE_RESU == "MATR_ASSE_GENE_R" : return matr_asse_gene_r
- raise AsException("type de concept resultat non prevu")
-
-EXTR_TABLE=OPER(nom="EXTR_TABLE",op=173,sd_prod=extr_table_prod,reentrant='n',
- UIinfo={"groupes":("Résultats et champs",)},
- fr="Extraire d'une table la matrice de masse généralisée assemblée",
- TYPE_RESU =SIMP(statut='o',typ='TXM',into=("MATR_ASSE_GENE_R",) ),
-
- TABLE =SIMP(statut='o',typ=table_sdaster),
-
- NOM_PARA =SIMP(statut='o',typ='TXM'),
-
- FILTRE =FACT(statut='f',min=1,max='**',
- NOM_PARA =SIMP(statut='o',typ='TXM'),
- CRIT_COMP =SIMP(statut='f',typ='TXM',defaut="EQ",
- into=("EQ","LT","GT","NE","LE","GE","VIDE",
- "NON_VIDE","MAXI","ABS_MAXI","MINI","ABS_MINI") ),
- b_vale =BLOC(condition = "(CRIT_COMP in ('EQ','NE','GT','LT','GE','LE'))",
- regles=(UN_PARMI('VALE','VALE_I','VALE_K','VALE_C',),),
- VALE =SIMP(statut='f',typ='R'),
- VALE_I =SIMP(statut='f',typ='I'),
- VALE_C =SIMP(statut='f',typ='C'),
- VALE_K =SIMP(statut='f',typ='TXM'),),
-
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
- PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3 ),
- ),
-
- TITRE =SIMP(statut='f',typ='TXM',max='**' ),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-def fact_grad_prod(MATR_ASSE,**args):
- if AsType(MATR_ASSE) == matr_asse_depl_r : return matr_asse_depl_r
- if AsType(MATR_ASSE) == matr_asse_temp_r : return matr_asse_temp_r
- if AsType(MATR_ASSE) == matr_asse_pres_r : return matr_asse_pres_r
- raise AsException("type de concept resultat non prevu")
-
-FACT_GRAD=OPER(nom="FACT_GRAD",op=85,sd_prod=fact_grad_prod,
- UIinfo={"groupes":("Résolution",)},
- fr="Construire une matrice de préconditionnement pour une résolution par gradient conjugué",
- reentrant='n',
- MATR_ASSE =SIMP(statut='o',
- typ=(matr_asse_depl_r,matr_asse_temp_r,
- matr_asse_pres_r) ),
- PRE_COND =SIMP(statut='f',typ='TXM',defaut="LDLT_INC",into=("LDLT_INC",) ),
- NIVE_REMPLISSAGE=SIMP(statut='f',typ='I',defaut= 0 ),
- INFO =SIMP(statut='f',typ='I',into=(1,2) ),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE VABHHTS J.PELLET
-def fact_ldlt_prod(MATR_ASSE,**args):
- if AsType(MATR_ASSE) == matr_asse_depl_r : return matr_asse_depl_r
- if AsType(MATR_ASSE) == matr_asse_depl_c : return matr_asse_depl_c
- if AsType(MATR_ASSE) == matr_asse_temp_r : return matr_asse_temp_r
- if AsType(MATR_ASSE) == matr_asse_temp_c : return matr_asse_temp_c
- if AsType(MATR_ASSE) == matr_asse_pres_r : return matr_asse_pres_r
- if AsType(MATR_ASSE) == matr_asse_pres_c : return matr_asse_pres_c
- raise AsException("type de concept resultat non prevu")
-
-FACT_LDLT=OPER(nom="FACT_LDLT",op=14,sd_prod=fact_ldlt_prod,
- fr="Factoriser une matrice assemblée en un produit de deux matrices triangulaires",
- reentrant='f',
- UIinfo={"groupes":("Résolution",)},
- regles=(EXCLUS('BLOC_DEBUT','DDL_DEBUT'),
- EXCLUS('BLOC_FIN','DDL_FIN'),),
- MATR_ASSE =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_depl_c,matr_asse_temp_r,
- matr_asse_temp_c,matr_asse_pres_r,matr_asse_pres_c) ),
- STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
- NPREC =SIMP(statut='f',typ='I',defaut=8,val_min=0,),
- PRE_COND =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SANS","DIAG") ),
- BLOC_DEBUT =SIMP(statut='f',typ='I',val_min=1,),
- DDL_DEBUT =SIMP(statut='f',typ='I',val_min=1,),
- BLOC_FIN =SIMP(statut='f',typ='I',val_min=1,),
- DDL_FIN =SIMP(statut='f',typ='I',val_min=1,),
-#
- EPS =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
-
-# mots clés pour solveur MUMPS :
- TYPE_RESOL =SIMP(statut='f',typ='TXM',defaut='AUTO',into=('NONSYM','SYMGEN','SYMDEF','AUTO')),
- PCENT_PIVOT =SIMP(statut='f',typ='I',defaut=20,),
-
- TITRE =SIMP(statut='f',typ='TXM',max='**'),
- INFO =SIMP(statut='f',typ='I',into=(1,2) ),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-FIN=PROC(nom="FIN",op=9999,repetable='n',fr="Fin d'une étude, fin du travail engagé par une des commandes DEBUT ou POURSUITE",
- UIinfo={"groupes":("Gestion du travail",)},
- FORMAT_HDF =SIMP(fr="sauvegarde de la base GLOBALE au format HDF",statut='f',
- typ='TXM',defaut="NON",into=("OUI","NON",) ),
- RETASSAGE =SIMP(fr="provoque le retassage de la base GLOBALE",
- statut='f',typ='TXM',defaut="NON",into=("OUI","NON",) ),
- PERFORMANCE =SIMP(fr="provoque l'impression d'un résumé des mesures de temps ",
- statut='f',typ='TXM',defaut="OUI",into=("OUI","NON",) ),
- INFO_RESU =SIMP(fr="provoque l'impression des informations sur les structures de données",
- statut='f',typ='TXM',defaut="OUI",into=("OUI","NON",) ),
- UNITE =SIMP(statut='f',typ='I',defaut=6),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-FONC_FLUI_STRU=OPER(nom="FONC_FLUI_STRU",op= 169,sd_prod=fonction_sdaster,
- reentrant='n',fr="Crée une fonction constante paramètrée par l'abscisse curviligne",
- UIinfo={"groupes":("Fonction",)},
- TYPE_FLUI_STRU =SIMP(statut='o',typ=(type_flui_stru) ),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-def form_pyth_ops(self,d):
- import types,string
- NOM_PARA=self.etape['NOM_PARA']
- VALE =self.etape['VALE']
- if type(NOM_PARA) not in (types.ListType,types.TupleType) : NOM_PARA=[NOM_PARA,]
- if self.sd==None : return
- texte=string.join(VALE.splitlines())
-
- self.sd.setFormule(NOM_PARA,string.strip(texte))
-
-FORMULE=FORM(nom="FORMULE",op_init=form_pyth_ops,op=-5,
- sd_prod=formule,UIinfo={"groupes":("Fonction",)},
- fr="Définit une formule réelle à partir de son expression mathématique",
- VALE =SIMP(statut='f',typ='TXM'),
- NOM_PARA =SIMP(statut='o',typ='TXM',max='**'),
-);
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE CAMBIER S.CAMBIER
-GENE_FONC_ALEA=OPER(nom="GENE_FONC_ALEA",op= 118,sd_prod=table_sdaster,
- fr="Génération de la fonction temporelle à partir d une matrice interspectrale",
- reentrant='n',
- UIinfo={"groupes":("Fonction",)},
- INTE_SPEC =SIMP(statut='o',typ=tabl_intsp ),
- NUME_VITE_FLUI =SIMP(statut='f',typ='I' ),
- INTERPOL =SIMP(statut='f',typ='TXM',defaut="OUI",into=("NON","OUI") ),
- b_interpol_oui =BLOC(condition = "INTERPOL == 'OUI' ",fr="Parametres cas interpolation autorisee",
- DUREE_TIRAGE =SIMP(statut='f',typ='R' ),
- FREQ_INIT =SIMP(statut='f',typ='R' ),
- FREQ_FIN =SIMP(statut='f',typ='R' ),
- ),
- NB_POIN =SIMP(statut='f',typ='I'),
- NB_TIRAGE =SIMP(statut='f',typ='I',defaut= 1 ),
- INIT_ALEA =SIMP(statut='f',typ='I'),
- INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
- TITRE =SIMP(statut='f',typ='TXM',max='**'),
-) ;
-#& MODIF COMMANDE DATE 11/07/2005 AUTEUR CAMBIER S.CAMBIER
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE CAMBIER S.CAMBIER
-def gene_matr_alea_prod(MATR_MOYEN,**args ):
- if (AsType(MATR_MOYEN) == matr_asse_gene_r ) : return matr_asse_gene_r
- if (AsType(MATR_MOYEN) == macr_elem_dyna) : return macr_elem_dyna
- raise AsException("type de concept resultat non prevu")
-
-GENE_MATR_ALEA=OPER(nom="GENE_MATR_ALEA",op= 27,
-#sd_prod=matr_asse_gene_r,
-sd_prod=gene_matr_alea_prod,
- fr="Générer une réalisation d'une matrice aléatoire réelle sym. déf. positive ou d'un macro élément dynamique",
- reentrant='n',
- UIinfo={"groupes":("Matrice",)},
- MATR_MOYEN = SIMP(statut='o', typ=(matr_asse_gene_r,macr_elem_dyna)),
-
-# cas matrice generalisee
- b_matr =BLOC( condition = "AsType(MATR_MOYEN) in (matr_asse_gene_r,)",
- COEF_VAR = SIMP(statut='f', typ='R', defaut=0.1, val_min=0.E+0 ,
- fr="coefficient de variation de la matrice a generer" ),
- ),
-# cas macr_elem_dyna
- b_macr =BLOC( condition = "AsType(MATR_MOYEN) in (macr_elem_dyna,)",
- fr="cas macr_elem_dyna (sous-structuratio)",
- COEF_VAR_RIGI = SIMP(statut='f', typ='R', defaut=0.1, val_min=0.E+0 ,
- fr="coefficient de variation de la matrice de raideur" ),
- COEF_VAR_MASS = SIMP(statut='f', typ='R', defaut=0., val_min=0.E+0 ,
- fr="coefficient de variation de la matrice de masse" ),
- COEF_VAR_AMOR = SIMP(statut='f', typ='R', defaut=0., val_min=0.E+0 ,
- fr="coefficient de variation de la matrice d'amortissement" ),),
-
- INIT_ALEA =SIMP(statut='f',typ='I'),
-) ;
-
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE CAMBIER S.CAMBIER
-GENE_VARI_ALEA=OPER(nom="GENE_VARI_ALEA",op= 28,sd_prod=table_sdaster,
- fr="Générer une réalisation d'une variable aléatoire réelle de loi de probabilité donnée (Gamma ou Exponentielle)",
- reentrant='n',
- UIinfo={"groupes":("Fonction",)},
- TYPE = SIMP(statut='f', typ='TXM', into=("EXP_TRONQUEE", "EXPONENTIELLE", "GAMMA"), defaut="GAMMA"),
- b_gamma =BLOC(condition = "TYPE == 'GAMMA' ",fr="Parametres loi gamma",
- VALE_MOY = SIMP(statut='f', typ='R', defaut=1.),
- BORNE_INF = SIMP(statut='f', typ='R', defaut=0.),
- COEF_VAR = SIMP(statut='f', typ='R', defaut=0.1),
- ),
- b_expo =BLOC(condition = "TYPE == 'EXPONENTIELLE' ",fr="Parametres loi exponentielle",
- VALE_MOY = SIMP(statut='f', typ='R', defaut=0.),
- BORNE_INF = SIMP(statut='f', typ='R', defaut=-1.),
- ),
- b_expo_tronq =BLOC(condition = "TYPE == 'EXP_TRONQUEE' ",fr="Parametres loi exponentielle tronquee",
- VALE_MOY = SIMP(statut='f', typ='R', defaut=0.),
- BORNE_INF = SIMP(statut='f', typ='R', defaut=-1.),
- BORNE_SUP = SIMP(statut='f', typ='R', defaut=1.),
- COEF_VAR = SIMP(statut='f', typ='R', defaut=0.1),
- ),
- INIT_ALEA =SIMP(statut='f',typ='I'),
-) ;
-
-#& MODIF COMMANDE DATE 23/08/2004 AUTEUR CIBHHLV L.VIVAN
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-IMPR_CHARGE=PROC(nom="IMPR_CHARGE",op= 158,
- fr="Impression des charges mécaniques de type ddl imposés et relations linéaires entre les ddl",
- UIinfo={"groupes":("Fonction",)},
- UNITE =SIMP(statut='f',typ='I',defaut=30),
- FORMAT =SIMP(statut='f',typ='TXM',defaut="IDEAS",into=("IDEAS",) ),
- VERSION =SIMP(statut='f',typ='I',defaut= 5,into=( 5 ,) ),
- CHARGE =SIMP(statut='o',typ=char_meca,validators=NoRepeat(),max='**', ),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-IMPR_CLASSI=PROC(nom="IMPR_CLASSI",op= 114,
- UIinfo={"groupes":("Fonction",)},fr="Ecrit le résultat d'une analyse modale au format du code CLASSI",
- regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','FREQ','NUME_MODE','LIST_FREQ',
- 'LIST_ORDRE' ),),
- UNITE_CLASSI =SIMP(statut='o',typ='I' ),
- MODE_MECA =SIMP(statut='o',typ=mode_meca ),
- TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
- LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster ),
- NUME_MODE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
- FREQ =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
- LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster ),
- b_prec_crit =BLOC(condition = "LIST_FREQ != None or FREQ != None",
- PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",
- into=("RELATIF","ABSOLU") ),
- ),
- IMPRESSION =FACT(statut='f',max='**',
- regles=(UN_PARMI('NOEUD','GROUP_NO', ),),
- NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- GROUP_NO =SIMP(statut='f',typ=grno ,validators=NoRepeat(),max='**'),
- NOM_CMP =SIMP(statut='f',typ='TXM',max='**'),
- ),
- AMOR =SIMP(statut='o',typ='R',max='**'),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE VABHHTS J.PELLET
-IMPR_CO=PROC(nom="IMPR_CO",op=17,
- UIinfo={"groupes":("Impression",)},
- fr="Imprimer tous les objets JEVEUX qui constituent un concept utilisateur existant (pour développeur)",
- regles=(UN_PARMI('CO','CHAINE', ),),
- UNITE =SIMP(statut='f',typ='I',defaut=8),
- NIVEAU =SIMP(statut='f',typ='I',defaut=2,into=(0,1,2) ),
- ATTRIBUT =SIMP(statut='f',typ='TXM',defaut="NON",into=("NON","OUI") ),
- CONTENU =SIMP(statut='f',typ='TXM',defaut="OUI",into=("NON","OUI") ),
- BASE =SIMP(statut='f',typ='TXM',defaut="G",into=("","G","V","L") ),
- CO =SIMP(statut='f',typ=assd,validators=NoRepeat(),max='**'),
- CHAINE =SIMP(statut='f',typ='TXM'),
- POSITION =SIMP(statut='f',typ='I',defaut=1),
-) ;
-#& MODIF COMMANDE DATE 04/07/2005 AUTEUR GNICOLAS G.NICOLAS
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE GNICOLAS G.NICOLAS
-IMPR_FICO_HOMA=PROC(nom="IMPR_FICO_HOMA",op= 189, docu="U7.04.01-b",
- UIinfo={"groupes":("Fonction",)},
- fr="Imprime le fichier de configuration de HOMARD.",
- ang="Writes the configuration file for HOMARD.",
-#
-# 1. Le niveau d'information
-#
- INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
-#
-# 2. Langue des messages issus de HOMARD
-#
- LANGUE =SIMP(statut='f',typ='TXM',defaut="FRANCAIS",
- into=("FRANCAIS","FRENCH","ANGLAIS","ENGLISH",),
- fr="Langue des messages issus de HOMARD.",
- ang="Language for HOMARD messages." ),
-#
-# 3. Le nom local du fichier de configuration HOMARD
-#
- UNITE_CONF =SIMP(statut='o',typ='I'),
-#
-# 4. Le nom local du fichier de données HOMARD
-#
- UNITE_DONN =SIMP(statut='f',typ='I'),
-#
-# 5. Gestion des éléments autres que des simplexes
-# 0 : autres elements refuses (defaut)
-# 1 : raffinement sur les simplexes, mais autres acceptes
-# 2 : tous
-#
- NON_SIMPLEXE = SIMP(statut='f',typ='I',defaut=0,into=(0,1,2),
- fr="Type d'éléments acceptés.",
- ang="Type of authorized elements." ),
-#
-# 6. Le type de traitement :
-#
- TRAITEMENT =FACT(statut='o',
-#
-# 6.1. TROIS CHOIX EXCLUSIFS :
-#
-# A. ADAPTATION PAR UN INDICATEUR D'ERREUR, AVEC TROIS VARIANTES :
-# . RAFFINEMENT ET DERAFFINEMENT
-# . RAFFINEMENT SEUL
-# . DERAFFINEMENT SEUL
-# B. ADAPTATION UNIFORME, AVEC DEUX VARIANTES :
-# . RAFFINEMENT SEUL
-# . DERAFFINEMENT SEUL
-# . RIEN : LE MAILLAGE EST LE MEME A LA SORTIE ET A L'ENTREE
-# C. INFORMATION SUR UN MAILLAGE
-#
- regles=( UN_PARMI('ADAPTATION','UNIFORME','INFORMATION'),),
- ADAPTATION =SIMP(statut='f',typ='TXM',
- fr="Adaptation libre",
- ang="Free adaptation",
- into=("RAFFINEMENT","DERAFFINEMENT","RAFF_DERA") ),
- UNIFORME =SIMP(statut='f',typ='TXM',
- fr="Adaptation uniforme",
- ang="Uniforme adaptation",
- into=("RAFFINEMENT","DERAFFINEMENT","RIEN") ),
- INFORMATION =SIMP(statut='f',typ='TXM',
- fr="Information sur un maillage",
- ang="Information on a mesh",
- into=("OUI",) ),
-#
-# 6.2. LES CONTRAINTES :
-#
-# 6.2.1. POUR DE L'ADAPTATION LIBRE, IL FAUT :
-# A. LE NUMERO D'ITERATION DU MAILLAGE DE DEPART
-# B. LE NOM MED DU MAILLAGE D'ENTREE
-# C. LE NOM MED DE L'INDICATEUR D'ERREUR
-# D. LE NUMERO D'ITERATION DU MAILLAGE DE DEPART
-# E. LA MISE A JOUR DE SOLUTION
-# F. LE NOM MED DU MAILLAGE DE SORTIE
-# REMARQUE : IL FAUT DES CRITERES, MAIS ON NE SAIT PAS LESQUELS
-#
-# 6.2.2. POUR DE L'ADAPTATION UNIFORME
-# IL FAUT :
-# A. LE NUMERO D'ITERATION DU MAILLAGE DE DEPART
-# B. LE NOM MED DU MAILLAGE DE SORTIE
-# IL NE FAUT PAS :
-# A. LE NOM MED DE L'INDICATEUR D'ERREUR
-# B. LE NOM DE LA COMPOSANTE DE L'INDICATEUR D'ERREUR
-# C. LES CRITERES
-# REMARQUE : A L'ITERATION 0, OU AUX ITERATIONS SUIVANTES SI MAJ DE SOLUTION,
-# IL FAUT LE NOM MED DU MAILLAGE D'ENTREE
-#
-# 6.2.3. POUR DE L'INFORMATION :
-# IL FAUT :
-# A. LE NOM MED DU MAILLAGE D'ENTREE
-# IL NE FAUT PAS :
-# A. LE NOM MED DE L'INDICATEUR D'ERREUR
-# B. LE NOM DE LA COMPOSANTE DE L'INDICATEUR D'ERREUR
-# C. LES CRITERES
-# D. LE NUMERO D'ITERATION DU MAILLAGE DE DEPART
-# E. LA MISE A JOUR DE SOLUTION
-#
- b_maillage_initial =BLOC(condition = "( INFORMATION != None ) or ( ADAPTATION != None ) ",
- fr="Nom MED du maillage en entrée",
- ang="MED name of the in-mesh",
- NOM_MED_MAILLAGE_N =SIMP(statut='o',typ='TXM',),
- ) ,
-#
- b_maillage_initial_uniforme =BLOC(condition = "( UNIFORME != None ) ",
- fr="Nom MED du maillage en entrée",
- ang="MED name of the in-mesh",
- NOM_MED_MAILLAGE_N =SIMP(statut='f',typ='TXM',),
- ) ,
-#
- b_iteration =BLOC(condition = "( UNIFORME != None ) or ( ADAPTATION != None ) ",
- fr="Nom MED du maillage en sortie, numero d'iteration",
- ang="MED name of the out-mesh, iteration rank",
- NITER =SIMP(statut='o',typ='I',
- fr="Numéro d'itération.",
- ang="Iteration number." ),
- NOM_MED_MAILLAGE_NP1 =SIMP(statut='o',typ='TXM',
- fr="Nom MED du maillage en sortie",
- ang="MED name of the out-mesh" ),
- ) ,
-#
- b_indicateur_d_erreur =BLOC(condition = "ADAPTATION != None",
- fr="Indicateur d'erreur",
- ang="Error indicator",
- regles=(EXCLUS('NUME_ORDRE','INST'),
- EXCLUS('NUME_ORDRE','RESULTAT'),
- PRESENT_PRESENT('RESULTAT','NOM_CHAM'),),
- NOM_MED =SIMP(statut='o',typ='TXM',
- fr="Nom MED de l'indicateur d'erreur.",
- ang="MED name of error indicator.",),
- COMPOSANTE =SIMP(statut='o',typ='TXM',
- fr="Nom de la composante de l'indicateur d'erreur retenue.",
- ang="Name of the selected component of the error indicator.",),
- NUME_ORDRE =SIMP(statut='f',typ='I',
- fr="Numero d'ordre de l'indicateur.",
- ang="Rank number of the error indicator.",),
- INST =SIMP(statut='f',typ='R',
- fr="Instant de l'indicateur.",
- ang="Instant of the error indicator.",),
- b_precision =BLOC(condition="(INST != None)",
- PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3,
- fr="Précision sur le choix de l'instant associé",
- ang="Accuracy over instant choice" ),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU"),
- fr="Critère de précision sur le choix de l'instant associé",
- ang="Accuracy criterium over instant choice" ),),
- RESULTAT =SIMP(statut='f',typ=(evol_elas,evol_noli,evol_ther),
- fr="Concept contenant l'indicateur.",
- ang="Conceipt wich contains the error indicator.",),
- NOM_CHAM =SIMP(statut='f',typ='TXM',
- fr="Nom du champ dans le résultat de l'indicateur.",
- ang="Name of the field of the error indicator.",),
- ) ,
-#
- b_critere_de_raffinement =BLOC( condition = "( ADAPTATION == 'RAFF_DERA' ) or ( ADAPTATION == 'RAFFINEMENT' )" ,
- fr="Critère de raffinement.",
- ang="Refinement threshold.",
- regles=(UN_PARMI ( 'CRIT_RAFF_ABS', 'CRIT_RAFF_REL', 'CRIT_RAFF_PE' ),),
- CRIT_RAFF_ABS =SIMP(statut='f',typ='R',
- fr="Critère absolu",
- ang="Absolute threshold" ),
- CRIT_RAFF_REL =SIMP(statut='f',typ='R',
- fr="Critère relatif",
- ang="Relative threshold" ),
- CRIT_RAFF_PE =SIMP(statut='f',typ='R',
- fr="Pourcentage d'éléments",
- ang="Percentage of elements" ),
- ) ,
-#
- b_critere_de_deraffinement =BLOC ( condition = "( ADAPTATION == 'RAFF_DERA' ) or ( ADAPTATION == 'DERAFFINEMENT' )" ,
- fr="Critère de déraffinement.",
- ang="Unrefinement threshold.",
- regles=(UN_PARMI ( 'CRIT_DERA_ABS', 'CRIT_DERA_REL', 'CRIT_DERA_PE' ),),
- CRIT_DERA_ABS =SIMP(statut='f',typ='R' ,
- fr="Critère absolu",
- ang="Absolute threshold" ),
- CRIT_DERA_REL =SIMP(statut='f',typ='R',
- fr="Critère relatif",
- ang="Relative threshold" ),
- CRIT_DERA_PE =SIMP(statut='f',typ='R',
- fr="Pourcentage d'éléments",
- ang="Percentage of elements" ),
- ) ,
-#
- b_niveau_maximum =BLOC ( condition = " ( ADAPTATION == 'RAFF_DERA' ) or ( ADAPTATION == 'RAFFINEMENT' ) or \
- ( UNIFORME == 'RAFFINEMENT' )" ,
- NIVE_MAX =SIMP(statut='f',typ='I',
- fr="Niveau maximum de profondeur de raffinement",
- ang="Maximum level for refinement"),
- ) ,
-#
- b_niveau_minimum =BLOC ( condition = " ( ADAPTATION == 'RAFF_DERA' ) or ( ADAPTATION == 'DERAFFINEMENT' ) or \
- ( UNIFORME == 'DERAFFINEMENT' )" ,
- NIVE_MIN =SIMP(statut='f',typ='I',
- fr="Niveau minimum de déraffinement",
- ang="Minimum level for unrefinement" ),
- ) ,
-#
-# 6.3. Le suivi de frontiere eventuel :
-#
- NOM_MED_MAILLAGE_FRONTIERE =SIMP(statut='f',typ='TXM',
- fr="Nom MED du maillage de la frontiere à suivre",
- ang="MED name of the boundary mesh" ),
-#
- b_frontiere_1 =BLOC ( condition = "NOM_MED_MAILLAGE_FRONTIERE != None" ,
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**',
- fr="Groupes définissant la frontière",
- ang="Groups which define the boundary" ),
- ) ,
-#
- ),
-#
-# 7. Mise à jour de champs sur le nouveau maillage
-#
- MAJ_CHAM =FACT(statut='f',max='**',
- fr="Mise à jour de champs sur le nouveau maillage.",
- ang="Updating of fields over the new mesh.",
- regles=(EXCLUS('NUME_ORDRE','INST'),
- EXCLUS('NUME_ORDRE','RESULTAT'),
- PRESENT_PRESENT('RESULTAT','NOM_CHAM'),),
- NOM_MED =SIMP(statut='o',typ='TXM',
- fr="Nom MED du champ à mettre à jour.",
- ang="MED name of field.",),
- NUME_ORDRE =SIMP(statut='f',typ='I',
- fr="Numero d'ordre du champ à mettre à jour.",
- ang="Rank number of field.",),
- INST =SIMP(statut='f',typ='R',
- fr="Instant du champ à mettre à jour.",
- ang="Instant of field.",),
- b_precision =BLOC(condition="(INST != None)",
- PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3,
- fr="Précision sur le choix de l'instant associé",
- ang="Accuracy over instant choice" ),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU"),
- fr="Critère de précision sur le choix de l'instant associé",
- ang="Accuracy criterium over instant choice" ),),
- RESULTAT =SIMP(statut='f',typ=(evol_elas,evol_noli,evol_ther),
- fr="Concept contenant le champ à mettre à jour.",
- ang="Conceipt wich contains the field.",),
- NOM_CHAM =SIMP(statut='f',typ='TXM',
- fr="Nom du champ dans le résultat du champ à mettre à jour.",
- ang="Name of the field.",),
- ),
-#
-# 8. L'ANALYSE DU MAILLAGE
-#
- ANALYSE =FACT(statut='f',
- fr="Analyse du maillage.",
- ang="Mesh analysis.",
-#
-# 5 CHOIX NON EXCLUSIFS, AVEC DEUX VARIANTES (OUI/NON) :
-# A. NOMBRE DES ELEMENTS
-# B. QUALITE DES ELEMENTS
-# C. INTERPENETRATION DES ELEMENTS
-# D. CONNEXITE DU MAILLAGE
-# E. TAILLE DES DIFFERENTS SOUS-DOMAINES
-#
- regles=(AU_MOINS_UN('NOMBRE','QUALITE','INTERPENETRATION','CONNEXITE','TAILLE'),),
-#
- NOMBRE =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON"),
- fr="Nombre de noeuds et éléments du maillage",
- ang="Number of nodes and elements in the mesh" ),
-#
- QUALITE =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON"),
- fr="Qualité du maillage",
- ang="Mesh quality" ),
-#
- INTERPENETRATION=SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON"),
- fr="Controle de la non interpénétration des éléments.",
- ang="Overlapping checking." ),
-#
- CONNEXITE =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON"),
- fr="Connexité du maillage.",
- ang="Mesh connexity." ),
-#
- TAILLE =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON"),
- fr="Tailles des sous-domaines du maillage.",
- ang="Sizes of mesh sub-domains." ),
-#
- ),
-#
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE MCOURTOI M.COURTOIS
-from Macro.impr_fonction_ops import impr_fonction_ops
-
-IMPR_FONCTION=MACRO(nom="IMPR_FONCTION",op=impr_fonction_ops,sd_prod=None,
- fr="Imprime le contenu d'objets de type fonction ou liste de réels dans un fichier destiné à un traceur de courbe",
- UIinfo={"groupes":("Fonction",)},
- FORMAT =SIMP(statut='o',typ='TXM',position='global',defaut='TABLEAU',
- into=("TABLEAU","AGRAF","XMGRACE",),),
- b_pilote = BLOC(condition = "FORMAT == 'XMGRACE'",
- fr="Mots-clés propres à XMGRACE",
- PILOTE =SIMP(statut='f',typ='TXM',defaut='',
- into=('','POSTSCRIPT','EPS','MIF','SVG','PNM','PNG','JPEG','PDF','INTERACTIF'),
- fr="Pilote de sortie, PNG/JPEG/PDF ne sont pas disponibles sur toutes les installations de xmgrace"),
- UNITE =SIMP(statut='f',typ='I',val_min=10,val_max=90,defaut=29,
- fr="Unité logique définissant le fichier (fort.N) dans lequel on écrit"),
- ),
- b_agraf = BLOC(condition = "FORMAT == 'AGRAF'",
- fr="Mots-clés propres à AGRAF",
- UNITE =SIMP(statut='o',typ='I',defaut=25,
- fr="Unité logique définissant le fichier (fort.N) dans lequel on écrit"),
- UNITE_DIGR =SIMP(statut='o',typ='I',defaut=26,
- fr="Unité logique définissant le fichier dans lequel on écrit les directives Agraf"),
- ),
- # unite pour TABLEAU dans le bloc de mise en forme spécifique
-
- COURBE =FACT(statut='o',max='**',fr="Définition de la fonction à tracer",
- regles=(UN_PARMI('FONCTION','LIST_RESU','FONC_X','ABSCISSE'),),
- FONCTION =SIMP(statut='f',typ=(fonction_sdaster, formule, fonction_c, nappe_sdaster),
- fr="Fonction réelle ou complexe", ),
- LIST_RESU =SIMP(statut='f',typ=listr8_sdaster,
- fr="Liste des ordonnees d'une fonction réelle définie par deux listes", ),
- FONC_X =SIMP(statut='f',typ=(fonction_sdaster,formule),
- fr="Fonction abscisses d'une fonction paramétrique",),
- ABSCISSE =SIMP(statut='f',typ='R',max='**',
- fr="Valeurs des abscisses", ),
- b_fonction =BLOC(condition = "FONCTION != None",
- LIST_PARA =SIMP(statut='f',typ=listr8_sdaster ),
- ),
- b_fonction_c =BLOC(condition = "AsType(FONCTION) == fonction_c",
- fr="Fonction complexe définie par le mot-clé fonction",
- PARTIE =SIMP(statut='f',typ='TXM',into=("REEL","IMAG") ),
- ),
- b_list_resu =BLOC(condition = "LIST_RESU != None",
- LIST_PARA =SIMP(statut='o',typ=listr8_sdaster ),
- ),
- b_fonc_x =BLOC(condition = "FONC_X != None",
- FONC_Y =SIMP(statut='o',typ=(fonction_sdaster,formule),fr="Fonction ordonnées d une fonction paramétrique" ),
- LIST_PARA =SIMP(statut='f',typ=listr8_sdaster ),
- ),
- b_vale_resu =BLOC(condition = "ABSCISSE != None",
- ORDONNEE =SIMP(statut='o',typ='R',max='**',
- fr="Valeurs des ordonnées"),
- ),
-
- # le bloc n'est pas activé (vide) car position n'est pas pris en compte
- b_forme =BLOC(condition = "FORMAT != 'TABLEAU'",
- fr="Données de mise en forme de la fonction (cf. doc)",
- ),
- LEGENDE =SIMP(statut='f',typ='TXM',
- fr="Légende associée à la fonction" ),
- STYLE =SIMP(statut='f',typ='I',val_min=0,
- fr="Style de la ligne représentant la fonction",),
- COULEUR =SIMP(statut='f',typ='I',val_min=0,
- fr="Couleur associée à la fonction",),
- MARQUEUR =SIMP(statut='f',typ='I',val_min=0,
- fr="Type du marqueur associé à la fonction",),
- FREQ_MARQUEUR =SIMP(statut='f',typ='I',defaut=0,
- fr="Fréquence d impression du marqueur associé à la fonction", ),
- # fin bloc b_forme
- TRI =SIMP(statut='f',typ='TXM',defaut="N",
- fr="Choix du tri effectué sur les abscisses ou sur les ordonnées",
- into=("N","X","Y","XY","YX") ),
- ),
- # Mise en page du tableau ou du graphique
- b_tableau = BLOC(condition = "FORMAT == 'TABLEAU'",
- fr="Mots-clés propres au format Tableau",
- UNITE =SIMP(statut='o',typ='I',defaut=8,
- fr="Unité logique définissant le fichier (fort.N) dans lequel on écrit"),
- TITRE =SIMP(statut='f',typ='TXM',
- fr="Titre associé au graphique" ),
- SOUS_TITRE =SIMP(statut='f',typ='TXM',
- fr="Sous-titre du graphique" ),
- SEPARATEUR =SIMP(statut='f',typ='TXM',defaut=' ',
- fr="Séparateur des colonnes du tableau (ex : ' ', ';'...)"),
- COMMENTAIRE =SIMP(statut='f',typ='TXM',defaut='#',
- fr="Caractère indiquant au traceur de fonction que la ligne peut etre ignorée"),
- DEBUT_LIGNE =SIMP(statut='f',typ='TXM',defaut='',
- fr="Caractère de debut de ligne"),
- FIN_LIGNE =SIMP(statut='f',typ='TXM',defaut='\n',
- fr="Caractère de fin de ligne"),
- ),
- b_graphique = BLOC(condition = "FORMAT != 'TABLEAU'",
- fr="Mise en page du graphique",
- TITRE =SIMP(statut='f',typ='TXM',
- fr="Titre associé au graphique" ),
- SOUS_TITRE =SIMP(statut='f',typ='TXM',
- fr="Sous-titre du graphique" ),
- BORNE_X =SIMP(statut='f',typ='R',min=2,max=2,
- fr="Intervalles de variation des abscisses"),
- BORNE_Y =SIMP(statut='f',typ='R',min=2,max=2,
- fr="Intervalles de variation des ordonnées"),
- ECHELLE_X =SIMP(statut='f',typ='TXM',defaut="LIN",into=("LIN","LOG"),
- fr="Type d'échelle pour les abscisses" ),
- ECHELLE_Y =SIMP(statut='f',typ='TXM',defaut="LIN",into=("LIN","LOG"),
- fr="Type d'échelle pour les ordonnées" ),
- GRILLE_X =SIMP(statut='f',typ='R',max=1,val_min=0.,
- fr="Pas du quadrillage vertical" ),
- GRILLE_Y =SIMP(statut='f',typ='R',max=1,val_min=0.,
- fr="Pas du quadrillage horizontal" ),
- LEGENDE_X =SIMP(statut='f',typ='TXM',
- fr="Légende associée à l'axe des abscisses" ),
- LEGENDE_Y =SIMP(statut='f',typ='TXM',
- fr="Légende associée à l'axe des ordonnées" ),
- ),
- INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
-) ;
-#& MODIF COMMANDE DATE 12/09/2005 AUTEUR NICOLAS O.NICOLAS
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-IMPR_GENE=PROC(nom="IMPR_GENE",op= 157,
- fr="Imprimer le résultat d'un calcul dynamique en variables généralisées au format RESULTAT",
- UIinfo={"groupes":("Impression",)},
- FORMAT =SIMP(statut='f',typ='TXM',defaut="RESULTAT",into=("RESULTAT",) ),
- UNITE =SIMP(statut='f',typ='I',defaut=8),
- GENE =FACT(statut='o',max='**',
- regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','FREQ','NUME_MODE',
- 'LIST_INST','LIST_FREQ','TOUT_MODE','TOUT_INST','LIST_ORDRE'),
- EXCLUS('TOUT_MODE','NUME_ORDRE','INST','FREQ','NUME_MODE',
- 'LIST_INST','LIST_FREQ','TOUT_ORDRE','TOUT_INST','LIST_ORDRE'),
- EXCLUS('TOUT_INST','NUME_ORDRE','INST','FREQ','NUME_MODE',
- 'LIST_INST','LIST_FREQ','TOUT_ORDRE','LIST_ORDRE'),
- EXCLUS('TOUT_CMP_GENE','NUME_CMP_GENE'),
- EXCLUS('TOUT_CHAM','NOM_CHAM'),
- EXCLUS('TOUT_PARA','NOM_PARA'),),
-# faut-il faire des blocs selon le type de RESU_GENE
- RESU_GENE =SIMP(statut='o',typ=(vect_asse_gene_r, tran_gene, mode_gene, harm_gene)),
- TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
- LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster ),
- INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
- LIST_INST =SIMP(statut='f',typ=listr8_sdaster ),
- TOUT_INST =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- FREQ =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
- LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster ),
- TOUT_MODE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- NUME_MODE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
- PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",
- into=("RELATIF","ABSOLU") ),
- TOUT_CMP_GENE =SIMP(statut='f',typ='TXM',into=("OUI","NON") ),
- NUME_CMP_GENE =SIMP(statut='f',typ='I',max='**'),
- TOUT_CHAM =SIMP(statut='f',typ='TXM',into=("OUI","NON") ),
- NOM_CHAM =SIMP(statut='f',typ='TXM',max='**'),
- TOUT_PARA =SIMP(statut='f',typ='TXM',into=("OUI","NON") ),
- NOM_PARA =SIMP(statut='f',typ='TXM',max='**'),
- SOUS_TITRE =SIMP(statut='f',typ='TXM',max='**'),
- INFO_CMP_GENE =SIMP(statut='f',typ='TXM',into=("OUI","NON") ),
- INFO_GENE =SIMP(statut='f',typ='TXM',into=("OUI","NON") ),
- ),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-IMPR_JEVEUX=PROC(nom="IMPR_JEVEUX",op=16,
- UIinfo={"groupes":("Impression",)},
- fr="Imprimer le contenu des objets créés par JEVEUX (pour développeur)",
- ENTITE =SIMP(fr="choix de l'observation",statut='o',typ='TXM',
- into=("DISQUE","MEMOIRE","REPERTOIRE",
- "OBJET","ATTRIBUT","SYSTEME") ),
- b_objet =BLOC(condition = "(ENTITE=='OBJET')",
- NOMOBJ =SIMP(fr="nom d'objet",statut='f',typ='TXM' ),
- NUMOC =SIMP(fr="numéro d objet de collection",statut='f',typ='I' ),
- NOMOC =SIMP(fr="nom d'objet de collection",statut='f',typ='TXM' ),
- ),
- b_attribut =BLOC(condition = "(ENTITE=='ATTRIBUT')",
- NOMOBJ =SIMP(fr="nom de collection",statut='f',typ='TXM' ),
- NOMATR =SIMP(fr="nom d attribut de collection",statut='f',typ='TXM',
- into=('$$DESO','$$IADD','$$IADM','$$NOM','$$LONG',
- '$$LONO','$$LUTI','$$NUM') ),
- ),
- b_systeme =BLOC(condition = "(ENTITE=='SYSTEME')",
- CLASSE =SIMP(statut='o',typ='TXM',into=('G','V','L') ),
- NOMATR =SIMP(fr="nom d attribut systeme",statut='f',typ='TXM',
- into=('$$CARA','$$IADD','$$GENR','$$TYPE','$$MARQ',
- '$$DOCU','$$ORIG','$$RNOM','$$LTYP','$$LONG',
- '$$LONO','$$DATE','$$LUTI','$$HCOD','$$INDX',
- '$$TLEC','$$TECR','$$IADM','$$ACCE','$$USADI') ),
- ),
- b_repertoire =BLOC(condition = "(ENTITE=='REPERTOIRE')",
- CLASSE =SIMP(statut='f',typ='TXM',into=('G','V','L',' '),defaut=' '),
- ),
- b_disque =BLOC(condition = "(ENTITE=='DISQUE')",
- CLASSE =SIMP(statut='f',typ='TXM' ,into=('G','V','L',' '),defaut=' '),
- ),
- IMPRESSION =FACT(statut='f',
- NOM =SIMP(statut='f',typ='TXM' ),
- UNITE =SIMP(statut='f',typ='I'),
- ),
- COMMENTAIRE =SIMP(statut='f',typ='TXM' ),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-IMPR_MACR_ELEM=PROC(nom="IMPR_MACR_ELEM",op= 160,
- UIinfo={"groupes":("Impression",)},
- fr="Impression d'une structure de données MACR_ELEM_DYNA au format IDEAS MISS3D PLEXUS ou CADYRO",
- MACR_ELEM_DYNA =SIMP(statut='o',typ=macr_elem_dyna ),
- FORMAT =SIMP(statut='f',typ='TXM',defaut="IDEAS",
- into=("MISS_3D","IDEAS","CADYRO","PLEXUS") ),
-
- b_plexus =BLOC(condition = "FORMAT == 'IDEAS'",
- UNITE =SIMP(statut='f',typ='I',defaut=30),
- VERSION =SIMP(statut='f',typ='I',defaut= 5,into=( 5 ,) ),
- ),
-
- b_ideas =BLOC(condition = "FORMAT == 'PLEXUS'",
- UNITE =SIMP(statut='f',typ='I',defaut=30),
- VERSION =SIMP(statut='f',typ='I',defaut= 5,into=( 5 ,) ),
- ),
-
- b_miss_3d =BLOC(condition = "FORMAT == 'MISS_3D'",
- regles=(EXCLUS('AMOR_REDUIT','LIST_AMOR'),),
- UNITE =SIMP(statut='f',typ='I',defaut= 26 ),
- SOUS_TITRE =SIMP(statut='f',typ='TXM',max='**'),
- AMOR_REDUIT =SIMP(statut='f',typ='R' ,max='**'),
- LIST_AMOR =SIMP(statut='f',typ=listr8_sdaster ),
- GROUP_MA_INTERF =SIMP(statut='o',typ=grma ,max='**'),
- GROUP_MA_FLU_STR=SIMP(statut='f',typ=grma,max='**'),
- GROUP_MA_FLU_SOL=SIMP(statut='f',typ=grma,max='**'),
- GROUP_MA_SOL_SOL=SIMP(statut='f',typ=grma,max='**'),
- IMPR_MODE_MECA =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
- IMPR_MODE_STAT =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
- ),
-
- b_cadyro =BLOC(condition = "FORMAT == 'CADYRO'",
- SQUELETTE =SIMP(statut='f',typ=squelette ),
- UNITE_MODE_MECA =SIMP(statut='f',typ='I',defaut= 26 ),
- UNITE_MODE_STAT =SIMP(statut='f',typ='I',defaut= 27 ),
- UNITE_MAILLAGE =SIMP(statut='f',typ='I',defaut= 28 ),
- IMPR_MODE_MECA =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
- IMPR_MODE_STAT =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
- ),
-
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-IMPR_MATRICE=PROC(nom="IMPR_MATRICE",op= 159,
- fr="Imprimer sur un fichier au format IDEAS ou RESULTAT des matrices élémentaires et assemblées",
- UIinfo={"groupes":("Impression",)},
- regles=(AU_MOINS_UN('MATR_ELEM','MATR_ASSE'),),
-# ======================================================================
- MATR_ELEM =FACT(statut='f',max='**',
-#
- MATRICE =SIMP(statut='o',typ=(matr_elem, vect_elem)),
- FORMAT =SIMP(statut='f',typ='TXM',defaut="IDEAS",
- into=("IDEAS","RESULTAT") ),
-#
- b_format_ideas =BLOC(condition="FORMAT=='IDEAS'",fr="unité logique d'impression et version IDEAS",
- UNITE =SIMP(statut='f',typ='I',defaut=30),
- VERSION =SIMP(statut='f',typ='I',defaut= 5,into=( 5 ,), ), ),
-#
- b_format_resultat =BLOC(condition="FORMAT=='RESULTAT'",fr="unité logique d'impression au format RESULTAT",
- regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD'),),
- UNITE =SIMP(statut='f',typ='I',defaut=8),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- GROUP_NO =SIMP(statut='f',typ=grno ,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_MA =SIMP(statut='f',typ=grma ,validators=NoRepeat(),max='**'),
- NOM_CMP =SIMP(statut='f',typ='TXM',max='**'),
- GRAIN =SIMP(statut='f',typ='TXM',defaut="VALEUR",into=("VALEUR","NOEUD","MAILLE") ),
- NB_CHIFFRE =SIMP(statut='f',typ='I',defaut= 4 ), ),
- ),
-# ======================================================================
- MATR_ASSE =FACT(statut='f',max='**',
-#
- MATRICE =SIMP(statut='o',typ=matr_asse_gd),
- FORMAT =SIMP(statut='f',typ='TXM',defaut="IDEAS",into=("IDEAS","RESULTAT") ),
-#
- b_format_ideas =BLOC(condition="FORMAT=='IDEAS'",fr="unité logique d'impression et version IDEAS",
- UNITE =SIMP(statut='f',typ='I',defaut=30),
- VERSION =SIMP(statut='f',typ='I',defaut= 5,into=( 5 ,), ), ),
-#
- b_format_resultat =BLOC(condition="FORMAT=='RESULTAT'",fr="unité logique d'impression au format RESULTAT",
- regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE','GROUP_NO','NOEUD'),),
- UNITE =SIMP(statut='f',typ='I',defaut=8),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- GROUP_NO =SIMP(statut='f',typ=grno ,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_MA =SIMP(statut='f',typ=grma ,validators=NoRepeat(),max='**'),
- OPTION =SIMP(statut='f',typ='TXM',defaut="SOUS_MATRICE",into=("SOUS_MATRICE","LIGNE","COLONNE") ),
- NOM_CMP =SIMP(statut='f',typ='TXM',max='**'),
- GRAIN =SIMP(statut='f',typ='TXM',defaut="VALEUR",into=("VALEUR","NOEUD") ),
- NB_CHIFFRE =SIMP(statut='f',typ='I',defaut= 4 ),
- VALE_ZERO =SIMP(statut='f',typ='R',defaut= 0.E+0 ), ),
- ),
-# ======================================================================
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-IMPR_MISS_3D=PROC(nom="IMPR_MISS_3D",op= 162,
- UIinfo={"groupes":("Impression",)},
- fr="Impression des données d'entrée pour une étude sismique avec MISS3D",
- regles=(UN_PARMI('INST_INIT','FREQ_INIT'),
- PRESENT_PRESENT('INST_INIT','INST_FIN'),
- PRESENT_PRESENT('FREQ_INIT','FREQ_FIN'),),
- MACR_ELEM_DYNA =SIMP(statut='o',typ=macr_elem_dyna ),
- EXCIT =FACT(statut='f',max='**',
- regles=(UN_PARMI('FONC_MULT','COEF_MULT' ),),
- VECT_ASSE =SIMP(statut='f',typ=cham_no_depl_r ),
- FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- COEF_MULT =SIMP(statut='f',typ='R' ),
- ),
- EXCIT_SOL =FACT(statut='f',max='**',
- DIRECTION =SIMP(statut='o',typ='R',min=3,max=3),
- FONC_SIGNAL =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- NOM_CHAM =SIMP(statut='f',typ='TXM',defaut="DEPL",
- into=("DEPL","VITE","ACCE","FORC",) ),
- ),
- INST_INIT =SIMP(statut='f',typ='R' ),
- INST_FIN =SIMP(statut='f',typ='R' ),
- FREQ_INIT =SIMP(statut='f',typ='R' ),
- FREQ_FIN =SIMP(statut='f',typ='R' ),
- PAS =SIMP(statut='o',typ='R' ),
- UNITE =SIMP(statut='f',typ='I',defaut= 26 ),
- INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2 ) ),
- TITRE =SIMP(statut='f',typ='TXM',max='**'),
-) ;
-#& MODIF COMMANDE DATE 16/06/2004 AUTEUR DURAND C.DURAND
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE D6BHHAM A.M.DONORE
-#
-IMPR_OAR =PROC(nom="IMPR_OAR",op= 40,
- fr="Impression au format OAR",
- UIinfo={"groupes":("Impression",)},
- CARA_ELEM =SIMP(statut='f',typ=cara_elem ),
- MAILLAGE =SIMP(statut='o',typ=maillage_sdaster ),
- MODELE =SIMP(statut='o',typ=modele_sdaster ),
- MAILLE =SIMP(statut='o',typ=ma ,validators=NoRepeat(),max=2 ),
- NOEUD =SIMP(statut='o',typ=no ,validators=NoRepeat() ),
-
- CHARGE =FACT(statut='o',max='**',
-
- NUM_CHAR =SIMP(statut='o',typ='I'),
- TEMP_NOEUD =SIMP(statut='f',typ='R',defaut=20.),
- TYPE =SIMP(statut='f',typ='TXM',defaut="DILA",
- into=("POIDS","DILA","SEISME","DEPL","EFFO","STRATIF","CONDITIONNEL","COMBINAISON") ),
- NATURE =SIMP(statut='f',typ='TXM',defaut="PRIMAIRE",
- into=("PRIMAIRE","SECONDAIRE","TOTAL") ),
- SIGNE =SIMP(statut='f',typ='TXM',defaut="S",
- into=("S","NS") ),
- RESULTAT =SIMP(statut='o',typ=resultat_sdaster),# CO() sd a creer !!!
- ),
-
-
- UNITE =SIMP(statut='f',typ='I',defaut=38),
- INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
-) ;
-#& MODIF COMMANDE DATE 05/09/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-IMPR_RESU=PROC(nom="IMPR_RESU",op=39,
- UIinfo={"groupes":("Impression",)},
- fr="Imprimer un maillage et/ou les résultats d'un calcul (différents formats)",
- MODELE =SIMP(statut='f',typ=modele_sdaster),
-
- FORMAT =SIMP(statut='f',typ='TXM',position='global',defaut="RESULTAT",
- into=("RESULTAT","IDEAS","ASTER","CASTEM","ENSIGHT","MED","GMSH") ),
-
- b_format_resultat =BLOC(condition="FORMAT=='RESULTAT'",fr="unité logique d'impression au format RESULTAT",
- UNITE =SIMP(statut='f',typ='I',defaut=8),
- ),
-
- b_format_ideas =BLOC(condition="FORMAT=='IDEAS'",fr="unité logique d'impression et version IDEAS",
- UNITE =SIMP(statut='f',typ='I',defaut=30),
- VERSION =SIMP(statut='f',typ='I',defaut=5,into=(4,5)),
- ),
-
- b_format_aster =BLOC(condition="FORMAT=='ASTER'",fr="unité logique d'impression au format ASTER",
- UNITE =SIMP(statut='f',typ='I',defaut=26),
- ),
-
- b_format_castem =BLOC(condition="FORMAT=='CASTEM'",fr="unité logique d'impression et version CASTEM",
- UNITE =SIMP(statut='f',typ='I',defaut=37),
- NIVE_GIBI =SIMP(statut='f',typ='I',defaut=10,into=(3,10)),
- ),
-
- b_format_ensight =BLOC(condition="FORMAT=='ENSIGHT'",fr="unité logique d'impression au format ENSIGHT",
- UNITE =SIMP(statut='f',typ='I',defaut=31),
- ),
-
- b_format_med =BLOC(condition="FORMAT=='MED'",fr="unité logique d'impression au format MED",
- UNITE =SIMP(statut='f',typ='I',defaut=80),
- ),
-
- b_format_gmsh =BLOC(condition="FORMAT=='GMSH'",fr="unité logique d'impression et version GMSH",
- UNITE =SIMP(statut='f',typ='I',defaut=19),
- VERSION =SIMP(statut='f',typ='R',defaut=1.2,into=(1.0,1.2)),
- ),
-
- RESU =FACT(statut='o',max='**',
-
- regles=(AU_MOINS_UN('CHAM_GD','RESULTAT','MAILLAGE'),
- EXCLUS('CHAM_GD','RESULTAT'),),
- MAILLAGE =SIMP(statut='f',typ=(maillage_sdaster,squelette)),
- INFO_MAILLAGE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
- CHAM_GD =SIMP(statut='f',typ=cham_gd_sdaster),
- RESULTAT =SIMP(statut='f',typ=resultat_sdaster),# CO() sd a creer !!!
-
- b_sensibilite =BLOC(condition="RESULTAT != None",
- fr="Définition des paramètres de sensibilité",
- ang="Definition of sensitivity parameters",
- SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**',
- fr="Liste des paramètres de sensibilité.",
- ang="List of sensitivity parameters"),),
-
- b_partie =BLOC(condition="""((AsType(RESULTAT)==dyna_harmo) or (AsType(CHAM_GD)==cham_elem_epsi_c)
- or (AsType(CHAM_GD)==cham_elem_depl_c) or (AsType(CHAM_GD)==cham_elem_sief_c) or
- (AsType(CHAM_GD)==cham_no_depl_c) or (AsType(CHAM_GD)==cham_no_pres_c) or
- (AsType(CHAM_GD)==cham_no_temp_c)) and ((FORMAT=='CASTEM') or (FORMAT=='GMSH'))""",
- PARTIE =SIMP(statut='o',typ='TXM',into=("REEL","IMAG") ),
- ),
- b_extrac =BLOC(condition="RESULTAT != None",
- fr="extraction d un champ de grandeur",
- regles=(EXCLUS('TOUT_CHAM','NOM_CHAM'),
- EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','FREQ','NUME_MODE','NOEUD_CMP',
- 'LIST_INST','LIST_FREQ','LIST_ORDRE','NOM_CAS','ANGL'),),
- TOUT_CHAM =SIMP(statut='f',typ='TXM',into=("OUI","NON") ),
- NOM_CHAM =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',into=C_NOM_CHAM_INTO()),
-
- TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
- NUME_MODE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
- LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster),
- NOEUD_CMP =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'),
- NOM_CAS =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'),
- ANGL =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
- FREQ =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
- LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster),
- INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
- LIST_INST =SIMP(statut='f',typ=listr8_sdaster),
-
- b_acce_reel =BLOC(condition="(FREQ != None)or(LIST_FREQ != None)or(INST != None)or(LIST_INST != None)",
- PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
- ),
- ),
-###
- b_parametres =BLOC(condition="""(RESULTAT != None)and(FORMAT == 'RESULTAT')""",
- regles=(EXCLUS('TOUT_PARA','NOM_PARA'),),
- INFO_RESU =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
- TOUT_PARA =SIMP(statut='f',typ='TXM',into=("OUI","NON",) ),
- NOM_PARA =SIMP(statut='f',typ='TXM',max='**'),
- FORM_TABL =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON","EXCEL") ),
- ),
-###
- b_cmp=BLOC(condition="""((CHAM_GD != None)or(RESULTAT != None))and\
- ((FORMAT == 'CASTEM')or(FORMAT == 'RESULTAT')or(FORMAT == 'IDEAS')or(FORMAT == 'ENSIGHT')or(FORMAT == 'MED'))""",
- fr="sélection des composantes",
- regles=(EXCLUS('TOUT_CMP','NOM_CMP'),),
- TOUT_CMP =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- NOM_CMP =SIMP(statut='f',typ='TXM',max='**'),
- ),
-###
- b_gmsh=BLOC(condition="""((CHAM_GD != None)or(RESULTAT != None))and((FORMAT == 'GMSH'))""",
- fr="sélection des composantes et des entités toplogiques",
- NOM_CMP =SIMP(statut='f',typ='TXM',max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- ),
-###
- b_topologie=BLOC(condition="""((CHAM_GD != None)or(RESULTAT != None))and\
- ((FORMAT == 'RESULTAT')or(FORMAT == 'IDEAS')or(FORMAT == 'MED'))""",
- fr="sélection des entités topologiques",
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- ),
-###
- b_valeurs=BLOC(condition="(FORMAT == 'RESULTAT')",
- fr="sélection sur les valeurs",
- VALE_MAX =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- VALE_MIN =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- BORNE_SUP =SIMP(statut='f',typ='R'),
- BORNE_INF =SIMP(statut='f',typ='R'),
- IMPR_COOR =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
- FORMAT_R =SIMP(statut='f',typ='TXM',defaut="1PE12.5"),
- ),
-
- SOUS_TITRE =SIMP(statut='f',typ='TXM',max='**'),
- ),
- INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
-) ;
-#& MODIF COMMANDE DATE 23/08/2004 AUTEUR CIBHHLV L.VIVAN
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-IMPR_STURM=PROC(nom="IMPR_STURM",op=32,fr="Calculer et imprimer le nombre de valeurs propres dans un intervalle donné",
- UIinfo={"groupes":("Résolution",)},
- MATR_A =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_temp_r,matr_asse_pres_r ) ),
- MATR_B =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_temp_r,matr_asse_pres_r ) ),
- TYPE_RESU =SIMP(statut='f',typ='TXM',defaut="DYNAMIQUE",into=("MODE_FLAMB","DYNAMIQUE"),
- fr="Type d analyse" ),
- b_dynamique =BLOC(condition = "TYPE_RESU == 'DYNAMIQUE'",
- fr="Recheche du nombre de fréquences propres",
- FREQ_MIN =SIMP(statut='f',typ='R',defaut= 0.E+0 ,fr="Borne inférieure de l intervalle" ),
- FREQ_MAX =SIMP(statut='o',typ='R',fr="Borne supérieure de l intervalle" ),
- ),
- b_mode_flamb =BLOC(condition = "TYPE_RESU == 'MODE_FLAMB'",
- fr="Recherche du nombre de charges critiques",
- CHAR_CRIT_MIN =SIMP(statut='o',typ='R',fr="Borne inférieure de l intervalle" ),
- CHAR_CRIT_MAX =SIMP(statut='o',typ='R',fr="Borne supérieure de l intervalle" ),
- ),
- NPREC_SOLVEUR =SIMP(statut='f',typ='I',defaut= 8 ),
- NMAX_ITER_SHIFT =SIMP(statut='f',typ='I',defaut= 5 ),
- UNITE =SIMP(statut='f',typ='I',defaut=8),
- PREC_SHIFT =SIMP(statut='f',typ='R',defaut= 1.E-2 ),
- SEUIL_FREQ =SIMP(statut='f',typ='R',defaut= 1.E-2 ),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE MCOURTOI M.COURTOIS
-from Macro.impr_table_ops import impr_table_ops
-
-IMPR_TABLE=MACRO(nom="IMPR_TABLE",op=impr_table_ops,sd_prod=None,
- UIinfo={"groupes":("Impression",)},
- fr="Impression du contenu d'une table dans un fichier",
- TABLE =SIMP(statut='o',typ=table_sdaster),
- SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**',
- fr="Liste des paramètres de sensibilité.",
- ang="List of sensitivity parameters"),
- FORMAT =SIMP(statut='f',typ='TXM',defaut="TABLEAU",
- into=("TABLEAU","ASTER","TABLEAU_CROISE","AGRAF","XMGRACE",),),
- b_pilote =BLOC(condition = "FORMAT == 'XMGRACE'",
- fr="Mots-clés propres à XMGRACE",
- PILOTE =SIMP(statut='f',typ='TXM',defaut='',
- into=('','POSTSCRIPT','EPS','MIF','SVG','PNM','PNG','JPEG','PDF','INTERACTIF'),
- fr="Pilote de sortie, PNG/JPEG/PDF ne sont pas disponibles sur toutes les installations de xmgrace"),
- UNITE =SIMP(statut='f',typ='I',val_min=10,val_max=90,defaut=29,
- fr="Unité logique définissant le fichier (fort.N) dans lequel on écrit"),
- ),
- b_unite =BLOC(condition = "FORMAT != 'XMGRACE'",
- UNITE =SIMP(statut='f',typ='I',defaut=8,
- fr="Unité logique définissant le fichier (fort.N) dans lequel on écrit"),
- ),
- FILTRE =FACT(statut='f',max='**',
- NOM_PARA =SIMP(statut='o',typ='TXM'),
- CRIT_COMP =SIMP(statut='f',typ='TXM',defaut="EQ",
- into=("EQ","LT","GT","NE","LE","GE","VIDE",
- "NON_VIDE","MAXI","ABS_MAXI","MINI","ABS_MINI"),),
- b_vale =BLOC(condition = "(CRIT_COMP in ('EQ','NE','GT','LT','GE','LE'))",
- regles=(UN_PARMI('VALE','VALE_I','VALE_K','VALE_C',),),
- VALE =SIMP(statut='f',typ='R'),
- VALE_I =SIMP(statut='f',typ='I'),
- VALE_C =SIMP(statut='f',typ='C'),
- VALE_K =SIMP(statut='f',typ='TXM'),
- ),
- b_crit =BLOC(condition = "CRIT_COMP in ('EQ','NE')",
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
- PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3 ),
- ),
- ),
- TRI =FACT(statut='f',
- NOM_PARA =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**'),
- ORDRE =SIMP(statut='f',typ='TXM',defaut="CROISSANT", # max='**',
- into=("CROISSANT","DECROISSANT") ),
- ),
- PAGINATION =SIMP(statut='f',typ='TXM',max='**'),
- FORMAT_R =SIMP(statut='f',typ='TXM',defaut="E12.5"),
- FORMAT_C =SIMP(statut='f',typ='TXM',defaut="MODULE_PHASE",
- into=("MODULE_PHASE","REEL_IMAG") ),
- NOM_PARA =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'),
- IMPR_FONCTION =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
-
- # mise en forme pour les formats qui passent par Graph
- b_forme =BLOC(condition = "FORMAT == 'XMGRACE'",
- fr="Données de mise en forme du graphique",
- # pour la courbe
- LEGENDE =SIMP(statut='f',typ='TXM',
- fr="Légende associée à la fonction" ),
- STYLE =SIMP(statut='f',typ='I',val_min=0,
- fr="Style de la ligne représentant la fonction",),
- COULEUR =SIMP(statut='f',typ='I',val_min=0,
- fr="Couleur associée à la fonction",),
- MARQUEUR =SIMP(statut='f',typ='I',val_min=0,
- fr="Type du marqueur associé à la fonction",),
- FREQ_MARQUEUR =SIMP(statut='f',typ='I',defaut=0,
- fr="Fréquence d impression du marqueur associé à la fonction", ),
- # format du graphique
- BORNE_X =SIMP(statut='f',typ='R',min=2,max=2,
- fr="Intervalles de variation des abscisses"),
- BORNE_Y =SIMP(statut='f',typ='R',min=2,max=2,
- fr="Intervalles de variation des ordonnées"),
- ECHELLE_X =SIMP(statut='f',typ='TXM',defaut="LIN",into=("LIN","LOG"),
- fr="Type d'échelle pour les abscisses" ),
- ECHELLE_Y =SIMP(statut='f',typ='TXM',defaut="LIN",into=("LIN","LOG"),
- fr="Type d'échelle pour les ordonnées" ),
- GRILLE_X =SIMP(statut='f',typ='R',max=1,val_min=0.,
- fr="Pas du quadrillage vertical" ),
- GRILLE_Y =SIMP(statut='f',typ='R',max=1,val_min=0.,
- fr="Pas du quadrillage horizontal" ),
- LEGENDE_X =SIMP(statut='f',typ='TXM',
- fr="Légende associée à l'axe des abscisses" ),
- LEGENDE_Y =SIMP(statut='f',typ='TXM',
- fr="Légende associée à l'axe des ordonnées" ),
- ),
-
- TITRE =SIMP(statut='f',typ='TXM',max='**'),
- INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
-)
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-INCLUDE=MACRO(nom="INCLUDE",op=ops.build_include,
- UIinfo={"groupes":("Gestion du travail",)},
- fr="Débranchement vers un fichier de commandes secondaires",
- sd_prod=ops.INCLUDE,op_init=ops.INCLUDE_context,fichier_ini=1,
- UNITE = SIMP(statut='o',typ='I'),
- INFO = SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
-);
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-INCLUDE_MATERIAU=MACRO(nom="INCLUDE_MATERIAU",op=-14,
- UIinfo={"groupes":("Modélisation",)},
- fr="Récupérer les caractéristiques d'un matériau dans le Catalogue Materiaux d'Aster ",
- sd_prod=ops.INCLUDE_MATERIAU,op_init=ops.INCLUDE_context,fichier_ini=0,
- NOM_AFNOR =SIMP(statut='o',typ='TXM' ),
- TYPE_MODELE =SIMP(statut='o',typ='TXM',into=("REF","PAR") ),
- VARIANTE =SIMP(statut='o',typ='TXM',
- into=("A","B","C","D","E","F","G","H","I","J",
- "K","L","M","N","O","P","Q","R","S","T","U","V",
- "W","X","Y","Z",) ),
- TYPE_VALE =SIMP(statut='o',typ='TXM',into=("NOMI","MINI","MAXI") ),
- NOM_MATER =SIMP(statut='o',typ='TXM' ),
- UNITE =SIMP(statut='f',typ='I',defaut= 32 ),
- EXTRACTION =FACT(statut='f',max=99,
- COMPOR =SIMP(statut='o',typ='TXM' ),
- TEMP_EVAL =SIMP(statut='o',typ='R' ),
- ),
- UNITE_LONGUEUR =SIMP(statut='f',typ='TXM',into=("M","MM"),defaut="M" ),
- INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ),
-) ;
-#& MODIF COMMANDE DATE 14/09/2004 AUTEUR MCOURTOI M.COURTOIS
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE D6BHHJP J.P.LEFEBVRE
-INFO_EXEC_ASTER=OPER(nom="INFO_EXEC_ASTER",op=35,sd_prod=table_sdaster,
- fr="Récupère différentes informations propres à l'exécution en cours",
- reentrant='n',
- UIinfo={"groupes":("Gestion du travail",)},
-
- regles=(),
- LISTE_INFO =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=3,
- into=("CPU_RESTANT","UNITE_LIBRE","ETAT_UNITE"),),
- b_etat_unite =BLOC(condition = "'ETAT_UNITE' in LISTE_INFO",
- regles=(UN_PARMI('UNITE','FICHIER'),),
- UNITE =SIMP(statut='f',typ='I',val_min=1,val_max=99,max=1,
- fr="Unité logique dont on veut obtenir l'état",),
- FICHIER =SIMP(statut='f',typ='TXM',validators=LongStr(1,255),
- fr="Nom du fichier dont on veut obtenir l'état",),
- ),
- TITRE =SIMP(statut='f',typ='TXM',max='**'),
- INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
-) ;
-#& MODIF COMMANDE DATE 24/05/2005 AUTEUR MCOURTOI M.COURTOIS
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2005 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-from Macro.info_fonction_ops import info_fonction_ops
-def info_fonction_prod(self,ECART_TYPE,RMS,NOCI_SEISME,MAX,NORME, **args):
- if (RMS != None): return table_sdaster
- if (MAX != None): return table_sdaster
- if (NOCI_SEISME != None): return table_sdaster
- if (ECART_TYPE != None): return table_sdaster
- if (NORME != None): return table_sdaster
- raise AsException("type de concept resultat non prevu")
-
-INFO_FONCTION=MACRO(nom="INFO_FONCTION",op=info_fonction_ops,sd_prod=info_fonction_prod
- ,fr="Opérations mathématiques sur des concepts de type fonction, fonction_c ou nappe",
- reentrant='n',
- UIinfo={"groupes":("Fonction",)},
- regles=(UN_PARMI('MAX','RMS','NOCI_SEISME','NORME','ECART_TYPE',),),
- RMS =FACT(statut='f',fr="Valeur RMS d'une fonction",max='**',
- METHODE =SIMP(statut='f',typ='TXM',defaut="TRAPEZE",into=("SIMPSON","TRAPEZE") ),
- FONCTION =SIMP(statut='o',typ=fonction_sdaster ),
- INST_INIT =SIMP(statut='f',typ='R',fr="Instant initial définissant le début du signal" ),
- INST_FIN =SIMP(statut='f',typ='R',fr="Instant final définissant la fin du signal" ),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
- PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3,val_min=0.E+0 ),
- ),
- NOCI_SEISME =FACT(statut='f',
- regles=(UN_PARMI('FONCTION','SPEC_OSCI',),),
- FONCTION =SIMP(statut='f',typ=fonction_sdaster ),
- SPEC_OSCI =SIMP(statut='f',typ=nappe_sdaster ),
- b_option_f =BLOC(condition="""FONCTION !=None""",
- OPTION =SIMP(statut='f',typ='TXM',defaut="TOUT",validators=NoRepeat(),max='**',
- into=("INTE_ARIAS","POUV_DEST","INTE_SPEC","VITE_ABSO_CUMU",
- "DUREE_PHAS_FORT","MAXI","ACCE_SUR_VITE","TOUT",), ),
- b_amor =BLOC(condition="""OPTION=="TOUT" or OPTION=="INTE_SPEC" """,
- AMOR_REDUIT =SIMP(statut='o',typ='R'), ),),
- b_option_n =BLOC(condition="""SPEC_OSCI !=None""",
- OPTION =SIMP(statut='f',typ='TXM',defaut="INTE_SPEC",into=("INTE_SPEC",), ),
- NATURE =SIMP(statut='o',typ='TXM',into=("DEPL","VITE","ACCE") ),
- AMOR_REDUIT =SIMP(statut='o',typ='R'), ),
- INST_INIT =SIMP(statut='f',typ='R'),
- INST_FIN =SIMP(statut='f',typ='R'),
- COEF =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- PESANTEUR =SIMP(statut='f',typ='R',defaut= 9.81E+0 ),
- FREQ_INIT =SIMP(statut='f',typ='R',defaut= 4.E-1 ),
- FREQ_FIN =SIMP(statut='f',typ='R',defaut= 10.E+0 ),
- LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster ),
- FREQ =SIMP(statut='f',typ='R',max='**'),
- NORME =SIMP(statut='f',typ='R',defaut= 1.E+0 ),
- BORNE_INF =SIMP(statut='f',typ='R',defaut= 0.05E+0 ),
- BORNE_SUP =SIMP(statut='f',typ='R',defaut= 0.95E+0 ),
- b_acce_reel =BLOC(condition="(INST_INIT != None)or(INST_FIN != None)or(FREQ_INIT != None)or(FREQ_FIN != None)",
- PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3,val_min=0.E+0),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
- ),
- ),
- MAX =FACT(statut='f',fr="Extrémas locaux d'une fonction",
- FONCTION =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster) ),
- ),
- NORME =FACT(statut='f',fr="Norme L2 d'une fonction",
- FONCTION =SIMP(statut='o', typ=nappe_sdaster),
- ),
- ECART_TYPE =FACT(statut='f',fr="Ecart-type d'une fonction",
- METHODE =SIMP(statut='f',typ='TXM',defaut="TRAPEZE",into=("SIMPSON","TRAPEZE") ),
- FONCTION =SIMP(statut='o',typ=fonction_sdaster),
- INST_INIT =SIMP(statut='f',typ='R',fr="Instant initial définissant le début du signal" ),
- INST_FIN =SIMP(statut='f',typ='R',fr="Instant final définissant la fin du signal" ),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
- PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3,val_min=0.E+0 ),
- ),
- INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
-)
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE G8BHHXD X.DESROCHES
-INTE_MAIL_2D=OPER(nom="INTE_MAIL_2D",op=50,sd_prod=courbe_sdaster,
- UIinfo={"groupes":("Post traitements",)},
- fr="Définition d'une courbe dans un maillage 2D",reentrant='n',
-
- MAILLAGE =SIMP(statut='o',typ=(maillage_sdaster) ),
-
- regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),
- AU_MOINS_UN('DEFI_SEGMENT','DEFI_ARC','DEFI_CHEMIN'),
- PRESENT_ABSENT('DEFI_CHEMIN','DEFI_SEGMENT','DEFI_ARC'),
- PRESENT_ABSENT('DEFI_SEGMENT','NOEUD_ORIG','GROUP_NO_ORIG'),
- PRESENT_ABSENT('DEFI_ARC','NOEUD_ORIG','GROUP_NO_ORIG'),
- EXCLUS('NOEUD_ORIG','GROUP_NO_ORIG'),
- EXCLUS('DEFI_CHEMIN','DEFI_SEGMENT'),
- EXCLUS('DEFI_CHEMIN','DEFI_ARC'),),
-
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
-
- DEFI_SEGMENT =FACT(statut='f',max='**',
- regles=(UN_PARMI('ORIGINE','NOEUD_ORIG','GROUP_NO_ORIG'),
- UN_PARMI('EXTREMITE','NOEUD_EXTR','GROUP_NO_EXTR'),),
- ORIGINE =SIMP(statut='f',typ='R',min=2,max=2),
- NOEUD_ORIG =SIMP(statut='f',typ=no,),
- GROUP_NO_ORIG =SIMP(statut='f',typ=grno,),
- EXTREMITE =SIMP(statut='f',typ='R',min=2,max=2),
- NOEUD_EXTR =SIMP(statut='f',typ=no,),
- GROUP_NO_EXTR =SIMP(statut='f',typ=grno,),
- ),
-
- DEFI_ARC =FACT(statut='f',max='**',
- regles=(UN_PARMI('CENTRE','NOEUD_CENTRE','GROUP_NO_CENTRE'),
- UN_PARMI('RAYON','ORIGINE','NOEUD_ORIG','GROUP_NO_ORIG'),
- UN_PARMI('RAYON','EXTREMITE','NOEUD_EXTR','GROUP_NO_EXTR'),
- PRESENT_PRESENT('RAYON','SECTEUR'),),
- CENTRE =SIMP(statut='f',typ='R',min=2,max=2),
- NOEUD_CENTRE =SIMP(statut='f',typ=no,),
- GROUP_NO_CENTRE =SIMP(statut='f',typ=grno,),
- RAYON =SIMP(statut='f',typ='R',val_min=0.E+0),
- SECTEUR =SIMP(statut='f',typ='R',min=2,max=2,
- val_min=-180.E+0,val_max=180E+0),
- ORIGINE =SIMP(statut='f',typ='R',min=2,max=2),
- NOEUD_ORIG =SIMP(statut='f',typ=no,),
- GROUP_NO_ORIG =SIMP(statut='f',typ=grno,),
- EXTREMITE =SIMP(statut='f',typ='R',min=2,max=2),
- NOEUD_EXTR =SIMP(statut='f',typ=no,),
- GROUP_NO_EXTR =SIMP(statut='f',typ=grno,),
- PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3 ),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",
- into=("RELATIF","ABSOLU",) ),
- ),
-
- DEFI_CHEMIN =FACT(statut='f',max='**',
- regles=(UN_PARMI('MAILLE','GROUP_MA'),),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- ),
-
- NOEUD_ORIG =SIMP(statut='f',typ=no,),
- GROUP_NO_ORIG =SIMP(statut='f',typ=grno,),
- PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3),
- INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE G8BHHXD X.DESROCHES
-INTE_MAIL_3D=OPER(nom="INTE_MAIL_3D",op=96,sd_prod=surface_sdaster,
- UIinfo={"groupes":("Post traitements",)},
- fr="Définir un chemin de type segment de droite dans un maillage 3D",reentrant='n',
- MAILLAGE =SIMP(statut='o',typ=maillage_sdaster),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- DEFI_SEGMENT =FACT(statut='o',max='**',
- regles=(UN_PARMI('ORIGINE','NOEUD_ORIG','GROUP_NO_ORIG'),
- UN_PARMI('EXTREMITE','NOEUD_EXTR','GROUP_NO_EXTR'),),
- ORIGINE =SIMP(statut='f',typ='R',min=3,max=3),
- NOEUD_ORIG =SIMP(statut='f',typ=no,),
- GROUP_NO_ORIG =SIMP(statut='f',typ=grno,),
- EXTREMITE =SIMP(statut='f',typ='R',min=3,max=3),
- NOEUD_EXTR =SIMP(statut='f',typ=no,),
- GROUP_NO_EXTR =SIMP(statut='f',typ=grno,),
- ),
- PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-6),
- INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-def lire_champ_prod(TYPE_CHAM=None,**args):
-# Remarque : si cette liste évolue, il faut penser à mettre à jour son
-# homologue dans macr_adap_mail
- import string
-#
- if TYPE_CHAM[0:5] == "NOEU_" : return eval("cham_no_"+string.lower(TYPE_CHAM[5:]))
- if TYPE_CHAM == "ELEM_G_DEPL_R" : return cham_elem_g_depl
- if TYPE_CHAM[0:5] == "ELEM_" : return eval("cham_elem_"+string.lower(TYPE_CHAM[5:]))
- if TYPE_CHAM == "ELNO_G_DEPL_R" : return cham_elem_g_depl
- if TYPE_CHAM[0:5] == "ELNO_" : return eval("cham_elem_"+string.lower(TYPE_CHAM[5:]))
- if TYPE_CHAM == "ELGA_G_DEPL_R" : return cham_elem_g_depl
- if TYPE_CHAM[0:5] == "ELGA_" : return eval("cham_elem_"+string.lower(TYPE_CHAM[5:]))
- raise AsException("type de concept resultat non prevu")
-
-LIRE_CHAMP=OPER(nom="LIRE_CHAMP",op= 192,sd_prod=lire_champ_prod,
- fr="Lire un champ dans un fichier au format MED et le stocker dans un concept.",
- reentrant='n',UIinfo={"groupe":("Résultats et champs",)},
- MAILLAGE =SIMP(statut='o',typ=maillage_sdaster,),
- FORMAT =SIMP(statut='f',typ='TXM',defaut="MED",into=("MED",),),
- UNITE =SIMP(statut='f',typ='I',defaut= 81,),
- b_format =BLOC(condition = "FORMAT == 'MED'",
- regles=( UN_PARMI('NOM_CMP_IDEM','NOM_CMP'),
- PRESENT_PRESENT('NOM_CMP','NOM_CMP_MED' ),
- EXCLUS('NUME_ORDRE','INST'),
- EXCLUS('NUME_PT','INST'),),
- NOM_MED =SIMP(statut='o',typ='TXM', ),
- NOM_CMP_IDEM =SIMP(statut='f',typ='TXM',into=("OUI",), ),
- NOM_CMP =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',),
- NOM_CMP_MED =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',),
- NUME_PT =SIMP(statut='f',typ='I' ,validators=NoRepeat(),max='**',),
- NUME_ORDRE =SIMP(statut='f',typ='I' ,validators=NoRepeat(),max='**',
- fr="Numero d ordre du champ à lire",ang="Rank of the field to be read" ),
- INST =SIMP(statut='f',typ='R',fr="Instant associé",ang="Instant" ),
-#
- b_precision =BLOC(condition="(INST != None)",
- PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3,
- fr="Précision sur le choix de l'instant associé",ang="Accuracy over instant choice" ),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU"),
- fr="Critère de précision sur le choix de l'instant associé",
- ang="Accuracy criterium over instant choice" ),),
-#
- NOM_MAIL_MED =SIMP(statut='f',typ='TXM',),
- ),
-# Remarque : si cette liste évolue, il faut penser à mettre à jour son
-# homologue dans macr_adap_mail
- TYPE_CHAM =SIMP(statut='o',typ='TXM',into=C_TYPE_CHAM_INTO()),
- b_modele =BLOC(condition = "TYPE_CHAM!=None and TYPE_CHAM[0:2] == 'EL'",
- MODELE =SIMP(statut='o',typ=modele_sdaster, ),
- ),
- INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-
-from Macro.lire_fonction_ops import lire_fonction_ops
-
-def lire_fonction_prod(self,TYPE,**args):
- if (TYPE == 'FONCTION') : return fonction_sdaster
- elif (TYPE == 'FONCTION_C'): return fonction_c
- elif (TYPE == 'NAPPE' ) : return nappe_sdaster
- raise AsException("type de concept resultat non prevu")
-
-LIRE_FONCTION=MACRO(nom="LIRE_FONCTION",op=lire_fonction_ops,sd_prod=lire_fonction_prod,
- fr="Lit les valeurs réelles dans un fichier de données représentant une fonction et"
- +" crée un concept de type fonction ou nappe",
- reentrant='n',
- UIinfo={"groupes":("Fonction",)},
- FORMAT =SIMP(statut='f',typ='TXM',into=("LIBRE",),defaut="LIBRE" ),
- TYPE =SIMP(statut='f',typ='TXM',into=("FONCTION","FONCTION_C","NAPPE"),defaut="FONCTION" ),
- SEPAR =SIMP(statut='f',typ='TXM',into=("None",",",";","/"),defaut="None" ),
- INDIC_PARA =SIMP(statut='f',typ='I',min=2,max=2,defaut=[1,1]),
- b_fonction =BLOC(condition = "TYPE=='FONCTION' ",
- INDIC_RESU =SIMP(statut='f',typ='I',min=2,max=2,defaut=[1,2]), ),
- b_fonction_c =BLOC(condition = "TYPE=='FONCTION_C' ",
- FORMAT_C =SIMP(statut='f',typ='TXM',defaut="REEL_IMAG",into=("REEL_IMAG","MODULE_PHASE") ),
- b_reel_imag =BLOC(condition = "FORMAT_C=='REEL_IMAG' ",
- INDIC_REEL =SIMP(statut='o',typ='I',min=2,max=2,defaut=[1,2]),
- INDIC_IMAG =SIMP(statut='o',typ='I',min=2,max=2,defaut=[1,3]), ) ,
- b_modu_phas =BLOC(condition = "FORMAT_C=='MODULE_PHASE' ",
- INDIC_MODU =SIMP(statut='o',typ='I',min=2,max=2,defaut=[1,2]),
- INDIC_PHAS =SIMP(statut='o',typ='I',min=2,max=2,defaut=[1,3]), ), ),
- b_nappe =BLOC(condition = "TYPE=='NAPPE' ",
- NOM_PARA_FONC =SIMP(statut='o',typ='TXM',into=C_PARA_FONCTION() ),
- INDIC_ABSCISSE =SIMP(statut='o',typ='I',min=2,max=2,),
- INTERPOL_FONC =SIMP(statut='f',typ='TXM',max=2,defaut="LIN",into=("NON","LIN","LOG") ),
- PROL_DROITE_FONC=SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU") ),
- PROL_GAUCHE_FONC=SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU") ),
- DEFI_FONCTION =FACT(statut='f',max='**',
- INDIC_RESU =SIMP(statut='o',typ='I',min=2,max=2,),), ),
- UNITE =SIMP(statut='o',typ='I' ),
- NOM_PARA =SIMP(statut='o',typ='TXM',into=C_PARA_FONCTION() ),
- NOM_RESU =SIMP(statut='f',typ='TXM',defaut="TOUTRESU"),
- INTERPOL =SIMP(statut='f',typ='TXM',max=2,defaut="LIN",into=("NON","LIN","LOG") ),
- PROL_DROITE =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU") ),
- PROL_GAUCHE =SIMP(statut='f',typ='TXM',defaut="EXCLU",into=("CONSTANT","LINEAIRE","EXCLU") ),
- VERIF =SIMP(statut='f',typ='TXM',defaut="CROISSANT",into=("CROISSANT","NON") ),
- INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
- TITRE =SIMP(statut='f',typ='TXM',max='**'),
-) ;
-#& MODIF COMMANDE DATE 08/11/2005 AUTEUR ACBHHCD G.DEVESA
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2005 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-LIRE_FORC_MISS=OPER(nom="LIRE_FORC_MISS",op= 179,sd_prod=vect_asse_gene_c,
- fr="Création d un vecteur assemblé à partir de base modale",
- reentrant='n',
- UIinfo={"groupes":("Matrices/vecteurs",)},
- BASE =SIMP(statut='o',typ=base_modale ),
- NUME_DDL_GENE =SIMP(statut='o',typ=nume_ddl_gene ),
- FREQ_EXTR =SIMP(statut='o',typ='R',max=1),
- NOM_CMP =SIMP(statut='o',typ='TXM',into=("DX","DY","DZ") ),
- NOM_CHAM =SIMP(statut='f',typ='TXM',into=("DEPL","VITE","ACCE"),defaut="DEPL"),
- UNITE_RESU_FORC =SIMP(statut='f',typ='I',defaut=30),
-) ;
-
-#& MODIF COMMANDE DATE 08/11/2005 AUTEUR ACBHHCD G.DEVESA
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2005 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-LIRE_IMPE_MISS=OPER(nom="LIRE_IMPE_MISS",op= 164,sd_prod=matr_asse_gene_c,
- fr="Création d une matrice assemblée à partir de base modale",
- reentrant='n',
- UIinfo={"groupes":("Matrices/vecteurs",)},
- BASE =SIMP(statut='o',typ=base_modale ),
- NUME_DDL_GENE =SIMP(statut='o',typ=nume_ddl_gene ),
- FREQ_EXTR =SIMP(statut='o',typ='R',max=1),
- UNITE_RESU_IMPE =SIMP(statut='f',typ='I',defaut=30),
-) ;
-
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-
-from Macro.lire_inte_spec_ops import lire_inte_spec_ops
-
-LIRE_INTE_SPEC=MACRO(nom="LIRE_INTE_SPEC",op=lire_inte_spec_ops,sd_prod=tabl_intsp,
- fr="Lecture sur un fichier externe de fonctions complexes pour créer une matrice interspectrale",
- reentrant='n',
- UIinfo={"groupes":("Fonction",)},
- UNITE =SIMP(statut='o',typ='I' ),
- FORMAT =SIMP(statut='f',typ='TXM',defaut="MODULE_PHASE",into=("REEL_IMAG","MODULE_PHASE") ),
- NOM_PARA =SIMP(statut='f',typ='TXM',defaut="FREQ",
- into=("DX","DY","DZ","DRX","DRY","DRZ","TEMP",
- "INST","X","Y","Z","EPSI","FREQ","PULS","AMOR","ABSC",) ),
- NOM_RESU =SIMP(statut='f',typ='TXM',defaut="DSP" ),
- INTERPOL =SIMP(statut='f',typ='TXM',max=2,into=("NON","LIN","LOG") ),
- PROL_DROITE =SIMP(statut='f',typ='TXM',into=("CONSTANT","LINEAIRE","EXCLU") ),
- PROL_GAUCHE =SIMP(statut='f',typ='TXM',into=("CONSTANT","LINEAIRE","EXCLU") ),
- TITRE =SIMP(statut='f',typ='TXM',max='**'),
- INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE VABHHTS J.PELLET
-LIRE_MAILLAGE=OPER(nom="LIRE_MAILLAGE",op= 1,sd_prod=maillage_sdaster,
- fr="Crée un maillage par lecture d'un fichier au format Aster ou Med",
- ang="Readings of a mesh file",
- reentrant='n',
- UIinfo={"groupes":("Maillage",)},
-#
- UNITE =SIMP(statut='f',typ='I',defaut= 20 ),
-#
- FORMAT =SIMP(statut='f',typ='TXM',defaut="ASTER",into=("ASTER","MED"),
- fr="Format du fichier : ASTER ou MED.",
- ang="Format of the file : ASTER or MED.",),
-#
- ABSC_CURV =FACT(statut='f',min=0,
- TOUT =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
- ),
-#
- VERI_MAIL =FACT(statut='d',
- VERIF =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
- APLAT =SIMP(statut='f',typ='R',defaut= 1.0E-3 ),
- ),
-#
- b_format_med =BLOC( condition = " ( FORMAT == 'MED' ) " ,
- fr="Informations complémentaires pour la lecture MED.",
- ang="Further information for MED readings.",
-#
-# Pour une lecture dans un fichier MED, on peut préciser le nom sous lequel
-# le maillage y a été enregistré. Par défaut, on va le chercher sous le nom du concept à créer.
-#
- NOM_MED = SIMP(statut='f',typ='TXM',
- fr="Nom du maillage dans le fichier MED.",
- ang="Name of the mesh into the MED file.",),
-#
- INFO_MED = SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ),
-#
- ) ,
-#
- INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ),
-#
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-def lire_miss_3d_prod(TYPE_RESU,**args):
- if TYPE_RESU == "TRANS" : return dyna_trans
- if TYPE_RESU == "HARMO" : return dyna_harmo
- raise AsException("type de concept resultat non prevu")
-
-LIRE_MISS_3D=OPER(nom="LIRE_MISS_3D",op= 163,sd_prod=lire_miss_3d_prod,
- fr="Restituer sur base physique une réponse harmonique ou transitoire issue de MISS3D",
- reentrant='n',
- UIinfo={"groupes":("Maillage",)},
- MACR_ELEM_DYNA =SIMP(statut='o',typ=macr_elem_dyna ),
- UNITE =SIMP(statut='f',typ='I',defaut= 27 ),
- NOM =SIMP(statut='f',typ='TXM' ),
- TYPE_RESU =SIMP(statut='f',typ='TXM',defaut="TRANS",into=("TRANS","HARMO") ),
- TITRE =SIMP(statut='f',typ='TXM',max='**'),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-LIRE_PLEXUS=OPER(nom="LIRE_PLEXUS",op= 184,sd_prod=evol_char,
- fr="Lire le fichier de résultats au format IDEAS produit par le logiciel EUROPLEXUS",
- reentrant='n',
- UIinfo={"groupes":("Maillage",)},
- regles=(UN_PARMI('TOUT_ORDRE','NUME_ORDRE','INST','LIST_INST','LIST_ORDRE'),),
- UNITE =SIMP(statut='f',typ='I',defaut= 19 ),
- FORMAT =SIMP(statut='f',typ='TXM',defaut="IDEAS",into=("IDEAS",)),
- MAIL_PLEXUS =SIMP(statut='o',typ=maillage_sdaster ),
- MAILLAGE =SIMP(statut='o',typ=maillage_sdaster ),
- MODELE =SIMP(statut='o',typ=modele_sdaster ),
- TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
- LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster ),
- INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
- LIST_INST =SIMP(statut='f',typ=listr8_sdaster ),
- b_prec_crit =BLOC(condition = "LIST_INST != None or INST != None",
- PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",
- into=("RELATIF","ABSOLU") ),
- ),
- TITRE =SIMP(statut='f',typ='TXM',max='**'),
-) ;
-#& MODIF COMMANDE DATE 03/10/2005 AUTEUR NICOLAS O.NICOLAS
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE VABHHTS J.PELLET
-
-def lire_resu_prod(TYPE_RESU,**args):
- if TYPE_RESU == "EVOL_CHAR" : return evol_char
- if TYPE_RESU == "EVOL_THER" : return evol_ther
- if TYPE_RESU == "EVOL_ELAS" : return evol_elas
- if TYPE_RESU == "EVOL_NOLI" : return evol_noli
- if TYPE_RESU == "DYNA_TRANS" : return dyna_trans
- if TYPE_RESU == "DYNA_HARMO" : return dyna_harmo
- if TYPE_RESU == "HARM_GENE" : return harm_gene
- if TYPE_RESU == "MODE_MECA" : return mode_meca
- if TYPE_RESU == "MODE_MECA_C" : return mode_meca_c
- raise AsException("type de concept resultat non prevu")
-
-# pour éviter d'écrire 3 fois cette liste :
-def l_nom_cham_pas_elga(): return (
- "ACCE", "ACCE_ABSOLU", "CRIT_ELNO_RUPT", "DCHA_ELNO_SIGM",
- "DCHA_NOEU_SIGM", "DEDE_ELNO_DLDE", "DEDE_NOEU_DLDE", "DEGE_ELNO_DEPL", "DEGE_NOEU_DEPL",
- "DEPL", "DEPL_ABSOLU", "DESI_ELNO_DLSI", "DESI_NOEU_DLSI", "DETE_ELNO_DLTE", "DETE_NOEU_DLTE",
- "DURT_ELNO_META", "DURT_NOEU_META", "ECIN_ELEM_DEPL", "EFGE_ELNO_CART", "EFGE_ELNO_DEPL",
- "EFGE_NOEU_CART", "EFGE_NOEU_DEPL", "ENDO_ELNO_SIGA", "ENDO_ELNO_SINO", "ENDO_NOEU_SINO",
- "ENEL_ELNO_ELGA", "ENEL_NOEU_ELGA", "EPEQ_ELNO_TUYO", "EPGR_ELNO", "EPME_ELNO_DEPL",
- "EPMG_ELNO_DEPL", "EPMG_NOEU_DEPL", "EPOT_ELEM_DEPL", "EPSA_ELNO", "EPSA_NOEU",
- "EPSG_ELNO_DEPL", "EPSG_NOEU_DEPL", "EPSI_ELNO_DEPL", "EPSI_ELNO_TUYO", "EPSI_NOEU_DEPL",
- "EPSP_ELNO", "EPSP_ELNO_ZAC", "EPSP_NOEU", "EPSP_NOEU_ZAC", "EQUI_ELNO_EPME", "EQUI_ELNO_EPSI",
- "EQUI_ELNO_SIGM", "EQUI_NOEU_EPME", "EQUI_NOEU_EPSI", "EQUI_NOEU_SIGM", "ERRE_ELEM_NOZ1",
- "ERRE_ELEM_NOZ2", "ERRE_ELNO_ELGA", "ERRE_NOEU_ELGA", "ERTH_ELEM_TEMP", "ERTH_ELNO_ELEM",
- "ETOT_ELEM", "ETOT_ELNO_ELGA", "FLUX_ELNO_TEMP", "FLUX_NOEU_TEMP", "FORC_NODA", "FSUR_2D",
- "FSUR_3D", "FVOL_2D", "FVOL_3D", "GRAD_NOEU_THETA", "HYDR_ELNO_ELGA", "HYDR_NOEU_ELGA",
- "INTE_ELNO_ACTI", "INTE_ELNO_REAC", "INTE_NOEU_ACTI", "INTE_NOEU_REAC", "IRRA",
- "META_ELNO_TEMP", "META_NOEU_TEMP", "PMPB_ELNO_SIEF", "PMPB_NOEU_SIEF",
- "PRES", "PRES_DBEL_DEPL", "PRES_ELNO_DBEL", "PRES_ELNO_IMAG", "PRES_ELNO_REEL",
- "PRES_NOEU_DBEL", "PRES_NOEU_IMAG", "PRES_NOEU_REEL",
- "RADI_ELNO_SIGM", "RADI_NOEU_SIGM", "REAC_NODA",
- "SIEF_ELNO", "SIEF_ELNO_ELGA", "SIEF_NOEU", "SIEF_NOEU_ELGA", "SIEQ_ELNO_TUYO",
- "SIGM_ELNO_CART", "SIGM_ELNO_COQU", "SIGM_ELNO_DEPL", "SIGM_ELNO_SIEF",
- "SIGM_ELNO_TUYO", "SIGM_ELNO_ZAC", "SIGM_NOEU_CART", "SIGM_NOEU_COQU",
- "SIGM_NOEU_DEPL", "SIGM_NOEU_SIEF", "SIGM_NOEU_ZAC", "SIGM_NOZ1_ELGA",
- "SIGM_NOZ2_ELGA", "SIPO_ELNO_DEPL", "SIPO_ELNO_SIEF", "SIPO_NOEU_DEPL",
- "SIPO_NOEU_SIEF", "SIRE_ELNO_DEPL", "SIRE_NOEU_DEPL", "TEMP", "THETA",
- "VALE_CONT", "VALE_NCOU_MAXI", "VARI_ELNO", "VARI_ELNO_COQU",
- "VARI_ELNO_ELGA", "VARI_ELNO_TUYO", "VARI_NOEU", "VARI_NOEU_ELGA", "VARI_NON_LOCAL",
- "VITE", "VITE_ABSOLU", "VITE_VENT",
- )
-
-LIRE_RESU=OPER(nom="LIRE_RESU",op=150,sd_prod=lire_resu_prod,reentrant='n',
- UIinfo={"groupes":("Résultats et champs",)},
- fr="Lire dans un fichier, soit format IDEAS, soit au format ENSIGHT soit au format MED,"
- +" des champs et les stocker dans une SD résultat",
-
-
-# 0) mots clés généraux :
-#----------------------
- TYPE_RESU =SIMP(statut='o',typ='TXM',into=("EVOL_THER","EVOL_ELAS","EVOL_NOLI","MODE_MECA",
- "MODE_MECA_C","DYNA_TRANS","DYNA_HARMO","HARM_GENE",
- "EVOL_CHAR") ),
-
- FORMAT =SIMP(statut='o',typ='TXM',into=("IDEAS","IDEAS_DS58","ENSIGHT","MED") ),
-
- INFO =SIMP(statut='f',typ='I',into=(1,2) ),
- TITRE =SIMP(statut='f',typ='TXM',max='**'),
-
- regles=(UN_PARMI('MAILLAGE','MODELE'),),
- MAILLAGE =SIMP(statut='f',typ=maillage_sdaster),
- MODELE =SIMP(statut='f',typ=modele_sdaster),
-
- NB_VARI =SIMP(statut='f',typ='I' ),
-
-
-# 1) blocs selon le format choisi :
-#---------------------------------
-
-# 1-1 ideas dataset-58 :
-# ----------------------
- b_dataset_58 = BLOC(condition="FORMAT=='IDEAS_DS58'",
- UNITE =SIMP(statut='f',typ='I',defaut= 19 ),
- ),
- b_dataset_58_b = BLOC(condition="(FORMAT=='IDEAS_DS58') and ((TYPE_RESU=='DYNA_TRANS') or\
- (TYPE_RESU=='DYNA_HARMO') or (TYPE_RESU=='HARM_GENE'))",
- UNITE =SIMP(statut='f',typ='I',defaut= 19 ),
- NOM_CHAM=SIMP(statut='o',typ='TXM',into=("DEPL","VITE","ACCE","EPSI_NOEU_DEPL","SIEF_NOEU",) ),
- REDEFI_ORIENT=FACT(statut='f',max='**',
- regles=(PRESENT_PRESENT('CODE_DIR','DIRECTION','NOEUD',),),
- CODE_DIR =SIMP(statut='f',typ='I',into=(1,2,3,) ),
- DIRECTION=SIMP(statut='f',typ='R',min=3,max=3,),
- NOEUD =SIMP(statut='f',typ=no,validators=NoRepeat(),max='**'),),
- ),
-
-# 1-2 ideas :
-# ---------
- b_ideas =BLOC(condition="FORMAT=='IDEAS'",
- UNITE =SIMP(statut='f',typ='I',defaut= 19 ),
-# TEST =SIMP(statut='f',typ='TXM',into=("OUI","NON"),defaut="NON" ),
- NOM_CHAM =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',into=l_nom_cham_pas_elga()),
- FORMAT_IDEAS =FACT(statut='f',max='**',
- regles=(UN_PARMI('POSI_INST','POSI_FREQ'),),
- NOM_CHAM =SIMP(statut='o',typ='TXM',into=l_nom_cham_pas_elga()),
- NUME_DATASET =SIMP(statut='f',typ='I',into=(55,57,2414) ),
- RECORD_3 =SIMP(statut='f',typ='I',max=10),
- RECORD_6 =SIMP(statut='f',typ='I',max=10),
- RECORD_9 =SIMP(statut='f',typ='I',max=10),
- POSI_ORDRE =SIMP(statut='o',typ='I',min=2,max=2),
- POSI_NUME_MODE =SIMP(statut='f',typ='I',min=2,max=2),
- POSI_MASS_GENE =SIMP(statut='f',typ='I',min=2,max=2),
- POSI_AMOR_GENE =SIMP(statut='f',typ='I',min=2,max=2),
- POSI_INST =SIMP(statut='f',typ='I',min=2,max=2),
- POSI_FREQ =SIMP(statut='f',typ='I',min=2,max=2),
- NOM_CMP =SIMP(statut='o',typ='TXM',max='**'),),
- ),
-# 1-3 ensight :
-# -------------
- b_ensight =BLOC(condition="FORMAT=='ENSIGHT'",
- NOM_FICHIER =SIMP(statut='f',typ='TXM'),
- NOM_CHAM =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',into=l_nom_cham_pas_elga()),
- ),
-
-# 1-4 med :
-# ---------
- b_med =BLOC(condition = "FORMAT == 'MED'",fr="Nom du champ dans le fichier MED",
- UNITE =SIMP(statut='f',typ='I',defaut= 81, fr="Le fichier est : fort.n.",),
- FORMAT_MED =FACT(statut='f',max='**',
- regles=(ENSEMBLE('NOM_CMP','NOM_CMP_MED'),),
- NOM_CHAM =SIMP(statut='o',typ='TXM',into=l_nom_cham_pas_elga()),
- NOM_CHAM_MED =SIMP(statut='o',typ='TXM', fr="Nom du champ dans le fichier MED.", ),
- NOM_CMP =SIMP(statut='f',typ='TXM',max='**', fr="Nom des composantes dans ASTER.", ),
- NOM_CMP_MED =SIMP(statut='f',typ='TXM',max='**', fr="Nom des composantes dans MED.", ),
- ),
- ),
-
-# 2) blocs selon le type du résultat :
-#---------------------------------
- b_mode_meca =BLOC(condition="(TYPE_RESU=='MODE_MECA')or(TYPE_RESU=='MODE_MECA_C')",
- MATR_A =SIMP(statut='f',typ=matr_asse_depl_r,),
- MATR_B =SIMP(statut='f',typ=matr_asse_depl_r,),
- ),
-
-
-# 3) autres blocs :
-#---------------------------------
- b_extrac =BLOC(condition="1",fr="accès à un champ dans la structure de données résultat",
- regles=(UN_PARMI('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','INST','LIST_INST','FREQ','LIST_FREQ'),),
- TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
- INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
- LIST_INST =SIMP(statut='f',typ=listr8_sdaster),
- LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster),
- FREQ =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
- LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster),
-
- b_acce_reel =BLOC(condition="(INST != None)or(LIST_INST != None)or(FREQ != None)or(LIST_FREQ != None)",
- PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
- ),
- ),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-
-from Macro.lire_table_ops import lire_table_ops
-
-def lire_table_prod(self,TYPE_TABLE,**args):
- if TYPE_TABLE == "TABLE" : return table_sdaster
- if TYPE_TABLE == "TABL_CARA_GEOM" : return tabl_cara_geom
- if TYPE_TABLE == "TABL_POST_RELE" : return tabl_post_rele
- if TYPE_TABLE == "TABL_POST_USUR" : return tabl_post_usur
- if TYPE_TABLE == "TABL_POST_ALEA" : return tabl_post_alea
- raise AsException("type de concept resultat non prevu")
-
-LIRE_TABLE=MACRO(nom="LIRE_TABLE",op=lire_table_ops,sd_prod=lire_table_prod,
- fr="Lecture d'un fichier contenant une table",
- UIinfo={"groupes":("Table",)},
- UNITE =SIMP(statut='o',typ='I' ),
- FORMAT =SIMP(statut='f',typ='TXM',into=("ASTER",),defaut="ASTER"),
- NUME_TABLE =SIMP(statut='f',typ='I',defaut=1),
- TYPE_TABLE =SIMP(statut='f',typ='TXM',defaut="TABLE",
- into=("TABLE",
- "TABL_CARA_GEOM",
- "TABL_POST_RELE",
- "TABL_POST_USUR",
- "TABL_POST_ALEA" ) ),
- SEPARATEUR =SIMP(statut='o',typ='TXM'),
- PARA =SIMP(statut='f',typ='TXM',max='**'),
- TITRE =SIMP(statut='f',typ='TXM',max='**'),
- ) ;
-
-#& MODIF COMMANDE DATE 12/09/2005 AUTEUR NICOLAS O.NICOLAS
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2005 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# ======================================================================
-
-MAC_MODES=OPER(nom="MAC_MODES",op= 141,sd_prod=table_sdaster,
- fr="Normalisation de modes propres",
- reentrant='f',
- UIinfo={"groupes":("Résolution",)},
- BASE_1 =SIMP(statut='o',typ=(mode_meca,mode_flamb,base_modale) ),
- BASE_2 =SIMP(statut='o',typ=(mode_meca,mode_flamb,base_modale) ),
- MATR_ASSE =SIMP(statut='f',typ=(matr_asse_depl_r,matr_asse_depl_c) ),
- TITRE =SIMP(statut='f',typ='TXM',max='**'),
- INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
-) ;
-#& MODIF COMMANDE DATE 07/11/2005 AUTEUR GNICOLAS G.NICOLAS
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE GNICOLAS G.NICOLAS
-
-from Macro.macr_adap_mail_ops import macr_adap_mail_ops
-
-def macr_adap_mail_prod(self,MAJ_CHAM,ADAPTATION,**args):
- maillage_np1=ADAPTATION['MAILLAGE_NP1']
- self.type_sdprod(maillage_np1,maillage_sdaster)
- if MAJ_CHAM == None:return None
-# Remarque : la liste qui suit doit etre conforme à son homologue de LIRE_CHAMP
- for ch in MAJ_CHAM:
- t=ch['TYPE_CHAM']
- if t[0:5] == "NOEU_":self.type_sdprod(ch['CHAM_MAJ'],eval("cham_no_"+string.lower(t[5:])))
- if t == "ELEM_G_DEPL_R":self.type_sdprod(ch['CHAM_MAJ'],cham_elem_g_depl)
- if t[0:5] == "ELEM_":self.type_sdprod(ch['CHAM_MAJ'],eval("cham_elem_"+string.lower(t[5:])))
- if t == "ELNO_G_DEPL_R":self.type_sdprod(ch['CHAM_MAJ'],cham_elem_g_depl)
- if t[0:5] == "ELNO_":self.type_sdprod(ch['CHAM_MAJ'],eval("cham_elem_"+string.lower(t[5:])))
- if t == "ELGA_G_DEPL_R":self.type_sdprod(ch['CHAM_MAJ'],cham_elem_g_depl)
- if t[0:5] == "ELGA_":self.type_sdprod(ch['CHAM_MAJ'],eval("cham_elem_"+string.lower(t[5:])))
- return None
-
-MACR_ADAP_MAIL=MACRO(nom="MACR_ADAP_MAIL",op=macr_adap_mail_ops,sd_prod=macr_adap_mail_prod,
- fr="Adapter un maillage avec le logiciel HOMARD.",
- ang="Mesh adaptation with HOMARD software.",
- docu="U7.03.01-b",UIinfo={"groupe":("Maillage",)},
-#
-# 1. Le niveau d'information
-#
- INFO = SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
-#
-# 2. Version de HOMARD
-#
- VERSION_HOMARD = SIMP(statut='f',typ='TXM',defaut="V7_7",
- into=("V7_7", "V7_N", "V7_N_PERSO", "V8_N"),
- fr="Version de HOMARD",
- ang="HOMARD release"),
-#
-# 3. Langue des messages issus de HOMARD
-#
- LANGUE = SIMP(statut='f',typ='TXM',defaut="FRANCAIS",
- into=("FRANCAIS","FRENCH","ANGLAIS","ENGLISH",),
- fr="Langue des messages issus de HOMARD.",
- ang="Language for HOMARD messages." ),
-#
-# 4. Gestion des éléments autres que des simplexes
-# 0 : autres elements refuses
-# 1 : raffinement sur les simplexes, mais autres acceptes
-# 2 : tous (defaut)
-#
- NON_SIMPLEXE = SIMP(statut='f',typ='I',defaut=2,into=(0,1,2),
- fr="Type d'éléments acceptés.",
- ang="Type of authorized elements." ),
-#
-# 5. Le type de traitement :
-#
- ADAPTATION =FACT(statut='o',
- fr="Type d'adaptation",
- ang="Type of adaptation",
-#
-# 5.1. Deux choix d'adaptation exclusifs :
-#
-# 5.1.
-# A. Pilote par une consigne, avec trois variantes :
-# . Raffinement et deraffinement
-# . Raffinement seul
-# . Deraffinement seul
-# B. Uniforme, avec trois variantes :
-# . Raffinement seul
-# . Deraffinement seul
-# . Rien : le maillage est le meme a la sortie et a l'entree
-#
- regles=(
- UN_PARMI('LIBRE','UNIFORME'),
- ),
- LIBRE = SIMP(statut='f',typ='TXM',
- into=("RAFF_DERA","RAFFINEMENT","DERAFFINEMENT"),
- fr="Adaptation selon un indicateur d'erreur.",
- ang="Adaptation among an error indicator" ),
- UNIFORME = SIMP(statut='f',typ='TXM',
- into=("RAFFINEMENT","DERAFFINEMENT","RIEN"),
- fr="Adaptation uniforme.",
- ang="Uniform adaptation" ),
-#
-# 5.2. Quel que soit le type de traitement, il faut donner :
-# A. Le concept du maillage initial
-# B. Le concept du maillage final
-#
- MAILLAGE_N = SIMP(statut='o',typ=maillage_sdaster,
- fr="Maillage avant adaptation",
- ang="Mesh before adaptation" ),
- MAILLAGE_NP1 = SIMP(statut='o',typ=CO,
- fr="Maillage apres adaptation",
- ang="Mesh after adaptation" ),
-#
-# 5.3. Pour de l'adaptation libre, il faut un indicateur d'erreur et/ou des definitions de zones
-#
- b_indicateur_d_erreur =BLOC( condition = " LIBRE != None " ,
- fr="Choix de l'indicateur d'erreur",
- ang="Selection of error indicator",
-#
-# 5.3.1. L'indicateur
-#
- regles=(UN_PARMI('CHAM_GD','RESULTAT_N')),
-#
-# 5.3.1.1. Sous forme de champ de grandeur
-#
- CHAM_GD =SIMP(statut='f',typ=cham_gd_sdaster,
- fr="Champ de grandeur Code_Aster contenant l'indicateur d'erreur",
- ang="Champ de grandeur with error indicator" ),
-#
-# 5.3.1.2. Sous forme de concept resultat_sdaster
-#
- RESULTAT_N = SIMP(statut='f',typ=(evol_elas,evol_noli,evol_ther) ,
- fr="Concept resultat Code_Aster contenant l'indicateur d'erreur",
- ang="Result with error indicator" ),
-#
- b_champ_indicateur =BLOC(condition="(RESULTAT_N != None)",
- INDICATEUR = SIMP(statut='o',typ='TXM',
- fr="Champ de l'indicateur d'erreur",
- ang="Error indicator field" ),
- ),
-#
-# 5.3.2. La composante retenue
-#
- NOM_CMP_INDICA = SIMP(statut='o',typ='TXM',
- fr="Composante retenue",
- ang="Selected component" ),
-#
-# 5.3.3. Le paramètre temporel pour l'indicateur
-#
- b_parametre_temporel =BLOC(condition="(RESULTAT_N != None)",
-#
- regles=(EXCLUS('NUME_ORDRE','INST'),),
-#
-# 5.3.3.1. Soit le numero d'ordre
-#
- NUME_ORDRE = SIMP(statut='f',typ='I',
- fr="Numero d ordre",
- ang="Rank" ),
-#
-# 5.3.3.2. Soit l'instant
-# 5.3.3.2.1. Sa valeur
-#
- INST = SIMP(statut='f',typ='R',
- fr="Instant associé",
- ang="Instant" ),
-#
-# 5.3.3.2.2. La précision du choix de l'instant
-#
- b_precision =BLOC(condition="(INST != None)",
- PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3,
- fr="Précision sur le choix de l'instant associé",
- ang="Accuracy over instant choice" ),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU"),
- fr="Critère de précision sur le choix de l'instant associé",
- ang="Accuracy criterium over instant choice" ),
- ),
-#
- ),
-#
- ) ,
-#
-# 5.4. Les criteres pour de l'adaptation libre :
-# absolu, relatif, en proportion d'entite
-# 5.4.1. Pour le raffinement :
-#
- b_critere_de_raffinement =BLOC( condition = " ( LIBRE == 'RAFF_DERA' ) or ( LIBRE == 'RAFFINEMENT' ) " ,
- fr="Critère de raffinement.",
- ang="Refinement threshold.",
- regles=(UN_PARMI ( 'CRIT_RAFF_ABS', 'CRIT_RAFF_REL', 'CRIT_RAFF_PE' ),),
- CRIT_RAFF_ABS = SIMP(statut='f',typ='R',
- fr="Critère absolu",
- ang="Absolute threshold" ),
- CRIT_RAFF_REL = SIMP(statut='f',typ='R',
- fr="Critère relatif : fraction entre 0 et 1",
- ang="Relative threshold : ratio between 0 and 1" ),
- CRIT_RAFF_PE = SIMP(statut='f',typ='R',
- fr="Pourcentage d'éléments : fraction entre 0 et 1",
- ang="Percentage of elements : ratio between 0 and 1" ),
- ) ,
-#
-# 5.4.2. Pour le deraffinement :
-#
- b_critere_de_deraffinement =BLOC ( condition = " ( LIBRE == 'RAFF_DERA' ) or ( LIBRE == 'DERAFFINEMENT' ) " ,
- fr="Critère de déraffinement.",
- ang="Unrefinement threshold.",
- regles=(UN_PARMI ( 'CRIT_DERA_ABS', 'CRIT_DERA_REL', 'CRIT_DERA_PE' ),),
- CRIT_DERA_ABS = SIMP(statut='f',typ='R' ,
- fr="Critère absolu",
- ang="Absolute threshold" ),
- CRIT_DERA_REL = SIMP(statut='f',typ='R',
- fr="Critère relatif : fraction entre 0 et 1",
- ang="Relative threshold : ratio between 0 and 1" ),
- CRIT_DERA_PE = SIMP(statut='f',typ='R',
- fr="Pourcentage d'éléments : fraction entre 0 et 1",
- ang="Percentage of elements : ratio between 0 and 1" ),
- ) ,
-#
-# 5.5. Les niveaux extremes pour le maillage adapte
-# 5.5.1. Pour le raffinement :
-#
- b_niveau_maximum =BLOC ( condition = " ( LIBRE == 'RAFF_DERA' ) or ( LIBRE == 'RAFFINEMENT' ) or \
- ( UNIFORME == 'RAFFINEMENT' ) " ,
- fr="Niveau maximum de profondeur de raffinement",
- ang="Maximum level for refinement",
- NIVE_MAX = SIMP(statut='f',typ='I' ),
- ) ,
-#
-# 5.5.2. Pour le deraffinement :
-#
- b_niveau_minimum =BLOC ( condition = " ( LIBRE == 'RAFF_DERA' ) or ( LIBRE == 'DERAFFINEMENT' ) or \
- ( UNIFORME == 'DERAFFINEMENT' ) " ,
- fr="Niveau minimum de profondeur de déraffinement",
- ang="Minimum level for unrefinement",
- NIVE_MIN = SIMP(statut='f',typ='I' ),
- ) ,
-#
- ),
-#
-# 6. Suivi d'une frontiere
-#
- MAILLAGE_FRONTIERE = SIMP(statut='f',typ=maillage_sdaster,
- fr="Maillage de la frontiere à suivre",
- ang="Boundary mesh" ),
-#
- b_frontiere =BLOC( condition = " MAILLAGE_FRONTIERE != None " ,
- fr="Groupes définissant la frontière",
- ang="Groups which define the boundary",
- GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**' ),
- ) ,
-#
-# 7. Mise à jour de champs sur le nouveau maillage
-#
- MAJ_CHAM =FACT(statut='f',max='**',
- fr="Mise à jour de champs sur le nouveau maillage.",
- ang="Updating of fields over the new mesh.",
-#
-# 7.1. Le nom du champ qui contiendra le resultat de la mise a jour
-#
- CHAM_MAJ = SIMP(statut='o',typ=CO,
- fr="Nom du champ qui contiendra le champ mis à jour",
- ang="Name of the field for the updated field"),
-#
-# 7.2. Le type du champ qui contiendra le resultat de la mise a jour
-#
- TYPE_CHAM = SIMP(statut='o',typ='TXM',into=C_TYPE_CHAM_INTO(),
- fr="Type du champ qui contiendra le champ mis à jour",
- ang="Type of the field for the updated field" ),
-#
-# 7.3. Le champ a interpoler
-#
- regles=(UN_PARMI('CHAM_GD','RESULTAT')),
-#
-# 7.3.1. Sous forme de champ de grandeur
-#
- CHAM_GD =SIMP(statut='f',typ=cham_gd_sdaster,
- fr="Champ de grandeur Code_Aster contenant le champ à mettre à jour",
- ang="Champ de grandeur with field to be updated" ),
-#
-# 7.3.2. Le nom du resultat du champ a interpoler
-#
- RESULTAT = SIMP(statut='f',
- typ=(evol_elas,evol_noli,evol_ther),
- fr="Resultat contenant le champ à mettre à jour",
- ang="Result with field to be updated" ),
-#
- NOM_CHAM = SIMP(statut='f',typ='TXM',
- fr="Nom du champ à mettre à jour",
- ang="Name of the field to be updated" ),
-#
-# 7.4. Le paramètre temporel pour le champ a interpoler
-#
- b_parametre_temporel =BLOC(condition="(RESULTAT != None)",
-#
- regles=(EXCLUS('NUME_ORDRE','INST'),),
-#
-# 7.4.1. Soit le numero d'ordre
-#
- NUME_ORDRE = SIMP(statut='f',typ='I',
- fr="Numero d ordre du champ à mettre à jour",
- ang="Rank of the field to be updated" ),
-#
-# 7.4.2. Soit l'instant
-# 7.4.2.1. Sa valeur
-#
- INST = SIMP(statut='f',typ='R',
- fr="Instant associé",
- ang="Instant" ),
-#
-# 7.4.2.2. La précision du choix de l'instant
-#
- b_precision =BLOC(condition="(INST != None)",
- PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3,
- fr="Précision sur le choix de l'instant associé",
- ang="Accuracy over instant choice" ),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU"),
- fr="Critère de précision sur le choix de l'instant associé",
- ang="Accuracy criterium over instant choice" ),),
-#
- ),
- ),
-#
-# 8. Les options d'analyse de maillage ; par defaut, on ne fait que les nombres
-# 8.1. Nombre de noeuds et éléments
-#
- NOMBRE = SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON"),
- fr="Nombre de noeuds et éléments du maillage",
- ang="Number of nodes and éléments in the mesh" ),
-#
-# 8.2. Determination de la qualité des éléments du maillage
-#
- QUALITE = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),
- fr="Qualité du maillage",
- ang="Mesh quality" ),
-#
-# 8.3. Connexite du maillage
-#
- CONNEXITE = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),
- fr="Connexité du maillage.",
- ang="Mesh connexity." ),
-#
-# 8.4. Taille des sous-domaines du maillage
-#
- TAILLE = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),
- fr="Tailles des sous-domaines du maillage.",
- ang="Sizes of mesh sub-domains." ),
-#
-# 8.5. Controle de la non-interpenetration des éléments
-#
- INTERPENETRATION=SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON"),
- fr="Controle de la non interpénétration des éléments.",
- ang="Overlapping checking." ),
-#
-) ;
-#& MODIF COMMANDE DATE 07/10/2005 AUTEUR CIBHHPD L.SALMONA
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE F1BHHAJ J.ANGLES
-from Macro.macr_ascouf_calc_ops import macr_ascouf_calc_ops
-def macr_ascouf_calc_prod(self,MODELE,CHAM_MATER,CARA_ELEM,FOND_FISS,CHARGE,RESU_THER,**args):
- self.type_sdprod(MODELE,modele_sdaster)
- if CHAM_MATER != None:self.type_sdprod(CHAM_MATER,cham_mater)
- if CARA_ELEM != None:self.type_sdprod(CARA_ELEM,cara_elem)
- if FOND_FISS != None:self.type_sdprod(FOND_FISS,fond_fiss)
- if CHARGE != None:self.type_sdprod(CHARGE,char_meca)
- if RESU_THER != None:self.type_sdprod(RESU_THER,evol_ther)
- return evol_noli
-
-MACR_ASCOUF_CALC=MACRO(nom="MACR_ASCOUF_CALC",op=macr_ascouf_calc_ops,sd_prod=macr_ascouf_calc_prod,
- fr="Réalise l'analyse thermomécanique du coude dont le maillage a été concu par MACR_ASCOUF_MAIL",
- reentrant='n',
- UIinfo={"groupes":("Outils métier",)},
- regles=(UN_PARMI('COMP_INCR','COMP_ELAS'),),
-
- TYPE_MAILLAGE =SIMP(statut='o',typ='TXM',
- into=("SAIN",
- "FISS_COUDE",
- "FISS_AXIS_DEB",
- "SOUS_EPAIS_COUDE"
- ) ),
-
- CL_BOL_P2_GV =FACT(statut='f',
- ANGLE =SIMP(statut='o',typ='R' ),
- AZIMUT =SIMP(statut='f',typ='R',defaut= 90. ),
- ),
-
- MAILLAGE =SIMP(statut='o',typ=maillage_sdaster ),
- MODELE =SIMP(statut='o',typ=CO,),
- CHAM_MATER =SIMP(statut='f',typ=CO,),
- CARA_ELEM =SIMP(statut='f',typ=CO,),
- FOND_FISS =SIMP(statut='f',typ=CO,),
- CHARGE =SIMP(statut='f',typ=CO,),
- RESU_THER =SIMP(statut='f',typ=CO,),
-
- AFFE_MATERIAU =FACT(statut='o',max=3,
- regles=(UN_PARMI('TOUT','GROUP_MA'),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ='TXM',into=("COUDE","BOL") ),
- MATER =SIMP(statut='o',typ=mater_sdaster ),
- TEMP_REF =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- ),
-
- PRES_REP =FACT(statut='f',
- PRES =SIMP(statut='o',typ='R' ),
- EFFE_FOND_P1 =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
- PRES_LEVRE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
- FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- ),
-
- ECHANGE =FACT(statut='f',
- COEF_H =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- TEMP_EXT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- ),
-
- TORS_P1 =FACT(statut='f',max=6,
- regles=(AU_MOINS_UN('FX','FY','FZ','MX','MY','MZ'),),
- FX =SIMP(statut='f',typ='R' ),
- FY =SIMP(statut='f',typ='R' ),
- FZ =SIMP(statut='f',typ='R' ),
- MX =SIMP(statut='f',typ='R' ),
- MY =SIMP(statut='f',typ='R' ),
- MZ =SIMP(statut='f',typ='R' ),
- FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- ),
-
- COMP_INCR =FACT(statut='f',
- RELATION =SIMP(statut='o',typ='TXM',into=("VMIS_ISOT_TRAC",) ),
- VMIS_ISOT_TRAC =SIMP(statut='c',typ='I',defaut= 2,into=( 2 ,) ),
- RESI_INTE_RELA =SIMP(statut='f',typ='R'
- ,defaut= 1.0E-6),
- ITER_INTE_MAXI =SIMP(statut='f',typ='I',defaut= 10 ),
- ITER_INTE_PAS =SIMP(statut='f',typ='I',defaut= 0 ),
- RESO_INTE =SIMP(statut='f',typ='TXM',defaut="IMPLICITE",
- into=("RUNGE_KUTTA_2","RUNGE_KUTTA_4","IMPLICITE")),
- ),
-
- COMP_ELAS =FACT(statut='f',
- RELATION =SIMP(statut='o',typ='TXM',into=("ELAS","ELAS_VMIS_TRAC") ),
- ELAS =SIMP(statut='c',typ='I',defaut= 1,into=( 1 ,) ),
- ELAS_VMIS_TRAC =SIMP(statut='c',typ='I',defaut= 1,into=( 1 ,) ),
- RESI_INTE_RELA =SIMP(statut='f',typ='R',defaut= 1.0E-6),
- ITER_INTE_MAXI =SIMP(statut='f',typ='I',defaut= 10 ),
- ITER_INTE_PAS =SIMP(statut='f',typ='I',defaut= 0 ),
- RESO_INTE =SIMP(statut='f',typ='TXM',defaut="IMPLICITE",
- into=("RUNGE_KUTTA_2","RUNGE_KUTTA_4","IMPLICITE")),
- ),
-
- SOLVEUR =FACT(statut='d',
- METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC") ),
- b_mult_front =BLOC(condition = "METHODE == 'MULT_FRONT' ",fr="Paramètres de la méthode multi frontale",
- RENUM =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ),
- ),
- b_ldlt =BLOC(condition = "METHODE == 'LDLT' ",fr="Paramètres de la méthode LDLT",
- RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("RCMK","SANS") ),
- ),
- b_ldlt_mult =BLOC(condition = "METHODE == 'LDLT' or METHODE == 'MULT_FRONT' ",
- fr="Paramètres relatifs à la non inversibilité de la matrice à factorise",
- NPREC =SIMP(statut='f',typ='I',defaut= 8 ),
- STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
- ),
- b_gcpc =BLOC(condition = "METHODE == 'GCPC' ", fr="Paramètres de la méthode du gradient conjugué",
- PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC",),defaut="LDLT_INC" ),
- NIVE_REMPLISSAGE=SIMP(statut='f',typ='I',defaut= 0 ),
- RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ),
- RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ),
- NMAX_ITER =SIMP(statut='f',typ='I',defaut= 0 ),
- ),
- SYME =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
- ),
-
- CONVERGENCE =FACT(statut='d',
- RESI_GLOB_MAXI =SIMP(statut='f',typ='R'),
- RESI_GLOB_RELA =SIMP(statut='f',typ='R'),
- ITER_GLOB_MAXI =SIMP(statut='f',typ='I',defaut=10),
- ARRET =SIMP(statut='f',typ='TXM',defaut="OUI"),
- ),
-
- NEWTON =FACT(statut='d',
- REAC_INCR =SIMP(statut='f',typ='I',defaut= 1 ),
- PREDICTION =SIMP(statut='f',typ='TXM',into=("DEPL_CALCULE","TANGENTE","ELASTIQUE","EXTRAPOL") ),
- MATRICE =SIMP(statut='f',typ='TXM',defaut="TANGENTE",into=("TANGENTE","ELASTIQUE") ),
- REAC_ITER =SIMP(statut='f',typ='I',defaut=0),
- EVOL_NOLI =SIMP(statut='f',typ=evol_noli),
- ),
-
- RECH_LINEAIRE =FACT(statut='d',
- RESI_LINE_RELA =SIMP(statut='f',typ='R',defaut= 1.0E-3 ),
- ITER_LINE_MAXI =SIMP(statut='f',typ='I',defaut= 3),
- ),
-
- INCREMENT =FACT(statut='o',
- regles=(EXCLUS('NUME_INST_INIT','INST_INIT'),
- EXCLUS('NUME_INST_FIN','INST_FIN'),),
- LIST_INST =SIMP(statut='o',typ=listr8_sdaster),
- EVOLUTION =SIMP(statut='f',typ='TXM',defaut="CHRONOLOGIQUE",
- into=("CHRONOLOGIQUE","RETROGRADE","SANS",) ),
- NUME_INST_INIT =SIMP(statut='f',typ='I'),
- INST_INIT =SIMP(statut='f',typ='R'),
- NUME_INST_FIN =SIMP(statut='f',typ='I'),
- INST_FIN =SIMP(statut='f',typ='R'),
- PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3 ),
- SUBD_PAS =SIMP(statut='f',typ='I',defaut=1),
- SUBD_PAS_MINI =SIMP(statut='f',typ='R'),
- COEF_SUBD_PAS_1 =SIMP(statut='f',typ='R',defaut= 1.0E+0),
- ),
-
- THETA_3D =FACT(statut='f',max='**',
- R_INF =SIMP(statut='o',typ='R' ),
- R_SUP =SIMP(statut='o',typ='R' ),
- ),
-
- IMPR_TABLE =FACT(statut='f',
- regles=(UN_PARMI('TOUT_PARA','NOM_PARA', ),
- PRESENT_PRESENT('TOUT_PARA','ANGLE', ),
- PRESENT_PRESENT('TOUT_PARA','R_CINTR', ),
- UN_PARMI('POSI_CURV_LONGI','POSI_ANGUL',),),
- NOM_PARA =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=4,
- into=("TRESCA_MEMBRANE",
- "TRESCA_MFLE",
- "TRESCA",
- "SI_LONG"
- "SI_RADI"
- "SI_CIRC"
- ) ),
- TOUT_PARA =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- ANGLE =SIMP(statut='f',typ='R',max='**' ),
- R_CINTR =SIMP(statut='f',typ='R',max='**' ),
- POSI_CURV_LONGI =SIMP(statut='f',typ='R',max='**' ),
- POSI_ANGUL =SIMP(statut='f',typ='R',max='**' ),
- TRANSFORMEE =SIMP(statut='f',typ='TXM',defaut="COUDE",into=("COUDE","TUBE") ),
- ),
-
- IMPRESSION =FACT(statut='f',
- FORMAT =SIMP(statut='f',typ='TXM',defaut="RESULTAT",
- into=("RESULTAT","ASTER","IDEAS","CASTEM") ),
-
- b_format_ideas =BLOC(condition="FORMAT=='IDEAS'",fr="version Ideas",
- VERSION =SIMP(statut='f',typ='I',defaut=5,into=(4,5)),
- ),
-
- b_format_castem =BLOC(condition="FORMAT=='CASTEM'",fr="version Castem",
- NIVE_GIBI =SIMP(statut='f',typ='I',defaut=10,into=(3,10)),
- ),
-
- ),
-
- TITRE =SIMP(statut='f',typ='TXM' ),
-
- INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE F1BHHAJ J.ANGLES
-from Macro.macr_ascouf_mail_ops import macr_ascouf_mail_ops
-MACR_ASCOUF_MAIL=MACRO(nom="MACR_ASCOUF_MAIL",op=macr_ascouf_mail_ops,sd_prod=maillage_sdaster,
- fr="Engendre le maillage d'un coude sain ou comportant une fissure ou une (ou plusieurs) sous-épaisseur(s)",
- UIinfo={"groupes":("Outils métier",)},reentrant='n',
-
- regles=(EXCLUS('SOUS_EPAIS_COUDE','FISS_COUDE','SOUS_EPAIS_MULTI'),),
-
- EXEC_MAILLAGE =FACT(statut='o',
- LOGICIEL =SIMP(statut='o',typ='TXM',defaut="GIBI2000",into=("GIBI98","GIBI2000") ),
- UNITE_DATG =SIMP(statut='f',typ='I',defaut=70),
- UNITE_MGIB =SIMP(statut='f',typ='I',defaut=19),
- NIVE_GIBI =SIMP(statut='f',typ='I',defaut=10,into=(3,4,5,6,7,8,9,10,11)),
- ),
-
- TYPE_ELEM =SIMP(statut='f',typ='TXM',defaut="CU20",into=("CU20","CUB8") ),
-
- COUDE =FACT(statut='o',
- ANGLE =SIMP(statut='o',typ='R' ),
- R_CINTR =SIMP(statut='o',typ='R' ),
- L_TUBE_P1 =SIMP(statut='o',typ='R' ),
- L_TUBE_P2 =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- NB_ELEM_EPAIS =SIMP(statut='f',typ='I',defaut= 3 ),
- SYME =SIMP(statut='f',typ='TXM',defaut="ENTIER",into=("ENTIER","QUART","DEMI") ),
- TRANSFORMEE =SIMP(statut='o',typ='TXM',defaut="COUDE",into=("COUDE","TUBE") ),
- b_transf_coude =BLOC(condition = "TRANSFORMEE == 'COUDE' ",
- DEXT =SIMP(statut='o',typ='R' ),
- EPAIS =SIMP(statut='o',typ='R' ),
- SUR_EPAIS =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- BOL_P2 =SIMP(statut='f',typ='TXM',into=("ASP_MPP","CUVE","GV") ),
- ),
- b_transf_tube =BLOC(condition = "TRANSFORMEE == 'TUBE' ",
- TRAN_EPAIS =SIMP(statut='o',typ='TXM',defaut="NON",into=("OUI","NON") ),
- b_trans_epais_oui =BLOC(condition = "TRAN_EPAIS == 'OUI' ",
- regles=(ENSEMBLE('ANGL_TETA2','EPAIS_TI'),
- UN_PARMI('ABSC_CURV_TRAN','POSI_ANGU_TRAN'),),
- DEXT_T1 =SIMP(statut='o',typ='R' ),
- EPAIS_T1 =SIMP(statut='o',typ='R' ),
- EPAIS_T2 =SIMP(statut='o',typ='R' ),
- EPAIS_TI =SIMP(statut='f',typ='R' ),
- ANGL_TETA1 =SIMP(statut='o',typ='R' ),
- ANGL_TETA2 =SIMP(statut='f',typ='R' ),
- ABSC_CURV_TRAN =SIMP(statut='f',typ='R' ),
- POSI_ANGU_TRAN =SIMP(statut='f',typ='R' ),
- ),
- b_trans_epais_non =BLOC(condition = "TRAN_EPAIS == 'NON' ",
- DEXT =SIMP(statut='o',typ='R' ),
- EPAIS =SIMP(statut='o',typ='R' ),
- SUR_EPAIS =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- BOL_P2 =SIMP(statut='f',typ='TXM',into=("ASP_MPP","CUVE","GV") ),
- ),
- ),
- ),
-
- SOUS_EPAIS_COUDE=FACT(statut='f',
- regles=(UN_PARMI('POSI_CURV_LONGI','POSI_ANGUL'),
- UN_PARMI('POSI_CURV_CIRC','AZIMUT'),),
- TYPE =SIMP(statut='o',typ='TXM',into=("AXIS","ELLI") ),
- AXE_CIRC =SIMP(statut='f',typ='R' ),
- AXE_LONGI =SIMP(statut='o',typ='R' ),
- PROFONDEUR =SIMP(statut='o',typ='R' ),
- POSI_CURV_LONGI =SIMP(statut='f',typ='R' ),
- POSI_ANGUL =SIMP(statut='f',typ='R' ),
- POSI_CURV_CIRC =SIMP(statut='f',typ='R' ),
- AZIMUT =SIMP(statut='f',typ='R' ),
- SOUS_EPAIS =SIMP(statut='o',typ='TXM',into=("INTERNE","EXTERNE") ),
- NB_ELEM_LONGI =SIMP(statut='o',typ='I' ),
- NB_ELEM_CIRC =SIMP(statut='o',typ='I' ),
- NB_ELEM_RADI =SIMP(statut='f',typ='I',defaut= 3 ),
- EMPREINTE =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
- ),
-
- SOUS_EPAIS_MULTI=FACT(statut='f',max='**',
- regles=(UN_PARMI('POSI_CURV_LONGI','POSI_ANGUL'),
- UN_PARMI('POSI_CURV_CIRC','AZIMUT'),),
- TYPE =SIMP(statut='o',typ='TXM',into=("AXIS","ELLI") ),
- AXE_CIRC =SIMP(statut='f',typ='R' ),
- AXE_LONGI =SIMP(statut='o',typ='R' ),
- PROFONDEUR =SIMP(statut='o',typ='R' ),
- POSI_CURV_LONGI =SIMP(statut='f',typ='R' ),
- POSI_ANGUL =SIMP(statut='f',typ='R' ),
- POSI_CURV_CIRC =SIMP(statut='f',typ='R' ),
- AZIMUT =SIMP(statut='f',typ='R' ),
- SOUS_EPAIS =SIMP(statut='o',typ='TXM',into=("INTERNE","EXTERNE") ),
- NB_ELEM_LONGI =SIMP(statut='o',typ='I' ),
- NB_ELEM_CIRC =SIMP(statut='o',typ='I' ),
- EMPREINTE =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
- ),
-
- FISS_COUDE =FACT(statut='f',
- regles=(UN_PARMI('ABSC_CURV','POSI_ANGUL'),),
- AXIS =SIMP(statut='f',typ='TXM',into=("OUI","NON"),defaut="NON" ),
- b_axis_non =BLOC(condition = "AXIS == 'NON' ",
- LONGUEUR =SIMP(statut='o',typ='R' ),
- ),
- b_axis_oui =BLOC(condition = "AXIS == 'OUI' ",
- LONGUEUR =SIMP(statut='f',typ='R' ),
- ),
- PROFONDEUR =SIMP(statut='o',typ='R' ),
- ABSC_CURV =SIMP(statut='f',typ='R' ),
- POSI_ANGUL =SIMP(statut='f',typ='R' ),
- FISSURE =SIMP(statut='o',typ='TXM',into=("DEB_INT","DEB_EXT") ),
- AZIMUT =SIMP(statut='f',typ='R',defaut= 90. ),
- ORIEN =SIMP(statut='o',typ='R',
- into=(45.,-45.,90.,0.E+0) ),
- NB_TRANCHE =SIMP(statut='o',typ='I' ),
- NB_SECTEUR =SIMP(statut='o',typ='I' ),
- NB_COURONNE =SIMP(statut='o',typ='I' ),
- RAYON_TORE =SIMP(statut='f',typ='R' ),
- COEF_MULT_RC2 =SIMP(statut='f',typ='R',defaut= 1. ),
- COEF_MULT_RC3 =SIMP(statut='f',typ='R' ),
- ANGL_OUVERTURE =SIMP(statut='f',typ='R',defaut= 0.5 ),
- ),
-
- IMPRESSION =FACT(statut='f',max='**',
- regles=(PRESENT_PRESENT('FICHIER','UNITE'),),
- FORMAT =SIMP(statut='f',typ='TXM',defaut="ASTER",
- into=("ASTER","IDEAS","CASTEM") ),
- b_format_ideas =BLOC(condition="FORMAT=='IDEAS'",fr="version Ideas",
- VERSION =SIMP(statut='f',typ='I',defaut=5,into=(4,5)),
- ),
- b_format_castem =BLOC(condition="FORMAT=='CASTEM'",fr="version Castem",
- NIVE_GIBI =SIMP(statut='f',typ='I',defaut=10,into=(3,10)),
- ),
- FICHIER =SIMP(statut='f',typ='TXM' ),
- UNITE =SIMP(statut='f',typ='I' ),
- ),
-
- INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ),
-) ;
-#& MODIF COMMANDE DATE 07/10/2005 AUTEUR CIBHHPD L.SALMONA
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE F1BHHAJ J.ANGLES
-from Macro.macr_aspic_calc_ops import macr_aspic_calc_ops
-
-def macr_aspic_calc_prod(self,MODELE,CHAM_MATER,CARA_ELEM,FOND_FISS_1,FOND_FISS_2,CHARGE,RESU_THER,**args):
- if MODELE != None:self.type_sdprod(MODELE,modele_sdaster)
- if CHAM_MATER != None:self.type_sdprod(CHAM_MATER,cham_mater)
- if CARA_ELEM != None:self.type_sdprod(CARA_ELEM,cara_elem)
- if FOND_FISS_1 != None:self.type_sdprod(FOND_FISS_1,fond_fiss)
- if FOND_FISS_2 != None:self.type_sdprod(FOND_FISS_2,fond_fiss)
- if CHARGE != None:self.type_sdprod(CHARGE,char_meca)
- if RESU_THER != None:self.type_sdprod(RESU_THER,evol_ther)
- return evol_noli
-
-MACR_ASPIC_CALC=MACRO(nom="MACR_ASPIC_CALC",op=macr_aspic_calc_ops,sd_prod=macr_aspic_calc_prod,
- fr="Réalise un calcul prédéfini de piquages sains ou fissurés ainsi que les post-traitements associés ",
- UIinfo={"groupes":("Outils métier",)},reentrant='n',
- regles=(UN_PARMI('COMP_INCR','COMP_ELAS'),),
-
- TYPE_MAILLAGE =SIMP(statut='o',typ='TXM',
- into=("SAIN_FIN","SAIN_GROS","FISS_COUR_DEB","FISS_COUR_NONDEB","FISS_LONG_DEB",
- "FISS_LONG_NONDEB","FISS_AXIS_DEB","FISS_AXIS_NONDEB") ),
-
- TUBULURE =FACT(statut='o',
- TYPE =SIMP(statut='o',typ='TXM',into=("TYPE_1","TYPE_2") ),
- ),
- MAILLAGE =SIMP(statut='o',typ=maillage_sdaster),
- MODELE =SIMP(statut='f',typ=CO,),
- CHAM_MATER =SIMP(statut='f',typ=CO,),
- CARA_ELEM =SIMP(statut='f',typ=CO,),
- FOND_FISS_1 =SIMP(statut='f',typ=CO,),
- FOND_FISS_2 =SIMP(statut='f',typ=CO,),
- CHARGE =SIMP(statut='f',typ=CO,),
- RESU_THER =SIMP(statut='f',typ=CO,),
-
- AFFE_MATERIAU =FACT(statut='o',max=3,
- regles=(UN_PARMI('TOUT','GROUP_MA'),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",)),
- GROUP_MA =SIMP(statut='f',typ='TXM',into=("TUBU","CORP","SOUD","SOUDCORP","SOUDTUBU") ),
- MATER =SIMP(statut='o',typ=mater_sdaster),
- TEMP_REF =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- RCCM =SIMP(statut='o',typ='TXM',into=("OUI","NON")),
- ),
-
- EQUILIBRE =FACT(statut='o',
- NOEUD =SIMP(statut='o',typ=no),
- ),
-
- PRES_REP =FACT(statut='o',
- PRES =SIMP(statut='o',typ='R'),
- NOEUD =SIMP(statut='f',typ=no),
- EFFE_FOND =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")),
- PRES_LEVRE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
- FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- ),
-
- ECHANGE =FACT(statut='f',
- COEF_H_TUBU =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- COEF_H_CORP =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- TEMP_EXT =SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- ),
-
- TORS_CORP =FACT(statut='f',max=6,
- regles=(AU_MOINS_UN('FX','FY','FZ','MX','MY','MZ'),),
- NOEUD =SIMP(statut='o',typ=no),
- FX =SIMP(statut='f',typ='R'),
- FY =SIMP(statut='f',typ='R'),
- FZ =SIMP(statut='f',typ='R'),
- MX =SIMP(statut='f',typ='R'),
- MY =SIMP(statut='f',typ='R'),
- MZ =SIMP(statut='f',typ='R'),
- FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- ),
-
- TORS_TUBU =FACT(statut='f',max=6,
- regles=(AU_MOINS_UN('FX','FY','FZ','MX','MY','MZ'),),
- FX =SIMP(statut='f',typ='R'),
- FY =SIMP(statut='f',typ='R'),
- FZ =SIMP(statut='f',typ='R'),
- MX =SIMP(statut='f',typ='R'),
- MY =SIMP(statut='f',typ='R'),
- MZ =SIMP(statut='f',typ='R'),
- FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- ),
-
- COMP_INCR =FACT(statut='f',
- RELATION =SIMP(statut='o',typ='TXM',into=("VMIS_ISOT_TRAC",) ),
- VMIS_ISOT_TRAC =SIMP(statut='c',typ='I',defaut= 2,into=( 2 ,) ),
- RESI_INTE_RELA =SIMP(statut='f',typ='R',defaut=1.0E-6),
- ITER_INTE_MAXI =SIMP(statut='f',typ='I',defaut=10),
- ITER_INTE_PAS =SIMP(statut='f',typ='I',defaut=0),
- RESO_INTE =SIMP(statut='f',typ='TXM',defaut="IMPLICITE",
- into=("RUNGE_KUTTA_2","RUNGE_KUTTA_4","IMPLICITE")),
- ),
-
- COMP_ELAS =FACT(statut='f',
- RELATION =SIMP(statut='o',typ='TXM',into=("ELAS","ELAS_VMIS_TRAC") ),
- ELAS =SIMP(statut='c',typ='I',defaut= 1,into=( 1 ,) ),
- ELAS_VMIS_TRAC =SIMP(statut='c',typ='I',defaut= 1,into=( 1 ,) ),
- RESI_INTE_RELA =SIMP(statut='f',typ='R',defaut= 1.0E-6),
- ITER_INTE_MAXI =SIMP(statut='f',typ='I',defaut= 10 ),
- ITER_INTE_PAS =SIMP(statut='f',typ='I',defaut= 0 ),
- RESO_INTE =SIMP(statut='f',typ='TXM',defaut="IMPLICITE",
- into=("RUNGE_KUTTA_2","RUNGE_KUTTA_4","IMPLICITE")),
- ),
-
- THETA_3D =FACT(statut='f',max='**',
- R_INF =SIMP(statut='o',typ='R'),
- R_SUP =SIMP(statut='o',typ='R'),
- ),
-
- OPTION =SIMP(statut='f',typ='TXM',into=("CALC_G_MAX","CALC_G_MAX_LOCAL") ),
- BORNES =FACT(statut='f',max='**',
- NUME_ORDRE =SIMP(statut='o',typ='I'),
- VALE_MIN =SIMP(statut='o',typ='R'),
- VALE_MAX =SIMP(statut='o',typ='R'),
- ),
-
- SOLVEUR =FACT(statut='d',
- METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC") ),
- b_mult_front =BLOC(condition = "METHODE == 'MULT_FRONT' ",fr="Paramètres de la méthode multi frontale",
- RENUM =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ),
- ),
- b_ldlt =BLOC(condition = "METHODE == 'LDLT' ",fr="Paramètres de la méthode LDLT",
- RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("RCMK","SANS") ),
- ),
- b_ldlt_mult =BLOC(condition = "METHODE == 'LDLT' or METHODE == 'MULT_FRONT' ",
- fr="Paramètres relatifs à la non iversibilité de la matrice à factorise",
- NPREC =SIMP(statut='f',typ='I',defaut= 8 ),
- STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
- ),
- b_gcpc =BLOC(condition = "METHODE == 'GCPC' ", fr="Paramètres de la méthode du gradient conjugué",
- PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC",),defaut="LDLT_INC" ),
- NIVE_REMPLISSAGE=SIMP(statut='f',typ='I',defaut= 0 ),
- RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ),
- RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ),
- NMAX_ITER =SIMP(statut='f',typ='I',defaut= 0 ),
- ),
- SYME =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
- ),
-
- CONVERGENCE =FACT(statut='d',
- RESI_GLOB_MAXI =SIMP(statut='f',typ='R'),
- RESI_GLOB_RELA =SIMP(statut='f',typ='R'),
- ITER_GLOB_MAXI =SIMP(statut='f',typ='I',defaut=10),
- ARRET =SIMP(statut='f',typ='TXM',defaut="OUI"),
- ),
-
- NEWTON =FACT(statut='d',
- REAC_INCR =SIMP(statut='f',typ='I',defaut=1),
- PREDICTION =SIMP(statut='f',typ='TXM',into=("TANGENTE","ELASTIQUE","EXTRAPOL","DEPL_CALCULE")),
- MATRICE =SIMP(statut='f',typ='TXM',defaut="TANGENTE",into=("TANGENTE","ELASTIQUE")),
- REAC_ITER =SIMP(statut='f',typ='I',defaut= 0),
- ),
-
- RECH_LINEAIRE =FACT(statut='d',
- RESI_LINE_RELA =SIMP(statut='f',typ='R',defaut=1.0E-3),
- ITER_LINE_MAXI =SIMP(statut='f',typ='I',defaut=3),
- ),
-
- INCREMENT =FACT(statut='o',
- regles=(EXCLUS('NUME_INST_INIT','INST_INIT'),
- EXCLUS('NUME_INST_FIN','INST_FIN'),),
- LIST_INST =SIMP(statut='o',typ=listr8_sdaster),
- EVOLUTION =SIMP(statut='f',typ='TXM',defaut="CHRONOLOGIQUE",
- into=("CHRONOLOGIQUE","RETROGRADE","SANS",) ),
- NUME_INST_INIT =SIMP(statut='f',typ='I'),
- INST_INIT =SIMP(statut='f',typ='R'),
- NUME_INST_FIN =SIMP(statut='f',typ='I'),
- INST_FIN =SIMP(statut='f',typ='R'),
- PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3 ),
- SUBD_PAS =SIMP(statut='f',typ='I',defaut=1),
- SUBD_PAS_MINI =SIMP(statut='f',typ='R'),
- COEF_SUBD_PAS_1 =SIMP(statut='f',typ='R',defaut= 1.0E+0),
- ),
-
- PAS_AZIMUT =SIMP(statut='f',typ='I',defaut=1),
-
- IMPRESSION =FACT(statut='f',
- FORMAT =SIMP(statut='f',typ='TXM',defaut="RESULTAT",
- into=("RESULTAT","ASTER","CASTEM","IDEAS")),
-
- b_format_ideas =BLOC(condition="FORMAT=='IDEAS'",fr="version Ideas",
- VERSION =SIMP(statut='f',typ='I',defaut=5,into=(4,5)),
- ),
-
- b_format_castem =BLOC(condition="FORMAT=='CASTEM'",fr="version Castem",
- NIVE_GIBI =SIMP(statut='f',typ='I',defaut=10,into=(3,10)),
- ),
-
- b_extrac =BLOC(condition="((FORMAT=='IDEAS')or(FORMAT=='CASTEM'))",
- fr="extraction d un champ de grandeur",
- regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST'),),
- NOM_CHAM =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=3,
- into=("DEPL","EQUI_ELNO_SIGM","TEMP")),
-
- TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
- INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
- ),
- ),
-
- INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
-
- TITRE =SIMP(statut='f',typ='TXM'),
-)
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE F1BHHAJ J.ANGLES
-
-from Macro.macr_aspic_mail_ops import macr_aspic_mail_ops
-
-MACR_ASPIC_MAIL=MACRO(nom="MACR_ASPIC_MAIL",op= macr_aspic_mail_ops,sd_prod=maillage_sdaster,reentrant='n',
- fr="Engendre le maillage d'un piquage sain ou avec fissure (longue ou courte)",
- UIinfo={"groupes":("Outils métier",)},
-
- EXEC_MAILLAGE =FACT(statut='o',
- LOGICIEL =SIMP(statut='o',typ='TXM',defaut="GIBI2000",into=("GIBI98","GIBI2000")),
- UNITE_DATG =SIMP(statut='f',typ='I',defaut=70),
- UNITE_MGIB =SIMP(statut='f',typ='I',defaut=19),
- NIVE_GIBI =SIMP(statut='f',typ='I',defaut=10,into=(3,4,5,6,7,8,9,10,11)),
- ),
-
- TYPE_ELEM =SIMP(statut='f',typ='TXM',defaut="CU20",into=("CU20","CUB8")),
-
- RAFF_MAIL =SIMP(statut='f',typ='TXM',defaut="GROS",into=("GROS","FIN")),
-
- TUBULURE =FACT(statut='o',
- E_BASE =SIMP(statut='o',typ='R'),
- DEXT_BASE =SIMP(statut='o',typ='R'),
- L_BASE =SIMP(statut='o',typ='R'),
- L_CHANF =SIMP(statut='o',typ='R'),
- E_TUBU =SIMP(statut='o',typ='R'),
- DEXT_TUBU =SIMP(statut='o',typ='R'),
- Z_MAX =SIMP(statut='o',typ='R'),
- TYPE =SIMP(statut='o',typ='TXM',into=("TYPE_1","TYPE_2")),
- L_PENETR =SIMP(statut='f',typ='R',defaut= 0.0E+0),
- ),
-
- SOUDURE =FACT(statut='o',
- H_SOUD =SIMP(statut='o',typ='R'),
- ANGL_SOUD =SIMP(statut='o',typ='R'),
- JEU_SOUD =SIMP(statut='o',typ='R'),
- ),
-
- CORPS =FACT(statut='o',
- E_CORP =SIMP(statut='o',typ='R'),
- DEXT_CORP =SIMP(statut='o',typ='R'),
- X_MAX =SIMP(statut='o',typ='R'),
- ),
-
- FISS_SOUDURE =FACT(statut='f',
- TYPE =SIMP(statut='o',typ='TXM',into=("LONGUE","COURTE")),
- AXIS =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
- PROFONDEUR =SIMP(statut='o',typ='R'),
- LONGUEUR =SIMP(statut='f',typ='R'),
- AZIMUT =SIMP(statut='o',typ='R'),
- RAYON_TORE =SIMP(statut='f',typ='R'),
- POSITION =SIMP(statut='o',typ='TXM',into=("DROIT","INCLINE")),
- FISSURE =SIMP(statut='o',typ='TXM',into=("DEB_INT","DEB_EXT","NON_DEB","TRAVERS")),
- LIGA_INT =SIMP(statut='f',typ='R'),
- ANGL_OUVERTURE =SIMP(statut='f',typ='R',defaut= 0.0E+0),
- COEF_MULT_RC1 =SIMP(statut='f',typ='R'),
- COEF_MULT_RC2 =SIMP(statut='f',typ='R'),
- COEF_MULT_RC3 =SIMP(statut='f',typ='R'),
- NB_TRANCHE =SIMP(statut='f',typ='I'),
- NB_SECTEUR =SIMP(statut='f',typ='I'),
- NB_COURONNE =SIMP(statut='f',typ='I'),
- ),
-
- IMPRESSION =FACT(statut='f',max='**',
- regles=(PRESENT_PRESENT('FICHIER','UNITE'),),
- FORMAT =SIMP(statut='f',typ='TXM',defaut="ASTER",into=("ASTER","IDEAS","CASTEM")),
-
- b_format_ideas =BLOC(condition="FORMAT=='IDEAS'",fr="version Ideas",
- VERSION =SIMP(statut='f',typ='I',defaut=5,into=(4,5)),
- ),
-
- b_format_castem =BLOC(condition="FORMAT=='CASTEM'",fr="version Castem",
- NIVE_GIBI =SIMP(statut='f',typ='I',defaut=10,into=(3,10)),
- ),
- FICHIER =SIMP(statut='f',typ='TXM'),
- UNITE =SIMP(statut='f',typ='I'),
- ),
-
- INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
-) ;
-#& MODIF COMMANDE DATE 07/10/2005 AUTEUR CIBHHPD L.SALMONA
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2003 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-
-from Macro.macr_cabri_calc_ops import macr_cabri_calc_ops
-
-def macr_cabri_calc_prod(self,MODELE_THER,MODELE_MECA,CHAM_MATER,
- CHAR_THER,CHAR_MECA,RESU_THER,**args):
- if MODELE_THER != None:
- self.type_sdprod(MODELE_THER,modele_sdaster)
- if MODELE_MECA != None:
- self.type_sdprod(MODELE_MECA,modele_sdaster)
- if RESU_THER != None:
- self.type_sdprod(RESU_THER,evol_ther)
- if CHAM_MATER != None:
- self.type_sdprod(CHAM_MATER,cham_mater)
- if CHAR_THER != None:
- for m in CHAR_THER:
- self.type_sdprod(m['CHARGE'],char_ther)
- if CHAR_MECA != None:
- for m in CHAR_MECA:
- self.type_sdprod(m['CHARGE'],char_meca)
- return evol_noli
-
-
-MACR_CABRI_CALC=MACRO(nom="MACR_CABRI_CALC",
- op=macr_cabri_calc_ops,
- sd_prod=macr_cabri_calc_prod,
- fr="Calcul thermo-mécanique d'une jonction boulonnée de tuyauterie",
- reentrant='n',
- UIinfo={"groupes":("Outils métier",)},
- MAILLAGE = SIMP(statut='o',typ=maillage_sdaster,),
- AFFE_MATERIAU = FACT(statut='o',max='**',
- regles=(UN_PARMI('TOUT','GROUP_MA',),),
- TOUT = SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA = SIMP(statut='f',typ='TXM',into=(
- "BRIDE",
- "GOUJON",
- "ROND",
- "ECROU",
- "JOINT",) ),
- MATER = SIMP(statut='o',typ=mater_sdaster),
- TEMP_REF = SIMP(statut='d',typ='R',defaut= 25. ),
- ),
- CHAM_MATER = SIMP(statut = 'f',typ=CO,),
- MODELE_THER= SIMP(statut = 'f',typ=CO,),
-
- DEFI_CHAR_THER = FACT(statut ='d',
- TEMP_INIT = SIMP(statut='d',typ='R',defaut= 25.,),
- COEF_H_FLUI = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster),),
- TEMP_EXT_FLUI = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster),),
- COEF_H_AIR = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster),),
- TEMP_EXT_AIR = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster),),
- LIST_INST = SIMP(statut='f',typ=listr8_sdaster),
- ),
-
- CHAR_THER = FACT(statut = 'f',max=4,
- CHARGE = SIMP(statut='o',typ=CO),
- TYPE = SIMP(statut='o',typ='TXM',
- into=("BRIDE_FLUIDE","BRIDE_AIR","ECROU_GOUJON",
- "BRIDE_JOINT"),)
- ),
-
- RESU_THER = SIMP(statut = 'f',typ=CO,),
-
-
- MODELE_MECA= SIMP(statut = 'f',typ=CO,),
-
- DEFI_CHAR_MECA = FACT(statut='o',
- PRETENS = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster),),
- PRES_REP = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster),),
- EFFE_FOND = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster),),
- ),
-
- CHAR_MECA = FACT(statut = 'f',max=11,
- CHARGE = SIMP(statut='o',typ=CO),
- TYPE = SIMP(statut='o',typ='TXM',
- into=("BLOC_BAS_GOUJ","BLOC_BAS_JOINT",
- "BLOC_LAT_ALES","BLOC_LAT_NALES",
- "PLAN_TUBE",
- "PRES_FLU","EFFET_FOND",
- "CONT_JOINT",
- "DEFO_THER",
- "SERR_ECROU_1","SERR_ECROU_2",),)
- ),
-
- RELATION = SIMP(statut='f',typ='TXM',
- into=('VMIS_ISOT_TRAC','ELAS','ELAS_VMIS_TRAC',),),
-
- SOLVEUR = FACT(statut='d',
- METHODE = SIMP(statut='d',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT",) ),
- b_mult_front = BLOC(condition = "METHODE == 'MULT_FRONT' ",
- fr="Paramètres de la méthode multi frontale",
- RENUM = SIMP(statut='d',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ),
- NPREC = SIMP(statut='d',typ='I',defaut=8),
- STOP_SINGULIER = SIMP(statut='d',typ='TXM',defaut="OUI",into=("OUI","NON") ),
- ),
- ),
- INCREMENT = FACT(statut='f',
- regles=(EXCLUS('NUME_INST_INIT','INST_INIT'),
- EXCLUS('NUME_INST_FIN','INST_FIN'),),
- LIST_INST =SIMP(statut='f',typ=listr8_sdaster),
- EVOLUTION =SIMP(statut='f',typ='TXM',defaut="CHRONOLOGIQUE",
- into=("CHRONOLOGIQUE",) ),
- NUME_INST_INIT =SIMP(statut='f',typ='I'),
- INST_INIT =SIMP(statut='f',typ='R'),
- NUME_INST_FIN =SIMP(statut='f',typ='I'),
- INST_FIN =SIMP(statut='f',typ='R'),
- PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3 ),
- SUBD_PAS =SIMP(statut='f',typ='I',defaut=1),
- SUBD_PAS_MINI =SIMP(statut='f',typ='R'),
- COEF_SUBD_PAS_1 =SIMP(statut='f',typ='R',defaut= 1.0E+0),
- OPTI_LIST_INST =SIMP(statut='f',typ='TXM',into=("INCR_MAXI",),),
- NOM_CHAM =SIMP(statut='f',typ='TXM',),
- NOM_CMP =SIMP(statut='f',typ='TXM',),
- VALE =SIMP(statut='f',typ='R'),
- ),
- NEWTON =FACT(statut='d',
- REAC_INCR =SIMP(statut='f',typ='I',defaut= 1 ),
- PREDICTION =SIMP(statut='f',typ='TXM',into=("TANGENTE","ELASTIQUE","EXTRAPOL") ),
- MATRICE =SIMP(statut='f',typ='TXM',defaut="TANGENTE",into=("TANGENTE","ELASTIQUE") ),
- PAS_MINI_ELAS =SIMP(statut='f',typ='R',defaut=0.0E+0),
- REAC_ITER =SIMP(statut='f',typ='I',defaut=0),
- EVOL_NOLI =SIMP(statut='f',typ=evol_noli),
- ),
- RESO_INTE =SIMP(statut='f',typ='TXM',defaut="IMPLICITE",
- into=("IMPLICITE",)),
- CONVERGENCE =FACT(statut='d',
- regles=(PRESENT_ABSENT('RESI_REFE_RELA','RESI_GLOB_MAXI','RESI_GLOB_RELA'),),
- SIGM_REFE =SIMP(statut='f',typ='R'),
- EPSI_REFE =SIMP(statut='f',typ='R'),
- FLUX_THER_REFE =SIMP(statut='f',typ='R'),
- RESI_REFE_RELA =SIMP(statut='f',typ='R'),
- RESI_GLOB_MAXI =SIMP(statut='f',typ='R'),
- RESI_GLOB_RELA =SIMP(statut='f',typ='R'),
- ITER_GLOB_MAXI =SIMP(statut='f',typ='I',defaut=10),
- ITER_GLOB_ELAS =SIMP(statut='f',typ='I',defaut=25),
- ),
- );
-
-#& MODIF COMMANDE DATE 07/02/2005 AUTEUR MABBAS M.ABBAS
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2003 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-
-from Macro.macr_cabri_mail_ops import macr_cabri_mail_ops
-
-MACR_CABRI_MAIL=MACRO(nom="MACR_CABRI_MAIL",
- op=macr_cabri_mail_ops,
- sd_prod=maillage_sdaster,
- fr="maillage d'une jonction boulonnée de tuyauterie",
- reentrant='n',
- UIinfo={"groupes":("Outils métier",)},
- EXEC_MAILLAGE = FACT(statut='o',
- LOGICIEL = SIMP(statut = 'o',typ='TXM',into=("GIBI2000",),),
- UNITE_DATG = SIMP(statut = 'f',typ='I',defaut=70,),
- UNITE_MGIB = SIMP(statut = 'f',typ='I',defaut=19,),
- NIVE_GIBI = SIMP(statut = 'f',typ='I',defaut=10,
- into = (3,4,5,6,7,8,9,10,11),
- ),
- ),
- RAFF_MAILLAGE = FACT(statut = 'd',
- NB_RADIAL = SIMP(statut = 'f',typ='I',defaut=2,),
- NB_CIRCONF = SIMP(statut = 'f',typ='I',defaut=3,),
- NB_VERTICAL = SIMP(statut = 'f',typ='I',defaut=6,),
- NB_ALESAGE = SIMP(statut = 'f',typ='I',defaut=5,),
- ),
- VERI_MAIL = FACT(statut='d',
- VERIF = SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
- APLAT = SIMP(statut='f',typ='R',defaut= 1.0E-3 ),
- ),
- GEOM_BRID = FACT(statut = 'o',
- NORME = SIMP(statut = 'o',typ='TXM',into=("OUI","NON"),),
- b_bride_iso = BLOC(condition = "NORME == 'OUI'",
- TYPE = SIMP(statut='o',typ='TXM',
- into=('A','AA','B','B1','C','D','D1','E','F',
- 'FF','G','GG','H','H1','I','J','J1',
- 'K','L','L1','M','N','O','P','S','T','W'),
- ),
- ),
- b_bride_niso = BLOC(condition = "NORME == 'NON'",
- TUBU_D_EXT = SIMP(statut='o',typ='R',),
- TUBU_H = SIMP(statut='o',typ='R',),
- BRID_D_EXT = SIMP(statut='o',typ='R',),
- BRID_D_INT = SIMP(statut='o',typ='R',),
- BRID_H = SIMP(statut='o',typ='R',),
- BRID_D_CONGE = SIMP(statut='o',typ='R',),
- BRID_R_CONGE = SIMP(statut='o',typ='R',),
- BRID_D_EPAUL = SIMP(statut='o',typ='R',),
- BRID_H_EPAUL = SIMP(statut='o',typ='R',),
- BRID_D_ALESAG = SIMP(statut='o',typ='R',),
- BRID_P_ALESAG = SIMP(statut='o',typ='R',),
- BRID_H_ALESAG = SIMP(statut='o',typ='R',),
- GOUJ_N_GOUJON = SIMP(statut='o',typ='I',),
- GOUJ_D_GOUJON = SIMP(statut='o',typ='R',),
- GOUJ_E_FILET = SIMP(statut='o',typ='R',),
- GOUJ_D_RONDEL = SIMP(statut='o',typ='R',),
- GOUJ_E_RONDEL = SIMP(statut='o',typ='R',),
- GOUJ_D_ECROU = SIMP(statut='o',typ='R',),
- GOUJ_E_ECROU = SIMP(statut='o',typ='R',),
- ETAN_E_JOINT = SIMP(statut='o',typ='R',),
- ),
- ),
- IMPRESSION = FACT(statut='d',
- UNITE = SIMP(statut='f',typ='I'),
- FORMAT = SIMP(statut='f',typ='TXM',defaut="ASTER",
- into=("ASTER","CASTEM","IDEAS"),
- ),
- b_impr_castem = BLOC(condition = "FORMAT == 'CASTEM'",
- NIVE_GIBI = SIMP(statut='f',typ='I',defaut=10,into=(3,10),),
- ),
- b_impr_ideas = BLOC(condition = "FORMAT == 'IDEAS'",
- VERSION = SIMP(statut='f',typ='I',defaut=5,into=(4,5),),
- ),
- ),
- );
-
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2003 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE JMBHH01 J.M.PROIX
-
-from Macro.macr_cara_poutre_ops import macr_cara_poutre_ops
-
-MACR_CARA_POUTRE=MACRO(nom="MACR_CARA_POUTRE",op=macr_cara_poutre_ops,sd_prod=tabl_cara_geom,
- reentrant='n',
- UIinfo={"groupes":("Modélisation",)},
- fr="Calculer les caractéristiques d'une section transversale de poutre à partir d'un maillage 2D de la section",
- regles=(EXCLUS('SYME_X','GROUP_MA_BORD'),
- EXCLUS('SYME_Y','GROUP_MA_BORD'),),
-
- UNITE_MAILLAGE =SIMP(statut='f',typ='I',defaut= 20 ),
- ORIG_INER =SIMP(statut='f',typ='R',max=3,defaut=(0.E+0,0.E+0),
- fr="Point par rapport auquel sont calculées les inerties"),
- INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
-
- SYME_X =SIMP(statut='f',typ='TXM',into=("OUI",),fr="demi maillage par rapport a x=0"),
- SYME_Y =SIMP(statut='f',typ='TXM',into=("OUI",),fr="demi maillage par rapport a y=0"),
-
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**',
- fr="Calcul des caractéristiques équivalentes a plusieurs sections disjointes"),
-
- GROUP_MA_BORD =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**',
- fr="Groupe(s) de mailles linéiques, bord(s) de(s) section(s)"),
-
- b_gma_bord = BLOC( condition = "GROUP_MA_BORD != None",
- fr=" calcul des carac. mecaniques",
-
- NOEUD =SIMP(statut='f',typ=no,max='**',
- fr="Simplement pour empecher des pivots nuls le cas echeant. Fournir un noeud quelconque"),
- GROUP_MA_INTE =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**',
- fr="groupes de mailles linéiques bordant des trous dans la section"),
- ),
-
- b_reseau = BLOC( condition ="""(GROUP_MA_BORD != None) and (GROUP_MA != None)""",
- fr=" calcul des coef de cisaillement équivalents a un reseau de poutres",
- regles=(ENSEMBLE('LONGUEUR','LIAISON','MATERIAU') ,),
- LONGUEUR =SIMP(statut='f',typ='R',fr="Longueur du réseau de poutres"),
- MATERIAU =SIMP(statut='f',typ=mater_sdaster,fr="Materiau elastique lineaire du reseau"),
- LIAISON =SIMP(statut='f',typ='TXM',into=("ROTULE","ENCASTREMENT"),
- fr="type de conditions aux limites sur le plancher supérieur" ),
- ),
- )
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-
-
-from Macro.macr_ecla_pg_ops import macr_ecla_pg_ops
-
-def macr_ecla_pg_prod(self,RESULTAT,MAILLAGE,RESU_INIT,**args):
- self.type_sdprod(RESULTAT,AsType(RESU_INIT))
- self.type_sdprod(MAILLAGE,maillage_sdaster)
- return None
-
-
-MACR_ECLA_PG=MACRO(nom="MACR_ECLA_PG",op=macr_ecla_pg_ops,sd_prod=macr_ecla_pg_prod, reentrant='n',
- UIinfo={"groupes":("Post traitements",)},
- fr="Permettre la visualisation des champs aux points de Gauss d'une SD_RESULTAT sans lissage ni interpolation",
-
-
- # SD résultat ,modèle et champs à "éclater" :
- RESU_INIT =SIMP(statut='o',typ=resultat_sdaster,fr="RESULTAT à éclater",),
- MODELE_INIT =SIMP(statut='o',typ=modele_sdaster,fr="MODELE à éclater"),
- NOM_CHAM =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',
- into=("SIEF_ELGA","VARI_ELGA","SIEF_ELGA_DEPL","FLUX_ELGA_TEMP",) ),
-
- # paramètres numériques de la commande :
- SHRINK =SIMP(statut='f',typ='R',defaut= 0.9, fr="Facteur de réduction" ),
- TAILLE_MIN =SIMP(statut='f',typ='R',defaut= 0.0, fr="Taille minimale d'un coté" ),
-
- # concepts produits par la commande :
- RESULTAT =SIMP(statut='o',typ=CO,fr="SD_RESULTAT résultat de la commande"),
- MAILLAGE =SIMP(statut='o',typ=CO,fr="MAILLAGE associé aux cham_no de la SD_RESULTAT"),
-
- # Sélection éventuelle d'un sous-ensemble des éléments à visualiser :
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
-
- # Sélection des numéros d'ordre :
- regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','LIST_INST','LIST_ORDRE'),),
- TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
- LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster),
- INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
- LIST_INST =SIMP(statut='f',typ=listr8_sdaster),
- PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",) ),
- )
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-MACR_ELEM_DYNA=OPER(nom="MACR_ELEM_DYNA",op= 81,sd_prod=macr_elem_dyna,
- fr="Définition d'un macro élément pour analyse modale ou harmonique par sous structuration dynamique",
- reentrant='n',
- UIinfo={"groupes":("Matrices/vecteurs",)},
- regles=(EXCLUS('MATR_AMOR','AMOR_REDUIT' ),),
- BASE_MODALE =SIMP(statut='o',typ=base_modale ),
- MATR_RIGI =SIMP(statut='f',typ=matr_asse_depl_r ),
- MATR_MASS =SIMP(statut='f',typ=matr_asse_depl_r ),
- MATR_AMOR =SIMP(statut='f',typ=matr_asse_depl_r ),
- AMOR_REDUIT =SIMP(statut='f',typ='R',max='**'),
- OPTION =SIMP(statut='f',typ='TXM',defaut="CLASSIQUE",into=("CLASSIQUE","RITZ",
- "DIAG_MASS") ),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-MACR_ELEM_STAT=OPER(nom="MACR_ELEM_STAT",op=86,sd_prod=macr_elem_stat,reentrant='f',
- UIinfo={"groupes":("Matrices/vecteurs",)},
- fr="Définition d'un macro-élément pour l'analyse statique par sous-structuration",
- regles=(AU_MOINS_UN('DEFINITION','RIGI_MECA','MASS_MECA','CAS_CHARGE'),
- ENSEMBLE('DEFINITION','EXTERIEUR'),),
- DEFINITION =FACT(statut='f',
- MODELE =SIMP(statut='o',typ=modele_sdaster),
- CHAM_MATER =SIMP(statut='f',typ=cham_mater),
- CARA_ELEM =SIMP(statut='f',typ=cara_elem),
- CHAR_MACR_ELEM =SIMP(statut='f',typ=char_meca),
- INST =SIMP(statut='f',typ='R',defaut=0.0E+0 ),
- NMAX_CAS =SIMP(statut='f',typ='I',defaut=10),
- NMAX_CHAR =SIMP(statut='f',typ='I',defaut=10),
- ),
- EXTERIEUR =FACT(statut='f',
- regles=(AU_MOINS_UN('NOEUD','GROUP_NO'),),
- NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- ),
- RIGI_MECA =FACT(statut='f',
- ),
- MASS_MECA =FACT(statut='f',
- ),
- CAS_CHARGE =FACT(statut='f',max='**',
- NOM_CAS =SIMP(statut='o',typ='TXM'),
- SUIV =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")),
- CHARGE =SIMP(statut='f',typ=char_meca,validators=NoRepeat(),max='**'),
- INST =SIMP(statut='f',typ='R',defaut=0.E+0),
- ),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE GNICOLAS G.NICOLAS
-
-from Macro.macr_fiab_impr_ops import macr_fiab_impr_ops
-
-MACR_FIAB_IMPR=MACRO(nom="MACR_FIAB_IMPR",op=macr_fiab_impr_ops,
- docu="U7.04.41",UIinfo={"groupe":("Impression",)},
- fr="Imprimer les valeurs à transmettre au logiciel de fiabilité.",
- ang="Print values for the fiability software",
-#
-# 1. Le niveau d'information
-#
- INFO = SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
-#
-# 2. Impression de la valeur de la cible
-#
-# 2.1. ==> La table contenant la valeur à imprimer
-#
- TABLE_CIBLE = SIMP(statut='o',typ=table_sdaster,
- fr="Table contenant la valeur cible.",
- ang="Table which includes the target value."),
-#
-# 2.2. ==> Le nom du paramètre associé à la valeur cible dans cette table
-#
- NOM_PARA_CIBLE = SIMP(statut='o',typ='TXM',
- fr="Nom du paramètre associé à la valeur cible.",
- ang="Name of the parameter connected to the target value."),
-#
-# 3. Impressions des valeurs des éventuels gradients
-#
- GRADIENTS = FACT(statut='f',min=1,max='**',
-#
-# 3.1. ==> La table contenant la valeur à imprimer
-#
- TABLE = SIMP(statut='o',typ=table_sdaster,
- fr="Table contenant le gradient.",
- ang="Table which includes the gradient."),
-#
-# 3.2. ==> Le paramètre sensible
-#
- PARA_SENSI = SIMP(statut='o',typ=(para_sensi,theta_geom),
- fr="Paramètre sensible associé au gradient.",
- ang="Sensitivity parameter connected to the gradient."),
-#
-# 3.3. ==> Le nom du paramètre associé au gradient dans cette table
-#
- NOM_PARA = SIMP(statut='o',typ='TXM',
- fr="Nom du paramètre associé au gradient.",
- ang="Name of the parameter connected to the gradient."),
-#
- ),
-#
-);
-#& MODIF COMMANDE DATE 04/10/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE GNICOLAS G.NICOLAS
-
-from Macro.macr_fiabilite_ops import macr_fiabilite_ops
-
-#
-#====
-# 1. Le retour : une liste de rééls.
-#====
-#
-def macr_fiabilite_prod ( self , **args ):
- return listr8_sdaster
-#
-#====
-# 2. L'entete
-#====
-#
-MACR_FIABILITE = MACRO ( nom="MACR_FIABILITE",op=macr_fiabilite_ops,
- docu="U7.03.31",UIinfo={"groupe":("Post traitements",)},
- sd_prod=macr_fiabilite_prod,
- fr="Calcule les probabiltés de dépassement de seuil (mécanique de fiabilité).",
- ang="Fiability mechanics.",
-#
-#====
-# 3. Le niveau d'information
-#====
-#
- INFO = SIMP(statut="f",typ="I",defaut=1,into=(1,2)),
-#
-#====
-# 4. Nom et Version du logiciel de fiabilité
-#====
-#
- LOGICIEL = SIMP(statut="f",typ="TXM",defaut="MEFISTO",
- into=("MEFISTO",),
- fr="Nom du logiciel de fiabilité.",
- ang="Fiability software name."),
-#
- VERSION = SIMP(statut="f",typ="TXM",defaut="V3_2",
- into=("V3_2", "V3_N"),
- fr="Version du logiciel de fiabilité.",
- ang="Fiability software release."),
-#
-#====
-# 5. Les entrees-sorties du calcul ASTER déterministe
-#====
-#
-# 5.1. ==> Le jeu de commandes déterministe
-#
- UNITE_ESCL = SIMP(statut="o",typ="I",
- fr="Unité logique associée aux commandes du calcul ASTER déterministe.",
- ang="Logical unit for the commands of the ASTER deterministic calculation."),
-#
-# 5.2. ==> Le destin des messages produits par ASTER
-#
- MESS_ASTER = SIMP(statut="f",typ="TXM",defaut="DERNIER",
- into=("AUCUN", "DERNIER", "TOUS"),
- fr="Quels messages ASTER récupérer.",
- ang="Which ASTER messages must be kept."),
-#
-#====
-# 6. Options
-#====
-# 6.1. ==> Générales
-#
-# 6.1.1. ==> La valeur du seuil
-#
- SEUIL = SIMP(statut="o",typ="R",max=1,
- fr="Le seuil de défaillance.",
- ang="Failure threshold."),
-#
-# 6.1.2. ==> Le type du seuil : on a deux cas de figure selon que
-# la défaillance a lieu au dessus d'un seuil maximum ou
-# en dessous d'un seuil minimum
-#
- SEUIL_TYPE = SIMP(statut="o",typ="TXM",max=1,
- into=("MINIMUM","MAXIMUM"),
- fr="Que faut-il ne pas dépasser : un maximum ou un minimum.",
- ang="What is the failure threshold : maximum or minimum."),
-#
-# 6.2. ==> Pour MEFISTO
-#
-### en attente de résolution de AL 2004-006 (1/2) b_mefisto=BLOC( condition = "LOGICIEL=='MEFISTO'",
-#
-# 6.2.1. ==> Pilotage de la recherche du point de conception
-#
- RECH_PT_CONCEPT = SIMP(statut="f",typ="TXM",defaut="OUI",
- into=("OUI","NON"),
- fr="Pour trouver le point de conception.",
- ang="To find the design point."),
-#
- b_rech_pt_concept=BLOC( condition = "RECH_PT_CONCEPT=='OUI'",
-#
- EPSILON_U = SIMP(statut="f",typ="R",defaut=1.0E-2,
- fr="Précision du test d'arret sur les points itératifs dans l'espace standard.",
- ang="Precision of stop test for iterative points in standard space."),
-#
- EPSILON_G = SIMP(statut="f",typ="R",defaut=1.0E-2,
- fr="Précision du test d'arret sur la proximité de la surface d'état limite.",
- ang="Precision of stop test for limit state surface."),
-#
- TAU = SIMP(statut="f",typ="R",defaut=5.0E-1,
- fr="Paramètre de la méthode de minimisation.",
- ang="Parameter for the minimization method."),
-#
- OMEGA = SIMP(statut="f",typ="R",defaut=1.0E-4,
- fr="Paramètre de la méthode de minimisation.",
- ang="Parameter for the minimization method."),
-#
- ITER_MAX = SIMP(statut="f",typ="I",defaut=50,
- fr="Nombre maximum d'itérations.",
- ang="Maximum number of iterations."),
- ),
-#
-# 6.2.2. ==> Méthode(s) employée(s) pour la probabilité de défaillance
-#
- METHODE_FORM = SIMP(statut="f",typ="TXM",defaut="OUI",
- into=("OUI","NON"),
- fr="Recherche de la probabilité de défaillance avec la méthode FORM.",
- ang="Research of failure probability with FORM method."),
-#
- METHODE_SORM = SIMP(statut="f",typ="TXM",defaut="NON",
- into=("OUI","NON"),
- fr="Recherche de la probabilité de défaillance avec la méthode SORM.",
- ang="Research of failure probability with SORM method."),
-#
- TIRAGE_IMPORTANCE = SIMP(statut="f",typ="TXM",defaut="NON",
- into=("OUI","NON"),
- fr="Recherche de la probabilité de défaillance avec le tirage d'importance.",
- ang="Research of failure probability with ."),
-#
- b_tirage_importance=BLOC( condition = "TIRAGE_IMPORTANCE=='OUI'",
-#
- NB_SIMULATION = SIMP(statut="f",typ="I",defaut=3,
- fr="Nombre de simulations pour le tirage d'importance.",
- ang="Number of simulation for."),
-#
- ),
-#
-# 6.2.3. ==> Création d'une surface de réponse polynomiale
-#
- POLYNOME_TAYLOR = SIMP(statut="f",typ="TXM",defaut="NON",into=("OUI","NON"),),
- HGRAD = SIMP(statut="f",typ="R",defaut=1.0E-2,
- fr="Pas incrémental pour le calcul des gradients.",
- ang="Step for calculation of gradients."),
- HHESS = SIMP(statut="f",typ="R",defaut=1.0E-2,
- fr="Pas incrémental pour le calcul des dérivées secondes.",
- ang="Step for calculation of second derivatives."),
-#
-# 6.2.4. ==> Recherche d'un plan d'expérience
-#
- PLAN_EXPERIENCE = SIMP(statut="f",typ="TXM",defaut="NON",into=("OUI","NON"),
- fr="Construction d'un plan d'expérience.",
- ang="Construction of an experiment plan."),
-#
- b_plan_experience=BLOC( condition = "PLAN_EXPERIENCE=='OUI'",
-#
- ALPHA = SIMP(statut="f",typ="R",defaut=2.0E-1,
- fr="Plan d'expérience : maille du plan de type composite centré.",
- ang="Experiment plane : mesh centered composite."),
-#
- BETA = SIMP(statut="f",typ="R",defaut=4.0E-1,
- fr="Plan d'expérience : maille du plan de type factoriel.",
- ang="Experiment plane : mesh factor."),
-#
- ),
-#
-# 6.2.5. ==> Les tests
-# 6.2.5.1. ==> Test de la sphere
-#
- T_SPHERE = SIMP(statut="f",typ="TXM",defaut="NON",into=("OUI","NON"),
- fr="Test de la sphère.",
- ang="Sphere test."),
-#
- b_test_de_la_sphere=BLOC( condition = "T_SPHERE=='OUI'",
-#
- METHODE_TEST = SIMP(statut="f",typ="TXM",defaut="GAUSSIENNE",
- into=("GAUSSIENNE","PARAMETRIQUE","REJECTION"),
- fr="Type de méthode.",
- ang="Method."),
-#
- NB_POINT = SIMP(statut="f",typ="I",max=1,defaut=60,
- fr="Nombre de points de la sphere.",
- ang="Number of points over the sphere.")
- ),
-#
-# 6.2.5.2. ==> Test du maximum fort
-#
- T_MAXIMUM_FORT = SIMP(statut="f",typ="TXM",defaut="NON",into=("OUI","NON"),
- fr="Test du maximum fort.",
- ang="Strong maximum test."),
-#
- b_test_du_maximum_fort=BLOC( condition = "T_MAXIMUM_FORT=='OUI'",
-#
- COS_LIM = SIMP(statut="f",typ="R",max=1,defaut=1.0,
- fr="Cosinus de l'angle d'exclusion.",
- ang="Cosine of angle of exclusion."),
-#
- DPROB = SIMP(statut="f",typ="R",max=1,defaut=4.3E-1,
- fr="Fraction d'iso-densité de probabilité de défaillance.",
- ang="Fraction.")
-#
- ),
-#
-# 6.2.5.3. ==> Test du hessien
-#
- T_HESSIEN = SIMP(statut="f",typ="TXM",defaut="NON",into=("OUI","NON"),
- fr="Test du hessien.",
- ang="Hessian test."),
-#
-# 6.2.6. ==> Les correlations entre les variables
-#
- MATRICE = SIMP(statut="f",typ="R",max="**",
- fr="Matrice de corrélation entre les variables.",
- ang="Correlation matrix."),
-#
-### en attente de résolution de AL 2004-006 (2/2) ),
-#
-#====
-# 7. Definition des paramètres
-#====
-#
- VARIABLE = FACT(statut="o",min=1,max="**",
-#
-# 7.1. ==> Nom de la variable
-#
- NOM = SIMP(statut="o",typ="TXM",
- fr="Nom de la variable, identique au nom de concept PARA_SENSI.",
- ang="Name of the variable, identical to the name of the PARA_SENSI conceipt."),
-#
-# 7.2. ==> Loi de distribution
-#
- LOI = SIMP(statut="o",typ="TXM",
- into=("UNIFORME","NORMALE","LOGNORMALE","NORMALE_TRONQUEE"),
- fr="Choix de la loi",
- ang="Law."),
-#
-# 7.2.1. ==> Loi normale
-#
- b_normale=BLOC(condition="LOI=='NORMALE'",
-#
- VALE_MOY = SIMP(statut="o",typ="R",max=1,
- fr="Valeur moyenne.",
- ang="Mean value."),
-#
- ECART_TYPE = SIMP(statut="o",typ="R",max=1,
- fr="Ecart type.",
- ang="Standard deviation."),
-#
- ),
-#
-# 7.2.2. ==> Loi lognormale
-#
- b_lognormale=BLOC(condition="LOI=='LOGNORMALE'",
-#
- VALE_MIN = SIMP(statut="o",typ="R",max=1,
- fr="Valeur minimale.",
- ang="Minimal value."),
-#
- VALE_MOY = SIMP(statut="f",typ="R",max=1,
- fr="Valeur moyenne dans l'espace de la loi normale.",
- ang="Mean value in the space of the normal law."),
-#
- ECART_TYPE = SIMP(statut="f",typ="R",max=1,
- fr="Ecart type dans l'espace de la loi normale.",
- ang="Standard deviation in the space of the normal law."),
-#
- VALE_MOY_PHY = SIMP(statut="f",typ="R",max=1,
- fr="Valeur moyenne dans l'espace physique.",
- ang="Mean value in the physical space."),
-#
- ECART_TYPE_PHY = SIMP(statut="f",typ="R",max=1,
- fr="Ecart type dans l'espace physique.",
- ang="Standard deviation in the physical space."),
-#
- regles=(AU_MOINS_UN("VALE_MOY" ,"VALE_MOY_PHY"),
- AU_MOINS_UN("ECART_TYPE","ECART_TYPE_PHY"),
- EXCLUS ("VALE_MOY" ,"VALE_MOY_PHY"),
- EXCLUS ("VALE_MOY" ,"ECART_TYPE_PHY"),
- EXCLUS ("ECART_TYPE","VALE_MOY_PHY"),
- EXCLUS ("ECART_TYPE","ECART_TYPE_PHY")),
-#
- ),
-#
-# 7.2.3. ==> Loi uniforme
-#
- b_uniforme=BLOC(condition="LOI=='UNIFORME'",
-#
- VALE_MIN = SIMP(statut="o",typ="R",max=1,
- fr="Valeur minimale.",
- ang="Minimal value."),
-#
- VALE_MAX = SIMP(statut="o",typ="R",max=1,
- fr="Valeur maximale.",
- ang="Maximal value."),
-#
- ),
-#
-# 7.2.4. ==> Loi normale tronquée
-#
- b_normale_tronquee=BLOC(condition="LOI=='NORMALE_TRONQUEE'",
-#
- VALE_MOY = SIMP(statut="o",typ="R",max=1,
- fr="Valeur moyenne de la loi normale complète.",
- ang="Mean value for the entire normal law."),
-#
- ECART_TYPE = SIMP(statut="o",typ="R",max=1,
- fr="Ecart type de la loi normale complète.",
- ang="Standard deviation for the entire normal law."),
-#
- VALE_MIN = SIMP(statut="o",typ="R",max=1,
- fr="Valeur minimale.",
- ang="Minimal value."),
-#
- VALE_MAX = SIMP(statut="o",typ="R.",max=1,
- fr="Valeur maximale.",
- ang="Maximal value."),
-#
- ),
-#
-# 7.3. ==> Paramètres de calcul
-# 7.3.1. ==> Soit on cherche le point de conception, soit on le connait deja
-#
- regles=(EXCLUS("POINT_INI","POINT_CONCEPT"),
- EXCLUS("POINT_REF","POINT_CONCEPT"),),
-#
-# 7.3.2. ==> Quand on cherche le point de conception, on peut préciser le départ de l'algorithme.
-# Si on ne le fait pas, le programme prendra la valeur moyenne.
-#
- POINT_INI = SIMP(statut="f",typ="R",max=1,
- fr="Point de démarrage de l'algorithme itératif.",
- ang="Initial point for iterative process."),
-#
-# 7.3.3. ==> Quand on cherche le point de conception, on peut préciser un point de référence pour normaliser.
-# Si on ne le fait pas, le programme prendra la valeur moyenne.
-#
- POINT_REF = SIMP(statut="f",typ="R",max=1,
- fr="Point de référence de l'algorithme itératif.",
- ang="Reference point for iterative process."),
-#
-# 7.3.4. ==> Quand on cherche uniquement la probabilité de défaillance, il faut donner le point de conception
-#
- POINT_CONCEPT = SIMP(statut="f",typ="R",max=1,
- fr="Point de conception.",
- ang="Design point."),
-#
-# 7.4. ==> Mode d'obtention du gradient par rapport à ce paramètre
-#
- GRADIENT = SIMP(statut="o",typ="TXM",max=1,
- into=("OUI","NON"),
- fr="ASTER calcule directement le gradient.",
- ang="ASTER computes the gradient for this parameter."),
-
- b_gradient=BLOC(condition="GRADIENT=='NON'",
- INCREMENT = SIMP(statut="o",typ="R",max=1,
- fr="Incrément dans la direction.",
- ang="Direction increment."),
- ),
-
- ),
-#
-);
-#& MODIF COMMANDE DATE 07/11/2005 AUTEUR GNICOLAS G.NICOLAS
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE GNICOLAS G.NICOLAS
-
-from Macro.macr_adap_mail_ops import macr_adap_mail_ops
-
-MACR_INFO_MAIL=MACRO(nom="MACR_INFO_MAIL",op=macr_adap_mail_ops,
- docu="U7.03.02-b",UIinfo={"groupe":("Maillage",)},
- fr="Donner des informations sur un maillage.",
- ang="To give information about a mesh.",
-#
-# 1. Le niveau d'information
-#
- INFO = SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
-#
-# 2. Version de HOMARD
-#
- VERSION_HOMARD = SIMP(statut='f',typ='TXM',defaut="V7_7",
- into=("V7_7", "V7_N", "V7_N_PERSO", "V8_N"),
- fr="Version de HOMARD",
- ang="HOMARD release"),
-#
-# 3. Langue des messages issus de HOMARD
-#
- LANGUE = SIMP(statut='f',typ='TXM',defaut="FRANCAIS",
- into=("FRANCAIS","FRENCH","ANGLAIS","ENGLISH",),
- fr="Langue des messages issus de HOMARD.",
- ang="Language for HOMARD messages." ),
-#
-# 4. Gestion des éléments autres que des simplexes
-# 0 : autres elements refusés
-# 1 : analyse exclusivement sur les simplexes, mais autres éléments acceptés
-# 2 : tous (defaut)
-#
- NON_SIMPLEXE = SIMP(statut='f',typ='I',defaut=2,into=(0,1,2),
- fr="Acceptation d'éléments quad, hexa et penta",
- ang="quad, hexa and penta elements allowed" ),
-#
-# 5. Le nom du maillage a analyser
-#
- MAILLAGE = SIMP(statut='o',typ=maillage_sdaster,
- fr="Maillage à analyser.",
- ang="Mesh to be checked." ),
-#
-# 6. Suivi d'une frontiere
-#
- MAILLAGE_FRONTIERE = SIMP(statut='f',typ=maillage_sdaster,
- fr="Maillage de la frontiere à suivre",
- ang="Boundary mesh" ),
-#
- b_frontiere =BLOC( condition = " MAILLAGE_FRONTIERE != None " ,
- fr="Groupes définissant la frontière",
- ang="Groups which define the boundary",
- GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**' ),
- ) ,
-#
-# 7. Les options ; par defaut, on ne fait que les nombres
-# 7.1. Nombre de noeuds et elements
-#
- NOMBRE = SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON"),
- fr="Nombre de noeuds et éléments du maillage",
- ang="Number of nodes and elements in the mesh" ),
-#
-# 7.2. Determination de la qualite des elements du maillage
-#
- QUALITE = SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON"),
- fr="Qualité du maillage",
- ang="Mesh quality" ),
-#
-# 7.3. Connexite du maillage
-#
- CONNEXITE = SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON"),
- fr="Connexité du maillage.",
- ang="Mesh connexity." ),
-#
-# 7.4. Taille des sous-domaines du maillage
-#
- TAILLE = SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON"),
- fr="Tailles des sous-domaines du maillage.",
- ang="Sizes of mesh sub-domains." ),
-#
-# 7.5. Controle de la non-interpenetration des elements
-#
- INTERPENETRATION=SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON"),
- fr="Controle de la non interpénétration des éléments.",
- ang="Overlapping checking." ),
-#
-) ;
-#& MODIF COMMANDE DATE 04/07/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-
-from Macro.macr_lign_coupe_ops import macr_lign_coupe_ops
-
-MACR_LIGN_COUPE=MACRO(nom="MACR_LIGN_COUPE",op=macr_lign_coupe_ops,sd_prod=table_sdaster,
- reentrant='n',
- UIinfo={"groupes":("Outils métier",)},
- fr="Extraction des valeurs d'un résultat dans une ou plusieurs tables sur des lignes de coupe définies"
- +" par deux points et un intervalle",
- RESULTAT =SIMP(statut='o',typ=(evol_elas,evol_noli,evol_ther) ),
-# extraction des résultats
- b_meca =BLOC(condition = "AsType(RESULTAT) in (evol_elas,evol_noli)",fr="résultat mécanique",
- NOM_CHAM =SIMP(statut='f',typ='TXM',defaut='SIGM_NOEU_DEPL' ),
- ),
- b_ther =BLOC(condition = "AsType(RESULTAT) in (evol_ther,)",fr="résultat thermique",
- NOM_CHAM =SIMP(statut='f',typ='TXM',defaut='TEMP' ),
- ),
- UNITE_MAILLAGE =SIMP(statut='f',typ='I',defaut=25),
- MODELE =SIMP(statut='f',typ=modele_sdaster ),
- LIGN_COUPE =FACT(statut='o',max='**',
- regles=(UN_PARMI('NB_POINTS','GROUP_NO'),),
- INTITULE =SIMP(statut='f',typ='TXM',),
- GROUP_NO =SIMP(statut='f',typ=grno),
- NB_POINTS =SIMP(statut='f',typ='I'),
- b_nbpts = BLOC(condition = "NB_POINTS != None",
- COOR_ORIG =SIMP(statut='o',typ='R',min=2,max=3),
- COOR_EXTR =SIMP(statut='o',typ='R',min=2,max=3),
- VECT_Y =SIMP(statut='f',typ='R',min=2,max=3),),
- ),
-) ;
-
-
-#& MODIF COMMANDE DATE 08/11/2005 AUTEUR ASSIRE A.ASSIRE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-
-from Macro.macr_recal_ops import macr_recal_ops
-
-def macr_recal_prod(self,**args ):
- return listr8_sdaster
-
-MACR_RECAL = MACRO(nom="MACR_RECAL",op=macr_recal_ops,
- UIinfo={"groupes":("Résultats et champs",)},
- sd_prod=macr_recal_prod,
- fr="Réalise le recalage des calculs Aster sur des résultats expérimentaux"
- +" ou sur d'autres résultats de calculs",
- UNITE_ESCL =SIMP(statut='o',typ='I'),
- RESU_EXP =SIMP(statut='o',typ=assd,max='**'),
- POIDS =SIMP(statut='f',typ=assd,max='**'),
- RESU_CALC =SIMP(statut='o',typ=assd,max='**'),
- LIST_PARA =SIMP(statut='o',typ=assd,max='**'),
- ITER_MAXI =SIMP(statut='f',typ='I',defaut=10),
- RESI_GLOB_RELA =SIMP(statut='f',typ='R',defaut=1.E-3),
- UNITE_RESU =SIMP(statut='f',typ='I',defaut=91),
- PARA_DIFF_FINI =SIMP(statut='f',typ='R',defaut=0.001),
- GRAPHIQUE =FACT(statut='d',
- UNITE =SIMP(statut='f',typ='I',defaut=90),
- FORMAT =SIMP(statut='f',typ='TXM',defaut='XMGRACE',into=("XMGRACE","GNUPLOT")),
- INTERACTIF =SIMP(statut='f',typ='TXM',defaut='NON',into=("OUI","NON")),),
- INFO =SIMP(statut='f',typ='I',defaut=1,into=( 1, 2 ) ),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE G8BHHXD X.DESROCHES
-
-from Macro.macro_elas_mult_ops import macro_elas_mult_ops
-
-def macro_elas_mult_prod(self,NUME_DDL,CAS_CHARGE,**args ):
- if isinstance(NUME_DDL,CO) :
- self.type_sdprod(NUME_DDL,nume_ddl_sdaster)
- else:
- self.type_sdprod(NUME_DDL,NUME_DDL.__class__)
- if CAS_CHARGE[0]['NOM_CAS'] != None : return mult_elas
- if CAS_CHARGE[0]['MODE_FOURIER'] != None : return fourier_elas
- raise AsException("type de concept resultat non prevu")
-
-MACRO_ELAS_MULT=MACRO(nom="MACRO_ELAS_MULT",op=macro_elas_mult_ops,sd_prod=macro_elas_mult_prod,reentrant='f',
- UIinfo={"groupes":("Résolution",)},
- fr="Calculer les réponses statiques linéaires pour différents cas de charges ou modes de Fourier",
- regles=(UN_PARMI('CHAR_MECA_GLOBAL','CHAR_CINE_GLOBAL','LIAISON_DISCRET', ),),
- MODELE =SIMP(statut='o',typ=modele_sdaster),
- CHAM_MATER =SIMP(statut='f',typ=cham_mater),
- CARA_ELEM =SIMP(statut='f',typ=cara_elem),
- NUME_DDL =SIMP(statut='f',typ=(nume_ddl_sdaster,CO)),
- CHAR_MECA_GLOBAL=SIMP(statut='f',typ=char_meca,validators=NoRepeat(),max='**'),
- CHAR_CINE_GLOBAL=SIMP(statut='f',typ=char_meca,validators=NoRepeat(),max='**'),
- LIAISON_DISCRET =SIMP(statut='f',typ='TXM',into=("OUI",)),
- CAS_CHARGE =FACT(statut='o',max='**',
- regles=(UN_PARMI('NOM_CAS','MODE_FOURIER'),
- UN_PARMI('CHAR_MECA','CHAR_CINE','VECT_ASSE'),),
- NOM_CAS =SIMP(statut='f',typ='TXM' ),
- MODE_FOURIER =SIMP(statut='f',typ='I' ),
- TYPE_MODE =SIMP(statut='f',typ='TXM',defaut="SYME",into=("SYME","ANTI","TOUS") ),
- CHAR_MECA =SIMP(statut='f',typ=char_meca,validators=NoRepeat(),max='**'),
- CHAR_CINE =SIMP(statut='f',typ=char_meca,validators=NoRepeat(),max='**'),
- OPTION =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',
- into=("EFGE_ELNO_DEPL","EPOT_ELEM_DEPL","SIGM_ELNO_DEPL","SIEF_ELGA_DEPL",
- "SIGM_ELNO_CART","EFGE_ELNO_CART","DEGE_ELNO_DEPL","EPSI_ELNO_DEPL",
- "EPSI_ELGA_DEPL","EPSG_ELNO_DEPL","EPSG_ELGA_DEPL","EPSP_ELNO","EPSP_ELGA",
- "ECIN_ELEM_DEPL","FLUX_ELGA_TEMP","FLUX_ELNO_TEMP","SOUR_ELGA_ELEC",
- "PRES_ELNO_DBEL","PRES_ELNO_REEL","PRES_ELNO_IMAG","INTE_ELNO_ACTI",
- "INTE_ELNO_REAC","SIGM_NOZ1_ELGA","ERRE_ELEM_NOZ1","SIGM_NOZ2_ELGA",
- "ERRE_ELEM_NOZ2","VNOR_ELEM_DEPL","ERRE_ELNO_ELGA","SIRE_ELNO_DEPL",
- "ERRE_ELGA_NORE","EQUI_ELNO_SIGM","EQUI_ELGA_SIGM","EQUI_ELNO_EPSI",
- "EQUI_ELGA_EPSI","FORC_NODA","REAC_NODA","EPSI_NOEU_DEPL","SIGM_NOEU_DEPL",
- "EFGE_NOEU_DEPL","EQUI_NOEU_SIGM","EQUI_NOEU_EPSI","FLUX_NOEU_TEMP") ),
- NUME_COUCHE =SIMP(statut='f',typ='I',defaut=1),
- NIVE_COUCHE =SIMP(statut='f',typ='TXM',defaut="MOY",into=("SUP","INF","MOY")),
- SOUS_TITRE =SIMP(statut='f',typ='TXM',max='**'),
- VECT_ASSE =SIMP(statut='f',typ=cham_no_depl_r),
- ),
- SOLVEUR =FACT(statut='d',
- METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT") ),
- b_mult_front = BLOC ( condition = "METHODE == 'MULT_FRONT' ",
- fr="Paramètres de la méthode multi frontale",
- RENUM =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ),
- ),
- b_ldlt =BLOC(condition = "METHODE == 'LDLT' ",fr="Paramètres de la méthode LDLT",
- RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("RCMK","SANS") ),
- ),
- b_ldlt_mult =BLOC(condition = "METHODE == 'LDLT' or METHODE == 'MULT_FRONT' ",
- fr="Paramètres relatifs à la non inversibilité de la matrice à factorise",
- NPREC =SIMP(statut='f',typ='I',defaut= 8 ),
- STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
- ),
- ),
- INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2)),
- TITRE =SIMP(statut='f',typ='TXM',max='**'),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-
-from Macro.macro_matr_ajou_ops import macro_matr_ajou_ops
-
-def macro_matr_ajou_prod(self,MATR_AMOR_AJOU,MATR_MASS_AJOU,MATR_RIGI_AJOU,FORC_AJOU,**args):
- self.type_sdprod(MATR_AMOR_AJOU,matr_asse_gene_r)
- self.type_sdprod(MATR_MASS_AJOU,matr_asse_gene_r)
- self.type_sdprod(MATR_RIGI_AJOU,matr_asse_gene_r)
- if FORC_AJOU != None:
- for m in FORC_AJOU:
- self.type_sdprod(m['VECTEUR'],vect_asse_gene_r)
-
- return None
-
-MACRO_MATR_AJOU=MACRO(nom="MACRO_MATR_AJOU",op=macro_matr_ajou_ops,sd_prod=macro_matr_ajou_prod,
- UIinfo={"groupes":("Matrices/vecteurs",)},
- fr="Calculer de facon plus condensée qu'avec CALC_MATR_AJOU des matrices de masse, d'amortissement"
- +" ou de rigidité ajoutés",
- regles=(AU_MOINS_UN('MODE_MECA','DEPL_IMPO','MODELE_GENE'),
- AU_MOINS_UN('MATR_MASS_AJOU','MATR_AMOR_AJOU','MATR_RIGI_AJOU'),
- EXCLUS('MODE_MECA','DEPL_IMPO','MODELE_GENE'),
- EXCLUS('MONO_APPUI','MODE_STAT',),
- ),
- MAILLAGE =SIMP(statut='o',typ=maillage_sdaster),
- GROUP_MA_FLUIDE =SIMP(statut='o',typ=grma),
- GROUP_MA_INTERF =SIMP(statut='o',typ=grma),
- MODELISATION =SIMP(statut='o',typ='TXM',into=("PLAN","AXIS","3D")),
- FLUIDE =FACT(statut='o',max='**',
- RHO =SIMP(statut='o',typ='R'),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",)),
- GROUP_MA =SIMP(statut='f',typ=grma),
- MAILLE =SIMP(statut='f',typ=ma),
- ),
- DDL_IMPO =FACT(statut='o',max='**',
- regles=(UN_PARMI('NOEUD','GROUP_NO'),
- UN_PARMI('PRES_FLUIDE','PRES_SORTIE'),),
- NOEUD =SIMP(statut='f',typ=no),
- GROUP_NO =SIMP(statut='f',typ=grno),
- PRES_FLUIDE =SIMP(statut='f',typ='R'),
- PRES_SORTIE =SIMP(statut='f',typ='R'),
- ),
- ECOULEMENT =FACT(statut='f',
- GROUP_MA_1 =SIMP(statut='o',typ=grma),
- GROUP_MA_2 =SIMP(statut='o',typ=grma),
- VNOR_1 =SIMP(statut='o',typ='R'),
- VNOR_2 =SIMP(statut='f',typ='R'),
- POTENTIEL =SIMP(statut='f',typ=evol_ther),
- ),
- MODE_MECA =SIMP(statut='f',typ=mode_meca),
- DEPL_IMPO =SIMP(statut='f',typ=cham_no_depl_r),
- MODELE_GENE =SIMP(statut='f',typ=modele_gene),
- NUME_DDL_GENE =SIMP(statut='f',typ=nume_ddl_gene),
- DIST_REFE =SIMP(statut='f',typ='R',defaut= 1.0E-2),
- MATR_MASS_AJOU =SIMP(statut='f',typ=CO,),
- MATR_RIGI_AJOU =SIMP(statut='f',typ=CO,),
- MATR_AMOR_AJOU =SIMP(statut='f',typ=CO,),
- MONO_APPUI =SIMP(statut='f',typ='TXM',into=("OUI",),),
- MODE_STAT =SIMP(statut='f',typ=(mode_stat_depl,mode_stat_acce,mode_stat_forc,),),
- FORC_AJOU =FACT(statut='f',max='**',
- DIRECTION =SIMP(statut='o',typ='R',max=3),
- NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- VECTEUR =SIMP(statut='o',typ=CO),
- ),
- SOLVEUR =FACT(statut='d',
- METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC") ),
- b_mult_front =BLOC(condition = "METHODE == 'MULT_FRONT' ",fr="Paramètres de la méthode multi frontale",
- RENUM =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ),
- ),
- b_ldlt =BLOC(condition = "METHODE == 'LDLT' ",fr="Paramètres de la méthode LDLT",
- RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("RCMK","SANS") ),
- ),
- b_ldlt_mult =BLOC(condition = "METHODE == 'LDLT' or METHODE == 'MULT_FRONT' ",
- fr="Paramètres relatifs à la non iversibilité de la matrice à factorise",
- NPREC =SIMP(statut='f',typ='I',defaut= 8 ),
- STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
- ),
- b_gcpc =BLOC(condition = "METHODE == 'GCPC' ", fr="Paramètres de la méthode du gradient conjugué",
- PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC",),defaut="LDLT_INC" ),
- NIVE_REMPLISSAGE=SIMP(statut='f',typ='I',defaut= 0 ),
- RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ),
- RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ),
- NMAX_ITER =SIMP(statut='f',typ='I',defaut= 0 ),
- ),
- ),
- INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
- NOEUD_DOUBLE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
- AVEC_MODE_STAT =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")),
-)
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-
-from Macro.macro_matr_asse_ops import macro_matr_asse_ops
-
-def macro_matr_asse_prod(self,NUME_DDL,MATR_ASSE,**args):
- if not MATR_ASSE: raise AsException("Impossible de typer les concepts resultats")
- if not NUME_DDL : raise AsException("Impossible de typer les concepts resultats")
- if isinstance(NUME_DDL,CO) :
- self.type_sdprod(NUME_DDL,nume_ddl_sdaster)
- else:
- self.type_sdprod(NUME_DDL,NUME_DDL.__class__)
- for m in MATR_ASSE:
- opti=m['OPTION']
-
- if opti in ( "RIGI_MECA","RIGI_FLUI_STRU","RIGI_MECA_LAGR" ,
- "MASS_MECA" , "MASS_FLUI_STRU" ,"RIGI_GEOM" ,"RIGI_ROTA",
- "AMOR_MECA","IMPE_MECA","MASS_ID_MDEP_R","MASS_ID_MDNS_R",
- "ONDE_FLUI","MASS_MECA_DIAG" ) : t=matr_asse_depl_r
-
- if opti in ( "RIGI_ACOU","MASS_ACOU","AMOR_ACOU",) : t=matr_asse_pres_c
-
- if opti in ( "RIGI_THER","MASS_THER","RIGI_THER_CONV" ,
- "RIGI_THER_CONV_D","MASS_ID_MTEM_R","MASS_ID_MTNS_R",) : t=matr_asse_temp_r
-
- if opti == "RIGI_MECA_HYST" : t= matr_asse_depl_c
-
- self.type_sdprod(m['MATRICE'],t)
- return None
-
-MACRO_MATR_ASSE=MACRO(nom="MACRO_MATR_ASSE",op=macro_matr_asse_ops,
- UIinfo={"groupes":("Matrices/vecteurs",)},
- sd_prod=macro_matr_asse_prod,
- fr="Calcul des matrices assemblées (rigidité, masse, amortissement,...) ",
- MODELE =SIMP(statut='o',typ=modele_sdaster),
- CHAM_MATER =SIMP(statut='f',typ=cham_mater),
- INST =SIMP(statut='f',typ='R',defaut=0.),
- CARA_ELEM =SIMP(statut='f',typ=cara_elem),
- CHARGE =SIMP(statut='f',typ=(char_meca,char_ther,char_acou),validators=NoRepeat(),max='**'),
- NUME_DDL =SIMP(statut='o',typ=(nume_ddl_sdaster,CO)),
- SOLVEUR =FACT(statut='d',
- METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",
- into=("LDLT","MULT_FRONT","GCPC","MUMPS")),
- RENUM =SIMP(statut='f',typ='TXM',into=("SANS","RCMK","MD","MDA","METIS")),
- ),
-
- MATR_ASSE =FACT(statut='o',max='**',
- MATRICE =SIMP(statut='o',typ=CO),
- OPTION =SIMP(statut='o',typ='TXM',
- into=("RIGI_MECA","MASS_MECA","MASS_MECA_DIAG",
- "AMOR_MECA","RIGI_MECA_HYST","IMPE_MECA",
- "ONDE_FLUI","RIGI_FLUI_STRU","MASS_FLUI_STRU",
- "RIGI_ROTA","RIGI_GEOM","RIGI_MECA_LAGR",
- "RIGI_THER","MASS_THER",
- "RIGI_ACOU","MASS_ACOU","AMOR_ACOU",
- "MASS_ID_MTEM_R","MASS_ID_MTNS_R","MASS_ID_MDEP_R","MASS_ID_MDNS_R",)
- ),
-
- b_rigi_meca = BLOC( condition = "OPTION=='RIGI_MECA'",
- MODE_FOURIER =SIMP(statut='f',typ='I',defaut= 0),
- ),
-
- b_rigi_geom = BLOC( condition = "OPTION=='RIGI_GEOM'",
- SIEF_ELGA =SIMP(statut='o',typ=cham_elem_sief_r),
- MODE_FOURIER =SIMP(statut='f',typ='I',defaut= 0),
- ),
-
- b_rigi_meca_lagr = BLOC( condition = "OPTION=='RIGI_MECA_LAGR'",
- THETA =SIMP(statut='o',typ=theta_geom),
- PROPAGATION =SIMP(statut='f',typ='R'),
- ),
-
- b_rigi_ther = BLOC( condition = "OPTION=='RIGI_THER'",
- MODE_FOURIER =SIMP(statut='f',typ='I',defaut= 0),
- ),
-
- ), # fin MATR_ASSE
-
- TITRE =SIMP(statut='f',typ='TXM',max='**'),
- INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-
-from Macro.macro_miss_3d_ops import macro_miss_3d_ops
-
-MACRO_MISS_3D=MACRO(nom="MACRO_MISS_3D",op=macro_miss_3d_ops,
- fr="Préparation des données puis exécution du logiciel MISS3D",
- UIinfo={"groupes":("Matrices/vecteurs",)},
- OPTION =FACT(statut='o',
- regles=(UN_PARMI('TOUT','MODULE'),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",)),
- MODULE =SIMP(statut='f',typ='TXM',into=("PRE_MISS","MISS_EVOL","MISS_IMPE")),
- ),
- PROJET =SIMP(statut='o',typ='TXM'),
- REPERTOIRE =SIMP(statut='f',typ='TXM'),
- VERSION =SIMP(statut='f',typ='TXM',into=("V1_2","V1_3",),defaut="V1_2"),
- UNITE_IMPR_ASTER=SIMP(statut='f',typ='I',defaut=25),
- UNITE_OPTI_MISS =SIMP(statut='f',typ='I',defaut=26),
- UNITE_MODELE_SOL=SIMP(statut='f',typ='I',defaut=27),
- UNITE_RESU_IMPE =SIMP(statut='f',typ='I',defaut=30),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-
-from Macro.macro_mode_meca_ops import macro_mode_meca_ops
-
-MACRO_MODE_MECA=MACRO(nom="MACRO_MODE_MECA",op=macro_mode_meca_ops,sd_prod=mode_meca,
- reentrant='n',fr="Lancer une succession de calculs de modes propres réels",
- UIinfo={"groupes":("Résolution",)},
- MATR_A =SIMP(statut='o',typ=matr_asse_depl_r ),
- MATR_B =SIMP(statut='o',typ=matr_asse_depl_r ),
- INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ),
-# ce mot cle ne devrait il pas etre dans calc_freq
- METHODE =SIMP(statut='f',typ='TXM',defaut="SORENSEN",
- into=("TRI_DIAG","JACOBI","SORENSEN",) ),
- b_tri_diag =BLOC(condition = "METHODE == 'TRI_DIAG'",
- PREC_ORTHO =SIMP(statut='f',typ='R',defaut= 1.E-12,val_min=0.E+0 ),
- NMAX_ITER_ORTHO =SIMP(statut='f',typ='I',defaut= 5,val_min=0 ),
- PREC_LANCZOS =SIMP(statut='f',typ='R',defaut= 1.E-8,val_min=0.E+0 ),
- NMAX_ITER_QR =SIMP(statut='f',typ='I',defaut= 30,val_min=0 ),
- ),
- b_jacobi =BLOC(condition = "METHODE == 'JACOBI'",
- PREC_BATHE =SIMP(statut='f',typ='R',defaut= 1.E-10,val_min=0.E+0 ),
- NMAX_ITER_BATHE =SIMP(statut='f',typ='I',defaut= 40,val_min=0 ),
- PREC_JACOBI =SIMP(statut='f',typ='R',defaut= 1.E-2,val_min=0.E+0 ),
- NMAX_ITER_JACOBI=SIMP(statut='f',typ='I',defaut= 12,val_min=0 ),
- ),
- b_sorensen =BLOC(condition = "METHODE == 'SORENSEN'",
- PREC_SOREN =SIMP(statut='f',typ='R',defaut= 0.E+0,val_min=0.E+0 ),
- NMAX_ITER_SOREN =SIMP(statut='f',typ='I',defaut= 20,val_min=0 ),
- PARA_ORTHO_SOREN=SIMP(statut='f',typ='R',defaut= 0.717,val_min=0.E+0 ),
- ),
- OPTION =SIMP(statut='f',typ='TXM',defaut="SANS",
- into=("MODE_RIGIDE","SANS") ),
- CALC_FREQ =FACT(statut='d',min=0,
- regles=(UN_PARMI('FREQ','FREQ_MAX'),
- PRESENT_PRESENT('FREQ_MIN','FREQ_MAX'),
- PRESENT_PRESENT('FREQ_MAX','NB_BLOC_FREQ'),
- EXCLUS('DIM_SOUS_ESPACE','COEF_DIM_ESPACE'),),
- FREQ =SIMP(statut='f',typ='R',min=2,validators=NoRepeat(),max='**',val_min=0.E+0 ),
- FREQ_MIN =SIMP(statut='f',typ='R' ),
- FREQ_MAX =SIMP(statut='f',typ='R' ),
- NB_BLOC_FREQ =SIMP(statut='f',typ='I' ),
- DIM_SOUS_ESPACE =SIMP(statut='f',typ='I' ),
- COEF_DIM_ESPACE =SIMP(statut='f',typ='I' ),
- NPREC_SOLVEUR =SIMP(statut='f',typ='I',defaut= 8 ),
- NMAX_ITER_SHIFT =SIMP(statut='f',typ='I',defaut= 5 ),
- PREC_SHIFT =SIMP(statut='f',typ='R',defaut= 5.E-2 ),
- SEUIL_FREQ =SIMP(statut='f',typ='R' ,defaut= 1.E-2 ),
- STOP_FREQ_VIDE =SIMP(statut='f',typ='TXM',defaut="NON" ,into=("OUI","NON") ),
- ),
- VERI_MODE =FACT(statut='d',min=0,
- STOP_ERREUR =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
- SEUIL =SIMP(statut='f',typ='R',defaut= 1.E-6 ),
- PREC_SHIFT =SIMP(statut='f',typ='R',defaut= 5.E-3 ),
- STURM =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
- ),
- NORM_MODE =FACT(statut='o',max='**',
- MASS_INER =SIMP(statut='o',typ=tabl_mass_iner ),
- NORME =SIMP(statut='f',typ='TXM',defaut="TRAN_ROTA",
- into=("MASS_GENE","RIGI_GENE","EUCL",
- "EUCL_TRAN","TRAN","TRAN_ROTA") ),
- INFO =SIMP(statut='f',typ='I',defaut= 1 ,into=(1,2) ),
- ),
- FILTRE_MODE =FACT(statut='f',
- CRIT_EXTR =SIMP(statut='f',typ='TXM',defaut="MASS_EFFE_UN",
- into=("MASS_EFFE_UN","MASS_GENE") ),
- SEUIL =SIMP(statut='f',typ='R',defaut= 1.E-3 ),
- ),
- IMPRESSION =FACT(statut='d',
- TOUT_PARA =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
- CUMUL =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
- CRIT_EXTR =SIMP(statut='f',typ='TXM',defaut="MASS_EFFE_UN",
- into=("MASS_EFFE_UN","MASS_GENE",) ),
- ),
-) ;
-#& MODIF COMMANDE DATE 20/06/2005 AUTEUR BOYERE E.BOYERE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-
-from Macro.macro_proj_base_ops import macro_proj_base_ops
-
-def macro_proj_base_prod(self,MATR_ASSE_GENE,VECT_ASSE_GENE,PROFIL,**args ):
- if MATR_ASSE_GENE != None:
- for m in MATR_ASSE_GENE:
- self.type_sdprod(m['MATRICE'],matr_asse_gene_r)
- if VECT_ASSE_GENE != None:
- for v in VECT_ASSE_GENE:
- self.type_sdprod(v['VECTEUR'],vect_asse_gene_r)
- return None
-
-MACRO_PROJ_BASE=MACRO(nom="MACRO_PROJ_BASE",op=macro_proj_base_ops,
- regles=(AU_MOINS_UN('MATR_ASSE_GENE','VECT_ASSE_GENE')),
- UIinfo={"groupes":("Matrices/vecteurs",)},
- sd_prod=macro_proj_base_prod,
- fr="Projection des matrices et/ou vecteurs assemblés sur une base (modale ou de RITZ)",
- BASE =SIMP(statut='o',typ=(mode_meca,mode_stat,base_modale,mode_gene) ),
- NB_VECT =SIMP(statut='f',typ='I',defaut= 9999),
- PROFIL =SIMP(statut='f',typ='TXM',defaut="DIAG",into=("PLEIN","DIAG") ),
- MATR_ASSE_GENE =FACT(statut='f',max='**',
- MATRICE =SIMP(statut='o',typ=CO,),
- regles=(UN_PARMI('MATR_ASSE','MATR_ASSE_GENE',),),
- MATR_ASSE =SIMP(statut='f',typ=matr_asse_depl_r),
- MATR_ASSE_GENE =SIMP(statut='f',typ=matr_asse_gene_r),
- ),
- VECT_ASSE_GENE =FACT(statut='f',max='**',
- VECTEUR =SIMP(statut='o',typ=CO,),
- regles=(UN_PARMI('VECT_ASSE','VECT_ASSE_GENE',),),
- TYPE_VECT =SIMP(statut='f',typ='TXM',defaut="FORC"),
- VECT_ASSE =SIMP(statut='f',typ=cham_no_depl_r),
- VECT_ASSE_GENE =SIMP(statut='f',typ=vect_asse_gene_r),
- ),
- INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-MAJ_CATA=PROC(nom="MAJ_CATA",op=20,
- UIinfo={"groupes":("Gestion du travail",)},
- fr="Compilation des catalogues de commandes et d'éléments",
-
- ELEMENT =FACT(statut='f',),
-
-) ;
-#& MODIF COMMANDE DATE 10/10/2005 AUTEUR BOITEAU O.BOITEAU
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE VABHHTS J.PELLET
-MECA_STATIQUE=OPER(nom="MECA_STATIQUE",op=46,sd_prod=evol_elas,
- fr="Résoudre un problème de mécanique statique linéaire",reentrant='f',
- UIinfo={"groupes":("Résolution",)},
- regles=(EXCLUS("INST","LIST_INST"),
- AU_MOINS_UN('CHAM_MATER','CARA_ELEM',), ),
- MODELE =SIMP(statut='o',typ=modele_sdaster),
- CHAM_MATER =SIMP(statut='f',typ=cham_mater,
- fr="le CHAM_MATER est nécessaire, sauf si le modèle ne contient que des éléments discrets (modélisations DIS_XXX)",
- ang="CHAM_MATER is compulsory, except if the model contains only discret elements (modelizations DIS_XXX)"),
- CARA_ELEM =SIMP(statut='f',typ=cara_elem,
- fr="le CARA_ELEM est nécessaire dès que le modèle contient des éléments de structure : coques, poutres, ...",
- ang="CARA_ELEM is compulsory as soon as the model contains structural elements : plates, beams, ..."),
- TITRE =SIMP(statut='f',typ='TXM',max='**'),
- EXCIT =FACT(statut='o',max='**',
- CHARGE =SIMP(statut='o',typ=(char_meca,char_cine_meca)),
- FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- TYPE_CHARGE =SIMP(statut='f',typ='TXM',defaut="FIXE",into=("FIXE",) ),
- ),
- INST =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- LIST_INST =SIMP(statut='f',typ=listr8_sdaster),
- INST_FIN =SIMP(statut='f',typ='R'),
- OPTION =SIMP(statut='f',typ='TXM',into=("SIEF_ELGA_DEPL","SANS"),defaut="SIEF_ELGA_DEPL",max=1,
- fr="seule option : contraintes aux points de Gauss. Utiliser CALC_ELEM pour les autres.",
- ),
- SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**',
- fr="Liste des paramètres de sensibilité.",
- ang="List of sensitivity parameters"),
-
- SOLVEUR =FACT(statut='d',
- METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC","FETI","MUMPS") ),
-
- b_feti =BLOC(condition = "METHODE == 'FETI' ",fr="Paramètres de la méthode FETI 1",
- PARTITION =SIMP(statut='o',typ=sd_feti_sdaster),
- RENUM =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ),
- RESI_RELA =SIMP(statut='f',typ='R',defaut=1.E-6,val_min=0.),
- NMAX_ITER =SIMP(statut='f',typ='I',defaut=0,val_min=0),
- TYPE_REORTHO_DD =SIMP(statut='f',typ='TXM',defaut="GSM",into=("SANS","GS","GSM","IGSM") ),
- NB_REORTHO_DD =SIMP(statut='f',typ='I',defaut=0,val_min=0),
- NB_REORTHO_INST =SIMP(statut='f',typ='I',defaut=0,val_min=0),
- PRE_COND =SIMP(statut='f',typ='TXM',defaut="LUMPE",into=("LUMPE","SANS") ),
- SCALING =SIMP(statut='f',typ='TXM',defaut="MULT",into=("SANS","MULT") ),
- VERIF_SDFETI =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
- TEST_CONTINU =SIMP(statut='f',typ='R',defaut=1.E-8,val_min=0.),
- INFO_FETI =SIMP(statut='f',typ='TXM',defaut='FFFFFFFFFF'),
- STOCKAGE_GI =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON","CAL") ),
- NB_SD_PROC0 =SIMP(statut='f',typ='I',defaut=0,val_min=0),
- ACCELERATION_SM =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
- ),
-
- b_mult_front =BLOC(condition = "METHODE == 'MULT_FRONT' ",fr="Paramètres de la méthode multi frontale",
- RENUM =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ),
- ),
-
- b_ldlt =BLOC(condition = "METHODE == 'LDLT' ",fr="Paramètres de la méthode LDLT",
- RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("RCMK","SANS") ),
- ),
-
- b_ldlt_mult =BLOC(condition = "METHODE == 'LDLT' or METHODE == 'MULT_FRONT' or METHODE == 'FETI' ",
- fr="Paramètres relatifs à la non inversibilité de la matrice à factorise",
- NPREC =SIMP(statut='f',typ='I',defaut=8),
- STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
- ),
-
- b_gcpc =BLOC(condition = "METHODE == 'GCPC' ", fr="Paramètres de la méthode du gradient conjugué",
- PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC",),defaut="LDLT_INC" ),
- NIVE_REMPLISSAGE=SIMP(statut='f',typ='I',defaut= 0 ),
- RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ),
- RESI_RELA =SIMP(statut='f',typ='R',defaut=1.E-6),
- NMAX_ITER =SIMP(statut='f',typ='I',defaut= 0 ),
- ),
-
- b_mumps =BLOC(condition = "METHODE == 'MUMPS' ",fr="Paramètres de la méthode MUMPS",
- TYPE_RESOL =SIMP(statut='f',typ='TXM',defaut='AUTO',into=('NONSYM','SYMGEN','SYMDEF','AUTO')),
- PCENT_PIVOT =SIMP(statut='f',typ='I',defaut=20,),
- RESI_RELA =SIMP(statut='f',typ='R',defaut=1.E-6),
- ),
- ),
- INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
-) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE GNICOLAS G.NICOLAS
-MEMO_NOM_SENSI=PROC(nom="MEMO_NOM_SENSI",op=129,
- UIinfo={"groupes":("Fonction",)},
- fr="Mémorisation des noms des concepts dérivés.",
- ang="Memorisation of the names of the sensitive concepts.",
-
- regles=(AU_MOINS_UN('NOM','NOM_ZERO','NOM_UN'),),
-
- NOM=FACT(statut='f',max='**',
- regles=(PRESENT_PRESENT('MOT_CLE','VALEUR','MOT_FACT' ),),
-
- NOM_SD=SIMP(statut='o',typ='TXM',
- fr="Nom de la structure de base",
- ang="Name of the basic structure"),
-
- PARA_SENSI=SIMP(statut='o',typ=(para_sensi,theta_geom),
- fr="Nom du paramètre sensible",
- ang="Name of the sensitive parameter"),
-
- NOM_COMPOSE=SIMP(statut='f',typ='TXM',defaut=" ",
- fr="Nom de la structure composée",
- ang="Name of the built structure"),
-
- MOT_FACT=SIMP(statut='f',typ='TXM',max='**',
- fr="Liste des mots clés facteurs concernés par la dérivation",
- ang="Factor keyword list involved in derivation"),
-
- MOT_CLE=SIMP(statut='f',typ='TXM',max='**',
- fr="Liste des mots clés concernés par la dérivation",
- ang="Keyword list involved in derivation"),
-
- VALEUR=SIMP(statut='f',typ='TXM',max='**',
- fr="Liste des objets concernés par la dérivation",
- ang="Object list involved in derivation"),
-
- ),
-
- NOM_ZERO=SIMP(statut='f',typ=fonction_sdaster,
- fr="Nom de la fonction nulle",
- ang="Name of the zero fonction"),
-
- NOM_UN =SIMP(statut='f',typ=fonction_sdaster,
- fr="Nom de la fonction unité",
- ang="Name of the one fonction"),
-
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-MODE_ITER_CYCL=OPER(nom="MODE_ITER_CYCL",op= 80,sd_prod=mode_cycl,
- fr="Calcul des modes propres d'une structure à répétitivité cyclique à partir"
- +" d'une base de modes propres réels",
- reentrant='n',
- UIinfo={"groupes":("Résolution",)},
- BASE_MODALE =SIMP(statut='o',typ=base_modale ),
- NB_MODE =SIMP(statut='f',typ='I',defaut= 999 ),
- NB_SECTEUR =SIMP(statut='o',typ='I' ),
- LIAISON =FACT(statut='o',
- DROITE =SIMP(statut='o',typ='TXM' ),
- GAUCHE =SIMP(statut='o',typ='TXM' ),
- AXE =SIMP(statut='f',typ='TXM' ),
- ),
- VERI_CYCL =FACT(statut='f',
- PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF",) ),
- DIST_REFE =SIMP(statut='f',typ='R' ),
- ),
- CALCUL =FACT(statut='o',
- TOUT_DIAM =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- NB_DIAM =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
- OPTION =SIMP(statut='f',typ='TXM',defaut="PLUS_PETITE"
- ,into=("PLUS_PETITE","CENTRE","BANDE") ),
- b_centre =BLOC(condition = "OPTION == 'CENTRE'",
- FREQ =SIMP(statut='o',typ='R',),
- ),
- b_bande =BLOC(condition = "OPTION == 'BANDE'",
- FREQ =SIMP(statut='o',typ='R',min=2,validators=NoRepeat(),max=2),
- ),
-# NMAX_FREQ n a-t-il pas un sens qu avec OPTION CENTRE
- NMAX_FREQ =SIMP(statut='f',typ='I',defaut= 10 ),
- PREC_SEPARE =SIMP(statut='f',typ='R',defaut= 100. ),
- PREC_AJUSTE =SIMP(statut='f',typ='R',defaut= 1.E-6 ),
- NMAX_ITER =SIMP(statut='f',typ='I',defaut= 50 ),
- ),
- INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-def mode_iter_inv_prod(MATR_A,MATR_C,TYPE_RESU,**args ):
- if TYPE_RESU == "MODE_FLAMB" : return mode_flamb
- if AsType(MATR_C) == matr_asse_depl_r : return mode_meca_c
- if AsType(MATR_A) == matr_asse_depl_r : return mode_meca
- if AsType(MATR_A) == matr_asse_pres_r : return mode_acou
- if AsType(MATR_A) == matr_asse_gene_r : return mode_gene
- raise AsException("type de concept resultat non prevu")
-
-MODE_ITER_INV=OPER(nom="MODE_ITER_INV",op= 44,sd_prod=mode_iter_inv_prod
- ,fr="Calcul des modes propres par itérations inverses ; valeurs propres et modes réels ou complexes",
- reentrant='n',
- UIinfo={"groupes":("Résolution",)},
- MATR_A =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_gene_r,matr_asse_pres_r ) ),
- MATR_B =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_gene_r,matr_asse_pres_r ) ),
- MATR_C =SIMP(statut='f',typ=matr_asse_depl_r ),
- TYPE_RESU =SIMP(statut='f',typ='TXM',defaut="DYNAMIQUE",
- into=("MODE_FLAMB","DYNAMIQUE"),fr="Type d analyse" ),
- b_dynam =BLOC(condition = "TYPE_RESU == 'DYNAMIQUE'",
- CALC_FREQ =FACT(statut='o',fr="Choix des paramètres pour le calcul des valeurs propres",
-
- OPTION =SIMP(statut='f',typ='TXM',defaut="AJUSTE",into=("SEPARE","AJUSTE","PROCHE"),
- fr="Choix de l option pour estimer les valeurs propres" ),
- FREQ =SIMP(statut='o',typ='R',max='**'),
- AMOR_REDUIT =SIMP(statut='f',typ='R',max='**'),
- NMAX_FREQ =SIMP(statut='f',typ='I',defaut= 0,val_min=0 ),
- NMAX_ITER_SEPARE=SIMP(statut='f',typ='I' ,defaut= 30,val_min=0 ),
- PREC_SEPARE =SIMP(statut='f',typ='R',defaut= 1.E-4,val_min=0.E+0 ),
- NMAX_ITER_AJUSTE=SIMP(statut='f',typ='I',defaut= 15,val_min=0 ),
- PREC_AJUSTE =SIMP(statut='f',typ='R',defaut= 1.E-4,val_min=0.E+0 ),
-
- NPREC_SOLVEUR =SIMP(statut='f',typ='I',defaut= 8,val_min=0 ),
- NMAX_ITER_SHIFT =SIMP(statut='f',typ='I',defaut= 5,val_min=0 ),
- PREC_SHIFT =SIMP(statut='f',typ='R',defaut= 5.E-2,val_min=0.E+0, ),
- SEUIL_FREQ =SIMP(statut='f',typ='R',defaut= 1.E-2,val_min=0.E+0, ),
- ),
- ),
- b_flamb =BLOC(condition = "TYPE_RESU == 'MODE_FLAMB'",
- CALC_FREQ =FACT(statut='o',fr="Choix des paramètres pour le calcul des valeurs propres",
-
- OPTION =SIMP(statut='f',typ='TXM',defaut="AJUSTE",into=("SEPARE","AJUSTE","PROCHE"),
- fr="Choix de l option pour estimer les valeurs propres" ),
- CHAR_CRIT =SIMP(statut='o',typ='R',validators=NoRepeat(),max='**' ),
- NMAX_FREQ =SIMP(statut='f',typ='I',defaut= 0,val_min=0 ),
- NMAX_ITER_SEPARE=SIMP(statut='f',typ='I' ,defaut= 30,val_min=0 ),
- PREC_SEPARE =SIMP(statut='f',typ='R',defaut= 1.E-4,val_min=0.E+0, ),
- NMAX_ITER_AJUSTE=SIMP(statut='f',typ='I',defaut= 15 ),
- PREC_AJUSTE =SIMP(statut='f',typ='R',defaut= 1.E-4,val_min=0.E+0, ),
-
- NPREC_SOLVEUR =SIMP(statut='f',typ='I',defaut= 8,val_min=0 ),
- NMAX_ITER_SHIFT =SIMP(statut='f',typ='I',defaut= 5,val_min=0 ),
- PREC_SHIFT =SIMP(statut='f',typ='R',defaut= 5.E-2,val_min=0.E+0, ),
- SEUIL_FREQ =SIMP(statut='f',typ='R',defaut= 1.E-2,val_min=0.E+0, ),
- ),
- ),
- CALC_MODE =FACT(statut='d',min=0,fr="Choix des paramètres pour le calcul des vecteurs propres",
- OPTION =SIMP(statut='f',typ='TXM',defaut="DIRECT",into=("DIRECT","RAYLEIGH") ),
- PREC =SIMP(statut='f',typ='R',defaut= 1.E-5,val_min=0.E+0,fr="Précision de convergence" ),
- NMAX_ITER =SIMP(statut='f',typ='I',defaut= 30,val_min=0 ),
- ),
- VERI_MODE =FACT(statut='d',min=0,
- STOP_ERREUR =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
- SEUIL =SIMP(statut='f',typ='R',defaut= 1.E-2,val_min=0.E+0,
- fr="Valeur limite admise pour l ereur a posteriori des modes" ),
- ),
- SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**',
- fr="Liste des param\350tres de sensibilit\351.",
- ang="List of sensitivity parameters",
- ),
- b_sensibilite =BLOC(condition = "SENSIBILITE != None",
- CHAM_MATER =SIMP(statut='f',typ=cham_mater ),
- CARA_ELEM =SIMP(statut='f',typ=cara_elem ),
- EXCIT =FACT(statut='f',max='**',), # que pour NMDOME
- ),
- INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
- TITRE =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-def mode_iter_simult_prod(MATR_A,MATR_C,TYPE_RESU,**args ):
- if TYPE_RESU == "MODE_FLAMB" : return mode_flamb
- if AsType(MATR_C) == matr_asse_depl_r : return mode_meca_c
- if AsType(MATR_A) == matr_asse_depl_r : return mode_meca
- if AsType(MATR_A) == matr_asse_depl_c : return mode_meca_c
- if AsType(MATR_A) == matr_asse_pres_r : return mode_acou
- if AsType(MATR_A) == matr_asse_gene_r : return mode_gene
- raise AsException("type de concept resultat non prevu")
-
-MODE_ITER_SIMULT=OPER(nom="MODE_ITER_SIMULT",op= 45,sd_prod=mode_iter_simult_prod,
- fr="Calcul des modes propres par itérations simultanées ; valeurs propres et"
- +" modes propres réels ou complexes",
- reentrant='n',
- UIinfo={"groupes":("Résolution",)},
- MATR_A =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_depl_c,matr_asse_gene_r,matr_asse_pres_r ) ),
- MATR_B =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_gene_r,matr_asse_pres_r ) ),
- MATR_C =SIMP(statut='f',typ=(matr_asse_depl_r,matr_asse_gene_r) ),
- METHODE =SIMP(statut='f',typ='TXM',defaut="SORENSEN",
- into=("TRI_DIAG","JACOBI","SORENSEN") ),
- b_tri_diag =BLOC(condition = "METHODE == 'TRI_DIAG'",
- PREC_ORTHO =SIMP(statut='f',typ='R',defaut= 1.E-12,val_min=0.E+0 ),
- NMAX_ITER_ORTHO =SIMP(statut='f',typ='I',defaut= 5,val_min=0 ),
- PREC_LANCZOS =SIMP(statut='f',typ='R',defaut= 1.E-8,val_min=0.E+0 ),
- NMAX_ITER_QR =SIMP(statut='f',typ='I',defaut= 30,val_min=0 ),
- ),
- b_jacobi =BLOC(condition = "METHODE == 'JACOBI'",
- PREC_BATHE =SIMP(statut='f',typ='R',defaut= 1.E-10,val_min=0.E+0 ),
- NMAX_ITER_BATHE =SIMP(statut='f',typ='I',defaut= 40,val_min=0 ),
- PREC_JACOBI =SIMP(statut='f',typ='R',defaut= 1.E-2,val_min=0.E+0 ),
- NMAX_ITER_JACOBI=SIMP(statut='f',typ='I',defaut= 12,val_min=0 ),
- ),
- b_sorensen =BLOC(condition = "METHODE == 'SORENSEN'",
- PREC_SOREN =SIMP(statut='f',typ='R',defaut= 0.E+0,val_min=0.E+0 ),
- NMAX_ITER_SOREN =SIMP(statut='f',typ='I',defaut= 20,val_min=0 ),
- PARA_ORTHO_SOREN=SIMP(statut='f',typ='R',defaut= 0.717,val_min=0.E+0 ),
- ),
- TYPE_RESU =SIMP(statut='f',typ='TXM',defaut="DYNAMIQUE",
- into=("MODE_FLAMB","DYNAMIQUE"),
- fr="Type d analyse" ),
- OPTION =SIMP(statut='f',typ='TXM',defaut="SANS",into=("MODE_RIGIDE","SANS"),
- fr="Calcul des modes de corps rigide, uniquement pour la méthode TRI_DIAG" ),
-
- b_flamb =BLOC(condition = "TYPE_RESU == 'MODE_FLAMB'",
- CALC_FREQ =FACT(statut='d',min=0,
- OPTION =SIMP(statut='f',typ='TXM',defaut="PLUS_PETITE",into=("PLUS_PETITE","BANDE","CENTRE"),
- fr="Choix de l option et par conséquent du shift du problème modal" ),
- b_plus_petite =BLOC(condition = "OPTION == 'PLUS_PETITE'",fr="Recherche des plus petites valeurs propres",
- NMAX_FREQ =SIMP(statut='f',typ='I',defaut= 10,val_min=0 ),
- ),
- b_centre =BLOC(condition = "OPTION == 'CENTRE'",
- fr="Recherche des valeurs propres les plus proches d une valeur donnée",
- CHAR_CRIT =SIMP(statut='o',typ='R',
- fr="Charge critique autour de laquelle on cherche les charges critiques propres"),
- NMAX_FREQ =SIMP(statut='f',typ='I',defaut= 10,val_min=0 ),
- ),
- b_bande =BLOC(condition = "(OPTION == 'BANDE')",
- fr="Recherche des valeurs propres dans une bande donnée",
- CHAR_CRIT =SIMP(statut='o',typ='R',min=2,validators=NoRepeat(),max=2,
- fr="Valeur des deux charges critiques délimitant la bande de recherche"),
- ),
- APPROCHE =SIMP(statut='f',typ='TXM',defaut="REEL",into=("REEL","IMAG"),
- fr="Choix du pseudo-produit scalaire pour la résolution du problème quadratique" ),
- regles=(EXCLUS('DIM_SOUS_ESPACE','COEF_DIM_ESPACE'),),
- DIM_SOUS_ESPACE =SIMP(statut='f',typ='I' ),
- COEF_DIM_ESPACE =SIMP(statut='f',typ='I' ),
- NPREC_SOLVEUR =SIMP(statut='f',typ='I',defaut= 8,val_min=0 ),
- NMAX_ITER_SHIFT =SIMP(statut='f',typ='I',defaut= 5,val_min=0 ),
- PREC_SHIFT =SIMP(statut='f',typ='R',defaut= 5.E-2,val_min=0.E+0 ),
- SEUIL_FREQ =SIMP(statut='f',typ='R',defaut= 1.E-2,val_min=0.E+0 ),
- ),
- ),
-
- b_dynam =BLOC(condition = "TYPE_RESU == 'DYNAMIQUE'",
- CALC_FREQ =FACT(statut='d',min=0,
- OPTION =SIMP(statut='f',typ='TXM',defaut="PLUS_PETITE",into=("PLUS_PETITE","BANDE","CENTRE"),
- fr="Choix de l option et par conséquent du shift du problème modal" ),
- b_plus_petite =BLOC(condition = "OPTION == 'PLUS_PETITE'",fr="Recherche des plus petites valeurs propres",
- NMAX_FREQ =SIMP(statut='f',typ='I',defaut= 10,val_min=0 ),
- ),
- b_centre =BLOC(condition = "OPTION == 'CENTRE'",
- fr="Recherche des valeurs propres les plus proches d une valeur donnée",
- FREQ =SIMP(statut='o',typ='R',
- fr="Fréquence autour de laquelle on cherche les fréquences propres"),
- AMOR_REDUIT =SIMP(statut='f',typ='R',),
- NMAX_FREQ =SIMP(statut='f',typ='I',defaut= 10,val_min=0 ),
- ),
- b_bande =BLOC(condition = "(OPTION == 'BANDE')",
- fr="Recherche des valeurs propres dans une bande donnée",
- FREQ =SIMP(statut='o',typ='R',min=2,validators=NoRepeat(),max=2,
- fr="Valeur des deux fréquences délimitant la bande de recherche"),
- ),
- APPROCHE =SIMP(statut='f',typ='TXM',defaut="REEL",into=("REEL","IMAG","COMPLEXE"),
- fr="Choix du pseudo-produit scalaire pour la résolution du problème quadratique" ),
- regles=(EXCLUS('DIM_SOUS_ESPACE','COEF_DIM_ESPACE'),),
- DIM_SOUS_ESPACE =SIMP(statut='f',typ='I' ),
- COEF_DIM_ESPACE =SIMP(statut='f',typ='I' ),
- NPREC_SOLVEUR =SIMP(statut='f',typ='I',defaut= 8,val_min=0 ),
- NMAX_ITER_SHIFT =SIMP(statut='f',typ='I',defaut= 5,val_min=0 ),
- PREC_SHIFT =SIMP(statut='f',typ='R',defaut= 5.E-2,val_min=0.E+0 ),
- SEUIL_FREQ =SIMP(statut='f',typ='R',defaut= 1.E-2,val_min=0.E+0 ),
- ),
- ),
-
- VERI_MODE =FACT(statut='d',min=0,
- STOP_ERREUR =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
- PREC_SHIFT =SIMP(statut='f',typ='R',defaut= 5.E-3,val_min=0.E+0 ),
- SEUIL =SIMP(statut='f',typ='R',defaut= 1.E-6,val_min=0.E+0,
- fr="Valeur limite admise pour l ereur a posteriori des modes" ),
- STURM =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
- ),
- SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**',
- fr="Liste des param\350tres de sensibilit\351.",
- ang="List of sensitivity parameters",
- ),
- b_sensibilite =BLOC(condition = "SENSIBILITE != None",
- CHAM_MATER =SIMP(statut='f',typ=cham_mater ),
- CARA_ELEM =SIMP(statut='f',typ=cara_elem ),
- EXCIT =FACT(statut='f',max='**',), # que pour NMDOME
- ),
- STOP_FREQ_VIDE =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
- INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
- TITRE =SIMP(statut='f',typ='TXM',max='**'),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-def mode_stat_prod(MODE_STAT,FORCE_NODALE,PSEUDO_MODE,**args):
- if (MODE_STAT != None) : return mode_stat_depl
- if (PSEUDO_MODE !=None) : return mode_stat_acce
- if (FORCE_NODALE != None) : return mode_stat_forc
- raise AsException("type de concept resultat non prevu")
-MODE_STATIQUE=OPER(nom="MODE_STATIQUE",op= 93,sd_prod=mode_stat_prod,
- fr="Calcul de modes statiques pour un déplacement, une force ou une accélération unitaire imposé",
- reentrant='n',
- UIinfo={"groupes":("Résolution",)},
- MATR_RIGI =SIMP(statut='o',typ=matr_asse_depl_r ),
- MATR_MASS =SIMP(statut='f',typ=matr_asse_depl_r ),
- regles=(UN_PARMI('MODE_STAT','FORCE_NODALE','PSEUDO_MODE'),),
- MODE_STAT =FACT(statut='f',max='**',
- regles=(UN_PARMI('TOUT','NOEUD','GROUP_NO'),
- UN_PARMI('TOUT_CMP','AVEC_CMP','SANS_CMP'),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ,),
- NOEUD =SIMP(statut='f',typ=no ,max='**'),
- GROUP_NO =SIMP(statut='f',typ=grno ,max='**'),
- TOUT_CMP =SIMP(statut='f',typ='TXM',into=("OUI",) ,),
- AVEC_CMP =SIMP(statut='f',typ='TXM',max='**'),
- SANS_CMP =SIMP(statut='f',typ='TXM',max='**'),
- ),
- FORCE_NODALE =FACT(statut='f',max='**',
- regles=(UN_PARMI('TOUT','NOEUD','GROUP_NO'),
- UN_PARMI('TOUT_CMP','AVEC_CMP','SANS_CMP'),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",), ),
- NOEUD =SIMP(statut='f',typ=no ,max='**'),
- GROUP_NO =SIMP(statut='f',typ=grno ,max='**'),
- TOUT_CMP =SIMP(statut='f',typ='TXM',into=("OUI",), ),
- AVEC_CMP =SIMP(statut='f',typ='TXM',max='**'),
- SANS_CMP =SIMP(statut='f',typ='TXM',max='**'),
- ),
- PSEUDO_MODE =FACT(statut='f',max='**',
- regles=(UN_PARMI('AXE','DIRECTION','TOUT','NOEUD','GROUP_NO' ),),
- AXE =SIMP(statut='f',typ='TXM',into=("X","Y","Z"),max=3),
- DIRECTION =SIMP(statut='f',typ='R',min=3,max=3),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",)),
- NOEUD =SIMP(statut='f',typ=no ,max='**'),
- GROUP_NO =SIMP(statut='f',typ=grno ,max='**'),
- b_dir =BLOC(condition = "DIRECTION != None",
- NOM_DIR =SIMP(statut='f',typ='TXM' ),),
- b_cmp =BLOC(condition="TOUT!= None or NOEUD!=None or GROUP_NO!=None",
- regles=(UN_PARMI('TOUT_CMP','AVEC_CMP','SANS_CMP'),),
- TOUT_CMP =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- AVEC_CMP =SIMP(statut='f',typ='TXM',max='**'),
- SANS_CMP =SIMP(statut='f',typ='TXM',max='**'),
- ),
- ),
- TITRE =SIMP(statut='f',typ='TXM',max='**'),
- INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2 ,) ),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-MODI_BASE_MODALE=OPER(nom="MODI_BASE_MODALE",op= 149,sd_prod=mode_meca,
- reentrant='f',
- fr="Définir la base modale d'une structure sous écoulement",
- UIinfo={"groupes":("Matrices/vecteurs",)},
-# la commande modi_base _modale : reentrant = f ou o
- regles=(EXCLUS('AMOR_UNIF','AMOR_REDUIT', ),),
- BASE =SIMP(statut='o',typ=mode_meca ),
- BASE_ELAS_FLUI =SIMP(statut='o',typ=melasflu_sdaster ),
- NUME_VITE_FLUI =SIMP(statut='o',typ='I' ),
- NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
- AMOR_REDUIT =SIMP(statut='f',typ='R',max='**'),
- AMOR_UNIF =SIMP(statut='f',typ='R' ),
- INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ),
- TITRE =SIMP(statut='f',typ='TXM',max='**'),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE G8BHHXD X.DESROCHES
-MODI_MAILLAGE=OPER(nom="MODI_MAILLAGE",op= 154,sd_prod=maillage_sdaster,
- fr="Effectuer des modifications sur un maillage existant: réorienter des mailles servant,"
- +" à l'application d'une pression, à la modélisation du contact,...",
- reentrant='o',
- UIinfo={"groupes":("Maillage",)},
- regles=(AU_MOINS_UN('ORIE_FISSURE','DEFORME','EQUE_PIQUA','ORIE_PEAU_2D',
- 'ORIE_PEAU_3D','ORIE_NORM_COQUE','PLAQ_TUBE','MODI_MAILLE',
- 'TRANSLATION','ROTATION','MODI_BASE','ECHELLE','ORIE_SHB8','SYMETRIE',
- ),
- PRESENT_ABSENT('ORIE_FISSURE','DEFORME','EQUE_PIQUA','ORIE_PEAU_2D',
- 'ORIE_PEAU_3D','ORIE_NORM_COQUE','PLAQ_TUBE','MODI_MAILLE',),
- PRESENT_ABSENT('DEFORME','ORIE_FISSURE','EQUE_PIQUA','ORIE_PEAU_2D',
- 'ORIE_PEAU_3D','ORIE_NORM_COQUE','PLAQ_TUBE','MODI_MAILLE',),
- PRESENT_ABSENT('EQUE_PIQUA','ORIE_FISSURE','DEFORME','ORIE_PEAU_2D',
- 'ORIE_PEAU_3D','ORIE_NORM_COQUE','PLAQ_TUBE','MODI_MAILLE',),
- PRESENT_ABSENT('ORIE_PEAU_2D','ORIE_FISSURE','DEFORME','EQUE_PIQUA',
- 'ORIE_PEAU_3D','ORIE_NORM_COQUE','PLAQ_TUBE','MODI_MAILLE',),
- PRESENT_ABSENT('ORIE_PEAU_3D','ORIE_FISSURE','DEFORME','EQUE_PIQUA','ORIE_PEAU_2D',
- 'PLAQ_TUBE','MODI_MAILLE',),
- PRESENT_ABSENT('ORIE_NORM_COQUE','ORIE_FISSURE','DEFORME','EQUE_PIQUA','ORIE_PEAU_2D',
- 'PLAQ_TUBE','MODI_MAILLE',),
- PRESENT_ABSENT('PLAQ_TUBE','ORIE_FISSURE','DEFORME','EQUE_PIQUA','ORIE_PEAU_2D',
- 'ORIE_PEAU_3D','ORIE_NORM_COQUE','MODI_MAILLE',),
- PRESENT_ABSENT('MODI_MAILLE','ORIE_FISSURE','DEFORME','EQUE_PIQUA','ORIE_PEAU_2D',
- 'ORIE_PEAU_3D','ORIE_NORM_COQUE','PLAQ_TUBE',),
- EXCLUS('EQUE_PIQUA','PLAQ_TUBE'),
- EXCLUS('EQUE_PIQUA','TUBE_COUDE'),
- EXCLUS('ROTATION','MODI_BASE'),
- EXCLUS('SYMETRIE','ROTATION'),
- EXCLUS('SYMETRIE','TRANSLATION'),
- EXCLUS('SYMETRIE','MODI_BASE'),
- EXCLUS('SYMETRIE','ECHELLE'),
- ),
- MAILLAGE =SIMP(statut='o',typ=maillage_sdaster ),
-
- ORIE_FISSURE =FACT(statut='f',
- GROUP_MA =SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**'),
- ),
-
- DEFORME =FACT(statut='f',
- OPTION =SIMP(statut='o',typ='TXM',into=("TRAN","TRAN_APPUI") ),
- DEPL =SIMP(statut='o',typ=cham_no_depl_r ),
- b_deform =BLOC(condition = "OPTION=='TRAN_APPUI'",
- GROUP_NO_APPUI = SIMP(statut='o',typ=grno,validators=NoRepeat(),max='**' ),
- GROUP_NO_STRU = SIMP(statut='o',typ=grno,validators=NoRepeat(),max='**' ),),
- ),
-
- EQUE_PIQUA =FACT(statut='f',
- GROUP_NO =SIMP(statut='o',typ=grno),
- E_BASE =SIMP(statut='o',typ='R' ),
- DEXT_BASE =SIMP(statut='o',typ='R' ),
- L_BASE =SIMP(statut='o',typ='R' ),
- L_CHANF =SIMP(statut='o',typ='R' ),
- TYPE =SIMP(statut='o',typ='TXM',into=("TYPE_1","TYPE_2")),
- H_SOUD =SIMP(statut='o',typ='R' ),
- ANGL_SOUD =SIMP(statut='o',typ='R' ),
- JEU_SOUD =SIMP(statut='o',typ='R' ),
- E_CORP =SIMP(statut='o',typ='R' ),
- DEXT_CORP =SIMP(statut='o',typ='R' ),
- AZIMUT =SIMP(statut='o',typ='R' ),
- RAFF_MAIL =SIMP(statut='o',typ='TXM' ),
- X_MAX =SIMP(statut='o',typ='R' ),
- ),
- ORIE_PEAU_2D =FACT(statut='f',max='**',
- GROUP_MA =SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**'),
- ),
- ORIE_PEAU_3D =FACT(statut='f',max='**',
- GROUP_MA =SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**'),
- ),
- ORIE_SHB8 =FACT(statut='f',max=1,
- GROUP_MA =SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**'),
- ),
- ORIE_NORM_COQUE =FACT(statut='f',max='**',
- regles=(EXCLUS('NOEUD','GROUP_NO'),
- PRESENT_PRESENT('NOEUD','VECT_NORM'),
- PRESENT_PRESENT('GROUP_NO','VECT_NORM'),),
- GROUP_MA =SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**'),
- VECT_NORM =SIMP(statut='f',typ='R',max=3),
- NOEUD =SIMP(statut='f',typ=no),
- GROUP_NO =SIMP(statut='f',typ=grno),
- ),
- b_modele =BLOC(condition = "(ORIE_PEAU_2D != None) or (ORIE_PEAU_3D != None) or(ORIE_NORM_COQUE != None)",
- MODELE =SIMP(statut='o',typ=modele_sdaster ),
- ),
- PLAQ_TUBE =FACT(statut='f',
- DEXT =SIMP(statut='o',typ='R' ),
- EPAIS =SIMP(statut='o',typ='R' ),
- L_TUBE_P1 =SIMP(statut='o',typ='R' ),
- AZIMUT =SIMP(statut='f',typ='R',defaut= 90. ),
- COUTURE =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON",) ),
- ),
- TUBE_COUDE =FACT(statut='f',
- ANGLE =SIMP(statut='o',typ='R' ),
- R_CINTR =SIMP(statut='o',typ='R' ),
- L_TUBE_P1 =SIMP(statut='o',typ='R' ),
- ),
- MODI_MAILLE =FACT(statut='f',max=1,
- regles=(AU_MOINS_UN('GROUP_MA_FOND','MAILLE_FOND','GROUP_NO_FOND','NOEUD_FOND'),),
- OPTION =SIMP(statut='o',typ='TXM',into=("NOEUD_QUART",) ),
- GROUP_MA_FOND =SIMP(statut='f',typ=grma,validators=NoRepeat(),max=1),
- MAILLE_FOND =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max=1),
- GROUP_NO_FOND =SIMP(statut='f',typ=grno,validators=NoRepeat(),max=1),
- NOEUD_FOND =SIMP(statut='f',typ=no ,validators=NoRepeat(),max=1),
- ),
- MODI_BASE =FACT(statut='f',
- VECT_X =SIMP(statut='o',typ='R',min=2,max=3),
- VECT_Y =SIMP(statut='f',typ='R',min=2,max=3),
- ),
- ECHELLE =SIMP(statut='f',typ='R',),
- TRANSLATION =SIMP(statut='f',typ='R',min=2,max=3),
- ROTATION =FACT(statut='f',max='**',
- POIN_1 =SIMP(statut='o',typ='R',min=2,max=3),
- ANGL =SIMP(statut='o',typ='R',defaut= 0.E+0 ),
- regles=(EXCLUS('DIR','POIN_2'),),
- POIN_2 =SIMP(statut='f',typ='R',min=2,max=3),
- DIR =SIMP(statut='f',typ='R',min=2,max=3),
- ),
- SYMETRIE =FACT(statut='f',max='**',
- fr = "Symétrie du maillage par rapport à un plan en 3D ou à une droite en 2D.",
- POINT =SIMP(statut='o',typ='R',min=2,max=3,
- fr="Point appartenant à la droite ou au plan."),
- AXE_1 =SIMP(statut='o',typ='R',min=2,max=3,
- fr="Vecteur directeur de la droite ou 1er vecteur appartenant au plan."),
- AXE_2 =SIMP(statut='f',typ='R',min=3,max=3,
- fr="2nd vecteur appartenant du plan."),
- ),
- INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
-) ;
-#& MODIF COMMANDE DATE 06/07/2005 AUTEUR GENIAUT S.GENIAUT
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-
-MODI_MODELE_XFEM=OPER(nom="MODI_MODELE_XFEM",op= 113,sd_prod=modele_sdaster,docu="U4.44.12-e",reentrant='f',
- UIinfo={"groupes":("Modélisation",)},
- fr="Engendrer ou enrichir une structure de donnees en affectant les cham_gd associes",
-
- MODELE_IN =SIMP(statut='o',typ=modele_sdaster,min=01,max=01,),
- FISSURE =SIMP(statut='o',typ=fiss_xfem,min=01,max=01,),
- CRITERE =SIMP(statut='f',typ='R',defaut=1.1E-4),
- INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2,)),
-
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-MODI_OBSTACLE=OPER(nom="MODI_OBSTACLE",op=182,sd_prod=obstacle_sdaster,
- fr="Calculer les obstacles dans les systèmes guidage-tube après usure",reentrant='f',
- UIinfo={"groupes":("Modélisation",)},
- regles=(PRESENT_ABSENT('R_MOBILE','CRAYON'),
- PRESENT_PRESENT('V_USUR_TUBE','V_USUR_OBST'),),
- V_USUR_TUBE =SIMP(statut='f',typ='R',max='**'),
- V_USUR_OBST =SIMP(statut='f',typ='R',max='**'),
- TABL_USURE =SIMP(statut='f',typ=tabl_post_usur),
- INST =SIMP(statut='f',typ='R'),
- OBSTACLE =SIMP(statut='f',typ=obstacle_sdaster),
- GUIDE =SIMP(statut='o',typ=obstacle_sdaster),
- CRAYON =SIMP(statut='f',typ=obstacle_sdaster),
- R_MOBILE =SIMP(statut='f',typ='R'),
- PERCEMENT =SIMP(statut='f',typ='R',defaut=1),
- INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
-) ;
-#& MODIF COMMANDE DATE 12/09/2005 AUTEUR CIBHHLV L.VIVAN
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE JMBHH01 J.M.PROIX
-def modi_repere_prod(RESULTAT,**args):
- if AsType(RESULTAT) == evol_elas : return evol_elas
- if AsType(RESULTAT) == evol_noli : return evol_noli
- if AsType(RESULTAT) == evol_ther : return evol_ther
- if AsType(RESULTAT) == dyna_trans : return dyna_trans
- if AsType(RESULTAT) == dyna_harmo : return dyna_harmo
- if AsType(RESULTAT) == mode_meca : return mode_meca
- if AsType(RESULTAT) == mode_flamb : return mode_flamb
- if AsType(RESULTAT) == mult_elas : return mult_elas
- if AsType(RESULTAT) == base_modale : return base_modale
- raise AsException("type de concept resultat non prevu")
-
-MODI_REPERE=OPER(nom="MODI_REPERE",op=191,sd_prod=modi_repere_prod,reentrant='n',
- UIinfo={"groupes":("Résultats et champs",)},
- fr="Calcule des résultats dans le repère cylindrique",
- RESULTAT =SIMP(statut='o',typ=(evol_elas,dyna_trans,dyna_harmo,mode_meca,
- evol_noli,mult_elas,
- evol_ther,base_modale,mode_flamb) ),
- regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','FREQ','NUME_MODE',
- 'NOEUD_CMP','LIST_INST','LIST_FREQ','NOM_CAS'),),
- TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
- NUME_MODE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
- NOEUD_CMP =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'),
- NOM_CAS =SIMP(statut='f',typ='TXM' ),
-
- INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
- FREQ =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
- LIST_INST =SIMP(statut='f',typ=listr8_sdaster),
- LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster),
-
- PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3 ),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",),),
-
- MODI_CHAM =FACT(statut='o',max='**',
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- TYPE_CHAM =SIMP(statut='o',typ='TXM',
- into=("VECT_2D","VECT_3D","TORS_3D","TENS_2D","TENS_3D"),),
- NOM_CHAM =SIMP(statut='o',typ='TXM',into=C_NOM_CHAM_INTO()),
- b_vect_2d =BLOC(condition = "TYPE_CHAM=='VECT_2D'",
- NOM_CMP =SIMP(statut='o',typ='TXM',min=2,max=2 ),),
- b_vect_3d =BLOC(condition = "TYPE_CHAM=='VECT_3D'",
- NOM_CMP =SIMP(statut='o',typ='TXM',min=3,max=3 ),),
- b_tors_3d =BLOC(condition = "TYPE_CHAM=='TORS_3D'",
- NOM_CMP =SIMP(statut='o',typ='TXM',min=6,max=6 ),),
- b_tens_2d =BLOC(condition = "TYPE_CHAM=='TENS_2D'",
- NOM_CMP =SIMP(statut='o',typ='TXM',min=4,max=4 ),),
- b_tens_3d =BLOC(condition = "TYPE_CHAM=='TENS_3D'",
- NOM_CMP =SIMP(statut='o',typ='TXM',min=6,max=6 ),),
- ),
- DEFI_REPERE =FACT(statut='o',
- regles=(UN_PARMI('ANGL_NAUT','ORIGINE'),),
- REPERE =SIMP(statut='f',typ='TXM',defaut="UTILISATEUR",
- into=("UTILISATEUR","CYLINDRIQUE"),),
- ANGL_NAUT =SIMP(statut='f',typ='R',max=3),
- ORIGINE =SIMP(statut='f',typ='R',min=2,max=3),
- AXE_Z =SIMP(statut='f',typ='R',min=3,max=3),
- ),
- TITRE =SIMP(statut='f',typ='TXM',max='**'),
- INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-def norm_mode_prod(MODE,**args ):
- if AsType(MODE) == mode_meca : return mode_meca
- if AsType(MODE) == mode_meca_c : return mode_meca_c
- if AsType(MODE) == mode_flamb : return mode_flamb
- raise AsException("type de concept resultat non prevu")
-
-NORM_MODE=OPER(nom="NORM_MODE",op= 37,sd_prod=norm_mode_prod,
- fr="Normer des modes propres en fonction d'un critère choisi par l'utilisateur",
- reentrant='f',
- UIinfo={"groupes":("Résolution",)},
- regles=(UN_PARMI('NORME','NOEUD','AVEC_CMP','SANS_CMP'),),
- MODE =SIMP(statut='o',typ=(mode_meca,mode_flamb) ),
- NORME =SIMP(statut='f',typ='TXM',fr="Norme prédéfinie : masse généralisée, euclidienne,...",
- into=("MASS_GENE","RIGI_GENE","EUCL","EUCL_TRAN","TRAN","TRAN_ROTA") ),
- NOEUD =SIMP(statut='f',typ=no, fr="Composante donnée d un noeud spécifié égale à 1"),
- b_noeud =BLOC(condition = "NOEUD != None",
- NOM_CMP =SIMP(statut='o',typ='TXM' ),
- ),
- AVEC_CMP =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'),
- SANS_CMP =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'),
- MASS_INER =SIMP(statut='f',typ=tabl_mass_iner ),
- MODE_SIGNE =FACT(statut='f',fr="Imposer un signe sur une des composantes des modes",
- NOEUD =SIMP(statut='o',typ=no,fr="Noeud ou sera imposé le signe"),
- NOM_CMP =SIMP(statut='o',typ='TXM',fr="Composante du noeud ou sera imposé le signe" ),
- SIGNE =SIMP(statut='f',typ='TXM',defaut="POSITIF",into=("NEGATIF","POSITIF"),
- fr="Choix du signe" ),
- ),
- SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**',
- fr="Liste des param\350tres de sensibilit\351.",
- ang="List of sensitivity parameters",
- ),
- TITRE =SIMP(statut='f',typ='TXM',max='**'),
- INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2) ),
-) ;
-#& MODIF COMMANDE DATE 01/04/2005 AUTEUR VABHHTS J.PELLET
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE VABHHTS J.PELLET
-NUME_DDL=OPER(nom="NUME_DDL",op=11,sd_prod=nume_ddl_sdaster,reentrant='n',
- UIinfo={"groupes":("Matrices/vecteurs",)},
- fr="Etablissement de la numérotation des ddl avec ou sans renumérotation et du stockage de la matrice",
- regles=(UN_PARMI('MATR_RIGI','MODELE'),),
- MATR_RIGI =SIMP(statut='f',validators=NoRepeat(),max=100,
- typ=(matr_elem_depl_r ,matr_elem_depl_c,matr_elem_temp_r ,matr_elem_pres_c) ),
- MODELE =SIMP(statut='f',typ=modele_sdaster ),
- b_modele =BLOC(condition = "MODELE != None",
- CHARGE =SIMP(statut='f',validators=NoRepeat(),max='**',typ=(char_meca,char_ther,char_acou, ),),
- ),
- METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC","MUMPS") ),
- b_mult_front =BLOC(condition="METHODE=='MULT_FRONT'",fr="paramètres associés à la méthode multifrontale",
- RENUM =SIMP(statut='f',typ='TXM',into=("MD","MDA","METIS"),defaut="METIS" ),
- ),
- b_ldlt =BLOC(condition="METHODE=='LDLT'",fr="paramètres associés à la méthode LDLT",
- RENUM =SIMP(statut='f',typ='TXM',into=("RCMK","SANS"),defaut="RCMK" ),
- ),
- b_mumps =BLOC(condition="METHODE=='MUMPS'",fr="paramètres associés à la méthode MUMPS",
- RENUM =SIMP(statut='f',typ='TXM',into=("SANS",),defaut="SANS" ),
- ),
- b_gcpc =BLOC(condition="METHODE=='GCPC'",fr="paramètres associés à la méthode gradient conjugué",
- RENUM =SIMP(statut='f',typ='TXM',into=("RCMK","SANS"),defaut="RCMK" ),
- ),
- INFO =SIMP(statut='f',typ='I',into=(1,2)),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-NUME_DDL_GENE=OPER(nom="NUME_DDL_GENE",op= 127,sd_prod=nume_ddl_gene,
- fr="Etablissement de la numérotation des ddl d'un modèle établi en coordonnées généralisées",
- reentrant='n',
- UIinfo={"groupes":("Matrices/vecteurs",)},
- regles=UN_PARMI('MODELE_GENE','BASE'),
- MODELE_GENE =SIMP(statut='f',typ=modele_gene ),
- b_modele_gene =BLOC(condition = "MODELE_GENE != None",
- STOCKAGE =SIMP(statut='f',typ='TXM',defaut="LIGN_CIEL",into=("LIGN_CIEL","PLEIN") ),
- METHODE =SIMP(statut='f',typ='TXM',defaut="CLASSIQUE",into=("INITIAL","CLASSIQUE") ),
- ),
- BASE =SIMP(statut='f',typ=(mode_meca,mode_stat,base_modale,mode_gene ) ),
- b_base =BLOC(condition = "BASE != None",
- STOCKAGE =SIMP(statut='f',typ='TXM',defaut="DIAG",into=("DIAG","PLEIN") ),
- NB_VECT =SIMP(statut='f',typ='I',defaut= 9999 ),
- ),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2005 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-POST_CHAM_XFEM=OPER(nom="POST_CHAM_XFEM",op= 196,sd_prod=resultat_sdaster,
- reentrant='n',UIinfo={"groupes":("Post traitements",)},
- fr="Calcul des champs DEPL et SIEF_ELGA sur le maillage fissuré",
- MAILLAGE = SIMP(statut='o',typ=maillage_sdaster),
- MODELE = SIMP(statut='o',typ=modele_sdaster,),
- RESULTAT = SIMP(statut='o',typ=resultat_sdaster),
- NOM_CHAM = SIMP(statut='o',typ='TXM',into=("DEPL","SIEF_ELGA"),)
-);
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-POST_DYNA_ALEA=OPER(nom="POST_DYNA_ALEA",op= 132,sd_prod=tabl_post_alea,
- fr="Traitements statistiques de résultats de type interspectre et impression sur fichiers",
- reentrant='n',
- UIinfo={"groupes":("Post traitements",)},
- regles=(UN_PARMI('NOEUD_I','NUME_ORDRE_I','OPTION'),),
- INTE_SPEC =SIMP(statut='o',typ=tabl_intsp ),
- NUME_VITE_FLUI =SIMP(statut='f',typ='I' ),
- TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- NUME_ORDRE_I =SIMP(statut='f',typ='I',max='**' ),
- NOEUD_I =SIMP(statut='f',typ=no,max='**'),
- OPTION =SIMP(statut='f',typ='TXM',into=("DIAG",) ),
- b_nume_ordre_i =BLOC(condition = "NUME_ORDRE_I != None",
- NUME_ORDRE_J =SIMP(statut='o',typ='I',max='**' ),
- ),
- b_noeud_i =BLOC(condition = "NOEUD_I != None",
- NOEUD_J =SIMP(statut='o',typ=no,max='**'),
- NOM_CMP_I =SIMP(statut='o',typ='TXM',max='**' ),
- NOM_CMP_J =SIMP(statut='o',typ='TXM',max='**' ),
- ),
- DEPASSEMENT =FACT(statut='f',max='**',
- fr="Loi de dépassement d un seuil pendant une durée donnée",
- regles=(ENSEMBLE('VALE_MIN','VALE_MAX'),),
- VALE_MIN =SIMP(statut='f',typ='R' ),
- VALE_MAX =SIMP(statut='f',typ='R' ),
- PAS =SIMP(statut='f',typ='R' ),
- DUREE =SIMP(statut='f',typ='R',defaut= 1. ),
- ),
- RAYLEIGH =FACT(statut='f',max='**',
- fr="Densité de probabilité de pic positif, loi adaptée à des signaux à bande étroite",
- regles=(ENSEMBLE('VALE_MIN','VALE_MAX'),),
- VALE_MIN =SIMP(statut='f',typ='R' ),
- VALE_MAX =SIMP(statut='f',typ='R' ),
- PAS =SIMP(statut='f',typ='R' ),
- ),
- GAUSS =FACT(statut='f',max='**',
- fr="Densité de probabilité de pic positif, loi normale adaptée à des signaux large bande",
- regles=(ENSEMBLE('VALE_MIN','VALE_MAX'),),
- VALE_MIN =SIMP(statut='f',typ='R' ),
- VALE_MAX =SIMP(statut='f',typ='R' ),
- PAS =SIMP(statut='f',typ='R' ),
- ),
- VANMARCKE =FACT(statut='f',max='**',
- fr="Probabilité de non dépassement de seuil pendant une durée donnée (analyse sismique)",
- regles=(ENSEMBLE('VALE_MIN','VALE_MAX'),),
- VALE_MIN =SIMP(statut='f',typ='R' ),
- VALE_MAX =SIMP(statut='f',typ='R' ),
- PAS =SIMP(statut='f',typ='R' ),
- DUREE =SIMP(statut='f',typ='R',defaut= 10. ),
- ),
- MOMENT =SIMP(statut='f',typ='I',max='**',fr="Moments spectraux en complément des cinq premiers" ),
- TITRE =SIMP(statut='f',typ='TXM',max='**' ),
- INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-POST_DYNA_MODA_T=OPER(nom="POST_DYNA_MODA_T",op= 130,sd_prod=tabl_post_dyna,
- fr="Post-traiter les résultats en coordonnées généralisées produit par DYNA_TRAN_MODAL",
- reentrant='n',
- UIinfo={"groupes":("Post traitements",)},
- regles=(UN_PARMI('CHOC','RELA_EFFO_DEPL', ),),
- RESU_GENE =SIMP(statut='o',typ=tran_gene ),
- CHOC =FACT(statut='f',max='**',
- fr="Analyse des non linéarités de choc",
- INST_INIT =SIMP(statut='f',typ='R',defaut= -1. ),
- INST_FIN =SIMP(statut='f',typ='R',defaut= 999. ),
- NB_BLOC =SIMP(statut='f',typ='I',defaut= 1 ),
- SEUIL_FORCE =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- DUREE_REPOS =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- OPTION =SIMP(statut='f',typ='TXM',defaut="USURE",into=("IMPACT","USURE") ),
- NB_CLASSE =SIMP(statut='f',typ='I',defaut= 10 ),
- ),
- RELA_EFFO_DEPL =FACT(statut='f',
- fr="Analyse des relationsnon linéaires effort-déplacement",
- NOEUD =SIMP(statut='o',typ=no),
- NOM_CMP =SIMP(statut='o',typ='TXM' ),
- ),
- INFO =SIMP(statut='f',typ='I',defaut= 1,into=(1,2) ),
- TITRE =SIMP(statut='f',typ='TXM',max='**' ),
-) ;
-#& MODIF COMMANDE DATE 10/06/2004 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE G8BHHXD X.DESROCHES
-def post_elem_prod( MASS_INER,ENER_POT,ENER_CIN,TRAV_EXT,WEIBULL,
- CARA_GEOM,CARA_POUTRE,RICE_TRACEY,CHAR_LIMITE,
- INDIC_ENER,INDIC_SEUIL,ENER_ELAS,ENER_TOTALE,
- AIRE_INTERNE,**args ):
- if MASS_INER != None : return tabl_mass_iner
- if ENER_POT != None : return tabl_ener_pot
- if ENER_CIN != None : return tabl_ener_cin
- if TRAV_EXT != None : return tabl_trav_ext
- if WEIBULL != None : return tabl_weibull
- if CARA_GEOM != None : return tabl_cara_geom
- if CARA_POUTRE != None : return tabl_cara_geom
- if RICE_TRACEY != None : return tabl_rice_tracey
- if CHAR_LIMITE != None : return tabl_char_limite
- if INDIC_ENER != None : return tabl_indic_ener
- if INDIC_SEUIL != None : return tabl_indic_seuil
- if ENER_ELAS != None : return tabl_ener_elas
- if ENER_TOTALE != None : return tabl_ener_totale
- if AIRE_INTERNE != None : return tabl_aire_int
- raise AsException("type de concept resultat_sdaster non prevu")
-
-POST_ELEM=OPER(nom="POST_ELEM",op=107,sd_prod=post_elem_prod,reentrant='f',
- UIinfo={"groupes":("Post traitements",)},
- fr="Calcul de quantités globales (masse, inerties, énergie, ...) sur tout ou partie du modèle",
-
- regles=(UN_PARMI('MASS_INER', 'ENER_POT', 'ENER_CIN','TRAV_EXT',
- 'WEIBULL', 'RICE_TRACEY', 'CARA_GEOM','CHAR_LIMITE',
- 'CARA_POUTRE', 'INDIC_ENER', 'INDIC_SEUIL',
- 'AIRE_INTERNE','ENER_ELAS','ENER_TOTALE'),
- ),
-
- MASS_INER = FACT(statut='f',max='**',
- regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),),
- TOUT = SIMP(statut='f',typ='TXM',into=("OUI",) ),
- MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- ORIG_INER = SIMP(statut='f',typ='R',min=3,max=3 ),
- ),
- b_mass_iner = BLOC(condition = "( MASS_INER != None )",
- fr="calcul de la masse, les inerties et le centre de gravité",
- regles=(EXCLUS('CHAM_GD','RESULTAT'),
- EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','FREQ','NUME_MODE',
- 'NOEUD_CMP','LIST_ORDRE','LIST_INST','LIST_FREQ','NOM_CAS'),),
- MODELE = SIMP(statut='f',typ=modele_sdaster),
- CHAM_MATER = SIMP(statut='f',typ=cham_mater),
- CARA_ELEM = SIMP(statut='f',typ=cara_elem),
- CHARGE = SIMP(statut='f',typ=(char_meca,char_ther,char_acou),validators=NoRepeat(),max='**' ),
- NUME_COUCHE = SIMP(statut='f',typ='I',defaut=1),
- NIVE_COUCHE = SIMP(statut='f',typ='TXM',defaut="MOY",into=("INF","SUP","MOY"),),
- MODE_FOURIER = SIMP(statut='f',typ='I',defaut=0),
- GEOMETRIE = SIMP(statut='f',typ='TXM',defaut="INITIALE",into=("INITIALE","DEFORMEE")),
- CHAM_GD = SIMP(statut='f',typ=(cham_no_depl_r,cham_no_temp_r,cham_elem_ener_r) ),
- RESULTAT = SIMP(statut='f',typ=(mode_meca,evol_elas,evol_noli,mult_elas,
- fourier_elas,dyna_trans) ),
- PRECISION = SIMP(statut='f',typ='R',defaut= 1.0E-3),
- CRITERE = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")),
- TOUT_ORDRE = SIMP(statut='f',typ='TXM',into=("OUI",) ),
- NUME_ORDRE = SIMP(statut='f',typ='I',),
- LIST_ORDRE = SIMP(statut='f',typ=listis_sdaster),
- INST = SIMP(statut='f',typ='R',),
- LIST_INST = SIMP(statut='f',typ=listr8_sdaster),
- FREQ = SIMP(statut='f',typ='R',),
- LIST_FREQ = SIMP(statut='f',typ=listr8_sdaster),
- NUME_MODE = SIMP(statut='f',typ='I',),
- NOEUD_CMP = SIMP(statut='f',typ='TXM',min=2,validators=NoRepeat(),max=2),
- NOM_CAS = SIMP(statut='f',typ='TXM',),
- ),
-
- ENER_POT = FACT(statut='f',max='**',
- regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),),
- TOUT = SIMP(statut='f',typ='TXM',into=("OUI",) ),
- MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- ),
- b_ener_pot = BLOC(condition = "( ENER_POT != None )",
- fr="calcul de l'énergie potentielle de déformation",
- regles=(UN_PARMI('CHAM_GD','RESULTAT'),
- EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','FREQ','NUME_MODE',
- 'NOEUD_CMP','LIST_ORDRE','LIST_INST','LIST_FREQ','NOM_CAS'),),
- MODELE = SIMP(statut='f',typ=modele_sdaster),
- CHAM_MATER = SIMP(statut='f',typ=cham_mater),
- CARA_ELEM = SIMP(statut='f',typ=cara_elem),
- CHARGE = SIMP(statut='f',typ=(char_meca,char_ther,char_acou),validators=NoRepeat(),max='**' ),
- NUME_COUCHE = SIMP(statut='f',typ='I',defaut=1),
- NIVE_COUCHE = SIMP(statut='f',typ='TXM',defaut="MOY",into=("INF","SUP","MOY"),),
- ANGLE = SIMP(statut='f',typ='I',defaut=0),
- MODE_FOURIER = SIMP(statut='f',typ='I',defaut=0),
- CHAM_GD = SIMP(statut='f',typ=(cham_no_depl_r,cham_no_temp_r,cham_elem_ener_r) ),
- RESULTAT = SIMP(statut='f',typ=(mode_meca,evol_elas,evol_ther,evol_noli,dyna_trans,mult_elas) ),
- PRECISION = SIMP(statut='f',typ='R',defaut= 1.0E-3),
- CRITERE = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")),
- TOUT_ORDRE = SIMP(statut='f',typ='TXM',into=("OUI",) ),
- NUME_ORDRE = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
- LIST_ORDRE = SIMP(statut='f',typ=listis_sdaster),
- INST = SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
- LIST_INST = SIMP(statut='f',typ=listr8_sdaster),
- FREQ = SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
- LIST_FREQ = SIMP(statut='f',typ=listr8_sdaster),
- NUME_MODE = SIMP(statut='f',typ='I' ,validators=NoRepeat(),max='**'),
- NOEUD_CMP = SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'),
- NOM_CAS = SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'),
- ),
-
- ENER_CIN = FACT(statut='f',max='**',
- regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),),
- OPTION = SIMP(statut='f',typ='TXM',
- into=("MASS_MECA","MASS_MECA_DIAG"),
- defaut="MASS_MECA" ),
- TOUT = SIMP(statut='f',typ='TXM',into=("OUI",) ),
- MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- ),
- b_ener_cin = BLOC(condition = "( ENER_CIN != None )",
- fr="calcul de l'énergie cinétique",
- regles=(UN_PARMI('CHAM_GD','RESULTAT'),
- EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','FREQ','NUME_MODE',
- 'NOEUD_CMP','LIST_ORDRE','LIST_INST','LIST_FREQ','NOM_CAS'),),
- MODELE = SIMP(statut='f',typ=modele_sdaster),
- CHAM_MATER = SIMP(statut='f',typ=cham_mater),
- CARA_ELEM = SIMP(statut='f',typ=cara_elem),
- CHARGE = SIMP(statut='f',typ=(char_meca,char_ther,char_acou),validators=NoRepeat(),max='**' ),
- NUME_COUCHE = SIMP(statut='f',typ='I',defaut=1),
- NIVE_COUCHE = SIMP(statut='f',typ='TXM',defaut="MOY",into=("INF","SUP","MOY"),),
- ANGLE = SIMP(statut='f',typ='I',defaut=0),
- MODE_FOURIER = SIMP(statut='f',typ='I',defaut=0),
- CHAM_GD = SIMP(statut='f',typ=(cham_no_depl_r,cham_no_temp_r,cham_elem_ener_r) ),
- RESULTAT = SIMP(statut='f',typ=(mode_meca,evol_elas,evol_ther,evol_noli,dyna_trans) ),
- PRECISION = SIMP(statut='f',typ='R',defaut= 1.0E-3),
- CRITERE = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")),
- TOUT_ORDRE = SIMP(statut='f',typ='TXM',into=("OUI",) ),
- NUME_ORDRE = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
- LIST_ORDRE = SIMP(statut='f',typ=listis_sdaster),
- INST = SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
- LIST_INST = SIMP(statut='f',typ=listr8_sdaster),
- FREQ = SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
- LIST_FREQ = SIMP(statut='f',typ=listr8_sdaster),
- NUME_MODE = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
- NOEUD_CMP = SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'),
- NOM_CAS = SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'),
- ),
-
- ENER_ELAS = FACT(statut='f',max='**',
- regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),),
- TOUT = SIMP(statut='f',typ='TXM',into=("OUI",) ),
- MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- ),
- b_ener_elas = BLOC(condition = "( ENER_ELAS != None )",
- fr="calcul de l'énergie de déformation élastique",
- MODELE = SIMP(statut='f',typ=modele_sdaster),
- CHAM_MATER = SIMP(statut='f',typ=cham_mater),
- CARA_ELEM = SIMP(statut='f',typ=cara_elem),
- CHARGE = SIMP(statut='f',typ=(char_meca,char_ther,char_acou),validators=NoRepeat(),max='**' ),
- NUME_COUCHE = SIMP(statut='f',typ='I',defaut=1),
- NIVE_COUCHE = SIMP(statut='f',typ='TXM',defaut="MOY",into=("INF","SUP","MOY"),),
- MODE_FOURIER = SIMP(statut='f',typ='I',defaut=0),
- RESULTAT = SIMP(statut='o',typ=(evol_noli) ),
- regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','INST','LIST_INST'),),
- PRECISION = SIMP(statut='f',typ='R',defaut= 1.0E-3),
- CRITERE = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")),
- TOUT_ORDRE = SIMP(statut='f',typ='TXM',into=("OUI",) ),
- NUME_ORDRE = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
- LIST_ORDRE = SIMP(statut='f',typ=listis_sdaster),
- INST = SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
- LIST_INST = SIMP(statut='f',typ=listr8_sdaster),
- ),
-
- ENER_TOTALE = FACT(statut='f',max='**',
- regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),),
- TOUT = SIMP(statut='f',typ='TXM',into=("OUI",) ),
- MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- ),
- b_ener_totale = BLOC(condition = "( ENER_TOTALE != None )",
- fr="calcul de l'énergie de déformation totale",
- MODELE = SIMP(statut='f',typ=modele_sdaster),
- CHAM_MATER = SIMP(statut='f',typ=cham_mater),
- CARA_ELEM = SIMP(statut='f',typ=cara_elem),
- CHARGE = SIMP(statut='f',typ=(char_meca,char_ther,char_acou),validators=NoRepeat(),max='**' ),
- NUME_COUCHE = SIMP(statut='f',typ='I',defaut=1),
- NIVE_COUCHE = SIMP(statut='f',typ='TXM',defaut="MOY",into=("INF","SUP","MOY"),),
- MODE_FOURIER = SIMP(statut='f',typ='I',defaut=0),
- RESULTAT = SIMP(statut='o',typ=(evol_noli) ),
- regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','INST','LIST_INST'),),
- PRECISION = SIMP(statut='f',typ='R',defaut= 1.0E-3),
- CRITERE = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")),
- TOUT_ORDRE = SIMP(statut='f',typ='TXM',into=("OUI",) ),
- NUME_ORDRE = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
- LIST_ORDRE = SIMP(statut='f',typ=listis_sdaster),
- INST = SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
- LIST_INST = SIMP(statut='f',typ=listr8_sdaster),
- ),
-
- WEIBULL = FACT(statut='f',max='**',
- regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),),
- TOUT = SIMP(statut='f',typ='TXM',into=("OUI",) ),
- MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- OPTION = SIMP(statut='f',typ='TXM',
- into=("SIGM_ELGA","SIGM_ELMOY"),
- defaut="SIGM_ELGA"),
- CORR_PLAST = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
- COEF_MULT = SIMP(statut='f',typ='R',defaut=1.),
- ),
- b_weibull = BLOC(condition = "( WEIBULL != None )",
- fr="calcul du champ élémentaire de la puissance m-ième de la contrainte de Weibull",
- regles=(UN_PARMI('CHAM_GD','RESULTAT'),
- EXCLUS('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','INST','LIST_INST'),),
- MODELE = SIMP(statut='f',typ=modele_sdaster),
- CHAM_MATER = SIMP(statut='f',typ=cham_mater),
- CARA_ELEM = SIMP(statut='f',typ=cara_elem),
- CHARGE = SIMP(statut='f',typ=(char_meca,char_ther,char_acou),validators=NoRepeat(),max='**' ),
- NUME_COUCHE = SIMP(statut='f',typ='I',defaut=1),
- NIVE_COUCHE = SIMP(statut='f',typ='TXM',defaut="MOY",into=("INF","SUP","MOY"),),
- MODE_FOURIER = SIMP(statut='f',typ='I',defaut=0),
- CHAM_GD = SIMP(statut='f',typ=(cham_no_depl_r,cham_no_temp_r,cham_elem_ener_r) ),
- RESULTAT = SIMP(statut='f',typ=(evol_noli) ),
- PRECISION = SIMP(statut='f',typ='R',defaut= 1.0E-3),
- CRITERE = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")),
- TOUT_ORDRE = SIMP(statut='f',typ='TXM',into=("OUI",) ),
- NUME_ORDRE = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
- LIST_ORDRE = SIMP(statut='f',typ=listis_sdaster),
- INST = SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
- LIST_INST = SIMP(statut='f',typ=listr8_sdaster),
- ),
-
- RICE_TRACEY = FACT(statut='f',max='**',
- regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),),
- TOUT = SIMP(statut='f',typ='TXM',into=("OUI",) ),
- MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- OPTION = SIMP(statut='f',typ='TXM',
- into=("SIGM_ELGA","SIGM_ELMOY"),
- defaut="SIGM_ELGA"),
- LOCAL = SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")),
- ),
- b_rice_tracey = BLOC(condition = "( RICE_TRACEY != None )",
- fr="calcul du taux de croissance d'une cavité sphérique par rapport à un domaine",
- regles=(UN_PARMI('CHAM_GD','RESULTAT'),
- EXCLUS('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','INST','LIST_INST'),),
- MODELE = SIMP(statut='f',typ=modele_sdaster),
- CHAM_MATER = SIMP(statut='f',typ=cham_mater),
- CARA_ELEM = SIMP(statut='f',typ=cara_elem),
- CHARGE = SIMP(statut='f',typ=(char_meca,char_ther,char_acou),validators=NoRepeat(),max='**' ),
- NUME_COUCHE = SIMP(statut='f',typ='I',defaut=1),
- NIVE_COUCHE = SIMP(statut='f',typ='TXM',defaut="MOY",into=("INF","SUP","MOY"),),
- MODE_FOURIER = SIMP(statut='f',typ='I',defaut=0),
- CHAM_GD = SIMP(statut='f',typ=(cham_no_depl_r,cham_no_temp_r,cham_elem_ener_r) ),
- RESULTAT = SIMP(statut='f',typ=(evol_noli) ),
- PRECISION = SIMP(statut='f',typ='R',defaut= 1.0E-3),
- CRITERE = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")),
- TOUT_ORDRE = SIMP(statut='f',typ='TXM',into=("OUI",) ),
- NUME_ORDRE = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
- LIST_ORDRE = SIMP(statut='f',typ=listis_sdaster),
- INST = SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
- LIST_INST = SIMP(statut='f',typ=listr8_sdaster),
- ),
-
- INDIC_ENER = FACT(statut='f',max='**',
- regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),),
- TOUT = SIMP(statut='f',typ='TXM',into=("OUI",) ),
- MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- ),
- b_indic_ener = BLOC(condition = "( INDIC_ENER != None )",
- fr="calcul un indicateur global de perte de proportionnalité du chargement",
- MODELE = SIMP(statut='f',typ=modele_sdaster),
- CHAM_MATER = SIMP(statut='f',typ=cham_mater),
- CHARGE = SIMP(statut='f',typ=(char_meca,char_ther,char_acou),validators=NoRepeat(),max='**' ),
- MODE_FOURIER = SIMP(statut='f',typ='I',defaut=0),
- RESULTAT = SIMP(statut='o',typ=(evol_noli) ),
- regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','INST','LIST_INST'),),
- PRECISION = SIMP(statut='f',typ='R',defaut= 1.0E-3),
- CRITERE = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")),
- TOUT_ORDRE = SIMP(statut='f',typ='TXM',into=("OUI",) ),
- NUME_ORDRE = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
- LIST_ORDRE = SIMP(statut='f',typ=listis_sdaster),
- INST = SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
- LIST_INST = SIMP(statut='f',typ=listr8_sdaster),
- ),
-
- INDIC_SEUIL = FACT(statut='f',max='**',
- regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),),
- TOUT = SIMP(statut='f',typ='TXM',into=("OUI",) ),
- MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- ),
- b_indic_seuil = BLOC(condition = "( INDIC_SEUIL != None )",
- fr="calcul un indicateur global de perte de proportionnalité du chargement",
- MODELE = SIMP(statut='f',typ=modele_sdaster),
- CHAM_MATER = SIMP(statut='f',typ=cham_mater),
- CHARGE = SIMP(statut='f',typ=(char_meca,char_ther,char_acou),validators=NoRepeat(),max='**' ),
- MODE_FOURIER = SIMP(statut='f',typ='I',defaut=0),
- RESULTAT = SIMP(statut='o',typ=(evol_noli) ),
- regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','INST','LIST_INST'),),
- PRECISION = SIMP(statut='f',typ='R',defaut= 1.0E-3),
- CRITERE = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")),
- TOUT_ORDRE = SIMP(statut='f',typ='TXM',into=("OUI",) ),
- NUME_ORDRE = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
- LIST_ORDRE = SIMP(statut='f',typ=listis_sdaster),
- INST = SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
- LIST_INST = SIMP(statut='f',typ=listr8_sdaster),
- ),
-
- CHAR_LIMITE = FACT(statut='f',min=0,
- CHAR_CSTE = SIMP(statut='f',typ='TXM',into=("OUI","NON"),defaut="NON")
- ),
- b_char_limite = BLOC(condition = "( CHAR_LIMITE != None )",
- fr="post-traitement du calcul de la charge limite",
- MODELE = SIMP(statut='f',typ=modele_sdaster),
- CHAM_MATER = SIMP(statut='f',typ=cham_mater),
- CARA_ELEM = SIMP(statut='f',typ=cara_elem),
- CHARGE = SIMP(statut='f',typ=(char_meca,char_ther,char_acou),validators=NoRepeat(),max='**' ),
- MODE_FOURIER = SIMP(statut='f',typ='I',defaut=0),
- RESULTAT = SIMP(statut='o',typ=(evol_noli) ),
- regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','INST','LIST_INST'),),
- PRECISION = SIMP(statut='f',typ='R',defaut= 1.0E-3),
- CRITERE = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")),
- TOUT_ORDRE = SIMP(statut='f',typ='TXM',into=("OUI",) ),
- NUME_ORDRE = SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
- LIST_ORDRE = SIMP(statut='f',typ=listis_sdaster),
- INST = SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
- LIST_INST = SIMP(statut='f',typ=listr8_sdaster),
- ),
-
- CARA_GEOM = FACT(statut='f',max='**',
- regles=(AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),),
- TOUT = SIMP(statut='f',typ='TXM',into=("OUI",) ),
- MAILLE = SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- SYME_X = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
- SYME_Y = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
- ORIG_INER = SIMP(statut='f',typ='R',min=2,max=2),
- ),
- b_cara_geom = BLOC(condition = "( CARA_GEOM != None )",
- fr="calcul des caractéristiques géométriques d'un section de poutre",
- MODELE = SIMP(statut='f',typ=modele_sdaster),
- CHAM_MATER = SIMP(statut='f',typ=cham_mater),
- CHARGE = SIMP(statut='f',typ=(char_meca,char_ther,char_acou),validators=NoRepeat(),max='**' ),
- MODE_FOURIER = SIMP(statut='f',typ='I',defaut=0),
- ),
-
- CARA_POUTRE = FACT(statut='f',max='**',
- regles=(AU_MOINS_UN('TOUT','GROUP_MA'),
- ENSEMBLE('LONGUEUR','LIAISON','MATERIAU'),),
- TOUT = SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- GROUP_MA_INTE = SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- CARA_GEOM = SIMP(statut='f',typ=tabl_cara_geom),
- RT = SIMP(statut='f',typ='R'),
- LAPL_PHI = SIMP(statut='f',typ=evol_ther),
- LAPL_PHI_Y = SIMP(statut='f',typ=evol_ther),
- LAPL_PHI_Z = SIMP(statut='f',typ=evol_ther),
- LIAISON = SIMP(statut='f',typ='TXM',into=("ROTULE","ENCASTREMENT")),
- LONGUEUR = SIMP(statut='f',typ='R'),
- MATERIAU = SIMP(statut='f',typ=mater_sdaster),
- OPTION = SIMP(statut='f',typ='TXM',
- into=("CARA_TORSION","CARA_CISAILLEMENT","CARA_GAUCHI") ),
- ),
- b_cara_poutre = BLOC(condition = "( CARA_POUTRE != None )",
- fr="calcul des caractéristiques mécaniques d'un section de poutre",
- MODELE = SIMP(statut='f',typ=modele_sdaster),
- CHAM_MATER = SIMP(statut='f',typ=cham_mater),
- CHARGE = SIMP(statut='f',typ=(char_meca,char_ther,char_acou),validators=NoRepeat(),max='**' ),
- MODE_FOURIER = SIMP(statut='f',typ='I',defaut=0),
- ),
-
- AIRE_INTERNE = FACT(statut='f',max='**',
- GROUP_MA_BORD = SIMP(statut='o',typ=grma,validators=NoRepeat(),max='**'),
- ),
- b_aire_interne = BLOC(condition = "( AIRE_INTERNE != None )",
- fr="calcul de l'aire d'un trou dans un maillage 2D",
- MODELE = SIMP(statut='f',typ=modele_sdaster),
- ),
-
- TRAV_EXT = FACT(statut='f',),
- b_trav_ext = BLOC(condition = "( TRAV_EXT != None )",
- fr="calcul du travail des efforts extérieurs",
- RESULTAT = SIMP(statut='o',typ=(evol_elas,evol_noli,dyna_trans) ),
- PRECISION = SIMP(statut='f',typ='R',defaut= 1.0E-3),
- CRITERE = SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")),
- TOUT_ORDRE = SIMP(statut='f',typ='TXM',into=("OUI",) ),
- ),
-
- TITRE =SIMP(statut='f',typ='TXM',max='**' ),
- INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
-
- ) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-POST_FATI_ALEA=OPER(nom="POST_FATI_ALEA",op=170,sd_prod=tabl_post_f_alea,reentrant='n',
- UIinfo={"groupes":("Post traitements",)},
- fr="Calculer le dommage de fatigue subi par une structure soumise à une sollicitation de type aléatoire",
- regles=(ENSEMBLE('MOMENT_SPEC_0','MOMENT_SPEC_2'),
- PRESENT_PRESENT( 'MOMENT_SPEC_4','MOMENT_SPEC_0'),
- UN_PARMI('TABL_POST_ALEA','MOMENT_SPEC_0'), ),
- MOMENT_SPEC_0 =SIMP(statut='f',typ='R'),
- MOMENT_SPEC_2 =SIMP(statut='f',typ='R'),
- MOMENT_SPEC_4 =SIMP(statut='f',typ='R'),
- TABL_POST_ALEA =SIMP(statut='f',typ=tabl_post_alea),
- COMPTAGE =SIMP(statut='o',typ='TXM',into=("PIC","NIVEAU")),
- DUREE =SIMP(statut='f',typ='R',defaut= 1.),
- CORR_KE =SIMP(statut='f',typ='TXM',into=("RCCM",)),
- DOMMAGE =SIMP(statut='o',typ='TXM',into=("WOHLER",)),
- MATER =SIMP(statut='o',typ=mater_sdaster),
- TITRE =SIMP(statut='f',typ='TXM',max='**'),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-POST_FATIGUE=OPER(nom="POST_FATIGUE",op=136,sd_prod=tabl_post_fatig,reentrant='n',
- UIinfo={"groupes":("Post traitements",)},
- fr="Calculer en un point, le dommage de fatigue subi par une structure soumise à une histoire de chargement",
-
- CHARGEMENT = SIMP(statut='o',typ='TXM',into=("UNIAXIAL","PERIODIQUE","QUELCONQUE")),
-
- b_uniaxial = BLOC( condition = "CHARGEMENT=='UNIAXIAL'",
- regles=(PRESENT_PRESENT('CORR_KE','MATER'),
- PRESENT_PRESENT('CORR_SIGM_MOYE','MATER'),
- PRESENT_PRESENT('DOMMAGE','MATER'),),
- HISTOIRE = FACT(statut='o',
- regles=(UN_PARMI('SIGM','EPSI'),),
- SIGM = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- EPSI = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),),
- COMPTAGE = SIMP(statut='o',typ='TXM',into=("RAINFLOW","RCCM","NATUREL")),
- DELTA_OSCI = SIMP(statut='f',typ='R',defaut= 0.0E+0),
- COEF_MULT = FACT(statut='f',
- KT = SIMP(statut='o',typ='R'),),
- CORR_KE = SIMP(statut='f',typ='TXM',into=("RCCM",)),
- DOMMAGE = SIMP(statut='f',typ='TXM',into=("WOHLER","MANSON_COFFIN",
- "TAHERI_MANSON","TAHERI_MIXTE")),
- MATER = SIMP(statut='f',typ=mater_sdaster),
- CORR_SIGM_MOYE = SIMP(statut='f',typ='TXM',into=("GOODMAN","GERBER")),
- TAHERI_NAPPE = SIMP(statut='f',typ=(nappe_sdaster,formule)),
- TAHERI_FONC = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- CUMUL = SIMP(statut='f',typ='TXM',into=("LINEAIRE",)),
- ),
-
- b_periodique = BLOC( condition = "CHARGEMENT=='PERIODIQUE'",
- HISTOIRE = FACT(statut='o',
- SIGM_XX = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- SIGM_YY = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- SIGM_ZZ = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- SIGM_XY = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- SIGM_XZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- SIGM_YZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),),
- CRITERE = SIMP(statut='o',typ='TXM',into=("CROSSLAND","PAPADOPOULOS")),
- DOMMAGE = SIMP(statut='f',typ='TXM',into=("WOHLER",)),
- MATER = SIMP(statut='o',typ=mater_sdaster),
- COEF_CORR = SIMP(statut='f',typ='R'),
- ),
-
- b_quelconque = BLOC( condition = "CHARGEMENT=='QUELCONQUE'",
- HISTOIRE = FACT(statut='o',
- SIGM_XX = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- SIGM_YY = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- SIGM_ZZ = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- SIGM_XY = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- SIGM_XZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- SIGM_YZ = SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- EPSP = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),
- TEMP = SIMP(statut='o',typ=(fonction_sdaster,nappe_sdaster,formule)),),
- DOMMAGE = SIMP(statut='f',typ='TXM',into=("LEMAITRE",),),
- MATER = SIMP(statut='o',typ=mater_sdaster),
- CUMUL = SIMP(statut='f',typ='TXM',into=("LINEAIRE",)),
- ),
-
- INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
- TITRE =SIMP(statut='f',typ='TXM',max='**'),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE GALENNE E.GALENNE
-
-POST_K1_K2_K3=OPER(nom="POST_K1_K2_K3",op=188,sd_prod=tabl_post_k,
- fr="Calcul des facteurs d'intensité de contraintes en 2D et en 3D par extrapolation des sauts de déplacements"
- +" sur les lèvres de la fissure",
- reentrant='n',
- UIinfo={"groupes":("Post traitements",)},
-
- regles=(UN_PARMI('RESULTAT','TABL_DEPL_SUP'),
- PRESENT_PRESENT('RESULTAT','FOND_FISS'),),
-
- MODELISATION =SIMP(statut='o',typ='TXM',
- into=("3D","AXIS","D_PLAN","C_PLAN"),
- fr="Modélisation cohérente avec celle utilisée pour le calcul des déplacements"),
- FOND_FISS =SIMP(statut='f',typ=fond_fiss),
- b_fond_fiss =BLOC (condition="(FOND_FISS!= None)",
- MAILLAGE = SIMP(statut='o',typ=maillage_sdaster),
- NOEUD = SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- GROUP_NO = SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- SANS_NOEUD = SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- SANS_GROUP_NO = SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- TOUT = SIMP(statut='f',typ='TXM',into=("OUI",) )
- ),
- MATER =SIMP(statut='o',typ=mater_sdaster,
- fr="Matériau homogène et isotrope cohérent avec celui utilisé pour le calcul des déplacements"),
- RESULTAT =SIMP(statut='f',typ=(evol_elas,evol_noli),
- fr="Table déplacement des noeuds de la lèvre supérieure et inférieure"),
- TABL_DEPL_SUP =SIMP(statut='f',typ=tabl_post_rele,
- fr="Table issue de post_releve_t sur les noeuds de la lèvre supérieure"),
- TABL_DEPL_INF =SIMP(statut='f',typ=tabl_post_rele,
- fr="Table issue de post_releve_t sur les noeuds de la lèvre inférieure"),
- ABSC_CURV_MAXI=SIMP(statut='f',typ='R',
- fr="distance maximum à partir du fond de fissure à utiliser pour le calcul"),
- PREC_VIS_A_VIS= SIMP(statut='f',typ='R',defaut=0.1),
- TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
- LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster),
- INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
- LIST_INST =SIMP(statut='f',typ=listr8_sdaster),
- b_acce_reel =BLOC(condition="(INST != None)or(LIST_INST != None)",
- PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-6),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
- ),
- SYME_CHAR =SIMP(statut='f',typ='TXM',defaut="SANS",into=("SYME","SANS") ),
- INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
- VECT_K1 =SIMP(statut='o',typ='R',max=3,
- fr="Vecteur normal au plan de fissure, orienté de la lèvre inférieure vers la lèvre supérieure"),
- TITRE =SIMP(statut='f',typ='TXM',max='**'),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-#
-#
-# ======================================================================
-#
-POST_K_BETA=OPER(nom="POST_K_BETA",op=198,sd_prod=tabl_post_beta,
- fr="Calcul des facteurs d'intensité de contraintes par la méthode K_BETA",
- reentrant='n',
- UIinfo={"groupes":("Post traitements",)},
- MAILLAGE = SIMP(statut='o',typ=maillage_sdaster),
- MATER_REV = SIMP(statut='o',typ=mater_sdaster),
- EPAIS_REV = SIMP(statut='o',typ='R'),
- FISSURE = FACT(statut='o',
- DECALAGE = SIMP(statut='f',typ='R',defaut=-2.e-04),
- PROFONDEUR = SIMP(statut='o',typ='R'),
- LONGUEUR = SIMP(statut='o',typ='R'),
- ORIENTATION = SIMP(statut='o',typ='TXM',
- into=("CIRC","LONGI"),),
- ),
- K1D = FACT(statut='o',max='**',
- TABL_MECA_REV = SIMP(statut='o',typ=(tabl_post_rele)),
- TABL_MECA_MDB = SIMP(statut='o',typ=(tabl_post_rele)),
- TABL_THER = SIMP(statut='o',typ=(tabl_post_rele)),
- INTITULE = SIMP(statut='o',typ='TXM' ),
- ),
- TITRE = SIMP(statut='f',typ='TXM',max='**'),
-);
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2005 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-POST_MAIL_XFEM=OPER(nom="POST_MAIL_XFEM",op= 187,sd_prod=maillage_sdaster,
- reentrant='n',UIinfo={"groupes":("Maillage",)},
- fr="Crée un maillage se conformant à la fissure pour le post-traitement des éléments XFEM",
- MODELE = SIMP(statut='o',typ=modele_sdaster),
- TITRE = SIMP(statut='f',typ='TXM',max='**'),
-);
-#& MODIF COMMANDE DATE 21/03/2005 AUTEUR CIBHHLV L.VIVAN
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTIC
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE JMBHH01 J.M.PROIX
-POST_RCCM=OPER(nom="POST_RCCM",op= 165,sd_prod=tabl_post_rccm,
- fr="Vérification des critères de niveau 0 et certains critères de niveau A du RCC-M-B3200 (Edition 1991)",
- reentrant='n',
- UIinfo={"groupes":("Post traitements",)},
- TYPE_RESU =SIMP(statut='f',typ='TXM',defaut="VALE_MAX",into=("VALE_MAX","DETAILS") ),
- INFO =SIMP(statut='f',typ='I',into=(1,2) ),
- TITRE =SIMP(statut='f',typ='TXM',max='**'),
- TYPE_RESU_MECA =SIMP(statut='o',typ='TXM',into=("EVOLUTION","UNITAIRE","TUYAUTERIE") ),
-
-# ======================================================================
- b_evolution =BLOC(condition="(TYPE_RESU_MECA == 'EVOLUTION')",
-
- OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',
- into=("PM_PB","SN","FATIGUE_ZH210") ),
- MATER =SIMP(statut='o',typ=mater_sdaster ),
-
- TRANSITOIRE =FACT(statut='o',max='**',fr="transitoire à dépouiller",
- regles=(EXCLUS('TOUT_ORDRE','INST','LIST_INST'),),
- NB_OCCUR =SIMP(statut='f',typ='I',defaut= 1,
- fr="nombre d occurences réelles de ce transitoire" ),
- TABL_RESU_MECA =SIMP(statut='o',typ=table_sdaster,
- fr="relevé des contraintes sur le chemin"),
- TABL_SIGM_THER =SIMP(statut='f',typ=table_sdaster,
- fr="résultat sous chargement thermique seul" ),
- TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
- LIST_INST =SIMP(statut='f',typ=listr8_sdaster ),
- b_inst =BLOC(condition = "(INST != None) or (LIST_INST != None)" ,
- PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-6 ),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("ABSOLU","RELATIF") ),
- ),
- ),
- ),
-
-# ======================================================================
- b_unitaire =BLOC(condition="(TYPE_RESU_MECA == 'UNITAIRE')",
-
- OPTION =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',
- into=("PM_PB","SN","FATIGUE") ),
- MATER =SIMP(statut='o',typ=mater_sdaster ),
- TYPE_KE =SIMP(statut='f',typ='TXM',defaut="KE_MECA",into=("KE_MECA","KE_MIXTE"),
- fr="Ke meca seul ou partition mecanique + thermique" ),
- CHAR_MECA =FACT(statut='o',max='**',fr="Chargements mécaniques",
- NUME_CHAR =SIMP(statut='o',typ='I',fr="numéro du chargement" ),
- NOM_CHAR =SIMP(statut='f',typ='TXM',fr="nom du chargement" ),
- TYPE_CHAR =SIMP(statut='f',typ='TXM',fr="nature du chargement",into=( "SEISME","AUTRE"),defaut="AUTRE",),
- FX =SIMP(statut='f',typ='R',fr="effort suivant x", ),
- FY =SIMP(statut='f',typ='R',fr="effort suivant y", ),
- FZ =SIMP(statut='f',typ='R',fr="effort suivant z", ),
- MX =SIMP(statut='o',typ='R',fr="moment suivant x", ),
- MY =SIMP(statut='o',typ='R',fr="moment suivant y", ),
- MZ =SIMP(statut='o',typ='R',fr="moment suivant z", ),
- ),
- RESU_MECA_UNIT =FACT(statut='o',fr="resultats mécaniques unitaires",
- TABL_FX =SIMP(statut='f',typ=table_sdaster,
- fr="table relevé des contraintes pour chargement unitaire FX"),
- TABL_FY =SIMP(statut='f',typ=table_sdaster,
- fr="table relevé des contraintes pour chargement unitaire FY"),
- TABL_FZ =SIMP(statut='f',typ=table_sdaster,
- fr="table relevé des contraintes pour chargement unitaire FZ"),
- TABL_MX =SIMP(statut='o',typ=table_sdaster,
- fr="table relevé des contraintes pour chargement unitaire MX"),
- TABL_MY =SIMP(statut='o',typ=table_sdaster,
- fr="table relevé des contraintes pour chargement unitaire MY"),
- TABL_MZ =SIMP(statut='o',typ=table_sdaster,
- fr="table relevé des contraintes pour chargement unitaire MZ"),
- TABL_PRES =SIMP(statut='o',typ=table_sdaster,
- fr="table relevé des contraintes pour chargement unitaire de pression"),
- ),
- RESU_THER =FACT(statut='f',max='**',fr="resultats thermiques",
- NUME_RESU_THER =SIMP(statut='o',typ='I',fr="numéro de la table de résultat thermique" ),
- TABL_RESU_THER =SIMP(statut='o',typ=table_sdaster,
- fr="table relevé des contraintes sous chargement thermique seul" ),
- ),
- SITUATION =FACT(statut='o',max='**',fr="Situation",ang="situation_ang",
- NB_OCCUR =SIMP(statut='o',typ='I',fr="nombre d'occurences de la situation" ),
- NB_CYCL_SEISME =SIMP(statut='f',typ='I',fr="nombre de cycles associé au séisme" ),
- NUME_SITU =SIMP(statut='o',typ='I',fr="numéro de la situation" ),
- NOM_SITU =SIMP(statut='f',typ='TXM',fr="nom de la situation" ),
- COMBINABLE =SIMP(statut='f',typ='TXM',defaut= "OUI",into=("OUI","NON"),fr="non = sous-cycle" ),
- NUME_GROUPE =SIMP(statut='o',typ='I',fr="numéro du groupe de la situation" ),
- NUME_PASSAGE =SIMP(statut='f',typ='I',max=2,fr="numéro des deux groupes en relation" ),
- NUME_RESU_THER =SIMP(statut='f',typ='I',max='**',fr="numeros de transitoires thermiques" ),
- CHAR_ETAT_A =SIMP(statut='o',typ='I',max='**',fr="numeros de chargements etat A" ),
- CHAR_ETAT_B =SIMP(statut='o',typ='I',max='**',fr="numeros de chargements etat B" ),
- PRES_A =SIMP(statut='o',typ='R',fr="pression etat A"),
- PRES_B =SIMP(statut='o',typ='R',fr="pression etat B"),
- TEMP_REF_A =SIMP(statut='f',typ='R',fr="temperature référence etat A"),
- TEMP_REF_B =SIMP(statut='f',typ='R',fr="temperature référence etat B"),
- ),
- ),
-# ======================================================================
- b_tuyauterie =BLOC(condition="(TYPE_RESU_MECA == 'TUYAUTERIE')",
-
- OPTION =SIMP(statut='o',typ='TXM',into=("FATIGUE",) ),
- CHAM_MATER =SIMP(statut='o',typ=cham_mater ),
- TYPE_KE =SIMP(statut='f',typ='TXM',defaut="KE_MECA",into=("KE_MECA","KE_MIXTE"),
- fr="Ke meca seul ou partition mecanique + thermique" ),
- MODELE =SIMP(statut='o',typ=modele_sdaster),
- CARA_ELEM =SIMP(statut='o',typ=cara_elem),
- ZONE_ANALYSE =FACT(statut='o',fr="liste des mailles ou des noeuds analysés",
- regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- ),
- RESU_MECA =FACT(statut='o',max='**',fr="Chargements mécaniques",
- regles=(UN_PARMI('CHAM_GD','RESULTAT'),),
- NUME_CHAR =SIMP(statut='o',typ='I',fr="numéro du chargement" ),
- NOM_CHAR =SIMP(statut='f',typ='TXM',fr="nom du chargement" ),
- TYPE_CHAR =SIMP(statut='f',typ='TXM',fr="nature du chargement",into=( "SEISME","AUTRE"),defaut="AUTRE",),
- CHAM_GD =SIMP(statut='f',typ=cham_gd_sdaster),
- RESULTAT =SIMP(statut='f',typ=resultat_sdaster),
- b_extrac =BLOC(condition="RESULTAT != None",
- fr="extraction d un champ de grandeur",
- regles=(UN_PARMI('TOUT_ORDRE','NUME_ORDRE','INST','NOEUD_CMP'),),
- NOM_CHAM =SIMP(statut='o',typ='TXM',into=("EFGE_ELNO_DEPL","SIEF_ELNO_ELGA"),),
- TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- NUME_ORDRE =SIMP(statut='f',typ='I',),
- INST =SIMP(statut='f',typ='R',),
- NOEUD_CMP =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'),
- b_acce_reel =BLOC(condition="(INST != None)",
- PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU"), ),
- ),
- ),
- ),
- INDI_SIGM =FACT(statut='o',max='**',fr="indices de contraintes",
- regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),),
- C1 =SIMP(statut='f',typ='R',defaut=1.0,fr="indice de contraintes C1 du RCCM"),
- K1 =SIMP(statut='f',typ='R',defaut=1.0,fr="indice de contraintes K1 du RCCM"),
- C2 =SIMP(statut='f',typ='R',defaut=1.0,fr="indice de contraintes C2 du RCCM"),
- K2 =SIMP(statut='f',typ='R',defaut=1.0,fr="indice de contraintes K2 du RCCM"),
- C3 =SIMP(statut='f',typ='R',defaut=0.5,fr="indice de contraintes C3 du RCCM"),
- K3 =SIMP(statut='f',typ='R',defaut=1.0,fr="indice de contraintes K3 du RCCM"),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",),),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**',
- fr="groupe(s) de mailles ou sont affectés les indices de contraintes"),
- MAILLE =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**',
- fr="liste des mailles ou sont affectés les indices de contraintes"),
- b_grma =BLOC(condition="(GROUP_MA != None)or(MAILLE != None)",
- GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- ),
- TYPE_ELEM_STANDARD =SIMP(statut='f',typ='TXM',into=("DRO","COU","TRN","TEE"),
- fr="type d'élément de tuyauterie ou sont affectés les indices de contraintes"),
- ),
- RESU_THER =FACT(statut='f',max='**',fr="resultats thermiques",
- regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),AU_MOINS_UN('TOUT','GROUP_MA','MAILLE'),),
- NUME_RESU_THER =SIMP(statut='o',typ='I',fr="numéro de la table de résultat thermique" ),
- TABL_RESU_THER =SIMP(statut='o',typ=table_sdaster,
- fr="table relevé des températures sur la section"),
- TABL_MOYE_THER =SIMP(statut='o',typ=table_sdaster,
- fr="table relevé des moyennes sur la section"),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- b_grma =BLOC(condition="(GROUP_MA != None)or(MAILLE != None)",
- GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- ),
- ),
- SITUATION =FACT(statut='o',max='**',fr="Situation",ang="situation_ang",
- NB_OCCUR =SIMP(statut='o',typ='I',fr="nombre d'occurences de la situation" ),
- NB_CYCL_SEISME =SIMP(statut='f',typ='I',fr="nombre de cycles associé au séisme" ),
- NUME_SITU =SIMP(statut='o',typ='I',fr="numéro de la situation" ),
- NOM_SITU =SIMP(statut='f',typ='TXM',fr="nom de la situation" ),
- COMBINABLE =SIMP(statut='f',typ='TXM',defaut= "OUI",into=("OUI","NON"),fr="non = sous-cycle" ),
- NUME_GROUPE =SIMP(statut='o',typ='I',fr="numéro du groupe de la situation" ),
- NUME_PASSAGE =SIMP(statut='f',typ='I',max=2,fr="numéro des deux groupes en relation" ),
- NUME_RESU_THER =SIMP(statut='f',typ='I',max='**',fr="numeros de transitoires thermiques" ),
- CHAR_ETAT_A =SIMP(statut='o',typ='I',max='**',fr="numeros de chargements etat A" ),
- CHAR_ETAT_B =SIMP(statut='o',typ='I',max='**',fr="numeros de chargements etat B" ),
- PRES_A =SIMP(statut='o',typ='R',fr="pression etat A"),
- PRES_B =SIMP(statut='o',typ='R',fr="pression etat B"),
- TEMP_REF_A =SIMP(statut='f',typ='R',fr="temperature référence etat A"),
- TEMP_REF_B =SIMP(statut='f',typ='R',fr="temperature référence etat B"),
- ),
- ),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# ======================================================================
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE G8BHHXD X.DESROCHES
-POST_RELEVE_T=OPER(nom="POST_RELEVE_T",op=51,sd_prod=tabl_post_rele,reentrant='f',
- fr="Extraire des valeurs de composantes de champs de grandeurs pour y effectuer des calculs (moyenne,invariants,..)"
- +" ou pour les exprimer dans d'autres repères",
- UIinfo={"groupes":("Post traitements",)},
- ACTION =FACT(statut='o',max='**',
- regles=(AU_MOINS_UN('CHEMIN','GROUP_NO','NOEUD'),
- EXCLUS('CHEMIN','GROUP_NO'),
- EXCLUS('CHEMIN','NOEUD'),
- PRESENT_ABSENT('CHEMIN','GROUP_MA','MAILLE'),
- UN_PARMI('RESULTAT','CHAM_GD'),
- UN_PARMI('TOUT_CMP','NOM_CMP','INVARIANT','ELEM_PRINCIPAUX','RESULTANTE'),
- PRESENT_PRESENT('TRAC_DIR','DIRECTION'),
- ENSEMBLE('MOMENT','POINT'),
- PRESENT_PRESENT('MOMENT','RESULTANTE'),
- PRESENT_ABSENT('TOUT_CMP','TRAC_DIR','TRAC_NOR'),
- EXCLUS('TRAC_DIR','TRAC_NOR'),
- PRESENT_PRESENT('ORIGINE','AXE_Z'),),
- INTITULE =SIMP(statut='o',typ='TXM'),
- CHEMIN =SIMP(statut='f',typ=(courbe_sdaster,surface_sdaster) ),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- FORMAT_C =SIMP(statut='f',typ='TXM',defaut="MODULE",into=("MODULE","REEL","IMAG")),
- CHAM_GD =SIMP(statut='f',typ=(cham_no_depl_r,cham_no_temp_r,cham_no_pres_r,cham_no_var2_r,
- cham_elem_sief_r,cham_elem_epsi_r,cham_elem_flux_r,cham_elem_crit_r,
- cham_elem_ener_r,cham_elem_dbel_r,cham_elem_pres_r,cham_elem_erreur,
- cham_elem_vari_r,cham_no_depl_c,cham_no_temp_c,cham_no_pres_c,
- cham_elem_sief_c,cham_elem_epsi_c,cham_no_facy_r)),
- RESULTAT =SIMP(statut='f',typ=(evol_elas,evol_ther,evol_noli,dyna_trans,
- mode_meca,mode_flamb,mode_acou,base_modale,mode_stat,
- mult_elas,fourier_elas,dyna_harmo,acou_harmo)),
- b_sensibilite =BLOC(condition="RESULTAT != None",
- fr="Définition des paramètres de sensibilité",
- ang="Definition of sensitivity parameters",
- SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**',
- fr="Liste des paramètres de sensibilité.",
- ang="List of sensitivity parameters"),),
-
- b_extrac =BLOC(condition = "RESULTAT != None",fr="extraction des résultats",
- regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','LIST_ORDRE','NUME_MODE','LIST_MODE',
- 'INST','LIST_INST','FREQ','LIST_FREQ','NOEUD_CMP','NOM_CAS'), ),
- NOM_CHAM =SIMP(statut='o',typ='TXM' ),
- TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
- LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster),
- NUME_MODE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
- LIST_MODE =SIMP(statut='f',typ=listis_sdaster),
- NOEUD_CMP =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'),
- NOM_CAS =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'),
- FREQ =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
- LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster),
- INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
- LIST_INST =SIMP(statut='f',typ=listr8_sdaster),
- PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-6),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")),
- ),
- TOUT_CMP =SIMP(statut='f',typ='TXM',into=("OUI",)),
- NOM_CMP =SIMP(statut='f',typ='TXM',max='**'),
- INVARIANT =SIMP(statut='f',typ='TXM',into=("OUI",)),
- ELEM_PRINCIPAUX =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- RESULTANTE =SIMP(statut='f',typ='TXM',max='**'),
- MOMENT =SIMP(statut='f',typ='TXM',max='**'),
- POINT =SIMP(statut='f',typ='R',max='**'),
-
- REPERE =SIMP(statut='f',typ='TXM',defaut="GLOBAL",
- into=("GLOBAL","LOCAL","POLAIRE","UTILISATEUR","CYLINDRIQUE"),),
- ANGL_NAUT =SIMP(statut='f',typ='R',min=3,max=3),
- ORIGINE =SIMP(statut='f',typ='R',min=3,max=3),
- AXE_Z =SIMP(statut='f',typ='R',min=3,max=3),
-
- TRAC_NOR =SIMP(statut='f',typ='TXM',into=("OUI",)),
- TRAC_DIR =SIMP(statut='f',typ='TXM',into=("OUI",)),
- DIRECTION =SIMP(statut='f',typ='R',max='**'),
-
- VECT_Y =SIMP(statut='f',typ='R',max='**'),
- MOYE_NOEUD =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")),
- OPERATION =SIMP(statut='o',typ='TXM',into=("EXTRACTION","MOYENNE"),validators=NoRepeat(),max=2),
- ),
- INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
- TITRE =SIMP(statut='f',typ='TXM',max='**'),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-POST_SIMPLIFIE=OPER(nom="POST_SIMPLIFIE",op=185,sd_prod=tabl_post_simpli,
- fr="Permet d'utiliser des méthodes simplifiées autres que celles du RCCM",
- UIinfo={"groupes":("Outils métier",)},reentrant='n',
- MATER =SIMP(statut='o',typ=(mater_sdaster) ),
- DEF_EQUI =FACT(statut='f',
- METHODE =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',defaut="UTO_2_3",
- into=("UTO_2_3",) ),
- EPAIS =SIMP(statut='o',typ='R'),
- LONG_FISS =SIMP(statut='o',typ='R'),
- LONG_LIGA_INT =SIMP(statut='o',typ='R'),
- DEXT =SIMP(statut='o',typ='R'),
- TEMP_ANALYSE =SIMP(statut='f',typ='R'),
- ),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-POST_USURE=OPER(nom="POST_USURE",op=153,sd_prod=tabl_post_usur,reentrant='f',
- UIinfo={"groupes":("Post traitements",)},
- fr="Calcul des volumes d'usure et des profondeurs d'usure d'après la puissance d'usure",
- regles=(UN_PARMI('TUBE_NEUF','RESU_GENE','PUIS_USURE'),
- PRESENT_PRESENT('RESU_GENE','NOEUD','LOI_USURE'),
- PRESENT_PRESENT('PUIS_USURE','LOI_USURE'),),
- TUBE_NEUF =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- ETAT_INIT =FACT(statut='f',
- TABL_USURE =SIMP(statut='f',typ=tabl_post_usur),
- INST_INIT =SIMP(statut='f',typ='R'),
- ),
- RESU_GENE =SIMP(statut='f',typ=tran_gene),
- NOEUD =SIMP(statut='f',typ=no,),
- INST_INIT =SIMP(statut='f',typ='R',defaut=-1.0E+0),
- INST_FIN =SIMP(statut='f',typ='R'),
- NB_BLOC =SIMP(statut='f',typ='I',defaut= 1 ),
- PUIS_USURE =SIMP(statut='f',typ='R'),
- LOI_USURE =SIMP(statut='f',typ='TXM',into=("ARCHARD","KWU_EPRI","EDF_MZ")),
- b_archard =BLOC(condition = "LOI_USURE == 'ARCHARD'",
- regles=(UN_PARMI('MOBILE','MATER_USURE','SECTEUR'),
- EXCLUS('MATER_USURE','OBSTACLE'),
- EXCLUS('MOBILE','USURE_OBST'),),
- MOBILE =FACT(statut='f',
- COEF_USURE =SIMP(statut='o',typ='R'),
- ),
- OBSTACLE =FACT(statut='f',
- COEF_USURE =SIMP(statut='o',typ='R'),
- ),
- SECTEUR =FACT(statut='f',max='**',
- CONTACT =SIMP(statut='f',typ='TXM',into=("TUBE_BAV","TUBE_ALESAGE","TUBE_4_ENCO",
- "GRAPPE_ALESAGE","TUBE_3_ENCO","TUBE_TUBE",
- "GRAPPE_1_ENCO","GRAPPE_2_ENCO")),
- COEF_USUR_MOBILE=SIMP(statut='f',typ='R'),
- COEF_USUR_OBST =SIMP(statut='f',typ='R'),
- ANGL_INIT =SIMP(statut='f',typ='R'),
- ANGL_FIN =SIMP(statut='f',typ='R'),
- ),
- MATER_USURE =SIMP(statut='f',typ='TXM'),
- USURE_OBST =SIMP(statut='f',typ='TXM',into=("OUI",)),
- ),
- b_kwu_epri =BLOC(condition = "LOI_USURE == 'KWU_EPRI'",
- regles=(UN_PARMI('MOBILE','MATER_USURE'),
- EXCLUS('MATER_USURE','OBSTACLE'),
- EXCLUS('MOBILE','USURE_OBST'),),
- MOBILE =FACT(statut='f',
- COEF_FNOR =SIMP(statut='f',typ='R'),
- COEF_VTAN =SIMP(statut='f',typ='R'),
- COEF_USURE =SIMP(statut='f',typ='R'),
- COEF_K =SIMP(statut='f',typ='R',defaut=5.0E+0),
- COEF_C =SIMP(statut='f',typ='R',defaut=10.0E+0),
- ),
- OBSTACLE =FACT(statut='f',
- COEF_FNOR =SIMP(statut='f',typ='R' ),
- COEF_VTAN =SIMP(statut='f',typ='R' ),
- COEF_USURE =SIMP(statut='o',typ='R'),
- COEF_K =SIMP(statut='f',typ='R',defaut=5.0E+0),
- COEF_C =SIMP(statut='f',typ='R',defaut=10.0E+0),
- ),
- MATER_USURE =SIMP(statut='f',typ='TXM'),
- USURE_OBST =SIMP(statut='f',typ='TXM',into=("OUI",)),
- FNOR_MAXI =SIMP(statut='f',typ='R' ),
- VTAN_MAXI =SIMP(statut='f',typ='R' ),
- ),
- b_edf_mz =BLOC(condition = "LOI_USURE == 'EDF_MZ'",
- regles=(UN_PARMI('MOBILE','MATER_USURE'),
- EXCLUS('MATER_USURE','OBSTACLE'),
- EXCLUS('MOBILE','USURE_OBST'),),
- MOBILE =FACT(statut='f',
- COEF_USURE =SIMP(statut='f',typ='R',defaut=1.0E-13),
- COEF_B =SIMP(statut='f',typ='R',defaut=1.2E+0),
- COEF_N =SIMP(statut='f',typ='R',defaut=2.44E-8),
- COEF_S =SIMP(statut='f',typ='R',defaut=1.14E-16),
- ),
- OBSTACLE =FACT(statut='f',
- COEF_USURE =SIMP(statut='o',typ='R',defaut=1.0E-13),
- COEF_B =SIMP(statut='f',typ='R',defaut=1.2E+0),
- COEF_N =SIMP(statut='f',typ='R',defaut=2.44E-8),
- COEF_S =SIMP(statut='f',typ='R',defaut=1.14E-16),
- ),
- MATER_USURE =SIMP(statut='f',typ='TXM'),
- USURE_OBST =SIMP(statut='f',typ='TXM',into=("OUI",)),
- ),
- b_tube_neuf =BLOC(condition = "TUBE_NEUF == 'OUI'",
- TABL_USURE =SIMP(statut='o',typ=tabl_post_usur),
- INST =SIMP(statut='f',typ='R'),
- ),
- CONTACT =SIMP(statut='f',typ='TXM',into=("TUBE_BAV","TUBE_ALESAGE","TUBE_4_ENCO",
- "GRAPPE_ALESAGE","TUBE_3_ENCO","TUBE_TUBE",
- "GRAPPE_1_ENCO","GRAPPE_2_ENCO")),
- RAYON_MOBILE =SIMP(statut='f',typ='R'),
- RAYON_OBST =SIMP(statut='f',typ='R'),
- LARGEUR_OBST =SIMP(statut='f',typ='R'),
- ANGL_INCLI =SIMP(statut='f',typ='R'),
- ANGL_ISTHME =SIMP(statut='f',typ='R'),
- ANGL_IMPACT =SIMP(statut='f',typ='R'),
- INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
- LIST_INST =SIMP(statut='f',typ=listr8_sdaster),
- COEF_INST =SIMP(statut='f',typ='R',defaut=1.0E+0),
- INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
- TITRE =SIMP(statut='f',typ='TXM',max='**' ),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-POST_ZAC=OPER(nom="POST_ZAC",op= 175,sd_prod=mult_elas,reentrant='n',
- UIinfo={"groupes":("Post traitements",)},
- fr="Déterminer l'état adapté ou accommodé par la méthode de Zarka-Casier d'une structure sous"
- +" chargement cyclique élastique affine ou non",
- MODELE =SIMP(statut='o',typ=modele_sdaster),
- CHAM_MATER =SIMP(statut='o',typ=cham_mater),
- EXCIT =FACT(statut='o',max='**',
- CHARGE =SIMP(statut='o',typ=char_meca),
- FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- TYPE_CHARGE =SIMP(statut='f',typ='TXM',defaut="FIXE_CSTE",into=("FIXE_CSTE",)),
- ),
- EVOL_ELAS =SIMP(statut='o',typ=evol_elas),
- b_evol_elas =BLOC(condition="EVOL_ELAS != None",
- regles=(UN_PARMI('NUME_ORDRE','LIST_INST','INST'),),
- NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
- LIST_INST =SIMP(statut='f',typ=listr8_sdaster),
- INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
- ),
- TEMP_ZAC =SIMP(statut='f',typ='R',defaut=0.0E+0),
- EVOL_NOLI =SIMP(statut='f',typ=evol_noli),
- b_evol_noli =BLOC(condition="EVOL_NOLI != None",
- INST_MAX =SIMP(statut='o',typ='R'),
- ),
- PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")),
-
-) ;
-#& MODIF COMMANDE DATE 17/10/2005 AUTEUR MCOURTOI M.COURTOIS
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-POURSUITE=MACRO(nom="POURSUITE",op=ops.build_poursuite,repetable='n',
- fr="Poursuite d'une étude à partir de la sauvegarde au format JEVEUX ou HDF de sa base globale",
- sd_prod = ops.POURSUITE,
- UIinfo={"groupes":("Gestion du travail",)},
- op_init = ops.POURSUITE_context,fichier_ini = 1,
- FORMAT_HDF =SIMP(fr="sauvegarde de la base GLOBALE au format HDF",statut='f',
- typ='TXM',defaut="NON",into=("OUI","NON",) ),
- PAR_LOT =SIMP(fr="mode de traitement des commandes",statut='f',typ='TXM',
- into=("OUI","NON"),defaut="OUI"),
- IMPR_MACRO =SIMP(fr="affichage des sous-commandes produites par les macros dans le fichier mess",
- statut='f',typ='TXM',into=("OUI","NON"),defaut="NON"),
- BASE =FACT(fr="définition des parmètres associés aux bases JEVEUX",
- statut='f',min=1,max=3,
- FICHIER =SIMP(fr="nom de la base",statut='o',typ='TXM'),
- TITRE =SIMP(statut='f',typ='TXM'),
- CAS =SIMP(statut='f',typ='TXM'),
- NMAX_ENRE =SIMP(fr="nombre maximum d enregistrements",statut='f',typ='I'),
- LONG_ENRE =SIMP(fr="longueur des enregistrements",statut='f',typ='I'),
- LONG_REPE =SIMP(fr="longueur du répertoire",statut='f',typ='I'),
- ),
- IMPRESSION =FACT(statut='f',min=1,max=3,
- FICHIER =SIMP(statut='o',typ='TXM'),
- UNITE =SIMP(statut='o',typ='I'),
- ),
- CATALOGUE =FACT(statut='f',min=1,max=10,
- FICHIER =SIMP(statut='o',typ='TXM'),
- TITRE =SIMP(statut='f',typ='TXM'),
- UNITE =SIMP(statut='f',typ='I'),
- ),
- ERREUR =FACT(fr="comportement en cas d'erreur",statut='f',min=1,max=1,
- ERREUR_F =SIMP(statut='f',typ='TXM',into=('ABORT','EXCEPTION'),defaut='ABORT'),
- ),
- DEBUG =FACT(fr="option de déboggage reservée aux développeurs",
- statut='f',min=1,max=1,
- JXVERI =SIMP(fr="vérifie l intégrité de la segmentation mémoire",
- statut='f',typ='TXM',into=('OUI','NON'),defaut='NON'),
- JEVEUX =SIMP(fr="force les déchargement sur disque",
- statut='f',typ='TXM',into=('OUI','NON'),defaut='NON'),
- ENVIMA =SIMP(fr="imprime les valeurs définies dans ENVIMA",
- statut='f',typ='TXM',into=('TES',)),
- ),
- MEMOIRE =FACT(fr="mode de gestion mémoire utilisé",statut='f',min=1,max=1,
- GESTION =SIMP(statut='f',typ='TXM',into=('COMPACTE','RAPIDE'),defaut='RAPIDE'),
- TYPE_ALLOCATION =SIMP(statut='f',typ='I',into=(1,2,3,4),defaut=1),
- TAILLE =SIMP(statut='f',typ='I'),
- TAILLE_BLOC =SIMP(statut='f',typ='R',defaut=800.),
- PARTITION =SIMP(statut='f',typ='R' ),
- ),
- RESERVE_CPU =FACT(fr="reserve de temps pour terminer une execution",statut='f',max=1,
- regles=(EXCLUS('VALE','POURCENTAGE'),),
- VALE =SIMP(statut='f',typ='I',val_min=0),
- POURCENTAGE =SIMP(statut='f',typ='R',val_min=0.,val_max=1.0),
-# valeur en pourcentage du temps maximum bornée à 180 secondes
- BORNE =SIMP(statut='f',typ='I',val_min=0,defaut=180)
- ),
- CODE =FACT("définition d un nom pour l'esemble d'une étude",
- statut='f',min=1,max=1,
- NOM =SIMP(statut='o',typ='TXM'),
- UNITE =SIMP(statut='f',typ='I',defaut=15),
- ),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-PRE_GIBI=PROC(nom="PRE_GIBI",op=49,
- UIinfo={"groupes":("Gestion du travail",)},
- fr="Conversion d'un fichier de maillage GIBI au format Aster",
- UNITE_GIBI =SIMP(statut='f',typ='I',defaut=19),
- UNITE_MAILLAGE =SIMP(statut='f',typ='I',defaut=20),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-
-PRE_GMSH=PROC(nom="PRE_GMSH",op=47,
- UIinfo={"groupes":("Gestion du travail",)},
- fr="Conversion d'un fichier de maillage GMSH au format Aster",
- UNITE_GMSH =SIMP(statut='f',typ='I',defaut=19),
- UNITE_MAILLAGE =SIMP(statut='f',typ='I',defaut=20),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-PRE_IDEAS=PROC(nom="PRE_IDEAS",op=47,
- UIinfo={"groupes":("Gestion du travail",)},
- fr="Conversion d'un fichier universel IDEAS-SUPERTAB au format Aster",
- UNITE_IDEAS =SIMP(statut='f',typ='I',defaut=19),
- UNITE_MAILLAGE =SIMP(statut='f',typ='I',defaut=20),
- CREA_GROUP_COUL =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-def prod_matr_cham_prod(MATR_ASSE,**args):
- if AsType(MATR_ASSE) == matr_asse_depl_r : return cham_no_depl_r
- if AsType(MATR_ASSE) == matr_asse_depl_c : return cham_no_depl_c
- if AsType(MATR_ASSE) == matr_asse_temp_r : return cham_no_temp_r
- if AsType(MATR_ASSE) == matr_asse_pres_c : return cham_no_pres_c
- raise AsException("type de concept resultat non prevu")
-
-PROD_MATR_CHAM=OPER(nom="PROD_MATR_CHAM",op= 156,sd_prod=prod_matr_cham_prod,
- fr="Effectuer le produit d'une matrice par un vecteur",
- reentrant='n',
- UIinfo={"groupes":("Résultats et champs",)},
- MATR_ASSE =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_depl_c,matr_asse_temp_r,matr_asse_pres_c ) ),
- CHAM_NO =SIMP(statut='o',typ=(cham_no_depl_r,cham_no_depl_c,cham_no_temp_r,cham_no_pres_c ) ),
- TITRE =SIMP(statut='f',typ='TXM',max='**'),
-) ;
-#& MODIF COMMANDE DATE 11/10/2005 AUTEUR VABHHTS J.PELLET
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE VABHHTS J.PELLET
-def proj_champ_prod(RESULTAT=None,CHAM_NO_REFE=None,**args ):
- if AsType(RESULTAT) == evol_ther : return evol_ther
- if AsType(RESULTAT) == evol_elas : return evol_elas
- if AsType(RESULTAT) == evol_noli : return evol_noli
- if AsType(RESULTAT) == evol_char : return evol_char
- if AsType(RESULTAT) == mode_meca : return mode_meca
- if AsType(RESULTAT) == mode_stat_depl : return mode_stat_depl
- if AsType(RESULTAT) == base_modale : return base_modale
- if AsType(CHAM_NO_REFE) == cham_no_depl_r : return cham_no_depl_r
- if AsType(CHAM_NO_REFE) == cham_no_depl_c : return cham_no_depl_c
- if AsType(CHAM_NO_REFE) == cham_no_pres_c : return cham_no_pres_c
- if AsType(CHAM_NO_REFE) == cham_no_temp_r : return cham_no_temp_r
- if AsType(CHAM_NO_REFE) == cham_no_epsi_r : return cham_no_epsi_r
- if AsType(CHAM_NO_REFE) == cham_no_sief_r : return cham_no_sief_r
- if AsType(CHAM_NO_REFE) == cham_no_flux_r : return cham_no_flux_r
- raise AsException("type de concept resultat non prevu")
-
-PROJ_CHAMP=OPER(nom="PROJ_CHAMP",op= 166,sd_prod=proj_champ_prod,reentrant='f',
- UIinfo={"groupes":("Résultats et champs",)},
- fr="Projeter les champs aux noeuds d'une SD résultat de type evol_xxx sur un autre maillage",
-#
- METHODE =SIMP(statut='f',typ='TXM',defaut="ELEM",
- into=("NUAGE_DEG_0","NUAGE_DEG_1","ELEM",) ),
- b_nuage =BLOC(condition="(METHODE=='NUAGE_DEG_1') or (METHODE=='NUAGE_DEG_0')",
- fr="Lissage d'un nuage de points",
- CHAM_NO =SIMP(statut='o',typ=(cham_no_depl_r,cham_no_depl_c,cham_no_pres_c,cham_no_temp_r,
- cham_no_epsi_r,cham_no_sief_r,cham_no_flux_r)),
- CHAM_NO_REFE =SIMP(statut='o',typ=(cham_no_depl_r,cham_no_depl_c,cham_no_pres_c,cham_no_temp_r,
- cham_no_epsi_r,cham_no_sief_r,cham_no_flux_r)),
- ),
- b_elem =BLOC(condition="METHODE=='ELEM'",
- fr="Utilisation des fonctions de forme du maillage initial",
- regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','FREQ','LIST_INST','LIST_FREQ','LIST_ORDRE'),
- EXCLUS('TOUT_CHAM','NOM_CHAM',), ),
- RESULTAT =SIMP(statut='o',typ=(evol_ther,evol_elas,evol_noli,evol_char,mode_meca,mode_stat_depl,base_modale) ),
- SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**',
- fr="Liste des paramètres de sensibilité.",
- ang="List of sensitivity parameters",),
- MODELE_1 =SIMP(statut='o',typ=modele_sdaster),
- MODELE_2 =SIMP(statut='o',typ=modele_sdaster),
-
- TOUT_CHAM =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- NOM_CHAM =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'),
-
- TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**' ),
- LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster),
- INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ),
- LIST_INST =SIMP(statut='f',typ=listr8_sdaster),
- FREQ =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ),
- LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster),
- NUME_MODE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**' ),
- NOEUD_CMP =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**'),
-
- CAS_FIGURE =SIMP(statut='f',typ='TXM',into=("2D","3D","2.5D","1.5D",) ),
- DISTANCE_MAX =SIMP(statut='f',typ='R',
- fr="Distance maximale entre le noeud et l'élément le plus proche, lorsque le noeud n'est dans aucun élément."),
- ALARME =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
-
- TYPE_CHAM =SIMP(statut='f',typ='TXM',into=("NOEU",),
- fr="Pour forcer le type des champs projetés. NOEU -> cham_no"),
-
- PROL_ZERO =SIMP(statut='f',typ='TXM',into=("OUI","NON"),defaut="NON",
- fr="Si le résultat est un mode_xxx ou une base_xxx, on peut prolonger"
- +" les champs par zéro la ou la projection ne donne pas de valeurs."),
-
- b_modele_gene =BLOC(condition = "AsType(RESULTAT) == mode_meca",
- RIGI_MECA =SIMP(statut='f',typ=(matr_asse_depl_r,matr_asse_depl_c,matr_asse_gene_r,matr_asse_pres_r ) ),
- MASS_MECA =SIMP(statut='f',typ=(matr_asse_depl_r,matr_asse_gene_r,matr_asse_pres_r ) ),
- AMOR_MECA =SIMP(statut='f',typ=(matr_asse_depl_r,matr_asse_gene_r) ),
- ),
- ),
-
- VIS_A_VIS =FACT(statut='f',max='**',
- regles=(AU_MOINS_UN('TOUT_1','GROUP_MA_1','MAILLE_1','GROUP_NO_1','NOEUD_1'),
- AU_MOINS_UN('TOUT_2','GROUP_MA_2','MAILLE_2','GROUP_NO_2','NOEUD_2'),),
- TOUT_1 =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA_1 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE_1 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_NO_1 =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- NOEUD_1 =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- TOUT_2 =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA_2 =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE_2 =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- GROUP_NO_2 =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- NOEUD_2 =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- CAS_FIGURE =SIMP(statut='f',typ='TXM',into=("2D","3D","2.5D","1.5D",) ),
- ),
-
- TITRE =SIMP(statut='f',typ='TXM',max='**' ),
- INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2)),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-def matr_asse_gene_prod(MATR_ASSE,MATR_ASSE_GENE,**args):
- if AsType(MATR_ASSE) == matr_asse_depl_r : return matr_asse_gene_r
- if AsType(MATR_ASSE_GENE) == matr_asse_gene_r : return matr_asse_gene_r
- if AsType(MATR_ASSE) == matr_asse_depl_c : return matr_asse_gene_c
- if AsType(MATR_ASSE_GENE) == matr_asse_gene_c : return matr_asse_gene_c
- raise AsException("type de concept resultat non prevu")
-
-PROJ_MATR_BASE=OPER(nom="PROJ_MATR_BASE",op= 71,sd_prod=matr_asse_gene_prod,
- fr="Projection d'une matrice assemblée sur une base (modale ou de RITZ)",
- reentrant='n',
- UIinfo={"groupes":("Matrices/vecteurs",)},
- regles=(UN_PARMI('MATR_ASSE','MATR_ASSE_GENE'),),
- BASE =SIMP(statut='o',typ=(mode_meca,base_modale,mode_gene,mode_stat ) ),
- NUME_DDL_GENE =SIMP(statut='o',typ=nume_ddl_gene ),
- MATR_ASSE =SIMP(statut='f',typ=(matr_asse_depl_r,matr_asse_depl_c) ),
- MATR_ASSE_GENE =SIMP(statut='f',typ=(matr_asse_gene_r,matr_asse_gene_c) ),
-) ;
-
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-def proj_mesu_modal_prod(MODELE_MESURE,**args):
- vale=MODELE_MESURE['MESURE']
- if AsType(vale) == dyna_trans : return tran_gene
- if AsType(vale) == dyna_harmo : return harm_gene
- if AsType(vale) == mode_meca : return mode_gene
-# if AsType(vale) == mode_meca_c : return mode_gene_c
- if AsType(vale) == base_modale : return mode_gene
- raise AsException("type de concept resultat non prevu")
-
-PROJ_MESU_MODAL=OPER(nom="PROJ_MESU_MODAL",op= 193,
- sd_prod=proj_mesu_modal_prod,
- reentrant='n',
- UIinfo={"groupes":("Résultats et champs",)},
- fr="Calcul des coordonnees généralisees de mesure experimentale relatives a une base de projection",
-
- MODELE_CALCUL =FACT(statut='o',
- MODELE =SIMP(statut='o',typ=(modele_sdaster) ),
- BASE =SIMP(statut='o',typ=(mode_meca,base_modale,) ),
- ),
- MODELE_MESURE =FACT(statut='o',
- MODELE =SIMP(statut='o',typ=(modele_sdaster) ),
- MESURE =SIMP(statut='o',typ=(dyna_trans,dyna_harmo,base_modale,mode_meca,mode_meca_c,) ),
- NOM_CHAM =SIMP(statut='f',typ='TXM',defaut="DEPL",into=("DEPL","VITE","ACCE","SIEF_NOEU","EPSI_NOEU_DEPL",) ),
- ),
- CORR_MANU =FACT(statut='f',max='**',
- regles=(PRESENT_PRESENT('NOEU_CALCUL','NOEU_MESURE'),),
- NOEU_CALCUL =SIMP(statut='f',typ=no),
- NOEU_MESURE =SIMP(statut='f',typ=no),
- ),
- RESOLUTION =FACT(statut='f',
- METHODE =SIMP(statut='f',typ='TXM',defaut="LU",into=("LU","SVD",) ),
- b_svd =BLOC(condition="METHODE=='SVD'",
- EPS=SIMP(statut='f',typ='R',defaut=0. ),
- ),
- REGUL =SIMP(statut='f',typ='TXM',defaut="NON",into=("NON","NORM_MIN","TIK_RELA",) ),
- b_regul =BLOC(condition="REGUL!='NON'",
- regles=(PRESENT_ABSENT('COEF_PONDER','COEF_PONDER_F', ),),
- COEF_PONDER =SIMP(statut='f',typ='R',defaut=0. ,max='**' ),
- COEF_PONDER_F =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule),max='**' ),
- ),
- ),
-
- );
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-PROJ_SPEC_BASE=OPER(nom="PROJ_SPEC_BASE",op= 146,sd_prod=tabl_intsp,reentrant='n',
- UIinfo={"groupes":("Matrices/vecteurs",)},
- fr="Projecter un ou plusieurs spectres de turbulence sur une (ou plusieurs) base(s) modale(s) ",
- regles=(UN_PARMI('BASE_ELAS_FLUI','MODE_MECA','CHAM_NO'),
- ENSEMBLE('FREQ_INIT','FREQ_FIN','NB_POIN'),),
- SPEC_TURB =SIMP(statut='o',typ=spectre_sdaster,validators=NoRepeat(),max='**' ),
- BASE_ELAS_FLUI =SIMP(statut='f',typ=melasflu_sdaster ),
- MODE_MECA =SIMP(statut='f',typ=mode_meca ),
- CHAM_NO =SIMP(statut='f',typ=cham_no_depl_r ),
- FREQ_INIT =SIMP(statut='f',typ='R',val_min=0.E+0 ),
- FREQ_FIN =SIMP(statut='f',typ='R',val_min=0.E+0 ),
- NB_POIN =SIMP(statut='f',typ='I' ),
- OPTION =SIMP(statut='f',typ='TXM',defaut="TOUT",into=("TOUT","DIAG")),
- GROUP_MA =SIMP(statut='f',typ=grma),
-# Quel est le type attendu derriere MODELE_INTERFACE
- MODELE_INTERFACE=SIMP(statut='f',typ=modele_sdaster),
- VECT_X =SIMP(statut='f',typ='R',min=3,max=3 ),
- VECT_Y =SIMP(statut='f',typ='R',min=3,max=3 ),
- ORIG_AXE =SIMP(statut='f',typ='R',min=3,max=3 ),
- TITRE =SIMP(statut='f',typ='TXM',max='**' ),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-def vect_asse_gene_prod(VECT_ASSE,VECT_ASSE_GENE,**args):
- if AsType(VECT_ASSE) == cham_no_depl_r : return vect_asse_gene_r
- if AsType(VECT_ASSE_GENE) == vect_asse_gene_r : return vect_asse_gene_r
- if AsType(VECT_ASSE) == cham_no_depl_c : return vect_asse_gene_c
- if AsType(VECT_ASSE_GENE) == vect_asse_gene_c : return vect_asse_gene_c
- raise AsException("type de concept resultat non prevu")
-
-PROJ_VECT_BASE=OPER(nom="PROJ_VECT_BASE",op= 72,sd_prod=vect_asse_gene_prod,
- fr="Projection d'un vecteur assemblé sur une base (modale ou de RITZ)",
- reentrant='n',
- UIinfo={"groupes":("Matrices/vecteurs",)},
- regles=(UN_PARMI('VECT_ASSE','VECT_ASSE_GENE'),),
- BASE =SIMP(statut='o',typ=(mode_meca,base_modale,mode_gene,mode_stat ) ),
- NUME_DDL_GENE =SIMP(statut='o',typ=nume_ddl_gene ),
- TYPE_VECT =SIMP(statut='f',typ='TXM',defaut="FORC"),
- VECT_ASSE =SIMP(statut='f',typ=(cham_no_depl_r,cham_no_depl_c) ),
- VECT_ASSE_GENE =SIMP(statut='f',typ=(vect_asse_gene_r,vect_asse_gene_c) ),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-RECA_WEIBULL=OPER(nom="RECA_WEIBULL",op= 197,sd_prod=tabl_reca_weib,
- fr="Recaler les paramètres du modèle de WEIBULL sur des données expérimentales",reentrant='n',
- UIinfo={"groupes":("Post traitements",)},
- LIST_PARA =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=2,into=("SIGM_REFE","M",) ),
- RESU =FACT(statut='o',max='**',
- regles=(EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','LIST_INST',),
- AU_MOINS_UN('TOUT','GROUP_MA','MAILLE', ),),
- EVOL_NOLI =SIMP(statut='o',typ=(evol_noli) ),
- MODELE =SIMP(statut='o',typ=(modele_sdaster) ),
- CHAM_MATER =SIMP(statut='o',typ=(cham_mater) ),
- TEMPE =SIMP(statut='f',typ='R' ),
- LIST_INST_RUPT =SIMP(statut='o',typ='R',validators=NoRepeat(),max='**' ),
- TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**' ),
- INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ),
- LIST_INST =SIMP(statut='f',typ=(listr8_sdaster) ),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- COEF_MULT =SIMP(statut='f',typ='R',defaut= 1.E0 ),
- ),
- OPTION =SIMP(statut='f',typ='TXM',defaut="SIGM_ELGA",into=("SIGM_ELGA","SIGM_ELMOY",) ),
- CORR_PLAST =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON",) ),
- METHODE =SIMP(statut='f',typ='TXM',defaut="MAXI_VRAI",into=("MAXI_VRAI","REGR_LINE",) ),
- INCO_GLOB_RELA =SIMP(statut='f',typ='R',defaut= 1.0E-3 ),
- ITER_GLOB_MAXI =SIMP(statut='f',typ='I',defaut= 10 ),
- INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2 ,) ),
- ) ;
-#& MODIF COMMANDE DATE 04/07/2005 AUTEUR CIBHHLV L.VIVAN
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE MCOURTOI M.COURTOIS
-def recu_fonction_prod(RESULTAT=None,TABLE=None,OBSTACLE=None,
- RESU_GENE=None,BASE_ELAS_FLUI=None,CHAM_GD=None,
- TYPE_RESU=None,**args):
- if AsType(RESULTAT) == dyna_harmo : return fonction_c
- if AsType(RESU_GENE) == harm_gene : return fonction_c
-# On ne sait pas interpreter les deux conditions suivantes
- if TABLE != None :
- if TYPE_RESU != None :
- if TYPE_RESU == "FONCTION_C" : return fonction_c
- if TYPE_RESU == "FONCTION" : return fonction_sdaster
- else:
- return fonction_sdaster
- if RESU_GENE != None : return fonction_sdaster
- if BASE_ELAS_FLUI != None : return fonction_sdaster
- if RESULTAT != None : return fonction_sdaster
- if CHAM_GD != None : return fonction_sdaster
- if OBSTACLE != None : return fonction_sdaster
- raise AsException("type de concept resultat non prevu")
-
-RECU_FONCTION=OPER(nom="RECU_FONCTION",op=90,sd_prod=recu_fonction_prod,
- fr="Extraire sous forme d'une fonction, l'évolution d'une grandeur en fonction d'une autre",
- reentrant='n',
- UIinfo={"groupes":("Fonction",)},
- regles=(UN_PARMI('CHAM_GD','RESULTAT','RESU_GENE','TABLE','BASE_ELAS_FLUI','OBSTACLE'),),
-
- CHAM_GD =SIMP(statut='f',typ=(cham_no_depl_r,cham_no_temp_r,cham_no_pres_r,cham_elem_sief_r,
- cham_elem_vari_r,cham_elem_epsi_r,cham_elem_flux_r,
- cham_elem_pres_r,) ),
- RESULTAT =SIMP(statut='f',typ=(evol_elas,dyna_trans,evol_noli,evol_ther,dyna_harmo ) ),
- RESU_GENE =SIMP(statut='f',typ=(tran_gene, mode_gene, harm_gene)),
- TABLE =SIMP(statut='f',typ=table_sdaster),
- BASE_ELAS_FLUI =SIMP(statut='f',typ=melasflu_sdaster),
- OBSTACLE =SIMP(statut='f',typ=obstacle_sdaster),
-
-# ======= ACCES A LA SD RESULTAT =================================================
- b_acces = BLOC ( condition = "(RESULTAT != None) or (RESU_GENE != None)",
- fr="acces a une SD résultat",
-# on ne peut pas mettre de regles, le défaut TOUT_ORDRE est pris en compte dans le fortran
- TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
- LIST_ORDRE =SIMP(statut='f',typ=listis_sdaster ),
- TOUT_INST =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
- LIST_INST =SIMP(statut='f',typ=listr8_sdaster ),
- FREQ =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
- LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster ),
- NUME_MODE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
- b_prec = BLOC ( condition = "(INST != None) or (LIST_INST != None) or (FREQ != None) or (LIST_FREQ != None)",
- PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
- INTERP_NUME =SIMP(statut='f',typ='TXM',into=("NON","LIN") ),
- ),
- ),
-# ======= BASE_ELAS_FLUI =================================================
- b_base_elas_flui = BLOC ( condition = "BASE_ELAS_FLUI != None",
- fr="Récupération de la fonction à partir d un concept melasflu",
- regles=(UN_PARMI('TOUT_ORDRE','NUME_ORDRE'),),
- TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**'),
- NUME_MODE =SIMP(statut='o',typ='I' ),
- PARA_X =SIMP(statut='o',typ='TXM',into=("VITE_FLU",) ),
- PARA_Y =SIMP(statut='o',typ='TXM',into=("FREQ","AMOR") ),
- ),
-
-# ======= TABLE =================================================
- b_table = BLOC ( condition = "TABLE != None",
- fr="Récupération de la fonction à partir d un concept table",
- regles=(UN_PARMI('PARA_X','NOM_PARA_TABL'),
- PRESENT_PRESENT('PARA_X','PARA_Y'),),
- PARA_X =SIMP(statut='f',typ='TXM',
- fr="1ère colonne de la table qui définit la fonction à récupérer", ),
- PARA_Y =SIMP(statut='f',typ='TXM',
- fr="2ème colonne de la table qui définit la fonction à récupérer", ),
- NOM_PARA_TABL =SIMP(statut='f',typ='TXM',into=("FONCTION",),
- fr="Nom du paramètre de la table à qui est associé la fonction" ),
- b_nom_para_tabl = BLOC (condition = "NOM_PARA_TABL != None",
- TYPE_RESU =SIMP(statut='f',typ='TXM',defaut="FONCTION",into=("FONCTION","FONCTION_C") ),
- ),
-
- FILTRE =FACT(statut='f',max='**',
- NOM_PARA =SIMP(statut='o',typ='TXM' ),
- CRIT_COMP =SIMP(statut='f',typ='TXM',defaut="EQ",
- into=("EQ","LT","GT","NE","LE","GE","VIDE",
- "NON_VIDE","MAXI","ABS_MAXI","MINI","ABS_MINI") ),
- b_vale =BLOC(condition = "(CRIT_COMP in ('EQ','NE','GT','LT','GE','LE'))",
- regles=(UN_PARMI('VALE','VALE_I','VALE_K','VALE_C',),),
- VALE =SIMP(statut='f',typ='R' ),
- VALE_I =SIMP(statut='f',typ='I' ),
- VALE_C =SIMP(statut='f',typ='C' ),
- VALE_K =SIMP(statut='f',typ='TXM' ),),
-
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
- PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ),
- ),
- ),
-
-# ======= RESULTAT =================================================
- b_resu = BLOC ( condition = "RESULTAT != None", fr="Opérandes en cas de RESULTAT",
- regles=(UN_PARMI('NOM_CHAM','NOM_PARA_RESU'),),
- NOM_CHAM =SIMP(statut='f',typ='TXM',into=C_NOM_CHAM_INTO()),
- NOM_PARA_RESU =SIMP(statut='f',typ='TXM' ),
- b_cham = BLOC ( condition = "NOM_CHAM != None",
- regles=(AU_MOINS_UN('MAILLE','GROUP_MA','GROUP_NO','NOEUD'),
- PRESENT_ABSENT('POINT','NOEUD','GROUP_NO'),
- PRESENT_ABSENT('SOUS_POINT','NOEUD','GROUP_NO'),
- EXCLUS('GROUP_MA','MAILLE'),
- EXCLUS('GROUP_NO','NOEUD'),),
- NOM_CMP =SIMP(statut='o',typ='TXM' ),
- MAILLE =SIMP(statut='f',typ=ma),
- GROUP_MA =SIMP(statut='f',typ=grma),
- NOEUD =SIMP(statut='f',typ=no),
- GROUP_NO =SIMP(statut='f',typ=grno),
- POINT =SIMP(statut='f',typ='I' ),
- SOUS_POINT =SIMP(statut='f',typ='I' ),
- ),
- ),
-
-# ======= RESU_GENE =================================================
- b_tran_gene = BLOC ( condition = "AsType(RESU_GENE) == tran_gene",
- fr="Récupération d'une fonction à partir d un concept TRAN_GENE",
- regles=(UN_PARMI('NOM_CHAM','NOEUD_CHOC','GROUP_NO_CHOC'),),
- NOM_CHAM =SIMP(statut='f',typ='TXM',into=("DEPL","VITE","ACCE","PTEM") ),
- NOEUD_CHOC =SIMP(statut='f',typ=no),
- GROUP_NO_CHOC =SIMP(statut='f',typ=grno),
- b_cham = BLOC ( condition = "(NOM_CHAM=='DEPL') or (NOM_CHAM=='VITE') or (NOM_CHAM=='ACCE')",
- regles=(UN_PARMI('GROUP_NO','NOEUD'),
- EXCLUS('MULT_APPUI','CORR_STAT'),),
- NOM_CMP =SIMP(statut='o',typ='TXM' ),
- NOEUD =SIMP(statut='f',typ=no),
- GROUP_NO =SIMP(statut='f',typ=grno),
- MULT_APPUI =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- CORR_STAT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- ACCE_MONO_APPUI =SIMP(statut='f',typ=(fonction_sdaster,formule)),
- ),
- b_choc = BLOC ( condition = "(NOEUD_CHOC != None) or (GROUP_NO_CHOC != None)",
- regles=(PRESENT_PRESENT('SOUS_STRUC','INTITULE'),),
- PARA_X =SIMP(statut='o',typ='TXM',
- into=("INST","FN","FT1","FT2","VN","VT1","VT2","DXLOC","DYLOC","DZLOC") ),
- PARA_Y =SIMP(statut='o',typ='TXM',
- into=("INST","FN","FT1","FT2","VN","VT1","VT2","DXLOC","DYLOC","DZLOC") ),
- LIST_PARA =SIMP(statut='f',typ=listr8_sdaster ),
- INTITULE =SIMP(statut='f',typ='TXM' ),
- SOUS_STRUC =SIMP(statut='f',typ='TXM' ),
- ),
- ),
- b_harm_gene = BLOC ( condition = "AsType(RESU_GENE)==harm_gene",
- fr="Récupération d'une fonction à partir d un concept HARM_GENE",
- regles=(UN_PARMI('NOM_CHAM','NOM_PARA_RESU'),),
- NOM_CHAM =SIMP(statut='f',typ='TXM',into=C_NOM_CHAM_INTO()),
- NOM_PARA_RESU =SIMP(statut='f',typ='TXM' ),
- b_cham = BLOC ( condition = "NOM_CHAM != None",
- regles=(UN_PARMI('NUME_CMP_GENE','NOM_CMP'),),
- NUME_CMP_GENE =SIMP(statut='f',typ='I' ),
- NOM_CMP =SIMP(statut='f',typ='TXM' ),
- b_cmp = BLOC ( condition = "NOM_CMP != None",
- regles=(UN_PARMI('NOEUD','GROUP_NO'),),
- NOEUD =SIMP(statut='f',typ=no),
- GROUP_NO =SIMP(statut='f',typ=grno),
- ),
- ),
- ),
- b_mode_gene = BLOC ( condition = "AsType(RESU_GENE)==mode_gene",
- fr="Récupération d'une fonction à partir d un concept MODE_GENE",
- regles=(UN_PARMI('NOM_CHAM','NOM_PARA_RESU'),),
- NOM_CHAM =SIMP(statut='f',typ='TXM',into=C_NOM_CHAM_INTO()),
- NOM_PARA_RESU =SIMP(statut='f',typ='TXM' ),
- b_cham = BLOC ( condition = "NOM_CHAM != None",
- regles=(UN_PARMI('NUME_CMP_GENE','NOM_CMP'),),
- NUME_CMP_GENE =SIMP(statut='f',typ='I' ),
- NOM_CMP =SIMP(statut='f',typ='TXM' ),
- b_cmp = BLOC ( condition = "NOM_CMP != None",
- regles=(UN_PARMI('NOEUD','GROUP_NO'),
- UN_PARMI('SQUELETTE','SOUS_STRUC'),),
- NOEUD =SIMP(statut='f',typ=no),
- GROUP_NO =SIMP(statut='f',typ=grno),
- SQUELETTE =SIMP(statut='f',typ=squelette ),
- SOUS_STRUC =SIMP(statut='f',typ='TXM' ),
- ),
- ),
- ),
-
-# ======= CHAM_GD =================================================
- b_cham_gd = BLOC ( condition = "(CHAM_GD != None)", fr="Opérandes en cas de CHAM_GD",
- regles=(AU_MOINS_UN('MAILLE','GROUP_MA','GROUP_NO','NOEUD'),
- PRESENT_ABSENT('POINT','NOEUD','GROUP_NO'),
- PRESENT_ABSENT('SOUS_POINT','NOEUD','GROUP_NO'),
- EXCLUS('GROUP_MA','MAILLE'),
- EXCLUS('GROUP_NO','NOEUD'),),
- NOM_CMP =SIMP(statut='o',typ='TXM' ),
- MAILLE =SIMP(statut='f',typ=ma),
- GROUP_MA =SIMP(statut='f',typ=grma),
- NOEUD =SIMP(statut='f',typ=no),
- GROUP_NO =SIMP(statut='f',typ=grno),
- POINT =SIMP(statut='f',typ='I' ),
- SOUS_POINT =SIMP(statut='f',typ='I' ),
- ),
-
-# ======= OBSTACLE =================================================
- b_obstacle = BLOC ( condition = "OBSTACLE != None",
- fr="Choix du repère",
- REPERE =SIMP(statut='f',typ='TXM',into=("POLAIRE","GLOBAL") ),
- ),
-
-# ======= SURCHARGE DES ATTRIBUTS =================================================
- NOM_PARA =SIMP(statut='f',typ='TXM', into=C_PARA_FONCTION() ),
- NOM_RESU =SIMP(statut='f',typ='TXM' ),
- INTERPOL =SIMP(statut='f',typ='TXM',max=2,into=("NON","LIN","LOG") ),
- PROL_DROITE =SIMP(statut='f',typ='TXM',into=("CONSTANT","LINEAIRE","EXCLU") ),
- PROL_GAUCHE =SIMP(statut='f',typ='TXM',into=("CONSTANT","LINEAIRE","EXCLU") ),
-
- TITRE =SIMP(statut='f',typ='TXM',max='**'),
- INFO =SIMP(statut='f',typ='I',defaut= 1,into=( 1 , 2 ) ),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-RECU_GENE=OPER(nom="RECU_GENE",op= 76,sd_prod=vect_asse_gene_r,reentrant='n',
- UIinfo={"groupes":("Résultats et champs",)},
- fr="Extraire d'un champ de grandeur (déplacements, vitesses ou accélérations) à partir de résultats"
- +" en coordonnées généralisées",
- RESU_GENE =SIMP(statut='o',typ=tran_gene ),
- INST =SIMP(statut='o',typ='R' ),
- NOM_CHAM =SIMP(statut='f',typ='TXM',defaut="DEPL",into=("DEPL","VITE","ACCE") ),
- INTERPOL =SIMP(statut='f',typ='TXM',defaut="NON",into=("NON","LIN") ),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF" ,into=("ABSOLU","RELATIF") ),
- PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE VABHHTS J.PELLET
-RECU_TABLE=OPER(nom="RECU_TABLE",op= 174,sd_prod=table_sdaster,
- fr="Récupérer dans une table les valeurs d'un paramètre d'une SD Résultat ou d'extraire une table contenue"
- +" dans une autre SD pour celles qui le permettent",
- UIinfo={"groupes":("Résultats et champs",)},reentrant='n',
- CO =SIMP(statut='o',typ=assd),
- regles=(UN_PARMI('NOM_TABLE','NOM_PARA')),
- NOM_TABLE =SIMP(statut='f',typ='TXM' ),
- NOM_PARA =SIMP(statut='f',typ='TXM',max='**'),
- TITRE =SIMP(statut='f',typ='TXM',max='**'),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-def reso_grad_prod(MATR_ASSE,**args ):
- if AsType(MATR_ASSE) == matr_asse_depl_r : return cham_no_depl_r
- if AsType(MATR_ASSE) == matr_asse_temp_r : return cham_no_temp_r
- if AsType(MATR_ASSE) == matr_asse_pres_r : return cham_no_pres_r
- raise AsException("type de concept resultat non prevu")
-
-RESO_GRAD=OPER(nom="RESO_GRAD",op= 84,sd_prod=reso_grad_prod,
- fr="Résolution d'un système linéaire par la méthode du gradient conjugué préconditionné",
- reentrant='f',
- UIinfo={"groupes":("Résolution",)},
- MATR_ASSE =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_temp_r,matr_asse_pres_r ) ),
- CHAM_NO =SIMP(statut='o',typ=(cham_no_depl_r,cham_no_temp_r,cham_no_pres_r ) ),
- CHAM_CINE =SIMP(statut='f',typ=(cham_no_temp_r,cham_no_depl_r,cham_no_pres_r ) ),
- MATR_FACT =SIMP(statut='f',typ=(matr_asse_depl_r,matr_asse_temp_r,matr_asse_pres_r ) ),
- NMAX_ITER =SIMP(statut='f',typ='I',defaut= 0 ),
- REPRISE =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
- RESI_RELA =SIMP(statut='f',typ='R',defaut= 1E-6 ),
- INFO =SIMP(statut='f',typ='I',into=(1,2) ),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE VABHHTS J.PELLET
-def reso_ldlt_prod(CHAM_NO,**args ):
- if AsType(CHAM_NO) == cham_no_temp_r : return cham_no_temp_r
- if AsType(CHAM_NO) == cham_no_depl_r : return cham_no_depl_r
- if AsType(CHAM_NO) == cham_no_pres_r : return cham_no_pres_r
- if AsType(CHAM_NO) == cham_no_temp_c : return cham_no_temp_c
- if AsType(CHAM_NO) == cham_no_depl_c : return cham_no_depl_c
- if AsType(CHAM_NO) == cham_no_pres_c : return cham_no_pres_c
- raise AsException("type de concept resultat non prevu")
-
-RESO_LDLT=OPER(nom="RESO_LDLT",op=15,sd_prod=reso_ldlt_prod,reentrant='f',
- fr="Résoudre par méthode directe un système d'équations linéaires préalablement factorisé par FACT_LDLT",
- UIinfo={"groupes":("Résolution",)},
- MATR_FACT =SIMP(statut='o',typ=(matr_asse_depl_r,matr_asse_depl_c,matr_asse_temp_r,
- matr_asse_temp_c,matr_asse_pres_r,matr_asse_pres_c) ),
- CHAM_NO =SIMP(statut='o',typ=(cham_no_temp_r,cham_no_depl_r,cham_no_pres_r,
- cham_no_temp_c,cham_no_depl_c,cham_no_pres_c) ),
- CHAM_CINE =SIMP(statut='f',typ=(cham_no_temp_r,cham_no_depl_r,cham_no_pres_c) ),
- # RESI_RELA : précision utilisée si SOLVEUR=MUMPS
- RESI_RELA =SIMP(statut='f',typ='R',defaut=1.e-6),
- TITRE =SIMP(statut='f',typ='TXM',max='**'),
- INFO =SIMP(statut='f',typ='I',into=(1,2) ),
-) ;
-#& MODIF COMMANDE DATE 30/06/2004 AUTEUR MCOURTOI M.COURTOIS
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE BOYERE E.BOYERE
-def rest_base_phys_prod(RESU_GENE,RESULTAT,**args ):
- if AsType(RESU_GENE) == tran_gene : return dyna_trans
- if AsType(RESU_GENE) == mode_gene : return mode_meca
- if AsType(RESU_GENE) == mode_cycl : return mode_meca
- if AsType(RESU_GENE) == harm_gene : return dyna_harmo
- if AsType(RESULTAT) == mode_meca : return mode_meca
- raise AsException("type de concept resultat non prevu")
-
-REST_BASE_PHYS=OPER(nom="REST_BASE_PHYS",op= 75,sd_prod=rest_base_phys_prod,
- fr="Restituer dans la base physique des résultats en coordonnées généralisées",
- reentrant='n',
- UIinfo={"groupes":("Matrices/vecteurs",)},
- regles=(UN_PARMI('RESU_GENE','RESULTAT'),
- EXCLUS('TOUT_ORDRE','NUME_ORDRE','INST','LIST_INST','TOUT_INST'),
- EXCLUS('TOUT_INST','NUME_ORDRE','INST','LIST_INST','TOUT_ORDRE'),
-# Doc U à revoir
- EXCLUS('MULT_APPUI','CORR_STAT'),
- EXCLUS('MULT_APPUI','NOEUD','GROUP_NO'),
- EXCLUS('CORR_STAT','NOEUD','GROUP_NO'),
- EXCLUS('NOEUD','GROUP_NO'),
- PRESENT_PRESENT('RESULTAT','SQUELETTE'),
- PRESENT_PRESENT('ACCE_MONO_APPUI','DIRECTION'),),
- RESU_GENE =SIMP(statut='f',typ=(tran_gene,mode_gene,mode_cycl,harm_gene ) ),
- RESULTAT =SIMP(statut='f',typ=mode_meca ),
-
- MODE_MECA =SIMP(statut='f',typ=mode_meca ),
- TOUT_ORDRE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- NUME_ORDRE =SIMP(statut='f',typ='I',validators=NoRepeat(),max='**' ),
- TOUT_INST =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ),
- LIST_INST =SIMP(statut='f',typ=listr8_sdaster ),
- FREQ =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ),
- LIST_FREQ =SIMP(statut='f',typ=listr8_sdaster ),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("ABSOLU","RELATIF") ),
- PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ),
- INTERPOL =SIMP(statut='f',typ='TXM',defaut="NON",into=("NON","LIN") ),
- MULT_APPUI =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- CORR_STAT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- NOM_CHAM =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=8,defaut="ACCE",
- into=("DEPL","VITE","ACCE","ACCE_ABSOLU","EFGE_ELNO_DEPL","SIPO_ELNO_DEPL",
- "SIGM_ELNO_DEPL","FORC_NODA",) ),
- TOUT_CHAM =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
-
- ACCE_MONO_APPUI =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- DIRECTION =SIMP(statut='f',typ='R',min=3,max=3 ),
-
- SQUELETTE =SIMP(statut='f',typ=squelette ),
- SOUS_STRUC =SIMP(statut='f',typ='TXM' ),
- SECTEUR =SIMP(statut='f',typ='I',defaut= 1 ),
- TITRE =SIMP(statut='f',typ='TXM',max='**' ),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-REST_SPEC_PHYS=OPER(nom="REST_SPEC_PHYS",op= 148,sd_prod=tabl_intsp,
- reentrant='n',
- fr="Calculer la réponse d'une structure dans la base physique",
- UIinfo={"groupes":("Matrices/vecteurs",)},
- regles=(AU_MOINS_UN('BASE_ELAS_FLUI','MODE_MECA'),),
- BASE_ELAS_FLUI =SIMP(statut='f',typ=melasflu_sdaster ),
- MODE_MECA =SIMP(statut='f',typ=mode_meca ),
- BANDE =SIMP(statut='f',typ='R',min=2,validators=NoRepeat(),max=2 ),
- NUME_ORDRE =SIMP(statut='f',typ='I' ,validators=NoRepeat(),max='**' ),
- INTE_SPEC_GENE =SIMP(statut='o',typ=tabl_intsp ),
- NOEUD =SIMP(statut='o',typ=no ,max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,max='**'),
- NOM_CMP =SIMP(statut='o',typ='TXM',max='**'),
- NOM_CHAM =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=7,
- into=("DEPL","VITE","ACCE","EFGE_ELNO_DEPL",
- "SIPO_ELNO_DEPL","SIGM_ELNO_DEPL","FORC_NODA") ),
- MODE_STAT =SIMP(statut='f',typ=(mode_stat_depl,mode_stat_acce,mode_stat_forc), ),
- EXCIT =FACT(statut='f',
- NOEUD =SIMP(statut='o',typ=no ,max='**'),
- NOM_CMP =SIMP(statut='o',typ='TXM',max='**'),
- ),
- MOUVEMENT =SIMP(statut='f',typ='TXM',defaut="ABSOLU",into=("RELATIF","ABSOLU","DIFFERENTIEL") ),
- OPTION =SIMP(statut='f',typ='TXM',defaut="DIAG_DIAG",
- into=("DIAG_TOUT","DIAG_DIAG","TOUT_TOUT","TOUT_DIAG") ),
- TITRE =SIMP(statut='f',typ='TXM',max='**' ),
-) ;
-#& MODIF COMMANDE DATE 08/11/2005 AUTEUR ASSIRE A.ASSIRE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-
-from Macro.stanley_ops import stanley_ops
-
-STANLEY=MACRO(nom="STANLEY",op=stanley_ops,sd_prod=None,
- reentrant='n',
- UIinfo={"groupes":("Outils métier",)},
- fr="Outil de post-traitement interactif Stanley ",
- RESULTAT =SIMP(statut='f',typ=(evol_elas,evol_noli,evol_ther,mode_meca,mode_stat,dyna_harmo,dyna_trans) ),
- MODELE =SIMP(statut='f',typ=modele_sdaster),
- CHAM_MATER =SIMP(statut='f',typ=cham_mater),
- CARA_ELEM =SIMP(statut='f',typ=cara_elem),
- DISPLAY =SIMP(statut='f',typ='TXM'),
-) ;
-#& MODIF COMMANDE DATE 07/10/2005 AUTEUR CIBHHPD L.SALMONA
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE PBADEL P.BADEL
-STAT_NON_LINE=OPER(nom="STAT_NON_LINE",op=70,sd_prod=evol_noli,
- fr="Calcul de l'évolution mécanique ou thermo-hydro-mécanique couplée, en quasi-statique,"
- +" d'une structure en non linéaire",
- reentrant='f',
- UIinfo={"groupes":("Résolution",)},
- regles=(AU_MOINS_UN('COMP_INCR','COMP_ELAS'),),
- MODELE =SIMP(statut='o',typ=modele_sdaster),
- CHAM_MATER =SIMP(statut='o',typ=cham_mater),
- CARA_ELEM =SIMP(statut='f',typ=cara_elem),
- EXCIT =FACT(statut='o',max='**',
- CHARGE =SIMP(statut='o',typ=(char_meca,char_cine_meca)),
- FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- TYPE_CHARGE =SIMP(statut='f',typ='TXM',defaut="FIXE_CSTE",
- into=("FIXE_CSTE","FIXE_PILO","SUIV","DIDI")),
- ),
- SOUS_STRUC =FACT(statut='f',min=01,max='**',
- regles=(UN_PARMI('TOUT','MAILLE'),),
- CAS_CHARGE =SIMP(statut='o',typ='TXM' ),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- MAILLE =SIMP(statut='f',typ=ma,validators=NoRepeat(),max='**',),
- ),
- COMP_INCR =C_COMP_INCR(),
- COMP_ELAS =FACT(statut='f',max='**',
- RESI_INTE_RELA =SIMP(statut='f',typ='R',defaut= 1.0E-6),
- ITER_INTE_MAXI =SIMP(statut='f',typ='I',defaut= 10 ),
- ITER_INTE_PAS =SIMP(statut='f',typ='I',defaut= 0 ),
- RESO_INTE =SIMP(statut='f',typ='TXM',defaut="IMPLICITE",
- into=("RUNGE_KUTTA_2","RUNGE_KUTTA_4","IMPLICITE")),
- RELATION =SIMP(statut='o',typ='TXM',defaut="ELAS",
- into=("ELAS","ELAS_VMIS_LINE","ELAS_VMIS_TRAC",
- "ELAS_POUTRE_GR","CABLE")),
- ELAS =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
- ELAS_VMIS_TRAC =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
- ELAS_VMIS_LINE =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
- ELAS_POUTRE_GR =SIMP(statut='c',typ='I',defaut=3,into=(3,)),
- CABLE =SIMP(statut='c',typ='I',defaut=1,into=(1,)),
- DEFORMATION =SIMP(statut='f',typ='TXM',defaut="PETIT" ,into=("PETIT","GREEN","GREEN_GR",) ),
- regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- ),
- b_reuse =BLOC(condition = "reuse",fr="en mode concept reentrant : ETAT_INIT obligatoire",
- ETAT_INIT =FACT(statut='o',
- regles=(AU_MOINS_UN('EVOL_NOLI','DEPL','SIGM','VARI','VARI_NON_LOCAL',),
- EXCLUS('EVOL_NOLI','DEPL',),
- EXCLUS('EVOL_NOLI','SIGM',),
- EXCLUS('EVOL_NOLI','VARI',),
- EXCLUS('EVOL_NOLI','VARI_NON_LOCAL',),
- EXCLUS('NUME_ORDRE','INST'), ),
- DEPL =SIMP(statut='f',typ=cham_no_depl_r),
- SIGM =SIMP(statut='f',typ=(cham_elem_sief_r,carte_sief_r)),
- VARI =SIMP(statut='f',typ=cham_elem_vari_r),
- VARI_NON_LOCAL =SIMP(statut='f',typ=cham_no_vanl_r),
- EVOL_NOLI =SIMP(statut='f',typ=evol_noli),
- NUME_ORDRE =SIMP(statut='f',typ='I'),
- INST =SIMP(statut='f',typ='R'),
- PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3 ),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
- NUME_DIDI =SIMP(statut='f',typ='I'),
- INST_ETAT_INIT =SIMP(statut='f',typ='R'),
- ),),
- b_not_reuse =BLOC(condition = "not reuse",fr="en mode concept non reentrant : ETAT_INIT facultatif",
- ETAT_INIT =FACT(statut='f',
- regles=(AU_MOINS_UN('EVOL_NOLI','DEPL','SIGM','VARI','VARI_NON_LOCAL',),
- EXCLUS('EVOL_NOLI','DEPL',),
- EXCLUS('EVOL_NOLI','SIGM',),
- EXCLUS('EVOL_NOLI','VARI',),
- EXCLUS('EVOL_NOLI','VARI_NON_LOCAL',),
- EXCLUS('NUME_ORDRE','INST'), ),
- DEPL =SIMP(statut='f',typ=cham_no_depl_r),
- SIGM =SIMP(statut='f',typ=(cham_elem_sief_r,carte_sief_r)),
- VARI =SIMP(statut='f',typ=cham_elem_vari_r),
- VARI_NON_LOCAL =SIMP(statut='f',typ=cham_no_vanl_r),
- EVOL_NOLI =SIMP(statut='f',typ=evol_noli),
- NUME_ORDRE =SIMP(statut='f',typ='I'),
- INST =SIMP(statut='f',typ='R'),
- PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3 ),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
- NUME_DIDI =SIMP(statut='f',typ='I'),
- INST_ETAT_INIT =SIMP(statut='f',typ='R'),
- ),),
- INCREMENT =FACT(statut='o',
- regles=(EXCLUS('NUME_INST_INIT','INST_INIT'),
- EXCLUS('NUME_INST_FIN','INST_FIN'),),
- LIST_INST =SIMP(statut='o',typ=listr8_sdaster),
- EVOLUTION =SIMP(statut='f',typ='TXM',defaut="CHRONOLOGIQUE",
- into=("CHRONOLOGIQUE","RETROGRADE","SANS",) ),
- NUME_INST_INIT =SIMP(statut='f',typ='I'),
- INST_INIT =SIMP(statut='f',typ='R'),
- NUME_INST_FIN =SIMP(statut='f',typ='I'),
- INST_FIN =SIMP(statut='f',typ='R'),
- PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3 ),
- SUBD_PAS =SIMP(statut='f',typ='I',defaut=1),
- SUBD_PAS_MINI =SIMP(statut='f',typ='R'),
- COEF_SUBD_PAS_1 =SIMP(statut='f',typ='R',defaut= 1.0E+0),
- OPTI_LIST_INST =SIMP(statut='f',typ='TXM',into=("INCR_MAXI",),),
- NOM_CHAM =SIMP(statut='f',typ='TXM',),
- NOM_CMP =SIMP(statut='f',typ='TXM',),
- VALE =SIMP(statut='f',typ='R'),
- ),
- NEWTON =FACT(statut='d',
- REAC_INCR =SIMP(statut='f',typ='I',defaut= 1 ),
- PREDICTION =SIMP(statut='f',typ='TXM',into=("DEPL_CALCULE","TANGENTE","ELASTIQUE","EXTRAPOL") ),
- MATRICE =SIMP(statut='f',typ='TXM',defaut="TANGENTE",into=("TANGENTE","ELASTIQUE") ),
- PAS_MINI_ELAS =SIMP(statut='f',typ='R',defaut=0.0E+0),
- REAC_ITER =SIMP(statut='f',typ='I',defaut=0),
- REAC_ITER_ELAS =SIMP(statut='f',typ='I',defaut=0),
- EVOL_NOLI =SIMP(statut='f',typ=evol_noli),
- ),
- RECH_LINEAIRE =FACT(statut='f',
- RESI_LINE_RELA =SIMP(statut='f',typ='R',defaut= 1.0E-1 ),
- ITER_LINE_MAXI =SIMP(statut='f',typ='I',defaut= 3),
- ITER_LINE_CRIT =SIMP(statut='f',typ='I',defaut= 20),
- PAS_MINI_CRIT =SIMP(statut='f',typ='R',defaut=0.0E+0),
- RHO_MIN =SIMP(statut='f',typ='R',defaut=1.0E-2),
- RHO_MAX =SIMP(statut='f',typ='R',defaut=1.0E+1),
- RHO_EXCL =SIMP(statut='f',typ='R',defaut=0.9E-2),
- ),
- PILOTAGE =FACT(statut='f',
- regles=(EXCLUS('NOEUD','GROUP_NO'),PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),),
- TYPE =SIMP(statut='o',typ='TXM',into=("DDL_IMPO","LONG_ARC","PRED_ELAS","PRED_ELAS_INCR","DEFORMATION","ANA_LIM") ),
- COEF_MULT =SIMP(statut='f',typ='R',defaut= 1.0E+0),
- ETA_PILO_MAX =SIMP(statut='f',typ='R'),
- ETA_PILO_MIN =SIMP(statut='f',typ='R'),
- ETA_PILO_R_MAX =SIMP(statut='f',typ='R'),
- ETA_PILO_R_MIN =SIMP(statut='f',typ='R'),
- PROJ_BORNES =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")),
- SELECTION =SIMP(statut='f',typ='TXM',defaut="NORM_INCR_DEPL", into=("RESIDU","ANGL_INCR_DEPL","NORM_INCR_DEPL") ),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma ,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- GROUP_NO =SIMP(statut='f',typ=grno ,validators=NoRepeat(),max='**'),
- NOM_CMP =SIMP(statut='f',typ='TXM',max='**'),
- ),
- CONVERGENCE =FACT(statut='d',
- regles=(PRESENT_ABSENT('RESI_REFE_RELA','RESI_GLOB_MAXI','RESI_GLOB_RELA'),),
- SIGM_REFE =SIMP(statut='f',typ='R'),
- EPSI_REFE =SIMP(statut='f',typ='R'),
- FLUX_THER_REFE =SIMP(statut='f',typ='R'),
- FLUX_HYD1_REFE =SIMP(statut='f',typ='R'),
- FLUX_HYD2_REFE =SIMP(statut='f',typ='R'),
- RESI_REFE_RELA =SIMP(statut='f',typ='R'),
- RESI_GLOB_MAXI =SIMP(statut='f',typ='R'),
- RESI_GLOB_RELA =SIMP(statut='f',typ='R'),
- ITER_GLOB_MAXI =SIMP(statut='f',typ='I',defaut=10),
- ITER_GLOB_ELAS =SIMP(statut='f',typ='I',defaut=25),
- ARRET =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON")),
- ),
- PARM_THETA =SIMP(statut='f',typ='R',defaut= 1. ),
- SOLVEUR =FACT(statut='d',
- METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC","MUMPS") ),
- b_mult_front =BLOC(condition = "METHODE == 'MULT_FRONT' ",fr="Paramètres de la méthode multi frontale",
- RENUM =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ),
- ),
- b_ldlt =BLOC(condition = "METHODE == 'LDLT' ",fr="Paramètres de la méthode LDLT",
- RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("RCMK","SANS") ),
- ),
- b_ldlt_mult =BLOC(condition = "METHODE == 'LDLT' or METHODE == 'MULT_FRONT' ",
- fr="Paramètres relatifs à la non inversibilité de la matrice à factorise",
- NPREC =SIMP(statut='f',typ='I',defaut= 8 ),
- STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON","DECOUPE") ),
- ),
- b_gcpc =BLOC(condition = "METHODE == 'GCPC' ", fr="Paramètres de la méthode du gradient conjugué",
- PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC",),defaut="LDLT_INC" ),
- NIVE_REMPLISSAGE=SIMP(statut='f',typ='I',defaut= 0 ),
- RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ),
- RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ),
- NMAX_ITER =SIMP(statut='f',typ='I',defaut= 0 ),
- ),
- b_mumps =BLOC(condition = "METHODE == 'MUMPS' ",fr="Paramètres de la méthode MUMPS",
- TYPE_RESOL =SIMP(statut='f',typ='TXM',defaut='AUTO',into=('NONSYM','SYMGEN','SYMDEF','AUTO')),
- PCENT_PIVOT =SIMP(statut='f',typ='I',defaut=20,),
- RESI_RELA =SIMP(statut='f',typ='R',defaut=-1.,),
- ),
- SYME =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
- ),
- ARCHIVAGE =FACT(statut='f',
- regles=(EXCLUS('PAS_ARCH','LIST_INST','INST'),
- EXCLUS('ARCH_ETAT_INIT','NUME_INIT'), ),
- LIST_INST =SIMP(statut='f',typ=(listr8_sdaster) ),
- INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ),
- PAS_ARCH =SIMP(statut='f',typ='I' ),
- PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3),
- ARCH_ETAT_INIT =SIMP(statut='f',typ='TXM',into=("OUI",)),
- NUME_INIT =SIMP(statut='f',typ='I'),
- DETR_NUME_SUIV =SIMP(statut='f',typ='TXM',into=("OUI",)),
- CHAM_EXCLU =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max='**',into=("DEPL","SIEF_ELGA","VARI_ELGA",
- "VARI_NON_LOCAL","LANL_ELGA")),
- ),
- OBSERVATION =FACT(statut='f',max='**',
- regles=(UN_PARMI('NOEUD','GROUP_NO','MAILLE'),
- PRESENT_PRESENT('MAILLE','POINT'),),
- NOM_CHAM =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max='**',into=("DEPL","VITE","ACCE","SIEF_ELGA",
- "VARI_ELGA","DEPL_ABSOLU","VITE_ABSOLU","ACCE_ABSOLU","VALE_CONT")),
- NOM_CMP =SIMP(statut='o',typ='TXM',max='**' ),
- LIST_ARCH =SIMP(statut='f',typ=listis_sdaster),
- LIST_INST =SIMP(statut='f',typ=listr8_sdaster),
- INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**' ),
- PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3 ),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
- PAS_OBSE =SIMP(statut='f',typ='I'),
- NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max='**'),
- GROUP_NO =SIMP(statut='f',typ=grno,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- POINT =SIMP(statut='f',typ='I' ,validators=NoRepeat(),max='**'),
- ),
-
- SUIVI_DDL = FACT(statut='f',max=4,
- regles=(UN_PARMI('NOEUD','MAILLE'),
- PRESENT_PRESENT('MAILLE','POINT'),),
- NUME_SUIVI =SIMP(statut='o',typ='I' ,min=1,max=4),
- NOM_CHAM =SIMP(statut='o',typ='TXM',validators=NoRepeat(),max=1,
- into=("DEPL","VITE","ACCE","SIEF_ELGA",
- "VARI_ELGA","FORC_NODA","DEPL_ABSOLU","VITE_ABSOLU","ACCE_ABSOLU",)),
- NOM_CMP =SIMP(statut='o',typ='TXM',max=1 ),
- NOEUD =SIMP(statut='f',typ=no ,validators=NoRepeat(),max=1),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max=1),
- POINT =SIMP(statut='f',typ='I' ,validators=NoRepeat(),max=1),
- ),
-
- AFFICHAGE = FACT(statut='f',max=16,
-
- UNITE = SIMP(statut='f',typ='I',val_min=1),
-
- LONG_R = SIMP(statut='f',typ='I',defaut=12,val_min=1,val_max=12),
- PREC_R = SIMP(statut='f',typ='I',defaut=5, val_min=1,val_max=8),
- LONG_I = SIMP(statut='f',typ='I',defaut=6, val_min=1,val_max=12),
-
- NOM_COLONNE = SIMP(statut='o',typ='TXM',defaut="STANDARD",
- into=("STANDARD","MINIMUM",
- "ITER_NEWT",
- "INCR_TPS",
- "RESI_RELA","RELA_NOEU",
- "RESI_MAXI","MAXI_NOEU",
- "RESI_REFE","REFE_NOEU",
- "RELI_ITER","RELI_COEF",
- "PILO_PARA",
- "LAGR_ECAR","LAGR_INCR","LAGR_ITER",
- "MATR_ASSE",
- "ITER_DEBO",
- "CTCD_ITER","CTCD_INFO","CTCD_GEOM","CTCD_NOEU",
- "CTCC_GEOM","CTCC_FROT","CTCC_CONT",
- "SUIV_1","SUIV_2","SUIV_3","SUIV_4",
- ),
- ),
- b_residu = BLOC(condition = " NOM_COLONNE == 'RESI_RELA' or \
- NOM_COLONNE == 'RESI_MAXI' or\
- NOM_COLONNE == 'RESI_REFE' or\
- NOM_COLONNE == 'CTCD_GEOM' or\
- NOM_COLONNE == 'STANDARD' ",
- INFO_RESIDU = SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON")),
- ),
- ),
-
-
-
- CRIT_FLAMB =FACT(statut='f',min=1,max=1,
- NB_FREQ =SIMP(statut='f',typ='I',max=1,defaut=3),
- CHAR_CRIT =SIMP(statut='f',typ='R',min=2,max=2,defaut=(-10.0,10),
- fr="Valeur des deux charges critiques délimitant la bande de recherche en HPP"),
- ),
- SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**',
- fr="Liste des paramètres de sensibilité",
- ang="List of sensitivity parameters"),
- SOLV_NON_LOCAL =FACT(statut='f',
- METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC","MUMPS") ),
- b_mult_front =BLOC(condition = "METHODE == 'MULT_FRONT' ",fr="Paramètres de la méthode multi frontale",
- RENUM =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ),
- ),
- b_ldlt =BLOC(condition = "METHODE == 'LDLT' ",fr="Paramètres de la méthode LDLT",
- RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("RCMK","SANS") ),
- ),
- b_ldlt_mult =BLOC(condition = "METHODE == 'LDLT' or METHODE == 'MULT_FRONT' ",
- fr="Paramètres relatifs à la non inversibilité de la matrice à factorise",
- NPREC =SIMP(statut='f',typ='I',defaut= 8 ),
- STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
- ),
- b_mumps =BLOC(condition = "METHODE == 'MUMPS' ",fr="Paramètres de la méthode MUMPS",
- TYPE_RESOL =SIMP(statut='f',typ='TXM',defaut='AUTO',into=('NONSYM','SYMGEN','SYMDEF','AUTO')),
- PCENT_PIVOT =SIMP(statut='f',typ='I',defaut=20,),
- RESI_RELA =SIMP(statut='f',typ='R',defaut=1.E-6,),
- ),
- b_gcpc =BLOC(condition = "METHODE == 'GCPC' ", fr="Paramètres de la méthode du gradient conjugué",
- PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC",),defaut="LDLT_INC" ),
- NIVE_REMPLISSAGE=SIMP(statut='f',typ='I',defaut= 0 ),
- RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ),
- NMAX_ITER =SIMP(statut='f',typ='I',defaut= 0 ),
- ),
- EPS =SIMP(statut='f',typ='R',defaut= 0.E+0 ),
- ),
- LAGR_NON_LOCAL =FACT(statut='f',
- ITER_DUAL_MAXI =SIMP(statut='f',typ='I',defaut= 50),
- RESI_DUAL_ABSO =SIMP(statut='o',typ='R'),
- RESI_PRIM_ABSO =SIMP(statut='o',typ='R'),
- R =SIMP(statut='f',typ='R',defaut= 1000.),
- ITER_PRIM_MAXI =SIMP(statut='f',typ='I',defaut= 10),
- ),
- INFO =SIMP(statut='f',typ='I',into=(1,2) ),
- TITRE =SIMP(statut='f',typ='TXM',max='**' ),
- )
-
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-
-# RESPONSABLE MCOURTOI M.COURTOIS
-
-from Macro.test_fichier_ops import test_fichier_ops
-
-TEST_FICHIER=MACRO(nom="TEST_FICHIER", op=test_fichier_ops,
- UIinfo={"groupes":("Impression",)},
- fr="Tester la non régression de fichiers produits par des commandes aster",
- UNITE =SIMP(statut='f',typ='I',defaut=8),
- FICHIER =SIMP(statut='o',typ='TXM',validators=LongStr(1,255)),
- NB_CHIFFRE =SIMP(statut='f',typ='I',defaut=6),
- EPSILON =SIMP(statut='f',typ='R',defaut=1.E-14),
- EXPR_IGNORE =SIMP(statut='f',typ='TXM',max='**',
- fr="Liste d'expressions régulières permettant d'ignorer certaines lignes"),
- VALE_K =SIMP(statut='o',typ='TXM' ),
- REFERENCE =SIMP(statut='f',typ='TXM',
- into=("ANALYTIQUE","SOURCE_EXTERNE","NON_REGRESSION","AUTRE_ASTER") ),
-
- b_version =BLOC(condition = "REFERENCE == 'NON_REGRESSION'",
- VERSION =SIMP(statut='f',typ='TXM' ),
- ),
-
- INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
-)
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE MCOURTOI M.COURTOIS
-TEST_FONCTION=PROC(nom="TEST_FONCTION",op= 135,
- fr="Extraction d'une valeur numérique ou d'un attribut de fonction pour comparaison à une valeur de référence",
- UIinfo={"groupes":("Impression",)},
- UNITE =SIMP(statut='f',typ='I',defaut=8),
- TEST_NOOK =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
- VALEUR =FACT(statut='f',max='**',
- fr="Tester la valeur d une fonction ou d une nappe",
- regles=(UN_PARMI('VALE_REFE','VALE_REFE_C', ),),
- FONCTION =SIMP(statut='o',typ=(fonction_sdaster,fonction_c,nappe_sdaster,formule) ),
- NOM_PARA =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=2),
- VALE_PARA =SIMP(statut='o',typ='R' ,validators=NoRepeat(),max=2),
- VALE_REFE =SIMP(statut='f',typ='R' ),
- VALE_REFE_C =SIMP(statut='f',typ='C' ),
- VALE_ABS =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
- CRITERE =SIMP(statut='f',typ='TXM',fr="Critère de comparaison avec la solution de référence",
- defaut="RELATIF",into=("RELATIF","ABSOLU") ),
- PRECISION =SIMP(statut='f',typ='R',fr="Ecart maximal autorisé avec la solution de référence",
- defaut= 1.E-3 ),
- REFERENCE =SIMP(statut='f',typ='TXM',
- into=("ANALYTIQUE","SOURCE_EXTERNE","NON_REGRESSION","AUTRE_ASTER") ),
- b_version = BLOC (condition = "REFERENCE == 'NON_REGRESSION'",
- VERSION =SIMP(statut='f',typ='TXM' ),
- ),
- ),
- ATTRIBUT =FACT(statut='f',max='**',
- fr="Tester la valeur d un attribut d une fonction ou d''une nappe",
- FONCTION =SIMP(statut='o',typ=(fonction_sdaster,fonction_c,nappe_sdaster,formule) ),
- PARA =SIMP(statut='f',typ='R' ),
- CRIT_PARA =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
- PREC_PARA =SIMP(statut='f',typ='R',defaut= 1.E-3 ),
- ATTR =SIMP(statut='o',typ='TXM',
- into=("NOM_PARA","NOM_RESU","PROL_DROITE","PROL_GAUCHE","INTERPOL",
- "PROL_GAUCHE_FONC","PROL_DROITE_FONC","INTERPOL_FONC","NOM_PARA_FONC") ),
- ATTR_REFE =SIMP(statut='o',typ='TXM' ),
- REFERENCE =SIMP(statut='f',typ='TXM',
- into=("ANALYTIQUE","SOURCE_EXTERNE","NON_REGRESSION","AUTRE_ASTER") ),
- b_version =BLOC(condition = "REFERENCE == 'NON_REGRESSION'",
- VERSION =SIMP(statut='f',typ='TXM' ),
- ),
- ),
- TABL_INTSP =FACT(statut='f',max='**',
- fr="Tester la valeur d une fonction contenue dans une table interspectrale",
- regles=(UN_PARMI('NUME_ORDRE_I','NOEUD_I'),),
- INTE_SPEC =SIMP(statut='o',typ=tabl_intsp ),
- NOEUD_I =SIMP(statut='f',typ=no),
- NUME_ORDRE_I =SIMP(statut='f',typ='I' ),
- b_nume_ordre_i = BLOC (condition = "NUME_ORDRE_I != None",
- NUME_ORDRE_J =SIMP(statut='o',typ='I' ),
- ),
- b_noeud_i = BLOC (condition = "NOEUD_I != None",
- NOEUD_J =SIMP(statut='o',typ=no),
- NOM_CMP_I =SIMP(statut='o',typ='TXM' ),
- NOM_CMP_J =SIMP(statut='o',typ='TXM' ),
- ),
- NUME_VITE_FLUI =SIMP(statut='f',typ='I' ),
- VALE_PARA =SIMP(statut='o',typ='R' ),
- VALE_REFE_C =SIMP(statut='o',typ='C' ),
- CRITERE =SIMP(statut='f',typ='TXM',fr="Critère de comparaison avec la solution de référence",
- defaut="RELATIF",into=("RELATIF","ABSOLU") ),
- PRECISION =SIMP(statut='f',typ='R',fr="Ecart maximal autorisé avec la solution de référence",
- defaut= 1.E-3 ),
- REFERENCE =SIMP(statut='f',typ='TXM',
- into=("ANALYTIQUE","SOURCE_EXTERNE","NON_REGRESSION","AUTRE_ASTER") ),
- b_version =BLOC(condition = "REFERENCE == 'NON_REGRESSION'",
- VERSION =SIMP(statut='f',typ='TXM' ),
- ),
- ),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# RESPONSABLE VABHHTS J.PELLET
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-#
-#
-# ======================================================================
-TEST_RESU=PROC(nom="TEST_RESU",op=23,
- UIinfo={"groupes":("Impression",)},
- fr="Extraction d'une valeur d'une structure de donnée et comparaison à une valeur de référence",
- regles=(AU_MOINS_UN('CHAM_NO','CHAM_ELEM','RESU','GENE','OBJET')),
- UNITE =SIMP(statut='f',typ='I',defaut=8),
-
- CHAM_NO =FACT(statut='f',max='**',
- regles=(UN_PARMI('NOEUD','GROUP_NO','TYPE_TEST'),
- EXCLUS('NOEUD','GROUP_NO'),
- PRESENT_PRESENT('NOEUD','NOM_CMP'),
- PRESENT_PRESENT( 'GROUP_NO','NOM_CMP'),
- UN_PARMI('VALE','VALE_I','VALE_C'),),
- CHAM_GD =SIMP(statut='o',typ=cham_no_sdaster),
- NOEUD =SIMP(statut='f',typ=no ),
- GROUP_NO =SIMP(statut='f',typ=grno ),
- NOM_CMP =SIMP(statut='f',typ='TXM'),
- TYPE_TEST =SIMP(statut='f',typ='TXM',into=("SOMM_ABS","SOMM","MAX","MIN")),
- VALE =SIMP(statut='f',typ='R'),
- VALE_I =SIMP(statut='f',typ='I'),
- VALE_C =SIMP(statut='f',typ='C'),
- VALE_ABS =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")),
- PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3),
- REFERENCE =SIMP(statut='f',typ='TXM',into=("ANALYTIQUE","SOURCE_EXTERNE",
- "NON_REGRESSION","AUTRE_ASTER")),
- VERSION =SIMP(statut='f',typ='TXM'),
- ),
-
- CHAM_ELEM =FACT(statut='f',max='**',
- regles=(UN_PARMI('MAILLE','TYPE_TEST',),
- EXCLUS('NOEUD','GROUP_NO','POINT'),
- PRESENT_PRESENT('NOEUD','NOM_CMP'),
- PRESENT_PRESENT('GROUP_NO','NOM_CMP'),
- PRESENT_PRESENT('POINT','NOM_CMP'),
- UN_PARMI('VALE','VALE_I','VALE_C'), ),
- CHAM_GD =SIMP(statut='o',typ=cham_elem_sdaster),
- MAILLE =SIMP(statut='f',typ=ma),
- POINT =SIMP(statut='f',typ='I' ),
- SOUS_POINT =SIMP(statut='f',typ='I'),
- NOEUD =SIMP(statut='f',typ=no),
- GROUP_NO =SIMP(statut='f',typ=grno),
- NOM_CMP =SIMP(statut='f',typ='TXM',max='**'),
- TYPE_TEST =SIMP(statut='f',typ='TXM',into=("SOMM_ABS","SOMM","MAX","MIN") ),
- VALE =SIMP(statut='f',typ='R' ),
- VALE_I =SIMP(statut='f',typ='I' ),
- VALE_C =SIMP(statut='f',typ='C' ),
- VALE_ABS =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")),
- PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3 ),
- REFERENCE =SIMP(statut='f',typ='TXM',into=("ANALYTIQUE","SOURCE_EXTERNE",
- "NON_REGRESSION","AUTRE_ASTER") ),
- VERSION =SIMP(statut='f',typ='TXM' ),
- ),
-
- RESU =FACT(statut='f',max='**',
- regles=(UN_PARMI('NUME_ORDRE','INST','FREQ','NUME_MODE','NOEUD_CMP','NOM_CAS','ANGL'),
- UN_PARMI('NOM_CHAM','PARA'),
- PRESENT_ABSENT('PARA','NOEUD','GROUP_NO','POINT','NOM_CMP','TYPE_TEST'),
- PRESENT_PRESENT('NOM_CMP','NOM_CHAM'),
- EXCLUS('NOEUD','GROUP_NO','POINT','TYPE_TEST'),
- PRESENT_PRESENT('NOEUD','NOM_CMP'),
- PRESENT_PRESENT('GROUP_NO','NOM_CMP'),
- PRESENT_PRESENT('POINT','NOM_CMP'),
- UN_PARMI('VALE','VALE_I','VALE_C') ,),
- RESULTAT =SIMP(statut='o',typ=resultat_sdaster),
- SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),
- fr="Paramètre de sensibilité.",
- ang="Sensitivity parameter"),
- NUME_ORDRE =SIMP(statut='f',typ='I'),
- INST =SIMP(statut='f',typ='R'),
- FREQ =SIMP(statut='f',typ='R'),
- NUME_MODE =SIMP(statut='f',typ='I'),
- NOEUD_CMP =SIMP(statut='f',typ='TXM',min=2,max=2),
- NOM_CAS =SIMP(statut='f',typ='TXM'),
- ANGL =SIMP(statut='f',typ='R'),
- PARA =SIMP(statut='f',typ='TXM'),
- NOM_CHAM =SIMP(statut='f',typ='TXM',into=C_NOM_CHAM_INTO()),
- NOM_CMP =SIMP(statut='f',typ='TXM',max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,max='**'),
- NOEUD =SIMP(statut='f',typ=no ,max='**'),
- GROUP_NO =SIMP(statut='f',typ=grno ,max='**'),
- POINT =SIMP(statut='f',typ='I'),
- SOUS_POINT =SIMP(statut='f',typ='I'),
- TYPE_TEST =SIMP(statut='f',typ='TXM',into=("SOMM_ABS","SOMM","MAX","MIN")),
- VALE =SIMP(statut='f',typ='R'),
- VALE_I =SIMP(statut='f',typ='I'),
- VALE_C =SIMP(statut='f',typ='C'),
- VALE_ABS =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
- CRITERE =SIMP(statut='f',typ='TXM',into=("RELATIF","ABSOLU"),max=2),
- PRECISION =SIMP(statut='f',typ='R',max=2),
- REFERENCE =SIMP(statut='f',typ='TXM',into=("ANALYTIQUE","SOURCE_EXTERNE",
- "NON_REGRESSION","AUTRE_ASTER",) ),
- VERSION =SIMP(statut='f',typ='TXM' ),
- ),
-
- GENE =FACT(statut='f',max='**',
- regles=(UN_PARMI('VALE','VALE_I','VALE_C') ,),
- RESU_GENE =SIMP(statut='o',typ=(vect_asse_gene_r, tran_gene, mode_gene, harm_gene)),
- b_vect_asse =BLOC(condition = "AsType(RESU_GENE) == vect_asse_gene_r",
- NUME_CMP_GENE =SIMP(statut='o',typ='I'),
- ),
- b_mode =BLOC(condition = "(AsType(RESU_GENE) == harm_gene) or (AsType(RESU_GENE) == mode_gene)",
- regles=(UN_PARMI('NUME_ORDRE','FREQ','NUME_MODE'),
- UN_PARMI('NOM_CHAM','PARA'),
- PRESENT_PRESENT('NOM_CHAM','NUME_CMP_GENE'),),
- NOM_CHAM =SIMP(statut='f',typ='TXM',into=C_NOM_CHAM_INTO()),
- NUME_CMP_GENE =SIMP(statut='f',typ='I'),
- PARA =SIMP(statut='f',typ='TXM'),
- NUME_ORDRE =SIMP(statut='f',typ='I'),
- NUME_MODE =SIMP(statut='f',typ='I'),
- FREQ =SIMP(statut='f',typ='R'),
- ),
- b_tran =BLOC(condition = "AsType(RESU_GENE) == tran_gene",
- regles=(UN_PARMI('NUME_ORDRE','INST') ,),
- NOM_CHAM =SIMP(statut='o',typ='TXM',into=C_NOM_CHAM_INTO()),
- NUME_CMP_GENE =SIMP(statut='o',typ='I'),
- NUME_ORDRE =SIMP(statut='f',typ='I'),
- INST =SIMP(statut='f',typ='R'),
- ),
- VALE =SIMP(statut='f',typ='R'),
- VALE_I =SIMP(statut='f',typ='I'),
- VALE_C =SIMP(statut='f',typ='C'),
- VALE_ABS =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
- CRITERE =SIMP(statut='f',typ='TXM',into=("RELATIF","ABSOLU"),max=2),
- PRECISION =SIMP(statut='f',typ='R',max=2),
- REFERENCE =SIMP(statut='f',typ='TXM',into=("ANALYTIQUE","SOURCE_EXTERNE",
- "NON_REGRESSION","AUTRE_ASTER",) ),
- VERSION =SIMP(statut='f',typ='TXM' ),
- ),
-
- OBJET =FACT(statut='f',max='**',
- regles=(UN_PARMI('S_I','S_R','RESUME',),
- UN_PARMI('VALE','VALE_I','VALE_C','RESUME','S_R','S_I'),),
- NOM =SIMP(statut='o',typ='TXM'),
- S_R =SIMP(statut='f',typ='R'),
- S_I =SIMP(statut='f',typ='I'),
- RESUME =SIMP(statut='f',typ='I'),
- VALE =SIMP(statut='f',typ='R'),
- VALE_I =SIMP(statut='f',typ='I'),
- VALE_C =SIMP(statut='f',typ='C'),
- VALE_ABS =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU")),
- PRECISION =SIMP(statut='f',typ='R',defaut=1.0E-3 ),
- REFERENCE =SIMP(statut='f',typ='TXM',into=("ANALYTIQUE","SOURCE_EXTERNE",
- "NON_REGRESSION","AUTRE_ASTER",) ),
- VERSION =SIMP(statut='f',typ='TXM' ),
- ),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-# RESPONSABLE VABHHTS J.PELLET
-TEST_TABLE=PROC(nom="TEST_TABLE",op= 177,
- UIinfo={"groupes":("Impression",)},
- fr="Tester une cellule ou une colonne d'une table",
- regles=(UN_PARMI('VALE','VALE_I','VALE_C', ),),
- UNITE =SIMP(statut='f',typ='I',defaut=8),
-# concept table_sdaster à tester
- TABLE =SIMP(statut='o',typ=table_sdaster),
-
- SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),
- fr="Paramètre de sensibilité.",
- ang="Sensitivity parameter"),
- FILTRE =FACT(statut='f',max='**',
- NOM_PARA =SIMP(statut='o',typ='TXM' ),
- CRIT_COMP =SIMP(statut='f',typ='TXM',defaut="EQ",
- into=("EQ","LT","GT","NE","LE","GE","VIDE",
- "NON_VIDE","MAXI","ABS_MAXI","MINI","ABS_MINI") ),
- b_vale =BLOC(condition = "(CRIT_COMP in ('EQ','NE','GT','LT','GE','LE'))",
- regles=(UN_PARMI('VALE','VALE_I','VALE_K','VALE_C',),),
- VALE =SIMP(statut='f',typ='R' ),
- VALE_I =SIMP(statut='f',typ='I' ),
- VALE_C =SIMP(statut='f',typ='C' ),
- VALE_K =SIMP(statut='f',typ='TXM' ),),
-
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
- PRECISION =SIMP(statut='f',typ='R',defaut= 1.E-3 ),
- ),
- TYPE_TEST =SIMP(statut='f',typ='TXM',into=("SOMM_ABS","SOMM","MAX","MIN") ),
- NOM_PARA =SIMP(statut='o',typ='TXM' ),
- VALE =SIMP(statut='f',typ='R' ),
- VALE_I =SIMP(statut='f',typ='I' ),
- VALE_C =SIMP(statut='f',typ='C' ),
- VALE_ABS =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU") ),
- PRECISION =SIMP(statut='f',typ='R',defaut= 1.2E-3 ),
- REFERENCE =SIMP(statut='f',typ='TXM',
- into=("ANALYTIQUE","SOURCE_EXTERNE","NON_REGRESSION","AUTRE_ASTER") ),
- b_version =BLOC(condition = "REFERENCE == 'NON_REGRESSION'",
- VERSION =SIMP(statut='f',typ='TXM' ),
- INFO =SIMP(statut='f',typ='I',defaut=1,into=(1,2) ),
- ),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-THER_LINEAIRE=OPER(nom="THER_LINEAIRE",op=25,sd_prod=evol_ther,reentrant='f',
- UIinfo={"groupes":("Résolution",)},
- fr="Résoudre un problème thermique linéaire stationnaire ou transitoire",
- MODELE =SIMP(statut='o',typ=modele_sdaster),
- CHAM_MATER =SIMP(statut='o',typ=cham_mater),
- CARA_ELEM =SIMP(statut='f',typ=cara_elem),
- EXCIT =FACT(statut='o',max='**',
- CHARGE =SIMP(statut='o',typ=(char_ther,char_cine_ther)),
- FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- ),
- INCREMENT =FACT(statut='f',
- LIST_INST =SIMP(statut='o',typ=listr8_sdaster ),
- NUME_INIT =SIMP(statut='f',typ='I'),
- NUME_FIN =SIMP(statut='f',typ='I'),
- ),
- TEMP_INIT =FACT(statut='f',
- regles=(EXCLUS('STATIONNAIRE','EVOL_THER','CHAM_NO','VALE'),),
- STATIONNAIRE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- EVOL_THER =SIMP(statut='f',typ=evol_ther),
- CHAM_NO =SIMP(statut='f',typ=cham_no_temp_r),
- VALE =SIMP(statut='f',typ='R'),
- NUME_INIT =SIMP(statut='f',typ='I'),
- ),
- SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**',
- fr="Liste des paramètres de sensibilité.",
- ang="List of sensitivity parameters",
- ),
- SENS_INIT =FACT(statut='f',
- regles=(EXCLUS('STATIONNAIRE','EVOL_THER', ),),
- STATIONNAIRE =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- EVOL_THER =SIMP(statut='f',typ=evol_ther),
- NUME_INIT =SIMP(statut='f',typ='I'),
- ),
- SOLVEUR =FACT(statut='d',
- METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC","MUMPS") ),
- b_mult_front =BLOC(condition = "METHODE == 'MULT_FRONT' ",fr="Paramètres de la méthode multi frontale",
- RENUM =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ),
- ),
- b_ldlt =BLOC(condition = "METHODE == 'LDLT' ",fr="Paramètres de la méthode LDLT",
- RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("RCMK","SANS") ),
- ),
- b_ldlt_mult =BLOC(condition = "METHODE == 'LDLT' or METHODE == 'MULT_FRONT' ",
- fr="Paramètres relatifs à la non inversibilité de la matrice à factorise",
- NPREC =SIMP(statut='f',typ='I',defaut= 8 ),
- STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
- ),
- b_gcpc =BLOC(condition = "METHODE == 'GCPC' ", fr="Paramètres de la méthode du gradient conjugué",
- PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC",),defaut="LDLT_INC" ),
- NIVE_REMPLISSAGE=SIMP(statut='f',typ='I',defaut= 0 ),
- RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ),
- RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ),
- NMAX_ITER =SIMP(statut='f',typ='I',defaut= 0 ),
- ),
- b_mumps =BLOC(condition = "METHODE == 'MUMPS' ",fr="Paramètres de la méthode MUMPS",
- TYPE_RESOL =SIMP(statut='f',typ='TXM',defaut='AUTO',into=('NONSYM','SYMGEN','SYMDEF','AUTO')),
- PCENT_PIVOT =SIMP(statut='f',typ='I',defaut=20,),
- RESI_RELA =SIMP(statut='f',typ='R',defaut=1.E-6,),
- ),
- ),
- PARM_THETA =SIMP(statut='f',typ='R',defaut= 0.57),
- ARCHIVAGE =FACT(statut='f',
- regles=(UN_PARMI('LIST_ARCH','PAS_ARCH','LIST_INST','INST'),),
- LIST_ARCH =SIMP(statut='f',typ=listis_sdaster),
- LIST_INST =SIMP(statut='f',typ=listr8_sdaster),
- INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
- PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3 ),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",
- into=("RELATIF","ABSOLU")),
- PAS_ARCH =SIMP(statut='f',typ='I'),
- CHAM_EXCLU =SIMP(statut='f',typ='TXM',into=("VARI",)),
- ),
- TITRE =SIMP(statut='f',typ='TXM',max='**'),
- INFO =SIMP(statut='f',typ='I',into=(1,2)),
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-THER_NON_LINE=OPER(nom="THER_NON_LINE",op= 186,sd_prod=evol_ther,reentrant='f',
- UIinfo={"groupes":("Résolution",)},
- fr="Résoudre un problème thermique non linéaire (conditions limites ou comportement matériau)"
- +" stationnaire ou transitoire" ,
- MODELE =SIMP(statut='o',typ=(modele_sdaster) ),
- CHAM_MATER =SIMP(statut='o',typ=(cham_mater) ),
- CARA_ELEM =SIMP(statut='c',typ=(cara_elem) ),
- COMP_THER_NL =FACT(statut='d',max='**',
- RELATION =SIMP(statut='f',typ='TXM',defaut="THER_NL",
- into=("THER_NL",
- "THER_HYDR",
- "SECH_GRANGER",
- "SECH_MENSI",
- "SECH_BAZANT",
- "SECH_NAPPE"
- ) ),
- regles=(PRESENT_ABSENT('TOUT','GROUP_MA','MAILLE'),),
- TOUT =SIMP(statut='f',typ='TXM',into=("OUI",) ),
- GROUP_MA =SIMP(statut='f',typ=grma,validators=NoRepeat(),max='**'),
- MAILLE =SIMP(statut='f',typ=ma ,validators=NoRepeat(),max='**'),
- ),
- EVOL_THER_SECH =SIMP(statut='f',typ=evol_ther),
- EXCIT =FACT(statut='o',max='**',
- CHARGE =SIMP(statut='o',typ=char_ther),
- FONC_MULT =SIMP(statut='f',typ=(fonction_sdaster,nappe_sdaster,formule)),
- ),
- INCREMENT =FACT(statut='f',
- LIST_INST =SIMP(statut='o',typ=listr8_sdaster),
- NUME_INIT =SIMP(statut='f',typ='I'),
- NUME_FIN =SIMP(statut='f',typ='I'),
- ),
- TEMP_INIT =FACT(statut='f',
- regles=(EXCLUS('STATIONNAIRE','EVOL_THER','CHAM_NO','VALE'),),
- STATIONNAIRE =SIMP(statut='f',typ='TXM',into=("OUI",)),
- EVOL_THER =SIMP(statut='f',typ=evol_ther),
- CHAM_NO =SIMP(statut='f',typ=cham_no_temp_r),
- VALE =SIMP(statut='f',typ='R'),
- NUME_INIT =SIMP(statut='f',typ='I'),
- ),
- NEWTON =FACT(statut='d',
- REAC_ITER =SIMP(statut='f',typ='I',defaut= 0 ),
- RESI_LINE_RELA =SIMP(statut='f',typ='R',defaut= 1.0E-3 ),
- ITER_LINE_MAXI =SIMP(statut='f',typ='I',defaut= 0 ),
- ),
- CONVERGENCE =FACT(statut='d',
- RESI_GLOB_MAXI =SIMP(statut='f',typ='R'),
- RESI_GLOB_RELA =SIMP(statut='f',typ='R'),
- ITER_GLOB_MAXI =SIMP(statut='f',typ='I',defaut= 10 ),
- ),
- SENSIBILITE =SIMP(statut='f',typ=(para_sensi,theta_geom),validators=NoRepeat(),max='**',
- fr="Liste des paramètres de sensibilité.",
- ang="List of sensitivity parameters",
- ),
- SOLVEUR =FACT(statut='d',
- METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC","MUMPS") ),
- b_mult_front =BLOC(condition = "METHODE == 'MULT_FRONT' ",fr="Parametres de la méthode multi frontale",
- RENUM =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ),
- ),
- b_ldlt =BLOC(condition = "METHODE == 'LDLT' ",fr="Parametres de la méthode LDLT",
- RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("RCMK","SANS") ),
- ),
- b_ldlt_mult =BLOC(condition = "METHODE == 'LDLT' or METHODE == 'MULT_FRONT' ",
- fr="Parametres relatifs a la non inversibilité de la matrice a factorise",
- NPREC =SIMP(statut='f',typ='I',defaut= 8 ),
- STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
- ),
- b_gcpc =BLOC(condition = "METHODE == 'GCPC' ", fr="Parametres de la méthode du gradient conjugué",
- PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC",),defaut="LDLT_INC" ),
- NIVE_REMPLISSAGE=SIMP(statut='f',typ='I' ,defaut= 0 ),
- RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ),
- RESI_RELA =SIMP(statut='f',typ='R' ,defaut= 1.E-6 ),
- NMAX_ITER =SIMP(statut='f',typ='I' ,defaut= 0 ),
- ),
- b_mumps =BLOC(condition = "METHODE == 'MUMPS' ",fr="Paramètres de la méthode MUMPS",
- TYPE_RESOL =SIMP(statut='f',typ='TXM',defaut='AUTO',into=('NONSYM','SYMGEN','SYMDEF','AUTO')),
- PCENT_PIVOT =SIMP(statut='f',typ='I',defaut=20,),
- RESI_RELA =SIMP(statut='f',typ='R',defaut=-1.,),
- ),
- SYME =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON",) ),
- ),
- PARM_THETA =SIMP(statut='f',typ='R',defaut= 0.57 ),
- ARCHIVAGE =FACT(statut='f',
- regles=(UN_PARMI('LIST_ARCH','PAS_ARCH','LIST_INST','INST', ),),
- LIST_ARCH =SIMP(statut='f',typ=(listis_sdaster) ),
- LIST_INST =SIMP(statut='f',typ=(listr8_sdaster) ),
- INST =SIMP(statut='f',typ='R',validators=NoRepeat(),max='**'),
- PRECISION =SIMP(statut='f',typ='R',defaut= 1.0E-3 ),
- CRITERE =SIMP(statut='f',typ='TXM',defaut="RELATIF",into=("RELATIF","ABSOLU",) ),
- PAS_ARCH =SIMP(statut='f',typ='I'),
- CHAM_EXCLU =SIMP(statut='f',typ='TXM',into=("VARI",)),
- ),
- TITRE =SIMP(statut='f',typ='TXM',max='**'),
- OPTION =SIMP(statut='f',typ='TXM',validators=NoRepeat(),max=2,
- into=("FLUX_ELGA_TEMP","FLUX_ELNO_TEMP") ),
- INFO =SIMP(statut='f',typ='I',into=(1,2) ),
-
-) ;
-#& MODIF COMMANDE DATE 22/06/2005 AUTEUR REZETTE C.REZETTE
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-# ======================================================================
-THER_NON_LINE_MO=OPER(nom="THER_NON_LINE_MO",op= 171,sd_prod=evol_ther,
- fr="Résoudre un problème thermique non linéaire (conditions limites ou comportement matériau)"
- +" stationnaire avec chargement mobile",
- reentrant='n',
- UIinfo={"groupes":("Résolution",)},
- MODELE =SIMP(statut='o',typ=modele_sdaster ),
- CHAM_MATER =SIMP(statut='o',typ=cham_mater ),
- CARA_ELEM =SIMP(statut='c',typ=cara_elem ),
- EXCIT =FACT(statut='o',max='**',
- CHARGE =SIMP(statut='o',typ=char_ther ),
- FONC_MULT =SIMP(statut='c',typ=(fonction_sdaster,nappe_sdaster,formule) ),
- ),
- TEMP_INIT =FACT(statut='f',
- EVOL_THER =SIMP(statut='f',typ=evol_ther ),
- NUME_INIT =SIMP(statut='f',typ='I',defaut= 0 ),
- ),
- CONVERGENCE =FACT(statut='d',
- CRIT_TEMP_RELA =SIMP(statut='f',typ='R',defaut= 1.E-3 ),
- CRIT_ENTH_RELA =SIMP(statut='f',typ='R',defaut= 1.E-2 ),
- ITER_GLOB_MAXI =SIMP(statut='f',typ='I',defaut= 10 ),
- ARRET =SIMP(statut='c',typ='TXM',defaut="OUI",into=("OUI","NON") ),
- ),
- SOLVEUR =FACT(statut='d',
- METHODE =SIMP(statut='f',typ='TXM',defaut="MULT_FRONT",into=("MULT_FRONT","LDLT","GCPC") ),
- b_mult_front =BLOC(condition = "METHODE == 'MULT_FRONT' ",fr="Paramètres de la méthode multi frontale",
- RENUM =SIMP(statut='f',typ='TXM',defaut="METIS",into=("MD","MDA","METIS") ),
- ),
- b_ldlt =BLOC(condition = "METHODE == 'LDLT' ",fr="Paramètres de la méthode LDLT",
- RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("RCMK","SANS") ),
- ),
- b_ldlt_mult =BLOC(condition = "METHODE == 'LDLT' or METHODE == 'MULT_FRONT' ",
- fr="Paramètres relatifs à la non inversibilité de la matrice à factorise",
- NPREC =SIMP(statut='f',typ='I',defaut= 8 ),
- STOP_SINGULIER =SIMP(statut='f',typ='TXM',defaut="OUI",into=("OUI","NON") ),
- ),
- b_gcpc =BLOC(condition = "METHODE == 'GCPC' ", fr="Paramètres de la méthode du gradient conjugué",
- PRE_COND =SIMP(statut='f',typ='TXM',into=("LDLT_INC",),defaut="LDLT_INC" ),
- NIVE_REMPLISSAGE=SIMP(statut='f',typ='I',defaut= 0 ),
- RENUM =SIMP(statut='f',typ='TXM',defaut="RCMK",into=("SANS","RCMK") ),
- RESI_RELA =SIMP(statut='f',typ='R',defaut= 1.E-6 ),
- NMAX_ITER =SIMP(statut='f',typ='I',defaut= 0 ),
- ),
- SYME =SIMP(statut='f',typ='TXM',defaut="NON",into=("OUI","NON") ),
- ),
- TITRE =SIMP(statut='f',typ='TXM',max='**' ),
- INFO =SIMP(statut='f',typ='I',into=(1,2) ),
-) ;
-
-
-
--- /dev/null
+AFFE_CARA_ELEM:U4.42.01-h
+AFFE_CHAR_ACOU:U4.44.04-g
+AFFE_CHAR_CINE_F:U4.44.03-g
+AFFE_CHAR_CINE:U4.44.03-g
+AFFE_CHAR_MECA:U4.44.01-h
+AFFE_CHAR_MECA_F:U4.44.01-h
+AFFE_CHAR_MECA_C:U4.44.05-e
+AFFE_CHAR_THER_F:U4.44.02-h
+AFFE_CHAR_THER:U4.44.02-h
+AFFE_MATERIAU:U4.43.03-h
+AFFE_MODELE:U4.41.01-h
+AIDE:U4.02.01-h
+ASSE_MAILLAGE:U4.23.03-g
+ASSE_MATRICE:U4.61.22-h
+ASSE_MATR_GENE:U4.65.04-f
+ASSE_VECTEUR:U4.61.23-h
+ASSE_VECT_GENE:U4.65.05-f
+CALC_AMOR_MODAL:U4.52.13-f
+CALC_CHAM_ELEM:U4.81.03-h
+CALC_CHAR_CINE:U4.61.03-g
+CALC_CHAR_SEISME:U4.63.01-g
+CALC_ELEM:U4.81.01-h
+CALC_FATIGUE:U4.83.02-e
+CALC_FLUI_STRU:U4.66.02-f
+CALC_FONCTION:U4.32.04-h
+CALC_FONC_INTERP:U4.32.01-f
+CALC_FORC_AJOU:U4.66.03-b
+CALC_G_LOCAL_T:U4.82.04-g
+CALC_G_THETA_T:U4.82.03-g
+CALC_INTE_SPEC:U4.36.03-g
+CALC_MATR_AJOU:U4.66.01-e
+CALC_MATR_ELEM:U4.61.01-h
+CALC_META:U4.85.01-c
+CALC_NO:U4.81.02-g
+CALC_PRECONT:U4.42.05-a
+CALC_THETA:U4.82.02-f
+CALC_VECT_ELEM:U4.61.02-h
+COMB_CHAM_ELEM:U4.72.03-g
+COMB_CHAM_NO:U4.72.02-h
+COMB_FOURIER:U4.83.31-e
+COMB_MATR_ASSE:U4.72.01-h
+COMB_SISM_MODAL:U4.84.01-f
+COMP_INCR:U4.51.11-a
+CREA_CHAMP:U4.72.04-c
+CREA_MAILLAGE:U4.23.02-e
+CREA_RESU:U4.44.12-f
+CREA_TABLE:U4.33.02-a
+DEBUT:U4.11.01-h
+DEFI_BASE_MODALE:U4.64.02-g
+DEFI_CABLE_BP:U4.42.04-c
+DEFI_COMPOR:U4.43.06-a
+DEFI_CONSTANTE:U4.31.01-h
+DEFI_COQU_MULT:U4.42.03-g
+DEFI_FICHIER:U4.12.03-a
+DEFI_FISS_XFEM:U4.82.08-a
+DEFI_FLUI_STRU:U4.25.01-f
+DEFI_FONCTION:U4.31.02-h
+DEFI_FONC_ELEC:U4.mk.10-g
+DEFI_FONC_FLUI:U4.35.01-e
+DEFI_FOND_FISS:U4.82.01-g
+DEFI_GROUP:U4.22.01-g
+DEFI_INTERF_DYNA:U4.64.01-g
+DEFI_INTE_SPEC:U4.36.02-g
+DEFI_LIST_ENTI:U4.34.02-h
+DEFI_LIST_REEL:U4.34.01-h
+DEFI_MAILLAGE:U4.23.01-g
+DEFI_MATERIAU:U4.43.01-h
+DEFI_MODELE_GENE:U4.65.02-f
+DEFI_NAPPE:U4.31.03-h
+DEFI_OBSTACLE:U4.44.21-g
+DEFI_PARA_SENSI:U4.31.06-b
+DEFI_SPEC_TURB:U4.44.31-e
+DEFI_SQUELETTE:U4.24.01-h
+DEFI_TEXTURE:U4.43.05-c
+DEFI_THER_JOULE:U4.mk.20-f
+DEFI_TRC:U4.43.04-g
+DEPL_INTERNE:U4.62.02-g
+DETRUIRE:U4.14.01-f
+DIST_LIGN_3D:U4.mk.30-f
+DYNA_ALEA_MODAL:U4.53.22-g
+DYNA_LINE_HARM:U4.53.11-g
+DYNA_LINE_TRAN:U4.53.02-h
+DYNA_NON_LINE:U4.53.01-g
+DYNA_SPEC_MODAL:U4.53.23-e
+DYNA_TRAN_EXPLI:U4.53.03-a
+DYNA_TRAN_MODAL:U4.53.21-g
+ENGENDRE_TEST:U4.92.11-d
+EXEC_LOGICIEL:U7.00.01-c
+EXTR_MODE:U4.52.12-e
+EXTR_RESU:U4.71.04-d
+EXTR_TABLE:U4.71.05-a
+FACT_GRAD:U4.55.03-g
+FACT_LDLT:U4.55.01-h
+FIN:U4.11.02-h
+FONC_FLUI_STRU:U4.35.02-e
+FORMULE:U4.31.05-f
+GENE_FONC_ALEA:U4.36.05-g
+GENE_MATR_ALEA:U4.36.06-b
+GENE_VARI_ALEA:U4.36.07-b
+IMPR_CLASSI:U7.04.21-c
+IMPR_CO:U4.91.11-h
+IMPR_COURBE:U4.33.01-e
+IMPR_FICO_HOMA:U7.04.01-c
+IMPR_FONCTION:U4.33.01-f
+IMPR_GENE:U4.91.02-e
+IMPR_JEVEUX:U4.91.21-h
+IMPR_MACR_ELEM:U7.04.33-e
+IMPR_MATRICE:U7.04.32-e
+IMPR_MISS_3D:U7.04.11-e
+IMPR_OAR:U7.04.51-a
+IMPR_RESU:U4.91.01-h
+IMPR_STURM:U4.52.01-h
+IMPR_TABLE:U4.91.03-e
+INCLUDE:U4.13.01-g
+INCLUDE_MATERIAU:U4.43.02-c
+INFO_EXEC_ASTER:U4.13.04-a
+INTE_MAIL_2D:U4.81.11-g
+INTE_MAIL_3D:U4.81.12-g
+LIRE_CHAMP:U7.02.02-c
+LIRE_FONCTION:U4.32.02-g
+LIRE_INTE_SPEC:U4.36.01-g
+LIRE_MAILLAGE:U4.21.01-h
+LIRE_MISS_3D:U7.02.31-e
+LIRE_PLEXUS:U7.02.11-c
+LIRE_RESU:U7.02.01-e
+LIRE_TABLE:U7.02.03-b
+MACRO_CARA_POUTRE:U4.42.02-d
+MACRO_ELAS_MULT:U4.51.02-e
+MACRO_MATR_AJOU:U4.66.11-d
+MACRO_MATR_ASSE:U4.61.21-e
+MACRO_MISS_3D:U7.03.11-c
+MACRO_MODE_MECA:U4.52.02-e
+MACRO_PROJ_BASE:U4.63.11-e
+MACR_ADAP_MAIL:U7.03.01-c
+MACR_ASCOUF_CALC:U4.cf.20-c
+MACR_ASCOUF_MAIL:U4.cf.10-c
+MACR_ASPIC_CALC:U4.pc.20-c
+MACR_ASPIC_MAIL:U4.pc.10-c
+MACR_CABRI_CALC:U4.cb.20-a
+MACR_CABRI_MAIL:U4.cb.10-a
+MACR_CARA_POUTRE:U4.42.02-e
+MACR_ECLA_PG:U4.44.14-a
+MACR_ELEM_DYNA:U4.65.01-f
+MACR_ELEM_STAT:U4.62.01-g
+MACR_FIABILITE:U7.03.31-a
+MACR_FIAB_IMPR:U7.04.41-a
+MACR_INFO_MAIL:U7.03.02-c
+MACR_LIGN_COUPE:U4.81.13-b
+MACR_RECAL:U4.73.02-b
+MAJ_CATA:U4.15.01-f
+MECA_STATIQUE:U4.51.01-h
+MEMO_NOM_SENSI:U4.31.07-b
+MODE_ITER_CYCL:U4.52.05-g
+MODE_ITER_INV:U4.52.04-h
+MODE_ITER_SIMULT:U4.52.03-g
+MODE_STATIQUE:U4.52.14-g
+MODI_BASE_MODALE:U4.66.21-e
+MODI_MAILLAGE:U4.23.04-e
+MODI_MODELE_XFEM:U4.41.11-a
+MODI_OBSTACLE:U4.44.22-c
+MODI_REPERE:U4.74.01-b
+NORM_MODE:U4.52.11-g
+NUME_DDL:U4.61.11-h
+NUME_DDL_GENE:U4.65.03-f
+POST_DYNA_ALEA:U4.84.04-f
+POST_DYNA_MODA_T:U4.84.02-f
+POST_ELEM:U4.81.22-f
+POST_FATIGUE:U4.83.01-e
+POST_FATI_ALEA:U4.84.03-e
+POST_K1_K2_K3:U4.82.05-c
+POST_K_BETA:U4.82.07-b
+POST_RCCM:U4.83.11-e
+POST_RELEVE_T:U4.81.21-f
+POST_USURE:U4.84.05-f
+POST_ZAC:U4.83.21-d
+POURSUITE:U4.11.03-h
+PRE_GIBI:U7.01.11-h
+PRE_GMSH:U7.01.31-b
+PRE_IDEAS:U7.01.01-h
+PROD_MATR_CHAM:U4.72.06-d
+PROJ_CHAMP:U4.72.05-e
+PROJ_MATR_BASE:U4.63.12-g
+PROJ_MESU_MODAL:U4.73.01-c
+PROJ_SPEC_BASE:U4.63.14-e
+PROJ_VECT_BASE:U4.63.13-g
+RECA_WEIBULL:U4.82.06-c
+RECU_FONCTION:U4.32.03-g
+RECU_GENE:U4.71.03-g
+RECU_TABLE:U4.71.02-c
+RESO_GRAD:U4.55.04-g
+RESO_LDLT:U4.55.02-h
+REST_BASE_PHYS:U4.63.21-g
+REST_SPEC_PHYS:U4.63.22-e
+SENSIBILITE:U4.50.02-b
+SOLVEUR:U4.50.01-e
+STANLEY:U4.81.31-b
+STAT_NON_LINE:U4.51.03-g
+TEST_FICHIER:U4.92.04-a
+TEST_FONCTION:U4.92.02-g
+TEST_RESU:U4.92.01-h
+TEST_TABLE:U4.92.03-d
+THER_LINEAIRE:U4.54.01-h
+THER_NON_LINE:U4.54.02-f
+THER_NON_LINE_MO:U4.54.03-d
-import pre74
+#import pre74
from cata import *
#
__version__="$Name: $"
-__Id__="$Id: cata.py,v 1.1 2004/11/19 09:06:23 eficas Exp $"
+__Id__="$Id: cata.py,v 1.2.6.1 2006/05/24 16:44:25 cchris Exp $"
#
JdC = JDC_CATA(code='ASTER',
execmodul=None,
DEBUT=MACRO(nom="DEBUT",op=ops.build_debut ,docu="U4.11.01-g",repetable='n',
UIinfo={"groupes":("Gestion du travail",)},
fr="Ouverture d une étude. Allocation des ressources mémoire et disque",
- sd_prod=ops.DEBUT,
PAR_LOT =SIMP(fr="mode de traitement des commandes",statut='f',typ='TXM',
into=("OUI","NON"),defaut="OUI"),
OrdList=SIMP(statut='o',typ='I',max='**',validators=OrdList("croissant")),
OrdList2=SIMP(statut='o',typ='I',into=(1,2,3,4,5,6),max='**',validators=OrdList("croissant")),
TypeVal=SIMP(statut='o',typ='I',validators=TypeVal(1)),
+ Compul=SIMP(statut='o',typ='I',max=5,validators=Compulsory((1,2))),
+ CompulInto=SIMP(statut='o',typ='I',max=5,into=(1,2,3,4,5),validators=Compulsory((1,2))),
+ Norep=SIMP(statut='o',typ='I',max=5,validators=NoRepeat()),
+ NorepInto=SIMP(statut='o',typ='I',max=5,into=(1,2,3,4,5),validators=NoRepeat()),
) ;
PLS_BASE_NOREPEAT=OPER(nom="PLS_BASE_NOREPEAT",op=19,sd_prod=cara_pout,
+# -*- coding: utf-8 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
"""
if not corps :
corps = self.corps
- if not arguments :
- arguments = self.arguments
+ if not arguments :
+ arguments = self.arguments
formule=(self.get_nom(),self.type_retourne,arguments,corps)
# on récupère la liste des constantes et des autres fonctions prédéfinies
# et qui peuvent être utilisées dans le corps de la formule courante
Inputs :
- sd=concept detruit
Fonction :
- Mettre a jour les mots cles de l etape et eventuellement le concept produit si reuse
- suite à la disparition du concept sd
- Seuls les mots cles simples MCSIMP font un traitement autre que de transmettre aux fils,
- sauf les objets FORM_ETAPE qui doivent vérifier que le concept détruit n'est pas
- utilisé dans le corps de la fonction
+ Mettre a jour les mots cles de l etape et eventuellement le concept produit si reuse
+ suite à la disparition du concept sd
+ Seuls les mots cles simples MCSIMP font un traitement autre que de transmettre aux fils,
+ sauf les objets FORM_ETAPE qui doivent vérifier que le concept détruit n'est pas
+ utilisé dans le corps de la fonction
"""
self.init_modif()
- old_sd=concept remplace
- sd = nouveau concept
Fonction :
- Les objets FORM_ETAPE devraient vérifier que le concept remplacé n'est pas
- utilisé dans le corps de la fonction
+ Les objets FORM_ETAPE devraient vérifier que le concept remplacé n'est pas
+ utilisé dans le corps de la fonction
"""
self.init_modif()
+# -*- coding: utf-8 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
"""
Lance la vérification du corps de formule présent dans entry_exp
"""
- new_nom = self.entry_nom.get()
+ new_nom = self.entry_nom.get()
new_typ = self.option_menu_typ.getcurselection()
new_arg = self.entry_arg.get()
new_exp = self.entry_exp.get()
"""
Lance la vérification de FORMULE passée en argument
"""
- return self.object.verif_formule(formule=formule)
+ return self.object.verif_formule(formule=formule)
import Accas
treeitem =FORMULETreeItem
+# -*- coding: utf-8 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
Pour installer EFICAS a partir de la distribution : <nom_distrib>.tgz
faire :
- tar xzvf <nom_distrib>.tgz
+ tar xzvf <nom_distrib>.tgz
ce qui a pour effet de créer un répertoire de nom <nom_distrib>.
2- Utilisation d'Eficas
Pour utiliser Eficas, aller dans le répertoire Aster et faire :
- python eficas_aster.py
+ python eficas_aster.py
+Version 1.10 (6/2006):
+ Mise en synchronisation avec la version 8.3 de Code_Aster de juin 2006.
+
+Version 1.9 (12/2005):
+ Mise en synchronisation avec la version 8.2 de Code_Aster de decembre 2005.
+
+Version 1.8 (6/2005):
+ Mise en synchronisation avec la version 8.1 de Code_Aster de mai 2005.
+ Les includes et poursuites peuvent etre édités. Introduction de la notation
+ scientifique pour les flottants.
+
Version 1.7 : (12/2004)
- Mise en synchronisation avec la version STA7 de Code_Aster (7.4) et avec les nouvelles formules
- (plus proches de python).
+ Mise en synchronisation avec la version STA7 de Code_Aster (7.4).
+ Les formules changent et deviennent des formules au sens python.
Disparition des PARAMETRE-EVAL
Les touches raccourcis (CtrlC par exple) sont activées et paramétrables dans prefs.py.
DEBUT();
-#Pas trouve shellpanel
+#Pas trouve shellpanel
MAIL=LIRE_MAILLAGE();
DEPL2 = FORMULE(NOM_PARA='INST',VALE='sin(OMEGAA*INST)/(OMEGAA**xx)')
DEPLACE2=CALC_FONC_INTERP( FONCTION=DEPL2,
LIST_PARA=L_INST,
- NOM_PARA='INST',
+ NOM_PARA='INST',
PROL_DROITE='LINEAIRE',
PROL_GAUCHE='LINEAIRE',
NOM_RESU='DEPL' )
copyfiles('Cata/cataSTA76',os.path.join(path_distrib,'Aster','Cata','cataSTA76'),['*.py'])
copyfiles('Cata/cataSTA76/Macro',os.path.join(path_distrib,'Aster','Cata','cataSTA76','Macro'),['*.py'])
#version 8
- copyfiles('Cata/cataSTA81',os.path.join(path_distrib,'Aster','Cata','cataSTA81'),['*.py'])
- copyfiles('Cata/cataSTA81/Macro',os.path.join(path_distrib,'Aster','Cata','cataSTA81,'Macro'),['*.py'])
+ copyfiles('Cata/cataSTA8',os.path.join(path_distrib,'Aster','Cata','cataSTA8'),['*.py'])
+ copyfiles('Cata/cataSTA8/Macro',os.path.join(path_distrib,'Aster','Cata','cataSTA8,'Macro'),['*.py'])
copyfiles('../AIDE',os.path.join(path_distrib,'AIDE'),['*.py'])
copyfiles('../AIDE/fichiers',os.path.join(path_distrib,'AIDE','fichiers'),['*'])
'editeur.ini',
'properties.py',
'eficas_aster.py',
+ 'style.py',
])
copyfiles('../Aster/Cata',os.path.join(path_distrib,'Aster'),['aster.py',])
copyfiles('../convert',os.path.join(path_distrib,'convert'),['*.py'])
P2 = 8.8;
-P3 = 7;
+P9 = (7, 8, 9, 10);
-P5 = P3*P1;
+P5 = (P9 * P1);
-_param_6 = P1-3;
+_param_6 = (P1 - 3);
-P4 = [2,3,4];
+P5 = 3;
-#Pas trouve shellpanel
+#Pas trouve shellpanel
-MAILLA2=LIRE_MAILLAGE(UNITE=P4[1],);
+MAILLA2=LIRE_MAILLAGE(UNITE=P9[1],);
aaa = FORMULE(VALE='a+z',
NOM_PARA=('a','z',),);
-MAIL=LIRE_MAILLAGE(UNITE=P3,);
+MAIL=LIRE_MAILLAGE(UNITE=P9,);
# 'LIRE_MAILLAGE', 'UNITE' --> uniquebasepanel
az = FORMULE(VALE='aaaaa',
# 'AFFE_MODELE', 'AFFE', 'b_mecanique'--> plusieursintopanel
F1=DEFI_FONCTION(NOM_PARA='DX',
- VALE=(5.0,3.0,P4[1],P3,),);
+ VALE=(5.0,3.0,
+ P9,),
+ ),);
F3=DEFI_FONCTION(NOM_PARA='DRX',
- VALE_C=(5.0,7.0,9.0,9.0,8.0,7.0,),);
+ VALE_C=(5.0,7.0,9.0,
+ 9.0,8.0,7.0,
+ ),);
# 'DEFI_FONCTION', 'VALE' --> fonctionpanel
MATER2=DEFI_MATERIAU(ELAS=_F(E=100000000000.0,
import prefs
rep_cata = os.path.join(prefs.REPINI,'Cata')
-rep_homard = os.path.join(prefs.REPINI,'../Homard')
rep_Pmw = os.path.join(prefs.REPINI,'../Pmw')
# Accès à la documentation Aster
path_doc = os.path.join(rep_cata,'..','Doc')
-exec_acrobat = "/usr/bin/acroread"
+exec_acrobat = "acroread"
# Utilisateur/Développeur
isdeveloppeur = "NON"
path_cata_dev = "/tmp/cata"
initialdir=os.curdir
# Choix des catalogues
-rep_mat="//home/noyret/Install_Eficas/materiau"
+rep_mat=os.path.join(rep_cata,'..','materiau')
catalogues = (
- #('ASTER','v5',os.path.join(rep_cata,'cataSTA5'),'asterv5'),
- ('ASTER','v6',os.path.join(rep_cata,'cataSTA6'),'python6'),
- #('ASTER','v73',os.path.join(rep_cata,'cataSTA73'),'python','defaut'),
- #('ASTER','v74',os.path.join(rep_cata,'cataSTA74'),'python'),
- ('ASTER','v7.6',os.path.join(rep_cata,'cataSTA76'),'python'),
- #('ASTER','v8',os.path.join(rep_cata,'cataSTA8'),'python','defaut'),
- ('ASTER','v8.2',os.path.join(rep_cata,'cataSTA81'),'python','defaut'),
- #('ASTER','v75',os.path.join(rep_cata,'cataSTA75'),'python','defaut'),
- ('HOMARD','v1',os.path.join(rep_homard,'homard_cata_V73.py'),'homard'),
+# ('ASTER','v5.9',os.path.join(rep_cata,'cataSTA5'),'asterv5'),
+# ('ASTER','v6.8',os.path.join(rep_cata,'cataSTA6'),'python6'),
+# ('ASTER','v7.7',os.path.join(rep_cata,'cataSTA7'),'python'),
+ ('ASTER','v8.3',os.path.join(rep_cata,'cataSTA8'),'python','defaut'),
)
--- /dev/null
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
+
+import os
+
+import prefs
+
+rep_cata = os.path.join(prefs.REPINI,'Cata')
+rep_homard = os.path.join(prefs.REPINI,'../Homard')
+rep_Pmw = os.path.join(prefs.REPINI,'../Pmw')
+
+# Accès à la documentation Aster
+path_doc = os.path.join(rep_cata,'..','Doc')
+exec_acrobat = "/usr/bin/acroread"
+# Utilisateur/Développeur
+isdeveloppeur = "NON"
+path_cata_dev = "/tmp/cata"
+# Répertoire temporaire
+rep_travail = "/tmp"
+# Répertoire initial
+initialdir=os.curdir
+
+# Choix des catalogues
+rep_mat="//home/noyret/Install_Eficas/materiau"
+
+catalogues = (
+ #('ASTER','v5',os.path.join(rep_cata,'cataSTA5'),'asterv5'),
+ #('ASTER','v6',os.path.join(rep_cata,'cataSTA6'),'python6'),
+ #('ASTER','v73',os.path.join(rep_cata,'cataSTA73'),'python','defaut'),
+ #('ASTER','v74',os.path.join(rep_cata,'cataSTA74'),'python'),
+ ('ASTER','v7.6',os.path.join(rep_cata,'cataSTA76'),'python'),
+ #('ASTER','v8',os.path.join(rep_cata,'cataSTA8'),'python','defaut'),
+ ('ASTER','v8.3',os.path.join(rep_cata,'cataSTA8'),'python','defaut'),
+ #('ASTER','v75',os.path.join(rep_cata,'cataSTA75'),'python','defaut'),
+ ('HOMARD','v1',os.path.join(rep_homard,'homard_cata_V73.py'),'homard'),
+ )
+
--- /dev/null
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
+
+import os
+
+import prefs
+
+rep_cata = os.path.join(prefs.REPINI,'Cata')
+rep_Pmw = os.path.join(prefs.REPINI,'../Pmw')
+
+# Accès à la documentation Aster
+path_doc = os.path.join(rep_cata,'..','Doc')
+exec_acrobat = os.environ['ASTER']+'/OUTILS/acroread.bat'
+
+# Utilisateur/Développeur
+isdeveloppeur = "NON"
+path_cata_dev = os.environ['TEMP']
+# Répertoire temporaire
+rep_travail = os.environ['TEMP']
+# Répertoire initial
+initialdir=os.curdir
+
+# Choix des catalogues
+rep_mat=os.path.join(rep_cata,'..','materiau')
+
+catalogues = (
+# ('ASTER','v5.9',os.path.join(rep_cata,'cataSTA5'),'asterv5'),
+# ('ASTER','v6.8',os.path.join(rep_cata,'cataSTA6'),'python6'),
+# ('ASTER','v7.7',os.path.join(rep_cata,'cataSTA7'),'python'),
+ ('ASTER','v8.3',os.path.join(rep_cata,'cataSTA8'),'python','defaut'),
+ )
+
for file in `cat ./Batch/${version}/aTester`
do
#echo $file
- grep "VISU_EFICAS='NON'" $file > /dev/null 2>/dev/null
- rc=$?
- if [ "$rc" != "0" ]
- then
- grep INCLUDE $file | grep -v "#" | grep -v INCLUDE_MATERIAU > /dev/null 2>/dev/null
- rc=$?
- if [ "$rc" != "0" ]
- then
- cr=`./test_eficas.py $file`
- if [ "${cr}" == "" ]
- then
- echo $file >> ./Batch/${version}/bad_${passe}
- else
- nomfeuille=`basename $file`
- boncr="DEBUT CR validation : "${nomfeuille}" FIN CR validation :"${nomfeuille}
- cr=`echo $cr`
- if [ "${cr}" != "$boncr" ]
- then
- echo $file >> ./Batch/${version}/bad_${passe}
- echo $cr >>./Batch/${version}/bad_${passe}
- echo $file >>./Batch/${version}/badfile_${passe}
- else
- echo $file >> ./Batch/${version}/ok_${passe}
- fi
- fi
- else
- echo $file >> ./Batch/${version}/nt_${passe}
- fi
- else
- echo $file >> ./Batch/${version}/nt_${passe}
- fi
+ grep "VISU_EFICAS='NON'" $file > /dev/null 2>/dev/null
+ rc=$?
+ if [ "$rc" != "0" ]
+ then
+ grep INCLUDE $file | grep -v "#" | grep -v INCLUDE_MATERIAU > /dev/null 2>/dev/null
+ rc=$?
+ if [ "$rc" != "0" ]
+ then
+ cr=`./test_eficas.py $file`
+ if [ "${cr}" == "" ]
+ then
+ echo $file >> ./Batch/${version}/bad_${passe}
+ else
+ nomfeuille=`basename $file`
+ boncr="DEBUT CR validation : "${nomfeuille}" FIN CR validation :"${nomfeuille}
+ cr=`echo $cr`
+ if [ "${cr}" != "$boncr" ]
+ then
+ echo $file >> ./Batch/${version}/bad_${passe}
+ echo $cr >>./Batch/${version}/bad_${passe}
+ echo $file >>./Batch/${version}/badfile_${passe}
+ else
+ echo $file >> ./Batch/${version}/ok_${passe}
+ fi
+ fi
+ else
+ echo $file >> ./Batch/${version}/nt_${passe}
+ fi
+ else
+ echo $file >> ./Batch/${version}/nt_${passe}
+ fi
done
('Enregistrer','saveJDC','<Control-s>','Ctrl+S'),
('Enregistrer sous','saveasJDC','<Control-e>','Ctrl+E'),
None,
- ('Fermer','closeJDC','<Control-f>','Ctrl+F'),
+ ('Fermer','closeJDC','<Control-w>','Ctrl+W'),
('Quitter','exitEFICAS','<Control-q>','Ctrl+Q'),
]
),
]
}
-userprefs=os.path.expanduser("~/Eficas_install/prefs.py")
+if os.name == 'nt':
+ userprefs = os.sep.join( [ os.environ['HOMEDRIVE'], os.environ['HOMEPATH'], 'Eficas_install', 'prefs.py' ])
+else :
+ userprefs=os.path.expanduser("~/Eficas_install/prefs.py")
if os.path.isfile(userprefs):
try:
execfile(userprefs)
--- /dev/null
+# -*- coding: utf-8 -*-
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
+
+import os,sys
+
+# REPINI sert à localiser le fichier editeur.ini
+# Obligatoire
+REPINI=os.path.dirname(os.path.abspath(__file__))
+
+# INSTALLDIR sert à localiser l'installation d'Eficas
+# Obligatoire
+INSTALLDIR=os.path.join(REPINI,'..')
+
+# CODE_PATH sert à localiser Noyau et Validation éventuellement
+# non contenus dans la distribution EFICAS
+# Par défaut on utilise les modules de INSTALLDIR
+# Peut valoir None (defaut)
+CODE_PATH = None
+#CODE_PATH = os.path.join(REPINI,'../../Superv')
+
+# la variable code donne le nom du code a selectionner
+code="ASTER"
+
+# ICONDIR sert à localiser le répertoire contenant les icones
+# Par défaut on utilise le répertoire icons dans Editeur
+ICONDIR=os.path.join(INSTALLDIR,'Editeur','icons')
+
+# lang indique la langue utilisée pour les chaines d'aide : fr ou ang
+lang='fr'
+
+# Codage des strings qui accepte les accents (en remplacement de 'ascii')
+encoding='iso-8859-1'
+
+labels= ('Fichier','Edition','Jeu de commandes',
+# 'Catalogue','Browsers',
+ 'Options',
+ 'Aide',
+ )
+
+appli_composants=['readercata','bureau',
+# 'browser',
+ 'options',
+ ]
+
+menu_defs={ 'bureau': [
+ ('Fichier',[
+ ('Nouveau','newJDC','<Control-n>','Ctrl+N'),
+ ('Nouvel INCLUDE','newJDC_include'),
+ ('Ouvrir','openJDC','<Control-o>','Ctrl+O'),
+ ('Enregistrer','saveJDC','<Control-s>','Ctrl+S'),
+ ('Enregistrer sous','saveasJDC','<Control-e>','Ctrl+E'),
+ None,
+ ('Fermer','closeJDC','<Control-w>','Ctrl+W'),
+ ('Quitter','exitEFICAS','<Control-q>','Ctrl+Q'),
+ ]
+ ),
+ ('Edition',[
+ ('Copier','copy','<Control-c>','Ctrl+C'),
+ ('Couper','cut','<Control-x>','Ctrl+X'),
+ ('Coller','paste','<Control-v>','Ctrl+V'),
+ ]
+ ),
+ ('Jeu de commandes',[
+ ('Rapport de validation','visuCRJDC','<Control-r>','Ctrl+R'),
+ ('Fichier source','visu_txt_brut_JDC','<Control-b>','Ctrl+B'),
+ #('Paramètres Eficas','affichage_fichier_ini'),
+ ]
+ ),
+ ('Aide',[
+ ('Aide EFICAS','aideEFICAS','<Control-a>','Ctrl+A'),
+ ]
+ ),
+ ]
+ }
+
+userprefs=os.path.expanduser("~/Eficas_install/prefs.py")
+if os.path.isfile(userprefs):
+ try:
+ execfile(userprefs)
+ except:
+ pass
+
+sys.path[:0]=[INSTALLDIR]
# IDENTIFICATION DU GESTIONNAIRE DE COMMANDE ACCAS A PARTIR
# DE LA VERSION DU CODE_ASTER ASSOCIE
#----------------------------------------------------------------------
-version = "8.1.21"
-date = "26/10/2005"
+version = "8.2.24"
+date = "O1/06/2006"
+exploit = False
copyfiles('../Aster',os.path.join(path_distrib,'Aster'),['prefs.py',
'editeur.ini',
'eficas_aster.py',
+ 'style.py'
])
copyfiles('Cata/Utilitai',os.path.join(path_distrib,'Aster','Cata','Utilitai'),['*.py'])
copyfiles('Cata/pre74',os.path.join(path_distrib,'Aster','Cata','pre74'),['*.py'])
copyfiles('Cata/cataSTA6/Macro',os.path.join(path_distrib,'Aster','Cata','cataSTA6','Macro'),['*.py'])
#copyfiles('Cata/cataSTA73',os.path.join(path_distrib,'Aster','Cata','cataSTA73'),['*.py'])
#copyfiles('Cata/cataSTA73/Macro',os.path.join(path_distrib,'Aster','Cata','cataSTA73','Macro'),['*.py'])
- copyfiles('Cata/cataSTA76',os.path.join(path_distrib,'Aster','Cata','cataSTA76'),['*.py'])
- copyfiles('Cata/cataSTA76/Macro',os.path.join(path_distrib,'Aster','Cata','cataSTA76','Macro'),['*.py'])
- copyfiles('Cata/cataSTA81',os.path.join(path_distrib,'Aster','Cata','cataSTA81'),['*.py'])
+ copyfiles('Cata/cataSTA7',os.path.join(path_distrib,'Aster','Cata','cataSTA7'),['*.py'])
+ copyfiles('Cata/cataSTA7/Macro',os.path.join(path_distrib,'Aster','Cata','cataSTA7','Macro'),['*.py'])
+ copyfiles('Cata/cataSTA8',os.path.join(path_distrib,'Aster','Cata','cataSTA8'),['*.py'])
copyfiles('Cata',os.path.join(path_distrib,'Aster','Cata'),['*c_clefs_docu'])
copyfiles('../Aster/Cata',os.path.join(path_distrib,'Aster'),['aster.py',])
copyfiles(os.path.join(path_Noyau,'Validation'),os.path.join(path_distrib,'Validation'),['*.py'])
copyfiles(os.path.join(path_Noyau,'Accas'),os.path.join(path_distrib,'Aster'),['properties.py'])
copyfiles(os.path.join(path_Noyau,'Cata'),os.path.join(path_distrib,'Aster','Cata'),['*.py',])
- copyfiles(os.path.join(path_Noyau,'Macro'),os.path.join(path_distrib,'Aster','Cata','cataSTA81','Macro'),['*.py'])
- os.system("mv "+path_distrib+"/Aster/Cata/cata_STA8.py "+path_distrib+"/Aster/Cata/cataSTA81/cata.py")
+ copyfiles(os.path.join(path_Noyau,'Macro'),os.path.join(path_distrib,'Aster','Cata','cataSTA8','Macro'),['*.py'])
+ os.system("mv "+path_distrib+"/Aster/Cata/cata_STA8.py "+path_distrib+"/Aster/Cata/cataSTA8/cata.py")
copyfiles('../Tools',os.path.join(path_distrib,'Tools'),['*.py'])
copyfiles('../Tools/foztools',os.path.join(path_distrib,'Tools','foztools'),['*.py'])
except:
print "Repertoire de download inconnu : ",dir_download
+ shutil.copy('prefs.py.win',os.path.join(path_distrib,'Aster','prefs.py'))
+ shutil.copy('editeur.ini.win',os.path.join(path_distrib,'Aster','editeur.ini'))
+
try:
shutil.copytree(path_TextTools,os.path.join(path_distrib,'Tools','TextTools'))
except:
+# -*- coding: utf-8 -*-
+"""
+Pour modifier le style d'EFICAS il faut ajouter un fichier style.py qui contiendra les
+informations sur le style voulu dans son repertoire Eficas_install.
+
+La methode la plus simple consiste à modifier directement les attributs de l'objet style dans le
+fichier style.py d'Eficas_install. Exemple::
+
+ style.background='yellow'
+
+pour modifier la couleur du background.
+
+Il existe une autre méthode qui peut être utilisée quand on veut modifier plusieurs propriétés à la fois.
+
+Le fichier style.py doit définir une nouvelle classe qui dérive de la classe de base STYLE avec des attributs
+de classe qui définiront le nouveau style (par exemple, si on veut modifier le background)::
+
+ class STYLE(STYLE):
+ background='yellow'
+
+Il faut ensuite instancier cette classe, dans ce meme fichier, en donnant le nom style à l'objet cree::
+
+ style=STYLE()
+
+Tous les attributs de classe possibles sont visibles dans le module Editeur/basestyle.py::
+
+ background='gray90'
+ foreground='black'
+ entry_background='white'
+ list_background='white'
+ list_select_background='#00008b'
+ list_select_foreground='grey'
+ tooltip_background="yellow"
+
+ standard = ("Helvetica",12)
+ standard_italique = ("Helvetica",12,'italic')
+ standard_gras = ("Helvetica",12,'bold')
+ standard_gras_souligne = ("Helvetica",12,'bold','underline')
+
+ canvas = ('Helvetica',10)
+ canvas_italique = ('Helvetica',10,'italic')
+ canvas_gras = ("Helvetica",10,'bold')
+ canvas_gras_italique = ("Helvetica",12,'bold','italic')
+
+ standard12 = ("Helvetica",14)
+ standard12_gras = ("Helvetica",14,'bold')
+ standard12_gras_italique = ( "Helvetica",14,'bold','italic')
+
+
+Le fichier style.py contenu dans le répertoire Aster permet de spécifier des propriétés globales pour une installation.
+Les modifications de style contenues dans ce fichier et dans le fichier style.py d'Eficas_install
+sont prises en compte dans cet ordre.
+"""
+
+
+style.background='gray90'
+style.foreground='black'
+style.standard = ("Helvetica",10)
+style.standard_italique = ("Helvetica",10,'italic')
+style.standard_gras = ("Helvetica",10,'bold')
+style.canvas_italique = ('Helvetica',10,'italic')
+style.canvas_gras = ("Helvetica",10,'bold')
+style.statusfont = ("Helvetica",14)
VALE : ( 0. 1.
5. 2. )
);
-
+
e_grm = DEFI_FONCTION ( NOM_PARA : 'TEMP'
PROL_DROIT : 'CONSTANT'
PROL_GAUCHE : 'CONSTANT'
VALE : ( 0. 1.
5. 2. )
);
-
+
al_grm = DEFI_FONCTION ( NOM_PARA : 'TEMP'
PROL_DROIT : 'CONSTANT'
PROL_GAUCHE : 'CONSTANT'
VALE : ( 0. 1.
5. 2. )
);
-
+
% Tube guide
e_tu = DEFI_FONCTION ( NOM_PARA : 'TEMP'
5. 2.
)
);
-
+
nu_cr = DEFI_FONCTION ( NOM_PARA : 'TEMP'
PROL_DROIT : 'CONSTANT'
PROL_GAUCHE : 'CONSTANT'
NU : nu_gre
ALPHA : al_gre
RHO : 7800. )
- GRAN_IRRA:( FLUX_L :fluxax1
+ GRAN_IRRA:( FLUX_L :fluxax1
FLUX_TN :fluxrd1
FONC_MULT:flux_f1
A : 0.
UN_SUR_K : 0.
UN_SUR_M : 0.
QSR_K : 1. )
- );
+ );
% Grilles de melange
FONC_MULT: flux_f1
A : 0.
S : 1.)
- LEMAITRE : ( N : 0.
+ LEMAITRE : ( N : 0.
UN_SUR_K : 0.
UN_SUR_M : 0.
- QSR_K : 2.)
+ QSR_K : 2.)
- );
+ );
%
% AFFECTATION DES MATERIAUX A CHAUD - CYCLE
from copy import copy,deepcopy
# import du chargeur de composants
-from comploader import gettreeitem,make_objecttreeitem
+from comploader import make_objecttreeitem
import treewidget
from Ihm import CONNECTOR
# Dans le cas d'une MCListe de longueur 1, l'objet associé est la MCListe
# et l'objet délégué est le MCFACT (object = _object.data[0])
Delegate.__init__(self,object)
- # On cache l'objet initial (pour destruction eventuelle
- # ultérieure)
+ # On cache l'objet initial (pour destruction eventuelle
+ # ultérieure)
self._object = object
self.setfunction = setfunction
self.expandable = 1
return self.object.get_genealogie()
def get_index_child(self,nom_fils):
+ """
+ Retourne l'index dans la liste des fils de self du nouveau fils de nom nom_fils
+ Nécessaire pour savoir à quelle position dans la liste des fils il faut ajouter
+ le nouveau mot-clé
+ """
+ return self.object.get_index_child(nom_fils)
+
+ def get_index_child_old(self,nom_fils):
"""
Retourne l'index dans la liste des fils de self du nouveau fils de nom nom_fils
Nécessaire pour savoir à quelle position dans la liste des fils il faut ajouter
def get_fr(self):
""" Retourne le fr de l'objet pointé par self """
- return self.object.get_fr()
+ try:
+ return self.object.get_fr()
+ except:
+ return ""
def get_docu(self):
""" Retourne la clé de doc de l'objet pointé par self """
Cette methode, globale pour les objets de type item, permet de construire et de retourner un objet
de type item associé à l'object passé en argument.
"""
- c = gettreeitem(object)
- return c(appli,labeltext, object, setfunction)
+ return make_objecttreeitem(appli,labeltext,object,setfunction)
#def __del__(self):
# print "__del__",self
DEBUT();
MA=DEFI_MATERIAU(ELAS=_F(E=210000000000,
- NU=0.3,),);
+ NU=0.3,),);
INFO_MED=2,);
MODE=AFFE_MODELE(MAILLAGE=MAIL,
- AFFE=_F(TOUT='OUI',
- PHENOMENE='MECANIQUE',
- MODELISATION= '3D',),);
+ AFFE=_F(TOUT='OUI',
+ PHENOMENE='MECANIQUE',
+ MODELISATION= '3D',),);
MATER=MA,),);
CHAR=AFFE_CHAR_MECA(MODELE=MODE,
- FACE_IMPO=(
- _F(GROUP_MA='ABB1A1',
- DX=0,
- DY=0,
- DZ=0,),),
- PRES_REP=(
- _F(GROUP_MA='CDD1C1',
- PRES=10000,),),);
+ FACE_IMPO=(
+ _F(GROUP_MA='ABB1A1',
+ DX=0,
+ DY=0,
+ DZ=0,),),
+ PRES_REP=(
+ _F(GROUP_MA='CDD1C1',
+ PRES=10000,),),);
RESU=MECA_STATIQUE(MODELE=MODE,
CHAM_MATER=MATE,
--- /dev/null
+# -*- coding: utf-8 -*-
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
+"""
+ Ce module contient la classe 3Dpilote qui va creer les ordres
+ de pilotage de l idl PAL pour un element de structure
+"""
+import generator
+
+class TroisDPilote:
+
+ def __init__(self,node,appli,parent):
+ self.node=node
+ self.appli=appli
+ self.parent=parent
+
+ def envoievisu(self):
+ """
+ """
+ format="vers3DSalome"
+ if generator.plugins.has_key(format):
+ # Le generateur existe on l'utilise
+ g=generator.plugins[format]()
+ g.init_jdc(self.node.get_jdc())
+ texte=g.gener(self.node)
+ else:
+ print "Le generateur n a pas ete trouvé"
+ print "Erreur ! Erreur!"
+ return ""
+ self.appli.envoievisu(texte)
+
# -*- coding: utf-8 -*-
-# CONFIGURATION MANAGEMENT OF EDF VERSION
+# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
-# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
#
# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
#
#
# ======================================================================
from Noyau.N_CR import CR
#
-__Id__="$Id: analyse_catalogue.py,v 1.3 2002/09/10 15:59:37 eficas Exp $"
+__Id__="$Id: analyse_catalogue.py,v 1.4.8.1 2006/03/10 14:38:20 eficas Exp $"
__version__="$Name: $"
#
l_noms_commandes = ['OPER','PROC','MACRO','FORM']
l_noms=l_noms_composes+l_noms_simples
def elimine_commentaires(text):
- """ Elimine les lignes de commentaires dans text
- Attention : supprime sauvagement tous les caractères entre # et le retour chariot ..."""
- comments = re.compile(r'#[^\n]*')
- return comments.sub('',text)
+ """ Elimine les lignes de commentaires dans text
+ Attention : supprime sauvagement tous les caractères entre # et le retour chariot ..."""
+ comments = re.compile(r'#[^\n]*')
+ return comments.sub('',text)
def cherche_nom(text):
- Whitespace = r'[ \f\t]*'
- Name = r'[a-zA-Z_]\w*'
- myexpr = '('+Name+')'+Whitespace+'='+Whitespace+'$'
- a=re.search(myexpr,text)
- return a.group(1)
+ Whitespace = r'[ \f\t]*'
+ Name = r'[a-zA-Z_]\w*'
+ myexpr = '('+Name+')'+Whitespace+'='+Whitespace+'$'
+ a=re.search(myexpr,text)
+ return a.group(1)
def cherche_args(text):
- text = strip(text)
- longueur = len(text)
- if text[0] != '(':
- return 'erreur !'
- else :
- nbpar = 1
- for i in range(1,longueur) :
- if text[i] =='(':
- nbpar = nbpar + 1
- elif text[i] == ')':
- nbpar = nbpar - 1
- else :
- continue
- if nbpar == 0:
- break
- if nbpar != 0 :
- return 'erreur !','erreur !'
- else :
- try :
- return text[1:i],text[i+1:] # on enlève les première et dernière parenthèses
- except :
- return text[1:i],''
+ text = strip(text)
+ longueur = len(text)
+ if text[0] != '(':
+ return 'erreur !'
+ else :
+ nbpar = 1
+ for i in range(1,longueur) :
+ if text[i] =='(':
+ nbpar = nbpar + 1
+ elif text[i] == ')':
+ nbpar = nbpar - 1
+ else :
+ continue
+ if nbpar == 0:
+ break
+ if nbpar != 0 :
+ return 'erreur !','erreur !'
+ else :
+ try :
+ return text[1:i],text[i+1:] # on enlève les première et dernière parenthèses
+ except :
+ return text[1:i],''
class ENTITE :
- def cherche_enfants(self):
- try :
- self.text = strip(self.text)
- liste = re.split('=',self.text,1)
- if len(liste)>1 :
- arg1=liste[0]
- reste=liste[1]
- reste = strip(reste)
- if reste[0:4] in l_noms :
- nom_mc = cherche_nom(arg1+'=')
- arg_mc, self.text = cherche_args(reste[4:])
- self.cree_mc(nom_mc,arg_mc,reste[0:4])
- else :
- self.text = reste
- self.cherche_enfants()
- else :
- # pas de = rencontré
- return
- except Exception,e:
- self.cr.fatal("Erreur rencontrée dans recherche_enfants :%s" %str(e))
-
- def cree_mc(self,nom_mc,arg_mc,test):
- if test in l_noms_composes :
- mc = FACT_CATA(nom_mc,arg_mc,self)
- self.children.append(mc)
- elif test in l_noms_simples :
- mc = SIMP_CATA(nom_mc,self)
- self.children.append(mc)
- else :
- print 'erreur dans la création du mot-clé :',nom_mc
-
- def construit_liste_dico(self):
- l=[]
- d={}
- if len(self.children)==0:
- self.ordre_mc = l
- self.entites = d
- return
- try :
- for child in self.children:
- l.append(child.nom)
- d[child.nom]=child
- self.ordre_mc = l
- self.entites = d
- except:
- print 'erreur :',self.nom,self.__class__
-
+ def cherche_enfants(self):
+ try :
+ self.text = strip(self.text)
+ liste = re.split('=',self.text,1)
+ if len(liste)>1 :
+ arg1=liste[0]
+ reste=liste[1]
+ reste = strip(reste)
+ if reste[0:4] in l_noms :
+ nom_mc = cherche_nom(arg1+'=')
+ arg_mc, self.text = cherche_args(reste[4:])
+ self.cree_mc(nom_mc,arg_mc,reste[0:4])
+ else :
+ self.text = reste
+ self.cherche_enfants()
+ else :
+ # pas de = rencontré
+ return
+ except Exception,e:
+ self.cr.fatal("Erreur rencontrée dans recherche_enfants :%s" %str(e))
+
+ def cree_mc(self,nom_mc,arg_mc,test):
+ if test in l_noms_composes :
+ mc = FACT_CATA(nom_mc,arg_mc,self)
+ self.children.append(mc)
+ elif test in l_noms_simples :
+ mc = SIMP_CATA(nom_mc,self)
+ self.children.append(mc)
+ else :
+ print 'erreur dans la création du mot-clé :',nom_mc
+
+ def construit_liste_dico(self):
+ l=[]
+ d={}
+ if len(self.children)==0:
+ self.ordre_mc = l
+ self.entites = d
+ return
+ try :
+ for child in self.children:
+ l.append(child.nom)
+ d[child.nom]=child
+ self.ordre_mc = l
+ self.entites = d
+ except:
+ print 'erreur :',self.nom,self.__class__
+
class COMMANDE_CATA(ENTITE) :
- def __init__(self,nom,args,parent):
- self.nom = nom
- self.args = args
- self.children = []
- self.text = args
- self.cr = CR()
- self.cr.debut = "Début commande %s" %self.nom
- self.cr.fin = "Fin commande %s" %self.nom
- self.cherche_enfants()
- self.construit_liste_dico()
- parent.cr.add(self.cr)
-
- def affiche(self):
- texte_cmd = '\n'
- texte_cmd = texte_cmd + 'Commande :' + self.nom + '\n'
- for child in self.children :
- texte_cmd = texte_cmd + child.affiche(1)
- return texte_cmd
+ def __init__(self,nom,args,parent):
+ self.nom = nom
+ self.args = args
+ self.children = []
+ self.text = args
+ self.cr = CR()
+ self.cr.debut = "Début commande %s" %self.nom
+ self.cr.fin = "Fin commande %s" %self.nom
+ self.cherche_enfants()
+ self.construit_liste_dico()
+ parent.cr.add(self.cr)
+
+ def affiche(self):
+ texte_cmd = '\n'
+ texte_cmd = texte_cmd + 'Commande :' + self.nom + '\n'
+ for child in self.children :
+ texte_cmd = texte_cmd + child.affiche(1)
+ return texte_cmd
class SIMP_CATA :
- def __init__(self,nom,parent):
- self.nom = nom
- self.cr = CR()
- self.cr.debut = "Début mot-clé simple %s" %self.nom
- self.cr.fin = "Fin mot-clé simple %s" %self.nom
- parent.cr.add(self.cr)
+ def __init__(self,nom,parent):
+ self.nom = nom
+ self.cr = CR()
+ self.cr.debut = "Début mot-clé simple %s" %self.nom
+ self.cr.fin = "Fin mot-clé simple %s" %self.nom
+ parent.cr.add(self.cr)
- def affiche(self,ind):
- sep = ' '*5
- return sep*ind+self.nom+'\n'
+ def affiche(self,ind):
+ sep = ' '*5
+ return sep*ind+self.nom+'\n'
class FACT_CATA(ENTITE) :
- def __init__(self,nom,args,parent):
- self.nom=nom
- self.args=args
- self.children = []
- self.text=args
- self.cr = CR()
- self.cr.debut = "Début mot-clé facteur ou bloc %s" %self.nom
- self.cr.fin = "Fin mot-clé facteur ou bloc %s" %self.nom
- self.cherche_enfants()
- self.construit_liste_dico()
- parent.cr.add(self.cr)
-
- def affiche(self,ind):
- sep = ' '*5
- text = ''
- text = text + sep*ind+self.nom+'\n'
- for child in self.children :
- text = text + child.affiche(ind+1)
- return text
-
+ def __init__(self,nom,args,parent):
+ self.nom=nom
+ self.args=args
+ self.children = []
+ self.text=args
+ self.cr = CR()
+ self.cr.debut = "Début mot-clé facteur ou bloc %s" %self.nom
+ self.cr.fin = "Fin mot-clé facteur ou bloc %s" %self.nom
+ self.cherche_enfants()
+ self.construit_liste_dico()
+ parent.cr.add(self.cr)
+
+ def affiche(self,ind):
+ sep = ' '*5
+ text = ''
+ text = text + sep*ind+self.nom+'\n'
+ for child in self.children :
+ text = text + child.affiche(ind+1)
+ return text
+
class CATALOGUE_CATA:
- def __init__(self,parent,fichier):
- self.parent = parent
- self.fichier=fichier
- self.cr = CR()
- self.cr.debut = "Début compte-rendu catalogue %s" %self.fichier
- self.cr.fin = "Fin compte-rendu catalogue %s" %self.fichier
- self.ouvrir_fichier()
- self.liste_commandes=[]
- self.liste_textes_commandes=[]
-
- def ouvrir_fichier(self):
- try :
- f=open(self.fichier,'r')
- self.texte_complet=f.read()
- f.close()
- except e:
- print "Impossible d'ouvrir le fichier :",self.fichier
- print e
- self.cr.fatal("Impossible d'ouvrir le fichier :%s" %self.fichier)
-
- def constr_list_txt_cmd(self,text):
- text = elimine_commentaires(text)
- pattern = '\) *;'
- liste=re.split(pattern,text)
- for i in range(0,len(liste)-1):
- self.liste_textes_commandes.append(liste[i]+')')
-
- def analyse_commande_old(self,text):
- #if strip(text) == '' or strip(text) ==')': return
- liste = re.split('OPER *\(',text,1)
- if len(liste) < 2 :
- liste = re.split('PROC *\(',text,1)
- if len(liste) < 2 :
- liste = re.split('MACRO *\(',text,1)
- if len(liste) < 2 :
- print "le texte à analyser n'est pas celui d'une commande ou d'un opérateur",text
- self.cr.fatal("le texte à analyser n'est pas celui d'une commande ou d'un opérateur :%s" %text)
- return
- debut = liste[0]
- fin = liste[1]
- nom_cmd = cherche_nom(debut)
- if nom_cmd == 'erreur !':
- print "Erreur dans la recherche du nom de la commande :",debut
- args_cmd,toto = cherche_args('('+fin)
- if args_cmd == 'erreur !':
- print "Erreur dans la recherche des args de la commande :",debut
- cmd=COMMANDE_CATA(nom_cmd,args_cmd,self)
- self.liste_commandes.append(cmd)
-
- def analyse_commande(self,text):
- #if strip(text) == '' or strip(text) ==')': return
- for nom_cmd in l_noms_commandes:
- liste = re.split(nom_cmd+' *\(',text,1)
- if len(liste) == 2 : break
- if len(liste) < 2 :
- print "le texte à analyser n'est pas celui d'une commande connue :"+str(l_noms_commandes),text
- self.cr.fatal("le texte à analyser n'est pas celui d'une commande ou d'un opérateur :%s" %text)
- return
- debut = liste[0]
- fin = liste[1]
- nom_cmd = cherche_nom(debut)
- if nom_cmd == 'erreur !':
- print "Erreur dans la recherche du nom de la commande :",debut
- args_cmd,toto = cherche_args('('+fin)
- if args_cmd == 'erreur !':
- print "Erreur dans la recherche des args de la commande :",debut
+ def __init__(self,parent,fichier):
+ self.parent = parent
+ self.fichier=fichier
+ self.cr = CR()
+ self.cr.debut = "Début compte-rendu catalogue %s" %self.fichier
+ self.cr.fin = "Fin compte-rendu catalogue %s" %self.fichier
+ self.ouvrir_fichier()
+ self.liste_commandes=[]
+ self.liste_textes_commandes=[]
+
+ def ouvrir_fichier(self):
+ try :
+ f=open(self.fichier,'r')
+ self.texte_complet=f.read()
+ f.close()
+ except e:
+ print "Impossible d'ouvrir le fichier :",self.fichier
+ print e
+ self.cr.fatal("Impossible d'ouvrir le fichier :%s" %self.fichier)
+
+ def constr_list_txt_cmd(self,text):
+ text = elimine_commentaires(text)
+ pattern = '\) *;'
+ liste=re.split(pattern,text)
+ for i in range(0,len(liste)-1):
+ self.liste_textes_commandes.append(liste[i]+')')
+
+ def analyse_commande_old(self,text):
+ #if strip(text) == '' or strip(text) ==')': return
+ liste = re.split('OPER *\(',text,1)
+ if len(liste) < 2 :
+ liste = re.split('PROC *\(',text,1)
+ if len(liste) < 2 :
+ liste = re.split('MACRO *\(',text,1)
+ if len(liste) < 2 :
+ print "le texte à analyser n'est pas celui d'une commande ou d'un opérateur",text
+ self.cr.fatal("le texte à analyser n'est pas celui d'une commande ou d'un opérateur :%s" %text)
+ return
+ debut = liste[0]
+ fin = liste[1]
+ nom_cmd = cherche_nom(debut)
+ if nom_cmd == 'erreur !':
+ print "Erreur dans la recherche du nom de la commande :",debut
+ args_cmd,toto = cherche_args('('+fin)
+ if args_cmd == 'erreur !':
+ print "Erreur dans la recherche des args de la commande :",debut
+ cmd=COMMANDE_CATA(nom_cmd,args_cmd,self)
+ self.liste_commandes.append(cmd)
+
+ def analyse_commande(self,text):
+ #if strip(text) == '' or strip(text) ==')': return
+ for nom_cmd in l_noms_commandes:
+ liste = re.split(nom_cmd+' *\(',text,1)
+ if len(liste) == 2 : break
+ if len(liste) < 2 :
+ print "le texte à analyser n'est pas celui d'une commande connue :"+str(l_noms_commandes),text
+ self.cr.fatal("le texte à analyser n'est pas celui d'une commande ou d'un opérateur :%s" %text)
+ return
+ debut = liste[0]
+ fin = liste[1]
+ nom_cmd = cherche_nom(debut)
+ if nom_cmd == 'erreur !':
+ print "Erreur dans la recherche du nom de la commande :",debut
+ args_cmd,toto = cherche_args('('+fin)
+ if args_cmd == 'erreur !':
+ print "Erreur dans la recherche des args de la commande :",debut
print fin
- cmd=COMMANDE_CATA(nom_cmd,args_cmd,self)
- self.liste_commandes.append(cmd)
-
- def analyse_texte(self,texte):
- self.constr_list_txt_cmd(texte)
- try:
- self.parent.configure_barre(len(self.liste_textes_commandes))
- except:
- pass
- for texte_commande in self.liste_textes_commandes :
- try:
- self.parent.update_barre()
- except:
- pass
- self.analyse_commande(texte_commande)
- self.construit_liste_dico()
-
- def ecrit_lcmd(self):
- f=open('U:\\EFICAS\\Accas\\cata.txt','w')
- for cmd in self.liste_commandes :
- f.write(cmd.affiche())
- f.close()
-
- def construit_liste_dico(self):
- l=[]
- d={}
- for cmd in self.liste_commandes:
- l.append(cmd.nom)
- d[cmd.nom]=cmd
- self.ordre_mc = l
- self.entites = d
-
- def report(self):
- """ retourne l'objet rapport du catalogue de commande """
- return self.cr
+ cmd=COMMANDE_CATA(nom_cmd,args_cmd,self)
+ self.liste_commandes.append(cmd)
+
+ def analyse_texte(self,texte):
+ self.constr_list_txt_cmd(texte)
+ try:
+ self.parent.configure_barre(len(self.liste_textes_commandes))
+ except:
+ pass
+ for texte_commande in self.liste_textes_commandes :
+ try:
+ self.parent.update_barre()
+ except:
+ pass
+ self.analyse_commande(texte_commande)
+ self.construit_liste_dico()
+
+ def ecrit_lcmd(self):
+ f=open('U:\\EFICAS\\Accas\\cata.txt','w')
+ for cmd in self.liste_commandes :
+ f.write(cmd.affiche())
+ f.close()
+
+ def construit_liste_dico(self):
+ l=[]
+ d={}
+ for cmd in self.liste_commandes:
+ l.append(cmd.nom)
+ d[cmd.nom]=cmd
+ self.ordre_mc = l
+ self.entites = d
+
+ def report(self):
+ """ retourne l'objet rapport du catalogue de commande """
+ return self.cr
def analyse_catalogue(parent,nom_cata):
- cata = CATALOGUE_CATA(parent,nom_cata)
- cata.analyse_texte(cata.texte_complet)
- return cata
+ cata = CATALOGUE_CATA(parent,nom_cata)
+ cata.analyse_texte(cata.texte_complet)
+ return cata
def analyse_catalogue_commande(parent,nom_cata):
- cata = CATALOGUE_CATA(parent,nom_cata)
- cata.analyse_commande(cata.texte_complet)
- cata.construit_liste_dico()
- return cata
+ cata = CATALOGUE_CATA(parent,nom_cata)
+ cata.analyse_commande(cata.texte_complet)
+ cata.construit_liste_dico()
+ return cata
def make_cata_pickle(fic_cata):
- """
- Lance l'analyse de l'ordre des mots-clés dans le catalogue dont le nom
- est passé en argument et sauvegarde ces infos dans le fichier pickle relu
- par Eficas
- """
- fic_cata_p = os.path.splitext(fic_cata)[0]+'_pickled.py'
- cata_ordonne = analyse_catalogue(None,fic_cata)
- f = open(fic_cata_p,'w+')
- p = cPickle.Pickler(f)
- p.dump(cata_ordonne.entites)
- f.close()
-
+ """
+ Lance l'analyse de l'ordre des mots-clés dans le catalogue dont le nom
+ est passé en argument et sauvegarde ces infos dans le fichier pickle relu
+ par Eficas
+ """
+ fic_cata_p = os.path.splitext(fic_cata)[0]+'_pickled.py'
+ cata_ordonne = analyse_catalogue(None,fic_cata)
+ f = open(fic_cata_p,'w+')
+ p = cPickle.Pickler(f)
+ p.dump(cata_ordonne.entites)
+ f.close()
+
if __name__ == "__main__" :
- import profile
- profile.run("analyse_catalogue(None,'U:\\EFICAS\\Cata\\cata_saturne.py')")
+ import profile
+ profile.run("analyse_catalogue(None,'U:\\EFICAS\\Cata\\cata_saturne.py')")
-
-
+
+
"""
# Modules Python
import os
+import string
import sys
import types
import Pmw
import fontes
import tooltip
import properties
+import convert,generator
+import comploader
+from utils import extension_fichier,stripPath
+
from widgets import Fenetre
from Misc import MakeNomComplet
import session
import listeFichiers
import listePatrons
-VERSION="EFICAS v1.9"
+VERSION="EFICAS v1.10"
class APPLI:
def __init__ (self,master,code=prefs.code,fichier=None,test=0) :
# Creation de la menubar, toolbar, messagebar
self.cree_composants_graphiques()
# Creation des autres composants graphiques dont le bureau (parametrable par prefs.py)
- self.load_appli_composants()
+ self.load_appli_composants()
self.listeFichiers=listeFichiers.listeFichiers(self)
self.listePatrons=listePatrons.listePatrons(self)
self.dir=None
splash._splash.configure(text = "Chargement des paramètres utilisateur")
import configuration
self.CONFIGURATION = configuration.make_config(self,prefs.REPINI)
+ self.CONFIGStyle = configuration.make_config_style(self,prefs.REPINI)
def cree_composants_graphiques(self):
"""
if (self.test == 0):
splash._splash.configure(text = "Chargement de la statusbar")
import statusbar
- self.statusbar=statusbar.STATUSBAR(self.top)
+ self.statusbar=statusbar.STATUSBAR(self.top,styles.style.statusfont)
def load_appli_composants(self):
"""
root.option_add('*background', style.background)
root.option_add('*foreground', style.foreground)
root.option_add('*EntryField.Entry.background', style.entry_background)
- root.option_add('*Entry*background', style.entry_background)
+ root.option_add('*Entry*background', style.entry_background)
root.option_add('*Listbox*background', style.list_background)
root.option_add('*Listbox*selectBackground', style.list_select_background)
root.option_add('*Listbox*selectForeground', style.list_select_foreground)
radio=None
for item in itemlist:
number_item=number_item + 1
- raccourci_label=""
+ raccourci_label=""
if not item :
#menu.add_separator()
- pass
+ pass
else:
if len(item)==3:
raccourci=item[2]
- raccourci_label=" "+raccourci
+ raccourci_label=" "+raccourci
newitem=(item[0],item[1])
else :
- if len(item)==4:
+ if len(item)==4:
raccourci=item[2]
- raccourci_label=" "+item[3]
+ raccourci_label=" "+item[3]
newitem=(item[0],item[1])
- else :
- raccourci=""
+ else :
+ raccourci=""
newitem=item
item=newitem
label,method=item
f.wait()
+class valeur:
+ def __init__(self,v=None):
+ self.v=v
+ def set(self,v):
+ self.v=v
+ def get(self):
+ return self.v
+
+class STANDALONE(APPLI):
+ def __init__ (self,code=prefs.code,fichier=None,version='v8.2') :
+ self.code=code
+ self.top=None
+ self.format_fichier=valeur()
+
+ self.dict_reels={}
+ self.liste_simp_reel=[]
+ # L'attribut test doit valoir 1 si on ne veut pas creer les fenetres
+ self.test=1
+
+ # Lecture des parametres de configuration (fichier global editeur.ini
+ # et utilisateur eficas.ini)
+ self.lecture_parametres()
+
+ self.message=''
+ # Avant la creation du bureau qui lit le catalogue
+ self.version_code=version
+ import readercata
+ self.readercata=readercata.READERCATA(self,None)
+
+ self.dir=None
+
+ def affiche_infos(self,message):
+ return
+
+ def get_text_JDC(self,JDC,format):
+ if generator.plugins.has_key(format):
+ # Le generateur existe on l'utilise
+ g=generator.plugins[format]()
+ jdc_formate=g.gener(JDC,format='beautifie')
+ return jdc_formate
+ else:
+ # Il n'existe pas c'est une erreur
+ return
+
+ def newJDC(self):
+ CONTEXT.unset_current_step()
+ J=self.readercata.cata[0].JdC(procedure="",
+ appli=self,
+ cata=self.readercata.cata,
+ cata_ord_dico=self.readercata.cata_ordonne_dico,
+ rep_mat=self.CONFIGURATION.rep_mat,
+ )
+ J.analyse()
+ return J
+
+ def openJDC(self,file):
+ self.fileName = file
+ e=extension_fichier(file)
+ self.JDCName=stripPath(file)
+ self.initialdir = os.path.dirname(os.path.abspath(file))
+ format=self.format_fichier.get()
+ # Il faut convertir le contenu du fichier en fonction du format
+ if convert.plugins.has_key(format):
+ # Le convertisseur existe on l'utilise
+ p=convert.plugins[format]()
+ p.readfile(file)
+ text=p.convert('exec',self)
+ if not p.cr.estvide():
+ raise ValueError(str(p.cr))
+
+ # On se met dans le repertoire ou se trouve le fichier de commandes
+ # pour trouver les eventuels fichiers include ou autres
+ # localises a cote du fichier de commandes
+ os.chdir(self.initialdir)
+ CONTEXT.unset_current_step()
+ J=self.readercata.cata[0].JdC(procedure=text,
+ appli=self,
+ cata=self.readercata.cata,
+ cata_ord_dico=self.readercata.cata_ordonne_dico,
+ nom=self.JDCName,
+ rep_mat=self.CONFIGURATION.rep_mat,
+ )
+ J.analyse()
+ txt= J.cr.get_mess_exception()
+ if txt:raise ValueError(txt)
+ return J
+
+ def openTXT(self,text):
+ self.JDCName="TEXT"
+ CONTEXT.unset_current_step()
+ J=self.readercata.cata[0].JdC(procedure=text,
+ appli=self,
+ cata=self.readercata.cata,
+ cata_ord_dico=self.readercata.cata_ordonne_dico,
+ nom=self.JDCName,
+ rep_mat=self.CONFIGURATION.rep_mat,
+ )
+ J.analyse()
+ txt= J.cr.get_mess_exception()
+ if txt:raise ValueError(txt)
+ return J
+
+ def create_item(self,obj):
+ return comploader.make_objecttreeitem(self,getattr(obj,"nom","item"),obj)
+
+ def get_file(self,unite=None,fic_origine = ''):
+ """
+ Retourne le nom du fichier correspondant a l unite logique unite (entier)
+ ou d'un fichier poursuite
+ """
+ f,ext=os.path.splitext(fic_origine)
+ if unite :
+ #include
+ finclude=f+".%d" % unite
+ else:
+ #poursuite
+ n=ext[-1]
+ if n == '0':
+ ext=".comm"
+ else:
+ ext=".com%d" % (string.atoi(n)-1)
+ if ext == '.com0' and not os.path.isfile(f+".com0"):
+ ext=".comm"
+ finclude=f+ext
+ ff=open(finclude)
+ text=ff.read()
+ ff.close()
+ return finclude,text
+
+ def affiche_alerte(self,titre,message):
+ print titre+ "\n\n" + message
standard12_gras_italique = ( "Helvetica",14,'bold','italic')
standardcourier10 = ("Courier",14)
+ statusfont = ("Helvetica",16)
style=STYLE()
button_defs = (('New24',"newJDC","Création d'un nouveau fichier",'always'),
('Open24',"openJDC","Ouverture d'un fichier existant",'always'),
('Save24',"saveJDC","Sauvegarde du fichier courant",'always'),
- ('Fermer24',"closeJDC","Fermeture du fichier courant",'always'),
+ ('Fermer24',"closeJDC","Fermeture du fichier courant",'always'),
('Zoom24',"visuJDC","Visualisation du fichier de commandes",'always'),
None,
('Copy24',"copy","Copie l'objet courant",'jdc'),
def newJDC_include(self,event=None):
"""
- Initialise un nouveau JDC vierge
+ Initialise un nouveau JDC include vierge
"""
import Extensions.jdc_include
JdC_aux=Extensions.jdc_include.JdC_include
self.fileName=None
self.ShowJDC(J,self.JDCName)
self.appli.toolbar.active_boutons()
+ return J
def newJDC(self,event=None):
"""
- Initialise un nouveau JDC include vierge
+ Initialise un nouveau JDC vierge
"""
self.appli.statusbar.reset_affichage_infos()
self.fileName=None
self.ShowJDC(J,self.JDCName)
self.appli.toolbar.active_boutons()
+ return J
def ShowJDC(self,JDC,nom,label_onglet=None,JDCDISPLAY=JDCDISPLAY,enregistre="non"):
"""
titre="compte-rendu d'erreurs, EFICAS ne sait pas convertir ce fichier",
texte = str(p.cr)).wait()
return
- if enregistre == "oui" :
- self.appli.listeFichiers.aOuvert(file)
+ if enregistre == "oui" :
+ self.appli.listeFichiers.aOuvert(file)
else:
# Il n'existe pas c'est une erreur
self.appli.affiche_infos("Type de fichier non reconnu")
else:
self.ShowJDC(J,self.JDCName,enregistre=enregistre)
self.appli.toolbar.active_boutons()
- # si le JDC ne contient rien (vide), on retourne ici
- if len(self.JDC.etapes) == 0 : return
- # dans le cas où le JDC est invalide, on affiche son CR
+ # si le JDC ne contient rien (vide), on retourne ici
+ if len(self.JDC.etapes) == 0 : return
+ # dans le cas où le JDC est invalide, on affiche son CR
if not self.JDC.isvalid():
- self.appli.top.update()
- self.visuCR(mode='JDC')
+ self.appli.top.update()
+ self.visuCR(mode='JDC')
+ return J
def deplieReplieNode(self):
self.JDCDisplay_courant.tree.tree.deplieReplieNode()
self.jdc_fini = string.replace(jdc_formate,'\r\n','\n')
if echo =='oui' or self.JDCDisplay_courant.fichier == None:
- ok = self.asknomsauvegardeJDC()
+ ok = self.asknomsauvegardeJDC()
elif self.JDCDisplay_courant.fichier != None :
# le JDC a déjà un nom : on sauvegarde directement sans demander
# un autre nom au développeur
if not save_in_file(self.JDCDisplay_courant.fichier,self.jdc_fini,self.appli.dir) :
showinfo("Erreur","Problème à la sauvegarde du fichier :" + `self.JDCDisplay_courant.fichier`)
#return 0
- ok = 0
+ ok = 0
else :
if self.appli.format_fichier.get() == 'homard':
self.save_homard(self.JDCDisplay_courant.fichier,self.jdc_homard)
if ok and hasattr( self.appli, 'salome'):
# eficas a été lancé à partir deSalome
#1)ajout dans l'arbre d'étude du nom du jdc
- ok, msg = self.appli.addJdcInSalome( self.JDCDisplay_courant.fichier )
+ ok, msg = self.appli.addJdcInSalome( self.JDCDisplay_courant.fichier )
#2)CS_pbruno ??
- from panelsSalome import SALOME_UNIQUE_BASE_Panel
- if len(SALOME_UNIQUE_BASE_Panel.dict_fichier_unite) > 0 :
- print 'CS_pbruno if len(SALOMchier_unite) > 0 :???????'
- self.appli.creeConfigTxt( self.appli.CONFIGURATION.initialdir, SALOME_UNIQUE_BASE_Panel.dict_fichier_unite )
+ from panelsSalome import SALOME_UNIQUE_BASE_Panel
+ if len(SALOME_UNIQUE_BASE_Panel.dict_fichier_unite) > 0 :
+ print 'CS_pbruno if len(SALOMchier_unite) > 0 :???????'
+ self.appli.creeConfigTxt( self.appli.CONFIGURATION.initialdir, SALOME_UNIQUE_BASE_Panel.dict_fichier_unite )
- #3)création/mise à jours d'un maillage dans Salome
- self.appli.createOrUpdateMesh()
+ #3)création/mise à jours d'un maillage dans Salome
+ self.appli.createOrUpdateMesh()
return ok
def asknomsauvegardeJDC(self):
self.appli.salome.rangeInStudy(file_homard,"_CONF")
# ---------------------------------------------------------------------------
-# Méthodes liées aux mots-clés inconnus
+# Méthodes liées aux mots-clés inconnus
# ---------------------------------------------------------------------------
def mc_inconnus(self):
p.readfile(fichier)
text=p.convert('exec',self)
if not p.cr.estvide():
- print ("Erreur à la conversion")
- print str(p.cr)
+ print ("Erreur à la conversion")
+ print str(p.cr)
return
# On se met dans le repertoire ou se trouve le fichier de commandes
def modifieJDC(self,texte):
if texte == None or texte == "" : return
format="python"
- lignes=string.split(texte,";")
- textedecoup=""
- for l in lignes :
- textedecoup=textedecoup+l+'\n'
+ lignes=string.split(texte,";")
+ textedecoup=""
+ for l in lignes :
+ textedecoup=textedecoup+l+'\n'
if convert.plugins.has_key(format):
p=convert.plugins[format]()
p.settext(textedecoup)
text=p.convert('exec',self)
- print text
+ print text
if not p.cr.estvide():
- print ("Erreur à la conversion")
- print str(p.cr)
+ print ("Erreur à la conversion")
+ print str(p.cr)
return
self.J2=self.cata[0].JdC(procedure=text,appli=self,
cata=self.cata,
- cata_ord_dico=self.readercata.cata_ordonne_dico,
+ cata_ord_dico=self.readercata.cata_ordonne_dico,
nom = self.JDCName+"2",
rep_mat=self.CONFIGURATION.rep_mat,
)
- self.J2.definition.code = "MODIF"
+ self.J2.definition.code = "MODIF"
self.J2.analyse()
self.jdc_fini = string.replace(jdc_formate,'\r\n','\n')
if not save_in_file(fichierSortie,self.jdc_fini) :
- self.affiche_infos("Problème à la sauvegarde du fichier")
+ self.affiche_infos("Problème à la sauvegarde du fichier")
return 0
else :
self.affiche_infos("sauvegarde effectuée")
Cette classe item dépend bien sûr de la nature de object, d'où
l'interrogation du dictionnaire composants
"""
+ # Si la definition de l'objet a un attribut itemeditor, il indique
+ # la classe a utiliser pour l'item
+ try:
+ return object.definition.itemeditor
+ except:
+ pass
-
- if type(object) == types.InstanceType:
- # Si la definition de l'objet a un attribut itemeditor, il indique
- # la classe a utiliser pour l'item
- try:
- return object.definition.itemeditor
- except:
- pass
-
- # On cherche ensuite dans les composants (plugins)
- try:
- itemtype= composants[object.__class__]
- return itemtype
- except:
- pass
-
- try :
- for e in composants.keys():
- if isinstance(object,e):
- itemtype= composants[e]
- return itemtype
- except :
- pass
+ # On cherche ensuite dans les composants (plugins)
+ try:
+ itemtype= composants[object.__class__]
+ return itemtype
+ except:
+ pass
# Puis une eventuelle classe heritee (aleatoire car sans ordre)
for e in composants.keys():
- if isinstance(object,e):
- itemtype= composants[e]
- return itemtype
+ if e and isinstance(object,e):
+ itemtype= composants[e]
+ return itemtype
- # Apres poum ??? Les lignes suivantes sont elles utiles ?
# Si on n'a rien trouve dans les composants on utilise l'objet par defaut
- print itemtype
- itemtype=ObjectTreeItem
+ itemtype=composants[None]
return itemtype
def make_objecttreeitem(appli,labeltext, object, setfunction=None):
--- /dev/null
+import Objecttreeitem
+treeitem = Objecttreeitem.ObjectTreeItem
+objet = None
--- /dev/null
+# -*- coding: utf-8 -*-
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
+# Modules Python
+from Tkinter import Label,Button
+
+#Modules Eficas
+from Noyau.N_OBJECT import ErrorObj
+import Objecttreeitem
+import panels
+
+class ERRORPanel(panels.Panel_Inactif):
+ def creer_texte(self):
+ texte = """Le noeud sélectionné correspond à un objet erroné """
+ label = Label(self,text=texte,justify='center')
+ label.place(relx=0.5,rely=0.4,relwidth=0.8,anchor='center')
+ bouton = Button(self,text = "Supprimer", command=self.supprimer)
+ bouton.place(relx=0.5,rely=0.5,anchor='center')
+
+class ERRORTreeItem(Objecttreeitem.AtomicObjectTreeItem):
+ panel = ERRORPanel
+ def GetIconName(self):
+ return "ast-red-ball"
+
+
+treeitem =ERRORTreeItem
+objet = ErrorObj
+
args = self.node.item.get_args()
if args:
texte_args=""
- for i in args :
- if texte_args != "" :
- texte_args = texte_args +","
- texte_args=texte_args + i
+ for i in args :
+ if texte_args != "" :
+ texte_args = texte_args +","
+ texte_args=texte_args + i
self.entry_arg.insert(END,texte_args)
corps = self.node.item.get_corps()
if corps :
"""
Lance la vérification du corps de formule présent dans entry_exp
"""
- new_nom = self.entry_nom.get()
- new_typ="REEL"
+ new_nom = self.entry_nom.get()
+ new_typ="REEL"
new_arg = self.entry_arg.get()
new_exp = self.entry_exp.get()
if new_exp == '':
Ce nom dépend de la validité de l'objet
"""
if self.object.isactif():
- self.object.state="modified"
+ self.object.state="modified"
if self.object.isvalid():
return "ast-green-square"
else:
"""
args=""
for mot in self.object.mc_liste:
- if mot.nom == 'NOM_PARA':
- args=mot.valeur
- break
+ if mot.nom == 'NOM_PARA':
+ args=mot.valeur
+ break
if args :
if args[0] == "(" and args[-1] ==")":
- args=args[1:-1]
- # transforme en tuple si ce n est pas déjà le casa
- try :
- args=string.split(args,',')
- except :
- pass
+ args=args[1:-1]
+ # transforme en tuple si ce n est pas déjà le casa
+ try :
+ args=string.split(args,',')
+ except :
+ pass
return args
def get_corps(self):
"""
corps=""
for mot in self.object.mc_liste:
- if mot.nom == 'VALE':
- corps=mot.valeur
- break
+ if mot.nom == 'VALE':
+ corps=mot.valeur
+ break
return corps
"""
Lance la vérification de FORMULE passée en argument
"""
- return self.object.verif_formule(formule=formule)
+ return self.object.verif_formule(formule=formule)
def verif_formule_python(self,formule):
"""
Lance la vérification de FORMULE passée en argument
"""
- return self.object.verif_formule_python(formule=formule)
+ return self.object.verif_formule_python(formule=formule)
import Accas
treeitem =FORMULETreeItem
import types
from Tkinter import *
import Pmw
+
+from Noyau.N_OBJECT import ErrorObj
import Objecttreeitem
import panels
import traceback
self.node.parent.append_child(self.node.item.get_nom())
import compofact
+import compoerror
import treewidget
+
class Node(treewidget.Node):
def doPaste(self,node_selected):
objet_a_copier = self.item.get_copie_objet()
class MCListTreeItem(Objecttreeitem.SequenceTreeItem,compofact.FACTTreeItem):
""" La classe MCListTreeItem joue le role d'un adaptateur pour les objets
du noyau Accas instances de la classe MCLIST.
- Elle adapte ces objets pour leur permettre d'etre intégrés en tant que
- noeuds dans un arbre graphique (voir treewidget.py et ObjectTreeItem.py).
- Cette classe délègue les appels de méthode et les accès
- aux attributs à l'objet du noyau soit manuellement soit
- automatiquement (voir classe Delegate et attribut object).
+ Elle adapte ces objets pour leur permettre d'etre intégrés en tant que
+ noeuds dans un arbre graphique (voir treewidget.py et ObjectTreeItem.py).
+ Cette classe délègue les appels de méthode et les accès
+ aux attributs à l'objet du noyau soit manuellement soit
+ automatiquement (voir classe Delegate et attribut object).
"""
itemNode=Node
self.updateDelegate()
def updateDelegate(self):
- if len(self._object) > 1:
- self.setdelegate(self._object)
- else:
- self.setdelegate(self._object.data[0])
+ if len(self._object) > 1:
+ self.setdelegate(self._object)
+ else:
+ self.setdelegate(self._object.data[0])
def panel(self,jdcdisplay,pane,node):
""" Retourne une instance de l'objet panneau associe a l'item (self)
FACTPanel.
Si la liste est plus longue on utilise le panneau MCLISTPanel.
"""
- if len(self._object) > 1:
+ if len(self._object) > 1:
return MCLISTPanel(jdcdisplay,pane,node)
- else:
- return compofact.FACTPanel(jdcdisplay,pane,node)
+ elif isinstance(self._object.data[0],ErrorObj):
+ return compoerror.ERRORPanel(jdcdisplay,pane,node)
+ else:
+ return compofact.FACTPanel(jdcdisplay,pane,node)
def IsExpandable(self):
- if len(self._object) > 1:
- return Objecttreeitem.SequenceTreeItem.IsExpandable(self)
- else:
- return compofact.FACTTreeItem.IsExpandable(self)
+ if len(self._object) > 1:
+ return Objecttreeitem.SequenceTreeItem.IsExpandable(self)
+ else:
+ return compofact.FACTTreeItem.IsExpandable(self)
def GetSubList(self):
self.updateDelegate()
- if len(self._object) <= 1:
+ if len(self._object) <= 1:
self._object.data[0].alt_parent=self._object
- return compofact.FACTTreeItem.GetSubList(self)
+ return compofact.FACTTreeItem.GetSubList(self)
liste=self._object.data
sublist=[None]*len(liste)
return self.object.get_docu()
def iscopiable(self):
- if len(self._object) > 1:
- return Objecttreeitem.SequenceTreeItem.iscopiable(self)
- else:
- return compofact.FACTTreeItem.iscopiable(self)
+ if len(self._object) > 1:
+ return Objecttreeitem.SequenceTreeItem.iscopiable(self)
+ else:
+ return compofact.FACTTreeItem.iscopiable(self)
def isMCFact(self):
"""
Retourne 1 si l'objet pointé par self est un MCFact, 0 sinon
"""
- return len(self._object) <= 1
+ return len(self._object) <= 1
def isMCList(self):
"""
Retourne 1 si l'objet pointé par self est une MCList, 0 sinon
"""
- return len(self._object) > 1
-
+ return len(self._object) > 1
+
def get_copie_objet(self):
return self._object.data[0].copy()
def additem(self,obj,pos):
#print "compomclist.additem",obj,pos
- if len(self._object) <= 1:
+ if len(self._object) <= 1:
return compofact.FACTTreeItem.additem(self,obj,pos)
o= self.object.addentite(obj,pos)
def suppitem(self,item):
"""
- Retire un objet MCFACT de la MCList (self.object)
- """
+ Retire un objet MCFACT de la MCList (self.object)
+ """
#print "compomclist.suppitem",item
obj=item.getObject()
- if len(self._object) <= 1:
- return compofact.FACTTreeItem.suppitem(self,item)
+ if len(self._object) <= 1:
+ return compofact.FACTTreeItem.suppitem(self,item)
if self.object.suppentite(obj):
- if len(self._object) == 1: self.updateDelegate()
+ if len(self._object) == 1: self.updateDelegate()
message = "Mot-clé " + obj.nom + " supprimé"
self.appli.affiche_infos(message)
return 1
self.appli.affiche_infos('Impossible de supprimer ce mot-clé')
return 0
-
+
import Accas
objet = Accas.MCList
panneau.pack(expand=1,fill='both')
self.bouton_com.pack_forget()
self.makeJDCPage(panneau.pane('left'))
- self.enlevebind()
+ self.enlevebind()
import treewidget
self.valeur_choisie.set(choix)
except:
traceback.print_exc()
-
+
def choose_valeur_from_list(self,command):
try:
return self.object.get_noms_sd_oper_reentrant()
def get_objet_commentarise(self):
+ """
+ Cette méthode retourne un objet commentarisé
+ représentatif de self.object
+ """
+ # Format de fichier utilisé
+ format=self.appli.format_fichier.get()
+ return self.object.get_objet_commentarise(format)
+
+ def get_objet_commentarise_BAK(self):
"""
Cette méthode retourne un objet commentarisé
représentatif de self.object
return commande_comment
+ def visu_3D(self,appli,node) :
+ import TroisDPal
+ troisD=TroisDPal.TroisDPilote(node.item,appli,node.parent)
+ troisD.envoievisu()
+
import Accas
treeitem = EtapeTreeItem
objet = Accas.ETAPE
nb.tab('Parametre').focus_set()
nb.setnaturalsize()
self.make_buttons()
+ self.enlevebind()
+ self.creebind()
def makeParametrePage(self,page):
"""
"""
Retourne la valeur de l'objet PARAMETRE cad son texte
"""
- return self.object.valeur or ''
+ if self.object.valeur is None: return ''
+ else: return self.object.valeur
def get_nom(self):
"""
"""
Renomme le paramètre
"""
- self.object.set_attribut('nom',new_nom)
+ self.object.set_nom(new_nom)
+ #self.object.set_attribut('nom',new_nom)
def get_fr(self):
"""
from uniqueassdpanel import UNIQUE_ASSD_Panel
from uniqueassdpanel import UNIQUE_ASSD_Panel_Reel
if 'R' in self.GetType():
- self.panel = UNIQUE_ASSD_Panel_Reel
+ self.panel = UNIQUE_ASSD_Panel_Reel
else :
self.panel = UNIQUE_ASSD_Panel
else:
self.panel = UNIQUE_COMP_Panel
else:
# on attend un entier, un réel ou une string
- from uniquebasepanel import UNIQUE_BASE_Panel
+ from uniquebasepanel import UNIQUE_BASE_Panel
self.panel = UNIQUE_BASE_Panel
# cas particulier des fonctions
genea = self.get_genealogie()
if hasattr( self.appli, 'salome' ):
import panelsSalome
- self.select_noeud_maille=0
- self.clef_fonction="SALOME"
- for i in range(0,len( genea )) :
- self.clef_fonction=self.clef_fonction+"_"+ genea[i]
- if genea[i] == "GROUP_NO" or genea[i] == "GROUP_MA":
- self.select_noeud_maille=1
+ self.select_noeud_maille=0
+ self.clef_fonction="SALOME"
+ for i in range(0,len( genea )) :
+ self.clef_fonction=self.clef_fonction+"_"+ genea[i]
+ if genea[i] == "GROUP_NO" or genea[i] == "GROUP_MA":
+ self.select_noeud_maille=1
recherche=panelsSalome.dict_classes_salome[self.panel]
if hasattr(recherche,self.clef_fonction):
#
#-----------------------------------------------
# is_list
- # get_into a priori inutile --> commentee
+ # get_into a priori inutile --> commentee
# has_into
- # wait_into a priori inutile --> commentee
+ # wait_into a priori inutile --> commentee
# GetMinMax
# GetMultiplicite
# GetIntervalle
min,max = self.GetMinMax()
assert (min <= max)
if max > 1 :
- is_a_list=1
+ is_a_list=1
# Dans le cas avec validateurs, pour que le mot cle soit considéré
# comme acceptant une liste, il faut que max soit supérieur a 1
# ET que la méthode is_list du validateur retourne 1. Dans les autres cas
Deux cas principaux peuvent se presenter : avec validateurs ou bien sans.
Dans le cas sans validateur, l'information est donnée par l'attribut into
de la definition du mot cle.
- Dans le cas avec validateurs, pour que le mot cle soit considéré
+ Dans le cas avec validateurs, pour que le mot cle soit considéré
comme proposant un choix, il faut que into soit présent OU
que la méthode has_into du validateur retourne 1. Dans les autres cas
on retournera 0 (ne propose pas de choix)
"""
has_an_into=0
if self.definition.into:
- has_an_into=1
+ has_an_into=1
elif self.definition.validators :
has_an_into= self.definition.validators.has_into()
return has_an_into
def get_liste_possible(self,listeActuelle=[]):
if hasattr(self.definition.validators,'into'):
- self.get_definition().into=self.definition.validators.into
- valeurspossibles = self.get_definition().into
- # CCAR : Ne serait-il pas preferable d'appeler get_into ?
- #valeurspossibles=self.get_into(listeActuelle)
+ valeurspossibles = self.definition.validators.into
+ else:
+ valeurspossibles = self.get_definition().into
+ #On ne garde que les items valides
listevalideitem=[]
for item in valeurspossibles:
encorevalide=self.valide_item(item)
if encorevalide :
listevalideitem.append(item)
- # on ne verifie pas la liste des choix si max = 1
- # (sinon cela enleve tous les choix possibles)
- min,max=self.GetMinMax()
- if max != 1 :
- listevalideliste=[]
- for item in listevalideitem:
- listetravail=[]
- for item2 in listeActuelle : listetravail.append(item2)
- encorevalide=self.valide_liste_partielle(item,listetravail)
- if encorevalide :
- listevalideliste.append(item)
- else :
- listevalideliste=listevalideitem
+
+ #on ne garde que les choix possibles qui passent le test de valide_liste_partielle
+ listevalideliste=[]
+ for item in listevalideitem:
+ encorevalide=self.valide_liste_partielle(item,listeActuelle)
+ if encorevalide :
+ listevalideliste.append(item)
return listevalideliste
def get_liste_param_possible(self):
- #
liste_param=[]
for param in self.object.jdc.params:
- encorevalide=self.valide_item(param.valeur)
+ encorevalide=self.valide_item(param.valeur)
if encorevalide:
- type_param=param.valeur.__class__.__name__
- for typ in self.definition.type:
- if typ=='R':
- liste_param.append(param)
- if typ=='I' and type_param=='int':
- liste_param.append(param)
- if typ=='TXM' and type_param=='str':
- liste_param.append(repr(param))
+ type_param=param.valeur.__class__.__name__
+ for typ in self.definition.type:
+ if typ=='R':
+ liste_param.append(param)
+ if typ=='I' and type_param=='int':
+ liste_param.append(param)
+ if typ=='TXM' and type_param=='str':
+ liste_param.append(repr(param))
return liste_param
#--------------------------------------------------
def valide_item(self,item):
"""
- On fait un try except pour les erreurs de type (exple
- on rentre 1 pour une chaine de caracteres
+ On fait un try except pour les erreurs de type (exple
+ on rentre 1 pour une chaine de caracteres
"""
valide=1
if self.definition.validators :
try :
valide=self.definition.validators.verif_item(item)
except :
- valide = 0
+ valide = 0
return valide
def valide_liste_partielle(self,item,listecourante):
- valeur=listecourante
+ #On protege la liste en entree en la copiant
+ valeur=listecourante[:]
valeur.append(item)
- valeur = tuple(valeur)
return self.object.valid_valeur_partielle(valeur)
def valide_liste_complete (self,valeur):
return self.object.valid_valeur(valeur)
+ def valide_val (self,valeur):
+ return self.object.valid_val(valeur)
+
def info_erreur_item(self) :
commentaire=""
if self.definition.validators :
# Autres ...
#
#---------------------------------------------------
- # SetText a priori inutilisee --> commentee
+ # SetText a priori inutilisee --> commentee
# GetIconName
# GetText
# getval a priori inutilisee --> commentee
# set_valeur_co
# get_sd_avant_du_bon_type
- # verif a priori inutilisee --> commentee
+ # verif a priori inutilisee --> commentee
# delete_valeur_co
#def SetText(self, text):
boo=0
if len(self.object.definition.type) > 1 :
if self.wait_reel() :
- boo = 1
- if 'I' in self.object.definition.type :
- boo = 1
+ boo = 1
+ if 'I' in self.object.definition.type :
+ boo = 1
return boo
# traite_reel
def eval_valeur(self,valeur):
+ """ Lance l'interprétation de 'valeur' (chaîne de caractères) comme valeur de self :
+ - retourne l'objet associé si on a pu interpréter (entier, réel, ASSD,...)
+ - retourne 'valeur' (chaîne de caractères) sinon
+ """
+ newvaleur=self.eval_val(valeur)
+ return newvaleur,1
+
+ def eval_valeur_BAK(self,valeur):
""" Lance l'interprétation de 'valeur' (chaîne de caractères) comme valeur
de l'objet pointé par self :
- retourne l'objet associé si on a pu interpréter (entier, réel, ASSD,...)
newvaleur,validiteitem=self.eval_valeur_item(item)
valeurretour.append(newvaleur)
if validiteitem == 0:
- validite=0
+ validite=0
else :
valeurretour,validite= self.eval_valeur_item(valeur)
if validite == 0 :
- valeurretour = None
+ valeurretour = None
return valeurretour,validite
def eval_valeur_item(self,valeur):
""" Lance l'interprétation de 'valeur' qui doit ne pas etre un tuple
- - va retourner la valeur de retour et la validite
+ - va retourner la valeur de retour et la validite
selon le type de l objet attendu
- traite les reels et les parametres
"""
#print "eval_valeur_item",valeur
if valeur==None or valeur == "" :
- return None,0
+ return None,0
validite=1
if self.wait_reel():
valeurinter = self.traite_reel(valeur)
- if valeurinter != None :
+ if valeurinter != None :
valeurretour,validite= self.object.eval_valeur(valeurinter)
else:
valeurretour,validite= self.object.eval_valeur(valeur)
#print "eval_valeur_item",valeurretour,validite
if validite == 0:
- if type(valeur) == types.StringType and self.object.wait_TXM():
+ if type(valeur) == types.StringType and self.object.wait_TXM():
essai_valeur="'" + valeur + "'"
valeurretour,validite= self.object.eval_valeur(essai_valeur)
#validite=0
# on est dans le cas où on a évalué et où on n'aurait pas du
if self.object.wait_TXM() :
- if type(valeurretour) != types.StringType:
+ if type(valeurretour) != types.StringType:
valeurretour=str(valeur)
validite=1
return valeurretour,validite
def is_param(self,valeur) :
for param in self.jdc.params:
- if (repr(param) == valeur):
- return 1
+ if (repr(param) == valeur):
+ return 1
return 0
def traite_reel(self,valeur):
if string.find(valeur,'.') == -1 :
# aucun '.' n'a été trouvé dans valeur --> on en rajoute un à la fin
if (self.is_param(valeur)):
- return valeur
+ return valeur
else:
- if string.find(valeur,'e') != -1:
- # Notation scientifique ?
- try :
- r=eval(valeur)
- return valeur
- except :
- return None
- else :
+ if string.find(valeur,'e') != -1:
+ # Notation scientifique ?
+ try :
+ r=eval(valeur)
+ return valeur
+ except :
+ return None
+ else :
return valeur+'.'
else:
return valeur
from widgets import showinfo,showerror,askretrycancel
import utils
-class CONFIG:
- def __init__(self,appli,rep_ini):
- # si appli == None on est en mode commande (hors EFICAS)
+class CONFIGbase:
+
+ #-----------------------------------
+ def __init__(self,appli):
+ #-----------------------------------
+
+ # Classe de base permettant de lire, afficher
+ # et sauvegarder les fichiers utilisateurs editeur.ini
+ # et style.py
+ # Classe Mere de : class CONFIG(CONFIGbase)
+ # class CONFIGStyle(CONFIGbase):
+
self.appli = appli
- if self.appli:self.parent=appli.top
- else:self.parent=None
- self.rep_ini = rep_ini
+ if self.appli:
+ self.parent=appli.top
+ else:
+ self.parent=None
self.rep_user = utils.get_rep_user()
- self.lecture_parametres()
-
- def lecture_parametres(self):
- """
- Cette méthode teste l'existence du fichier editeur.ini au bon endroit et lance
- son interprétation
- """
- fic_ini = os.path.join(self.rep_ini,'editeur.ini')
- if not os.path.exists(fic_ini) or not os.path.isfile(fic_ini):
- if self.appli :
- showerror("Erreur","Impossible de trouver le fichier %s ! \n Prévenez la maintenance ..." %fic_ini)
- else:
- print "Impossible de trouver le fichier %s ! \n Prévenez la maintenance ..." %fic_ini
- sys.exit(0)
- self.fic_ini = fic_ini
- self.init_liste_param()
self.lecture_fichier_ini_standard()
self.lecture_fichier_ini_utilisateur()
-
+ self.init_liste_param()
+
+
+ #--------------------------------------
def lecture_fichier_ini_standard(self):
- """
- Relit les paramètres du fichier eficas.ini
- """
- txt = utils.read_file(self.fic_ini)
- d={}
+ #--------------------------------------
+ # Verifie l'existence du fichier "standard"
+ # appelle la lecture de ce fichier
+ if not os.path.isfile(self.fic_ini):
+ print self.fic_ini
+ showerror("Erreur","Pas de fichier de configuration" + self.fic_ini+"\n")
+ print "Erreur à la lecture du fichier de configuration : %s" % self.fic_ini
+ sys.exit(0)
+ self.lecture_fichier(self.fic_ini)
+
+ #-----------------------------
+ def lecture_fichier(self,fic):
+ #------------------------------
+ # lit les paramètres du fichier eficas.ini ou style.py
+ # les transforme en attribut de l 'objet
+ # utilisation du dictionnaire local pour récuperer style
+ txt = utils.read_file(fic)
+ from styles import style
+ d=locals()
try:
exec txt in d
except:
l=traceback.format_exception(sys.exc_info()[0],sys.exc_info()[1],sys.exc_info()[2])
- showerror("Erreur","Une erreur s'est produite dans la relecture du fichier de configuration : "
- + self.fic_ini+"\n"+string.join(l[2:]))
- print "Erreur à la lecture du fichier de configuration : %s" % self.fic_ini
- print string.join(l[2:])
+ showerror("Erreur","Une erreur s'est produite lors de la lecture du fichier : " + fic + "\n")
+ print "Erreur à la lecture du fichier de configuration : %s" % fic
sys.exit()
- for attr in self.l_nom_param:
- nom_attr,statut,defaut = attr
- #valeur = d.get(nom_attr,None)
- valeur = d.get(nom_attr,defaut)
- if not valeur and statut=='o':
- showerror("Erreur","Une erreur s'est produite dans la relecture du fichier de configuration : "
- + self.fic_ini+"\n EFICAS va vous demander les nouveaux paramètres")
- return
- setattr(self,nom_attr,valeur)
- self.init_liste_param()
+ for k in d.keys() :
+ if k in self.labels.keys() :
+ setattr(self,k,d[k])
+
+ for k in d['style'].__dict__.keys() :
+ setattr(self,k,d['style'].__dict__[k])
+
+ #--------------------------------------
def lecture_fichier_ini_utilisateur(self):
- """
- Surcharge les paramètres standards par les paramètres utilisateur s'ils existent
- """
- self.fic_ini_utilisateur = os.path.join(self.rep_user,'eficas.ini')
+ #--------------------------------------
+ # Surcharge les paramètres standards par les paramètres utilisateur s'ils existent
+ self.fic_ini_utilisateur = os.path.join(self.rep_user,self.fichier)
if not os.path.isfile(self.fic_ini_utilisateur):
- # pas de fichier de configuration utilisateur --> on passe
- return
- txt = utils.read_file(self.fic_ini_utilisateur)
- d={}
- try:
- exec txt in d
- except :
- showinfo("Erreur","Impossible d'interpréter le fichier de configuration utilisateur : %s" %self.fic_ini_utilisateur)
- traceback.print_exc()
return
- for attr in self.l_nom_param:
- nom_attr,statut,defaut = attr
- valeur = d.get(nom_attr,None)
- if valeur :
- setattr(self,nom_attr,valeur)
- self.init_liste_param()
+ self.lecture_fichier(self.fic_ini_utilisateur)
- def init_liste_param(self):
- """
- Génère la liste des paramètres
- l_param est une liste de tuples où chaque tuple est de la forme :
- (label,nature,nom_var,defaut)
- """
- self.l_param=[]
- # répertoire initial pour OPEN/SAVE des fichiers de commande
- # Par defaut, EFICAS utilise le repertoire utilisateur $HOME/Eficas_install
- # Il est possible de specifier dans editeur.ini ou eficas.ini un autre chemin
- # Ce peut etre un chemin absolu ou le repertoire courant (os.curdir)
- if hasattr(self,'initialdir'):
- self.l_param.append(("Répertoire initial pour Open/save des fichiers de commande",'rep','initialdir',self.initialdir))
- else:
- self.l_param.append(("Répertoire initial pour Open/save des fichiers de commande",'rep','initialdir',self.rep_user))
- # répertoire de travail
- if hasattr(self,'rep_travail'):
- self.l_param.append(("Répertoire de travail",'rep','rep_travail',self.rep_travail))
- else:
- self.l_param.append(("Répertoire de travail",'rep','rep_travail',
- os.path.join(self.rep_user,'uaster','tmp_eficas')))
- # répertoire des catalogues matériaux
- if hasattr(self,'rep_mat'):
- self.l_param.append(("Répertoire materiaux",'rep','rep_mat',self.rep_mat))
- else:
- self.l_param.append(("Répertoire materiaux",'rep','rep_mat','/aster/v4/materiau'))
- # chemin d'accès exécutable acrobat reader
- if hasattr(self,'exec_acrobat'):
- self.l_param.append(("Ligne de commande Acrobat Reader",'file','exec_acrobat',self.exec_acrobat))
- else:
- self.l_param.append(("Ligne de commande Acrobat Reader",'file','exec_acrobat',self.rep_user))
- # répertoire contenant la doc Aster
- if hasattr(self,'path_doc'):
- self.l_param.append(("Chemin d'accès à la doc Aster",'rep','path_doc',self.path_doc))
- else:
- self.l_param.append(("Chemin d'accès à la doc Aster",'rep','path_doc',self.rep_user))
- # chemin(s) d'accès au(x) catalogue(s)
- if hasattr(self,'catalogues'):
- self.l_param.append(("Versions du code ",'cata','catalogues',self.catalogues))
- else:
- self.l_param.append(("Versions du code ",'cata','catalogues',os.path.join(self.rep_ini,'..','Cata/cata.py')))
- # attribut développeur
- if hasattr(self,'isdeveloppeur'):
- # self.l_param.append(("Etes-vous développeur ?",'YesNo','isdeveloppeur',self.isdeveloppeur))
- self.l_param.append(("Niveau de message ",'YesNo','isdeveloppeur',self.isdeveloppeur,'Deboggage','Utilisation'))
- else:
- # self.l_param.append(("Etes-vous développeur ?",'YesNo','isdeveloppeur','NON'))
- self.l_param.append(("Niveau de message ",'YesNo','isdeveloppeur','NON','Deboggage','Utilisation'))
- # répertoire où sont contenus les catalogues développeurs
- if hasattr(self,'path_cata_dev') and hasattr(self,'isdeveloppeur') and self.isdeveloppeur == 'OUI':
- self.l_param.append(("Chemin d'accès aux catalogues développeurs",'rep','path_cata_dev',self.path_cata_dev))
- else:
- self.l_param.append(("Chemin d'accès aux catalogues développeurs",'rep','path_cata_dev',
- os.path.join(self.rep_user,'cata')))
- self.l_param = tuple(self.l_param)
- self.l_nom_param=[]
- statut='o'
- for tup in self.l_param:
- if tup[1] == 'YesNo':
- # les paramètres suivant tup sont facultatifs ...
- statut='f'
- self.l_nom_param.append((tup[2],statut,tup[3])) # nom,statut,defaut
+ #--------------------------------------
def affichage_fichier_ini(self):
+ #--------------------------------------
"""
Affichage des valeurs des paramètres relus par Eficas
"""
import widgets
result = widgets.Formulaire(self.parent,
obj_pere = self,
- titre = "Paramètres nécessaires à la configuration d'EFICAS",
- texte = "Voici les paramètres que requiert Eficas",
+ titre = self.titre,
+ texte = self.texte_ini,
items = self.l_param,
mode='display',
- commande=('Modifier',self.creation_fichier_ini_si_possible))
+ commande=('Modifier',self.commande))
if result.resultat :
- print 'on sauvegarde les nouveaux paramètres :',result.resultat
+ #print 'on sauvegarde les nouveaux paramètres :',result.resultat
self.save_param_ini(result.resultat)
+ #--------------------------------------
def save_param_ini(self,dico):
- """
- Sauvegarde les nouveaux paramètres dans le fichier de configuration utilisateur
- """
+ #--------------------------------------
+ # sauvegarde
+ # les nouveaux paramètres dans le fichier de configuration utilisateur
+ #
f=open(self.fic_ini_utilisateur,'w+')
for k,v in dico.items():
- if k == 'catalogues' :
+ if self.types[k] in ('mot2','mot3','mot4'):
+ v1=v[1:-1]
+ val=v1.split(",")
+ p = "("
+ listeval=""
+ for valeur in val:
+ listeval = listeval+ p + str(valeur)
+ p=" , "
+ listeval = listeval + ")"
+ f.write(str(self.pref)+str(k) + '=' + str(listeval) + '\n')
+ elif k == 'catalogues' :
f.write(k + '\t=\t' + str(v) + '\n')
else:
- f.write(k + '\t=\t"' + str(v) + '"\n')
+ f.write(str(self.pref)+str(k) + '\t=\t"' + str(v) + '"\n')
f.close()
self.lecture_fichier_ini_utilisateur()
+ #-------------------------------------------
def creation_fichier_ini_si_possible(self):
+ #-------------------------------------------
return self.creation_fichier_ini(mode='ignorer_annuler')
+ #--------------------------------------------------------
def creation_fichier_ini(self,mode='considerer_annuler'):
- """
- Récupération des valeurs des paramétres requis pour la création du fichier
- eficas.ini
- """
+ #---------------------------------------------------------
+ # Récupération des valeurs des paramétres requis pour la création du fichier
+ # eficas.ini
+ #
import widgets
- texte = "EFICAS a besoin de certains renseignements pour se configurer\n"+\
- "Veuillez remplir TOUS les champs ci-dessous et appuyer sur 'Valider'\n"+\
- "Si vous annulez, EFICAS ne se lancera pas !!"
items = self.l_param
result = widgets.Formulaire(self.parent,
obj_pere = self,
titre = "Saisie des données indispensables à la configuration d'EFICAS",
- texte = texte,
+ texte = self.texte,
items = items,
mode='query')
if not result.resultat :
self.save_param_ini(result.resultat)
return result.resultat
+ #--------------------------
+ def init_liste_param (self):
+ #--------------------------
+ # construit self.l_param
+ # a partir de self.labels et des attributs
+ # de l objet (mis a jour lors de la lecture du fichier)
+ # l_param est une liste de tuples où chaque tuple est de la forme :
+ # (label,nature,nom_var,defaut)
+
+ self.l_param=[]
+ for k in self.labels.keys() :
+ if hasattr(self,k) :
+ if k in self.YesNo.keys():
+ self.l_param.append((self.labels[k],self.types[k],k,self.__dict__[k],
+ self.YesNo[k][0],self.YesNo[k][1]))
+ else :
+ self.l_param.append((self.labels[k],self.types[k],k,self.__dict__[k]))
+ self.l_param = tuple(self.l_param)
+
+
+class CONFIG(CONFIGbase):
+ def __init__(self,appli,rep_ini):
+ self.texte = "EFICAS a besoin de certains renseignements pour se configurer\n"+\
+ "Veuillez remplir TOUS les champs ci-dessous et appuyer sur 'Valider'\n"+\
+ "Si vous annulez, EFICAS ne se lancera pas !!"
+ self.fichier="editeur.ini"
+ self.rep_ini = rep_ini
+ self.fic_ini = os.path.join(self.rep_ini,self.fichier)
+ self.titre = "Paramètres nécessaires à la configuration d'EFICAS"
+ self.texte_ini = "Voici les paramètres que requiert Eficas"
+ self.commande = self.creation_fichier_ini_si_possible
+ self.pref=""
+ self.labels={"initialdir" : "Répertoire initial pour Open/Save des fichiers",
+ "rep_travail" : "Répertoire de travail",
+ "rep_mat" : "Répertoire materiaux",
+ "path_doc" : "Chemin d'accès à la doc Aster",
+ "exec_acrobat" : "Ligne de commande Acrobat Reader",
+ "catalogues" : "Versions du code ",
+ "isdeveloppeur" : "Niveau de message ",
+ "path_cata_dev" : "Chemin d'accès aux catalogues développeurs"}
+
+ self.types ={"initialdir":"rep", "rep_travail":"rep","rep_mat":"rep",
+ "path_doc": "rep","exec_acrobat":"file","exec_acrobat":"file",
+ "catalogues" :"cata","isdeveloppeur":"YesNo","path_cata_dev":"rep"}
+
+ self.YesNo={}
+ self.YesNo['isdeveloppeur']=('Deboggage','Utilisation')
+
+ # Valeurs par defaut
+ self.rep_user = utils.get_rep_user()
+ self.initialdir=self.rep_user
+ self.rep_travail=os.path.join(self.rep_user,'uaster','tmp_eficas')
+ self.rep_mat='/aster/v7/materiau'
+ self.path_doc=self.rep_user
+ self.exec_acrobat=self.rep_user
+ self.catalogues= os.path.join(self.rep_ini,'..','Cata/cata.py')
+ self.isdeveloppeur='NON'
+ self.path_cata_dev=os.path.join(self.rep_user,'cata')
+
+ CONFIGbase.__init__ (self,appli)
+
+
+class CONFIGStyle(CONFIGbase):
+ def __init__(self,appli,rep_ini):
+ self.texte = "Pour prendre en compte les modifications \n"+\
+ " RELANCER EFICAS"
+ self.fichier="style.py"
+ self.rep_ini = rep_ini
+ self.fic_ini = os.path.join(self.rep_ini,self.fichier)
+ self.titre = "Paramètres d affichage"
+ self.texte_ini = "Voici les paramètres configurables : "
+ self.commande = self.creation_fichier_ini_si_possible
+ self.pref="style."
+ self.labels={"background":"couleur du fonds",
+ "foreground":"couleur de la police standard" ,
+ "standard":" police et taille standard",
+ "standard_italique":"police utilisée pour l'arbre ",
+ "standard_gras_souligne":"police utilisée pour le gras souligné",
+ "canvas_italique":"police italique",
+ "standard_gras":"gras",
+ #"canvas":"police",
+ #"canvas_gras":"police gras",
+ #"canvas_gras_italique":"police gras italique",
+ #"standard12":"police 12",
+ #"standard12_gras":"police 12 gras",
+ #"standard12_gras_italique":"police 12 gras italique",
+ #"standardcourier10":"courrier "
+ "statusfont":"police utilisée dans la status Bar",
+ }
+ self.types ={"background":"mot",
+ "foreground":"mot" ,
+ "standard":"mot2",
+ "standard_italique":"mot3",
+ "standard_gras":"mot3",
+ "standard_gras_souligne":"mot4",
+ "canvas":"mot2",
+ "canvas_italique":"mot3",
+ "canvas_gras":"mot3",
+ "canvas_gras_italique":"mot4",
+ "standard12":"mot2",
+ "standard12_gras":"mot3",
+ "standard12_gras_italique":"mot4",
+ "statusfont":"mot2",
+ "standardcourier10":"mot2"}
+ self.YesNo={}
+ self.l_param=[]
+ CONFIGbase.__init__ (self,appli)
+
+ def affichage_style_ini(self):
+ self.affichage_fichier_ini()
+
def make_config(appli,rep):
return CONFIG(appli,rep)
+def make_config_style(appli,rep):
+ return CONFIGStyle(appli,rep)
+
def browse(self,result):
if result == 'Browse':
- self.ulfile = askopenfilename(title="Choix fichier :")
+ self.ulfile = askopenfilename(parent=self.dialog.component('hull'),title="Choix fichier :")
self._ulfile.setentry(self.ulfile)
elif result == 'OK':
self.ulfile = self._ulfile.get()
if generator.plugins.has_key(format):
g=generator.plugins[format]()
jdc_formate=g.gener(J,format='beautifie')
- print "hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh"
- print jdc_formate
jdc_fini = string.replace(jdc_formate,'\r\n','\n')
- print jdc_fini
utils.save_in_file(fileName+".comm",jdc_fini,None)
def convertir(texte):
-------------------------------------------------------------------------------------------------------------
- FAQs et Limitations d'EFICAS
+ FAQs et Limitations d'EFICAS
-------------------------------------------------------------------------------------------------------------
1. Mots réservés :
- Tous les mots du langage Python sont des mots réservés.
- On ne peut donc pas appeler une variable ou un concept 'fin' ou 'dir'
- Pour la liste complète de ces mots-clés, veuillez vous référer à la
- documentation Python
+ Tous les mots du langage Python sont des mots réservés.
+ On ne peut donc pas appeler une variable ou un concept 'fin' ou 'dir'
+ Pour la liste complète de ces mots-clés, veuillez vous référer à la
+ documentation Python
2. Concepts réentrants :
- Ne pas indiquer par un '&' devant son nom qu'un concept est utilisé comme
- concept réentrant. En effet EFICAS le sait !
+ Ne pas indiquer par un '&' devant son nom qu'un concept est utilisé comme
+ concept réentrant. En effet EFICAS le sait !
3. Carte commentaire :
- La carte commentaire est désormais le '#' (dièse) au lieu du '%' (pourcent)
+ La carte commentaire est désormais le '#' (dièse) au lieu du '%' (pourcent)
Les commentaires sont gérés comme des objets de même niveau que les
commandes ; il n'est plus possible de placer des commentaires "dans"
une commande. Attention, lors de la traduction d'un fichier de version 5
4. Nommer le concept produit par un opérateur :
- Vous ne pouvez nommer le concept produit d'un opérateur que lorsque
- celui-ci aura été entièrement et correctement rempli.
+ Vous ne pouvez nommer le concept produit d'un opérateur que lorsque
+ celui-ci aura été entièrement et correctement rempli.
5. Règle de rémanence dans les mots-clés facteurs répétés :
- La règle de rémanence qui permettait pour certains mots-clés facteurs
- et pour certains de leurs mots-clés simples de ne pas répeter la valeur
- de ces derniers dans toutes les occurrences du mot-clé facteur n'est pas
- connue d'EFICAS.
- En conséquence, vous devez répéter les mots-clés simples concernés dans
- toutes les occurrences des mots-clés facteurs.
+ La règle de rémanence qui permettait pour certains mots-clés facteurs
+ et pour certains de leurs mots-clés simples de ne pas répeter la valeur
+ de ces derniers dans toutes les occurrences du mot-clé facteur n'est pas
+ connue d'EFICAS.
+ En conséquence, vous devez répéter les mots-clés simples concernés dans
+ toutes les occurrences des mots-clés facteurs.
6. Besoin d'aide ?
-
- La documentation d'utilisation d'EFICAS a pris un peu de retard sur le produit ...
- Néanmoins, vous disposez sur la plupart des panneaux contextuels ( les panneaux à
- droite de l'arbre) d'une aide en ligne que vous pouvez activer en maintenant le
- bouton droit de votre souris enfoncé.
+
+ La documentation d'utilisation d'EFICAS a pris un peu de retard sur le produit ...
+ Néanmoins, vous disposez sur la plupart des panneaux contextuels ( les panneaux à
+ droite de l'arbre) d'une aide en ligne que vous pouvez activer en maintenant le
+ bouton droit de votre souris enfoncé.
self.mc_courant = None
self.var_quit = IntVar(0)
self.entry_courante = None
-
+
def init_frames(self):
"""
Création des 2 frames devant contenir le label et la liste des MC inconnus
self.fenetre.update_idletasks()
Label(self.frame1,
text = txt,
- wraplength = int(self.frame1.winfo_width()*0.8),
- justify = 'center').place(relx=0.5,rely=0.5,anchor='center')
+ wraplength = int(self.frame1.winfo_width()*0.8),
+ justify = 'center').place(relx=0.5,rely=0.5,anchor='center')
def init_liste_mc(self):
for mc in self.l_mc :
# mc est une liste :
# mc contient comme premiers arguments l'étape et éventuellement les blocs, mcfact ...
- # et contient comme 2 derniers éléments le nom du mot-clé et sa valeur
- path_mc = self.get_path(mc[0:-2])
- nom_mc = mc[-2]
- lab=Label(self.frame2,text = path_mc)
- lab.grid(row=i,column=1,sticky=W)
- e = Entry(self.frame2)
- e.grid(row=i,column=0,sticky=W)
- e.insert(END,nom_mc)
- #e.bind("<Button-1>",lambda event,en=e,m=mc,s=self : s.select_mc(m,en))
- #e.bind("<Return>",lambda e,s=self : s.modifie_mc())
- e.configure(relief='flat',state='disabled')
+ # et contient comme 2 derniers éléments le nom du mot-clé et sa valeur
+ path_mc = self.get_path(mc[0:-2])
+ nom_mc = mc[-2]
+ lab=Label(self.frame2,text = path_mc)
+ lab.grid(row=i,column=1,sticky=W)
+ e = Entry(self.frame2)
+ e.grid(row=i,column=0,sticky=W)
+ e.insert(END,nom_mc)
+ #e.bind("<Button-1>",lambda event,en=e,m=mc,s=self : s.select_mc(m,en))
+ #e.bind("<Return>",lambda e,s=self : s.modifie_mc())
+ e.configure(relief='flat',state='disabled')
self.widgets.append((e,lab))
i=i+1
def init_boutons(self):
"""
- Construit les boutons Modifier,Supprimer et Fermer
- Les deux premiers sont inactifs tant qu'aucun mot-clé n'est sélectionné
- """
- self.b_mod = Button(self.frame3,
- text = "Modifier",
- disabledforeground = 'grey35',
- state='disabled',
- command = self.modifie_mc)
- self.b_sup = Button(self.frame3,
- text = "Supprimer",
- disabledforeground = 'grey35',
- state='disabled',
- command = self.supprime_mc)
- self.b_quit = Button(self.frame3,
- text = "Fermer",
- command = self.quit)
- #self.b_mod.place(relx=0.25,rely=0.5,anchor='center')
- #self.b_sup.place(relx=0.50,rely=0.5,anchor='center')
- #self.b_quit.place(relx=0.75,rely=0.5,anchor='center')
- self.b_quit.place(relx=0.50,rely=0.5,anchor='center')
-
+ Construit les boutons Modifier,Supprimer et Fermer
+ Les deux premiers sont inactifs tant qu'aucun mot-clé n'est sélectionné
+ """
+ self.b_mod = Button(self.frame3,
+ text = "Modifier",
+ disabledforeground = 'grey35',
+ state='disabled',
+ command = self.modifie_mc)
+ self.b_sup = Button(self.frame3,
+ text = "Supprimer",
+ disabledforeground = 'grey35',
+ state='disabled',
+ command = self.supprime_mc)
+ self.b_quit = Button(self.frame3,
+ text = "Fermer",
+ command = self.quit)
+ #self.b_mod.place(relx=0.25,rely=0.5,anchor='center')
+ #self.b_sup.place(relx=0.50,rely=0.5,anchor='center')
+ #self.b_quit.place(relx=0.75,rely=0.5,anchor='center')
+ self.b_quit.place(relx=0.50,rely=0.5,anchor='center')
+
def wait_new_list(self):
"""
- Cette méthode rend cette toplevel bloquante.
- Dès que la variable var_quit est modifiée, on continue l'exécution de cette
- méthode (et on quitte)
- """
- self.fenetre.wait_variable(self.var_quit)
- self.fenetre.destroy()
- return self.new_l_mc
-
+ Cette méthode rend cette toplevel bloquante.
+ Dès que la variable var_quit est modifiée, on continue l'exécution de cette
+ méthode (et on quitte)
+ """
+ self.fenetre.wait_variable(self.var_quit)
+ self.fenetre.destroy()
+ return self.new_l_mc
+
def get_path(self,l_o):
"""
- Construit la chaîne de caractère contenant le chemin d'accès complet du mot-clé
- """
- txt = ''
- for o in l_o :
- txt = txt + o.nom+'/'
- # on enlève le dernier slash en trop
- txt = txt[0:-1]
- return txt
+ Construit la chaîne de caractère contenant le chemin d'accès complet du mot-clé
+ """
+ txt = ''
+ for o in l_o :
+ txt = txt + o.nom+'/'
+ # on enlève le dernier slash en trop
+ txt = txt[0:-1]
+ return txt
def select_mc(self,mc,entry):
"""
- Enregistre le mot-clé passé en argument comme mot-clé courant
- Active les boutons Modifier et Supprimer
- """
- self.desactive_entry()
- self.mc_courant = mc
- self.entry_courante = entry
- self.active_boutons()
- self.active_entry()
+ Enregistre le mot-clé passé en argument comme mot-clé courant
+ Active les boutons Modifier et Supprimer
+ """
+ self.desactive_entry()
+ self.mc_courant = mc
+ self.entry_courante = entry
+ self.active_boutons()
+ self.active_entry()
def modifie_mc(self):
"""
- Modifie le nom du mot-clé en prenant la nouvelle valeur lue dans entry_courante
- """
- new_nom_mc = self.entry_courante.get()
- index = self.l_mc.index(self.mc_courant)
- new_mc = self.new_l_mc[index]
- new_mc[-2] = new_nom_mc
- objet_pere = self.mc_courant[-3]
-
- self.desactive_boutons()
- self.desactive_entry()
+ Modifie le nom du mot-clé en prenant la nouvelle valeur lue dans entry_courante
+ """
+ new_nom_mc = self.entry_courante.get()
+ index = self.l_mc.index(self.mc_courant)
+ new_mc = self.new_l_mc[index]
+ new_mc[-2] = new_nom_mc
+ objet_pere = self.mc_courant[-3]
+
+ self.desactive_boutons()
+ self.desactive_entry()
def supprime_mc(self):
"""
- Supprime le mot-clé courant de la liste
- """
- index = self.l_mc.index(self.mc_courant)
- self.new_l_mc[index] = None
+ Supprime le mot-clé courant de la liste
+ """
+ index = self.l_mc.index(self.mc_courant)
+ self.new_l_mc[index] = None
e,lab=self.widgets[index]
e.grid_remove()
lab.grid_remove()
- self.desactive_boutons()
- self.desactive_entry()
-
+ self.desactive_boutons()
+ self.desactive_entry()
+
def desactive_boutons(self):
"""
- Désactive les boutons Modifier et Supprimer
- """
- self.b_mod.configure(state='disabled')
- self.b_sup.configure(state='disabled')
-
+ Désactive les boutons Modifier et Supprimer
+ """
+ self.b_mod.configure(state='disabled')
+ self.b_sup.configure(state='disabled')
+
def active_boutons(self):
"""
- Active les boutons Modifier et Supprimer
- """
- self.b_mod.configure(state='normal')
- self.b_sup.configure(state='normal')
+ Active les boutons Modifier et Supprimer
+ """
+ self.b_mod.configure(state='normal')
+ self.b_sup.configure(state='normal')
def desactive_entry(self):
"""
- Désactive l'entry courante si elle existe
- """
- if self.entry_courante :
- self.entry_courante.configure(state='disabled',relief='flat')
-
+ Désactive l'entry courante si elle existe
+ """
+ if self.entry_courante :
+ self.entry_courante.configure(state='disabled',relief='flat')
+
def active_entry(self):
"""
- Active l'entry courante si elle existe
- """
- if self.entry_courante :
- self.entry_courante.configure(state='normal',relief='sunken')
-
+ Active l'entry courante si elle existe
+ """
+ if self.entry_courante :
+ self.entry_courante.configure(state='normal',relief='sunken')
+
def quit(self):
"""
- Permet de fermer la fenêtre
- """
- self.var_quit.set(1)
+ Permet de fermer la fenêtre
+ """
+ self.var_quit.set(1)
if __name__ == '__main__':
fenetre_mc_inconnus(('toto','titi'))
"""
genea=self.node.item.get_genealogie()
if "VALE" in genea:
- self.nb_valeurs=2
+ self.nb_valeurs=2
if "VALE_C" in genea:
- self.nb_valeurs=3
+ self.nb_valeurs=3
# On récupère la bulle d'aide du panneau, l'objet, l'aide,min et max (cardinalité de la liste),
# et la liste des valeurs déjà affectées à l'objet courant
bulle_aide=self.get_bulle_aide()
self.ajout_valeurs = None
# boutons Ajouter et Supprimer
- bouton_add = Button(self.frame_boutons_fleches,
+ self.bouton_add = Button(self.frame_boutons_fleches,
image = images.get_image('arrow_left'),
command = self.add_double_valeur_plusieurs_base)
- bouton_sup = Button(self.frame_boutons_fleches,
+ self.bouton_sup = Button(self.frame_boutons_fleches,
image = images.get_image('arrow_right'),
command = self.sup_valeur_sans_into)
- bouton_add.place(relx=0.3,rely=0.35)
- bouton_sup.place(relx=0.3,rely=0.65)
+ self.bouton_add.place(relx=0.3,rely=0.35)
+ self.bouton_sup.place(relx=0.3,rely=0.65)
# affichage de l'aide
self.frame_aide.update()
self.aide = Label(self.frame_aide,
text = aide,
justify='center',
anchor='center',
- wraplength=int(self.frame_aide.winfo_width()*0.8))
+ wraplength=int(self.frame_aide.winfo_width()*0.8))
self.aide.place(relx=0.5,rely=0.5,anchor='center',relwidth=1)
self.Liste_valeurs.affiche_liste()
# boutons Accepter et Annuler
- bouton_accepter = Button(self.frame_boutons,
+ self.bouton_accepter = Button(self.frame_boutons,
text='Valider',
command = lambda s=self,m=min,M=max : s.accepte_modifs_valeur_recolle(m,M))
- bouton_annuler = Button(self.frame_boutons,
+ self.bouton_annuler = Button(self.frame_boutons,
text = 'Annuler',
command = self.annule_modifs_valeur)
- for but in (bouton_accepter,bouton_annuler):
+ for but in (self.bouton_accepter,self.bouton_annuler):
but.pack(side='left',padx=4)
l_valeurs=[]
l1_valeurs = self.Liste_valeurs.get_liste()
for val in l1_valeurs :
- for item in val :
- l_valeurs.append(item)
+ for item in val :
+ l_valeurs.append(item)
self.accepte_modifs_valeur(min,max,l_valeurs)
doublevaleur_entree=doublevaleur_entree[1:-1]
if doublevaleur_entree[-1]==')' :
doublevaleur_entree=doublevaleur_entree[0:-2]
- val1=doublevaleur_entree.split(',')[0]
- val2=doublevaleur_entree.split(',')[1]
+ val1=doublevaleur_entree.split(',')[0]
+ val2=doublevaleur_entree.split(',')[1]
saisie=(val1,val2)
if (self.nb_valeurs==3):
- val3=doublevaleur_entree.split(',')[2]
+ val3=doublevaleur_entree.split(',')[2]
saisie=(val1,val2,val3)
self.entry.delete(0,END)
except :
commentaire = "%s n est pas un tuple de la forme (x,y)" %`doublevaleur_entree`
if (self.nb_valeurs==3):
- commentaire = "%s n est pas un tuple de la forme (x,y,z)" %`doublevaleur_entree`
+ commentaire = "%s n est pas un tuple de la forme (x,y,z)" %`doublevaleur_entree`
self.parent.appli.affiche_infos(commentaire)
return
# et seulement d un tuple
try:
- val=doublevaleur_entree.split(',')[self.nb_valeurs]
+ val=doublevaleur_entree.split(',')[self.nb_valeurs]
commentaire = "%s n est pas un tuple de la forme (x,y)" %`doublevaleur_entree`
if (self.nb_valeurs==3):
- commentaire = "%s n est pas un tuple de la forme (x,y,z)" %`doublevaleur_entree`
+ commentaire = "%s n est pas un tuple de la forme (x,y,z)" %`doublevaleur_entree`
self.parent.appli.affiche_infos(commentaire)
self.parent.appli.affiche_infos(commentaire)
return
except :
# c est la le cas normal
- pass
+ pass
# on verifie la validite des valeurs sont correctes
valeur,validite=self.node.item.eval_valeur(saisie)
if not validite :
commentaire = "impossible d'évaluer : %s " %`doublevaleur_entree`
self.parent.appli.affiche_infos(commentaire)
- return
+ return
# on verifie la validite de la liste
liste=[]
l1_valeurs = self.Liste_valeurs.get_liste()
for val in l1_valeurs :
- for item in val :
- liste.append(item)
+ for item in val :
+ liste.append(item)
validite_liste=self.node.item.valide_liste_partielle(valeur[0],liste)
if not validite_liste:
commentaire = "impossible d'ajouter %s a la liste " %`doublevaleur_entree`
self.parent.appli.affiche_infos(commentaire)
- return
+ return
# liste a deja ete modifiee par l appel precedent a valide_liste_partielle
# et contient deja valeur[0]
validite_liste=self.node.item.valide_liste_partielle(valeur[1],liste)
if not validite_liste:
commentaire = "impossible d'ajouter %s a la liste " %`doublevaleur_entree`
self.parent.appli.affiche_infos(commentaire)
- return
+ return
# si une valeur est selectionnee on insere apres
# sinon on ajoute la valeur à la fin
try:
affiche="("
separe=""
- for val in valeur:
- affiche=affiche+separe+str(val)
- separe=","
+ for val in valeur:
+ affiche=affiche+separe+str(val)
+ separe=","
affiche=affiche+")"
self.entry.delete(0,END)
- self.entry.insert(0,affiche)
+ self.entry.insert(0,affiche)
except :
- self.entry.delete(0,END)
+ self.entry.delete(0,END)
# Surcharge de select in file pour prendre en compte la saisie de tuple
def select_in_file(self):
item=self.appli.noeud_a_editer.item
self.appli.noeud_a_editer.delete()
child.item.update(item)
- #test,mess = child.item.nomme_sd(nom)
+ #test,mess = child.item.nomme_sd(nom)
child.select()
# on rend la copie à nouveau possible en libérant le flag edit
self.appli.edit="copier"
self.traite_liste()
def init_Fichier(self):
- index=0
+ index=0
+ try :
+ f=open(self.monFichier)
+ while ( index < 5) :
+ ligne=f.readline()
+ if ligne != "" :
+ l=(ligne.split("\n"))[0]
+ self.liste_Fichiers.append(l)
+ index=index+1
+ except :
+ pass
try :
- f=open(self.monFichier)
- while ( index < 5) :
- ligne=f.readline()
- if ligne != "" :
- l=(ligne.split("\n"))[0]
- self.liste_Fichiers.append(l)
- index=index+1
- except :
- pass
- try :
- f.close()
- except :
- pass
+ f.close()
+ except :
+ pass
def sauve_Fichier(self):
try :
- if len(self.liste_Fichiers) == 0 :
- return
- f=open(self.monFichier,'w')
- index=0
- while ( index < len(self.liste_Fichiers)):
- ligne=self.liste_Fichiers[index]+"\n"
- f.write(ligne)
- index=index+1
- except :
- pass
- try :
- f.close()
- except :
- pass
+ if len(self.liste_Fichiers) == 0 :
+ return
+ f=open(self.monFichier,'w')
+ index=0
+ while ( index < len(self.liste_Fichiers)):
+ ligne=self.liste_Fichiers[index]+"\n"
+ f.write(ligne)
+ index=index+1
+ except :
+ pass
+ try :
+ f.close()
+ except :
+ pass
def traite_liste(self):
index=0
- for index in range(self.nbfich):
+ for index in range(self.nbfich):
self.menuFichier.delete(9)
- self.nbfich = 0
- index = 0
- while( index < len(self.liste_Fichiers)) :
- self.ajout_item(index)
- index=index+1
-
+ self.nbfich = 0
+ index = 0
+ while( index < len(self.liste_Fichiers)) :
+ self.ajout_item(index)
+ index=index+1
+
def ajout_item(self,index):
if self.premiere and (len(self.liste_Fichiers)!=0):
- self.premiere=0
- self.menuFichier.add_separator()
- label=self.liste_Fichiers[index]
+ self.premiere=0
+ self.menuFichier.add_separator()
+ label=self.liste_Fichiers[index]
self.menuFichier.insert_command(8,label=label,command= lambda self=self, l=label:self.coucou (l));
- self.nbfich=self.nbfich+1
+ self.nbfich=self.nbfich+1
def coucou(self,label):
self.appli.bureau.openJDC(file=label)
def aOuvert(self,file):
if file not in self.liste_Fichiers :
- if (len(self.liste_Fichiers) > 4) :
- f=self.liste_Fichiers[0]
- self.liste_Fichiers.remove(f)
- self.liste_Fichiers.insert(len(self.liste_Fichiers),file)
- else:
- self.liste_Fichiers.remove(file)
- self.liste_Fichiers.insert(len(self.liste_Fichiers),file)
- self.traite_liste()
- self.sauve_Fichier()
+ if (len(self.liste_Fichiers) > 4) :
+ f=self.liste_Fichiers[0]
+ self.liste_Fichiers.remove(f)
+ self.liste_Fichiers.insert(len(self.liste_Fichiers),file)
+ else:
+ self.liste_Fichiers.remove(file)
+ self.liste_Fichiers.insert(len(self.liste_Fichiers),file)
+ self.traite_liste()
+ self.sauve_Fichier()
def traite_liste(self):
for file in os.listdir(self.rep_patrons):
- for i in range(len(sous_menu)):
- clef=sous_menu[i].keys()[0]
- chaine=sous_menu[i][clef]
- if re.search(chaine,file) :
- if clef in self.liste.keys():
- self.liste[clef].append(file)
- else :
- self.liste[clef]=[file]
- break
+ for i in range(len(sous_menu)):
+ clef=sous_menu[i].keys()[0]
+ chaine=sous_menu[i][clef]
+ if re.search(chaine,file) :
+ if clef in self.liste.keys():
+ self.liste[clef].append(file)
+ else :
+ self.liste[clef]=[file]
+ break
def ajout_menu(self):
menuFichier=self.appli.menubar.menubar
- menu_cascade=Tkinter.Menu(menuFichier,tearoff=0)
- menuFichier.add_cascade(label="Patrons",menu=menu_cascade)
+ menu_cascade=Tkinter.Menu(menuFichier,tearoff=0)
+ menuFichier.add_cascade(label="Patrons",menu=menu_cascade)
for ss_menu in self.liste.keys():
- ssmenu=Tkinter.Menu(menu_cascade,tearoff=0)
- menu_cascade.add_cascade(label=ss_menu,menu=ssmenu)
- for fichier in self.liste[ss_menu]:
+ ssmenu=Tkinter.Menu(menu_cascade,tearoff=0)
+ menu_cascade.add_cascade(label=ss_menu,menu=ssmenu)
+ for fichier in self.liste[ss_menu]:
ssmenu.add_command(label=fichier,command= lambda self=self, l=fichier:self.ouvre(l));
def ouvre(self,label):
if self.parent.modified == 'n' : self.parent.init_modif()
self.node.item.set_valeur(name)
self.parent.appli.affiche_infos(mess)
- #if self.node.item.get_position()=='global':
- #self.node.etape.verif_all()
- #elif self.node.item.get_position()=='global_jdc':
- #self.node.racine.verif_all()
- #else :
- #self.node.parent.verif()
- #self.node.update()
def record_valeur(self,name=None,mess='Valeur du mot-clé enregistrée'):
"""
Enregistre val comme valeur de self.node.item.object
- en evaluant l item et en le validant
+ en evaluant l item et en le validant
Si name n'est pas renseigné, la valeur
"""
if self.parent.modified == 'n' : self.parent.init_modif()
if valeurentree == '': valeurentree=None
valeur,validite=self.node.item.eval_valeur(valeurentree)
if not validite :
- valeur= self.entry.get()
- commentaire = "impossible d'évaluer : %s " %`valeurentree`
- self.parent.appli.affiche_infos(commentaire)
-
+ valeur= self.entry.get()
+ commentaire = "impossible d'évaluer : %s " %`valeurentree`
+ self.parent.appli.affiche_infos(commentaire)
+
if validite :
- if self.node.item.is_list() :
- validite=self.node.item.valide_liste_complete(valeur)
- commentaire=self.node.item.info_erreur_liste()
- else :
- validite=self.node.item.valide_item(valeur)
- commentaire=self.node.item.info_erreur_item()
+ validite,commentaire=self.node.item.valide_val(valeur)
if validite :
self.node.item.set_valeur(valeur)
self.parent.appli.affiche_infos(mess)
- #if self.node.item.get_position()=='global':
- #self.node.etape.verif_all()
- #elif self.node.item.get_position()=='global_jdc':
- #self.node.racine.verif_all()
- #else :
- #self.node.parent.verif()
- #self.node.update()
- #if self.node.item.isvalid():
- # self.node.parent.select()
else :
self.parent.appli.affiche_infos(commentaire)
if not self.parent.appli.dict_reels.has_key(clefobj):
self.parent.appli.dict_reels[clefobj] = {}
self.parent.appli.dict_reels[clefobj][clef]=texte_valeur
- self.parent.appli.dict_reels[clefobj]
+ self.parent.appli.dict_reels[clefobj]
self.node.item.object.fin_modif()
except:
pass
("Affichage commandes",(("alphabétique",'&affichage_alpha'),("groupes",'&affichage_grp'))),
#("Couleur",(("fond",'change_fond'),("barre",'change_barre'))),
# ("Catalogue développeur",'choix_cata_developpeur'),
- ('Paramètres Eficas','affichage_fichier_ini'),
-
+ ('Paramètres Eficas','affichage_fichier_ini'),
+ ('Paramètres Affichage','affichage_style_ini'),
+
]
)
]
affichage_commandes="groupes"
if hasattr(panels,'panneauCommande'):
panel=panels.panneauCommande
- parent=panel.parent
- if parent != None :
- parent.create_panel(parent.node_selected)
- # si on a un panel avec plusieurs onglets
- # on affiche Commande
- try :
- parent.panel_courant.nb.selectpage("Commande")
- except :
- pass
+ parent=panel.parent
+ if parent != None :
+ parent.create_panel(parent.node_selected)
+ # si on a un panel avec plusieurs onglets
+ # on affiche Commande
+ try :
+ parent.panel_courant.nb.selectpage("Commande")
+ except :
+ pass
def affichage_alpha(self):
affichage_commandes="alphabetic"
if hasattr(panels,'panneauCommande'):
panel=panels.panneauCommande
- parent=panel.parent
- if parent != None :
- parent.create_panel(parent.node_selected)
- # si on a un panel avec plusieurs onglets
- # on affiche Commande
- try :
- parent.panel_courant.nb.selectpage("Commande")
- except :
- pass
+ parent=panel.parent
+ if parent != None :
+ parent.create_panel(parent.node_selected)
+ # si on a un panel avec plusieurs onglets
+ # on affiche Commande
+ try :
+ parent.panel_courant.nb.selectpage("Commande")
+ except :
+ pass
def change_fond(self):
from tkColorChooser import askcolor
def affichage_fichier_ini(self):
- self.appli.bureau.affichage_fichier_ini()
+ self.appli.CONFIGURATION.affichage_fichier_ini()
+
+
+ def affichage_style_ini(self):
+ self.appli.CONFIGStyle.affichage_style_ini()
# On termine la suppression de facon brutale (objets Tk et non Tk)
for k in self.__dict__.keys():
# il est plus prudent de ne pas détruire le lien sur le Node
- # si on voulait mettre l'attribut node à None, il faudrait
- # que tous les appels à node.parent.select() apparaissent après
- # toutes les autres actions liées au panel (node.item.isglobal(), ...)
+ # si on voulait mettre l'attribut node à None, il faudrait
+ # que tous les appels à node.parent.select() apparaissent après
+ # toutes les autres actions liées au panel (node.item.isglobal(), ...)
if k != 'node' : setattr(self,k,None)
def creer_boutons(self):
return
if OngletPanel.panelbind == None:
return
- OngletPanel.panelbind.unbind_all("<F1>")
- OngletPanel.panelbind.unbind_all("<F2>")
- OngletPanel.panelbind.unbind_all("<F3>")
- OngletPanel.panelbind.unbind_all("<F4>")
+ try:
+ OngletPanel.panelbind.unbind_all("<F1>")
+ OngletPanel.panelbind.unbind_all("<F2>")
+ OngletPanel.panelbind.unbind_all("<F3>")
+ OngletPanel.panelbind.unbind_all("<F4>")
+ except:
+ pass
OngletPanel.panelbind = None
def commande_up(self,num):
#print "commande_up de panels pour ", num
try :
- OngletPanel.panelbind.selectpage(num)
+ OngletPanel.panelbind.selectpage(num)
pageNew=OngletPanel.panelbind.page(num)
pageNew.focus_set()
except :
- pass
+ pass
def affiche(self):
page=self.nb.getcurselection()
self.nb.page(page).focus_set()
if page == 'Concept':
try:
-# _any est un pointeur sur entry
-# component est une methode de pmw
-# a priori, jamais ok
+# _any est un pointeur sur entry
+# component est une methode de pmw
+# a priori, jamais ok
self._any.component('entry').focus_set()
except:
pass
Liste.MCbox.bind("<ButtonRelease-3>",self.parent.appli.efface_aide)
if len(liste_mc) > 0 :
Liste.surligne(liste_mc[0])
+ self.Liste=Liste
def makeCommentairePage(self,page):
label = Label(page,text = "Insérer un commentaire :")
bulle_aide="""Double-cliquez sur la commande que vous voulez ajouter au jeu de commandes"""
Liste.MCbox.bind("<Button-3>", lambda e,s=self,a=bulle_aide : s.parent.appli.affiche_aide(e,a))
Liste.MCbox.bind("<ButtonRelease-3>",self.parent.appli.efface_aide)
+ self.liste_command=Liste
global panneauCommande
panneauCommande=self
# les frame ...
self.frame_comment = Frame(page,bd=1,relief='raised')
self.frame_param = Frame(page,bd=1,relief='raised')
- #self.frame_eval = Frame(page,bd=1,relief='raised')
self.frame_boutons = Frame(page,bd=1,relief='raised')
self.frame_comment.place(relx=0,rely=0,relwidth=1,relheight=0.40)
self.frame_param.place(relx=0,rely=0.40,relwidth=1,relheight=0.40)
- #self.frame_eval.place(relx=0,rely=0.56,relwidth=1,relheight=0.28)
self.frame_boutons.place(relx=0,rely=0.84,relwidth=1,relheight=0.16)
# remplissage de la frame commentaire
Label(self.frame_comment,text = "Insérer un commentaire :").place(relx=0.1,rely=0.5,anchor='w')
command = self.ajout_parametre)
but_param_avant.place(relx=0.45,rely=0.3,anchor='w',relwidth=0.45)
but_param_apres.place(relx=0.45,rely=0.7,anchor='w',relwidth=0.45)
- # remplissage de la frame eval
- #Label(self.frame_eval,text="Insérer un paramètre EVAL :").place(relx=0.1,rely=0.5,anchor='w')
- #Label(self.frame_eval,text='Non encore disponible').place(relx=0.6,rely=0.5,anchor='w')
- #but_eval_avant = Button(self.frame_eval,
- # text = "AVANT "+self.node.item.get_nom(),
- # command = lambda s=self :s.ajout_parametre_eval(ind = 'before'))
- #but_eval_apres = Button(self.frame_eval,
- # text = "APRES "+self.node.item.get_nom(),
- # command = self.ajout_parametre_eval)
- #but_eval_avant.place(relx=0.6,rely=0.3,anchor='w',relwidth=0.3)
- #but_eval_apres.place(relx=0.6,rely=0.7,anchor='w',relwidth=0.3)
# remplissage de la frame boutons
Button(self.frame_boutons,
text="Commentariser toute la commande",
from Noyau.N_CR import justify_text
import traceback
-#import SalomePyQt
import salome # CS_pbruno à poubelliser
import images
-#import SMESH_utils
-#sgQt=SalomePyQt.SalomePyQt()
# une fonction portant son nom
# Exemple de particularisation d un panel :
# Supposons que l on veuille particulariser la commande
-# - LIRE_MAILLAGE_UNITE
+# - LIRE_MAILLAGE_UNITE
# le panel initial a pour classe UNIQUE_BASE_Panel
# il suffit d'ajouter dans la classe derivée SALOME_UNIQUE_BASE_Panel
# une fonction SALOME_LIRE_MAILLAGE_UNITE
class SALOME_SHELLPanel (SHELLPanel):
- ""
+ ""
class SALOME_FONCTION_Panel (FONCTION_Panel):
- ""
+ ""
class SALOME_PLUSIEURS_INTO_Panel (PLUSIEURS_INTO_Panel):
- ""
+ ""
class SALOME_PLUSIEURS_ASSD_Panel (PLUSIEURS_ASSD_Panel):
- ""
+ ""
class SALOME_UNIQUE_INTO_Panel (UNIQUE_INTO_Panel):
- ""
+ ""
class SALOME_UNIQUE_SDCO_Panel (UNIQUE_SDCO_Panel):
- ""
+ ""
class SALOME_UNIQUE_ASSD_Panel (UNIQUE_ASSD_Panel):
- ""
+ ""
class SALOME_UNIQUE_COMP_Panel (UNIQUE_COMP_Panel):
- ""
+ ""
class SALOME_UNIQUE_ASSD_Panel_Reel (UNIQUE_ASSD_Panel_Reel):
- ""
+ ""
# ------------------------------------------------------------------------------#
# classe SALOME_PLUSIEURS_BASE_Panel
#
# Commandes modifiées :
-# - AFFE_CHAR_MECA_DDL_IMPO_GROUP_NO
+# - AFFE_CHAR_MECA_DDL_IMPO_GROUP_NO
# Methodes surchargées :
-# - makeValeurPage(self,page)
+# - makeValeurPage(self,page)
#
# ------------------------------------------------------------------------------#
class SALOME_PLUSIEURS_BASE_OR_UNELISTE_Panel(PLUSIEURS_BASE_OR_UNELISTE_Panel):
- ""
-
-
+ ""
class SALOME_PLUSIEURS_BASE_Panel(PLUSIEURS_BASE_Panel):
self.c = Button( self.frame_choix, text='Visualiser',command=self.displayInSalomeGeom )
self.c.place( relx=0.3, rely=0.0,relwidth=0.55)
- #self.c.place(relx=0.08,rely=0.55,relwidth=0.35)
- #self.c.place(relx=0.08,rely=0.55 )
def displayInSalomeGeom( self ):
if self.selected_valeur:
self.parent.appli.affiche_infos(msgError)
-"""
-class SALOME_PLUSIEURS_BASE_Panel(PLUSIEURS_BASE_Panel):
-
- def convertit_group_no_from_salome(self,liste_in):
- newr=[]
- #try:
- if ( 1 == 1 ) :
- for entree in liste_in :
- travail=[]
- travail.append(entree)
- entryname_list=SMESH_utils.entryToName(salome.myStudy,travail)
- entreeName=entryname_list[0]
- if dict_geom_numgroupe.has_key(entreeName):
- r=dict_geom_numgroupe[entreeName]
- else:
- r=SMESH_utils.getAsterGroupNo(salome.myStudy,travail)
- dict_geom_numgroupe[entreeName]=r
- for i in r :
- newr.append(i)
- #except:
- else :
- print "pas de groupe de noeuds associé"
- showerror("Pas de groupe associé","Cet Objet ne peut pas être défini comme un ensemble de groupe de noeuds")
- return newr
-
- def convertit_group_maille_from_salome(self,liste_in):
- newr=[]
- #try:
- if [ 1 == 1 ]:
- print liste_in
- for entree in liste_in :
- travail=[]
- travail.append(entree)
- entryname_list=SMESH_utils.entryToName(salome.myStudy,travail)
- entreeName=entryname_list[0]
- if dict_geom_numgroupe.has_key(entreeName):
- r=dict_geom_numgroupe[entreeName]
- else:
- r=SMESH_utils.getAsterGroupMa(salome.myStudy,travail)
- dict_geom_numgroupe[entreeName]=r
- if r != None :
- for i in r :
- newr.append(i)
- #except:
- else :
- print "pas de groupe de maille associé"
- showerror("Pas de groupe associé","Cet Objet ne peut pas être défini comme un ensemble de groupe de maille")
- return newr
-
- def convertit_entrees_en_valeurs(self,entrychaine):
- if SALOME_PLUSIEURS_BASE_OR_UNELISTE_Panel.__dict__.has_key(self.clef_fonction):
- print 'CS_pbruno AAAAAAAAAAAAA'
- valeur=apply(SALOME_PLUSIEURS_BASE_OR_UNELISTE_Panel.__dict__[self.clef_fonction],(self,entrychaine))
- else :
- if (self.clef_fonction.find("GROUP_NO") != -1) and (self.clef_fonction.find("GROUP_MA") != -1) :
- print 'CS_pbruno BBBBBBBBBBBBBBBBBBB'
- if (self.clef_fonction.find("GROUP_NO") < self.clef_fonction.find("GROUP_MA")) :
- print 'CS_pbruno CCCCCCCCCCCCCCCCCCCCCCCCCC'
- valeur=self.convertit_group_maille_from_salome(entrychaine)
- else :
- print 'CS_pbruno DDDDDDDDDDDDDDDDDDDDDDDDD'
- valeur=self.convertit_group_no_from_salome(entrychaine)
- elif self.clef_fonction.find("GROUP_NO") != -1 :
- print 'CS_pbruno EEEEEEEEEEEEEEEEEEEEEEEEE'
- valeur=self.convertit_group_no_from_salome(entrychaine)
- else :
- print 'CS_pbruno FFFFFFFFFFFFFFFFFFFFFFFF'
- if self.clef_fonction.find("GROUP_MA") != -1 :
- print 'CS_pbruno GGGGGGGGGGGGGGGGGGGGGGGGGGG'
- valeur=self.convertit_group_maille_from_salome(entrychaine)
- else :
- print 'CS_pbruno HHHHHHHHHHHHHHHHHHHHHH'
- print "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
- print "Pb pas de fonction de conversion de la valeur Salome en valeur Aster"
- print "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
- valeur=[]
- print "VALEUR", valeur
- return valeur
-
- def sup_valeur_from_salome(self,name=None):
- #""
- Méthode qui sert à retirer de la liste des valeurs la valeur sélectionnée
- #""
- liste_valeurs = self.Liste_valeurs.get_liste()
- liste_valeurs_salome=self.Liste_valeurs_salome.get_liste()
- entrychaine=salome.sg.getAllSelected()
-
- try:
- valeur = self.convertit_entrees_en_valeurs(entrychaine)
- for i in valeur :
- if i in liste_valeurs :
- liste_valeurs.remove(i)
- print "enleve" , i
- except:
- # la valeur sélectionnée n'est pas dans la liste
- pass
-
- entryname_list=SMESH_utils.entryToName(salome.myStudy,entrychaine)
- self.entrygroupe.delete(0,END)
- self.sortie.delete(0,END)
- for entryname in entryname_list:
- try:
- liste_valeurs_salome.remove(entryname)
- except:
- print "la valeur ", entryname, "n est pas dans la liste"
- entryname=entryname + " "
- self.sortie.insert(0,entryname)
- self.selected_valeur = None
- self.Liste_valeurs.put_liste(liste_valeurs)
- self.Liste_valeurs_salome.put_liste(liste_valeurs_salome)
- self.recalcule()
-
- def visu_in_salome(self):
- liste_valeurs = self.Liste_valeurs.get_liste()
- entryname_list=SMESH_utils.VisuGroupe(salome.myStudy,liste_valeurs)
-
- def visu3D_in_salome(self):
- liste_valeurs = self.Liste_valeurs.get_liste()
- entryname_list=SMESH_utils.VisuGroupe(salome.myStudy,liste_valeurs)
-
- def recalcule(self):
- liste_valeurs_salome=self.Liste_valeurs_salome.get_liste()
- groups={}
- liste_valeurs = self.Liste_valeurs.get_liste()
- for valeur in liste_valeurs_salome:
- r=dict_geom_numgroupe[valeur]
- for i in r :
- if i not in liste_valeurs :
- liste_valeurs.append(i)
- self.Liste_valeurs.put_liste(liste_valeurs)
-
-
- def add_valeur_from_salome(self,name=None):
- entrychaine=salome.sg.getAllSelected()
- self.sortie.delete(0,END)
- self.entrygroupe.delete(0,END)
- if entrychaine != '':
- entryname_list=SMESH_utils.entryToName(salome.myStudy,entrychaine)
- touteslesvaleurs = self.convertit_entrees_en_valeurs(entrychaine)
-
- valeur=[]
- liste_valeurs = self.Liste_valeurs.get_liste()
- for i in touteslesvaleurs:
- if i not in liste_valeurs:
- valeur.append(i)
-
- if valeur==[]:
- entryname_list=[]
-
- liste_valeurs_salome = self.Liste_valeurs_salome.get_liste()
- for entryname in entryname_list:
- if entryname not in liste_valeurs_salome:
- liste_valeurs_salome.append(entryname)
- entryname=entryname + " "
- self.entrygroupe.insert(0,entryname)
- self.Liste_valeurs_salome.put_liste(liste_valeurs_salome)
-
- if self.node.item.wait_reel():
- print "wait_reel()"
- valeur = self.traite_reel(valeur)
- if self.node.item.wait_geom():
- print "wait_geom()"
- val,test1 = valeur,1
- else:
- print "else wait"
- val,test1 = self.node.item.object.eval_valeur(valeur)
-
- if test1 :
- test2 = self.node.item.object.verif_type(val)
- if test2 :
- liste_valeurs = self.Liste_valeurs.get_liste()
- if len(liste_valeurs) >= max :
- self.parent.appli.affiche_infos("La liste a déjà atteint le nombre maximum d'éléments, ajout refusé")
- self.erase_valeur()
- return
- if type(val) == type([]):
- for groupe in val:
- liste_valeurs.append(groupe)
- else:
- liste_valeurs.append(val)
- self.Liste_valeurs.put_liste(liste_valeurs)
- self.parent.appli.affiche_infos("Nouvelle valeur acceptée")
- else:
- self.parent.appli.affiche_infos("Valeur incorrecte : ajout à la liste refusé")
- else:
- print "impossible d'évaluer %s" %val
- self.parent.appli.affiche_infos("Valeur incorrecte : ajout à la liste refusé")
-
-
- def makeValeurPage(self,page):
- #""
- Crée la page de saisie d'une liste de valeurs à priori quelconques,
- cad qui ne sont pas à choisir dans une liste prédéfinie
- #""
-
- # On récupère la bulle d'aide du panneau, l'objet, l'aide,min et max (cardinalité de la liste),
- # et la liste des valeurs déjà affectées à l'objet courant
- bulle_aide=self.get_bulle_aide()
- objet_mc = self.node.item.get_definition()
- aide = self.get_aide()
- aide = justify_text(texte=aide)
- min,max = self.node.item.GetMinMax()
- self.clef_fonction= self.node.item.clef_fonction
- l_valeurs = self.node.item.GetListeValeurs()
-
- self.frame1 = Frame(page,relief='groove',bd=2)
- self.frame2 = Frame(page)
- self.frame1.place(relx=0.,rely=0.,relwidth=1.,relheight=0.85)
- self.frame2.place(relx=0.,rely=0.85,relwidth=1,relheight=0.15)
- self.frame_right = Frame(self.frame1)
- self.frame_right.place(relx=0.35,rely=0.,relwidth=0.65,relheight=1.)
-
- # création des frames internes
- self.frame_valeurs = Frame(self.frame1)
- self.frame_valeurs.place(relx=0.0,rely=0.0,relwidth=0.35,relheight=0.95)
-
- self.frame_choix = Frame(self.frame_right)
- self.frame_choix.place(relx=0.0,rely=0.0,relwidth=1,relheight=0.9)
- self.frame_valeurs_salome = Frame(self.frame_right)
- self.frame_valeurs_salome.place(relx=0.02,rely=0.7,relwidth=0.9,relheight=0.3)
-
- self.frame_boutons = Frame(self.frame2)
- self.frame_boutons.place(relx=0.1,rely=0.,relwidth=0.5,relheight=1.)
- self.frame_aide = Frame(self.frame2)
- self.frame_aide.place(relx=0.6,rely=0.,relwidth=0.5,relheight=1)
-
- for fram in (self.frame1,self.frame2,self.frame_right,self.frame_valeurs,
- self.frame_choix,self.frame_aide,self.frame_boutons):
- fram.bind("<Button-3>",lambda e,s=self,a=bulle_aide : s.parent.appli.affiche_aide(e,a))
- fram.bind("<ButtonRelease-3>",self.parent.appli.efface_aide)
-
- # création des objets dans les frames
- liste_commandes_valeurs = (("<Button-1>",self.selectValeur),
- ("<Button-3>",self.deselectValeur),
- ("<Double-Button-1>",self.sup_valeur_sans_into))
- self.Liste_valeurs = ListeChoix(self,self.frame_valeurs,l_valeurs,
- liste_commandes = liste_commandes_valeurs,
- titre="Valeur(s) actuelle(s)")
-
- # PN : pour ajouter les validators
- self.make_entry(frame = self.frame_choix,command = self.add_valeur_plusieurs_base,y=0.55)
-
- bouton_valeurs_fichier = Button(self.frame_choix,
- text="Importer ...",
- command=self.select_in_file)
- bouton_valeurs_fichier.place(relx=0.28,rely=0.65,relwidth=0.6)
-
- self.ajout_valeurs = None
- self.b = Button(self.frame_choix,text='ajout select.',command=self.add_valeur_from_salome)
-
- self.b.place(relx=0.03,rely=0.05,relwidth=0.35)
- self.entrygroupe = Entry(self.frame_choix,relief='sunken')
- self.entrygroupe.place(relx=0.4,rely=0.05,relwidth=0.6)
-
- self.a = Button(self.frame_choix,text='enlev. select.',command=self.sup_valeur_from_salome)
- self.a.place(relx=0.03,rely=0.2,relwidth=0.35)
- self.sortie = Entry(self.frame_choix,relief='sunken')
- self.sortie.place(relx=0.4,rely=0.2,relwidth=0.6)
- self.c = Button(self.frame_choix,text='Visualiser',command=self.visu_in_salome)
- self.c.place(relx=0.03,rely=0.35,relwidth=0.35)
-
- self.genea =self.node.item.get_genealogie()
- print self.genea
- if "AFFE_CARA_ELEM" in self.genea :
- self.d=Button(self.frame_choix,text='Visu 3D',command=self.visu3D_in_salome)
- self.d.place(relx=0.47,rely=0.35,relwidth=0.35)
-
- l_salome_valeurs=self.node.item.get_salome_valeurs()
- self.Liste_valeurs_salome=ListeChoix(self,self.frame_valeurs_salome,l_salome_valeurs,
- liste_commandes = liste_commandes_valeurs,
- titre="Valeur(s) Salome actuelle(s) ")
- self.Liste_valeurs_salome.affiche_liste()
-
-
- # boutons Ajouter et Supprimer
- bouton_add = Button(self.frame_choix,
- image = images.get_image('arrow_left'),
- command = self.add_valeur_plusieurs_base)
- bouton_sup = Button(self.frame_choix,
- image = images.get_image('arrow_right'),
- command = self.sup_valeur_sans_into)
- bouton_add.place(relx=0.08,rely=0.55)
- bouton_sup.place(relx=0.08,rely=0.65)
-
- # affichage de l'aide
- self.frame_aide.update()
- self.aide = Label(self.frame_aide, text = aide,
- justify='center', anchor='center',
- wraplength=int(self.frame_aide.winfo_width()*0.8))
- self.aide.place(relx=0.5,rely=0.5,anchor='center',relwidth=1)
- self.Liste_valeurs.affiche_liste()
-
- # boutons Accepter et Annuler
- bouton_accepter = Button(self.frame_boutons,
- text='Valider',
- command = lambda s=self,m=min,M=max : s.accepte_modifs_valeur(m,M))
- bouton_annuler = Button(self.frame_boutons,
- text = 'Annuler',
- command = self.annule_modifs_valeur)
- for but in (bouton_accepter,bouton_annuler):
- but.pack(side='left',padx=5)
-
-"""
# ------------------------------------------------------------------------------#
# classe SALOME_UNIQUE_BASE_Panel
#
# Commandes modifiées :
-# - LIRE_MAILLAGE_UNITE
+# - LIRE_MAILLAGE_UNITE
# Methodes surchargées :
-# - makeValeurPage(self,page)
+# - makeValeurPage(self,page)
#
# ------------------------------------------------------------------------------#
SO = None
if SO is not None:
- myBuilder = salome.myStudy.NewBuilder()
+ myBuilder = salome.myStudy.NewBuilder()
ok, AtName = myBuilder.FindAttribute(SO,"AttributeName")
- if ok:
- EntryName=AtName.Value()
+ if ok:
+ EntryName=AtName.Value()
if EntryName != '':
self.entry2.insert(0,EntryName)
# unite=self.node.item.get_valeur()
# entrychaine=salome.sg.getAllSelected()
# if entrychaine != '':
-# self.entry2.delete(0,END)
+# self.entry2.delete(0,END)
# try:
# SO = salome.myStudy.FindObjectID(entrychaine[0])
# SO = None
# if SO != None:
-# myBuilder = salome.myStudy.NewBuilder()
+# myBuilder = salome.myStudy.NewBuilder()
# boo,FileAttr = myBuilder.FindAttribute(SO,"AttributeComment")
#
# FileName=''
if SALOME_UNIQUE_BASE_Panel.dict_fichier_unite.has_key(unite):
associe=SALOME_UNIQUE_BASE_Panel.dict_fichier_unite[unite][1:]
- self.entry2.delete(0,END)
- if associe != "" :
+ self.entry2.delete(0,END)
+ if associe != "" :
self.entry2.insert(0,associe)
else:
- self.entry2.delete(0,END)
+ self.entry2.delete(0,END)
# aide associée au panneau
self.frame_valeur.update()
#______________________________________________________________________________________
dict_classes_salome = { SHELLPanel : SALOME_SHELLPanel,
FONCTION_Panel : SALOME_FONCTION_Panel,
- PLUSIEURS_INTO_Panel : SALOME_PLUSIEURS_INTO_Panel,
- PLUSIEURS_ASSD_Panel : SALOME_PLUSIEURS_ASSD_Panel,
- PLUSIEURS_BASE_Panel : SALOME_PLUSIEURS_BASE_Panel,
- PLUSIEURS_BASE_OR_UNELISTE_Panel : SALOME_PLUSIEURS_BASE_OR_UNELISTE_Panel,
- UNIQUE_INTO_Panel : SALOME_UNIQUE_INTO_Panel,
- UNIQUE_SDCO_Panel : SALOME_UNIQUE_SDCO_Panel,
- UNIQUE_ASSD_Panel : SALOME_UNIQUE_ASSD_Panel,
- UNIQUE_ASSD_Panel_Reel : SALOME_UNIQUE_ASSD_Panel_Reel,
- UNIQUE_COMP_Panel : SALOME_UNIQUE_COMP_Panel,
- UNIQUE_BASE_Panel : SALOME_UNIQUE_BASE_Panel}
+ PLUSIEURS_INTO_Panel : SALOME_PLUSIEURS_INTO_Panel,
+ PLUSIEURS_ASSD_Panel : SALOME_PLUSIEURS_ASSD_Panel,
+ PLUSIEURS_BASE_Panel : SALOME_PLUSIEURS_BASE_Panel,
+ PLUSIEURS_BASE_OR_UNELISTE_Panel : SALOME_PLUSIEURS_BASE_OR_UNELISTE_Panel,
+ UNIQUE_INTO_Panel : SALOME_UNIQUE_INTO_Panel,
+ UNIQUE_SDCO_Panel : SALOME_UNIQUE_SDCO_Panel,
+ UNIQUE_ASSD_Panel : SALOME_UNIQUE_ASSD_Panel,
+ UNIQUE_ASSD_Panel_Reel : SALOME_UNIQUE_ASSD_Panel_Reel,
+ UNIQUE_COMP_Panel : SALOME_UNIQUE_COMP_Panel,
+ UNIQUE_BASE_Panel : SALOME_UNIQUE_BASE_Panel}
dict_geom_numgroupe = { }
dict_geom_numface = { }
("<Double-Button-1>",self.sup_valeur_sans_into))
liste_commandes_choix = (("<Button-1>",self.selectChoix),
("<Button-3>",self.deselectChoix),
- # ("<Double-Button-1>",self.add_valeur_sans_into))
("<Double-Button-1>",self.add_eval_valeur_sans_into))
self.Liste_valeurs = ListeChoix(self,self.frame_valeurs,l_valeurs,liste_commandes = liste_commandes_valeurs,
titre="Valeur(s) actuelle(s)")
self.Liste_choix = ListeChoix(self,self.frame_choix,l_choix,liste_commandes = liste_commandes_choix,
titre= "Valeurs possibles")
- bouton_add = Button(self.frame_boutons_fleches,
- #text="<--",
+ self.bouton_add = Button(self.frame_boutons_fleches,
image = images.get_image('arrow_left'),
- # command = self.add_valeur_sans_into)
command = self.add_eval_valeur_sans_into)
- bouton_sup = Button(self.frame_boutons_fleches,
- #text="-->",
+ self.bouton_sup = Button(self.frame_boutons_fleches,
image = images.get_image('arrow_right'),
command = self.sup_valeur_sans_into)
- bouton_accepter = Button(self.frame_boutons,
+ self.bouton_accepter = Button(self.frame_boutons,
text='Valider',
command = lambda s=self,m=min,M=max : s.accepte_modifs_valeur(m,M))
- bouton_annuler = Button(self.frame_boutons,
+ self.bouton_annuler = Button(self.frame_boutons,
text = 'Annuler',
command = self.annule_modifs_valeur)
- bouton_add.place(relx=0.3,rely=0.35)
- bouton_sup.place(relx=0.3,rely=0.65)
- for but in (bouton_accepter,bouton_annuler):
+ self.bouton_add.place(relx=0.3,rely=0.35)
+ self.bouton_sup.place(relx=0.3,rely=0.65)
+ for but in (self.bouton_accepter,self.bouton_annuler):
but.pack(side='left',padx=4)
self.Liste_valeurs.affiche_liste()
if len(l_valeurs) > 0 :
def add_eval_valeur_sans_into(self,valeurentree=None):
if valeurentree == None:
- valeurentree = self.get_valeur()
+ valeurentree = self.get_valeur()
valeur,validite=self.node.item.eval_valeur(valeurentree)
if not validite :
commentaire = "impossible d'évaluer : %s " %`valeurentree`
self.ajout_valeurs = None
# boutons Ajouter et Supprimer
- bouton_add = Button(self.frame_boutons_fleches,
+ self.bouton_add = Button(self.frame_boutons_fleches,
image = images.get_image('arrow_left'),
command = self.add_valeur_plusieurs_base)
- bouton_sup = Button(self.frame_boutons_fleches,
+ self.bouton_sup = Button(self.frame_boutons_fleches,
image = images.get_image('arrow_right'),
command = self.sup_valeur_sans_into)
- bouton_add.place(relx=0.3,rely=0.35)
- bouton_sup.place(relx=0.3,rely=0.65)
+ self.bouton_add.place(relx=0.3,rely=0.35)
+ self.bouton_sup.place(relx=0.3,rely=0.65)
# affichage de l'aide
self.frame_aide.update()
self.aide = Label(self.frame_aide,
text = aide,
justify='center',
anchor='center',
- wraplength=int(self.frame_aide.winfo_width()*0.8))
+ wraplength=int(self.frame_aide.winfo_width()*0.8))
self.aide.place(relx=0.5,rely=0.5,anchor='center',relwidth=1)
self.Liste_valeurs.affiche_liste()
if len(l_valeurs) > 0 :
liste_marque=l_valeurs[-1]
self.Liste_valeurs.surligne(liste_marque)
- self.selectValeur(liste_marque)
+ self.selectValeur(liste_marque)
# boutons Accepter et Annuler
- bouton_accepter = Button(self.frame_boutons,
+ self.bouton_accepter = Button(self.frame_boutons,
text='Valider',
command = lambda s=self,m=min,M=max : s.accepte_modifs_valeur(m,M))
- bouton_annuler = Button(self.frame_boutons,
+ self.bouton_annuler = Button(self.frame_boutons,
text = 'Annuler',
command = self.annule_modifs_valeur)
- bouton_accepter.place(relx=0.2, rely=0.2,relwidth=0.25)
- bouton_annuler.place(relx=0.5, rely=0.2,relwidth=0.25)
- #for but in (bouton_accepter,bouton_annuler):
- # but.pack(side='left',padx=4)
+ self.bouton_accepter.place(relx=0.2, rely=0.2,relwidth=0.25)
+ self.bouton_annuler.place(relx=0.5, rely=0.2,relwidth=0.25)
def affiche_parametre(self) :
if self.node.item.get_liste_param_possible() != [ ]:
txtparam=""
- for param in self.node.item.get_liste_param_possible():
- txtparam=txtparam+repr(param)+"\n"
- if txtparam=="":
- showerror("Aucun parametre ","Pas de parametre de ce type")
- else :
- try :
- self.self.fenetreparam.destroy()
- except:
- pass
- self.fenetreparam=FenetreDeParametre( self, self.node.item, self.parent.appli, txtparam)
+ for param in self.node.item.get_liste_param_possible():
+ txtparam=txtparam+repr(param)+"\n"
+ if txtparam=="":
+ showerror("Aucun parametre ","Pas de parametre de ce type")
+ else :
+ try :
+ self.self.fenetreparam.destroy()
+ except:
+ pass
+ self.fenetreparam=FenetreDeParametre( self, self.node.item, self.parent.appli, txtparam)
def valid_valeur(self):
self.add_valeur_plusieurs_base()
atraiter=[]
if type(valeur) in (types.ListType,types.TupleType) :
- indice = 0
+ indice = 0
while (indice < len(valeur)):
- v=valeur[indice]
- if self.node.item.wait_complex :
- if (v== 'RI' or v == 'MP'):
- try :
- t=tuple([v,valeur[indice+1],valeur[indice+2]])
- atraiter.append(t)
- indice=indice+3
- except :
- validite=0
- commentaire = "Veuillez entrer le complexe sous forme aster ou sous forme python"
- self.parent.appli.affiche_infos(commentaire)
- return
- else : # ce n'est pas un tuple à la mode aster
- atraiter.append(v)
- indice = indice + 1
+ v=valeur[indice]
+ if self.node.item.wait_complex :
+ if (v== 'RI' or v == 'MP'):
+ try :
+ t=tuple([v,valeur[indice+1],valeur[indice+2]])
+ atraiter.append(t)
+ indice=indice+3
+ except :
+ validite=0
+ commentaire = "Veuillez entrer le complexe sous forme aster ou sous forme python"
+ self.parent.appli.affiche_infos(commentaire)
+ return
+ else : # ce n'est pas un tuple à la mode aster
+ atraiter.append(v)
+ indice = indice + 1
else: # on n'attend pas un complexe
- atraiter.append(v)
- indice=indice+1
+ atraiter.append(v)
+ indice=indice+1
else:
- atraiter.append(valeur)
+ atraiter.append(valeur)
for valeur in atraiter :
encorevalide=self.node.item.valide_item(valeur)
- # qdsjfkllllllllllllllllll
+ # qdsjfkllllllllllllllllll
if encorevalide :
listecourante=self.Liste_valeurs.get_liste()
encorevalide=self.node.item.valide_liste_partielle(valeur,listecourante)
selection_texte = f.read()
f.close()
self.ajout_valeurs = FenetreDeSelection(self,
- self.node.item,
- self.parent.appli,
- titre="Sélection de valeurs",
- texte=selection_texte)
+ self.node.item,
+ self.parent.appli,
+ titre="Sélection de valeurs",
+ texte=selection_texte)
except:
traceback.print_exc()
showinfo("Erreur de fichier","impossible d'ouvir le fichier "+nom_fichier)
self.entry.bind("<KP_Enter>",lambda e,c=command:c())
self.entry.focus()
- #def make_entry(self,frame,command,x=0.28,y=0.2):
- """
- Crée l'entry de saisie de la valeur souhaitée : distingue le
- cas d'un complexe attendu, d'une autre valeur quelconque
- """
- #print "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC"
- #print " "
- #print "A priori on ne doit plus passer dans cette methode "
- #print " "
- #print "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC"
- #if self.node.item.wait_complex():
- # self.typ_cplx=StringVar()
- # self.typ_cplx.set('RI')
- # rb1 = Radiobutton(frame, text='RI',variable=self.typ_cplx,value='RI')
- # rb2 = Radiobutton(frame, text='MP',variable=self.typ_cplx,value='MP')
- # self.entry1 = Pmw.EntryField(frame,validate='real')
- # self.entry2 = Pmw.EntryField(frame,validate='real')
- # rb1.place(relx=0.05,rely = 0.4)
- # rb2.place(relx=0.05,rely = 0.6)
- # self.entry1.component('entry').bind("<Return>",lambda e,s=self:s.entry2.component('entry').focus)
- # self.entry2.component('entry').bind("<Return>",lambda e,c=command:c())
- # self.entry1.component('entry').bind("<KP_Enter>",lambda e,s=self:s.entry2.component('entry').focus)
- # self.entry2.component('entry').bind("<KP_Enter>",lambda e,c=command:c())
- # self.entry1.place(relx=0.27,rely = 0.5,relwidth=0.35)
- # self.entry2.place(relx=0.65,rely = 0.5,relwidth=0.35)
- # self.entry1.focus()
- #else:
- # self.entry = Entry(frame,relief='sunken')
- # self.entry.place(relx=0.28,rely=0.2,relwidth=0.6)
- # self.entry.place(relx=0.28,rely=y,relwidth=0.6)
- # self.entry.bind("<Return>",lambda e,c=command:c())
- # self.entry.bind("<KP_Enter>",lambda e,c=command:c())
- # self.entry.focus()
-
def get_valeur(self):
"""
Retourne la valeur saisie par l'utilisateur dans self.entry
if hasattr(self,'entry'):
# Traitement d'une entree unique
valeurentree = self.entry.get()
- if (valeurentree == None or valeurentree ==""):
- return None,0,""
- if (valeurentree[0] != "(") and (valeurentree.find(',') < len(valeurentree)):
- valeurs=[]
- for v in valeurentree.split(','):
- vsimple,validite=self.node.item.eval_valeur(v)
- # Pn If ajoute pour le panneau "double"
- #if isinstance(vsimple,LASSD) :
- # commentaire = "impossible de mélanger reels et liste prédéfinie"
- # validite = 0
- # break
- if validite :
- valeurs.append(vsimple)
- else:
- commentaire = "impossible d'évaluer : %s " %`valeurentree`
- break
- valeur=valeurs
- else:
- valeur,validite=self.node.item.eval_valeur(valeurentree)
- if not validite and commentaire == "":
- commentaire = "impossible d'évaluer : %s " %`valeurentree`
+ if (valeurentree == None or valeurentree ==""):
+ return None,0,""
+
+ #On tente une evaluation globale
+ valeur,validite=self.node.item.eval_valeur(valeurentree)
+ if valeur == valeurentree:
+ #L'evaluation n'a rien donné : on a toujours la string
+ #on découpe la string sur le séparateur , si c'est possible
+ if valeurentree.find(',') != -1:
+ valeur=[]
+ for v in valeurentree.split(','):
+ vsimple,validite=self.node.item.eval_valeur(v)
+ valeur.append(vsimple)
+
return valeur,validite,commentaire
+
+
+ # if (valeurentree[0] != "(") and (valeurentree.find(',') < len(valeurentree)):
+ # valeurs=[]
+ # for v in valeurentree.split(','):
+ # vsimple,validite=self.node.item.eval_valeur(v)
+ # Pn If ajoute pour le panneau "double"
+ #if isinstance(vsimple,LASSD) :
+ # commentaire = "impossible de mélanger reels et liste prédéfinie"
+ # validite = 0
+ # break
+ # if validite :
+ # valeurs.append(vsimple)
+ # else:
+ # commentaire = "impossible d'évaluer : %s " %`valeurentree`
+ # break
+ # valeur=valeurs
+ # else:
+ # valeur,validite=self.node.item.eval_valeur(valeurentree)
+ # if not validite and commentaire == "":
+ # commentaire = "impossible d'évaluer : %s " %`valeurentree`
+ # return valeur,validite,commentaire
#else:
# # Traitement d'une entree de type complexe
# try:
liste_noms_sd = self.tri(liste_noms_sd)
self.listbox = Pmw.ScrolledListBox(self.frame_haut,
items=liste_noms_sd,
- labelpos='n',
- #label_text="Structures de données du type\n requis parl'objet courant :",
- label_text="Listes du type\n requis parl'objet courant :",
- listbox_height = 6,
- dblclickcommand=lambda s=self,c=UNIQUE_ASSD_Panel.valid_valeur : s.choose_valeur_from_list(c))
+ labelpos='n',
+ #label_text="Structures de données du type\n requis parl'objet courant :",
+ label_text="Listes du type\n requis parl'objet courant :",
+ listbox_height = 6,
+ dblclickcommand=lambda s=self,c=UNIQUE_ASSD_Panel.valid_valeur : s.choose_valeur_from_list(c))
self.listbox.place(relx=0.00,rely=0.00,relwidth=0.4)
# On eneleve le label pour gagner de la place
self.Liste_valeurs = ListeChoix(self,self.frame_valeurs,l_valeurs,
liste_commandes = liste_commandes_valeurs,
titre="Valeur(s) non-prédéfinies(s)",
- fonte_titre=None
- )
+ fonte_titre=None
+ )
for fram in (self.frame1,self.frame2,self.frame_bas,self.frame_haut,self.frame_valeurs,
self.frame_fleches,self.frame_choix):
a=(3+8j)
d_types = { 'TXM' : type('A'),
'R' : type(3.),
- 'I' : type(0),
- 'C' : type(a)}
+ 'I' : type(0),
+ 'C' : type(a)}
# On enleve seulement ceux qu'on peut
# Sur certaines listes, il est possible qu'on ne
typecherche = None
for t in typespossibles:
if t in d_types.keys() :
- typecherche = d_types[t]
- break
+ typecherche = d_types[t]
+ break
for liste in liste_noms_sd:
valeur,validite=self.node.item.eval_valeur(liste)
- for mc in valeur.etape.mc_liste :
- try :
- if type(mc.valeur) in (types.ListType,types.TupleType) :
- typeliste=type(mc.valeur[0])
- else :
- typeliste=type(mc.valeur)
- if type(mc.valeur[0]) == typecherche:
- listefinale.append(liste)
- except:
- listefinale.append(liste)
+ for mc in valeur.etape.mc_liste :
+ try :
+ if type(mc.valeur) in (types.ListType,types.TupleType) :
+ typeliste=type(mc.valeur[0])
+ else :
+ typeliste=type(mc.valeur)
+ if type(mc.valeur[0]) == typecherche:
+ listefinale.append(liste)
+ except:
+ listefinale.append(liste)
return listefinale
self.Liste_choix = ListeChoix(self,self.frame_choix,l_choix,
liste_commandes = liste_commandes_choix,
titre= "Valeurs possibles")
- bouton_add = Button(self.frame_boutons_fleches,
+ self.bouton_add = Button(self.frame_boutons_fleches,
#text="<--",
image = images.get_image('arrow_left'),
command = self.add_choix)
- bouton_sup = Button(self.frame_boutons_fleches,
+ self.bouton_sup = Button(self.frame_boutons_fleches,
#text="-->",
image = images.get_image('arrow_right'),
command = self.sup_valeur)
- bouton_accepter = Button(self.frame_boutons,
+ self.bouton_accepter = Button(self.frame_boutons,
text='Valider',
command = lambda s=self,m=min,M=max : s.accepte_modifs_valeur(m,M))
- bouton_annuler = Button(self.frame_boutons,
+ self.bouton_annuler = Button(self.frame_boutons,
text = 'Annuler',
command = self.annule_modifs_valeur)
- bouton_add.place(relx=0.3,rely=0.35)
- bouton_sup.place(relx=0.3,rely=0.65)
- for but in (bouton_accepter,bouton_annuler):
+ self.bouton_add.place(relx=0.3,rely=0.35)
+ self.bouton_sup.place(relx=0.3,rely=0.65)
+ for but in (self.bouton_accepter,self.bouton_annuler):
but.pack(side='left',padx=3)
self.Liste_valeurs.affiche_liste()
if len(l_valeurs) > 0 :
text = aide,
justify='center',
anchor='center')
- #wraplength=int(self.frame_aide.winfo_width()*0.8))
+ #wraplength=int(self.frame_aide.winfo_width()*0.8))
self.aide.place(relx=0.3,rely=0.5,anchor='center',relwidth=1)
def get_aide(self):
'C' : 'complexes'}
type = mc.type[0]
if not d_aides.has_key(type) :
- if mc.min == mc.max:
- return str(mc.min)+" valeur(s) est(sont) attendue(s)"
+ if mc.min == mc.max:
+ return str(mc.min)+" valeur(s) est(sont) attendue(s)"
else :
- return "entrez entre "+str(mc.min)+" et "+str(mc.max)+" valeurs"
+ return "entrez entre "+str(mc.min)+" et "+str(mc.max)+" valeurs"
if mc.min == mc.max:
- commentaire="Une liste de "+str(mc.min)+" "+d_aides[type]+" est attendue"
+ commentaire="Une liste de "+str(mc.min)+" "+d_aides[type]+" est attendue"
else :
- commentaire="Entre "+str(mc.min)+" et "+str(mc.max)+" valeurs de type "+d_aides[type]+" sont attendues"
+ commentaire="Entre "+str(mc.min)+" et "+str(mc.max)+" valeurs de type "+d_aides[type]+" sont attendues"
aideval=self.node.item.aide()
commentaire=commentaire + "\n" + aideval
return commentaire
l1_valeurs = self.Liste_valeurs.get_liste()
else:
l1_valeurs = liste
+
+ #nettoyage de la liste
l_valeurs=[]
for val in l1_valeurs :
if val != '' and val != None :
def add_valeur_sans_into(self,name=None,encorevalide=1):
"""
- Lit ce que l'utilisateur a saisi dans self.entry et cherche à
- l'évaluer :
+ Tente d'ajouter la valeur fournie (name) à la liste courante :
- si la valeur est acceptable, elle est ajoutée dans la liste des valeurs
- sinon elle est refusée
+
encorevalide vaut 1 si le validateur trouve l item et la liste correctes
0 si le validateur trouve la valeur de l item incorrecte
-1 si le validateur trouve la liste incorrecte
"""
-
+ valeur = name
commentaire="Valeur incorrecte : ajout à la liste refusé"
testvalide=1
- # Lecture de la zone de saisie et evaluation si nécessaire
- if name != None :
- valeur = name
- else:
- valeurentree = self.get_valeur()
- if valeurentree == '': valeur=None
- valeurentree,testvalide=self.node.item.eval_valeur(valeur)
- if (not testvalide) :
- commentaire = "impossible d'évaluer : %s " %`valeurentree`
-
# Pas de traitement des valeurs nulles ( a priori clic involontaire
if (valeur == None or valeur =="") :
commentaire = "Pas de saisie des valeurs nulles"
else :
testtype = self.node.item.object.verif_type(valeur)
if not testtype :
- if valeur.__class__.__name__ in ( 'PARAMETRE', 'ITEM_PARAMETRE') :
- testtype = 1
- else :
commentaire ="Type de la valeur incorrecte"
encorevalide=-2
-
+
if (encorevalide ==0) :
commentaire=self.node.item.info_erreur_item()
if (encorevalide == -1) :
commentaire=self.node.item.info_erreur_liste()
- # On traite le cas ou la liste n est pas valide pour un pb de cardinalite
+ # On traite le cas ou la liste n est pas valide pour un pb de cardinalite
min,max = self.node.item.GetMinMax()
if len(self.Liste_valeurs.get_liste()) >= max :
commentaire="La liste a déjà atteint le nombre maximum d'éléments,ajout refusé"
else :
commentaire ="Type de la valeur incorrecte"
- #self.erase_valeur()
self.parent.appli.affiche_infos(commentaire)
def sup_valeur_sans_into(self,name=None):
self.update_barre()
if self.appli.test == 0 :
splash._splash.configure(text = "Fin import_cata: %d s" % time.clock())
- if not self.cata : showerror("Import du catalogue","Impossible d'importer le catalogue %s" %self.fic_cata)
-
+ if not self.cata :
+ showerror("Import du catalogue","Impossible d'importer le catalogue %s" %self.fic_cata)
+ self.appli.quit()
+ sys.exit(1)
#
# analyse du catalogue (ordre des mots-clés)
#
import types
class STATUSBAR:
- def __init__(self,parent):
+ def __init__(self,parent,police):
self.parent=parent
+ self.police=police
self.frame = Tkinter.Frame(parent,bd=1, relief=Tkinter.RAISED)
self.frame.pack(side=Tkinter.BOTTOM, fill=Tkinter.X)
self.label = Tkinter.Label (self.frame,
text='',
justify='left',
relief='sunken',
- height=2,
+ height=3,
bg='gray95')
self.label.pack(side='left',expand=1,fill='both')
texte_infos=texte[0:150]
else :
texte_infos=texte
- self.label.configure(text=texte_infos)
+ self.label.configure(text=texte_infos,font=self.police)
def reset_affichage_infos(self):
""" Efface tout message présent dans le panneau en bas d'EFICAS """
+# -*- coding: utf-8 -*-
import os
import prefs
import basestyle
#
__version__="$Name: $"
-__Id__="$Id: treewidget.py,v 1.29 2005/11/29 17:39:50 eficas Exp $"
+__Id__="$Id: treewidget.py,v 1.30.6.3 2006/05/29 07:12:38 cchris Exp $"
#
Fonte_Standard = fontes.standard
def page_down(self,event):
event.widget.yview_scroll(1, "page")
-
+
def unit_up(self,event):
event.widget.yview_scroll(-1, "unit")
def supprime(self):
""" supprime tous les éléments de l'arbre """
#print "supprime",self
- self.canvas.unbind("<Key-Prior>",self.id_up)
- self.canvas.unbind("<Key-Next>",self.id_down)
+ self.canvas.unbind("<F11>",self.id_up)
+ self.canvas.unbind("<F12>",self.id_down)
self.canvas.unbind("<Key-Left>",self.id_um)
self.canvas.unbind("<Key-Right>",self.id_dm)
self.canvas.unbind("<1>",self.id_s)
def tag_move_nodes(self,y):
""" Marque pour deplacement tous les noeuds au dela de l'ordonnée y """
- #print "tag_move_nodes",y
+ #print "tag_move_nodes",y
self.canvas.dtag(ALL,'move')
# on marque tous les ids au dela de y
x0, y0, x1, y1 = self.canvas.bbox(ALL)
- if y > y1: # pas d'objet a deplacer
- return
+ if y > y1: # pas d'objet a deplacer
+ return
self.canvas.addtag_overlapping('move',x0,y,x1,y1)
def move_nodes(self,y,dy):
""" Déplace de l'incrément dy les noeuds au dela de l'ordonnée y """
- #print "move_nodes",y,dy
- self.tag_move_nodes(y)
+ #print "move_nodes",y,dy
+ self.tag_move_nodes(y)
# on déplace tous les items de dy
self.canvas.move('move',0,dy)
en y et au dela
Retourne la position du premier des noeuds deplaces
"""
- #print "draw_node",new_node,x,y
+ #print "draw_node",new_node,x,y
self.tag_move_nodes(y)
#if new_node.item.isactif():
#new_node.state = 'expanded'
if self.displayed == 1 : self.dehighlight()
def make_visible(self):
- """ Rend l'objet self visible cad déplace le scroll pour que self soit dans
- la fenêtre de visu
+ """ Rend l'objet self visible cad déplace le scroll pour que self
+ soit dans la fenêtre de visu
"""
lchild=self.last_child()
self.tree.see((self.image_id,lchild.image_id))
def select_next(self,ind=0):
""" on doit chercher à sélectionner dans l'ordre:
- - son premier fils s'il est affiché
- - son frère cadet s'il existe
- - son oncle (benjamin de son père)
- - ... appel récursif ...
+ - son premier fils s'il est affiché
+ - son frère cadet s'il existe
+ - son oncle (benjamin de son père)
+ - ... appel récursif ...
"""
if self.state=='expanded' and len(self.children) > ind:
self.children[ind].select()
except:
self.children[0].select()
except :
- if self.parent is self.tree:
- pass
- else :
- self.parent.select_next(index)
+ if self.parent is self.tree:
+ pass
+ else :
+ self.parent.select_next(index)
def select_mot_prev(self):
index = self.parent.children.index(self) - 1
- try :
- if index > -1 :
- self.parent.children[index].select()
- if self.parent.children[index].state=="expanded":
- print len(self.parent.children[index].children)
- if len(self.parent.children[index].children)!=0 :
- max=len(self.parent.children[index].children) - 1
- self.parent.children[index].children[max].select()
- else :
- self.parent.children[index].select()
- else :
- self.parent.children[index].select()
- elif self.parent is self.tree:
- pass
- else :
+ try :
+ if index > -1 :
+ self.parent.children[index].select()
+ if self.parent.children[index].state=="expanded":
+ print len(self.parent.children[index].children)
+ if len(self.parent.children[index].children)!=0 :
+ max=len(self.parent.children[index].children) - 1
+ self.parent.children[index].children[max].select()
+ else :
+ self.parent.children[index].select()
+ else :
+ self.parent.children[index].select()
+ elif self.parent is self.tree:
+ pass
+ else :
self.parent.select()
except:
- if self.parent is self.tree:
- pass
- else :
+ if self.parent is self.tree:
+ pass
+ else :
self.parent.select_previous()
try :
if index > -1 :
self.parent.children[index].select()
- elif self.parent is self.tree:
- pass
- else :
+ elif self.parent is self.tree:
+ pass
+ else :
self.parent.select()
except:
- if self.parent is self.tree:
- pass
- else :
+ if self.parent is self.tree:
+ pass
+ else :
self.parent.select_previous()
def select_previous(self):
self.parent.children[index].select()
except:
#self.parent.select()
- if self.parent is self.tree:
- pass
- else :
+ if self.parent is self.tree:
+ pass
+ else :
self.parent.select_previous()
def popup(self,event=None):
""" Met en surbrillance self"""
if hasattr(self,'label'):
self.label.configure(fg='white',bg='#00008b')
+ if (hasattr(self.item,'get_nom') and hasattr( self.appli, 'salome')) :
+ if self.item.get_nom() == "AFFE_CARA_ELEM":
+ self.item.rmenu_specs=[("View3D", "visu_3D")]
+ self.tree.rmenu
+
def dehighlight(self,event=None):
""" Rétablit l'affichage normal de self"""
def deplieReplieNode(self):
if self.state == 'expanded':
- self.collapse()
- else :
- self.expand_node()
+ self.collapse()
+ else :
+ self.expand_node()
def collapse(self,event = None):
""" Collapse self et descendants et retrace self """
self.icone_id=None
self.label=None
self.text=None
- self.displayed=0
+ self.displayed=0
def efface(self):
""" Efface du canvas les id associés à self : cad les siens et ceux
try:
self.canvas.addtag_overlapping('move',bbox1[0],self.y +10,bbox1[2],bbox1[3])
except:
- print "Erreur dans move :"
+ print "Erreur dans move :"
print self
print self.item
print self.item.getObject()
try:
child.trace_ligne()
except:
- print "Erreur dans trace_ligne :"
+ print "Erreur dans trace_ligne :"
print child
print child.item.getObject()
if (min == 1 and min == max and len(liste_noms_sd)==1 ):
if self.valeur_choisie.get() != liste_noms_sd[0]:
if ('R' not in self.node.item.get_type()) :
- self.valeur_choisie.set(liste_noms_sd[0])
+ self.valeur_choisie.set(liste_noms_sd[0])
self.valid_valeur_automatique()
-
+
self.frame_valeur = Frame(page)
self.frame_valeur.pack(fill='both',expand=1)
self.frame_valeur.bind("<Button-3>",lambda e,s=self,a=bulle_aide : s.parent.appli.affiche_aide(e,a))
self.display_valeur()
if self.__class__.__name__ == 'UNIQUE_ASSD_Panel_Reel' :
Label(self.frame_valeur,text='Valeur Réelle').place(relx=0.1,rely=0.9)
- self.entry = Entry(self.frame_valeur,relief='sunken')
+ self.entry = Entry(self.frame_valeur,relief='sunken')
self.entry.place(relx=0.28,rely=0.9,relwidth=0.6)
self.entry.bind("<Return>",lambda e,c=self.valid_valeur_reel:c())
self.entry.bind("<KP_Enter>",lambda e,c=self.valid_valeur_reel:c())
"""
mc = self.node.item.get_definition()
try :
- type = mc.type[0].__name__
+ type = mc.type[0].__name__
except :
type = str(mc.type[0])
if len(mc.type)>1 :
for typ in mc.type[1:] :
- try :
- l=typ.__name__
- except:
- l=str(typ)
+ try :
+ l=typ.__name__
+ except:
+ l=str(typ)
type = type + ' ou '+l
commentaire="Un objet de type "+type+" est attendu"
aideval=self.node.item.aide()
if len(self.listbox.getcurselection()) == 0 : return
choix = self.listbox.getcurselection()[0]
self.valeur_choisie.set(choix)
+ self.listbox.component("listbox").focus_set()
def choose_valeur_from_list(self,command):
"""
Exécute command
"""
if len(self.listbox.get()) == 0 : return
+ if len(self.listbox.getcurselection()) == 0 : return
choix = self.listbox.getcurselection()[0]
self.valeur_choisie.set(choix)
apply(command,(),{})
"""
valeur = self.node.item.get_valeur()
if valeur == None or valeur == '' : return # pas de valeur à afficher ...
- self.valeur_choisie.set(valeur.nom)
+ self.valeur_choisie.set(getattr(valeur,"nom","unknown"))
def erase_valeur(self):
pass
self.frame_valeur.update()
self.aide = Label(self.frame_valeur,
text = aide,
- wraplength=int(self.frame_valeur.winfo_width()*0.8),
- justify='center')
+ wraplength=int(self.frame_valeur.winfo_width()*0.8),
+ justify='center')
self.aide.place(relx=0.5,rely=0.7,anchor='n')
# bouton parametre
bouton_parametres = Button(self.frame_valeur, text="Parametres", command=self.affiche_parametre)
def affiche_parametre(self) :
if self.node.item.get_liste_param_possible() != [ ]:
- txtparam=""
- for param in self.node.item.get_liste_param_possible():
- txtparam=txtparam+repr(param)+"\n"
- if txtparam=="":
- showerror("Aucun parametre ","Pas de parametre de ce type")
- else :
- try :
- self.fenetreparam.destroy()
- except :
- pass
- self.fenetreparam=FenetreDeParametre( self, self.node.item, self.parent.appli, txtparam)
+ txtparam=""
+ for param in self.node.item.get_liste_param_possible():
+ txtparam=txtparam+repr(param)+"\n"
+ if txtparam=="":
+ showerror("Aucun parametre ","Pas de parametre de ce type")
+ else :
+ try :
+ self.fenetreparam.destroy()
+ except :
+ pass
+ self.fenetreparam=FenetreDeParametre( self, self.node.item, self.parent.appli, txtparam)
def destroy(self):
try :
- self.fenetreparam.destroy()
+ self.fenetreparam.destroy()
except :
- pass
+ pass
Widget.destroy(self)
def get_aide(self):
self.aide = Label(self.frame_valeur,
text = aide,
wraplength=int(self.frame_valeur.winfo_width()*0.8),
- justify='center')
+ justify='center')
self.aide.place(relx=0.5,rely=0.9,anchor='n')
# affichage de la valeur du MCS
self.display_valeur()
l.append(string.atof(self.entry1.get()))
l.append(string.atof(self.entry2.get()))
except :
- return None
+ return None
return `tuple(l)`
def erase_valeur(self):
("<Double-Button-1>",self.record_valeur))
self.Liste_choix = ListeChoix(self,self.frame,l_choix,
liste_commandes = liste_commandes,
- titre="Valeurs possibles")
+ titre="Valeurs possibles",optionReturn="oui")
self.Liste_choix.affiche_liste()
def get_bulle_aide(self):
listbox_height = 6,
selectioncommand=self.select_valeur_from_list,
dblclickcommand=lambda s=self,c=self.valid_valeur : s.choose_valeur_from_list(c))
+ self.listbox.component("listbox").bind("<Return>",lambda e,s=self,c=self.valid_valeur : s.choose_valeur_from_list(c))
if liste_noms_sd != [] :
self.listbox.place(relx=0.5,rely=0.3,relheight=0.4,anchor='center')
- self.b_co = Pmw.OptionMenu(self.frame_valeur,labelpos='w',label_text = "Nouveau concept : ", items = ('NON','OUI'),menubutton_width=10)
+ self.b_co = Pmw.OptionMenu(self.frame_valeur,labelpos='w',label_text = "Nouveau concept : ", items = ('NON','OUI'),
+ menubutton_width=10)
else :
- self.b_co = Pmw.OptionMenu(self.frame_valeur,labelpos='w',label_text = "Nouveau concept : ", items = ('OUI','OUI'),menubutton_width=10)
+ self.b_co = Pmw.OptionMenu(self.frame_valeur,labelpos='w',label_text = "Nouveau concept : ", items = ('OUI',),
+ menubutton_width=10)
# affichage du bouton 'Nouveau concept'
- self.b_co.configure(command = lambda e,s=self : s.ask_new_concept())
+ self.b_co.configure(command = self.ask_new_concept)
if liste_noms_sd != [] :
self.b_co.place(relx=0.05,rely=0.6,anchor='w')
else :
self.frame_valeur.update()
self.aide = Label(self.frame_valeur,
text = aide,
- wraplength=int(self.frame_valeur.winfo_width()*0.8),
- justify='center')
+ wraplength=int(self.frame_valeur.winfo_width()*0.8),
+ justify='center')
self.aide.place(relx=0.5,rely=0.85,anchor='n')
# affichage de la valeur courante
self.display_valeur()
mess = "Valeur du mot-clé non autorisée :"+cr.get_mess_fatal()
self.reset_old_valeur(anc_val,mess=mess)
return
- #if self.node.item.get_position()=='global':
- #self.node.etape.verif_all()
- #elif self.node.item.get_position()=='global_jdc':
- #self.node.racine.verif_all()
- #else :
- #self.node.parent.verif()
- #self.node.update()
def valid_nom_concept_co(self,event=None):
"""
mess = "Valeur du mot-clé non autorisée :"+cr.get_mess_fatal()
self.reset_old_valeur(anc_val,mess=mess)
return
- #if self.node.item.get_position()=='global':
- #self.node.etape.verif_all()
- #elif self.node.item.get_position()=='global_jdc':
- #self.node.racine.verif_all()
- #else :
- #self.node.parent.verif()
- #if self.node.item.isvalid():
- #self.node.parent.select()
- #self.node.update()
- def ask_new_concept(self):
+ def ask_new_concept(self,tag):
"""
Crée une entry dans le panneau d'un MCS qui attend un concept OU un CO() afin de
permettre à l'utilisateur de donner le nom du nouveau concept
self.parent.appli.affiche_infos(mess)
# On met a jour le display dans le panneau
self.display_valeur()
- #if self.node.item.get_position()=='global':
- #self.node.etape.verif_all()
- #elif self.node.item.get_position()=='global_jdc':
- #self.node.racine.verif_all()
- #else :
- #self.node.parent.verif()
if self.node.item.isvalid():
self.node.parent.select()
- #self.node.update()
self.but_save.place(relx=0.6,rely=0.5,anchor='center')
# affichage du texte
self.affiche_texte(self.texte)
- self.zone_texte.config(state=DISABLED)
+ self.zone_texte.config(state=DISABLED)
centerwindow(self.fenetre)
self.fenetre.deiconify()
def save(self):
""" Permet de sauvegarder le texte dans un fichier dont on a demandé le nom
à l'utilisateur """
- file = asksaveasfilename(defaultextension = '.comm',
+ file = asksaveasfilename(parent=self.fenetre,defaultextension = '.comm',
#initialdir = self.appli.CONFIGURATION.rep_user,
initialdir = self.appli.CONFIGURATION.initialdir,
title="Sauvegarde du "+self.titre)
if not save_in_file(file,self.texte,None) :
showerror("Sauvegarde impossible",
"Impossible de sauvegarder le texte dans le fichier spécifié\n"+
- "Vérifiez les droits d'écriture")
+ "Vérifiez les droits d'écriture",parent=self.fenetre)
else:
- showinfo("Sauvegarde effectuée","Sauvegarde effectuée dans le fichier %s" %file)
+ showinfo("Sauvegarde effectuée","Sauvegarde effectuée dans le fichier %s" %file,parent=self.fenetre)
def destroy(self):
try :
- self.fenetre.destroy()
- except :
- pass
+ self.fenetre.destroy()
+ except :
+ pass
class FenetreYesNo(Fenetre):
def __init__(self,appli,titre="",texte="",yes="Yes",no="No"):
"""
def __init__(self,panel,item,appli,titre="",texte="",cardinal=1):
Fenetre.__init__(self,appli,titre=titre,texte=texte)
- self.frame_boutons.place_forget()
+ self.frame_boutons.place_forget()
self.frame_texte.place_forget()
self.frame_texte.place(relx=0,rely=0,relwidth=1,relheight=0.8)
self.frame_boutons.place(relheight=0.2,relx=0,rely=0.8,relwidth=1.)
# Replacement
self.but_quit.place_forget()
self.but_save.place_forget()
- self.but_all = Button(self.frame_boutons,text = "Tout Sélectionner", command=self.tout)
+ self.but_all = Button(self.frame_boutons,text = "Tout Sélectionner", command=self.tout)
self.but_save.place(relx=0.6,rely=0.6,anchor='center')
self.but_quit.place(relx=0.8,rely=0.6,anchor='center')
self.but_all.place(relx=0.7,rely=0.2,anchor='center')
- self.choose_separateur('espace')
+ self.choose_separateur('espace')
def get_separateurs_autorises(self):
def tout(self):
liste=[]
- texte=self.texte.splitlines()
- for l in texte :
- for mot in string.split(l,self.separateur):
- if mot != '' and mot != ' ' and mot != self.separateur :
- liste.append(mot)
- self.traite_selection(liste)
+ texte=self.texte.splitlines()
+ for l in texte :
+ for mot in string.split(l,self.separateur):
+ if mot != '' and mot != ' ' and mot != self.separateur :
+ liste.append(mot)
+ self.traite_selection(liste)
def traite_selection(self,liste=None):
""" Cette méthode effectue tous les traitements nécessaires pour vérifier
et affecter la liste de valeurs à l'objet réprésenté par self.item
"""
# Récupère la liste des chaines de caractères de la zone sélectionnée
- message=""
- if liste == None:
+ message=""
+ if liste == None:
message,liste = self.recupere_liste()
if self.test_probleme(message,"Sélectionnez des données") == 0:
return
éléments dans le type voulu en cas de succès, sinon retourne None.
"""
liste_valeurs = []
- message = ""
+ message = ""
for chaine in liste:
if f_conversion:
try:
self.affiche_texte(self.texte)
self.zone_texte.config(state="disabled")
- # définition des boutons
- self.frame_boutons = Frame(self.fenetre)
- self.frame_boutons.place(relheight=0.3,relx=0,rely=0.65,relwidth=1.)
- self.label1 = Label(self.frame_boutons,text="surligner la")
- self.label2 = Label(self.frame_boutons,text="ligne entière")
- self.label1.place(relx=0.1,rely=0)
- self.label2.place(relx=0.1,rely=0.5)
- self.but_quit = Button(self.frame_boutons,text = "Fermer",command=self.quit)
- self.but_save = Button(self.frame_boutons,text = "Choisir",command = self.Choisir)
- self.but_save.place(relx=0.6,rely=0,relheight=1)
- self.but_quit.place(relx=0.8,rely=0,relheight=1)
+ # définition des boutons
+ self.frame_boutons = Frame(self.fenetre)
+ self.frame_boutons.place(relheight=0.3,relx=0,rely=0.65,relwidth=1.)
+ self.label1 = Label(self.frame_boutons,text="surligner la")
+ self.label2 = Label(self.frame_boutons,text="ligne entière")
+ self.label1.place(relx=0.1,rely=0)
+ self.label2.place(relx=0.1,rely=0.5)
+ self.but_quit = Button(self.frame_boutons,text = "Fermer",command=self.quit)
+ self.but_save = Button(self.frame_boutons,text = "Choisir",command = self.Choisir)
+ self.but_save.place(relx=0.6,rely=0,relheight=1)
+ self.but_quit.place(relx=0.8,rely=0,relheight=1)
def Choisir(self):
"Selectionner un parametre")
l_param = ""
for param in selection.splitlines():
- nomparam=param[0:param.find("=")-1]
+ nomparam=param[0:param.find("=")-1]
if nomparam != '' :
- l_param=l_param+nomparam+','
- self.parent.entry.delete(0,Tkinter.END)
- self.parent.entry.insert(0,l_param[0:-1])
- self.parent.valid_valeur()
- self.quit()
+ l_param=l_param+nomparam+','
+ self.parent.entry.delete(0,Tkinter.END)
+ self.parent.entry.insert(0,l_param[0:-1])
+ self.parent.valid_valeur()
+ self.quit()
class Formulaire:
"""
on affiche un formulaire à remplir par l'utilisateur
"""
def __init__(self,fen_pere,obj_pere=None,titre="",texte="",items=(),mode='query',commande=None):
+ self.resultat=0
if items in ((),[]) : return
self.items = items
self.titre = titre
self.d_validateurs['rep'] = self.repvalidator
self.d_validateurs['file'] = self.filevalidator
self.d_validateurs['cata']= self.catavalidator
+ self.d_validateurs['mot']= self.motvalidator
+ self.d_validateurs['mot2']= self.mot2validator
+ self.d_validateurs['mot3']= self.mot3validator
+ self.d_validateurs['mot4']= self.mot4validator
def init_fenetre(self):
"""
if len(item[0])>length_maxi : length_maxi = len(item[0])
window = self.fenetre.interior()
for item in self.items :
- if len(item) == 4 :
+ if len(item) == 4 :
label,nature,nom_var,defaut = item
- chaine="Yes"
- chaine2="No"
- else :
+ chaine="Yes"
+ chaine2="No"
+ else :
label,nature,nom_var,defaut,chaine,chaine2 = item
+
# création de la frame
fr_item = Frame(window,height=40,width=700)
fr_item.pack(side='top',fill='x',expand=1)
# création du label
Label(fr_item,text = label).place(relx=0.05,rely=0.4)
- if nature in ('rep','file','cata'):
+ if nature in ('rep','file','cata','mot','mot2','mot3','mot4'):
# création de l'entry
e_item = Entry(fr_item)
e_item.place(relx=0.5,rely=0.4,relwidth=0.45)
# Validateurs des noms de répertoire, de fichiers et de catalogues
# -------------------------------------------------------------------------------
+ def motvalidator(self,text):
+ text2="("+text+")"
+ return self.motlongueurvalidator(text2,1)
+
+ def mot2validator(self,text):
+ return self.motlongueurvalidator(text,2)
+
+ def mot3validator(self,text):
+ return self.motlongueurvalidator(text,3)
+
+ def mot4validator(self,text):
+ return self.motlongueurvalidator(text,4)
+
+ def motlongueurvalidator(self,text,longueur):
+ try :
+ if ((text[0] != "(") or (text[-1] != ")")) : return 0
+ if len(text.split(",")) != longueur : return 0
+ return 1
+ except :
+ return 0
+
def repvalidator(self,text):
"""
Teste si text peut faire référence à un répertoire ou non
self.titre = titre
self.filtre = filtre
self.optionReturn = optionReturn
- self.fonte_titre=fonte_titre
+ self.fonte_titre=fonte_titre
self.init()
def init(self):
mot="("
premier=1
for val in objet:
- if (not premier):
- mot=mot+","
+ if (not premier):
+ mot=mot+","
else:
premier=0
valtexte = self.parent.get_valeur_texte(val)
try:
self.dico_labels[self.arg_selected].configure(bg='gray95',fg='black')
self.arg_selected = ''
- except :
- pass
+ except :
+ pass
def surligne(self,marque):
try :
- self.highlightitem(self.dico_labels[marque])
+ self.highlightitem(self.dico_labels[marque])
self.arg_selected = marque
- except:
- pass
+ except:
+ pass
def chooseitemsurligne(self,mot,label,commande):
""" Active la méthode de choix passée en argument"""
showerror(raison.split('\n')[0],raison)
def afficheMot(self,mot):
- """ Pour contourner le bug sur l index """
- """ on commence par la methode dite normale """
- """ puis par la methode de contournement """
- """ puis rien du tout """
- #try :
- if ( 1 == 1 ):
- try:
- labelsuivant=self.dico_labels[motsuivant]
+ """ Pour contourner le bug sur l index
+ on commence par la methode dite normale
+ puis par la methode de contournement
+ puis rien du tout
+ """
+ try:
+ labelsuivant=self.dico_labels[mot]
index = self.MCbox.index(labelsuivant)
self.MCbox.see(index)
- except :
+ except :
posmot=self.dico_place[mot]
totale=self.nBlabel + 0.0
self.MCbox.yview_moveto(posmot/totale)
- else :
- pass
def selectNextItem(self,mot,label):
index=self.liste.index(mot)
indexsuivant=index+1
- if indexsuivant > len(self.liste) -1:
- indexsuivant=0
+ if indexsuivant > len(self.liste) -1:
+ indexsuivant=0
motsuivant=self.liste[indexsuivant]
labelsuivant=self.dico_labels[motsuivant]
- #index = self.MCbox.index(labelsuivant)
- #self.MCbox.see(index)
self.afficheMot(motsuivant)
self.selectthis(motsuivant,labelsuivant,self.selection[2],)
self.dontselect=1
indexprec=index-1
motprec=self.liste[indexprec]
labelprec=self.dico_labels[motprec]
- #index = self.MCbox.index(labelprec)
- #self.MCbox.see(index)
self.afficheMot(motprec)
self.selectthis(motprec,labelprec,self.selection[2],)
self.dontselect=1
def selectthis(self,mot,label,commande) :
- self.clear_marque()
+ self.clear_marque()
if self.selection != None :
self.deselectitem(self.selection[1],self.selection[0],self.selection[2],)
self.highlightitem(label)
return lign
def remove_selected_item(self):
- try :
+ try :
index=self.MCbox.index(self.selection[1])
- except :
+ except :
index=self.MCbox.index(self.dico_labels[self.arg_selected] )
lign,col=map(int,string.split(index,'.'))
del self.liste[lign-1]
for arg in self.liste :
if fnmatch.fnmatch(arg,filtre) or fnmatch.fnmatch(arg,FILTRE) :
label=self.dico_labels[arg]
- #index = self.MCbox.index(label)
- #self.MCbox.see(index)
self.afficheMot(arg)
self.selectitem(arg,label,self.selection[2])
break
for val in self.liste:
# try:
# v = eval(val)
-# l.append(v)
+# l.append(v)
# except:
l.append(val)
return l
VALE : ( 0. 1.
5. 2. )
);
-
+
e_grm = DEFI_FONCTION ( NOM_PARA : 'TEMP'
PROL_DROIT : 'CONSTANT'
PROL_GAUCHE : 'CONSTANT'
VALE : ( 0. 1.
5. 2. )
);
-
+
al_grm = DEFI_FONCTION ( NOM_PARA : 'TEMP'
PROL_DROIT : 'CONSTANT'
PROL_GAUCHE : 'CONSTANT'
VALE : ( 0. 1.
5. 2. )
);
-
+
% Tube guide
e_tu = DEFI_FONCTION ( NOM_PARA : 'TEMP'
5. 2.
)
);
-
+
nu_cr = DEFI_FONCTION ( NOM_PARA : 'TEMP'
PROL_DROIT : 'CONSTANT'
PROL_GAUCHE : 'CONSTANT'
NU : nu_gre
ALPHA : al_gre
RHO : 7800. )
- GRAN_IRRA:( FLUX_L :fluxax1
+ GRAN_IRRA:( FLUX_L :fluxax1
FLUX_TN :fluxrd1
FONC_MULT:flux_f1
A : 0.
UN_SUR_K : 0.
UN_SUR_M : 0.
QSR_K : 1. )
- );
+ );
% Grilles de melange
FONC_MULT: flux_f1
A : 0.
S : 1.)
- LEMAITRE : ( N : 0.
+ LEMAITRE : ( N : 0.
UN_SUR_K : 0.
UN_SUR_M : 0.
- QSR_K : 2.)
+ QSR_K : 2.)
- );
+ );
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
VALE : ( 0. 1.
5. 2. )
);
-
+
e_grm = DEFI_FONCTION ( NOM_PARA : 'TEMP'
PROL_DROIT : 'CONSTANT'
PROL_GAUCHE : 'CONSTANT'
VALE : ( 0. 1.
5. 2. )
);
-
+
al_grm = DEFI_FONCTION ( NOM_PARA : 'TEMP'
PROL_DROIT : 'CONSTANT'
PROL_GAUCHE : 'CONSTANT'
VALE : ( 0. 1.
5. 2. )
);
-
+
% Tube guide
e_tu = DEFI_FONCTION ( NOM_PARA : 'TEMP'
5. 2.
)
);
-
+
nu_cr = DEFI_FONCTION ( NOM_PARA : 'TEMP'
PROL_DROIT : 'CONSTANT'
PROL_GAUCHE : 'CONSTANT'
NU : nu_gre
ALPHA : al_gre
RHO : 7800. )
- GRAN_IRRA:( FLUX_L :fluxax1
+ GRAN_IRRA:( FLUX_L :fluxax1
FLUX_TN :fluxrd1
FONC_MULT:flux_f1
A : 0.
UN_SUR_K : 0.
UN_SUR_M : 0.
QSR_K : 1. )
- );
+ );
% Grilles de melange
FONC_MULT: flux_f1
A : 0.
S : 1.)
- LEMAITRE : ( N : 0.
+ LEMAITRE : ( N : 0.
UN_SUR_K : 0.
UN_SUR_M : 0.
- QSR_K : 2.)
+ QSR_K : 2.)
- );
+ );
%
% AFFECTATION DES MATERIAUX A CHAUD - CYCLE
#print "uncomment",new_etape.sd
pos=self.parent.etapes.index(self)
+ # L'ordre d'appel est important : suppentite fait le menage des concepts dans les etapes suivantes
self.parent.addentite(new_etape,pos)
self.parent.suppentite(self)
return new_etape,nom_sd
def verif_existence_sd(self):
"""
Vérifie que les structures de données utilisées dans self existent bien dans le contexte
- avant étape, sinon enlève la référence à ces concepts
- --> sans objet pour les commandes commentarisées
+ avant étape, sinon enlève la référence à ces concepts
+ --> sans objet pour les commandes commentarisées
"""
pass
-
+
def control_sdprods(self,d):
"""sans objet pour les commandes commentarisées"""
pass
texte = reste
return operateur,reste
elif texte[0] == '-':
- # Il faut pouvoir trapper les expressions du type exp(-(x+1)) ...
- try :
- args,reste = self.cherche_args(texte[1:])
- except InterpreteurException,e:
+ # Il faut pouvoir trapper les expressions du type exp(-(x+1)) ...
+ try :
+ args,reste = self.cherche_args(texte[1:])
+ except InterpreteurException,e:
raise InterpreteurException,str(e)
- if not args :
- # Il ne s'agit pas de '-' comme opérateur unaire --> on retourne None
- return None,texte
- else:
- identificateur = '-'
- args = self.split_args(identificateur,args,self.d_fonctions_unaires[identificateur])
+ if not args :
+ # Il ne s'agit pas de '-' comme opérateur unaire --> on retourne None
+ return None,texte
+ else:
+ identificateur = '-'
+ args = self.split_args(identificateur,args,self.d_fonctions_unaires[identificateur])
formule_operateur = (identificateur,'',self.t_formule[2],args)
operateur = Interpreteur_Formule(formule = formule_operateur,
constantes = self.new_constantes,
JDC.supprime(self)
self.jdc_pere=None
self.etape_include=None
+ # self.cata_ordonne_dico={}
+ self.appli=None
+ # self.context_ini={}
+ # self.procedure=None
def get_contexte_avant(self,etape):
"""
#Regularise les etapes du jdc apres l'etape etape
self.control_jdc_context_apres(etape)
if self.etape_include:
+ #print "CONTROL_INCLUDE:",self.etape_include,self.etape_include.nom
# il existe un jdc pere. On propage la regularisation
self.etape_include.parent.control_context_apres(self.etape_include)
+# -*- coding: utf-8 -*-
from __future__ import division
import math
+import Numeric
+import types
def mkf(value):
- if type(value) in (type(1), type(1L), type(1.5), type(1j),type("hh")):
+ if type(value) in (type(1), type(1L), type(1.5), type(1j),type("hh")) :
return Constant(value)
elif isinstance(value, Formula):
return value
+ elif type(value) == type([]):
+ return Constant(value)
else:
+# return Constant(value)
raise TypeError, ("Can't make formula from", value)
#class Formula(object):
class Formula:
+ def __len__(self):
+ val=self.eval()
+ if val is None:return 0
+ try:
+ return len(val)
+ except:
+ return 1
def __complex__(self): return complex(self.eval())
def __int__(self): return int(self.eval())
def __long__(self): return long(self.eval())
self.values = mkf(value1), mkf(value2)
def __str__(self):
if self.op == '[]':
- return "(%s[%s])" % (self.values[0], self.values[1])
+ return "%s[%s]" % (self.values[0], self.values[1])
else:
return "(%s %s %s)" % (self.values[0], self.op, self.values[1])
def __repr__(self):
if self.op == '[]':
- return "(%s[%s])" % (self.values[0], self.values[1])
+ return "%s[%s]" % (self.values[0], self.values[1])
else:
return "(%s %s %s)" % (self.values[0], self.op, self.values[1])
def eval(self):
while isinstance(result,Formula):
result=result.eval()
return result
+ def __adapt__(self,validator):
+ return validator.adapt(self.eval())
+
class Unop(Formula):
opmap = { '-': lambda x: -x,
- 'sin': lambda x: math.sin(x),
- 'cos': lambda x: math.cos(x) }
+ }
def __init__(self, op, arg):
self._op = op
self._arg = mkf(arg)
def __str__(self):
return "%s(%s)" % (self._op, self._arg)
+ def __repr__(self):
+ return "%s(%s)" % (self._op, self._arg)
def eval(self):
return self.opmap[self._op](self._arg.eval())
+ def __adapt__(self,validator):
+ return validator.adapt(self.eval())
+
+class Unop2(Unop):
+ def __init__(self, nom, op, arg):
+ self._nom = nom
+ self._op = op
+ self._arg=[]
+ for a in arg:
+ self._arg.append(mkf(a))
+ def __str__(self):
+ s="%s(" % self._nom
+ for a in self._arg:
+ s=s+str(a)+','
+ s=s+")"
+ return s
+ def __repr__(self):
+ s="%s(" % self._nom
+ for a in self._arg:
+ s=s+str(a)+','
+ s=s+")"
+ return s
+ def eval(self):
+ l=[]
+ for a in self._arg:
+ l.append(a.eval())
+ return self._op(*l)
class Constant(Formula):
def __init__(self, value): self._value = value
def eval(self): return self._value
def __str__(self): return str(self._value)
+ def __adapt__(self,validator):
+ return validator.adapt(self._value)
class Variable(Formula):
def __init__(self,name,value):
def eval(self): return self._value
def __repr__(self): return "Variable('%s',%s)" % (self._name, self._value)
def __str__(self): return self._name
+ def __adapt__(self,validator):
+ return validator.adapt(self._value)
-def cos(f): return Unop('cos', f)
+def Eval(f):
+ if isinstance(f,Formula):
+ f=f.eval()
+ elif type(f) in (types.ListType, ):
+ f=[Eval(i) for i in f]
+ elif type(f) in (types.TupleType,):
+ f=tuple([Eval(i) for i in f])
+ return f
+
+
+#surcharge de la fonction cos de Numeric pour les parametres
+original_ncos=Numeric.cos
+def cos(f): return Unop('ncos', f)
+Unop.opmap['ncos']=lambda x: original_ncos(x)
+Numeric.cos=cos
+
+#surcharge de la fonction sin de Numeric pour les parametres
+original_nsin=Numeric.sin
+def sin(f): return Unop('nsin', f)
+Unop.opmap['nsin']=lambda x: original_nsin(x)
+Numeric.sin=sin
+
+#surcharge de la fonction array de Numeric pour les parametres
+original_narray=Numeric.array
+def array(f,*tup,**args):
+ """array de Numeric met en défaut la mécanique des parametres
+ on la supprime dans ce cas. Il faut que la valeur du parametre soit bien définie
+ """
+ return original_narray(Eval(f),*tup,**args)
+Numeric.array=array
+
+#surcharge de la fonction sin de math pour les parametres
+original_sin=math.sin
def sin(f): return Unop('sin', f)
+Unop.opmap['sin']=lambda x: original_sin(x)
+math.sin=sin
+
+#surcharge de la fonction cos de math pour les parametres
+original_cos=math.cos
+Unop.opmap['cos']=lambda x: original_cos(x)
+def cos(f): return Unop('cos', f)
+math.cos=cos
+
+#surcharge de la fonction sqrt de math pour les parametres
+original_sqrt=math.sqrt
+def sqrt(f): return Unop('sqrt', f)
+Unop.opmap['sqrt']=lambda x: original_sqrt(x)
+math.sqrt=sqrt
+
+#surcharge de la fonction ceil de math pour les parametres
+original_ceil=math.ceil
+Unop.opmap['ceil']=lambda x: original_ceil(x)
+def ceil(f): return Unop('ceil', f)
+math.ceil=ceil
# import de modules Python
import string,types
from math import *
+import traceback
# import de modules Eficas
from Noyau.N_CR import CR
idracine = 'param'
def __init__(self,nom,valeur=None):
- # parent ne peut être qu'un objet de type JDC
- self.dict_valeur=[]
- self.valeur = self.interprete_valeur(valeur)
- self.val=valeur
self.nom = nom
# La classe PARAMETRE n'a pas de définition : on utilise self pour
# complétude
self.definition=self
+ # parent ne peut être qu'un objet de type JDC
self.jdc = self.parent = CONTEXT.get_current_step()
self.niveau=self.parent.niveau
self.actif=1
self.state='undetermined'
self.register()
+ self.dict_valeur=[]
+ #self.valeur = self.interprete_valeur(valeur)
+ #self.val=valeur
+ self.valeur = valeur
+ self.val=repr(valeur)
- def __getitem__(self,key):
- param_item=ITEM_PARAMETRE(self,key)
- return param_item
-
-# def __neg__(self):
-# try:
-# return -1*self.valeur
-# except:
-# print "******* Probleme : pas de valeur négative"
-# return None
-
-# def __add__(self,a):
-# try :
-# return self.valeur+a.valeur
-# except :
-# print "******* Probleme : a l addition"
-# return None
-
-# def __radd__(self,a):
-# try :
-# return self.valeur+a.valeur
-# except :
-# print "******* Probleme : a l addition"
-# return None
-
-# def __sub__(self,a):
-# try :
-# return self.valeur - a.valeur
-# except :
-# print "******* Probleme : a la soustraction"
-# return None
-
-# def __rsub__(self,a):
-# try :
-# return a.valeur - self.valeur
-# except :
-# print "******* Probleme : a la soustraction"
-# return None
-
-
-# def __mul__(self,a):
-# try :
-# return self.valeur*a.valeur
-# except :
-# print "******* Probleme : a la multiplication"
-# return None
-
-# def __rmul__(self,a):
-# try :
-# return self.valeur*a.valeur
-# except :
-# print "******* Probleme : a la multiplication"
-# return None
-
-# def __add__(self,other):
-# try :
-# return self.valeur+other
-# except :
-# print "******* Probleme : a l addition"
-# return None
-
-# def __radd__(self,other):
-# try :
-# return self.valeur+other
-# except :
-# print "******* Probleme : a l addition"
-# return None
-
-# def __sub__(self,other):
-# try :
-# return self.valeur - other
-# except :
-# print "******* Probleme : a la soustraction"
-# return None
-
-# def __rsub__(self,other):
-# try :
-# return other - self.valeur
-# except :
-# print "******* Probleme : a la soustraction"
-# return None
-
-# def __mul__ (self,other):
-# retour=None
-# try :
-# retour = eval(self.valeur) * other
-# except :
-# try :
-# retour = self.valeur * other
-# except :
-# try :
-# retour = eval(self.valeur) * eval(other)
-# except :
-# try :
-# retour = self.valeur * eval(other)
-# except :
-# print other
-# print "******* Probleme : a la multiplication _mul__"
-# return retour
-#
-# def __rmul__ (self,other):
-# retour=None
-# try :
-# retour = eval(self.valeur) * other
-# except :
-# try :
-# retour = self.valeur * other
-# except :
-# try :
-# retour = eval(self.valeur) * eval(other)
-# except :
-# print "******* Probleme : a la multiplication __rmul__"
-# return retour
-#
-#
-# def __div__(self,other):
-# retour=None
-# try:
-# retour = eval(self.valeur) / other
-# except :
-# try :
-# retour = self.valeur / other
-# except :
-# print "******* Probleme : a la division"
-# return retour
-#
-#
-# def cos(self):
-# try :
-# retour=cos(self.valeur)
-# return retour
-# except:
-# print "pb pour cosinus"
-#
-# def sin(self):
-# try :
-# retour=sin(self.valeur)
-# return retour
-# except:
-# print "pb pour sinus"
-#
-# def tan(self):
-# try :
-# retour=tan(self.valeur)
-# return retour
-# except:
-# print "pb pour tangente"
-#
-# def log(self):
-# try :
-# retour=log(self.valeur)
-# return retour
-# except:
-# print "pb pour log"
-#
-# def sqrt(self):
-# try :
-# retour=sqrt(self.valeur)
-# return retour
-# except:
-# print "pb pour sqrt"
-#
def interprete_valeur(self,val):
"""
Essaie d'interpréter val (chaîne de caractères)comme :
- une liste d'items d'un type qui précède
Retourne la valeur interprétée
"""
- if not val : return None
+ #if not val : return None
valeur = None
- # on vérifie si val est un entier
- try :
- valeur = string.atoi(val) # on a un entier
- return valeur
- except :
- pass
- # on vérifie si val est un réel
- try:
- valeur = string.atof(val) # on a un réel
- return valeur
- except :
- pass
- # on vérifie si val est un tuple
- try :
- valeur = eval(val)
- except:
- pass
+
+ if type(val) == types.StringType:
+ # on tente l'evaluation dans un contexte fourni par le parent s'il existe
+ if self.parent:
+ valeur=self.parent.eval_in_context(val,self)
+ else:
+ try :
+ valeur = eval(val)
+ except:
+ #traceback.print_exc()
+ pass
#PN je n ose pas modifier je rajoute
+ # refus des listes heterogenes : ne dvrait pas etre la
if valeur != None :
if type(valeur) == types.TupleType:
l_new_val = []
return val
l_new_val.append(v)
return tuple(l_new_val)
- # PN : commente le print
- #else:
- # on a réussi à évaluer val en autre chose qu'un tuple ...
- #print "on a réussi à évaluer %s en autre chose qu'un tuple ..." %val
- #print 'on trouve : ',str(valeur),' de type : ',type(valeur)
- # on retourne val comme une string car on n'a pas su l'interpréter
+
if valeur != None :
if type(valeur).__name__ == 'list':
self.dict_valeur=[]
for i in range(len(valeur)):
- self.dict_valeur.append(valeur[i])
+ self.dict_valeur.append(valeur[i])
+ return valeur
+ # on retourne val comme une string car on n'a pas su l'interpréter
return val
def get_valeurs(self):
self.valeur = self.interprete_valeur(new_valeur)
self.init_modif()
+ def set_nom(self,new_nom):
+ """
+ Change le nom du parametre
+ """
+ self.init_modif()
+ self.nom=new_nom
+ self.fin_modif()
+
def init_modif(self):
"""
Méthode qui déclare l'objet courant comme modifié et propage
self.parent = None
self.jdc = None
self.definition=None
+ self.niveau=None
def active(self):
"""
"""
Donne un echo de self sous la forme nom = valeur
"""
- return self.nom+' = '+str(self.valeur)
+ if type(self.valeur) == types.StringType:
+ if self.valeur.find('\n') == -1:
+ # pas de retour chariot, on utilise repr
+ return self.nom+' = '+ repr(self.valeur)
+ elif self.valeur.find('"""') == -1:
+ # retour chariot mais pas de triple ", on formatte
+ return self.nom+' = """'+self.valeur+'"""'
+ else:
+ return self.nom+' = '+ repr(self.valeur)
+ else:
+ return self.nom+' = '+ str(self.valeur)
def __str__(self):
"""
pass
def eval(self):
- return self.valeur
+ if isinstance(self.valeur,Formula):
+ return self.valeur.eval()
+ else:
+ return self.valeur
+
+ def __adapt__(self,validator):
+ return validator.adapt(self.eval())
class COMBI_PARAMETRE :
def __init__(self,chainevaleur,valeur):
if self.item < 0:
isvalid = 0
try:
- longueur= len(self.param_pere.dict_valeur) - 1
+ longueur= len(self.param_pere.dict_valeur) - 1
except:
longueur=0
if self.item > longueur :
JdC = JDC_CATA(code='HOMARD',
execmodul=None,
regles = (AU_MOINS_UN('DONNEES_HOMARD'),),
- )
+ )
# Type le plus general
class entier (ASSD):pass
# 2. Les fichiers en entree/sortie
#
FICHIERS = FACT(statut='o',
- NOM_MED_MAILLAGE_N = SIMP(statut='o' ,typ='TXM',
- fr="Nom du fichier contenant le maillage à adapter",
- ang="File name including the in-mesh"),
- NOM_MED_MAILLAGE_NP1 = SIMP(statut='o' ,typ='TXM',
+ NOM_MED_MAILLAGE_N = SIMP(statut='o' ,typ='TXM',
+ fr="Nom du fichier contenant le maillage à adapter",
+ ang="File name including the in-mesh"),
+ NOM_MED_MAILLAGE_NP1 = SIMP(statut='o' ,typ='TXM',
fr="Nom du fichier qui contiendra le maillage adapté",
ang="File name for resulting out-mesh"),
- INFORMATION = SIMP(statut='o' ,typ='TXM',
+ INFORMATION = SIMP(statut='o' ,typ='TXM',
fr="Nom du fichier contenant les informations de sortie",
ang="Log File"),
),
ang="Groups which define the boundary" ),
) ,
fichier_frontiere=BLOC ( condition = "NOM_MED_MAILLAGE_FRONTIERE != None" ,
- FIC_FRON = SIMP(statut='f',typ='TXM',
- fr="Nom du fichier MED contenant le maillage frontiere",
- ang="MED File including the boundary mesh" ),
+ FIC_FRON = SIMP(statut='f',typ='TXM',
+ fr="Nom du fichier MED contenant le maillage frontiere",
+ ang="MED File including the boundary mesh" ),
),
#
),
JdC = JDC_CATA(code='HOMARD',
execmodul=None,
regles = (AU_MOINS_UN('DONNEES_HOMARD'),),
- )
+ )
# Type le plus general
class entier (ASSD):pass
regles=( UN_PARMI('TYPE_RAFFINEMENT_LIBRE','TYPE_DERAFFINEMENT_UNIFORME','TYPE_RAFFINEMENT_UNIFORME','INFORMATION'),
### EXCLUS('TYPE_RAFFINEMENT_LIBRE','INFORMATION'),
### EXCLUS('TYPE_RAFFINEMENT_UNIFORME','INFORMATION'),
- ),
+ ),
#
TYPE_RAFFINEMENT_LIBRE = FACT(statut='f',
RAFFINEMENT = SIMP (statut='o',typ='TXM',
ang="Choice of unrefinement mode.",
into=("NON","LIBRE",),),
- b_adaptation = bloc_adaptation(),
- b_indicateur_d_erreur = indicateur_d_erreur(),
- b_critere_de_raffinement = critere_de_raffinement(),
- b_critere_de_deraffinement = critere_de_deraffinement(),
- b_niveau_minimum = niveau_minimum(),
- b_niveau_maximum = niveau_maximum(),
+ b_adaptation = bloc_adaptation(),
+ b_indicateur_d_erreur = indicateur_d_erreur(),
+ b_critere_de_raffinement = critere_de_raffinement(),
+ b_critere_de_deraffinement = critere_de_deraffinement(),
+ b_niveau_minimum = niveau_minimum(),
+ b_niveau_maximum = niveau_maximum(),
),
RAFFINEMENT = SIMP (statut='o',typ='TXM',
fr="Choix du mode de raffinement.",
ang="Choice of refinement mode.",
- defaut="UNIFORME",
+ defaut="UNIFORME",
into=("UNIFORME",),),
DERAFFINEMENT = SIMP(statut='o',typ='TXM',
fr="Choix du mode de deraffinement.",
ang="Choice of unrefinement mode.",
- defaut="NON",
+ defaut="NON",
into=("NON",),),
- b_adaptation = bloc_adaptation(),
- b_niveau_minimum = niveau_minimum(),
- b_niveau_maximum = niveau_maximum(),
+ b_adaptation = bloc_adaptation(),
+ b_niveau_minimum = niveau_minimum(),
+ b_niveau_maximum = niveau_maximum(),
),
RAFFINEMENT = SIMP (statut='o',typ='TXM',
fr="Choix du mode de raffinement.",
ang="Choice of refinement mode.",
- defaut="NON",
+ defaut="NON",
into=("NON",),),
DERAFFINEMENT = SIMP(statut='o',typ='TXM',
fr="Choix du mode de deraffinement.",
ang="Choice of unrefinement mode.",
- defaut="UNIFORME",
+ defaut="UNIFORME",
into=("UNIFORME",),),
- b_adaptation = bloc_adaptation(),
- b_niveau_minimum = niveau_minimum(),
- b_niveau_maximum = niveau_maximum(),
+ b_adaptation = bloc_adaptation(),
+ b_niveau_minimum = niveau_minimum(),
+ b_niveau_maximum = niveau_maximum(),
),
#
INFORMATION =SIMP(statut='f',typ='TXM',
ang="Groups which define the boundary" ),
) ,
fichier_frontiere=BLOC ( condition = "NOM_MED_MAILLAGE_FRONTIERE != None" ,
- FIC_FRON = SIMP(statut='f',typ='TXM',
- fr="Nom du fichier MED contenant le maillage frontiere",
- ang="MED File including the boundary mesh" ),
+ FIC_FRON = SIMP(statut='f',typ='TXM',
+ fr="Nom du fichier MED contenant le maillage frontiere",
+ ang="MED File including the boundary mesh" ),
),
#
#
#
# ======================================================================
+#from I_VALIDATOR import ValidException
+from Noyau.N_VALIDATOR import ValError
+
class ASSD:
def __repr__(self):
return "concept %s de type %s" % (self.get_name(),self.__class__.__name__)
+
+ def __str__(self):
+ return self.get_name() or "<None>"
+
+ #def __del__(self):
+ # print "__del__",self
+
+class assd(ASSD):
+ def __convert__(cls,valeur):
+ return valeur
+ __convert__=classmethod(__convert__)
+
+class GEOM(ASSD):
+ def __convert__(cls,valeur):
+ return valeur
+ __convert__=classmethod(__convert__)
+
+class geom(GEOM):pass
+
+class CO(ASSD):
+ def __convert__(cls,valeur):
+ if hasattr(valeur,'_etape') :
+ # valeur est un concept CO qui a ete transforme par type_sdprod
+ if valeur.etape == valeur._etape:
+ # le concept est bien produit par l'etape
+ return valeur
+ raise ValError("Pas un concept CO")
+ #raise ValidException("Pas un concept CO")
+ __convert__=classmethod(__convert__)
+
# Modules EFICAS
import I_MCCOMPO
import CONNECTOR
+from Extensions import commande_comm
class ETAPE(I_MCCOMPO.MCCOMPO):
#suivantes
#ATTENTION: aux eventuelles recursions
self.parent.control_context_apres(self)
+ pass
CONNECTOR.Emit(self,"valid")
if self.parent:
# Cas particulier des opérateurs obligatoirement réentrants
#
if self.definition.reentrant == 'o':
- self.sd = self.reuse = self.jdc.get_sd_avant_etape(nom,self)
+ self.sd = self.reuse = self.jdc.get_sd_avant_etape(nom,self)
if self.sd != None :
self.sdnom=self.sd.nom
self.fin_modif()
if self.definition.reentrant == 'f' :
sd = self.jdc.get_sd_avant_etape(nom,self)
if sd != None :
- # FR : il faut tester que la sd trouvée est du bon type !!!!!!!!!!!!!!!!!
- if isinstance(sd,self.get_type_produit()) :
+ # FR : il faut tester que la sd trouvée est du bon type !!!!!!!!!!!!!!!!!
+ if isinstance(sd,self.get_type_produit()) :
self.sd = self.reuse = sd
self.sdnom = sd.nom
self.fin_modif()
return 1,"Opérateur facultativement réentrant et concept existant trouvé"
- else:
- return 0,"Concept déjà existant et de mauvais type"
+ else:
+ return 0,"Concept déjà existant et de mauvais type"
else :
# il faut enlever le lien vers une SD existante car si on passe ici
- # cela signifie que l'opérateur n'est pas utilisé en mode réentrant.
- # Si on ne fait pas cela, on risque de modifier une SD produite par un autre opérateur
- if self.reuse :
+ # cela signifie que l'opérateur n'est pas utilisé en mode réentrant.
+ # Si on ne fait pas cela, on risque de modifier une SD produite par un autre opérateur
+ if self.reuse :
old_reuse=self.reuse
- self.sd = self.reuse = self.sdnom = None
+ self.sd = self.reuse = self.sdnom = None
#
# On est dans le cas ou l'opérateur n'est pas réentrant ou est facultativement reentrant
# mais est utilisé en mode non réentrant
old_nom=self.sd.nom
if string.find(old_nom,'sansnom') :
# Dans le cas où old_nom == sansnom, isvalid retourne 0 alors que ...
- # par contre si le concept existe et qu'il s'appelle sansnom c'est que l'étape est valide
- # on peut donc le nommer sans test préalable
+ # par contre si le concept existe et qu'il s'appelle sansnom c'est que l'étape est valide
+ # on peut donc le nommer sans test préalable
if self.parent.get_sd_autour_etape(nom,self):
return 0,"Nommage du concept refuse : un concept de meme nom existe deja"
else:
# Renommage du concept : Il suffit de changer son attribut nom pour le nommer
- self.sd.nom=nom
+ self.sd.nom=nom
self.sdnom=nom
self.parent.update_concept_after_etape(self,self.sd)
self.fin_modif()
"""
if self.actif:return
self.actif = 1
+ self.init_modif()
if self.sd :
try:
self.jdc.append_sdprod(self.sd)
et de la liste des sd
"""
self.actif = 0
+ self.init_modif()
if self.sd :
self.jdc.del_sdprod(self.sd)
self.jdc.delete_concept_after_etape(self,self.sd)
def verif_existence_sd(self):
"""
Vérifie que les structures de données utilisées dans self existent bien dans le contexte
- avant étape, sinon enlève la référence à ces concepts
+ avant étape, sinon enlève la référence à ces concepts
"""
#print "verif_existence_sd",self.sd
for motcle in self.mc_liste :
Realise l'update des blocs conditionnels fils de self
"""
self._update_condition_bloc()
+
+ def get_objet_commentarise(self,format):
+ """
+ Cette méthode retourne un objet commande commentarisée
+ representant la commande self
+ """
+ import generator
+ g=generator.plugins[format]()
+ texte_commande = g.gener(self,format='beautifie')
+ # Il faut enlever la première ligne vide de texte_commande que
+ # rajoute le generator
+ rebut,texte_commande = string.split(texte_commande,'\n',1)
+ # on construit l'objet COMMANDE_COMM repésentatif de self mais non
+ # enregistré dans le jdc (pas ajouté dans jdc.etapes)
+ parent=self.parent
+ pos=self.parent.etapes.index(self)
+ commande_comment = commande_comm.COMMANDE_COMM(texte=texte_commande,
+ reg='non',
+ parent=parent)
+ self.parent.suppentite(self)
+ parent.addentite(commande_comment,pos)
+
+ return commande_comment
+
#ATTENTION SURCHARGE: a garder en synchro ou a reintegrer dans le Noyau
def Build_sd(self,nom):
#
#
# ======================================================================
+import string
from I_ASSD import ASSD
class FONCTION(ASSD):
# modification de C Durand sur la gestion des formules dans le superviseur
# On conserve l'ancienne classe fonction (ceinture et bretelles)
class fonction(FONCTION) : pass
-class formule(FONCTION) : pass
+
+from Extensions import param2
+class formule(FONCTION) :
+ def __call__(self,*val):
+ if len(val) != len(self.nompar):
+ raise TypeError(" %s() takes exactly %d argument (%d given)" % (self.nom,len(self.nompar),len(val)))
+ return param2.Unop2(self.nom,self.real_call,val)
+
+ def real_call(self,*val):
+ if hasattr(self.parent,'contexte_fichier_init'):
+ context=self.parent.contexte_fichier_init
+ else : context={}
+ i=0
+ for param in self.nompar :
+ context[param]=val[i]
+ i=i+1
+ try :
+ res=eval(self.expression,self.jdc.const_context, context)
+ except :
+ print 75*'!'
+ print '! '+string.ljust('Erreur evaluation formule '+self.nom,72)+'!'
+ print 75*'!'
+ raise
+ return res
+
if len(self.mc_liste) == 0:
# pas de fils pour self --> la FORMULE est incomplète
return None,None,None
- type_retourne="REEL"
+ type_retourne="REEL"
if len(self.mc_liste) > 0:
child = self.mc_liste[0] # child est un MCSIMP
corps = child.getval()
- else:
- corps = None
+ else:
+ corps = None
if len(self.mc_liste) > 1:
- child = self.mc_liste[1]
+ child = self.mc_liste[1]
l_args= child.getval()
- else :
- l_args=None
+ else :
+ l_args=None
return type_retourne,l_args,corps
def get_nom(self):
#for argument in l_arguments:
# argument = string.strip(argument)
# try:
- # nom=argument
+ # nom=argument
# typ,nom = string.split(argument,':')
# #pas de vérification sur le nom de l'argument
# #vérification du type de l'argument
"""
if not corps :
corps = self.corps
- if not arguments :
- arguments = self.arguments
+ if not arguments :
+ arguments = self.arguments
formule=(self.get_nom(),self.type_retourne,arguments,corps)
# on récupère la liste des constantes et des autres fonctions prédéfinies
# et qui peuvent être utilisées dans le corps de la formule courante
return 0,"Pas de nom donné à la FORMULE"
if len(nom) > 8 :
return 0,"Un nom de FORMULE ne peut dépasser 8 caractères"
- if nom[0] > "0" and nom[0] < "9" :
- return 0,"Un nom de FORMULE ne peut pas commencer par un chiffre"
+ if nom[0] > "0" and nom[0] < "9" :
+ return 0,"Un nom de FORMULE ne peut pas commencer par un chiffre"
sd = self.parent.get_sd_autour_etape(nom,self)
if sd :
return 0,"Un concept de nom %s existe déjà !" %nom
def verif_formule_python(self,formule=None):
"""
- Pour l instant ne fait qu un compile python
- il serait possible d ajouter des tests sur les arguments
- ou le type retourne mais ...
- """
+ Pour l instant ne fait qu un compile python
+ il serait possible d ajouter des tests sur les arguments
+ ou le type retourne mais ...
+ """
if not formule :
formule = (None,None,None,None)
test_nom,erreur_nom = self.verif_nom(formule[0])
else:
args = None
test_arguments,erreur_arguments = self.verif_arguments(args)
- corps=formule[3]
- erreur_formule= ''
- test_formule=1
- try :
- compile(corps,'<string>','eval')
- except :
- erreur_formule= "le corps de la formule n'est pas une formule python valide"
- test_formule=0
+ corps=formule[3]
+ erreur_formule= ''
+ test_formule=1
+ try :
+ compile(corps,'<string>','eval')
+ except :
+ erreur_formule= "le corps de la formule n'est pas une formule python valide"
+ test_formule=0
erreur = ''
test = test_nom*test_arguments*test_formule
if not test :
self.build_mc()
self.mc_liste=[]
if len(formule) < 4 :
- return O
+ return O
arguments=formule[3]
- if arguments[0] == '(' :
- arguments=[1,-1 ]
- if arguments[-1] == '(' :
- arguments=[0,-2 ]
- self.arguments=tuple(arguments.split(','))
+ if arguments[0] == '(' :
+ arguments=arguments[1:]
+ if arguments[-1] == ')' :
+ arguments=arguments[:-1]
+ self.arguments=tuple(arguments.split(','))
- i=1
- for k,v in self.definition.entites.items():
- child=self.definition.entites[k](None,nom=k,parent=self)
- new_valeur=formule[i+1]
- if i+1 == 3 :
- child.valeur = self.arguments
- else :
- child.valeur = new_valeur
- child.state = 'modified'
- self.mc_liste.append(child)
- i=i+1
-
+ i=1
+ for k,v in self.definition.entites.items():
+ child=self.definition.entites[k](None,nom=k,parent=self)
+ new_valeur=formule[i+1]
+ if i+1 == 3 :
+ child.valeur = self.arguments
+ else :
+ child.valeur = new_valeur
+ child.state = 'modified'
+ self.mc_liste.append(child)
+ i=i+1
+
self.corps = formule[2]
self.type_retourne = formule[1]
- sd = self.get_sd_prod()
+ sd = self.get_sd_prod()
if sd:
sd.nom = formule[0]
self.init_modif()
- return 1
+ return 1
def active(self):
"""
Il faut ajouter la formule au contexte global du JDC
"""
self.actif = 1
+ self.init_modif()
nom = self.get_nom()
if nom == '' : return
try:
Il faut supprimer la formule du contexte global du JDC
"""
self.actif = 0
+ self.init_modif()
if not self.sd : return
self.jdc.del_fonction(self.sd)
Mettre a jour les mots cles de l etape et eventuellement le concept produit si reuse
suite à la disparition du concept sd
Seuls les mots cles simples MCSIMP font un traitement autre que de transmettre aux fils,
- sauf les objets FORM_ETAPE qui doivent vérifier que le concept détruit n'est pas
- utilisé dans le corps de la fonction
+ sauf les objets FORM_ETAPE qui doivent vérifier que le concept détruit n'est pas
+ utilisé dans le corps de la fonction
"""
self.init_modif()
def get_sd_avant_du_bon_type_pour_type_de_base(self,etape,type):
"""
Retourne la liste des concepts avant etape d'1 type de base acceptable
- Attention different de la routine précédente : 1 seul type passé en parametre
- Teste sur issubclass et par sur le type permis
+ Attention different de la routine précédente : 1 seul type passé en parametre
+ Teste sur issubclass et par sur le type permis
"""
d=self.get_contexte_avant(etape)
l=[]
d=self.get_contexte_avant(etape)
for k,v in d.items():
if issubclass(v.__class__,LASSD):
- if k == valeur :
- return k
- # Attention pour enlever les . a la fin des pretendus reels
- if k == valeur[0:-1] :
- return v
+ if k == valeur :
+ return k
+ # Attention pour enlever les . a la fin des pretendus reels
+ if k == valeur[0:-1] :
+ return v
return None
def est_permis(self,v,types_permis):
objet.parent.dict_niveaux[objet.nom_niveau_definition].register(objet)
objet.niveau = objet.parent.dict_niveaux[objet.nom_niveau_definition]
self.etapes.insert(pos,objet)
- # il faut vérifier que les concepts utilisés par objet existent bien
- # à ce niveau d'arborescence
- objet.verif_existence_sd()
+ # il faut vérifier que les concepts utilisés par objet existent bien
+ # à ce niveau d'arborescence
+ objet.verif_existence_sd()
objet.update_mc_global()
self.active_etapes()
self.editmode=0
l_mc = []
for etape in self.etapes :
if etape.isactif() :
- if not etape.isvalid() :
- l = etape.get_liste_mc_inconnus()
- if l : l_mc.extend(l)
+ if not etape.isvalid() :
+ l = etape.get_liste_mc_inconnus()
+ if l : l_mc.extend(l)
return l_mc
def get_genealogie(self):
def changefichier(self,fichier):
self.fin_modif()
+ def eval_in_context(self,valeur,etape):
+ """ Tente d'evaluer valeur dans le contexte courant de etape
+ Retourne le parametre valeur inchange si l'evaluation est impossible
+ """
+ #contexte initial du jdc
+ context=self.condition_context.copy()
+ #contexte courant des concepts. Il contient les parametres
+ context.update(self.get_contexte_avant(etape))
+ try :
+ objet = eval(valeur,context)
+ return objet
+ except:
+ #traceback.print_exc()
+ pass
+ return valeur
+
+#ATTENTION SURCHARGE : cette methode doit etre gardée en synchronisation avec celle de Noyau
+ def supprime(self):
+ #print "supprime",self
+ Noyau.N_JDC.JDC.supprime(self)
+ # self.appli=None
+ # self.g_context={}
+ # self.const_context={}
+ # self.sds=[]
+ # self.sds_dict={}
+ # self.mc_globaux={}
+ # self.current_context={}
+ # self.condition_context={}
+ # self.etapes_niveaux=[]
+ # self.niveau=None
+ # self.params=[]
+ # self.fonctions=[]
+ # self._etape_context=None
+ # self.etapes=[]
+
#ATTENTION SURCHARGE : cette methode doit etre gardée en synchronisation avec celle de Noyau
def register(self,etape):
"""
import I_ETAPE
import Noyau
from Noyau.N_ASSD import ASSD
+import convert
# import rajoutés suite à l'ajout de Build_sd --> à résorber
import Noyau, Validation.V_MACRO_ETAPE
def get_contexte_jdc(self,fichier,text):
"""
- Interprète text comme un texte de jdc et retourne le
- contexte final
- cad le dictionnaire des sd disponibles à la dernière étape
+ Interprète text comme un texte de jdc et retourne le contexte final.
+
+ Le contexte final est le dictionnaire des sd disponibles à la dernière étape.
Si text n'est pas un texte de jdc valide, retourne None
ou leve une exception
--> utilisée par ops.POURSUITE et INCLUDE
# de prendre cette precaution mais ce n'est pas vrai partout.
old_recorded_units=self.recorded_units.copy()
+ # on supprime l'ancien jdc_aux s'il existe
+ if hasattr(self,'jdc_aux') and self.jdc_aux:
+ self.jdc_aux.supprime_aux()
+
if fichier is None:fichier="SansNom"
+
+ # Il faut convertir le texte inclus en fonction du format
+ # sauf les INCLUDE_MATERIAU
+ if self.nom != "INCLUDE_MATERIAU":
+ format=self.jdc.appli.format_fichier.get()
+ if convert.plugins.has_key(format):
+ # Le convertisseur existe on l'utilise
+ p=convert.plugins[format]()
+ p.text=text
+ text=p.convert('exec',self)
+
j=self.JdC_aux( procedure=text, nom=fichier,
appli=self.jdc.appli,
cata=self.jdc.cata,
self.etapes=j.etapes
self.jdc_aux=j
except:
+ traceback.print_exc()
# On retablit l'etape courante step
CONTEXT.unset_current_step()
CONTEXT.set_current_step(step)
# On recupere le contexte de l'include verifie
try:
j_context=j.get_verif_contexte()
+ #print j_context.keys()
+ #print j.g_context.keys()
except:
# On retablit l'etape courante step
CONTEXT.unset_current_step()
def make_contexte_include(self,fichier,text):
"""
- Cette méthode sert à créer un contexte en interprétant un texte source
- Python
+ Cette méthode sert à créer un contexte en interprétant un texte source Python.
"""
- #print "make_contexte_include"
+ #print "make_contexte_include",fichier
# on récupère le contexte d'un nouveau jdc dans lequel on interprete text
contexte = self.get_contexte_jdc(fichier,text)
if contexte == None :
#print "update_context.fin",d.keys()
#ATTENTION SURCHARGE : cette methode surcharge celle de Noyau (a garder en synchro)
+ def copy(self):
+ etape=Noyau.N_MACRO_ETAPE.MACRO_ETAPE.copy(self)
+ if hasattr(etape,"etapes") :etape.etapes=[]
+ if hasattr(etape,"jdc_aux") :
+ etape.jdc_aux=None
+ del etape.fichier_ini
+ return etape
+
def supprime(self):
#print "supprime",self
if hasattr(self,"jdc_aux") and self.jdc_aux:
self.jdc_aux.supprime_aux()
self.jdc_aux=None
Noyau.N_MACRO_ETAPE.MACRO_ETAPE.supprime(self)
+ # self.contexte_fichier_init={}
+ # self.old_contexte_fichier_init={}
+ # self.g_context={}
+ # self.current_context={}
+ # self.etapes=[]
+ # self.mc_liste=[]
#ATTENTION SURCHARGE : cette methode surcharge celle de Noyau (a garder en synchro)
def get_file(self,unite=None,fic_origine=''):
en interprétant un texte source Python
Elle est appelee par la fonction sd_prd d'INCLUDE_MATERIAU
"""
+ #print "make_contexte",fichier
# On supprime l'attribut mat qui bloque l'evaluation du source de l'INCLUDE_MATERIAU
# car on ne s'appuie pas sur lui dans EFICAS mais sur l'attribut fichier_ini
if hasattr(self,'mat'):del self.mat
- self.fichier_ini =fichier
- self.fichier_unite =fichier
- self.fichier_text=text
- self.fichier_err=None
- self.contexte_fichier_init={}
- # On specifie la classe a utiliser pour le JDC auxiliaire
- try:
- import Extensions.jdc_include
- except:
- traceback.print_exc()
- raise
- self.JdC_aux=Extensions.jdc_include.JdC_include
- try:
- self.make_contexte_include(self.fichier_ini ,self.fichier_text)
- #self.parent.record_unit(self.fichier_unite,self)
- except:
- l=traceback.format_exception_only("Fichier invalide",sys.exc_info()[1])
- self.fichier_err = string.join(l)
- #self.parent.record_unit(self.fichier_unite,self)
- self.g_context={}
- self.etapes=[]
- self.jdc_aux=None
+ if not hasattr(self,'fichier_ini') or self.fichier_ini != fichier or self.fichier_mater != self.nom_mater:
+ # le fichier est nouveau ou change
+ self.fichier_ini =fichier
+ self.fichier_unite =fichier
+ self.fichier_mater=self.nom_mater
+ self.fichier_text=text
+ self.fichier_err=None
self.contexte_fichier_init={}
- raise
+ # On specifie la classe a utiliser pour le JDC auxiliaire
+ try:
+ import Extensions.jdc_include
+ self.JdC_aux=Extensions.jdc_include.JdC_include
+ except:
+ traceback.print_exc()
+ raise
+ try:
+ self.make_contexte_include(self.fichier_ini ,self.fichier_text)
+ except:
+ l=traceback.format_exception_only("Fichier invalide",sys.exc_info()[1])
+ self.fichier_err = string.join(l)
+ self.g_context={}
+ self.etapes=[]
+ self.jdc_aux=None
+ self.contexte_fichier_init={}
+ raise
+ else:
+ # le fichier est le meme on ne le reevalue pas
+ # et on leve une exception si une erreur a été enregistrée
+ if self.fichier_err is not None: raise Exception(self.fichier_err)
#ATTENTION SURCHARGE : cette methode surcharge celle de Noyau (a garder en synchro)
def update_sdprod(self,cr='non'):
else :
# dans ce cas on est en mode copie d'un motcle
objet = name
- # Appel de la methode qui fait le menage dans les references
- # sur les concepts produits (verification que les concepts existent
- # dans le contexte de la commande courante).
- objet.verif_existence_sd()
+ # Appel de la methode qui fait le menage dans les references
+ # sur les concepts produits (verification que les concepts existent
+ # dans le contexte de la commande courante).
+ objet.verif_existence_sd()
# On verifie que l'ajout d'objet est autorise
if self.ispermis(objet) == 0:
self.jdc.send_message("L'objet %s ne peut être un fils de %s" %(objet.nom,
- self.nom))
+ self.nom))
self.fin_modif()
return 0
# on normalize l'objet
objet=objet.normalize()
# Le mot cle n'existe pas encore. On l'ajoute a la position
- # demandee (pos)
+ # demandee (pos)
if pos == None :
self.mc_liste.append(objet)
else :
l_mc = []
if self.reste_val != {}:
for k,v in self.reste_val.items() :
- l_mc.append([self,k,v])
+ l_mc.append([self,k,v])
for child in self.mc_liste :
if child.isvalid() : continue
l_child = child.get_liste_mc_inconnus()
for mc in l_child:
- l = [self]
- l.extend(mc)
- l_mc.append(l)
+ l = [self]
+ l.extend(mc)
+ l_mc.append(l)
return l_mc
def deep_update_condition_bloc(self):
def verif_existence_sd(self):
"""
Vérifie que les structures de données utilisées dans self existent bien dans le contexte
- avant étape, sinon enlève la référence à ces concepts
+ avant étape, sinon enlève la référence à ces concepts
"""
for motcle in self.mc_liste :
motcle.verif_existence_sd()
def verif_existence_sd(self):
"""
Vérifie que les structures de données utilisées dans self existent bien dans le contexte
- avant étape, sinon enlève la référence à ces concepts
+ avant étape, sinon enlève la référence à ces concepts
"""
for motcle in self.data :
motcle.verif_existence_sd()
from Extensions import param2
import I_OBJECT
import CONNECTOR
+from I_VALIDATOR import ValError,listProto
class MCSIMP(I_OBJECT.OBJECT):
return None
elif type(self.valeur) == types.FloatType :
# Traitement d'un flottant isolé
- # txt = repr_float(self.valeur)
- # Normalement str fait un travail correct
txt = str(self.valeur)
clefobj=self.GetNomConcept()
if self.jdc.appli.dict_reels.has_key(clefobj):
elif type(self.valeur) in (types.ListType,types.TupleType) :
# Traitement des listes
txt='('
- i=0
+ sep=''
for val in self.valeur:
if type(val) == types.FloatType :
- # CCAR : Normalement str fait un travail correct
- #txt=txt + i*',' + repr_float(val)
clefobj=self.GetNomConcept()
if self.jdc.appli.dict_reels.has_key(clefobj):
if self.jdc.appli.dict_reels[clefobj].has_key(val):
- txt=txt + i*',' +self.jdc.appli.dict_reels[clefobj][val]
+ txt=txt + sep +self.jdc.appli.dict_reels[clefobj][val]
else :
- txt=txt + i*',' + str(val)
+ txt=txt + sep + str(val)
else :
- txt=txt + i*',' + str(val)
- elif isinstance(val,ASSD):
- txt = txt + i*',' + val.get_name()
- #PN
- # ajout du elif
- elif type(val) == types.InstanceType and val.__class__.__name__ in ('PARAMETRE','PARAMETRE_EVAL'):
- txt = txt + i*','+ str(val)
+ txt=txt + sep + str(val)
else:
- txt = txt + i*','+ myrepr.repr(val)
- i=1
+ txt = txt + sep+ str(val)
+ if len(txt) > 200:
+ #ligne trop longue, on tronque
+ txt=txt+" ..."
+ break
+ sep=','
txt=txt+')'
- elif isinstance(self.valeur,ASSD):
- # Cas des ASSD
- txt=self.getval()
- elif type(self.valeur) == types.InstanceType and self.valeur.__class__.__name__ in ('PARAMETRE','PARAMETRE_EVAL'):
- # Cas des PARAMETRES
- txt=str(self.valeur)
else:
# Traitement des autres cas
- txt = myrepr.repr(self.valeur)
+ txt = str(self.valeur)
# txt peut etre une longue chaine sur plusieurs lignes.
# Il est possible de tronquer cette chaine au premier \n et
def isoblig(self):
return self.definition.statut=='o'
+ def valid_val(self,valeur):
+ """
+ Verifie que la valeur passee en argument (valeur) est valide
+ sans modifier la valeur courante
+ """
+ lval=listProto.adapt(valeur)
+ if lval is None:
+ valid=0
+ mess="None n'est pas une valeur autorisée"
+ else:
+ try:
+ for val in lval:
+ self.typeProto.adapt(val)
+ self.intoProto.adapt(val)
+ self.cardProto.adapt(lval)
+ if self.definition.validators:
+ self.definition.validators.convert(lval)
+ valid,mess=1,""
+ except ValError,e:
+ mess=str(e)
+ valid=0
+ return valid,mess
+
def valid_valeur(self,new_valeur):
"""
Verifie que la valeur passee en argument (new_valeur) est valide
sans modifier la valeur courante (evite d'utiliser set_valeur et est plus performant)
"""
- old_valeur=self.valeur
- old_val=self.val
- self.valeur = new_valeur
- self.val = new_valeur
- self.state="modified"
- validite=self.isvalid()
- self.valeur = old_valeur
- self.val = old_valeur
- self.state="modified"
- self.isvalid()
+ validite,mess=self.valid_val(new_valeur)
return validite
def valid_valeur_partielle(self,new_valeur):
"""
- Verifie que la valeur passee en argument (new_valeur) est partiellement valide
- sans modifier la valeur courante (evite d'utiliser set_valeur et est plus performant)
+ Verifie que la valeur passee en argument (new_valeur) est une liste partiellement valide
+ sans modifier la valeur courante du mot cle
"""
- old_valeur=self.valeur
- old_val=self.val
-
- self.valeur = new_valeur
- self.val = new_valeur
- self.state="modified"
- validite=0
- if self.isvalid():
- validite=1
- elif self.definition.validators :
- validite=self.definition.validators.valide_liste_partielle(new_valeur)
-
- if validite==0:
- min,max=self.get_min_max()
- if len(new_valeur) < min :
- validite=1
-
- self.valeur = old_valeur
- self.val = old_valeur
- self.state="modified"
- self.isvalid()
+ validite=1
+ try:
+ for val in new_valeur:
+ self.typeProto.adapt(val)
+ self.intoProto.adapt(val)
+ #on ne verifie pas la cardinalité
+ if self.definition.validators:
+ validite=self.definition.validators.valide_liste_partielle(new_valeur)
+ except ValError,e:
+ validite=0
+
return validite
def update_condition_bloc(self):
sd = self.jdc.get_sd_avant_etape(new_valeur,self.etape)
#sd = self.jdc.get_contexte_avant(self.etape).get(new_valeur,None)
#print sd
- if sd :
+ if sd is not None:
return sd,1
lsd = self.jdc.cherche_list_avant(self.etape,new_valeur)
if lsd :
objet = eval(new_valeur,d)
return objet,1
except Exception:
- itparam=self.cherche_item_parametre(new_valeur)
- if itparam:
- return itparam,1
- try :
- object=eval(new_valeur.valeur,d)
- except :
- pass
+ itparam=self.cherche_item_parametre(new_valeur)
+ if itparam:
+ return itparam,1
+ try :
+ object=eval(new_valeur.valeur,d)
+ except :
+ pass
if CONTEXT.debug : traceback.print_exc()
return None,0
+ def eval_val(self,new_valeur):
+ """
+ Tente d'evaluer new_valeur comme un objet du jdc (par appel a eval_val_item)
+ ou comme une liste de ces memes objets
+ Si new_valeur contient au moins un separateur (,), tente l'evaluation sur
+ la chaine splittee
+ """
+ if type(new_valeur) in (types.ListType,types.TupleType):
+ valeurretour=[]
+ for item in new_valeur :
+ valeurretour.append(self.eval_val_item(item))
+ return valeurretour
+ else:
+ valeur=self.eval_val_item(new_valeur)
+ return valeur
+
+ def eval_val_item(self,new_valeur):
+ """
+ Tente d'evaluer new_valeur comme un concept, un parametre, un objet Python
+ Si c'est impossible retourne new_valeur inchange
+ argument new_valeur : string (nom de concept, de parametre, expression ou simple chaine)
+ """
+ if self.etape and self.etape.parent:
+ valeur=self.etape.parent.eval_in_context(new_valeur,self.etape)
+ return valeur
+ else:
+ try :
+ valeur = eval(val)
+ return valeur
+ except:
+ #traceback.print_exc()
+ return new_valeur
+ pass
+
def cherche_item_parametre (self,new_valeur):
try:
- nomparam=new_valeur[0:new_valeur.find("[")]
- indice=new_valeur[new_valeur.find("[")+1:new_valeur.find("]")]
- for p in self.jdc.params:
- if p.nom == nomparam :
- if int(indice) < len(p.get_valeurs()):
- itparam=parametre.ITEM_PARAMETRE(p,int(indice))
- return itparam
- return None
- except:
- return None
+ nomparam=new_valeur[0:new_valeur.find("[")]
+ indice=new_valeur[new_valeur.find("[")+1:new_valeur.find("]")]
+ for p in self.jdc.params:
+ if p.nom == nomparam :
+ if int(indice) < len(p.get_valeurs()):
+ itparam=parametre.ITEM_PARAMETRE(p,int(indice))
+ return itparam
+ return None
+ except:
+ return None
def update_concept(self,sd):
if type(self.valeur) in (types.ListType,types.TupleType) :
self.init_modif()
self.valeur = new_objet
self.val = new_objet
- self.fin_modif()
- step.reset_context()
# On force l'enregistrement de new_objet en tant que concept produit
# de la macro en appelant get_type_produit avec force=1
self.etape.get_type_produit(force=1)
+ self.fin_modif()
+ step.reset_context()
#print "set_valeur_co",new_objet
return 1,"Concept créé"
-
+
def verif_existence_sd(self):
"""
Vérifie que les structures de données utilisées dans self existent bien dans le contexte
- avant étape, sinon enlève la référence à ces concepts
+ avant étape, sinon enlève la référence à ces concepts
"""
#print "verif_existence_sd"
# Attention : possible probleme avec include
+ # A priori il n'y a pas de raison de retirer les concepts non existants
+ # avant etape. En fait il s'agit uniquement eventuellement de ceux crees par une macro
l_sd_avant_etape = self.jdc.get_contexte_avant(self.etape).values()
if type(self.valeur) in (types.TupleType,types.ListType) :
l=[]
- self.init_modif()
for sd in self.valeur:
if isinstance(sd,ASSD) :
- if sd in l_sd_avant_etape :
- l.append(sd)
- else:
- l.append(sd)
- self.valeur=tuple(l)
- self.fin_modif()
+ if sd in l_sd_avant_etape or self.etape.get_sdprods(sd.nom) is sd:
+ l.append(sd)
+ else:
+ l.append(sd)
+ if len(l) < len(self.valeur):
+ self.init_modif()
+ self.valeur=tuple(l)
+ self.fin_modif()
else:
if isinstance(self.valeur,ASSD) :
- if self.valeur not in l_sd_avant_etape :
+ if self.valeur not in l_sd_avant_etape and self.etape.get_sdprods(self.valeur.nom) is None:
self.init_modif()
- self.valeur = None
+ self.valeur = None
self.fin_modif()
def get_min_max(self):
genea = self.get_genealogie()
if "VALE_C" in genea and "DEFI_FONCTION" in genea : return 3
if "VALE" in genea and "DEFI_FONCTION" in genea : return 2
- print dir(self)
return 0
+ def valide_item(self,item):
+ """Valide un item isolé. Cet item est candidat à l'ajout à la liste existante"""
+ valid=1
+ try:
+ #on verifie le type
+ self.typeProto.adapt(item)
+ #on verifie les choix possibles
+ self.intoProto.adapt(item)
+ #on ne verifie pas la cardinalité
+ if self.definition.validators:
+ valid=self.definition.validators.verif_item(item)
+ except ValError,e:
+ valid=0
+ return valid
+
+ def verif_type(self,item):
+ """Verifie le type d'un item de liste"""
+ try:
+ #on verifie le type
+ self.typeProto.adapt(item)
+ valid=1
+ except ValError,e:
+ valid=0
+ return valid
+
#--------------------------------------------------------------------------------
#ATTENTION SURCHARGE : toutes les methodes ci apres sont des surcharges du Noyau et de Validation
# Elles doivent etre reintegrees des que possible
- def isvalid(self,cr='non'):
- """
- Cette méthode retourne un indicateur de validité de l'objet de type MCSIMP
-
- - 0 si l'objet est invalide
- - 1 si l'objet est valide
-
- Le paramètre cr permet de paramétrer le traitement. Si cr == 'oui'
- la méthode construit également un comte-rendu de validation
- dans self.cr qui doit avoir été créé préalablement.
- """
- if self.state == 'unchanged':
- return self.valid
- else:
- valid = 1
- v=self.valeur
- # verification presence
- if self.isoblig() and v == None :
- if cr == 'oui' :
- self.cr.fatal(string.join(("Mot-clé : ",self.nom," obligatoire non valorisé")))
- valid = 0
-
- if v is None:
- valid=0
- if cr == 'oui' :
- self.cr.fatal("None n'est pas une valeur autorisée")
- else:
- # type,into ...
- #PN ??? je n ose pas y toucher ???
- #if v.__class__.__name__ in ('PARAMETRE','EVAL', 'ITEM_PARAMETRE','PARAMETRE_EVAL'):
- if ((issubclass(v.__class__,param2.Formula)) or
- (v.__class__.__name__ in ('EVAL', 'ITEM_PARAMETRE','PARAMETRE_EVAL'))):
- verif_type=self.verif_typeihm(v)
- else:
- verif_type=self.verif_type(val=v,cr=None)
- # cas des tuples avec un ITEM_PARAMETRE
- if verif_type == 0:
- if type(v) == types.TupleType :
- new_val=[]
- for i in v:
- if ((issubclass(i.__class__,param2.Formula)) or
- (i.__class__.__name__ in ('EVAL', 'ITEM_PARAMETRE','PARAMETRE_EVAL'))):
- if self.verif_typeihm(val=i,cr=cr) == 0:
- verif_type = 0
- break
- else:
- new_val.append(i)
- if new_val != [] :
- verif_type=self.verif_type(val=new_val,cr=cr)
- else :
- # Cas d une liste de paramétre
- verif_type=self.verif_typeliste(val=v,cr=cr)
- else:
- verif_type=self.verif_type(val=v,cr=cr)
- valid = verif_type*self.verif_into(cr=cr)*self.verif_card(cr=cr)
- #
- # On verifie les validateurs s'il y en a et si necessaire (valid == 1)
- #
- if valid and self.definition.validators and not self.definition.validators.verif(self.valeur):
- if cr == 'oui' :
- self.cr.fatal(string.join(("Mot-clé : ",self.nom,"devrait avoir ",self.definition.validators.info())))
- valid=0
- # fin des validateurs
- #
- # cas d un item Parametre
- if self.valeur.__class__.__name__ == 'ITEM_PARAMETRE':
- valid=self.valeur.isvalid()
- if valid == 0:
- if cr == 'oui' :
- self.cr.fatal(string.join( repr (self.valeur), " a un indice incorrect"))
-
- self.set_valid(valid)
- return self.valid
-
-
def verif_typeihm(self,val,cr='non'):
try :
val.eval()
- return 1
+ return 1
except :
- pass
+ traceback.print_exc()
+ pass
return self.verif_type(val,cr)
def verif_typeliste(self,val,cr='non') :
verif=0
for v in val :
- verif=verif+self.verif_typeihm(v,cr)
+ verif=verif+self.verif_typeihm(v,cr)
return verif
-
+
#def __del__(self):
# print "__del__",self
+
+class ErrorObj(OBJECT):pass
+
# -*- coding: utf-8 -*-
-"""
- Ce module contient des classes permettant de définir des validateurs
- pour EFICAS. Ces classes constituent un complément à des classes existantes
- dans Noyau/N_VALIDATOR.py ou de nouvelles classes de validation.
- Ces classes complémentaires ne servent que pour l'IHM d'EFICAS.
- Elles servent essentiellement à ajouter des comportements spécifiques
- IHM aux classes existantes dans le Noyau.
- Ces comportements pourront etre rapatries dans le Noyau quand leur
- interface sera stabilisée.
-"""
-import types
-
-class Valid:
- """
- Cette classe est la classe mere de toutes les classes complémentaires
- que l'on trouve dans Ihm.
- """
-
-class ListVal(Valid):pass
-
-class RangeVal(ListVal):pass
-
-class CardVal(Valid):pass
-
-class PairVal(ListVal):pass
-
-class EnumVal(ListVal):pass
-
-class NoRepeat(ListVal):pass
-
-class LongStr(ListVal):pass
-
-class OrdList(ListVal):pass
-
-CoercableFuncs = { types.IntType: int,
- types.LongType: long,
- types.FloatType: float,
- types.ComplexType: complex,
- types.UnicodeType: unicode }
-
-class TypeVal(ListVal):pass
-
-class InstanceVal(ListVal):pass
-
-class FunctionVal(Valid):pass
-
-class OrVal(Valid):pass
-
-class AndVal(Valid):pass
+from Noyau.N_VALIDATOR import *
+
+class Compulsory(Compulsory):
+ def has_into(self):
+ return 0
+ def valide_liste_partielle(self,liste_courante=None):
+ return 1
+
+class OrdList(OrdList):
+ def valide_liste_partielle(self,liste_courante=None):
+ """
+ Méthode de validation de liste partielle pour le validateur OrdList
+ """
+ try:
+ self.convert(liste_courante)
+ valid=1
+ except:
+ valid=0
+ return valid
- =================================================
- Procédure d'installation d'EFICAS
- =================================================
+ =================================================
+ Procédure d'installation d'EFICAS
+ =================================================
Pré-requis :
------------
- - Python 2.1 ou supérieur avec Tkinter
- - PMW 8.0.5 ou supérieur
+ - Python 2.1 ou supérieur avec Tkinter
+ - PMW 8.0.5 ou supérieur
Installation :
--------------
2°) Décompressez ce fichier comme suit :
- gunzip eficas.tar.gz
- tar xvf eficas.tar
+ gunzip eficas.tar.gz
+ tar xvf eficas.tar
3°) Vous devriez désormais voir 4 éléments :
- - 1 fichier README_install
- - 1 fichier install.py
- - 1 fichier code_aster.gif
- - 1 répertoire /Eficas
+ - 1 fichier README_install
+ - 1 fichier install.py
+ - 1 fichier code_aster.gif
+ - 1 répertoire /Eficas
4°) Reportez-vous au fichier README_install pour la suite des actions à entreprendre.
\r
\r
- =================================================\r
- Procédure d'installation d'EFICAS \r
- =================================================\r
+ =================================================\r
+ Procédure d'installation d'EFICAS \r
+ =================================================\r
\r
Pour lancer la procédure d'installation, tapez :\r
\r
- python install.py\r
+ python install.py\r
\r
Vous pouvez remplacer 'python' par le chemin d'accès de votre interpréteur Python.\r
\r
fichier de configuration d'EFICAS qui s'appelle editeur.ini et qui se trouvera, une fois EFICAS,\r
installé, dans le répertoire Eficas/Aster\r
\r
-- Répertoire d'installation : répertoire dans lequel vous voulez installer Eficas\r
-- Répertoire de travail : répertoire de travail temporaire d'EFICAS\r
-- Répertoire matériaux : répertoire dans lequel se trouvent les catalogues matériaux d'ASTER\r
-- Répertoire doc Aster : répertoire dans lequel se trouve le manuel U4 de la doc Aster (format pdf)\r
- ex : /logiciels/aster/NEW6/doc/pdf/u4\r
-- Exécutable Acrobat Reader : chemin d'accès complet à l'exécutable Acrobat Reader\r
+- Répertoire d'installation : répertoire dans lequel vous voulez installer Eficas\r
+- Répertoire de travail : répertoire de travail temporaire d'EFICAS\r
+- Répertoire matériaux : répertoire dans lequel se trouvent les catalogues matériaux d'ASTER\r
+- Répertoire doc Aster : répertoire dans lequel se trouve le manuel U4 de la doc Aster (format pdf)\r
+ ex : /logiciels/aster/NEW6/doc/pdf/u4\r
+- Exécutable Acrobat Reader : chemin d'accès complet à l'exécutable Acrobat Reader\r
\r
\r
-Catalogues Aster : EFICAS installe par défaut le catalogue Aster v6 qui se trouve en\r
- Eficas/Aster/Cata.\r
- Si vous voulez en installer d'autres, il faut qu'ils se trouvent dans ce même répertoire\r
- ou qu'il y ait un lien dans ce répertoire vers le fichier.\r
- Pour ajouter d'autres catalogues, il faut aller modifier directement le fichier editeur.ini\r
+Catalogues Aster : EFICAS installe par défaut le catalogue Aster v6 qui se trouve en\r
+ Eficas/Aster/Cata.\r
+ Si vous voulez en installer d'autres, il faut qu'ils se trouvent dans ce même répertoire\r
+ ou qu'il y ait un lien dans ce répertoire vers le fichier.\r
+ Pour ajouter d'autres catalogues, il faut aller modifier directement le fichier editeur.ini\r
\r
- \r
+ \r
\r
-Lancement d'EFICAS : le fichier à lancer est Eficas/Aster/eficas_aster.py\r
- il faut le lancer précédé du chemin d'accès à l'interpréteur Python comme\r
- pour la procédure d'installation.\r
+Lancement d'EFICAS : le fichier à lancer est Eficas/Aster/eficas_aster.py\r
+ il faut le lancer précédé du chemin d'accès à l'interpréteur Python comme\r
+ pour la procédure d'installation.\r
\r
\r
self.install_running = 0\r
return\r
except :\r
- traceback.print_exc()\r
+ traceback.print_exc()\r
self.install_running = 0\r
self.afficher_fatale("Impossible de copier certains fichiers")\r
\r
cata = """catalogues = (('ASTER','v6',rep_cata + 'cata_STA6.py','python','defaut'),)\n"""\r
f.write(cata)\r
f.close()\r
- \r
+ \r
\r
def move_files(self):\r
"""\r
JdC = JDC_CATA(code='HOMARD',
execmodul=None,
regles = (AU_MOINS_UN('DONNEES_HOMARD'),),
- )
+ )
# Type le plus general
#class entier (ASSD):pass
#
regles=( AU_MOINS_UN('TYPE_RAFFINEMENT_LIBRE','TYPE_RAFFINEMENT_UNIFORME'),
EXCLUS('TYPE_RAFFINEMENT_LIBRE','TYPE_RAFFINEMENT_UNIFORME'),),
- TYPE_RAFFINEMENT_LIBRE = FACT(statut='f',
- RAFFINEMENT = SIMP(statut='o',typ='TXM',
+ TYPE_RAFFINEMENT_LIBRE = FACT(statut='f',
+ RAFFINEMENT = SIMP(statut='o',typ='TXM',
position='global',
fr="Choix du mode de raffinement.",
ang="Choice of refinement mode.",
into=("LIBRE","UNIFORME",) ),
- DERAFFINEMENT = SIMP(statut='o',typ='TXM',
+ DERAFFINEMENT = SIMP(statut='o',typ='TXM',
position='global',
fr="Choix du mode de deraffinement.",
ang="Choice of unrefinement mode.",
into=("LIBRE",), ),),
- TYPE_RAFFINEMENT_UNIFORME = FACT(statut='f',
- RAFFINEMENT = SIMP(statut='o',typ='TXM',
+ TYPE_RAFFINEMENT_UNIFORME = FACT(statut='f',
+ RAFFINEMENT = SIMP(statut='o',typ='TXM',
fr="Choix du mode de raffinement.",
ang="Choice of refinement mode.",
into=("NON","NON-CONFORME","NON-CONFORME-INDICATEUR") ),
- DERAFFINEMENT = SIMP(statut='o',typ='TXM',
+ DERAFFINEMENT = SIMP(statut='o',typ='TXM',
fr="Choix du mode de deraffinement.",
ang="Choice of unrefinement mode.",
into=("UNIFORME","NON",), ),),
"""
try :
- from developpeur import DEVELOPPEUR
+ from developpeur import DEVELOPPEUR
except :
- DEVELOPPEUR=None
+ DEVELOPPEUR=None
if DEVELOPPEUR :
import developpeur
- developpeur.sortie.write( "import de "+__name__+" : $Id: MakeNomComplet.py,v 1.2 2003/03/07 14:30:48 eficas Exp $" )
+ developpeur.sortie.write( "import de "+__name__+" : $Id: MakeNomComplet.py,v 1.3.8.1 2006/03/10 15:10:44 eficas Exp $" )
developpeur.sortie.write( "\n" )
try :
- print basename( "/toto/main.py" )
- print "ERREUR"
+ print basename( "/toto/main.py" )
+ print "ERREUR"
sys.exit(5)
except Exception,e :
print str(e)
- print "OKAY"
+ print "OKAY"
pass
print "FIN NORMALE DE "+__name__
sys.exit(0)
-#@ MODIF N_ASSD Noyau DATE 22/02/2005 AUTEUR DURAND C.DURAND
+#@ MODIF N_ASSD Noyau DATE 16/05/2006 AUTEUR DURAND C.DURAND
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
def __getitem__(self,key):
return self.etape[key]
- def is_object(valeur):
- """
- Indique si valeur est d'un type conforme à la classe (retourne 1)
- ou non conforme (retourne 0)
- """
- return 0
-
def get_name(self):
"""
Retourne le nom de self, éventuellement en le demandant au JDC
if key[0]=='_':del d[key]
return d
-class assd(ASSD):
- def is_object(valeur):
+ def par_lot(self):
"""
- Indique si valeur est d'un type conforme à la classe (1)
- ou non conforme (0)
- La classe assd est utilisée pour valider tout objet
+ Retourne True si l'ASSD est créée en mode PAR_LOT='OUI'.
"""
- return 1
-
+ if not hasattr(self, 'jdc') or self.jdc == None:
+ val = None
+ else:
+ val = self.jdc.par_lot
+ return val == 'OUI'
+class assd(ASSD):
+ def __convert__(cls,valeur):
+ return valeur
+ __convert__=classmethod(__convert__)
-#@ MODIF N_CO Noyau DATE 22/02/2005 AUTEUR DURAND C.DURAND
+#@ MODIF N_CO Noyau DATE 16/05/2006 AUTEUR DURAND C.DURAND
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
from N_ASSD import ASSD
from N_Exception import AsException
+from N_VALIDATOR import ValError
import N_utils
class CO(ASSD):
else:
self.nom=nom
- def is_object(valeur):
- """
- Indique si valeur est d'un type conforme à la classe (retourne 1)
- ou non conforme (retourne 0)
- """
- if hasattr(valeur,'_etape') :
- # valeur est un concept CO qui a ete transforme par type_sdprod
- if valeur.etape == valeur._etape:
- # le concept est bien produit par l'etape
- return 1
- return 0
-
+ def __convert__(cls,valeur):
+ if hasattr(valeur,'_etape') :
+ # valeur est un concept CO qui a ete transforme par type_sdprod
+ if valeur.etape == valeur._etape:
+ # le concept est bien produit par l'etape
+ return valeur
+ raise ValError("Pas un concept CO")
+ __convert__=classmethod(__convert__)
-#@ MODIF N_ETAPE Noyau DATE 22/02/2005 AUTEUR DURAND C.DURAND
+#@ MODIF N_ETAPE Noyau DATE 10/05/2006 AUTEUR MCOURTOI M.COURTOIS
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
le nommage du concept.
"""
- if not self.isactif():return
self.sdnom=nom
try:
if self.parent:
self.etape=self
for mocle in self.mc_liste:
mocle.reparent(self)
+ if self.sd and self.reuse == None :
+ self.sd.jdc=self.jdc
def get_cmd(self,nomcmd):
"""
new_sd.nom = self.sd.nom
new_etape.copy_intern(self)
return new_etape
+
+ def reset_jdc(self,new_jdc):
+ """
+ Reinitialise le nommage du concept de l'etape lors d'un changement de jdc
+ """
+ if self.sd and self.reuse == None :
+ self.parent.NommerSdprod(self.sd,self.sd.nom)
+
-#@ MODIF N_FACT Noyau DATE 14/09/2004 AUTEUR MCOURTOI M.COURTOIS
+#@ MODIF N_FACT Noyau DATE 16/05/2006 AUTEUR DURAND C.DURAND
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
import N_ENTITE
import N_MCFACT
import N_MCLIST
+from N__F import _F
+
+import N_OBJECT
class FACT(N_ENTITE.ENTITE):
"""
elif type(self.defaut) == types.TupleType:
val=self.defaut
# Est ce utile ? Le défaut pourrait etre uniquement un dict
- elif type(self.defaut) == types.DictType or isinstance(self.defaut,N_MCFACT._F):
+ elif type(self.defaut) == types.DictType or isinstance(self.defaut,_F):
val=self.defaut
else:
# On ne devrait jamais passer par la
l.init(nom = nom,parent=parent)
if type(val) in (types.TupleType,types.ListType) :
for v in val:
- objet=self.class_instance(nom=nom,definition=self,val=v,parent=parent)
- l.append(objet)
- else:
+ if type(v) == types.DictType or isinstance(v, _F):
+ objet=self.class_instance(nom=nom,definition=self,val=v,parent=parent)
+ l.append(objet)
+ else:
+ l.append(N_OBJECT.ErrorObj(self,v,parent,nom))
+ elif type(val) == types.DictType or isinstance(val, _F):
objet=self.class_instance(nom=nom,definition=self,val=val,parent=parent)
l.append(objet)
+ else:
+ l.append(N_OBJECT.ErrorObj(self,val,parent,nom))
return l
-#@ MODIF N_GEOM Noyau DATE 14/09/2004 AUTEUR MCOURTOI M.COURTOIS
+#@ MODIF N_GEOM Noyau DATE 16/05/2006 AUTEUR DURAND C.DURAND
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
def get_name(self):
return self.nom
- def is_object(valeur):
- """
- Indique si valeur est d'un type conforme à la classe (1)
- ou non conforme (0)
- La classe GEOM est utilisée pour tous les objets géométriques
- Elle valide tout objet
- """
- return 1
-
+ def __convert__(cls,valeur):
+ return valeur
+ __convert__=classmethod(__convert__)
class geom(GEOM):pass
-#@ MODIF N_JDC Noyau DATE 05/09/2005 AUTEUR DURAND C.DURAND
+#@ MODIF N_JDC Noyau DATE 10/05/2006 AUTEUR MCOURTOI M.COURTOIS
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
if hasattr(cata,nomcmd):
return getattr(cata,nomcmd)
+ def append_reset(self,etape):
+ """
+ Ajoute une etape provenant d'un autre jdc a la liste des etapes
+ et remet à jour la parenté de l'étape et des concepts
+ """
+ self.etapes.append(etape)
+ etape.reparent(self)
+ etape.reset_jdc(self)
-#@ MODIF N_MACRO_ETAPE Noyau DATE 31/05/2005 AUTEUR DURAND C.DURAND
+#@ MODIF N_MACRO_ETAPE Noyau DATE 10/05/2006 AUTEUR MCOURTOI M.COURTOIS
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
création et le nommage du concept.
"""
- if not self.isactif():return
self.sdnom=nom
try:
# On positionne la macro self en tant que current_step pour que les
new_etp.copy_intern(etp)
self.etapes.append(new_etp)
-
-
-
-
-
-
+ def reset_jdc(self,new_jdc):
+ """
+ Reinitialise l'etape avec un nouveau jdc parent new_jdc
+ """
+ if self.sd and self.reuse == None :
+ self.parent.NommerSdprod(self.sd,self.sd.nom)
+ for concept in self.sdprods:
+ self.parent.NommerSdprod(concept,concept.nom)
+
+ def reparent(self,parent):
+ """
+ Cette methode sert a reinitialiser la parente de l'objet
+ """
+ N_ETAPE.ETAPE.reparent(self,parent)
+ #on ne change pas la parenté des concepts. On s'assure uniquement que le jdc en référence est le bon
+ for concept in self.sdprods:
+ concept.jdc=self.jdc
+ for e in self.etapes:
+ e.reparent(self)
-#@ MODIF N_OBJECT Noyau DATE 14/09/2004 AUTEUR MCOURTOI M.COURTOIS
+#@ MODIF N_OBJECT Noyau DATE 16/05/2006 AUTEUR DURAND C.DURAND
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
Ce module contient la classe OBJECT classe mère de tous les objets
servant à controler les valeurs par rapport aux définitions
"""
+from N_CR import CR
class OBJECT:
"""
self.parent=parent
self.jdc=parent.jdc
+class ErrorObj(OBJECT):
+ """Classe pour objets errones : emule le comportement d'un objet tel mcsimp ou mcfact
+ """
+ def __init__(self,definition,valeur,parent,nom="err"):
+ self.nom=nom
+ self.definition=definition
+ self.valeur=valeur
+ self.parent=parent
+ self.mc_liste=[]
+ if parent :
+ self.jdc = self.parent.jdc
+ #self.niveau = self.parent.niveau
+ #self.etape = self.parent.etape
+ else:
+ # Pas de parent
+ self.jdc = None
+ #self.niveau = None
+ #self.etape = None
+ def isvalid(self,cr='non'):
+ return 0
+
+ def report(self):
+ """ génère le rapport de validation de self """
+ self.cr=CR()
+ self.cr.debut = "Mot-clé invalide : "+self.nom
+ self.cr.fin = "Fin Mot-clé invalide : "+self.nom
+ self.cr.fatal("Type non autorisé pour le mot-clé %s : '%s'" % (self.nom,self.valeur))
+ return self.cr
+
--- /dev/null
+#@ MODIF N_SENSIBILITE Noyau DATE 22/05/2006 AUTEUR MCOURTOI M.COURTOIS
+# -*- coding: iso-8859-1 -*-
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2006 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+
+"""
+ Ce module contient les règles nécessaires aux commandes sensibles
+ pour renseigner l'attribut etape.sd.sensi, gérer le caractère réentrant
+ sur présence de la sensibilité.
+"""
+
+from types import TupleType, ListType
+EnumTypes = (TupleType, ListType)
+
+from N_REGLE import REGLE
+
+# -----------------------------------------------------------------------------
+class CONCEPT_SENSIBLE(REGLE):
+ """Règle permettant de renseigner au niveau du catalogue comment sera
+ rempli le concept (valeur nominale ou dérivée(s) ou les deux...).
+ """
+ def __init__(self, mode, mocle='SENSIBILITE'):
+ """Constructeur.
+ mode : manière dont la commande rempli le concept
+ 'ENSEMBLE' : concept nominal ET dérivées en une seule passe
+ 'SEPARE' : concept nominal OU dérivée (une ou plusieurs)
+ mocle : mot-clé contenant les paramètres sensibles.
+ """
+ REGLE.__init__(self)
+ self.mocle = mocle
+ self._modes = { 'ENSEMBLE' : 0, 'SEPARE' : 1 }
+ self.mode = self._modes.get(mode, self._modes['ENSEMBLE'])
+
+ def gettext(self):
+ """Pour EFICAS
+ """
+ return ''
+
+ def verif(self, args):
+ """Retourne texte + 1 si ok, 0 si nook.
+ On stocke dans sd.sensi l'étape courante, c'est-à-dire celle qui
+ renseigne le concept si cela n'a pas déjà été fait (car verif est
+ appelé à chaque validation).
+ """
+ obj = args["self"]
+ etape = obj.etape
+ id_etape = '%s_%s' % (etape.id, id(etape))
+ if etape.sd == None:
+ return '',1
+ if not hasattr(etape.sd,"sensi"):
+ etape.sd.sensi = {}
+ # si ENSEMBLE, la sd nominale est forcément produite
+ if self.mode == self._modes['ENSEMBLE'] and not etape.sd.sensi.has_key('nominal'):
+ etape.sd.sensi['nominal'] = id_etape
+ # liste des paramètres sensibles
+ valeur = obj[self.mocle]
+ if valeur == None:
+ # pas de sensibilité, la sd nominale est produite
+ if not etape.sd.sensi.has_key('nominal'):
+ etape.sd.sensi['nominal'] = id_etape
+ return '', 1
+ if not type(valeur) in EnumTypes:
+ valeur = [valeur,]
+ for v in valeur:
+ if not etape.sd.sensi.has_key(v.get_name()):
+ etape.sd.sensi[v.get_name()] = id_etape
+ return '', 1
+
+
+# -----------------------------------------------------------------------------
+class REUSE_SENSIBLE(REGLE):
+ """Limite le caractère réentrant de la commande.
+ On autorisera reuse seulement si le concept (au sens fortran) n'a pas déjà
+ été calculé (d'après sd.sensi). Ce sera interdit dans les cas suivants :
+ - sd nominale calculée et SENSIBILITE absent
+ - PS1 dans SENSIBILITE et sd dérivée par rapport à PS1 calculée
+ """
+ def __init__(self, mocle='SENSIBILITE'):
+ """Constructeur.
+ mocle : mot-clé SENSIBILITE.
+ """
+ REGLE.__init__(self)
+ self.mocle = mocle
+
+ def gettext(self):
+ """Pour EFICAS
+ """
+ return ''
+
+ def verif(self,args):
+ """Retourne texte + 1 si ok, 0 si nook = reuse interdit.
+ Comme CONCEPT_SENSIBLE est appelé avant (et à chaque validation),
+ on regarde si sd.sensi[ps] a été renseigné par une étape précédente.
+ """
+ obj = args["self"]
+ etape = obj.etape
+ id_etape = '%s_%s' % (etape.id, id(etape))
+ sd = etape.sd
+ # si la commande n'est pas réentrante, rien à faire
+ if etape.reuse is not None:
+ valeur = obj[self.mocle]
+ if valeur is None:
+ if not hasattr(sd, 'sensi') or sd.sensi.get('nominal', id_etape) != id_etape:
+ # pas de sensibilite et concept nominal déjà calculé : reuse interdit
+ text = "Commande non réentrante en l'absence de sensibilité."
+ return text, 0
+ else:
+ if not type(valeur) in EnumTypes:
+ valeur = [valeur,]
+ for ps in valeur:
+ if hasattr(sd, 'sensi') and sd.sensi.get(ps.nom, id_etape) != id_etape:
+ # concept dérivé par rapport à ps déjà calculé : reuse interdit
+ text = "Commande non réentrante : dérivée par rapport à %s déjà calculée" % ps.nom
+ return text, 0
+ return '', 1
+
+
+# -----------------------------------------------------------------------------
+class DERIVABLE(REGLE):
+ """Déclare que le concept fourni derrière un mot-clé est dérivable.
+ Sa présence ne suffit pas à le valider, il faut encore que son attribut
+ '.sensi' soit cohérent avec le contenu du mot-clé SENSIBILITE (ou l'absence
+ de celui-ci).
+ """
+ def __init__(self, mocle):
+ """Constructeur.
+ mocle : mot-clé dérivable.
+ """
+ REGLE.__init__(self)
+ self.mocle = mocle
+
+ def gettext(self):
+ """Pour EFICAS
+ """
+ return ''
+
+ def verif(self,args):
+ """
+ """
+ obj = args["self"]
+ try:
+ concept = obj[self.mocle]
+ except IndexError:
+ return '', 1
+ if not type(concept) in EnumTypes:
+ concept = [concept,]
+ l_ps = obj["SENSIBILITE"]
+ for co in concept:
+ if not l_ps:
+ # pas de sensibilité
+ if hasattr(co,"sensi") and not co.sensi.get('nominal'):
+ text = "%s ne contient que des valeurs dérivées, utilisez le mot cle SENSIBILITE" %\
+ co.nom
+ return text, 0
+ else:
+ # sensibilité spécifiée
+ if not type(l_ps) in EnumTypes:
+ l_ps = [l_ps,]
+ for ps in l_ps:
+ if not hasattr(co,"sensi") or not co.sensi.get(ps.nom):
+ text = "La dérivée de %s par rapport à %s n'est pas disponible." %\
+ (co.nom, ps.nom)
+ return text, 0
+ return '', 1
+
-#@ MODIF N_VALIDATOR Noyau DATE 20/09/2004 AUTEUR DURAND C.DURAND
+#@ MODIF N_VALIDATOR Noyau DATE 16/05/2006 AUTEUR DURAND C.DURAND
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
Ce module contient toutes les classes necessaires pour
implanter le concept de validateur dans Accas
"""
-import types,exceptions
-
-class ValError ( exceptions.Exception ):
- pass
+import types
+import string
+import traceback
+
+class ValError(Exception):pass
+
+def cls_mro(cls):
+ if hasattr(cls,"__mro__"):return cls.__mro__
+ mro=[cls]
+ for base in cls.__bases__:
+ mro.extend(cls_mro(base))
+ return mro
+
+class Protocol:
+ def __init__(self,name):
+ self.registry = {}
+ self.name = name
+ self.args={}
+
+ def register(self, T, A):
+ self.registry[T] = A
+
+ def adapt(self, obj):
+ # (a) verifier si l'objet peut s'adapter au protocole
+ adapt = getattr(obj, '__adapt__', None)
+ if adapt is not None:
+ # on demande à l'objet obj de réaliser lui-meme l'adaptation
+ return adapt(self)
+
+ # (b) verifier si un adapteur est enregistré (si oui l'utiliser)
+ if self.registry:
+ for T in cls_mro(obj.__class__):
+ if T in self.registry:
+ return self.registry[T](obj,self,**self.args)
+
+ # (c) utiliser l'adapteur par defaut
+ return self.default(obj,**self.args)
+
+ def default(self,obj,**args):
+ raise TypeError("Can't adapt %s to %s" %
+ (obj.__class__.__name__, self.name))
+
+class PProtocol(Protocol):
+ """Verificateur de protocole paramétré (classe de base)"""
+ #Protocole paramétré. Le registre est unique pour toutes les instances. La methode register est une methode de classe
+ registry={}
+ def __init__(self,name,**args):
+ self.name = name
+ self.args=args
+ def register(cls, T, A):
+ cls.registry[T] = A
+ register=classmethod(register)
+
+class ListProtocol(Protocol):
+ """Verificateur de protocole liste : convertit un objet quelconque en liste pour validation ultérieure"""
+ def default(self,obj):
+ if type(obj) == types.TupleType :
+ if obj[0] in ('RI','MP'):
+ #il s'agit d'un complexe ancienne mode. La cardinalite vaut 1
+ return (obj,)
+ else:
+ return obj
+ elif type(obj) == types.ListType :
+ return obj
+ elif obj == None :
+ # pas de valeur affecte. La cardinalite vaut 0
+ return obj
+ elif type(obj) == types.StringType :
+ #il s'agit d'une chaine. La cardinalite vaut 1
+ return (obj,)
+ else:
+ try:
+ # si l'objet supporte len, on a la cardinalite
+ length=len(obj)
+ return obj
+ except:
+ # sinon elle vaut 1
+ return (obj,)
+
+listProto=ListProtocol("list")
+
+class TypeProtocol(PProtocol):
+ """Verificateur de type parmi une liste de types possibles"""
+ #pas de registre par instance. Registre unique pour toutes les instances de TypeProtocol
+ registry={}
+ def __init__(self,name,typ=None):
+ PProtocol.__init__(self,name,typ=typ)
+ self.typ=typ
+
+ def default(self,obj,typ):
+ for type_permis in typ:
+ if type_permis == 'R':
+ if type(obj) in (types.IntType,types.FloatType,types.LongType):return obj
+ elif type_permis == 'I':
+ if type(obj) in (types.IntType,types.LongType):return obj
+ elif type_permis == 'C':
+ if self.is_complexe(obj):return obj
+ elif type_permis == 'TXM':
+ if type(obj)==types.StringType:return obj
+ elif type_permis == 'shell':
+ if type(obj)==types.StringType:return obj
+ elif type(type_permis) == types.ClassType:
+ if self.is_object_from(obj,type_permis):return obj
+ elif type(type_permis) == types.InstanceType:
+ try:
+ if type_permis.__convert__(obj) : return obj
+ except:
+ pass
+ else:
+ print "Type non encore géré %s" %`type_permis`
+
+ raise ValError("%s n'est pas d'un type autorisé: %s" % (repr(obj),typ))
+
+ def is_complexe(self,valeur):
+ """ Retourne 1 si valeur est un complexe, 0 sinon """
+ if type(valeur) in (types.ComplexType,types.IntType,types.FloatType,types.LongType):
+ # Pour permettre l'utilisation de complexes Python
+ return 1
+ elif type(valeur) != types.TupleType :
+ # On n'autorise pas les listes pour les complexes
+ return 0
+ elif len(valeur) != 3:
+ return 0
+ else:
+ # Un complexe doit etre un tuple de longueur 3 avec 'RI' ou 'MP' comme premiere
+ # valeur suivie de 2 reels.
+ if string.strip(valeur[0]) in ('RI','MP'):
+ try:
+ v1=reelProto.adapt(valeur[1]),reelProto.adapt(valeur[2])
+ return 1
+ except:
+ return 0
+ else:
+ return 0
-class Valid:
+ def is_object_from(self,objet,classe):
+ """
+ Retourne 1 si objet est une instance de la classe classe, 0 sinon
+ """
+ convert = getattr(classe, '__convert__', None)
+ if convert is not None:
+ # classe verifie les valeurs
+ try:
+ v= convert(objet)
+ return v is not None
+ except:
+ return 0
+ # On accepte les instances de la classe et des classes derivees
+ return type(objet) == types.InstanceType and isinstance(objet,classe)
+
+reelProto=TypeProtocol("reel",typ=('R',))
+
+class CardProtocol(PProtocol):
+ """Verificateur de cardinalité """
+ #pas de registre par instance. Registre unique pour toutes les instances
+ registry={}
+ def __init__(self,name,min=1,max=1):
+ PProtocol.__init__(self,name,min=min,max=max)
+
+ def default(self,obj,min,max):
+ length=len(obj)
+ if length < min or length >max:
+ raise ValError("Nombre d'arguments de %s incorrect (min = %s, max = %s)" % (repr(obj),min,max) )
+ return obj
+
+class IntoProtocol(PProtocol):
+ """Verificateur de choix possibles : liste discrète ou intervalle"""
+ #pas de registre par instance. Registre unique pour toutes les instances
+ registry={}
+ def __init__(self,name,into=None,val_min='**',val_max='**'):
+ PProtocol.__init__(self,name,into=into,val_min=val_min,val_max=val_max)
+ self.val_min=val_min
+ self.val_max=val_max
+
+ def default(self,obj,into,val_min,val_max):
+ if into:
+ if obj not in into:
+ raise ValError("La valeur : %s ne fait pas partie des choix possibles %s" % (repr(obj),into) )
+ else:
+ #on est dans le cas d'un ensemble continu de valeurs possibles (intervalle)
+ if type(obj) in (types.IntType,types.FloatType,types.LongType) :
+ if val_min == '**': val_min = obj -1
+ if val_max == '**': val_max = obj +1
+ if obj < val_min or obj > val_max :
+ raise ValError("La valeur : %s est en dehors du domaine de validité [ %s , %s ]" % (repr(obj),self.val_min,self.val_max) )
+ return obj
+
+class MinStr:
+ #exemple de classe pour verificateur de type
+ #on utilise des instances de classe comme type (typ=MinStr(3,6), par exemple)
+ def __init__(self,min,max):
+ self.min=min
+ self.max=max
+
+ def __convert__(self,valeur):
+ if type(valeur) == types.StringType and self.min <= len(valeur) <= self.max:return valeur
+ raise ValError("%s n'est pas une chaine de longueur comprise entre %s et %s" % (valeur,self.min,self.max))
+
+ def __repr__(self):
+ return "TXM de longueur entre %s et %s" %(self.min,self.max)
+
+class Valid(PProtocol):
"""
Cette classe est la classe mere des validateurs Accas
Elle doit etre derivee
@ivar cata_info: raison de la validite ou de l'invalidite du validateur meme
@type cata_info: C{string}
"""
- def __init__(self,*tup,**args):
- """
- Cette methode sert a initialiser les attributs du validateur
- """
- self.cata_info=""
- raise "Must be implemented"
+ registry={}
+ def __init__(self,**args):
+ PProtocol.__init__(self,"valid",**args)
def info(self):
"""
"""
return into_courant
- def is_param(self,valeur):
- """
- Cette méthode indique si valeur est un objet de type PARAMETRE
- dont on cherchera à evaluer la valeur (valeur.valeur)
- """
- return type(valeur) == types.InstanceType and valeur.__class__.__name__ in ('PARAMETRE',)
-
- def is_unknown(self,valeur):
- """
- Cette méthode indique si valeur est un objet de type inconnu
- c'est à dire pas de type PARAMETRE
- """
- return type(valeur) == types.InstanceType and valeur.__class__.__name__ not in (
- 'entier','reel','chaine', 'complexe','liste','PARAMETRE_EVAL','PARAMETRE')
-
class ListVal(Valid):
"""
Cette classe sert de classe mère pour tous les validateurs qui acceptent
liste_choix.append(e)
return liste_choix
+ def convert(self,valeur):
+ """
+ Méthode convert pour les validateurs de listes. Cette méthode
+ fait appel à la méthode convert_item sur chaque élément de la
+ liste.
+ """
+ if type(valeur) in (types.ListType,types.TupleType):
+ for val in valeur:
+ self.convert_item(val)
+ return valeur
+ else:
+ return self.convert_item(valeur)
+
def verif(self,valeur):
"""
Méthode verif pour les validateurs de listes. Cette méthode
liste. Si valeur est un paramètre, on utilise sa valeur effective
valeur.valeur.
"""
- if self.is_param(valeur):
- valeur=valeur.valeur
if type(valeur) in (types.ListType,types.TupleType):
for val in valeur:
if not self.verif_item(val):
else:
return self.verif_item(valeur)
-class RangeVal(ListVal):
- """
- Exemple de classe validateur : verification qu'une valeur
- est dans un intervalle.
- Pour une liste on verifie que tous les elements sont
- dans l'intervalle
- Susceptible de remplacer les attributs "vale_min" "vale_max"
- dans les catalogues
- """
- def __init__(self,low,high):
- self.low=low
- self.high=high
- self.cata_info="%s doit etre inferieur a %s" %(low,high)
-
- def info(self):
- return "valeur dans l'intervalle %s , %s" %(self.low,self.high)
-
- def verif_item(self,valeur):
- return valeur > self.low and valeur < self.high
-
- def info_erreur_item(self) :
- return "La valeur doit etre comprise entre %s et %s" % (self.low,
- self.high)
-
- def verif_cata(self):
- if self.low > self.high : return 0
- return 1
-
-class CardVal(Valid):
+class Compulsory(ListVal):
"""
- Exemple de classe validateur : verification qu'une liste est
- d'une longueur superieur a un minimum (min) et inferieure
- a un maximum (max).
- Susceptible de remplacer les attributs "min" "max" dans les
- catalogues
+ Validateur operationnel
+ Verification de la présence obligatoire d'un élément dans une liste
"""
- def __init__(self,min='**',max='**'):
- self.min=min
- self.max=max
- self.cata_info="%s doit etre inferieur a %s" % (min,max)
+ registry={}
+ def __init__(self,elem=()):
+ if type(elem) not in (types.ListType,types.TupleType): elem=(elem,)
+ Valid.__init__(self,elem=elem)
+ self.elem=elem
+ self.cata_info=""
def info(self):
- return "longueur de liste comprise entre %s et %s" % (self.min,self.max)
-
- def info_erreur_liste(self):
- return "Le cardinal de la liste doit etre compris entre %s et %s" % (self.min,self.max)
-
- def is_list(self):
- return self.max == '**' or self.max > 1
+ return "valeur %s obligatoire" % `self.elem`
- def get_into(self,liste_courante=None,into_courant=None):
- if into_courant is None:
- return None
- elif liste_courante is None:
- return into_courant
- elif self.max == '**':
- return into_courant
- elif len(liste_courante) < self.max:
- return into_courant
- else:
- return []
+ def default(self,valeur,elem):
+ return valeur
def verif_item(self,valeur):
return 1
- def verif(self,valeur):
- if type(valeur) in (types.ListType,types.TupleType):
- if self.max != '**' and len(valeur) > self.max:return 0
- if self.min != '**' and len(valeur) < self.min:return 0
- return 1
- else:
- if self.max != '**' and 1 > self.max:return 0
- if self.min != '**' and 1 < self.min:return 0
- return 1
+ def convert(self,valeur):
+ elem=list(self.elem)
+ for val in valeur:
+ v=self.adapt(val)
+ if v in elem:elem.remove(v)
+ if elem:
+ raise ValError("%s ne contient pas les elements obligatoires : %s " %(valeur,elem))
+ return valeur
- def verif_cata(self):
- if self.min != '**' and self.max != '**' and self.min > self.max : return 0
+ def has_into(self):
return 1
- def valide_liste_partielle(self,liste_courante=None):
- validite=1
- if liste_courante != None :
- if len(liste_courante) > self.max :
- validite=0
- return validite
-
-class PairVal(ListVal):
- """
- Exemple de classe validateur : verification qu'une valeur
- est paire.
- Pour une liste on verifie que tous les elements sont
- pairs
- """
- def __init__(self):
- self.cata_info=""
-
- def info(self):
- return "valeur paire"
-
- def info_erreur_item(self):
- return "La valeur saisie doit etre paire"
-
- def verif_item(self,valeur):
- if type(valeur) == types.InstanceType:
- if self.is_param(valeur):
- valeur=valeur.valeur
- else:
- return 0
- return valeur % 2 == 0
-
def verif(self,valeur):
- if type(valeur) in (types.ListType,types.TupleType):
- for val in valeur:
- if val % 2 != 0:return 0
- return 1
+ if type(valeur) not in (types.ListType,types.TupleType):
+ liste=list(valeur)
else:
- if valeur % 2 != 0:return 0
- return 1
-
-class EnumVal(ListVal):
- """
- Exemple de classe validateur : verification qu'une valeur
- est prise dans une liste de valeurs.
- Susceptible de remplacer l attribut "into" dans les catalogues
- """
- def __init__(self,into=()):
- if type(into) not in (types.ListType,types.TupleType): into=(into,)
- self.into=into
- self.cata_info=""
-
- def info(self):
- return "valeur dans %s" % `self.into`
-
- def verif_item(self,valeur):
- if valeur not in self.into:return 0
- return 1
-
- def has_into(self):
+ liste=valeur
+ for val in self.elem :
+ if val not in liste : return 0
return 1
- def get_into(self,liste_courante=None,into_courant=None):
- if into_courant is None:
- liste_choix= list(self.into)
- else:
- liste_choix=[]
- for e in into_courant:
- if e in self.into:
- liste_choix.append(e)
- return liste_choix
-
def info_erreur_item(self):
return "La valeur n'est pas dans la liste des choix possibles"
class NoRepeat(ListVal):
"""
+ Validateur operationnel
Verification d'absence de doublons dans la liste.
"""
def __init__(self):
+ Valid.__init__(self)
self.cata_info=""
def info(self):
def info_erreur_liste(self):
return "Les doublons ne sont pas permis"
+ def default(self,valeur):
+ if valeur in self.liste : raise ValError("%s est un doublon" % valeur)
+ return valeur
+
+ def convert(self,valeur):
+ self.liste=[]
+ for val in valeur:
+ v=self.adapt(val)
+ self.liste.append(v)
+ return valeur
+
def verif_item(self,valeur):
return 1
class LongStr(ListVal):
"""
+ Validateur operationnel
Verification de la longueur d une chaine
"""
def __init__(self,low,high):
+ ListVal.__init__(self,low=low,high=high)
self.low=low
self.high=high
self.cata_info=""
def info_erreur_item(self):
return "Longueur de la chaine incorrecte"
+ def convert(self,valeur):
+ for val in valeur:
+ v=self.adapt(val)
+ return valeur
+
def verif_item(self,valeur):
- low=self.low
- high=self.high
+ try:
+ self.adapt(valeur)
+ return 1
+ except:
+ return 0
+
+ def default(self,valeur,low,high):
+ if type(valeur) != types.StringType :
+ raise ValError("%s n'est pas une string" % repr(valeur))
if valeur[0]=="'" and valeur[-1]=="'" :
low=low+2
high=high+2
- if len(valeur) < low :return 0
- if len(valeur) > high:return 0
- return 1
+ if len(valeur) < low or len(valeur) > high :
+ raise ValError("%s n'est pas de la bonne longueur" % repr(valeur))
+ return valeur
class OrdList(ListVal):
"""
+ Validateur operationnel
Verification qu'une liste est croissante ou decroissante
"""
def __init__(self,ord):
+ ListVal.__init__(self,ord=ord)
self.ord=ord
self.cata_info=""
def info_erreur_liste(self) :
return "La liste doit etre en ordre "+self.ord
- def verif(self,valeur):
- if type(valeur) in (types.ListType,types.TupleType):
- if self.ord=='croissant':
- var=valeur[0]
- for val in valeur[1:]:
- if val<var:return 0
- var=val
- return 1
- elif self.ord=='decroissant':
- var=valeur[0]
- for val in valeur[1:]:
- if val>var:return 0
- var=val
- return 1
- else:
- return 1
+ def convert(self,valeur):
+ self.val=None
+ self.liste=valeur
+ for v in valeur:
+ self.adapt(v)
+ return valeur
+
+ def default(self,valeur,ord):
+ if self.ord=='croissant':
+ if self.val is not None and valeur<self.val:
+ raise ValError("%s n'est pas par valeurs croissantes" % repr(self.liste))
+ elif self.ord=='decroissant':
+ if self.val is not None and valeur > self.val:
+ raise ValError("%s n'est pas par valeurs decroissantes" % repr(self.liste))
+ self.val=valeur
+ return valeur
def verif_item(self,valeur):
return 1
liste_choix.append(e)
return liste_choix
-CoercableFuncs = { types.IntType: int,
- types.LongType: long,
- types.FloatType: float,
- types.ComplexType: complex,
- types.UnicodeType: unicode }
-
-class TypeVal(ListVal):
+class OrVal(Valid):
"""
- Cette classe est un validateur qui controle qu'une valeur
- est bien du type Python attendu.
- Pour une liste on verifie que tous les elements sont du bon type.
+ Validateur operationnel
+ Cette classe est un validateur qui controle une liste de validateurs
+ Elle verifie qu'au moins un des validateurs de la liste valide la valeur
"""
- def __init__(self, aType):
- if type(aType) != types.TypeType:
- aType=type(aType)
- self.aType=aType
- try:
- self.coerce=CoercableFuncs[ aType ]
- except:
- self.coerce = self.identity
+ def __init__(self,validators=()):
+ if type(validators) not in (types.ListType,types.TupleType):
+ validators=(validators,)
+ self.validators=[]
+ for validator in validators:
+ if type(validator) == types.FunctionType:
+ self.validators.append(FunctionVal(validator))
+ else:
+ self.validators.append(validator)
+ self.cata_info=""
def info(self):
- return "valeur de %s" % self.aType
-
- def identity ( self, value ):
- if type( value ) == self.aType:
- return value
- raise ValError
+ return "\n ou ".join([v.info() for v in self.validators])
- def verif_item(self,valeur):
- try:
- self.coerce(valeur)
- except:
- return 0
- return 1
+ def convert(self,valeur):
+ for validator in self.validators:
+ try:
+ return validator.convert(valeur)
+ except:
+ pass
+ raise ValError("%s n'est pas du bon type" % repr(valeur))
-class InstanceVal(ListVal):
- """
- Cette classe est un validateur qui controle qu'une valeur est
- bien une instance (au sens Python) d'une classe
- Pour une liste on verifie chaque element de la liste
- """
- def __init__(self,aClass):
- if type(aClass) == types.InstanceType:
- aClass=aClass.__class__
- self.aClass=aClass
+ def info_erreur_item(self):
+ l=[]
+ for v in self.validators:
+ err=v.info_erreur_item()
+ if err != " " : l.append(err)
+ chaine=" \n ou ".join(l)
+ return chaine
- def info(self):
- return "valeur d'instance de %s" % self.aClass.__name__
+ def info_erreur_liste(self):
+ l=[]
+ for v in self.validators:
+ err=v.info_erreur_liste()
+ if err != " " : l.append(err)
+ chaine=" \n ou ".join(l)
+ return chaine
- def verif_item(self,valeur):
- if not isinstance(valeur,self.aClass): return 0
- return 1
-
-def ImpairVal(valeur):
- """
- Cette fonction est un validateur. Elle verifie que la valeur passee
- est bien un nombre impair.
- """
- if type(valeur) in (types.ListType,types.TupleType):
- for val in valeur:
- if val % 2 != 1:return 0
- return 1
- else:
- if valeur % 2 != 1:return 0
- return 1
-
-ImpairVal.info="valeur impaire"
-
-class F1Val(Valid):
- """
- Cette classe est un validateur de dictionnaire (mot cle facteur ?). Elle verifie
- que la somme des cles A et B vaut une valeur donnee
- en parametre du validateur
- """
- def __init__(self,somme=10):
- self.somme=somme
- self.cata_info=""
-
- def info(self):
- return "valeur %s pour la somme des cles A et B " % self.somme
-
- def verif(self,valeur):
- if type(valeur) in (types.ListType,types.TupleType):
- for val in valeur:
- if not val.has_key("A"):return 0
- if not val.has_key("B"):return 0
- if val["A"]+val["B"] != self.somme:return 0
- return 1
- else:
- if not valeur.has_key("A"):return 0
- if not valeur.has_key("B"):return 0
- if valeur["A"]+valeur["B"] != self.somme:return 0
- return 1
-
-class FunctionVal(Valid):
- """
- Cette classe est un validateur qui est initialise avec une fonction
- """
- def __init__(self,function):
- self.function=function
-
- def info(self):
- return self.function.info
-
- def verif(self,valeur):
- return self.function(valeur)
-
-class OrVal(Valid):
- """
- Cette classe est un validateur qui controle une liste de validateurs
- Elle verifie qu'au moins un des validateurs de la liste valide la valeur
- """
- def __init__(self,validators=()):
- if type(validators) not in (types.ListType,types.TupleType):
- validators=(validators,)
- self.validators=[]
- for validator in validators:
- if type(validator) == types.FunctionType:
- self.validators.append(FunctionVal(validator))
- else:
- self.validators.append(validator)
- self.cata_info=""
-
- def info(self):
- return "\n ou ".join([v.info() for v in self.validators])
-
- def info_erreur_item(self):
- l=[]
- for v in self.validators:
- err=v.info_erreur_item()
- if err != " " : l.append(err)
- chaine=" \n ou ".join(l)
- return chaine
-
- def info_erreur_liste(self):
- l=[]
- for v in self.validators:
- err=v.info_erreur_liste()
- if err != " " : l.append(err)
- chaine=" \n ou ".join(l)
- return chaine
-
- def is_list(self):
- """
- Si plusieurs validateurs sont reliés par un OU
- il suffit qu'un seul des validateurs attende une liste
- pour qu'on considère que leur union attend une liste.
- """
- for validator in self.validators:
- v=validator.is_list()
- if v :
- return 1
- return 0
+ def is_list(self):
+ """
+ Si plusieurs validateurs sont reliés par un OU
+ il suffit qu'un seul des validateurs attende une liste
+ pour qu'on considère que leur union attend une liste.
+ """
+ for validator in self.validators:
+ v=validator.is_list()
+ if v :
+ return 1
+ return 0
def verif(self,valeur):
for validator in self.validators:
class AndVal(Valid):
"""
+ Validateur operationnel
Cette classe est un validateur qui controle une liste de validateurs
Elle verifie que tous les validateurs de la liste valident la valeur
"""
def __init__(self,validators=()):
- if type(validators) not in (types.ListType,types.TupleType):
+ if type(validators) not in (types.ListType,types.TupleType):
validators=(validators,)
self.validators=[]
for validator in validators:
def info(self):
return "\n et ".join([v.info() for v in self.validators])
+ def convert(self,valeur):
+ for validator in self.validators:
+ valeur=validator.convert(valeur)
+ return valeur
+
def info_erreur_item(self):
chaine=""
a=1
return AndVal(do_liste(validator))
else:
return validator
+
+# Ci-dessous : exemples de validateur (peu testés)
+
+class RangeVal(ListVal):
+ """
+ Exemple de classe validateur : verification qu'une valeur
+ est dans un intervalle.
+ Pour une liste on verifie que tous les elements sont
+ dans l'intervalle
+ Susceptible de remplacer les attributs "vale_min" "vale_max"
+ dans les catalogues
+ """
+ def __init__(self,low,high):
+ self.low=low
+ self.high=high
+ self.cata_info="%s doit etre inferieur a %s" %(low,high)
+
+ def info(self):
+ return "valeur dans l'intervalle %s , %s" %(self.low,self.high)
+
+ def convert_item(self,valeur):
+ if valeur > self.low and valeur < self.high:return valeur
+ raise ValError("%s devrait etre comprise entre %s et %s" %(valeur,self.low,self.high))
+
+ def verif_item(self,valeur):
+ return valeur > self.low and valeur < self.high
+
+ def info_erreur_item(self) :
+ return "La valeur doit etre comprise entre %s et %s" % (self.low,
+ self.high)
+
+ def verif_cata(self):
+ if self.low > self.high : return 0
+ return 1
+
+class CardVal(Valid):
+ """
+ Exemple de classe validateur : verification qu'une liste est
+ d'une longueur superieur a un minimum (min) et inferieure
+ a un maximum (max).
+ Susceptible de remplacer les attributs "min" "max" dans les
+ catalogues
+ """
+ def __init__(self,min='**',max='**'):
+ self.min=min
+ self.max=max
+ self.cata_info="%s doit etre inferieur a %s" % (min,max)
+
+ def info(self):
+ return "longueur de liste comprise entre %s et %s" % (self.min,self.max)
+
+ def info_erreur_liste(self):
+ return "Le cardinal de la liste doit etre compris entre %s et %s" % (self.min,self.max)
+
+ def is_list(self):
+ return self.max == '**' or self.max > 1
+
+ def get_into(self,liste_courante=None,into_courant=None):
+ if into_courant is None:
+ return None
+ elif liste_courante is None:
+ return into_courant
+ elif self.max == '**':
+ return into_courant
+ elif len(liste_courante) < self.max:
+ return into_courant
+ else:
+ return []
+
+ def convert(self,valeur):
+ if type(valeur) in (types.ListType,types.TupleType):
+ l=len(valeur)
+ elif valeur is None:
+ l=0
+ else:
+ l=1
+ if self.max != '**' and l > self.max:raise ValError("%s devrait etre de longueur inferieure a %s" %(valeur,self.max))
+ if self.min != '**' and l < self.min:raise ValError("%s devrait etre de longueur superieure a %s" %(valeur,self.min))
+ return valeur
+
+ def verif_item(self,valeur):
+ return 1
+
+ def verif(self,valeur):
+ if type(valeur) in (types.ListType,types.TupleType):
+ if self.max != '**' and len(valeur) > self.max:return 0
+ if self.min != '**' and len(valeur) < self.min:return 0
+ return 1
+ else:
+ if self.max != '**' and 1 > self.max:return 0
+ if self.min != '**' and 1 < self.min:return 0
+ return 1
+
+ def verif_cata(self):
+ if self.min != '**' and self.max != '**' and self.min > self.max : return 0
+ return 1
+
+ def valide_liste_partielle(self,liste_courante=None):
+ validite=1
+ if liste_courante != None :
+ if len(liste_courante) > self.max :
+ validite=0
+ return validite
+
+class PairVal(ListVal):
+ """
+ Exemple de classe validateur : verification qu'une valeur
+ est paire.
+ Pour une liste on verifie que tous les elements sont
+ pairs
+ """
+ def __init__(self):
+ ListVal.__init__(self)
+ self.cata_info=""
+
+ def info(self):
+ return "valeur paire"
+
+ def info_erreur_item(self):
+ return "La valeur saisie doit etre paire"
+
+ def convert(self,valeur):
+ for val in valeur:
+ v=self.adapt(val)
+ if v % 2 != 0:raise ValError("%s contient des valeurs non paires" % repr(valeur))
+ return valeur
+
+ def default(self,valeur):
+ return valeur
+
+ def verif_item(self,valeur):
+ if type(valeur) == types.InstanceType:
+ return 0
+ return valeur % 2 == 0
+
+ def verif(self,valeur):
+ if type(valeur) in (types.ListType,types.TupleType):
+ for val in valeur:
+ if val % 2 != 0:return 0
+ return 1
+ else:
+ if valeur % 2 != 0:return 0
+ return 1
+
+class EnumVal(ListVal):
+ """
+ Exemple de classe validateur : verification qu'une valeur
+ est prise dans une liste de valeurs.
+ Susceptible de remplacer l attribut "into" dans les catalogues
+ """
+ def __init__(self,into=()):
+ if type(into) not in (types.ListType,types.TupleType): into=(into,)
+ self.into=into
+ self.cata_info=""
+
+ def info(self):
+ return "valeur dans %s" % `self.into`
+
+ def convert_item(self,valeur):
+ if valeur in self.into:return valeur
+ raise ValError("%s contient des valeurs hors des choix possibles: %s " %(valeur,self.into))
+
+ def verif_item(self,valeur):
+ if valeur not in self.into:return 0
+ return 1
+
+ def has_into(self):
+ return 1
+
+ def get_into(self,liste_courante=None,into_courant=None):
+ if into_courant is None:
+ liste_choix= list(self.into)
+ else:
+ liste_choix=[]
+ for e in into_courant:
+ if e in self.into:
+ liste_choix.append(e)
+ return liste_choix
+
+ def info_erreur_item(self):
+ return "La valeur n'est pas dans la liste des choix possibles"
+
+def ImpairVal(valeur):
+ """
+ Exemple de validateur
+ Cette fonction est un validateur. Elle verifie que la valeur passee
+ est bien un nombre impair.
+ """
+ if type(valeur) in (types.ListType,types.TupleType):
+ for val in valeur:
+ if val % 2 != 1:return 0
+ return 1
+ else:
+ if valeur % 2 != 1:return 0
+ return 1
+
+ImpairVal.info="valeur impaire"
+
+class F1Val(Valid):
+ """
+ Exemple de validateur
+ Cette classe est un validateur de dictionnaire (mot cle facteur ?). Elle verifie
+ que la somme des cles A et B vaut une valeur donnee
+ en parametre du validateur
+ """
+ def __init__(self,somme=10):
+ self.somme=somme
+ self.cata_info=""
+
+ def info(self):
+ return "valeur %s pour la somme des cles A et B " % self.somme
+
+ def verif(self,valeur):
+ if type(valeur) in (types.ListType,types.TupleType):
+ for val in valeur:
+ if not val.has_key("A"):return 0
+ if not val.has_key("B"):return 0
+ if val["A"]+val["B"] != self.somme:return 0
+ return 1
+ else:
+ if not valeur.has_key("A"):return 0
+ if not valeur.has_key("B"):return 0
+ if valeur["A"]+valeur["B"] != self.somme:return 0
+ return 1
+
+class FunctionVal(Valid):
+ """
+ Exemple de validateur
+ Cette classe est un validateur qui est initialise avec une fonction
+ """
+ def __init__(self,function):
+ self.function=function
+
+ def info(self):
+ return self.function.info
+
+ def verif(self,valeur):
+ return self.function(valeur)
+
+CoercableFuncs = { types.IntType: int,
+ types.LongType: long,
+ types.FloatType: float,
+ types.ComplexType: complex,
+ types.UnicodeType: unicode }
+
+class TypeVal(ListVal):
+ """
+ Exemple de validateur
+ Cette classe est un validateur qui controle qu'une valeur
+ est bien du type Python attendu.
+ Pour une liste on verifie que tous les elements sont du bon type.
+ """
+ def __init__(self, aType):
+ if type(aType) != types.TypeType:
+ aType=type(aType)
+ self.aType=aType
+ try:
+ self.coerce=CoercableFuncs[ aType ]
+ except:
+ self.coerce = self.identity
+
+ def info(self):
+ return "valeur de %s" % self.aType
+
+ def identity ( self, value ):
+ if type( value ) == self.aType:
+ return value
+ raise ValError
+
+ def convert_item(self,valeur):
+ return self.coerce(valeur)
+
+ def verif_item(self,valeur):
+ try:
+ self.coerce(valeur)
+ except:
+ return 0
+ return 1
+
+class InstanceVal(ListVal):
+ """
+ Exemple de validateur
+ Cette classe est un validateur qui controle qu'une valeur est
+ bien une instance (au sens Python) d'une classe
+ Pour une liste on verifie chaque element de la liste
+ """
+ def __init__(self,aClass):
+ if type(aClass) == types.InstanceType:
+ aClass=aClass.__class__
+ self.aClass=aClass
+
+ def info(self):
+ return "valeur d'instance de %s" % self.aClass.__name__
+
+ def verif_item(self,valeur):
+ if not isinstance(valeur,self.aClass): return 0
+ return 1
+
--- /dev/null
+"""
+A TestRunner for use with the Python unit testing framework. It
+generates a HTML report to show the result at a glance.
+
+The simplest way to use this is to invoke its main method. E.g.
+
+ import unittest
+ import HTMLTestRunner
+
+ ... define your tests ...
+
+ if __name__ == '__main__':
+ HTMLTestRunner.main()
+
+
+To customize the report, instantiates a HTMLTestRunner object and set
+the parameters. HTMLTestRunner is a counterpart to unittest's
+TextTestRunner. E.g.
+
+ # output to a file
+ fp = file('my_report.html', 'wb')
+ runner = HTMLTestRunner.HTMLTestRunner(
+ stream=fp,
+ title='My unit test',
+ report_attrs=[('Version','1.2.3')],
+ description='This demonstrates the report output by HTMLTestRunner.'
+ )
+
+ # Use an external stylesheet.
+ # See the Template_mixin class for more customizable options
+ runner.STYLESHEET_TMPL = '<link rel="stylesheet" href="my_stylesheet.css" type="text/css">'
+
+ # run the test
+ runner.run(my_test_suite)
+
+
+------------------------------------------------------------------------
+Copyright (c) 2004-2006, Wai Yip Tung
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+* Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+* Neither the name Wai Yip Tung nor the names of its contributors may be
+ used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
+OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+"""
+
+# URL: http://tungwaiyip.info/software/HTMLTestRunner.html
+
+__author__ = "Wai Yip Tung"
+__version__ = "0.8.0"
+
+
+"""
+Changes in 0.8.0
+* Define Template_mixin class for customization.
+* Workaround a IE 6 bug that it does not treat <script> block as CDATA.
+
+Changes in 0.7.1
+* Back port to Python 2.3. Thank you Frank Horowitz.
+* Fix missing scroll bars in detail log. Thank you Podi.
+"""
+
+# TODO: color stderr
+# TODO: simplify javascript using ,ore than 1 class in the class attribute?
+
+import datetime
+import StringIO
+import sys
+import time
+import unittest
+from xml.sax import saxutils
+
+
+# ------------------------------------------------------------------------
+# The redirectors below is used to capture output during testing. Output
+# sent to sys.stdout and sys.stderr are automatically captured. However
+# in some cases sys.stdout is already cached before HTMLTestRunner is
+# invoked (e.g. calling logging.basicConfig). In order to capture those
+# output, use the redirectors for the cached stream.
+#
+# e.g.
+# >>> logging.basicConfig(stream=HTMLTestRunner.stdout_redirector)
+# >>>
+
+class OutputRedirector(object):
+ """ Wrapper to redirect stdout or stderr """
+ def __init__(self, fp):
+ self.fp = fp
+
+ def write(self, s):
+ self.fp.write(s)
+
+ def writelines(self, lines):
+ self.fp.writelines(lines)
+
+ def flush(self):
+ self.fp.flush()
+
+stdout_redirector = OutputRedirector(sys.stdout)
+stderr_redirector = OutputRedirector(sys.stderr)
+
+
+
+# ----------------------------------------------------------------------
+# Template
+
+class Template_mixin(object):
+ """
+ Define a HTML template for report customerization and generation.
+
+ Overall structure of an HTML report
+
+ HTML
+ +------------------------+
+ |<html> |
+ | <head> |
+ | |
+ | STYLESHEET |
+ | +----------------+ |
+ | | | |
+ | +----------------+ |
+ | |
+ | </head> |
+ | |
+ | <body> |
+ | |
+ | HEADING |
+ | +----------------+ |
+ | | | |
+ | +----------------+ |
+ | |
+ | REPORT |
+ | +----------------+ |
+ | | | |
+ | +----------------+ |
+ | |
+ | ENDING |
+ | +----------------+ |
+ | | | |
+ | +----------------+ |
+ | |
+ | </body> |
+ |</html> |
+ +------------------------+
+ """
+
+ STATUS = {
+ 0: 'pass',
+ 1: 'fail',
+ 2: 'error',
+ }
+
+ DEFAULT_TITLE = 'Unit Test Report'
+ DEFAULT_DESCRIPTION = ''
+
+ # ------------------------------------------------------------------------
+ # HTML Template
+
+ HTML_TMPL = r"""<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+ <title>%(title)s</title>
+ <meta name="generator" content="%(generator)s">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ %(stylesheet)s
+</head>
+<body>
+<script>
+output_list = Array();
+
+/* level - 0:Summary; 1:Failed; 2:All */
+function showCase(level) {
+ trs = document.getElementsByTagName("tr");
+ for (var i = 0; i < trs.length; i++) {
+ tr = trs[i];
+ id = tr.id;
+ if (id.substr(0,2) == 'ft') {
+ if (level < 1) {
+ tr.className = 'hiddenRow';
+ }
+ else {
+ tr.className = '';
+ }
+ }
+ if (id.substr(0,2) == 'pt') {
+ if (level > 1) {
+ tr.className = '';
+ }
+ else {
+ tr.className = 'hiddenRow';
+ }
+ }
+ }
+}
+
+function showClassDetail(cid, count) {
+ var id_list = Array(count);
+ var toHide = 1;
+ for (var i = 0; i < count; i++) {
+ tid0 = 't' + cid.substr(1) + '.' + (i+1);
+ tid = 'f' + tid0;
+ tr = document.getElementById(tid);
+ if (!tr) {
+ tid = 'p' + tid0;
+ tr = document.getElementById(tid);
+ }
+ id_list[i] = tid;
+ if (tr.className) {
+ toHide = 0;
+ }
+ }
+ for (var i = 0; i < count; i++) {
+ tid = id_list[i];
+ if (toHide) {
+ document.getElementById(tid).className = 'hiddenRow';
+ }
+ else {
+ document.getElementById(tid).className = '';
+ }
+ }
+}
+
+function html_escape(s) {
+ s = s.replace(/&/g,'&');
+ s = s.replace(/</g,'<');
+ s = s.replace(/>/g,'>');
+ return s;
+}
+
+function showOutput(id, name) {
+ var w = window.open("", //url
+ name,
+ "resizable,scrollbars,status,width=800,height=450");
+ d = w.document;
+ d.write("<pre>");
+ d.write(html_escape(output_list[id]));
+ d.write("\n");
+ d.write("<a href='javascript:window.close()'>close</a>\n");
+ d.write("</pre>\n");
+ d.close();
+}
+
+</script>
+
+%(heading)s
+%(report)s
+%(ending)s
+
+</body>
+</html>
+"""
+ # variables: (title, generator, stylesheet, heading, report, ending)
+
+
+ # ------------------------------------------------------------------------
+ # Stylesheet
+ #
+ # alternatively use a <link> for external style sheet, e.g.
+ # <link rel="stylesheet" href="$url" type="text/css">
+
+ STYLESHEET_TMPL = """
+<style>
+body { font-family: verdana, arial, helvetica, sans-serif; font-size: 80%; }
+table { font-size: 100%; }
+pre { }
+
+/* -- heading ---------------------------------------------------------------------- */
+h1 {
+}
+.heading {
+ margin-top: 0ex;
+ margin-bottom: 1ex;
+}
+
+.heading .attribute {
+ margin-top: 1ex;
+ margin-bottom: 0;
+}
+
+.heading .description {
+ margin-top: 4ex;
+ margin-bottom: 6ex;
+}
+
+/* -- report ------------------------------------------------------------------------ */
+#show_detail_line {
+ margin-top: 3ex;
+ margin-bottom: 1ex;
+}
+#result_table {
+ width: 80%;
+ border-collapse: collapse;
+ border: medium solid #777;
+}
+#header_row {
+ font-weight: bold;
+ color: white;
+ background-color: #777;
+}
+#result_table td {
+ border: thin solid #777;
+ padding: 2px;
+}
+#total_row { font-weight: bold; }
+.passClass { background-color: #6c6; }
+.failClass { background-color: #c60; }
+.errorClass { background-color: #c00; }
+.passCase { color: #6c6; }
+.failCase { color: #c60; font-weight: bold; }
+.errorCase { color: #c00; font-weight: bold; }
+.hiddenRow { display: none; }
+.testcase { margin-left: 2em; }
+
+
+/* -- ending ---------------------------------------------------------------------- */
+#ending {
+}
+
+</style>
+"""
+
+
+
+ # ------------------------------------------------------------------------
+ # Heading
+ #
+
+ HEADING_TMPL = """<div class='heading'>
+<h1>%(title)s</h1>
+%(parameters)s
+<p class='description'>%(description)s</p>
+</div>
+
+""" # variables: (title, parameters, description)
+
+ HEADING_ATTRIBUTE_TMPL = """<p class='attribute'><strong>%(name)s:</strong> %(value)s</p>
+""" # variables: (name, value)
+
+
+
+ # ------------------------------------------------------------------------
+ # Report
+ #
+
+ REPORT_TMPL = """
+<p id='show_detail_line'>Show
+<a href='javascript:showCase(0)'>Summary</a>
+<a href='javascript:showCase(1)'>Failed</a>
+<a href='javascript:showCase(2)'>All</a>
+</p>
+<table id='result_table'>
+<colgroup>
+<col align='left' />
+<col align='right' />
+<col align='right' />
+<col align='right' />
+<col align='right' />
+<col align='right' />
+</colgroup>
+<tr id='header_row'>
+ <td>Class/Test case</td>
+ <td>Count</td>
+ <td>Pass</td>
+ <td>Fail</td>
+ <td>Error</td>
+ <td>View</td>
+</tr>
+%(test_list)s
+<tr id='total_row'>
+ <td>Total</td>
+ <td>%(count)s</td>
+ <td>%(Pass)s</td>
+ <td>%(fail)s</td>
+ <td>%(error)s</td>
+ <td> </td>
+</tr>
+</table>
+""" # variables: (test_list, count, Pass, fail, error)
+
+
+ REPORT_CLASS_TMPL = r"""
+<tr class='%(style)s'>
+ <td>%(name)s</td>
+ <td>%(count)s</td>
+ <td>%(Pass)s</td>
+ <td>%(fail)s</td>
+ <td>%(error)s</td>
+ <td><a href="javascript:showClassDetail('%(cid)s',%(count)s)">Detail</a></td>
+</tr>
+""" # variables: (style, name, count, Pass, fail, error, cid)
+
+
+ REPORT_TEST_WITH_OUTPUT_TMPL = r"""
+<tr id='%(tid)s' class='%(Class)s'>
+ <td class='%(style)s'><div class='testcase'>%(name)s<div></td>
+ <td colspan='5' align='center'><a href="javascript:showOutput('%(tid)s', '%(name)s')">%(status)s</a></td>
+</tr>
+""" # variables: (tid, Class, style, name, status)
+
+
+ REPORT_TEST_NO_OUTPUT_TMPL = r"""
+<tr id='%(tid)s' class='%(Class)s'>
+ <td class='%(style)s'><div class='testcase'>%(name)s<div></td>
+ <td colspan='5' align='center'>%(status)s</td>
+</tr>
+""" # variables: (tid, Class, style, name, status)
+
+
+ REPORT_TEST_OUTPUT_TMPL = r"""
+<script>output_list['%(id)s'] = '%(output)s';</script>
+""" # variables: (id, output)
+
+
+
+ # ------------------------------------------------------------------------
+ # ENDING
+ #
+
+ ENDING_TMPL = """<div id='ending'> </div>"""
+
+# -------------------- The end of the Template class -------------------
+
+
+
+def jsEscapeString(s):
+ """ Escape s for use as a Javascript String """
+ return s.replace('\\','\\\\') \
+ .replace('\r', '\\r') \
+ .replace('\n', '\\n') \
+ .replace('"', '\\"') \
+ .replace("'", "\\'") \
+ .replace("&", '\\x26') \
+ .replace("<", '\\x3C') \
+ .replace(">", '\\x3E')
+ # Note: non-ascii unicode characters do not need to be encoded
+ # Note: previously we encode < as <, etc. However IE6 fail to treat <script> block as CDATA.
+
+
+TestResult = unittest.TestResult
+
+class _TestResult(TestResult):
+ # note: _TestResult is a pure representation of results.
+ # It lacks the output and reporting ability compares to unittest._TextTestResult.
+
+ def __init__(self, verbosity=1):
+ TestResult.__init__(self)
+ self.stdout0 = None
+ self.stderr0 = None
+ self.success_count = 0
+ self.failure_count = 0
+ self.error_count = 0
+ self.verbosity = verbosity
+
+ # result is a list of result in 4 tuple
+ # (
+ # result code (0: success; 1: fail; 2: error),
+ # TestCase object,
+ # Test output (byte string),
+ # stack trace,
+ # )
+ self.result = []
+
+
+ def startTest(self, test):
+ TestResult.startTest(self, test)
+ # just one buffer for both stdout and stderr
+ self.outputBuffer = StringIO.StringIO()
+ stdout_redirector.fp = self.outputBuffer
+ stderr_redirector.fp = self.outputBuffer
+ self.stdout0 = sys.stdout
+ self.stderr0 = sys.stderr
+ sys.stdout = stdout_redirector
+ sys.stderr = stderr_redirector
+
+
+ def complete_output(self):
+ """
+ Disconnect output redirection and return buffer.
+ Safe to call multiple times.
+ """
+ if self.stdout0:
+ sys.stdout = self.stdout0
+ sys.stderr = self.stderr0
+ self.stdout0 = None
+ self.stderr0 = None
+ return self.outputBuffer.getvalue()
+
+
+ def stopTest(self, test):
+ # Usually one of addSuccess, addError or addFailure would have been called.
+ # But there are some path in unittest that would bypass this.
+ # We must disconnect stdout in stopTest(), which is guaranteed to be called.
+ self.complete_output()
+
+
+ def addSuccess(self, test):
+ self.success_count += 1
+ TestResult.addSuccess(self, test)
+ output = self.complete_output()
+ self.result.append((0, test, output, ''))
+ if self.verbosity > 1:
+ sys.stderr.write('ok ')
+ sys.stderr.write(str(test))
+ sys.stderr.write('\n')
+ else:
+ sys.stderr.write('.')
+
+ def addError(self, test, err):
+ self.error_count += 1
+ TestResult.addError(self, test, err)
+ _, _exc_str = self.errors[-1]
+ output = self.complete_output()
+ self.result.append((2, test, output, _exc_str))
+ if self.verbosity > 1:
+ sys.stderr.write('E ')
+ sys.stderr.write(str(test))
+ sys.stderr.write('\n')
+ else:
+ sys.stderr.write('E')
+
+ def addFailure(self, test, err):
+ self.failure_count += 1
+ TestResult.addFailure(self, test, err)
+ _, _exc_str = self.failures[-1]
+ output = self.complete_output()
+ self.result.append((1, test, output, _exc_str))
+ if self.verbosity > 1:
+ sys.stderr.write('F ')
+ sys.stderr.write(str(test))
+ sys.stderr.write('\n')
+ else:
+ sys.stderr.write('F')
+
+
+class HTMLTestRunner(Template_mixin):
+ """
+ """
+ def __init__(self, stream=sys.stdout, verbosity=1, title=None, report_attrs=[], description=None):
+ """
+ @param stream - output stream, default to stdout
+ @param verbosity
+ @param title - use in title and heading
+ @param report_attrs - list of (name, value) to show in report
+ @param description - test description
+ """
+ self.stream = stream
+ self.verbosity = verbosity
+ if title is None:
+ self.title = self.DEFAULT_TITLE
+ else:
+ self.title = title
+ if description is None:
+ self.description = self.DEFAULT_DESCRIPTION
+ else:
+ self.description = description
+ self.report_attrs = report_attrs
+
+ self.startTime = datetime.datetime.now()
+
+
+ def run(self, test):
+ "Run the given test case or test suite."
+ result = _TestResult(self.verbosity)
+ test(result)
+ self.stopTime = datetime.datetime.now()
+ self.generateReport(test, result)
+ print >>sys.stderr, '\nTime Elapsed: %s' % (self.stopTime-self.startTime)
+ return result
+
+
+ def sortResult(self, result_list):
+ # unittest does not seems to run in any particular order.
+ # Here at least we want to group them together by class.
+ rmap = {}
+ classes = []
+ for n,t,o,e in result_list:
+ cls = t.__class__
+ if not rmap.has_key(cls):
+ rmap[cls] = []
+ classes.append(cls)
+ rmap[cls].append((n,t,o,e))
+ r = [(cls, rmap[cls]) for cls in classes]
+ return r
+
+
+ def getReportAttributes(self, result):
+ """
+ Add a few system generated attributes on top of users defined.
+ Override this to add other dynamic custom attributes.
+
+ @return list of (name, value).
+ """
+ startTime = str(self.startTime)[:19]
+ duration = str(self.stopTime - self.startTime)
+ status = []
+ if result.success_count: status.append('Success %s' % result.success_count)
+ if result.failure_count: status.append('Failure %s' % result.failure_count)
+ if result.error_count: status.append('Error %s' % result.error_count )
+ if status:
+ status = ' '.join(status)
+ else:
+ status = 'none'
+
+ return [('Start Time', startTime),
+ ('Duration', duration),
+ ('Status', status),
+ ] + self.report_attrs
+
+
+ def generateReport(self, test, result):
+ report_attrs = self.getReportAttributes(result)
+ generator = 'HTMLTestRunner %s' % __version__
+ stylesheet = self._generate_stylesheet()
+ heading = self._generate_heading(report_attrs)
+ report = self._generate_report(result)
+ ending = self._generate_ending()
+ output = self.HTML_TMPL % dict(
+ title = saxutils.escape(self.title),
+ generator = generator,
+ stylesheet = stylesheet,
+ heading = heading,
+ report = report,
+ ending = ending,
+ )
+ self.stream.write(output.encode('utf8'))
+
+
+ def _generate_stylesheet(self):
+ return self.STYLESHEET_TMPL
+
+
+ def _generate_heading(self, report_attrs):
+ a_lines = []
+ for name, value in report_attrs:
+ line = self.HEADING_ATTRIBUTE_TMPL % dict(
+ name = saxutils.escape(name),
+ value = saxutils.escape(value),
+ )
+ a_lines.append(line)
+ heading = self.HEADING_TMPL % dict(
+ title = saxutils.escape(self.title),
+ parameters = ''.join(a_lines),
+ description = saxutils.escape(self.description),
+ )
+ return heading
+
+
+ def _generate_report(self, result):
+ rows = []
+ sortedResult = self.sortResult(result.result)
+ for cid, (cls, cls_results) in enumerate(sortedResult):
+ # subtotal for a class
+ np = nf = ne = 0
+ for n,t,o,e in cls_results:
+ if n == 0: np += 1
+ elif n == 1: nf += 1
+ else: ne += 1
+
+ row = self.REPORT_CLASS_TMPL % dict(
+ style = ne > 0 and 'errorClass' or nf > 0 and 'failClass' or 'passClass',
+ name = "%s.%s" % (cls.__module__, cls.__name__),
+ count = np+nf+ne,
+ Pass = np,
+ fail = nf,
+ error = ne,
+ cid = 'c%s' % (cid+1),
+ )
+ rows.append(row)
+
+ for tid, (n,t,o,e) in enumerate(cls_results):
+ self._generate_report_test(rows, cid, tid, n, t, o, e)
+
+ report = self.REPORT_TMPL % dict(
+ test_list = ''.join(rows),
+ count = str(result.success_count+result.failure_count+result.error_count),
+ Pass = str(result.success_count),
+ fail = str(result.failure_count),
+ error = str(result.error_count),
+ )
+ return report
+
+
+ def _generate_report_test(self, rows, cid, tid, n, t, o, e):
+ # e.g. 'pt1.1', 'ft1.1', etc
+ has_output = bool(o or e)
+ tid = (n == 0 and 'p' or 'f') + 't%s.%s' % (cid+1,tid+1)
+ name = t.id().split('.')[-1]
+ tmpl = has_output and self.REPORT_TEST_WITH_OUTPUT_TMPL or self.REPORT_TEST_NO_OUTPUT_TMPL
+ row = tmpl % dict(
+ tid = tid,
+ Class = (n == 0 and 'hiddenRow' or ''),
+ style = n == 2 and 'errorCase' or (n == 1 and 'failCase' or ''),
+ name = name,
+ status = self.STATUS[n],
+ )
+ rows.append(row)
+ if not has_output:
+ return
+
+ # o and e should be byte string because they are collected from stdout and stderr?
+ if isinstance(o,str):
+ # TODO: some problem with 'string_escape': it escape \n and mess up formating
+ # uo = unicode(o.encode('string_escape'))
+ uo = o.decode('latin-1')
+ else:
+ uo = o
+ if isinstance(e,str):
+ # TODO: some problem with 'string_escape': it escape \n and mess up formating
+ # ue = unicode(e.encode('string_escape'))
+ ue = e.decode('latin-1')
+ else:
+ ue = e
+
+ row = self.REPORT_TEST_OUTPUT_TMPL % dict(
+ id = tid,
+ output = jsEscapeString(uo+ue),
+ )
+ rows.append(row)
+
+
+ def _generate_ending(self):
+ return self.ENDING_TMPL
+
+
+##############################################################################
+# Facilities for running tests from the command line
+##############################################################################
+
+# Note: Reuse unittest.TestProgram to launch test. In the future we may
+# build our own launcher to support more specific command line
+# parameters like test title, CSS, etc.
+class TestProgram(unittest.TestProgram):
+ """
+ A variation of the unittest.TestProgram. Please refer to the base
+ class for command line parameters.
+ """
+ def runTests(self):
+ # Pick HTMLTestRunner as the default test runner.
+ # base class's testRunner parameter is not useful because it means
+ # we have to instantiate HTMLTestRunner before we know self.verbosity.
+ if self.testRunner is None:
+ self.testRunner = HTMLTestRunner(verbosity=self.verbosity)
+ unittest.TestProgram.runTests(self)
+
+main = TestProgram
+
+##############################################################################
+# Executing this module from the command line
+##############################################################################
+
+if __name__ == "__main__":
+ main(module=None)
--- /dev/null
+
+import sys
+sys.path.insert(0,"../Aster")
+import prefs
+#ASTERDIR="/local/chris/ASTER/instals/STA8.2/astest"
+ASTERDIR="/local/chris/ASTER/instals/NEW8/astest"
+sys.path.insert(0,prefs.CODE_PATH)
+
+"""
+This program executes all unitest tests that are found in
+ - directories with name test* or Test*
+ - files with name test* or Test*
+
+unitest tests are :
+ - functions and class with names test* or Test*
+ - methods with name test* or Test* from classes with name test* or Test*
+
+Typical uses are :
+
+ - execute all tests with text output : python2.4 run.py
+ - execute all tests with html output : python2.4 run.py --html
+ - execute some tests with text output : python2.4 run.py testelem
+ - execute one test with text output : python2.4 run.py testelem/testsimp1.py
+ - execute all tests with verbosity and html output : python2.4 run.py -v --html
+"""
+
import sys,types,os
import sre
import unittest
from optparse import OptionParser
-sys.path[:0]=[".."]
+import config
testMatch = sre.compile(r'^[Tt]est')
class TestSuite(unittest.TestSuite):
+ ignore=[]
loader = unittest.defaultTestLoader
def __init__(self, names=[]):
mod = getattr(mod,comp)
return mod
+ def importdir(self,rep,path):
+ init = os.path.abspath(os.path.join(path,'__init__.py'))
+ if os.path.isfile(init):
+ package=self._import(rep)
+ if package:
+ return TestPackageSuite(package)
+ else:
+ return TestDirectorySuite(path)
+
+ def importfile(self,item,path):
+ root, ext = os.path.splitext(item)
+ if ext != '.py':
+ return
+ if root.find('/') >= 0:
+ dirname, file = os.path.split(path)
+ root, ext = os.path.splitext(file)
+ sys.path.insert(0,dirname)
+ mod=self._import(root)
+ sys.path.remove(dirname)
+ else:
+ mod=self._import(root)
+ return ModuleTestSuite(mod)
+
def collectTests(self):
if self.names:
entries=self.names
else:
entries = [ item for item in os.listdir(os.getcwd())
if item.lower().find('test') >= 0 ]
+ self.path=os.getcwd()
+ return self._collectTests(entries)
+ def _collectTests(self,entries):
tests=[]
for item in entries:
- path=os.path.abspath(os.path.join(os.getcwd(),item))
- if os.path.isfile(item):
- root, ext = os.path.splitext(item)
- if ext == '.py':
- if root.find('/') >= 0:
- dirname, file = os.path.split(path)
- root, ext = os.path.splitext(file)
- sys.path.insert(0,dirname)
- mod=self._import(root)
- sys.path.remove(dirname)
- else:
- mod=self._import(root)
- tests.append(ModuleTestSuite(mod))
- elif os.path.isdir(item):
- init = os.path.abspath(os.path.join(item,'__init__.py'))
- if os.path.isfile(init):
- package=self._import(item)
- if package:
- tests.append(TestPackageSuite(package))
- else:
- tests.append(TestDirectorySuite(path))
+ if (item[0] == '.'
+ or item in self.ignore
+ or not testMatch.search(item)):
+ continue
+ path=os.path.abspath(os.path.join(self.path,item))
+ if os.path.isfile(path):
+ t=self.importfile(item,path)
+ if t:tests.append(t)
+ elif os.path.isdir(path):
+ tests.append(self.importdir(item,path))
return tests
class TestDirectorySuite(TestSuite):
- ignore=[]
def __init__(self,path):
self.path=path
super(TestDirectorySuite,self).__init__()
sys.path.insert(0,self.path)
entries = os.listdir(self.path)
entries.sort()
- for item in entries:
- if (item[0] == '.'
- or item in self.ignore
- or not testMatch.search(item)):
- continue
- item_path = os.path.abspath(os.path.join(self.path,item))
- if os.path.isfile(item_path):
- root, ext = os.path.splitext(item)
- if ext != '.py':
- continue
- if root.find('/') >= 0:
- dirname, file = os.path.split(item_path)
- root, ext = os.path.splitext(file)
- sys.path.insert(0,dirname)
- mod=self._import(root)
- sys.path.remove(dirname)
- else:
- mod=self._import(root)
- tests.append(ModuleTestSuite(mod))
- elif os.path.isdir(item_path):
- init = os.path.abspath(os.path.join(item_path,'__init__.py'))
- if os.path.isfile(init):
- package=self._import(item)
- if package:
- tests.append(TestPackageSuite(package))
- else:
- tests.append(TestDirectorySuite(item_path))
+ tests=self._collectTests(entries)
sys.path.remove(self.path)
return tests
path=os.path.abspath(os.path.dirname(self.package.__file__))
super(TestPackageSuite,self).__init__(path)
- def collectTests(self):
- tests=[]
- if self.path:
- sys.path.insert(0,self.path)
- entries = os.listdir(self.path)
- entries.sort()
- for item in entries:
- if (item[0] == '.'
- or item in self.ignore
- or not testMatch.search(item)):
- continue
- item_path = os.path.abspath(os.path.join(self.path,item))
- if os.path.isfile(item_path):
- root, ext = os.path.splitext(item)
- if ext != '.py':
- continue
- name="%s.%s" % (self.package.__name__,root)
- mod=self._import(name)
- tests.append(ModuleTestSuite(mod))
- elif os.path.isdir(item_path):
- init = os.path.abspath(os.path.join(item_path,'__init__.py'))
- if os.path.isfile(init):
- name="%s.%s" % (self.package.__name__,item)
- package=self._import(name)
- if package:
- tests.append(TestPackageSuite(package))
- else:
- tests.append(TestDirectorySuite(item_path))
- sys.path.remove(self.path)
- return tests
+ def importdir(self,item,path):
+ init = os.path.abspath(os.path.join(path,'__init__.py'))
+ if os.path.isfile(init):
+ name="%s.%s" % (self.package.__name__,item)
+ package=self._import(name)
+ if package:
+ return TestPackageSuite(package)
+ else:
+ return TestDirectorySuite(path)
+ def importfile(self,item,path):
+ root, ext = os.path.splitext(item)
+ if ext != '.py':
+ return
+ name="%s.%s" % (self.package.__name__,root)
+ mod=self._import(name)
+ return ModuleTestSuite(mod)
class ModuleTestSuite(TestSuite):
for test in func_tests ]
return tests
+
class TestProgram(unittest.TestProgram):
USAGE="""
"""
- def __init__(self,testRunner=None):
- self.testRunner = testRunner
+ def __init__(self):
+ self.testRunner = None
self.verbosity = 1
+ self.html=0
self.parseArgs(sys.argv)
+ if self.html:
+ import HTMLTestRunner
+ self.testRunner = HTMLTestRunner.HTMLTestRunner(verbosity=self.verbosity)
self.createTests()
self.runTests()
parser.add_option("-v","--verbose",action="count",
dest="verbosity",default=1,
help="Be more verbose. ")
+ parser.add_option("--html",action="store_true",
+ dest="html",default=0,
+ help="Produce HTML output ")
options, args = parser.parse_args(argv)
self.verbosity = options.verbosity
+ self.html=options.html
if args:
self.names = list(args)
def createTests(self):
self.test = TestSuite(self.names)
-
-main = TestProgram
-
if __name__ == "__main__":
- main()
+ TestProgram()
--- /dev/null
+MM=LIRE_MAILLAGE()
--- /dev/null
+POURSUITE()
+MA=LIRE_MAILLAGE(INFO=inf)
+FIN()
--- /dev/null
+DEBUT()
+inf=1
+p2=inf+1
+p3=sin(p2)
+FIN()
--- /dev/null
+DEBUT()
+inf1=1
+MA=LIRE_MAILLAGE(INFO=inf1)
+INCLUDE_MATERIAU( NOM_AFNOR='18MND5', TYPE_MODELE='REF',
+ VARIANTE='A', TYPE_VALE='NOMI',
+ NOM_MATER='MAT3', INFO=1 )
+
+FIN()
--- /dev/null
+DEBUT()
+a=1
+fmt_raison='-'*80+"""
+
+ Exception erreur_Fatale interceptee
+ Raison : %s
+
+"""+'-'*80+'\n'
+FIN()
--- /dev/null
+from Numeric import cos
+DEBUT()
+RAYCRA=1.
+EPCRA=0.1
+S_CR=3.1415*(RAYCRA**2-(RAYCRA-EPCRA)**2)
+T_CR=3.1415
+NOMF="nomfichier"
+n=2
+
+MA=LIRE_MAILLAGE( )
+
+MO=AFFE_MODELE( MAILLAGE=MA,
+ #test de validateur GEOM (typ=grma) avec grma derive de GEOM
+ AFFE=(_F(GROUP_MA = ('LI1'),
+ PHENOMENE = 'MECANIQUE',
+ MODELISATION = 'DIS_TR'),
+ ),
+ INFO=2,);
+
+carel=[0.]*78
+
+CAREG=AFFE_CARA_ELEM(MODELE=MO,
+ DISCRET=_F(GROUP_MA=('LI1'),
+ CARA = 'K_TR_L',
+ VALE = carel,
+ REPERE='LOCAL' , ),
+ ORIENTATION=(_F(GROUP_MA=('LI1',),
+ CARA='VECT_Y',
+ VALE=(0.,0.,1.),),),
+ AFFE_FIBRE =( _F(GROUP_MA='CRAYON', COOR_AXE_POUTRE = (0.,0.,), CARA='SURFACE', VALE=( 0.,S_CR/4,)),
+ _F(GROUP_MA='CRAYON', COOR_AXE_POUTRE = (0.,0.,), CARA='SURFACE', VALE=( 0.,T_CR,)),
+ _F(GROUP_MA='CRAYON', COOR_AXE_POUTRE = (0.,sin(n*22.5*pi/180),), CARA='SURFACE', VALE=( 0.,T_CR/4,)),
+ _F(GROUP_MA='CRAYON', COOR_AXE_POUTRE = (0.,(cos(n*22.5*pi/180)),), CARA='SURFACE', VALE=( 0.,T_CR/4,)),
+ ),
+ );
+
+DEFI_FICHIER(UNITE=50, FICHIER='./REPE_OUT/zzzz206a_resu.mail')
+#test de validateur LongStr avec parametre instance de PARAMETRE
+DEFI_FICHIER(UNITE=50, FICHIER=NOMF)
+#test de validateur LongStr avec parametre instance de Formula
+u=DEFI_FICHIER( FICHIER=NOMF*2)
+DEFI_FICHIER (ACTION='LIBERER',UNITE=50)
+#test de validateur d'objet entier (typ='I'), instance de la classe entier
+DEFI_FICHIER (ACTION='LIBERER',UNITE=u)
+
+# test de validateur qui accepte tout (typ=assd)
+IMPR_CO(CONCEPT=_F(NOM=MA))
+
+FIN()
--- /dev/null
+# MODIF DATE 07/03/2005 AUTEUR CIBHHLV L.VIVAN
+# RESPONSABLE MABBAS M.ABBAS
+#
+# TITRE TEST DE REFERENCE POUR LA MACRO DE CALCUL DE BRIDES CABRI
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2003 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+
+DEBUT(CODE=_F( NOM = 'CABRI02A',NIV_PUB_WEB='INTRANET'));
+
+# DEFINITION DES DONNEES MATERIAUX
+
+# Temperature initiale, assemblage libre de contraintes
+TEMP_INI=25.0;
+
+# Temperature moyenne du transitoire pour calcul de lambda et rhoCp
+TEMP_MOY = 170.0;
+
+INCLUDE_MATERIAU(NOM_AFNOR='Z2CN1810',
+ TYPE_MODELE='REF',
+ VARIANTE='A',
+ TYPE_VALE='NOMI',
+ NOM_MATER='MA_BRI',
+ EXTRACTION=_F(COMPOR='THER',
+ TEMP_EVAL= TEMP_MOY,),
+ UNITE_LONGUEUR='MM');
+
+INCLUDE_MATERIAU(NOM_AFNOR='Z12CN13',
+ TYPE_MODELE='REF',
+ VARIANTE='A',
+ TYPE_VALE='NOMI',
+ NOM_MATER='MA_ECR',
+ EXTRACTION=_F(COMPOR='THER',
+ TEMP_EVAL= TEMP_MOY,),
+ UNITE_LONGUEUR='MM',);
+
+INCLUDE_MATERIAU(NOM_AFNOR='Z12CN13',
+ TYPE_MODELE='REF',
+ VARIANTE='A',
+ TYPE_VALE='NOMI',
+ NOM_MATER='MA_RON',
+ EXTRACTION=_F(COMPOR='THER',
+ TEMP_EVAL= TEMP_MOY,),
+ UNITE_LONGUEUR='MM',);
+
+INCLUDE_MATERIAU(NOM_AFNOR='Z2CN1810',
+ TYPE_MODELE='REF',
+ VARIANTE='A',
+ TYPE_VALE='NOMI',
+ NOM_MATER='MA_GOU',
+ EXTRACTION=_F(COMPOR='THER',
+ TEMP_EVAL= TEMP_MOY,),
+ UNITE_LONGUEUR='MM',);
+
+INCLUDE_MATERIAU(NOM_AFNOR='Z6CND1712',
+ TYPE_MODELE='REF',
+ VARIANTE='A',
+ TYPE_VALE='NOMI',
+ NOM_MATER='MA_LIM',
+ EXTRACTION=_F(COMPOR='THER',
+ TEMP_EVAL= TEMP_MOY,),
+ UNITE_LONGUEUR='MM',);
+
+FIN();
--- /dev/null
+DEBUT()
+a=1
+MA=LIRE_MAILLAGE()
+FIN()
--- /dev/null
+DEBUT()
+MAYA=LIRE_MAILLAGE()
+
+MAYA=DEFI_GROUP( reuse=MAYA, MAILLAGE=MAYA,
+ CREA_GROUP_MA=_F( NOM = 'TOUT', TOUT = 'OUI'))
+
+BARRE1=AFFE_MODELE( MAILLAGE=MAYA,
+ AFFE=_F( GROUP_MA='SS1',
+ MODELISATION = 'POU_D_E',
+ PHENOMENE = 'MECANIQUE'))
+#
+MATERIO1=DEFI_MATERIAU( ELAS=_F( RHO = 1.E08, NU = 0.3, E = 1.E10))
+
+MATERIO2=DEFI_MATERIAU( ELAS=_F( RHO = 0., NU = 0., E = 1.E15))
+#
+CHMAT=AFFE_MATERIAU( MAILLAGE=MAYA,AFFE=(
+ #_F( TOUT = 'OUI', MATER = MATERIO1),
+ _F( GROUP_MA = 'SS1', MATER = MATERIO1),
+ _F( GROUP_MA = 'SS2', MATER = MATERIO1),
+ _F( GROUP_MA = 'SS3', MATER = MATERIO1),
+ _F( GROUP_MA = 'RIGIDE', MATER = MATERIO2),
+)) # commentaire test
+
+CARA1=AFFE_CARA_ELEM( MODELE=BARRE1,
+ POUTRE=_F(
+ GROUP_MA = 'TOUT',
+ SECTION = 'CERCLE',
+ CARA = ('R', 'EP',),
+ VALE = (0.1, 0.01,)))
+
+GUIDAGE1=AFFE_CHAR_MECA( MODELE=BARRE1,DDL_IMPO=(
+ _F( GROUP_MA='SS1',
+ DX = 0., DZ = 0., DRX = 0., DRY = 0.),
+ _F( GROUP_NO = 'L1', DY = 0., DRZ = 0.),
+ ))
+
+K_ELEM1=CALC_MATR_ELEM( MODELE=BARRE1,
+ CARA_ELEM=CARA1,
+ CHAM_MATER=CHMAT,
+ OPTION='RIGI_MECA',
+ CHARGE=GUIDAGE1)
+
+NUM1=NUME_DDL( MATR_RIGI=K_ELEM1)
+
+#
+K_ASSE1=ASSE_MATRICE( MATR_ELEM=K_ELEM1,
+ NUME_DDL=NUM1)
+
+MODESTA1=MODE_STATIQUE( MATR_RIGI=K_ASSE1,
+ MODE_STAT=_F(
+ GROUP_NO=('L12'),
+ AVEC_CMP = ('DY','DRZ'),
+ ))
+
+# parse: -affectation
+
+DS1=[None]*5
+DS2=[None]*5
+DS3=[None]*5
+DS4=[None]*5
+CHS1=[None]*5
+CHS2=[None]*5
+
+# parse: +affectation
+
+#for k in range(1,5):
+# DS1[k] = CREA_CHAMP( OPERATION='EXTR', TYPE_CHAM='NOEU_DEPL_R',
+# RESULTAT= MODESTA1, NUME_ORDRE=k, NOM_CHAM = 'DEPL');
+
+FIN()
--- /dev/null
+DEPL2 = FORMULE(NOM_PARA='INST',VALE='sin(OMEGAA*INST)/(OMEGAA**xx)')
+DEPLACE2=CALC_FONC_INTERP( FONCTION=DEPL2,
+ LIST_PARA=L_INST,
+ NOM_PARA='INST',
+ PROL_DROITE='LINEAIRE',
+ PROL_GAUCHE='LINEAIRE',
+ NOM_RESU='DEPL' )
+
+MONO_X=CALC_CHAR_SEISME( MATR_MASS=MASSE,
+ DIRECTION=( 1., 0., 0.,),
+ MONO_APPUI='OUI' )
+
+
+MACRO_PROJ_BASE(BASE=MODE_MEC,MATR_ASSE_GENE=(
+ _F( MATRICE = CO("MASS_GEN"), MATR_ASSE = MASSE),
+ _F( MATRICE = CO("RIGI_GEN"), MATR_ASSE = RIGIDITE)),
+ VECT_ASSE_GENE=_F( VECTEUR = CO("VECT_X"), VECT_ASSE = MONO_X)
+ )
+
--- /dev/null
+POURSUITE(CODE=_F( NOM = 'EFICA01A'))
+
+INCLUDE_MATERIAU( NOM_AFNOR='18MND5', TYPE_MODELE='REF',
+ VARIANTE='A', TYPE_VALE='NOMI',
+ NOM_MATER='MAT3', INFO=1 )
+
+CHMAT3=AFFE_MATERIAU( MAILLAGE=MAILLA3,
+ AFFE=_F( TOUT='OUI', MATER = MAT3, TEMP_REF = 20.))
+
+riginor = 2.88E7
+
+TRAN_GE2=DYNA_TRAN_MODAL( MASS_GENE=MGEN_BIC, RIGI_GENE=RGEN_BIC,
+ METHODE='EULER',
+ AMOR_REDUIT=( 0.07, 0.07, ),
+ MODE_STAT=MSTA_BIC,EXCIT=(
+ _F( VECT_GENE = VECT_X1, ACCE = ACCELER1,
+ MULT_APPUI = 'OUI',
+ DIRECTION = ( 1., 0., 0.,), NOEUD = 'NO1',
+ VITE = VITESSE1, DEPL = DEPLACE1),
+ _F( VECT_GENE = VECT_X2, ACCE = ACCELER2,
+ MULT_APPUI = 'OUI',
+ DIRECTION = ( 1., 0., 0.,), NOEUD = 'NO11',
+ VITE = VITESSE2, DEPL = DEPLACE2)),
+ CHOC=_F( GROUP_NO_1 = 'MASSES1',
+ GROUP_NO_2 = 'MASSES2',
+ OBSTACLE = GRILLE,
+ INTITULE = 'NO2/NO12',
+ NORM_OBST = (0., 0., 1.,),
+ DIST_1 = 0.4495,
+ DIST_2 = 0.4495,
+ RIGI_NOR = riginor,
+ AMOR_NOR = 0.,
+ RIGI_TAN = 0.,
+ COULOMB = 0.),
+ INCREMENT=_F( INST_INIT = 0., INST_FIN = 1., PAS = 0.00025),
+ ARCHIVAGE=_F( PAS_ARCH = 8)
+ )
+
+LISTIMP=DEFI_LIST_REEL( DEBUT=0.,
+ INTERVALLE=_F( JUSQU_A = 1., NOMBRE = 500))
+
+RESUA1=REST_BASE_PHYS( RESU_GENE=TRAN_GE1,
+ LIST_INST=LISTIMP,
+ INTERPOL='LIN',
+ NOM_CHAM='DEPL',
+ MULT_APPUI='OUI'
+ )
+
+FIN()
--- /dev/null
+# MODIF DATE 20/09/2004 AUTEUR DURAND C.DURAND
+# TITRE TEST DE NON REGRESSION DE L IHM EFICAS - DERIVE DE SDND102A
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# Ce cas test est gere en configuration dans la base ASTER, il sert de
+# modele pour prononcer la recette de l IHM d EFICAS : l objectif est de
+# pouvoir recreer ce test a l identique dans EFICAS a partir d une page
+# blanche.
+# On a donc essaye d y placer toutes les commandes un peu particulieres
+# du langage de commandes d ASTER
+#
+# Il s agit en fait du test SDND102A auquel on a ajoute :
+# la definition d un parametre (VAL)
+# l inclusion d un fichier (INCLUDE)
+# une poursuite (POURSUITE)
+# Il contient ainsi :
+# des parametres, des formules, des macros, des mots cles facteurs repetes
+# (y compris conditionnes par des regles : calc_fonction / COMB),
+# des blocs (mode_iter_simult,calc_char_seisme), un defi_valeur, un parametre.
+#
+#
+# Il faudra y associer quelques recommandations pour la recette :
+# - verifier qu en ouvrant le .com0, il demande bien a browser le .comm puis, en cascade, le .11
+# - verifier qu on peut bien supprimer une commande, un mot cle simple et facteur
+# - verifier les acces a la doc
+#
+#
+
+
+DEBUT(CODE=_F(NOM='EFICA01A',NIV_PUB_WEB='INTERNET',VISU_EFICAS='NON'),)
+
+MAILLAGE=LIRE_MAILLAGE()
+
+MAILLAGE=DEFI_GROUP(reuse=MAILLAGE,
+ MAILLAGE=MAILLAGE,
+ CREA_GROUP_NO=(_F(NOEUD='NO2',
+ NOM='MASSES',),
+ _F(NOEUD='NO1',
+ NOM='ENCASTRE',),),)
+
+MAILLA2=LIRE_MAILLAGE(UNITE=21,)
+
+MODELE=AFFE_MODELE(MAILLAGE=MAILLAGE,
+ AFFE=(_F(GROUP_MA='RESSORT',
+ PHENOMENE='MECANIQUE',
+ MODELISATION='DIS_T',),
+ _F(GROUP_NO='MASSES',
+ PHENOMENE='MECANIQUE',
+ MODELISATION='DIS_T',),),)
+
+BICHOC=AFFE_MODELE(MAILLAGE=MAILLA2,
+ AFFE=(_F(GROUP_MA='RESSORTS',
+ PHENOMENE='MECANIQUE',
+ MODELISATION='DIS_T',),
+ _F(GROUP_NO=('MASSES1','MASSES2',),
+ PHENOMENE='MECANIQUE',
+ MODELISATION='DIS_T',),),)
+VAL = 98696.0
+
+
+CARA_ELE=AFFE_CARA_ELEM(MODELE=MODELE,
+ DISCRET=(_F(GROUP_MA='RESSORT',
+ REPERE='GLOBAL',
+ CARA='K_T_D_L',
+ VALE=(VAL,0.0,0.0,),),
+ _F(GROUP_NO='MASSES',
+ CARA='M_T_D_N',
+ VALE=25.0,),),)
+
+CARA_BIC=AFFE_CARA_ELEM(MODELE=BICHOC,
+ DISCRET=(_F(GROUP_MA='RESSORTS',
+ REPERE='GLOBAL',
+ CARA='K_T_D_L',
+ VALE=(VAL,0.0,0.0,),),
+ _F(GROUP_NO='MASSES1',
+ CARA='M_T_D_N',
+ VALE=25.0,),
+ _F(GROUP_NO='MASSES2',
+ CARA='M_T_D_N',
+ VALE=25.0,),),)
+
+CON_LIM=AFFE_CHAR_MECA(MODELE=MODELE,
+ DDL_IMPO=(_F(GROUP_NO='ENCASTRE',
+ DX=0.0,
+ DY=0.0,
+ DZ=0.0,),
+ _F(GROUP_NO='MASSES',
+ DY=0.0,
+ DZ=0.0,),),)
+
+CL_BICHO=AFFE_CHAR_MECA(MODELE=BICHOC,
+ DDL_IMPO=(_F(GROUP_NO='ENCBICHO',
+ DX=0.0,
+ DY=0.0,
+ DZ=0.0,),
+ _F(GROUP_NO=('MASSES1','MASSES2',),
+ DY=0.0,
+ DZ=0.0,),),)
+
+MACRO_MATR_ASSE(MODELE=MODELE,
+ CARA_ELEM=CARA_ELE,
+ CHARGE=CON_LIM,
+ NUME_DDL=CO('NUMEDDL'),
+ MATR_ASSE=(_F(MATRICE=CO('RIGIDITE'),
+ OPTION='RIGI_MECA',),
+ _F(MATRICE=CO('MASSE'),
+ OPTION='MASS_MECA',),),)
+
+MACRO_MATR_ASSE(MODELE=BICHOC,
+ CARA_ELEM=CARA_BIC,
+ CHARGE=CL_BICHO,
+ NUME_DDL=CO('NUMDDLC'),
+ MATR_ASSE=(_F(MATRICE=CO('RIGI_BIC'),
+ OPTION='RIGI_MECA',),
+ _F(MATRICE=CO('MASS_BIC'),
+ OPTION='MASS_MECA',),),)
+
+MODE_MEC=MODE_ITER_SIMULT(MATR_A=RIGIDITE,
+ MATR_B=MASSE,)
+
+MODE_MEC=NORM_MODE(reuse =MODE_MEC,
+ MODE=MODE_MEC,
+ NORME='MASS_GENE',)
+
+MODE_BIC=MODE_ITER_SIMULT(MATR_A=RIGI_BIC,
+ MATR_B=MASS_BIC,
+ METHODE='JACOBI',
+ OPTION='SANS',
+ CALC_FREQ=_F(OPTION='BANDE',
+ FREQ=(1.0,10.0,),),)
+
+MODE_BIC=NORM_MODE(reuse =MODE_BIC,
+ MODE=MODE_BIC,
+ NORME='MASS_GENE',)
+
+MODE_STA=MODE_STATIQUE(MATR_RIGI=RIGIDITE,
+ MATR_MASS=MASSE,
+ MODE_STAT=_F(TOUT='OUI',
+ AVEC_CMP='DX',),)
+
+MSTA_BIC=MODE_STATIQUE(MATR_RIGI=RIGI_BIC,
+ MATR_MASS=MASS_BIC,
+ MODE_STAT=_F(TOUT='OUI',
+ AVEC_CMP='DX',),)
+
+L_INST=DEFI_LIST_REEL(DEBUT=0.0,
+ INTERVALLE=_F(JUSQU_A=1.0,
+ PAS=1.E-4,),)
+
+OMEGAA=2.*pi*10.
+
+ACCE1 = FORMULE(VALE = 'sin(OMEGAA*INST)',
+ NOM_PARA='INST')
+
+ACCELER1=CALC_FONC_INTERP(FONCTION=ACCE1,
+ NOM_RESU='ACCE',
+ LIST_PARA=L_INST,
+ NOM_PARA = 'INST',
+ PROL_DROITE='LINEAIRE',
+ PROL_GAUCHE='LINEAIRE',)
+
+ACCE2 = FORMULE(VALE = '-sin(OMEGAA*INST)',
+ NOM_PARA='INST')
+
+ACCELER2=CALC_FONC_INTERP(FONCTION=ACCE2,
+ NOM_RESU='ACCE',
+ LIST_PARA=L_INST,
+ NOM_PARA = 'INST',
+ PROL_DROITE='LINEAIRE',
+ PROL_GAUCHE='LINEAIRE',)
+
+VITE1 = FORMULE(VALE = '-cos(OMEGAA*INST)/OMEGAA',
+ NOM_PARA='INST')
+
+VITESSE1=CALC_FONC_INTERP(FONCTION=VITE1,
+ NOM_RESU='VITE',
+ LIST_PARA=L_INST,
+ NOM_PARA = 'INST',
+ PROL_DROITE='LINEAIRE',
+ PROL_GAUCHE='LINEAIRE',)
+
+DEPL1 = FORMULE(VALE = '-sin(OMEGAA*INST)/(OMEGAA**2)',
+ NOM_PARA='INST')
+
+DEPLACE1=CALC_FONC_INTERP(FONCTION=DEPL1,
+ NOM_RESU='DEPL',
+ LIST_PARA=L_INST,
+ NOM_PARA = 'INST',
+ PROL_DROITE='LINEAIRE',
+ PROL_GAUCHE='LINEAIRE',)
+
+VITE2 = FORMULE(VALE = 'cos(OMEGAA*INST)/OMEGAA',
+ NOM_PARA='INST')
+
+VITESSE2=CALC_FONC_INTERP(FONCTION=VITE2,
+ NOM_RESU='VITE',
+ LIST_PARA=L_INST,
+ NOM_PARA = 'INST',
+ PROL_DROITE='LINEAIRE',
+ PROL_GAUCHE='LINEAIRE',)
+
+xx=2
+
+INCLUDE(UNITE=11,
+ INFO=1,)
+
+MUR=DEFI_OBSTACLE(TYPE='PLAN_Z',)
+
+TRAN_GE1=DYNA_TRAN_MODAL(METHODE='EULER',
+ MASS_GENE=MASS_GEN,
+ RIGI_GENE=RIGI_GEN,
+ AMOR_REDUIT=0.07,
+ MODE_STAT=MODE_STA,
+ INCREMENT=_F(INST_INIT=0.0,
+ INST_FIN=1.0,
+ PAS=2.0E-4,),
+ ARCHIVAGE=_F(PAS_ARCH=8,),
+ EXCIT=_F(VECT_GENE=VECT_X,
+ ACCE=ACCELER1,
+ VITE=VITESSE1,
+ DEPL=DEPLACE1,
+ MULT_APPUI='OUI',
+ DIRECTION=(1.0,0.0,0.0,),
+ NOEUD='NO1',),
+ CHOC=_F(INTITULE='NO2/MUR',
+ GROUP_NO_1='MASSES',
+ OBSTACLE=MUR,
+ ORIG_OBST=(-1.0,0.0,0.0,),
+ NORM_OBST=(0.0,0.0,1.0,),
+ JEU=1.1005,
+ RIGI_NOR=5.76E7,
+ AMOR_NOR=0.0,
+ RIGI_TAN=0.0,
+ COULOMB=0.0,),)
+
+MULT_X1=CALC_CHAR_SEISME(MATR_MASS=MASS_BIC,
+ DIRECTION=(1.0,0.0,0.0,),
+ MODE_STAT=MSTA_BIC,
+ NOEUD='NO1',)
+
+MULT_X2=CALC_CHAR_SEISME(MATR_MASS=MASS_BIC,
+ DIRECTION=(1.0,0.0,0.0,),
+ MODE_STAT=MSTA_BIC,
+ NOEUD='NO11',)
+
+MACRO_PROJ_BASE(BASE=MODE_BIC,
+ MATR_ASSE_GENE=(_F(MATRICE=CO('MGEN_BIC'),
+ MATR_ASSE=MASS_BIC,),
+ _F(MATRICE=CO('RGEN_BIC'),
+ MATR_ASSE=RIGI_BIC,),),
+ VECT_ASSE_GENE=(_F(VECTEUR=CO('VECT_X1'),
+ VECT_ASSE=MULT_X1,),
+ _F(VECTEUR=CO('VECT_X2'),
+ VECT_ASSE=MULT_X2,),),)
+
+GRILLE=DEFI_OBSTACLE(TYPE='BI_PLAN_Z',)
+
+MAILLA3=LIRE_MAILLAGE(UNITE=22,)
+
+FIN()
--- /dev/null
+DEPL2 = FORMULE(NOM_PARA='INST',VALE='sin(OMEGAA*INST)/(OMEGAA**xx)')
+DEPLACE2=CALC_FONC_INTERP( FONCTION=DEPL2,
+ LIST_PARA=L_INST,
+ NOM_PARA='INST',
+ PROL_DROITE='LINEAIRE',
+ PROL_GAUCHE='LINEAIRE',
+ NOM_RESU='DEPL' )
+
+MONO_X=CALC_CHAR_SEISME( MATR_MASS=MASSE,
+ DIRECTION=( 1., 0., 0.,),
+ MONO_APPUI='OUI' )
+
+
+MACRO_PROJ_BASE(BASE=MODE_MEC,MATR_ASSE_GENE=(
+ _F( MATRICE = CO("MASS_GEN"), MATR_ASSE = MASSE),
+ _F( MATRICE = CO("RIGI_GEN"), MATR_ASSE = RIGIDITE)),
+ VECT_ASSE_GENE=_F( VECTEUR = CO("VECT_X"), VECT_ASSE = MONO_X)
+ )
+
--- /dev/null
+# MODIF DATE 20/09/2004 AUTEUR DURAND C.DURAND
+# TITRE TEST DE NON REGRESSION DE L IHM EFICAS - DERIVE DE SDND102A
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# Ce cas test est gere en configuration dans la base ASTER, il sert de
+# modele pour prononcer la recette de l IHM d EFICAS : l objectif est de
+# pouvoir recreer ce test a l identique dans EFICAS a partir d une page
+# blanche.
+# On a donc essaye d y placer toutes les commandes un peu particulieres
+# du langage de commandes d ASTER
+#
+# Il s agit en fait du test SDND102A auquel on a ajoute :
+# la definition d un parametre (VAL)
+# l inclusion d un fichier (INCLUDE)
+# une poursuite (POURSUITE)
+# Il contient ainsi :
+# des parametres, des formules, des macros, des mots cles facteurs repetes
+# (y compris conditionnes par des regles : calc_fonction / COMB),
+# des blocs (mode_iter_simult,calc_char_seisme), un defi_valeur, un parametre.
+#
+#
+# Il faudra y associer quelques recommandations pour la recette :
+# - verifier qu en ouvrant le .com0, il demande bien a browser le .comm puis, en cascade, le .11
+# - verifier qu on peut bien supprimer une commande, un mot cle simple et facteur
+# - verifier les acces a la doc
+#
+#
+
+
+DEBUT(CODE=_F(NOM='EFICA01A',NIV_PUB_WEB='INTERNET',VISU_EFICAS='NON'),)
+
+MAILLAGE=LIRE_MAILLAGE()
+
+MAILLAGE=DEFI_GROUP(reuse=MAILLAGE,
+ MAILLAGE=MAILLAGE,
+ CREA_GROUP_NO=(_F(NOEUD='NO2',
+ NOM='MASSES',),
+ _F(NOEUD='NO1',
+ NOM='ENCASTRE',),),)
+
+MAILLA2=LIRE_MAILLAGE(UNITE=21,)
+
+MODELE=AFFE_MODELE(MAILLAGE=MAILLAGE,
+ AFFE=(_F(GROUP_MA='RESSORT',
+ PHENOMENE='MECANIQUE',
+ MODELISATION='DIS_T',),
+ _F(GROUP_NO='MASSES',
+ PHENOMENE='MECANIQUE',
+ MODELISATION='DIS_T',),),)
+
+BICHOC=AFFE_MODELE(MAILLAGE=MAILLA2,
+ AFFE=(_F(GROUP_MA='RESSORTS',
+ PHENOMENE='MECANIQUE',
+ MODELISATION='DIS_T',),
+ _F(GROUP_NO=('MASSES1','MASSES2',),
+ PHENOMENE='MECANIQUE',
+ MODELISATION='DIS_T',),),)
+VAL = 98696.0
+
+
+CARA_ELE=AFFE_CARA_ELEM(MODELE=MODELE,
+ DISCRET=(_F(GROUP_MA='RESSORT',
+ REPERE='GLOBAL',
+ CARA='K_T_D_L',
+ VALE=(VAL,0.0,0.0,),),
+ _F(GROUP_NO='MASSES',
+ CARA='M_T_D_N',
+ VALE=25.0,),),)
+
+CARA_BIC=AFFE_CARA_ELEM(MODELE=BICHOC,
+ DISCRET=(_F(GROUP_MA='RESSORTS',
+ REPERE='GLOBAL',
+ CARA='K_T_D_L',
+ VALE=(VAL,0.0,0.0,),),
+ _F(GROUP_NO='MASSES1',
+ CARA='M_T_D_N',
+ VALE=25.0,),
+ _F(GROUP_NO='MASSES2',
+ CARA='M_T_D_N',
+ VALE=25.0,),),)
+
+CON_LIM=AFFE_CHAR_MECA(MODELE=MODELE,
+ DDL_IMPO=(_F(GROUP_NO='ENCASTRE',
+ DX=0.0,
+ DY=0.0,
+ DZ=0.0,),
+ _F(GROUP_NO='MASSES',
+ DY=0.0,
+ DZ=0.0,),),)
+
+CL_BICHO=AFFE_CHAR_MECA(MODELE=BICHOC,
+ DDL_IMPO=(_F(GROUP_NO='ENCBICHO',
+ DX=0.0,
+ DY=0.0,
+ DZ=0.0,),
+ _F(GROUP_NO=('MASSES1','MASSES2',),
+ DY=0.0,
+ DZ=0.0,),),)
+
+MACRO_MATR_ASSE(MODELE=MODELE,
+ CARA_ELEM=CARA_ELE,
+ CHARGE=CON_LIM,
+ NUME_DDL=CO('NUMEDDL'),
+ MATR_ASSE=(_F(MATRICE=CO('RIGIDITE'),
+ OPTION='RIGI_MECA',),
+ _F(MATRICE=CO('MASSE'),
+ OPTION='MASS_MECA',),),)
+
+MACRO_MATR_ASSE(MODELE=BICHOC,
+ CARA_ELEM=CARA_BIC,
+ CHARGE=CL_BICHO,
+ NUME_DDL=CO('NUMDDLC'),
+ MATR_ASSE=(_F(MATRICE=CO('RIGI_BIC'),
+ OPTION='RIGI_MECA',),
+ _F(MATRICE=CO('MASS_BIC'),
+ OPTION='MASS_MECA',),),)
+
+MODE_MEC=MODE_ITER_SIMULT(MATR_A=RIGIDITE,
+ MATR_B=MASSE,)
+
+MODE_MEC=NORM_MODE(reuse =MODE_MEC,
+ MODE=MODE_MEC,
+ NORME='MASS_GENE',)
+
+MODE_BIC=MODE_ITER_SIMULT(MATR_A=RIGI_BIC,
+ MATR_B=MASS_BIC,
+ METHODE='JACOBI',
+ OPTION='SANS',
+ CALC_FREQ=_F(OPTION='BANDE',
+ FREQ=(1.0,10.0,),),)
+
+MODE_BIC=NORM_MODE(reuse =MODE_BIC,
+ MODE=MODE_BIC,
+ NORME='MASS_GENE',)
+
+MODE_STA=MODE_STATIQUE(MATR_RIGI=RIGIDITE,
+ MATR_MASS=MASSE,
+ MODE_STAT=_F(TOUT='OUI',
+ AVEC_CMP='DX',),)
+
+MSTA_BIC=MODE_STATIQUE(MATR_RIGI=RIGI_BIC,
+ MATR_MASS=MASS_BIC,
+ MODE_STAT=_F(TOUT='OUI',
+ AVEC_CMP='DX',),)
+
+L_INST=DEFI_LIST_REEL(DEBUT=0.0,
+ INTERVALLE=_F(JUSQU_A=1.0,
+ PAS=1.E-4,),)
+
+OMEGAA=2.*pi*10.
+
+ACCE1 = FORMULE(VALE = 'sin(OMEGAA*INST)',
+ NOM_PARA='INST')
+
+ACCELER1=CALC_FONC_INTERP(FONCTION=ACCE1,
+ NOM_RESU='ACCE',
+ LIST_PARA=L_INST,
+ NOM_PARA = 'INST',
+ PROL_DROITE='LINEAIRE',
+ PROL_GAUCHE='LINEAIRE',)
+
+ACCE2 = FORMULE(VALE = '-sin(OMEGAA*INST)',
+ NOM_PARA='INST')
+
+ACCELER2=CALC_FONC_INTERP(FONCTION=ACCE2,
+ NOM_RESU='ACCE',
+ LIST_PARA=L_INST,
+ NOM_PARA = 'INST',
+ PROL_DROITE='LINEAIRE',
+ PROL_GAUCHE='LINEAIRE',)
+
+VITE1 = FORMULE(VALE = '-cos(OMEGAA*INST)/OMEGAA',
+ NOM_PARA='INST')
+
+VITESSE1=CALC_FONC_INTERP(FONCTION=VITE1,
+ NOM_RESU='VITE',
+ LIST_PARA=L_INST,
+ NOM_PARA = 'INST',
+ PROL_DROITE='LINEAIRE',
+ PROL_GAUCHE='LINEAIRE',)
+
+DEPL1 = FORMULE(VALE = '-sin(OMEGAA*INST)/(OMEGAA**2)',
+ NOM_PARA='INST')
+
+DEPLACE1=CALC_FONC_INTERP(FONCTION=DEPL1,
+ NOM_RESU='DEPL',
+ LIST_PARA=L_INST,
+ NOM_PARA = 'INST',
+ PROL_DROITE='LINEAIRE',
+ PROL_GAUCHE='LINEAIRE',)
+
+VITE2 = FORMULE(VALE = 'cos(OMEGAA*INST)/OMEGAA',
+ NOM_PARA='INST')
+
+VITESSE2=CALC_FONC_INTERP(FONCTION=VITE2,
+ NOM_RESU='VITE',
+ LIST_PARA=L_INST,
+ NOM_PARA = 'INST',
+ PROL_DROITE='LINEAIRE',
+ PROL_GAUCHE='LINEAIRE',)
+
+xx=2
+
+INCLUDE(UNITE=11,
+ INFO=1,)
+
+MUR=DEFI_OBSTACLE(TYPE='PLAN_Z',)
+
+TRAN_GE1=DYNA_TRAN_MODAL(METHODE='EULER',
+ MASS_GENE=MASS_GEN,
+ RIGI_GENE=RIGI_GEN,
+ AMOR_REDUIT=0.07,
+ MODE_STAT=MODE_STA,
+ INCREMENT=_F(INST_INIT=0.0,
+ INST_FIN=1.0,
+ PAS=2.0E-4,),
+ ARCHIVAGE=_F(PAS_ARCH=8,),
+ EXCIT=_F(VECT_GENE=VECT_X,
+ ACCE=ACCELER1,
+ VITE=VITESSE1,
+ DEPL=DEPLACE1,
+ MULT_APPUI='OUI',
+ DIRECTION=(1.0,0.0,0.0,),
+ NOEUD='NO1',),
+ CHOC=_F(INTITULE='NO2/MUR',
+ GROUP_NO_1='MASSES',
+ OBSTACLE=MUR,
+ ORIG_OBST=(-1.0,0.0,0.0,),
+ NORM_OBST=(0.0,0.0,1.0,),
+ JEU=1.1005,
+ RIGI_NOR=5.76E7,
+ AMOR_NOR=0.0,
+ RIGI_TAN=0.0,
+ COULOMB=0.0,),)
+
+MULT_X1=CALC_CHAR_SEISME(MATR_MASS=MASS_BIC,
+ DIRECTION=(1.0,0.0,0.0,),
+ MODE_STAT=MSTA_BIC,
+ NOEUD='NO1',)
+
+MULT_X2=CALC_CHAR_SEISME(MATR_MASS=MASS_BIC,
+ DIRECTION=(1.0,0.0,0.0,),
+ MODE_STAT=MSTA_BIC,
+ NOEUD='NO11',)
+
+MACRO_PROJ_BASE(BASE=MODE_BIC,
+ MATR_ASSE_GENE=(_F(MATRICE=CO('MGEN_BIC'),
+ MATR_ASSE=MASS_BIC,),
+ _F(MATRICE=CO('RGEN_BIC'),
+ MATR_ASSE=RIGI_BIC,),),
+ VECT_ASSE_GENE=(_F(VECTEUR=CO('VECT_X1'),
+ VECT_ASSE=MULT_X1,),
+ _F(VECTEUR=CO('VECT_X2'),
+ VECT_ASSE=MULT_X2,),),)
+
+GRILLE=DEFI_OBSTACLE(TYPE='BI_PLAN_Z',)
+
+MAILLA3=LIRE_MAILLAGE(UNITE=22,)
+
+FIN()
--- /dev/null
+from Numeric import size
+
+DEBUT()
+
+# Definition des parametres de l'excitation sinusoidale
+freq=1500.0
+periode=1.0/freq
+pas=periode/100.0
+
+LISTTM=DEFI_LIST_REEL(DEBUT=0.0*periode,
+ INTERVALLE=_F(JUSQU_A=100.0*periode,
+ PAS=pas,),);
+
+LISTRD=DEFI_LIST_REEL(DEBUT=(98.0)*periode+pas,
+ INTERVALLE=_F(JUSQU_A=(100.0)*periode,
+ PAS=pas,),);
+
+FIN()
--- /dev/null
+ACCELH1=DEFI_FONCTION(NOM_PARA='INST',
+ VALE=
+ (
+ 0.0 , 0.0 ,
+ 5.000000000000000E-03 , 1.384945820672120E-02 ,
+ 1.000000000000000E-02 , 1.382919843991470E-02 ,
+ 1.500000000000000E-02 , 1.382973754982250E-02 ,
+ 2.000000000000000E-02 , 1.383338152282280E-02 ,
+ 2.500000000000000E-02 , 1.393648950771420E-02 ,
+ 3.000000000000000E-02 , 1.434779984741860E-02 ,
+ 3.500000000000000E-02 , 1.512950713231800E-02 ,
+ 4.000000000000000E-02 , 1.614535272002630E-02 ,
+ 4.500000000000000E-02 , 1.731995083544010E-02 ,
+ 5.000000000000000E-02 , 1.859624623558040E-02 ,
+ 5.500000000000000E-02 , 1.953967672923960E-02 ,
+ 6.000000000000000E-02 , 1.941781110418540E-02 ,
+ 6.500000000000000E-02 , 1.786343830924350E-02 ,
+ 7.000000000000001E-02 , 1.516191250319950E-02 ,
+ 7.500000000000000E-02 , 1.188464893531830E-02 ,
+ 8.000000000000000E-02 , 8.604671706807470E-03 ,
+ 8.500000000000001E-02 , 5.843238016204390E-03 ,
+ 9.000000000000000E-02 , 3.844393537029640E-03 ,
+ 9.500000000000000E-02 , 2.578831760615030E-03 ,
+ 0.1 , 2.285337760842440E-03 ,
+ 0.105 , 3.429647164261850E-03 ,
+ 0.11 , 5.693975593542530E-03 ,
+ 0.115 , 8.059677068797949E-03 ,
+ 0.12 , 1.074690536157120E-02 ,
+ 0.125 , 1.570430547663250E-02 ,
+ 0.13 , 2.370085802024690E-02 ,
+ 0.135 , 3.228248728765840E-02 ,
+ 0.14 , 3.854420890726100E-02 ,
+ 0.145 , 4.255105840524570E-02 ,
+ 0.15 , 4.542487497977820E-02 ,
+ 0.155 , 4.522394778102340E-02 ,
+ 0.16 , 3.829095514459380E-02 ,
+ 0.165 , 2.483633029107950E-02 ,
+ 0.17 , 9.962011825963081E-03 ,
+ 0.175 , -1.690338763720670E-03 ,
+ 0.18 , -9.628765294085771E-03 ,
+ 0.185 , -1.491533457160890E-02 ,
+ 0.19 , -1.675574249783150E-02 ,
+ 0.195 , -1.397302390604700E-02 ,
+ 0.2 , -8.394257392452909E-03 ,
+ 0.205 , -4.066198655663860E-03 ,
+ 0.21 , -2.824511823738000E-03 ,
+ 0.215 , -2.617183840945080E-03 ,
+ 0.22 , -1.417346427510000E-03 ,
+ 0.225 , -1.143002215953450E-03 ,
+ 0.23 , -5.114862179520550E-03 ,
+ 0.235 , -1.257393226409120E-02 ,
+ 0.24 , -2.009825306788950E-02 ,
+ 0.245 , -2.922606396367100E-02 ,
+ 0.25 , -4.681398923377460E-02 ,
+ 0.255 , -7.440515051138789E-02 ,
+ 0.26 , -0.10334790104033 ,
+ 0.265 , -0.12586697159281 ,
+ 0.27 , -0.14387794464775 ,
+ 0.275 , -0.15814759425273 ,
+ 0.28 , -0.15645166862504 ,
+ 0.285 , -0.12686021613717 ,
+ 0.29 , -7.870738657620450E-02 ,
+ 0.295 , -3.337529798013800E-02 ,
+ 0.3 , 4.960493246599410E-03 ,
+ 0.305 , 5.045559596258160E-02 ,
+ 0.31 , 0.105226085321393 ,
+ 0.315 , 0.149377859842677 ,
+ 0.32 , 0.169404090056596 ,
+ 0.325 , 0.175768658339062 ,
+ 0.33 , 0.179795570216475 ,
+ 0.335 , 0.172362231098084 ,
+ 0.34 , 0.14178782193451 ,
+ 0.345 , 9.600009720172401E-02 ,
+ 0.35 , 4.821844915823450E-02 ,
+ 0.355 , -4.337533256019430E-03 ,
+ 0.36 , -6.584719156367530E-02 ,
+ 0.365 , -0.11836425870338 ,
+ 0.37 , -0.13733576068719 ,
+ 0.375 , -0.12352979806305 ,
+ 0.38 , -9.647458189678811E-02 ,
+ 0.385 , -6.215705630868780E-02 ,
+ 0.39 , -1.230416228554950E-02 ,
+ 0.395 , 4.641921735700460E-02 ,
+ 0.4 , 8.859572962085120E-02 ,
+ 0.405 , 9.988862929152570E-02 ,
+ 0.41 , 9.014811266775360E-02 ,
+ 0.415 , 7.203047941527541E-02 ,
+ 0.42 , 4.502398610270280E-02 ,
+ 0.425 , 6.797639622722420E-03 ,
+ 0.43 , -3.515202910758360E-02 ,
+ 0.435 , -7.008994299356780E-02 ,
+ 0.44 , -9.184195885494270E-02 ,
+ 0.445 , -9.764578216442391E-02 ,
+ 0.45 , -8.980199943709211E-02 ,
+ 0.455 , -7.844678621890611E-02 ,
+ 0.46 , -7.092648374585479E-02 ,
+ 0.465 , -5.916134617989510E-02 ,
+ 0.47 , -2.956966177372460E-02 ,
+ 0.475 , 1.671374368998170E-02 ,
+ 0.48 , 6.681414337976969E-02 ,
+ 0.485 , 0.115921896874314 ,
+ 0.49 , 0.168522035427266 ,
+ 0.495 , 0.222448388891968 ,
+ 0.5 , 0.268501345352512 ,
+ 0.505 , 0.304492502191568 ,
+ 0.51 , 0.333201521434027 ,
+ 0.515 , 0.348912055073103 ,
+ 0.52 , 0.344336194210705 ,
+ 0.525 , 0.328357457992693 ,
+ 0.53 , 0.315639958020935 ,
+ 0.535 , 0.298753776631336 ,
+ 0.54 , 0.252828404979867 ,
+ 0.545 , 0.169993172714936 ,
+ 0.55 , 6.727059721322880E-02 ,
+ 0.555 , -4.209915010595060E-02 ,
+ 0.56 , -0.16027870746769 ,
+ 0.565 , -0.28051898189652 ,
+ 0.57 , -0.37473468426368 ,
+ 0.575 , -0.41761046311846 ,
+ 0.58 , -0.40704487960185 ,
+ 0.585 , -0.35317881167887 ,
+ 0.59 , -0.26473865427636 ,
+ 0.595 , -0.15439054042026 ,
+ 0.6 , -4.069603171914010E-02 ,
+ 0.605 , 6.408493301865420E-02 ,
+ 0.61 , 0.155029022019142 ,
+ 0.615 , 0.221244653075603 ,
+ 0.62 , 0.250448298949297 ,
+ 0.625 , 0.2498283906321 ,
+ 0.63 , 0.239493456134941 ,
+ 0.635 , 0.218886088833644 ,
+ 0.64 , 0.164337222785859 ,
+ 0.645 , 7.035013146739150E-02 ,
+ 0.65 , -3.065825126167990E-02 ,
+ 0.655 , -0.10313193025801 ,
+ 0.66 , -0.14127712726139 ,
+ 0.665 , -0.15425776005121 ,
+ 0.67 , -0.14167316851909 ,
+ 0.675 , -0.10137097186279 ,
+ 0.68 , -4.328536800004760E-02 ,
+ 0.685 , 2.048801937177380E-02 ,
+ 0.69 , 8.302000641121640E-02 ,
+ 0.695 , 0.129331142992423 ,
+ 0.7 , 0.139601455006784 ,
+ 0.705 , 0.121227983591054 ,
+ 0.71 , 0.113005236382458 ,
+ 0.715 , 0.1379818615802 ,
+ 0.72 , 0.176308826146499 ,
+ 0.725 , 0.205232483015008 ,
+ 0.73 , 0.236700670002903 ,
+ 0.735 , 0.28518726999873 ,
+ 0.74 , 0.325155532319882 ,
+ 0.745 , 0.319888795846513 ,
+ 0.75 , 0.275055725375209 ,
+ 0.755 , 0.223753796143942 ,
+ 0.76 , 0.172075077677344 ,
+ 0.765 , 0.102710116433296 ,
+ 0.77 , 2.458158105150330E-02 ,
+ 0.775 , -2.772090362464080E-02 ,
+ 0.78 , -4.579263759539020E-02 ,
+ 0.785 , -5.563702283874560E-02 ,
+ 0.79 , -6.754184615076410E-02 ,
+ 0.795 , -5.871706032442020E-02 ,
+ 0.8 , -1.692509300464670E-02 ,
+ 0.805 , 3.809918865159700E-02 ,
+ 0.81 , 9.363878798804159E-02 ,
+ 0.815 , 0.168712355371222 ,
+ 0.82 , 0.278043767236916 ,
+ 0.825 , 0.400260018759297 ,
+ 0.83 , 0.503549901131272 ,
+ 0.835 , 0.576593704222666 ,
+ 0.84 , 0.611464547720466 ,
+ 0.845 , 0.581774928421811 ,
+ 0.85 , 0.466685485187298 ,
+ 0.855 , 0.279469592461024 ,
+ 0.86 , 4.649599505060000E-02 ,
+ 0.865 , -0.22611474655397 ,
+ 0.87 , -0.53742100922433 ,
+ 0.875 , -0.85597468112981 ,
+ 0.88 , -1.12858445463436 ,
+ 0.885 , -1.31964097839003 ,
+ 0.89 , -1.41810357733099 ,
+ 0.895 , -1.4129005458435 ,
+ 0.9 , -1.29047173798494 ,
+ 0.905 , -1.05919909208997 ,
+ 0.91 , -0.75411881989804 ,
+ 0.915 , -0.41406737678731 ,
+ 0.92 , -7.194360976911091E-02 ,
+ 0.925 , 0.232932654611786 ,
+ 0.93 , 0.457448784206965 ,
+ 0.935 , 0.581369260987795 ,
+ 0.94 , 0.617884772522987 ,
+ 0.945 , 0.588638581913632 ,
+ 0.95 , 0.499594354895777 ,
+ 0.955 , 0.351854051263097 ,
+ 0.96 , 0.167285288529307 ,
+ 0.965 , -1.354817972678980E-02 ,
+ 0.97 , -0.16506107206104 ,
+ 0.975 , -0.30020976135865 ,
+ 0.98 , -0.44800006523462 ,
+ 0.985 , -0.60571664044792 ,
+ 0.99 , -0.72882650966723 ,
+ 0.995 , -0.78150351703968 ,
+ 1.0 , -0.78325351768449 ,
+ 1.005 , -0.7804638307994 ,
+ 1.01 , -0.77907901470961 ,
+ 1.015 , -0.74044922924701 ,
+ 1.02 , -0.64794816611668 ,
+ 1.025 , -0.53653982368824 ,
+ 1.03 , -0.43590944296704 ,
+ 1.035 , -0.32196595199848 ,
+ 1.04 , -0.15803623495676 ,
+ 1.045 , 4.418314484939760E-02 ,
+ 1.05 , 0.242865235492215 ,
+ 1.055 , 0.422391619487335 ,
+ 1.06 , 0.586878740356939 ,
+ 1.065 , 0.710461681206935 ,
+ 1.07 , 0.741340861669433 ,
+ 1.075 , 0.655713664787049 ,
+ 1.08 , 0.470616913700976 ,
+ 1.085 , 0.20656145315631 ,
+ 1.09 , -0.12112308548803 ,
+ 1.095 , -0.47118919290136 ,
+ 1.1 , -0.77786799146278 ,
+ 1.105 , -0.99394827732625 ,
+ 1.11 , -1.10304473601585 ,
+ 1.115 , -1.08949447190265 ,
+ 1.12 , -0.93583496154967 ,
+ 1.125 , -0.65727377808015 ,
+ 1.13 , -0.30107834922153 ,
+ 1.135 , 9.620828359443580E-02 ,
+ 1.14 , 0.514013416080853 ,
+ 1.145 , 0.90642132985077 ,
+ 1.15 , 1.20374217441116 ,
+ 1.155 , 1.37257710404611 ,
+ 1.16 , 1.43303286111545 ,
+ 1.165 , 1.40075730037501 ,
+ 1.17 , 1.25846296855354 ,
+ 1.175 , 1.00832137286648 ,
+ 1.18 , 0.706462116642059 ,
+ 1.185 , 0.413493607411118 ,
+ 1.19 , 0.148293682071222 ,
+ 1.195 , -8.190792579850280E-02 ,
+ 1.2 , -0.25000976533114 ,
+ 1.205 , -0.34497838239222 ,
+ 1.21 , -0.39991632301279 ,
+ 1.215 , -0.44361527764964 ,
+ 1.22 , -0.45948891812011 ,
+ 1.225 , -0.43276591909851 ,
+ 1.23 , -0.39819165775721 ,
+ 1.235 , -0.38929817650006 ,
+ 1.24 , -0.37545880341991 ,
+ 1.245 , -0.30998449197619 ,
+ 1.25 , -0.21624700688801 ,
+ 1.255 , -0.16343645166853 ,
+ 1.26 , -0.17391443905321 ,
+ 1.265 , -0.21919282258219 ,
+ 1.27 , -0.29688345097037 ,
+ 1.275 , -0.43984931085551 ,
+ 1.28 , -0.64071500818847 ,
+ 1.285 , -0.82875858278133 ,
+ 1.29 , -0.93796346189032 ,
+ 1.295 , -0.949512523725 ,
+ 1.3 , -0.857601537535 ,
+ 1.305 , -0.65014691427727 ,
+ 1.31 , -0.34930571456794 ,
+ 1.315 , -2.752743937664530E-02 ,
+ 1.32 , 0.246332435481473 ,
+ 1.325 , 0.45001279080827 ,
+ 1.33 , 0.58297681321004 ,
+ 1.335 , 0.636158064092188 ,
+ 1.34 , 0.611598530544366 ,
+ 1.345 , 0.543575003876384 ,
+ 1.35 , 0.472132760127251 ,
+ 1.355 , 0.4099056501601 ,
+ 1.36 , 0.349344621324927 ,
+ 1.365 , 0.282806527352702 ,
+ 1.37 , 0.200676817565078 ,
+ 1.375 , 9.097626989587490E-02 ,
+ 1.38 , -3.844874520206900E-02 ,
+ 1.385 , -0.1485730750104 ,
+ 1.39 , -0.19431957586841 ,
+ 1.395 , -0.15348271845224 ,
+ 1.4 , -2.614043201034680E-02 ,
+ 1.405 , 0.177537986918302 ,
+ 1.41 , 0.435115227256899 ,
+ 1.415 , 0.705841641151383 ,
+ 1.42 , 0.939450691097474 ,
+ 1.425 , 1.09606995057385 ,
+ 1.43 , 1.16508829271638 ,
+ 1.435 , 1.17152904343664 ,
+ 1.44 , 1.15677325221222 ,
+ 1.445 , 1.14474618562157 ,
+ 1.45 , 1.13563604509728 ,
+ 1.455 , 1.136131797716 ,
+ 1.46 , 1.17059034109195 ,
+ 1.465 , 1.24349566378999 ,
+ 1.47 , 1.31555125128714 ,
+ 1.475 , 1.34451073520553 ,
+ 1.48 , 1.32767985662737 ,
+ 1.485 , 1.27338631745007 ,
+ 1.49 , 1.15790168079473 ,
+ 1.495 , 0.956521791996786 ,
+ 1.5 , 0.698290997947875 ,
+ 1.505 , 0.438367846650034 ,
+ 1.51 , 0.189519144568428 ,
+ 1.515 , -6.309865148517370E-02 ,
+ 1.52 , -0.2907946493572 ,
+ 1.525 , -0.43414032419491 ,
+ 1.53 , -0.49035140435209 ,
+ 1.535 , -0.51769162343818 ,
+ 1.54 , -0.53944953961898 ,
+ 1.545 , -0.51762829963883 ,
+ 1.55 , -0.44905875024602 ,
+ 1.555 , -0.41047655284131 ,
+ 1.56 , -0.45801991852189 ,
+ 1.565 , -0.5452728301642 ,
+ 1.57 , -0.60180223196739 ,
+ 1.575 , -0.64090769354799 ,
+ 1.58 , -0.71776674993069 ,
+ 1.585 , -0.81770575898523 ,
+ 1.59 , -0.86693741584294 ,
+ 1.595 , -0.84067997754846 ,
+ 1.6 , -0.78353488744314 ,
+ 1.605 , -0.71744286940014 ,
+ 1.61 , -0.59774454986713 ,
+ 1.615 , -0.38171240617319 ,
+ 1.62 , -8.924731070437070E-02 ,
+ 1.625 , 0.229074480135456 ,
+ 1.63 , 0.542610098773165 ,
+ 1.635 , 0.829628497520742 ,
+ 1.64 , 1.04494574127203 ,
+ 1.645 , 1.13156269562082 ,
+ 1.65 , 1.05624249517991 ,
+ 1.655 , 0.819935992458342 ,
+ 1.66 , 0.449565343322086 ,
+ 1.665 , -2.180707598866940E-03 ,
+ 1.67 , -0.46040931126981 ,
+ 1.675 , -0.85138688793934 ,
+ 1.68 , -1.12388943755807 ,
+ 1.685 , -1.24657385888904 ,
+ 1.69 , -1.20179685962043 ,
+ 1.695 , -0.99981038351547 ,
+ 1.7 , -0.69163368557204 ,
+ 1.705 , -0.34742052586021 ,
+ 1.71 , -1.646326697056420E-02 ,
+ 1.715 , 0.283945578116849 ,
+ 1.72 , 0.543028107021654 ,
+ 1.725 , 0.737133979583192 ,
+ 1.73 , 0.84487160610996 ,
+ 1.735 , 0.870212972351319 ,
+ 1.74 , 0.834700198404195 ,
+ 1.745 , 0.747170431789498 ,
+ 1.75 , 0.594410232927394 ,
+ 1.755 , 0.367486332109475 ,
+ 1.76 , 8.962182967477010E-02 ,
+ 1.765 , -0.1883067260291 ,
+ 1.77 , -0.41613375697166 ,
+ 1.775 , -0.56543072263443 ,
+ 1.78 , -0.62930681455469 ,
+ 1.785 , -0.60967253780204 ,
+ 1.79 , -0.50702726496872 ,
+ 1.795 , -0.32533912503295 ,
+ 1.8 , -9.026946700126549E-02 ,
+ 1.805 , 0.145429511003968 ,
+ 1.81 , 0.330819022676906 ,
+ 1.815 , 0.45222714352563 ,
+ 1.82 , 0.524252434401283 ,
+ 1.825 , 0.544685292311812 ,
+ 1.83 , 0.482635967462947 ,
+ 1.835 , 0.323118603668567 ,
+ 1.84 , 9.999214308770410E-02 ,
+ 1.845 , -0.1356321129448 ,
+ 1.85 , -0.36128518628156 ,
+ 1.855 , -0.57322505412043 ,
+ 1.86 , -0.74566937227067 ,
+ 1.865 , -0.831111234663 ,
+ 1.87 , -0.79988891088422 ,
+ 1.875 , -0.65798317740384 ,
+ 1.88 , -0.42968513644553 ,
+ 1.885 , -0.14457167669537 ,
+ 1.89 , 0.161701689894838 ,
+ 1.895 , 0.456458659481019 ,
+ 1.9 , 0.720641473510481 ,
+ 1.905 , 0.93536449279502 ,
+ 1.91 , 1.06690148982661 ,
+ 1.915 , 1.08832474904443 ,
+ 1.92 , 1.00876475369484 ,
+ 1.925 , 0.854457298011041 ,
+ 1.93 , 0.628173977645005 ,
+ 1.935 , 0.322546940276438 ,
+ 1.94 , -2.596888473873320E-02 ,
+ 1.945 , -0.33525384338564 ,
+ 1.95 , -0.5416882826646 ,
+ 1.955 , -0.63460201942509 ,
+ 1.96 , -0.61577036509424 ,
+ 1.965 , -0.46445342826001 ,
+ 1.97 , -0.17427091738081 ,
+ 1.975 , 0.197608608481982 ,
+ 1.98 , 0.551300717211572 ,
+ 1.985 , 0.807313151449369 ,
+ 1.99 , 0.929291756112952 ,
+ 1.995 , 0.900203655372628 ,
+ 2.0 , 0.711960914602783 ,
+ 2.005 , 0.386125888668035 ,
+ 2.01 , -1.664845298933290E-02 ,
+ 2.015 , -0.42003837834356 ,
+ 2.02 , -0.75822166854004 ,
+ 2.025 , -0.97936810396973 ,
+ 2.03 , -1.0426579951744 ,
+ 2.035 , -0.93057240999803 ,
+ 2.04 , -0.66368034717177 ,
+ 2.045 , -0.29110991423144 ,
+ 2.05 , 0.119136312621438 ,
+ 2.055 , 0.505291402538494 ,
+ 2.06 , 0.880216899892637 ,
+ 2.065 , 1.20828770980265 ,
+ 2.07 , 1.46849325860208 ,
+ 2.075 , 1.67233522841001 ,
+ 2.08 , 1.84159238892188 ,
+ 2.085 , 1.97017314302929 ,
+ 2.09 , 2.02820005370812 ,
+ 2.095 , 2.00307389537606 ,
+ 2.1 , 1.90918679712901 ,
+ 2.105 , 1.7492164388665 ,
+ 2.11 , 1.49601732028444 ,
+ 2.115 , 1.13320644545655 ,
+ 2.12 , 0.691534368057989 ,
+ 2.125 , 0.222522846896641 ,
+ 2.13 , -0.2568718835065 ,
+ 2.135 , -0.73270869895797 ,
+ 2.14 , -1.16691560085841 ,
+ 2.145 , -1.52131308342383 ,
+ 2.15 , -1.77830659090987 ,
+ 2.155 , -1.94190868704924 ,
+ 2.16 , -2.01807428134882 ,
+ 2.165 , -2.01753841723068 ,
+ 2.17 , -1.96550102271951 ,
+ 2.175 , -1.88172547074643 ,
+ 2.18 , -1.76181108149962 ,
+ 2.185 , -1.60314470865115 ,
+ 2.19 , -1.43287068566641 ,
+ 2.195 , -1.27868078783724 ,
+ 2.2 , -1.12992856906385 ,
+ 2.205 , -0.96854903020236 ,
+ 2.21 , -0.82469988669093 ,
+ 2.215 , -0.75306712540506 ,
+ 2.22 , -0.75949831264927 ,
+ 2.225 , -0.80266627698916 ,
+ 2.23 , -0.86825465400046 ,
+ 2.235 , -0.98190873939491 ,
+ 2.24 , -1.13332846537187 ,
+ 2.245 , -1.24587809111606 ,
+ 2.25 , -1.25403636722243 ,
+ 2.255 , -1.16774949125882 ,
+ 2.26 , -1.02737996901608 ,
+ 2.265 , -0.83618584315821 ,
+ 2.27 , -0.58078051378866 ,
+ 2.275 , -0.28886675266917 ,
+ 2.28 , -1.584903466322660E-02 ,
+ 2.285 , 0.243494185775485 ,
+ 2.29 , 0.493747779128152 ,
+ 2.295 , 0.763367558765503 ,
+ 2.3 , 1.04659160151311 ,
+ 2.305 , 1.31787059651459 ,
+ 2.31 , 1.55330513693362 ,
+ 2.315 , 1.72708398800512 ,
+ 2.32 , 1.80403390270411 ,
+ 2.325 , 1.74474528448072 ,
+ 2.33 , 1.51781565889812 ,
+ 2.335 , 1.11765857002866 ,
+ 2.34 , 0.582482410154426 ,
+ 2.345 , -9.718428438488540E-03 ,
+ 2.35 , -0.57168637020167 ,
+ 2.355 , -1.03230607359137 ,
+ 2.36 , -1.33718623748091 ,
+ 2.365 , -1.44694517260007 ,
+ 2.37 , -1.35098612723151 ,
+ 2.375 , -1.07661964039704 ,
+ 2.38 , -0.67815732332436 ,
+ 2.385 , -0.22427774359532 ,
+ 2.39 , 0.206546911873295 ,
+ 2.395 , 0.541628296955107 ,
+ 2.4 , 0.739725635914114 ,
+ 2.405 , 0.792688071679571 ,
+ 2.41 , 0.699855261818748 ,
+ 2.415 , 0.460345996951087 ,
+ 2.42 , 9.825062680758330E-02 ,
+ 2.425 , -0.32686436332366 ,
+ 2.43 , -0.75151572607261 ,
+ 2.435 , -1.13800924040631 ,
+ 2.44 , -1.46265919709476 ,
+ 2.445 , -1.69312259897435 ,
+ 2.45 , -1.79655595938503 ,
+ 2.455 , -1.76112116582848 ,
+ 2.46 , -1.59504402395201 ,
+ 2.465 , -1.31375304224191 ,
+ 2.47 , -0.94339622712974 ,
+ 2.475 , -0.5311872307141 ,
+ 2.48 , -0.13652655158703 ,
+ 2.485 , 0.191652831784399 ,
+ 2.49 , 0.427316277261529 ,
+ 2.495 , 0.565105289247264 ,
+ 2.5 , 0.614388715344672 ,
+ 2.505 , 0.595214227948157 ,
+ 2.51 , 0.537482815214678 ,
+ 2.515 , 0.480599475426244 ,
+ 2.52 , 0.461418219827792 ,
+ 2.525 , 0.490351150400196 ,
+ 2.53 , 0.544926077525614 ,
+ 2.535 , 0.597359901626847 ,
+ 2.54 , 0.63915145270988 ,
+ 2.545 , 0.666359147512914 ,
+ 2.55 , 0.659549902572926 ,
+ 2.555 , 0.607653814797886 ,
+ 2.56 , 0.542274304956947 ,
+ 2.565 , 0.514978623780516 ,
+ 2.57 , 0.542507936778163 ,
+ 2.575 , 0.605343596447052 ,
+ 2.58 , 0.694971250554721 ,
+ 2.585 , 0.820564438850225 ,
+ 2.59 , 0.964525817889196 ,
+ 2.595 , 1.07728875105342 ,
+ 2.6 , 1.13416623229962 ,
+ 2.605 , 1.16046452303612 ,
+ 2.61 , 1.18333170206295 ,
+ 2.615 , 1.19818806982642 ,
+ 2.62 , 1.2055342011362 ,
+ 2.625 , 1.23921335799247 ,
+ 2.63 , 1.32082369230339 ,
+ 2.635 , 1.41353565810184 ,
+ 2.64 , 1.45647248242833 ,
+ 2.645 , 1.42296156176653 ,
+ 2.65 , 1.31247243180803 ,
+ 2.655 , 1.10982597617917 ,
+ 2.66 , 0.796193729509591 ,
+ 2.665 , 0.391525367264635 ,
+ 2.67 , -5.039209232008630E-02 ,
+ 2.675 , -0.48551296055089 ,
+ 2.68 , -0.89084690987514 ,
+ 2.685 , -1.24148991258587 ,
+ 2.69 , -1.50817716119153 ,
+ 2.695 , -1.67597297557138 ,
+ 2.7 , -1.74058611919401 ,
+ 2.705 , -1.69018703360535 ,
+ 2.71 , -1.51441737441596 ,
+ 2.715 , -1.22691360409733 ,
+ 2.72 , -0.85820811206465 ,
+ 2.725 , -0.43656402639097 ,
+ 2.73 , -1.877591162527850E-03 ,
+ 2.735 , 0.3722134714064 ,
+ 2.74 , 0.604368486493566 ,
+ 2.745 , 0.654206094948509 ,
+ 2.75 , 0.520823349815255 ,
+ 2.755 , 0.204565302761595 ,
+ 2.76 , -0.24284766157643 ,
+ 2.765 , -0.75311719985656 ,
+ 2.77 , -1.25324781337662 ,
+ 2.775 , -1.6520239944361 ,
+ 2.78 , -1.91175925323649 ,
+ 2.785 , -2.02042853839568 ,
+ 2.79 , -1.95654753001104 ,
+ 2.795 , -1.71189367332731 ,
+ 2.8 , -1.33217954914393 ,
+ 2.805 , -0.90169171320611 ,
+ 2.81 , -0.48741397679456 ,
+ 2.815 , -0.11957680209296 ,
+ 2.82 , 0.208180180447444 ,
+ 2.825 , 0.429754499753944 ,
+ 2.83 , 0.500373556893508 ,
+ 2.835 , 0.453923556202155 ,
+ 2.84 , 0.356589274872127 ,
+ 2.845 , 0.252756610751608 ,
+ 2.85 , 0.15368816142573 ,
+ 2.855 , 7.226479768245560E-02 ,
+ 2.86 , 3.888968358902120E-02 ,
+ 2.865 , 7.085947846528430E-02 ,
+ 2.87 , 0.145649387450817 ,
+ 2.875 , 0.221440328548596 ,
+ 2.88 , 0.271936154319643 ,
+ 2.885 , 0.285520971687156 ,
+ 2.89 , 0.244558483181686 ,
+ 2.895 , 0.131111505423643 ,
+ 2.9 , -4.976188706858230E-02 ,
+ 2.905 , -0.27342387270832 ,
+ 2.91 , -0.51955671330527 ,
+ 2.915 , -0.77083790776384 ,
+ 2.92 , -0.9909431240431 ,
+ 2.925 , -1.1326860598253 ,
+ 2.93 , -1.17530215375529 ,
+ 2.935 , -1.1315547074335 ,
+ 2.94 , -1.01461371409468 ,
+ 2.945 , -0.82697517656886 ,
+ 2.95 , -0.5923950948081 ,
+ 2.955 , -0.367250148284 ,
+ 2.96 , -0.19748847576212 ,
+ 2.965 , -8.287483750208639E-02 ,
+ 2.97 , 1.205615998459890E-03 ,
+ 2.975 , 6.700285876984650E-02 ,
+ 2.98 , 0.142475719272639 ,
+ 2.985 , 0.272732688275581 ,
+ 2.99 , 0.498473860216776 ,
+ 2.995 , 0.815246300242191 ,
+ 3.0 , 1.17850966940332 ,
+ 3.005 , 1.5365879707165 ,
+ 3.01 , 1.83696246846193 ,
+ 3.015 , 2.01683359177992 ,
+ 3.02 , 2.02473029766593 ,
+ 3.025 , 1.85763991176815 ,
+ 3.03 , 1.55996114842794 ,
+ 3.035 , 1.19160270003895 ,
+ 3.04 , 0.817034460759104 ,
+ 3.045 , 0.512897988315463 ,
+ 3.05 , 0.347660769303193 ,
+ 3.055 , 0.341161122643262 ,
+ 3.06 , 0.460638539442427 ,
+ 3.065 , 0.655193651694964 ,
+ 3.07 , 0.871495085561553 ,
+ 3.075 , 1.04025886670637 ,
+ 3.08 , 1.0866972125822 ,
+ 3.085 , 0.97592646156581 ,
+ 3.09 , 0.732149789609832 ,
+ 3.095 , 0.404350262104711 ,
+ 3.1 , 3.450811147404410E-02 ,
+ 3.105 , -0.3574143716153 ,
+ 3.11 , -0.67593382755679 ,
+ 3.115 , -0.85741138771834 ,
+ 3.12 , -0.88812837843921 ,
+ 3.125 , -0.79137979090702 ,
+ 3.13 , -0.59262327029812 ,
+ 3.135 , -0.31629865744548 ,
+ 3.14 , -7.233283133936310E-03 ,
+ 3.145 , 0.273183439196407 ,
+ 3.15 , 0.478066409829062 ,
+ 3.155 , 0.58805365224197 ,
+ 3.16 , 0.593648649534557 ,
+ 3.165 , 0.483000051126779 ,
+ 3.17 , 0.254384438681656 ,
+ 3.175 , -6.624305965878829E-02 ,
+ 3.18 , -0.4267275966133 ,
+ 3.185 , -0.81396009231636 ,
+ 3.19 , -1.1955849391981 ,
+ 3.195 , -1.53431204255614 ,
+ 3.2 , -1.79550741772338 ,
+ 3.205 , -1.95961471169112 ,
+ 3.21 , -2.02193224868472 ,
+ 3.215 , -1.98153140879109 ,
+ 3.22 , -1.83692731893728 ,
+ 3.225 , -1.59274123405354 ,
+ 3.23 , -1.26186737186096 ,
+ 3.235 , -0.85475661028155 ,
+ 3.24 , -0.37101324608578 ,
+ 3.245 , 0.104191797011254 ,
+ 3.25 , 0.444402436394787 ,
+ 3.255 , 0.80270823947836 ,
+ 3.26 , 1.15997110726162 ,
+ 3.265 , 1.495182836989 ,
+ 3.27 , 1.77744468860316 ,
+ 3.275 , 1.96545418255327 ,
+ 3.28 , 2.0238275806165 ,
+ 3.285 , 1.94070094966571 ,
+ 3.29 , 1.72718398222401 ,
+ 3.295 , 1.40473739766314 ,
+ 3.3 , 1.00200904728279 ,
+ 3.305 , 0.563540200278601 ,
+ 3.31 , 0.149874332156587 ,
+ 3.315 , -0.36080714644631 ,
+ 3.32 , -0.78705501088032 ,
+ 3.325 , -0.96779259671266 ,
+ 3.33 , -0.92388383903371 ,
+ 3.335 , -0.70129187312547 ,
+ 3.34 , -0.37633413832281 ,
+ 3.345 , -4.983212937679970E-02 ,
+ 3.35 , 0.182525585093038 ,
+ 3.355 , 0.262197946276188 ,
+ 3.36 , 0.176793782229557 ,
+ 3.365 , -5.176420413944920E-02 ,
+ 3.37 , -0.37933630972585 ,
+ 3.375 , -0.74271351288949 ,
+ 3.38 , -1.06375084817712 ,
+ 3.385 , -1.26478653529069 ,
+ 3.39 , -1.29047203891782 ,
+ 3.395 , -1.12256167350094 ,
+ 3.4 , -0.78075489126115 ,
+ 3.405 , -0.31359677016703 ,
+ 3.41 , 0.21274034122224 ,
+ 3.415 , 0.723339413347021 ,
+ 3.42 , 1.14216320992711 ,
+ 3.425 , 1.40285852862188 ,
+ 3.43 , 1.46353765010519 ,
+ 3.435 , 1.31751508169454 ,
+ 3.44 , 0.990610982524745 ,
+ 3.445 , 0.528518300724784 ,
+ 3.45 , -1.201464116995880E-02 ,
+ 3.455 , -0.56495490805526 ,
+ 3.46 , -1.06256507808036 ,
+ 3.465 , -1.45449004401942 ,
+ 3.47 , -1.72216993561753 ,
+ 3.475 , -1.87372425489139 ,
+ 3.48 , -1.93012616321294 ,
+ 3.485 , -1.92125770401275 ,
+ 3.49 , -1.88683182264746 ,
+ 3.495 , -1.86489427093378 ,
+ 3.5 , -1.87314769209702 ,
+ 3.505 , -1.90576881574645 ,
+ 3.51 , -1.947112317286 ,
+ 3.515 , -1.97949862409975 ,
+ 3.52 , -1.97797423254897 ,
+ 3.525 , -1.91218852417812 ,
+ 3.53 , -1.76423764925703 ,
+ 3.535 , -1.54024679422456 ,
+ 3.54 , -1.25875344890035 ,
+ 3.545 , -0.9338632056843 ,
+ 3.55 , -0.57694094749828 ,
+ 3.555 , -0.20814045746558 ,
+ 3.56 , 0.146206363036127 ,
+ 3.565 , 0.468653953534567 ,
+ 3.57 , 0.754631835985132 ,
+ 3.575 , 0.999185044322006 ,
+ 3.58 , 1.18633789810153 ,
+ 3.585 , 1.29531712809396 ,
+ 3.59 , 1.31308664187438 ,
+ 3.595 , 1.23731524907479 ,
+ 3.6 , 1.07118836166498 ,
+ 3.605 , 0.822464072088323 ,
+ 3.61 , 0.509927368235254 ,
+ 3.615 , 0.167608567620092 ,
+ 3.62 , -0.16136132010127 ,
+ 3.625 , -0.43756626339828 ,
+ 3.63 , -0.63523583164368 ,
+ 3.635 , -0.74542737572521 ,
+ 3.64 , -0.7756133968174 ,
+ 3.645 , -0.74811092815284 ,
+ 3.65 , -0.69606885610044 ,
+ 3.655 , -0.6565734770812 ,
+ 3.66 , -0.66248883313473 ,
+ 3.665 , -0.7327889886856 ,
+ 3.67 , -0.86178796221599 ,
+ 3.675 , -1.01484775035497 ,
+ 3.68 , -1.13874812866412 ,
+ 3.685 , -1.18063976569405 ,
+ 3.69 , -1.10015331426255 ,
+ 3.695 , -0.87258642642403 ,
+ 3.7 , -0.49606882241743 ,
+ 3.705 , -3.859866915145810E-03 ,
+ 3.71 , 0.536274174652005 ,
+ 3.715 , 1.04296495682297 ,
+ 3.72 , 1.44309287260192 ,
+ 3.725 , 1.67861157963259 ,
+ 3.73 , 1.7100067792938 ,
+ 3.735 , 1.52993945453465 ,
+ 3.74 , 1.17332394495836 ,
+ 3.745 , 0.705456146258253 ,
+ 3.75 , 0.19881090381289 ,
+ 3.755 , -0.27919234543845 ,
+ 3.76 , -0.66960551503829 ,
+ 3.765 , -0.93205155196248 ,
+ 3.77 , -1.05626273217395 ,
+ 3.775 , -1.05832450991158 ,
+ 3.78 , -0.96616376411692 ,
+ 3.785 , -0.81175596966687 ,
+ 3.79 , -0.6282915868819 ,
+ 3.795 , -0.43985996859902 ,
+ 3.8 , -0.25160708755689 ,
+ 3.805 , -5.670095344855360E-02 ,
+ 3.81 , 0.149245250303935 ,
+ 3.815 , 0.367246556878583 ,
+ 3.82 , 0.6001728423305 ,
+ 3.825 , 0.842651059699404 ,
+ 3.83 , 1.06576976559939 ,
+ 3.835 , 1.22584984073272 ,
+ 3.84 , 1.29118905603104 ,
+ 3.845 , 1.25131649498925 ,
+ 3.85 , 1.10483834283469 ,
+ 3.855 , 0.858719957928343 ,
+ 3.86 , 0.546596899968826 ,
+ 3.865 , 0.232913780073415 ,
+ 3.87 , -1.178392373167330E-02 ,
+ 3.875 , -0.13503158427521 ,
+ 3.88 , -0.10474649816556 ,
+ 3.885 , 8.615352677596511E-02 ,
+ 3.89 , 0.410679548743155 ,
+ 3.895 , 0.826698146053687 ,
+ 3.9 , 1.26554832994177 ,
+ 3.905 , 1.65499072160026 ,
+ 3.91 , 1.92591491458393 ,
+ 3.915 , 2.02174681879988 ,
+ 3.92 , 1.91690039738994 ,
+ 3.925 , 1.62485068724173 ,
+ 3.93 , 1.1855690119834 ,
+ 3.935 , 0.653037378513217 ,
+ 3.94 , 9.668746640223920E-02 ,
+ 3.945 , -0.4301741972333 ,
+ 3.95 , -0.83059880381395 ,
+ 3.955 , -1.06253651005356 ,
+ 3.96 , -1.12343783668418 ,
+ 3.965 , -1.02905594887957 ,
+ 3.97 , -0.81438063696053 ,
+ 3.975 , -0.53887343061785 ,
+ 3.98 , -0.27199822870815 ,
+ 3.985 , -6.791154597367660E-02 ,
+ 3.99 , 4.530742217552380E-02 ,
+ 3.995 , 6.262857784368379E-02 ,
+ 4.0 , 2.441344328897610E-03 ,
+ 4.005 , -9.190475922367920E-02 ,
+ 4.01 , -0.16297517487801 ,
+ 4.015 , -0.15723894800794 ,
+ 4.02 , -3.537253515270430E-02 ,
+ 4.025 , 0.193043922562747 ,
+ 4.03 , 0.526357119583793 ,
+ 4.035 , 0.929427363269694 ,
+ 4.04 , 1.34182501632519 ,
+ 4.045 , 1.69896106062951 ,
+ 4.05 , 1.94147299764395 ,
+ 4.055 , 2.02131168938189 ,
+ 4.06 , 1.91405493567929 ,
+ 4.065 , 1.62895808406502 ,
+ 4.07 , 1.20381890102136 ,
+ 4.075 , 0.692151048809337 ,
+ 4.08 , 0.156757509395021 ,
+ 4.085 , -0.38604102584051 ,
+ 4.09 , -0.84133083525009 ,
+ 4.095 , -1.156233699226 ,
+ 4.1 , -1.33230861444598 ,
+ 4.105 , -1.38570779035153 ,
+ 4.11 , -1.34124970345719 ,
+ 4.115 , -1.23546550701648 ,
+ 4.12 , -1.10801235519435 ,
+ 4.125 , -0.98248955079667 ,
+ 4.13 , -0.86003296814087 ,
+ 4.135 , -0.73178734822649 ,
+ 4.14 , -0.59090783838188 ,
+ 4.145 , -0.43318234968906 ,
+ 4.15 , -0.25684880447788 ,
+ 4.155 , -6.856986064204031E-02 ,
+ 4.16 , 0.113175698843399 ,
+ 4.165 , 0.263255109728613 ,
+ 4.17 , 0.35752664561249 ,
+ 4.175 , 0.378805103678297 ,
+ 4.18 , 0.323547996037049 ,
+ 4.185 , 0.206516861655614 ,
+ 4.19 , 5.649526699216110E-02 ,
+ 4.195 , -9.378626227851780E-02 ,
+ 4.2 , -0.21317600878937 ,
+ 4.205 , -0.27287940125587 ,
+ 4.21 , -0.25114165876958 ,
+ 4.215 , -0.14168231890677 ,
+ 4.22 , 4.361065500048250E-02 ,
+ 4.225 , 0.279918937448746 ,
+ 4.23 , 0.535273378579502 ,
+ 4.235 , 0.773588682574221 ,
+ 4.24 , 0.958219914615338 ,
+ 4.245 , 1.05647251768057 ,
+ 4.25 , 1.0429998608356 ,
+ 4.255 , 0.904048723430757 ,
+ 4.26 , 0.64342045751792 ,
+ 4.265 , 0.283827852947311 ,
+ 4.27 , -0.13946358577039 ,
+ 4.275 , -0.58422822501242 ,
+ 4.28 , -1.00040723456331 ,
+ 4.285 , -1.33261766567896 ,
+ 4.29 , -1.53443838788264 ,
+ 4.295 , -1.58333249912622 ,
+ 4.3 , -1.48186835325815 ,
+ 4.305 , -1.25134227914383 ,
+ 4.31 , -0.93134131663624 ,
+ 4.315 , -0.58023320392854 ,
+ 4.32 , -0.263068523183 ,
+ 4.325 , -3.234875382342560E-02 ,
+ 4.33 , 8.104457813070970E-02 ,
+ 4.335 , 6.646358030000100E-02 ,
+ 4.34 , -6.520527065940920E-02 ,
+ 4.345 , -0.27865084678943 ,
+ 4.35 , -0.52301393304868 ,
+ 4.355 , -0.75029273588902 ,
+ 4.36 , -0.92586132464525 ,
+ 4.365 , -1.02745479977821 ,
+ 4.37 , -1.045887182644 ,
+ 4.375 , -0.98998208526761 ,
+ 4.38 , -0.88247620098788 ,
+ 4.385 , -0.74513807964771 ,
+ 4.39 , -0.589693305748 ,
+ 4.395 , -0.4218623825717 ,
+ 4.4 , -0.24559350524832 ,
+ 4.405 , -5.960463612956680E-02 ,
+ 4.41 , 0.142717207535869 ,
+ 4.415 , 0.362879306116347 ,
+ 4.42 , 0.588751862423607 ,
+ 4.425 , 0.799650310566393 ,
+ 4.43 , 0.976747652586761 ,
+ 4.435 , 1.1062713323933 ,
+ 4.44 , 1.17888982115871 ,
+ 4.445 , 1.19440253536595 ,
+ 4.45 , 1.16760308413961 ,
+ 4.455 , 1.12503563953872 ,
+ 4.46 , 1.09428815021162 ,
+ 4.465 , 1.09605242115199 ,
+ 4.47 , 1.141397648121 ,
+ 4.475 , 1.22879693707608 ,
+ 4.48 , 1.34085300252377 ,
+ 4.485 , 1.44734590197994 ,
+ 4.49 , 1.51600244532524 ,
+ 4.495 , 1.52347176965462 ,
+ 4.5 , 1.4600805519962 ,
+ 4.505 , 1.32990917025988 ,
+ 4.51 , 1.15031027736352 ,
+ 4.515 , 0.950259774927611 ,
+ 4.52 , 0.764000212508228 ,
+ 4.525 , 0.620467212343643 ,
+ 4.53 , 0.53443313966959 ,
+ 4.535 , 0.504324479922065 ,
+ 4.54 , 0.515518988342075 ,
+ 4.545 , 0.5449123033391 ,
+ 4.55 , 0.565643760216133 ,
+ 4.555 , 0.553361701085439 ,
+ 4.56 , 0.492730481489852 ,
+ 4.565 , 0.380543114015636 ,
+ 4.57 , 0.224809165664267 ,
+ 4.575 , 4.198032082290820E-02 ,
+ 4.58 , -0.14747370012324 ,
+ 4.585 , -0.32583933056166 ,
+ 4.59 , -0.48349824002692 ,
+ 4.595 , -0.61801754775951 ,
+ 4.6 , -0.72971208292477 ,
+ 4.605 , -0.82083468227042 ,
+ 4.61 , -0.89775066250987 ,
+ 4.615 , -0.96888908984926 ,
+ 4.62 , -1.0384220049282 ,
+ 4.625 , -1.10412227179889 ,
+ 4.63 , -1.16142632685637 ,
+ 4.635 , -1.20605223114456 ,
+ 4.64 , -1.23228150965333 ,
+ 4.645 , -1.2330625103562 ,
+ 4.65 , -1.20312802686153 ,
+ 4.655 , -1.13793589958523 ,
+ 4.66 , -1.0287141764878 ,
+ 4.665 , -0.8641100498206 ,
+ 4.67 , -0.63938852378214 ,
+ 4.675 , -0.35979779312165 ,
+ 4.68 , -3.418457890781780E-02 ,
+ 4.685 , 0.32663500010105 ,
+ 4.69 , 0.70029027164172 ,
+ 4.695 , 1.04848934874391 ,
+ 4.7 , 1.32926995685333 ,
+ 4.705 , 1.5103149027497 ,
+ 4.71 , 1.56674966292037 ,
+ 4.715 , 1.47490809529175 ,
+ 4.72 , 1.22042977817102 ,
+ 4.725 , 0.812026061087399 ,
+ 4.73 , 0.280340511193259 ,
+ 4.735 , -0.25291232049697 ,
+ 4.74 , -0.74295446485739 ,
+ 4.745 , -1.21402870653543 ,
+ 4.75 , -1.61401924449385 ,
+ 4.755 , -1.89622337299338 ,
+ 4.76 , -2.02674956179211 ,
+ 4.765 , -1.98422913056168 ,
+ 4.77 , -1.76288837183623 ,
+ 4.775 , -1.38094808362694 ,
+ 4.78 , -0.88180280078288 ,
+ 4.785 , -0.32340693878301 ,
+ 4.79 , 0.309775095794083 ,
+ 4.795 , 0.96398882181726 ,
+ 4.8 , 1.46521480566007 ,
+ 4.805 , 1.77054065361263 ,
+ 4.81 , 1.87515908448363 ,
+ 4.815 , 1.80763374123846 ,
+ 4.82 , 1.61871625340312 ,
+ 4.825 , 1.37383254873989 ,
+ 4.83 , 1.14323155673988 ,
+ 4.835 , 0.984115330306988 ,
+ 4.84 , 0.925398091665492 ,
+ 4.845 , 0.966346779872473 ,
+ 4.85 , 1.08319151549769 ,
+ 4.855 , 1.23351422222229 ,
+ 4.86 , 1.36203968864373 ,
+ 4.865 , 1.41500821627328 ,
+ 4.87 , 1.35632626255014 ,
+ 4.875 , 1.17338649661648 ,
+ 4.88 , 0.873766424591019 ,
+ 4.885 , 0.482332773802851 ,
+ 4.89 , 3.923546396876550E-02 ,
+ 4.895 , -0.22463035892901 ,
+ 4.9 , -0.44775774321397 ,
+ 4.905 , -0.63337252960387 ,
+ 4.91 , -0.77214474283379 ,
+ 4.915 , -0.86139644715887 ,
+ 4.92 , -0.90539713757332 ,
+ 4.925 , -0.91457475953945 ,
+ 4.93 , -0.90292943826226 ,
+ 4.935 , -0.88570153051275 ,
+ 4.94 , -0.87839307255918 ,
+ 4.945 , -0.89582516241653 ,
+ 4.95 , -0.95014576706764 ,
+ 4.955 , -1.0485044185337 ,
+ 4.96 , -1.1912694657772 ,
+ 4.965 , -1.3708025639651 ,
+ 4.97 , -1.57077187288448 ,
+ 4.975 , -1.76663217835511 ,
+ 4.98 , -1.92803570312605 ,
+ 4.985 , -2.02359808191781 ,
+ 4.99 , -2.0273751484136 ,
+ 4.995 , -1.9250033514058 ,
+ 5.0 , -1.71741034508892 ,
+ 5.005 , -1.42182210128631 ,
+ 5.01 , -1.07072647445332 ,
+ 5.015 , -0.70800393596021 ,
+ 5.02 , -0.38102872779966 ,
+ 5.025 , -0.13042197488723 ,
+ 5.03 , 3.718076749748670E-02 ,
+ 5.035 , 0.111181074997115 ,
+ 5.04 , 1.189110285104030E-02 ,
+ 5.045 , -0.20207868848779 ,
+ 5.05 , -0.44910010485315 ,
+ 5.055 , -0.64276640560255 ,
+ 5.06 , -0.71152270492906 ,
+ 5.065 , -0.61247600528197 ,
+ 5.07 , -0.33784697642092 ,
+ 5.075 , 8.416359716705800E-02 ,
+ 5.08 , 0.593871386434318 ,
+ 5.085 , 1.11066790591664 ,
+ 5.09 , 1.547857061782 ,
+ 5.095 , 1.82798847499016 ,
+ 5.1 , 1.89521989018272 ,
+ 5.105 , 1.72255076224409 ,
+ 5.11 , 1.31357650362981 ,
+ 5.115 , 0.700681089848237 ,
+ 5.12 , -3.944101274735180E-02 ,
+ 5.125 , -0.57538253938727 ,
+ 5.13 , -1.09801528037525 ,
+ 5.135 , -1.54898464132246 ,
+ 5.14 , -1.87419746618154 ,
+ 5.145 , -2.02778376701628 ,
+ 5.15 , -1.97724411607912 ,
+ 5.155 , -1.70971194891691 ,
+ 5.16 , -1.23638258073101 ,
+ 5.165 , -0.59315494390597 ,
+ 5.17 , 0.111368648891046 ,
+ 5.175 , 0.663169389460638 ,
+ 5.18 , 1.18144631611042 ,
+ 5.185 , 1.60890018466206 ,
+ 5.19 , 1.8979822410482 ,
+ 5.195 , 2.01808652053979 ,
+ 5.2 , 1.96085818554624 ,
+ 5.205 , 1.74218321821589 ,
+ 5.21 , 1.39935953655912 ,
+ 5.215 , 0.984200755295425 ,
+ 5.22 , 0.55469135825056 ,
+ 5.225 , 0.166760087786826 ,
+ 5.23 , -0.29010383111112 ,
+ 5.235 , -0.69805571505204 ,
+ 5.24 , -0.82852798007756 ,
+ 5.245 , -0.70078564730017 ,
+ 5.25 , -0.3628421318389 ,
+ 5.255 , 7.584234896818380E-02 ,
+ 5.26 , 0.43610921884854 ,
+ 5.265 , 0.80338816570313 ,
+ 5.27 , 1.14583363535399 ,
+ 5.275 , 1.44233546379898 ,
+ 5.28 , 1.68096745166101 ,
+ 5.285 , 1.85664177773435 ,
+ 5.29 , 1.96856248638458 ,
+ 5.295 , 2.01783075579683 ,
+ 5.3 , 2.00659270193592 ,
+ 5.305 , 1.93938767266716 ,
+ 5.31 , 1.82500672559004 ,
+ 5.315 , 1.67686130322037 ,
+ 5.32 , 1.5118566159347 ,
+ 5.325 , 1.34860724410237 ,
+ 5.33 , 1.20475926474899 ,
+ 5.335 , 1.09288033252557 ,
+ 5.34 , 1.01607186043109 ,
+ 5.345 , 0.965585517364128 ,
+ 5.35 , 0.921875442510843 ,
+ 5.355 , 0.858856383267098 ,
+ 5.36 , 0.750174073799282 ,
+ 5.365 , 0.575950824274314 ,
+ 5.37 , 0.328597045194569 ,
+ 5.375 , 1.652082973209100E-02 ,
+ 5.38 , -0.50276970745072 ,
+ 5.385 , -1.03563631031452 ,
+ 5.39 , -1.50490953601753 ,
+ 5.395 , -1.84994677847168 ,
+ 5.4 , -2.02843329407602 ,
+ 5.405 , -2.02545789978173 ,
+ 5.41 , -1.85714442697612 ,
+ 5.415 , -1.56774223620682 ,
+ 5.42 , -1.22052435654413 ,
+ 5.425 , -0.88506969766425 ,
+ 5.43 , -0.62375651367727 ,
+ 5.435 , -0.47941781141452 ,
+ 5.44 , -0.46672787176114 ,
+ 5.445 , -0.57069258501391 ,
+ 5.45 , -0.75256544897363 ,
+ 5.455 , -0.95943306586182 ,
+ 5.46 , -1.13415327472143 ,
+ 5.465 , -1.22591171353667 ,
+ 5.47 , -1.2008821223853 ,
+ 5.475 , -1.04867466773548 ,
+ 5.48 , -0.7816480899877 ,
+ 5.485 , -0.43025221187204 ,
+ 5.49 , -3.849293308865140E-02 ,
+ 5.495 , 0.351248620973817 ,
+ 5.5 , 0.678851223955433 ,
+ 5.505 , 0.903561274568929 ,
+ 5.51 , 1.000825087451 ,
+ 5.515 , 0.960934560706297 ,
+ 5.52 , 0.78992867723245 ,
+ 5.525 , 0.511317876998132 ,
+ 5.53 , 0.162760320816359 ,
+ 5.535 , -0.15233717951736 ,
+ 5.54 , -0.408210240848 ,
+ 5.545 , -0.62888561745421 ,
+ 5.55 , -0.79619865273995 ,
+ 5.555 , -0.90334422649211 ,
+ 5.56 , -0.957273231721 ,
+ 5.565 , -0.97632112916908 ,
+ 5.57 , -0.98529324126005 ,
+ 5.575 , -1.01088001195299 ,
+ 5.58 , -1.07663632540647 ,
+ 5.585 , -1.1964450302827 ,
+ 5.59 , -1.36885544627383 ,
+ 5.595 , -1.57548223311668 ,
+ 5.6 , -1.78343920945552 ,
+ 5.605 , -1.94998845541488 ,
+ 5.61 , -2.02894698358654 ,
+ 5.615 , -1.97893684719994 ,
+ 5.62 , -1.77192812280346 ,
+ 5.625 , -1.39963819951885 ,
+ 5.63 , -0.87646499571534 ,
+ 5.635 , -0.23861147042705 ,
+ 5.64 , 0.336218007155657 ,
+ 5.645 , 0.847327478768983 ,
+ 5.65 , 1.30857622082849 ,
+ 5.655 , 1.67664606685409 ,
+ 5.66 , 1.91879317489308 ,
+ 5.665 , 2.01692172130926 ,
+ 5.67 , 1.96853013034153 ,
+ 5.675 , 1.78510825075991 ,
+ 5.68 , 1.4896405295593 ,
+ 5.685 , 1.11350916384325 ,
+ 5.69 , 0.692073407024996 ,
+ 5.695 , 0.259804585073245 ,
+ 5.7 , -0.24312332096602 ,
+ 5.705 , -0.83740028991543 ,
+ 5.71 , -1.32862161402076 ,
+ 5.715 , -1.69669262414581 ,
+ 5.72 , -1.93128745142237 ,
+ 5.725 , -2.02921997287969 ,
+ 5.73 , -1.99337280480397 ,
+ 5.735 , -1.83373410433008 ,
+ 5.74 , -1.56747293050187 ,
+ 5.745 , -1.21724094498849 ,
+ 5.75 , -0.81052148648056 ,
+ 5.755 , -0.38038326455022 ,
+ 5.76 , 4.429619989889450E-02 ,
+ 5.765 , 0.482041333875258 ,
+ 5.77 , 0.827113852485307 ,
+ 5.775 , 1.05562255275457 ,
+ 5.78 , 1.15574510229285 ,
+ 5.785 , 1.13102185729002 ,
+ 5.79 , 1.00111402711585 ,
+ 5.795 , 0.796402227894675 ,
+ 5.8 , 0.550299036643284 ,
+ 5.805 , 0.294746376632263 ,
+ 5.81 , 5.779627739619110E-02 ,
+ 5.815 , -0.14033970324891 ,
+ 5.82 , -0.29057904479289 ,
+ 5.825 , -0.39279585396293 ,
+ 5.83 , -0.4494482504971 ,
+ 5.835 , -0.46100119177358 ,
+ 5.84 , -0.42521937611264 ,
+ 5.845 , -0.3375317644422 ,
+ 5.85 , -0.19158847654649 ,
+ 5.855 , 1.752214546441880E-02 ,
+ 5.86 , 0.287160001209617 ,
+ 5.865 , 0.602028255467961 ,
+ 5.87 , 0.933254236049531 ,
+ 5.875 , 1.24149905843902 ,
+ 5.88 , 1.48303299176761 ,
+ 5.885 , 1.61843953382086 ,
+ 5.89 , 1.62241665153411 ,
+ 5.895 , 1.49156853196882 ,
+ 5.9 , 1.24765942303674 ,
+ 5.905 , 0.935345755846739 ,
+ 5.91 , 0.614175990416646 ,
+ 5.915 , 0.345931028275661 ,
+ 5.92 , 0.180659960734569 ,
+ 5.925 , 0.145383600846828 ,
+ 5.93 , 0.237765412366942 ,
+ 5.935 , 0.425793201109318 ,
+ 5.94 , 0.654468234473261 ,
+ 5.945 , 0.858677159866798 ,
+ 5.95 , 0.978207334350809 ,
+ 5.955 , 0.970329031591707 ,
+ 5.96 , 0.818026030367143 ,
+ 5.965 , 0.533251338659083 ,
+ 5.97 , 0.15356868640373 ,
+ 5.975 , -0.26839144886352 ,
+ 5.98 , -0.67878215135657 ,
+ 5.985 , -1.03400683986537 ,
+ 5.99 , -1.3073585979251 ,
+ 5.995 , -1.49178002375022 ,
+ 6.0 , -1.59881218617846 ,
+ 6.005 , -1.65263612785215 ,
+ 6.01 , -1.68040775595467 ,
+ 6.015 , -1.70326118069031 ,
+ 6.02 , -1.73147514087517 ,
+ 6.025 , -1.76409391726272 ,
+ 6.03 , -1.79154678107851 ,
+ 6.035 , -1.80004486312369 ,
+ 6.04 , -1.77657113231061 ,
+ 6.045 , -1.71309083748955 ,
+ 6.05 , -1.60890845106533 ,
+ 6.055 , -1.47045377157793 ,
+ 6.06 , -1.30823176663841 ,
+ 6.065 , -1.13218678075657 ,
+ 6.07 , -0.94831725641373 ,
+ 6.075 , -0.7582938943429 ,
+ 6.08 , -0.56105916215743 ,
+ 6.085 , -0.35465660035081 ,
+ 6.09 , -0.1384716720616 ,
+ 6.095 , 8.181401775998960E-02 ,
+ 6.1 , 0.295120583821675 ,
+ 6.105 , 0.488813785339096 ,
+ 6.11 , 0.645978019217284 ,
+ 6.115 , 0.751956445909178 ,
+ 6.12 , 0.797070178696218 ,
+ 6.125 , 0.778938415578525 ,
+ 6.13 , 0.703933126539259 ,
+ 6.135 , 0.586193282063444 ,
+ 6.14 , 0.444346814137257 ,
+ 6.145 , 0.29825595848257 ,
+ 6.15 , 0.16716086262001 ,
+ 6.155 , 6.845201123569530E-02 ,
+ 6.16 , 1.638790200297000E-02 ,
+ 6.165 , 2.138979757918980E-02 ,
+ 6.17 , 9.013446340544370E-02 ,
+ 6.175 , 0.225364316943996 ,
+ 6.18 , 0.424627726925139 ,
+ 6.185 , 0.678666340108451 ,
+ 6.19 , 0.970459569802561 ,
+ 6.195 , 1.27533903222018 ,
+ 6.2 , 1.56265390764561 ,
+ 6.205 , 1.79967884086063 ,
+ 6.21 , 1.95730777614782 ,
+ 6.215 , 2.01568092318868 ,
+ 6.22 , 1.9680798901563 ,
+ 6.225 , 1.82260275300508 ,
+ 6.23 , 1.6012628707179 ,
+ 6.235 , 1.33584067303513 ,
+ 6.24 , 1.06088096670087 ,
+ 6.245 , 0.806020651973241 ,
+ 6.25 , 0.590240383625112 ,
+ 6.255 , 0.419170058894404 ,
+ 6.26 , 0.285567810216695 ,
+ 6.265 , 0.172882474189092 ,
+ 6.27 , 6.141521693570270E-02 ,
+ 6.275 , -4.100655746000240E-02 ,
+ 6.28 , -0.12748144658853 ,
+ 6.285 , -0.22402606929835 ,
+ 6.29 , -0.32266457931099 ,
+ 6.295 , -0.41245768954213 ,
+ 6.3 , -0.48300494677694 ,
+ 6.305 , -0.5281469572368 ,
+ 6.31 , -0.54867239852271 ,
+ 6.315 , -0.55291028225442 ,
+ 6.32 , -0.55498836852966 ,
+ 6.325 , -0.57168033795742 ,
+ 6.33 , -0.61890124937392 ,
+ 6.335 , -0.70832720330432 ,
+ 6.34 , -0.8444688842815 ,
+ 6.345 , -1.02312789012362 ,
+ 6.35 , -1.23201420479741 ,
+ 6.355 , -1.45302869056683 ,
+ 6.36 , -1.66483750094807 ,
+ 6.365 , -1.84512502578643 ,
+ 6.37 , -1.97287391729285 ,
+ 6.375 , -2.03065548439675 ,
+ 6.38 , -2.00620454087577 ,
+ 6.385 , -1.89315139172675 ,
+ 6.39 , -1.69175663119939 ,
+ 6.395 , -1.40995495579992 ,
+ 6.4 , -1.06376441111769 ,
+ 6.405 , -0.67620069765757 ,
+ 6.41 , -0.27510795942141 ,
+ 6.415 , 0.196812130002227 ,
+ 6.42 , 0.789662759769171 ,
+ 6.425 , 1.26662960840841 ,
+ 6.43 , 1.6072638071671 ,
+ 6.435 , 1.81182394487741 ,
+ 6.44 , 1.89972228643561 ,
+ 6.445 , 1.9047619217593 ,
+ 6.45 , 1.86751034078394 ,
+ 6.455 , 1.8254292028055 ,
+ 6.46 , 1.80357147143536 ,
+ 6.465 , 1.80953648503866 ,
+ 6.47 , 1.83384689586528 ,
+ 6.475 , 1.8545291406415 ,
+ 6.48 , 1.84468010904891 ,
+ 6.485 , 1.78185447755559 ,
+ 6.49 , 1.65634384795161 ,
+ 6.495 , 1.47475850013982 ,
+ 6.5 , 1.25778784095604 ,
+ 6.505 , 1.03382280148781 ,
+ 6.51 , 0.830377669084782 ,
+ 6.515 , 0.664847688813952 ,
+ 6.52 , 0.537441337312092 ,
+ 6.525 , 0.429805314578715 ,
+ 6.53 , 0.31046587513464 ,
+ 6.535 , 0.1447657890999 ,
+ 6.54 , -9.382243026102850E-02 ,
+ 6.545 , -0.41334712070585 ,
+ 6.55 , -0.79651775006838 ,
+ 6.555 , -1.20028045361043 ,
+ 6.56 , -1.56291508214219 ,
+ 6.565 , -1.81661688690887 ,
+ 6.57 , -1.90206035531056 ,
+ 6.575 , -1.7817477770441 ,
+ 6.58 , -1.44921463753588 ,
+ 6.585 , -0.93148892423534 ,
+ 6.59 , -0.28406148521622 ,
+ 6.595 , 0.323315074176515 ,
+ 6.6 , 0.852343584238104 ,
+ 6.605 , 1.31274405752464 ,
+ 6.61 , 1.66746511449112 ,
+ 6.615 , 1.89908333611956 ,
+ 6.62 , 2.00928735485692 ,
+ 6.625 , 2.01484159347826 ,
+ 6.63 , 1.94157792559844 ,
+ 6.635 , 1.81783611017065 ,
+ 6.64 , 1.66894503437948 ,
+ 6.645 , 1.51424202651612 ,
+ 6.65 , 1.36676756429498 ,
+ 6.655 , 1.23440796614096 ,
+ 6.66 , 1.12141683734346 ,
+ 6.665 , 1.03005163859298 ,
+ 6.67 , 0.961856012808879 ,
+ 6.675 , 0.917594207115419 ,
+ 6.68 , 0.895802572654735 ,
+ 6.685 , 0.891399934871178 ,
+ 6.69 , 0.895639060058472 ,
+ 6.695 , 0.897175457172006 ,
+ 6.7 , 0.883661601343515 ,
+ 6.705 , 0.844008961722013 ,
+ 6.71 , 0.77132601406367 ,
+ 6.715 , 0.665213447750178 ,
+ 6.72 , 0.531957875807601 ,
+ 6.725 , 0.382692370009228 ,
+ 6.73 , 0.230704777961798 ,
+ 6.735 , 8.848409780228460E-02 ,
+ 6.74 , -4.320967298403890E-02 ,
+ 6.745 , -0.1762892860789 ,
+ 6.75 , -0.28784586821218 ,
+ 6.755 , -0.38905860495499 ,
+ 6.76 , -0.49291382383649 ,
+ 6.765 , -0.61009214038178 ,
+ 6.77 , -0.74528548081034 ,
+ 6.775 , -0.89462751554703 ,
+ 6.78 , -1.04544755808821 ,
+ 6.785 , -1.17892732569852 ,
+ 6.79 , -1.27460153013389 ,
+ 6.795 , -1.31507899117539 ,
+ 6.8 , -1.28996744751844 ,
+ 6.805 , -1.19853880216558 ,
+ 6.81 , -1.0504463612584 ,
+ 6.815 , -0.86390673664632 ,
+ 6.82 , -0.66172430237656 ,
+ 6.825 , -0.46650461944826 ,
+ 6.83 , -0.29641016005237 ,
+ 6.835 , -0.16215486668974 ,
+ 6.84 , -6.552041776213589E-02 ,
+ 6.845 , 2.987151640449150E-04 ,
+ 6.85 , 4.839493719297370E-02 ,
+ 6.855 , 9.446598470843660E-02 ,
+ 6.86 , 0.152946671436979 ,
+ 6.865 , 0.234067255310907 ,
+ 6.87 , 0.342244784612781 ,
+ 6.875 , 0.475796904621799 ,
+ 6.88 , 0.627950076248601 ,
+ 6.885 , 0.788973056491094 ,
+ 6.89 , 0.948691666991149 ,
+ 6.895 , 1.09834384227231 ,
+ 6.9 , 1.23115050816982 ,
+ 6.905 , 1.34171557597024 ,
+ 6.91 , 1.42465179927775 ,
+ 6.915 , 1.47287601846948 ,
+ 6.92 , 1.47626092610496 ,
+ 6.925 , 1.42154296744535 ,
+ 6.93 , 1.29406455566583 ,
+ 6.935 , 1.08117541948277 ,
+ 6.94 , 0.776554035067551 ,
+ 6.945 , 0.384383520531035 ,
+ 6.95 , -7.294167926560280E-02 ,
+ 6.955 , -0.53864400514197 ,
+ 6.96 , -1.00153859379899 ,
+ 6.965 , -1.41800783516812 ,
+ 6.97 , -1.7468581519585 ,
+ 6.975 , -1.95670089086248 ,
+ 6.98 , -2.03182599021495 ,
+ 6.985 , -1.97504743961906 ,
+ 6.99 , -1.80676558399137 ,
+ 6.995 , -1.5604834986916 ,
+ 7.0 , -1.27576644446333 ,
+ 7.005 , -0.9903221748174 ,
+ 7.01 , -0.73330353810734 ,
+ 7.015 , -0.52160326879535 ,
+ 7.02 , -0.35985223488993 ,
+ 7.025 , -0.24369954400838 ,
+ 7.03 , -0.16525998770838 ,
+ 7.035 , -0.11901231195031 ,
+ 7.04 , -0.10598389561423 ,
+ 7.045 , -0.13446900972305 ,
+ 7.05 , -0.21699230917524 ,
+ 7.055 , -0.36458839091288 ,
+ 7.06 , -0.58005276943233 ,
+ 7.065 , -0.85208512054878 ,
+ 7.07 , -1.15259800704237 ,
+ 7.075 , -1.43896995914881 ,
+ 7.08 , -1.66118309359685 ,
+ 7.085 , -1.771927531099 ,
+ 7.09 , -1.73721975477998 ,
+ 7.095 , -1.54526433804976 ,
+ 7.1 , -1.21113953262348 ,
+ 7.105 , -0.7752249017621 ,
+ 7.11 , -0.29527299039846 ,
+ 7.115 , 0.173294693493191 ,
+ 7.12 , 0.57635137765972 ,
+ 7.125 , 0.862335395139578 ,
+ 7.13 , 1.01919271305477 ,
+ 7.135 , 1.06290746127159 ,
+ 7.14 , 1.03167712327493 ,
+ 7.145 , 0.975104812475545 ,
+ 7.15 , 0.94186991196106 ,
+ 7.155 , 0.968697291206275 ,
+ 7.16 , 1.07242991307441 ,
+ 7.165 , 1.24693307983413 ,
+ 7.17 , 1.46588613539846 ,
+ 7.175 , 1.69040391004537 ,
+ 7.18 , 1.87856926470802 ,
+ 7.185 , 1.9942412785979 ,
+ 7.19 , 2.01380495894182 ,
+ 7.195 , 1.93002933646123 ,
+ 7.2 , 1.75219708416187 ,
+ 7.205 , 1.50259348018555 ,
+ 7.21 , 1.21097997176944 ,
+ 7.215 , 0.908929916225265 ,
+ 7.22 , 0.624987318443838 ,
+ 7.225 , 0.380818385977012 ,
+ 7.23 , 0.188682790341481 ,
+ 7.235 , 5.054908150564660E-02 ,
+ 7.24 , -4.224733175465410E-02 ,
+ 7.245 , -0.10533217769884 ,
+ 7.25 , -0.15872049577028 ,
+ 7.255 , -0.22626933934594 ,
+ 7.26 , -0.32933473878503 ,
+ 7.265 , -0.48196141281812 ,
+ 7.27 , -0.68656470353389 ,
+ 7.275 , -0.93107691321487 ,
+ 7.28 , -1.18865855652987 ,
+ 7.285 , -1.420854392386 ,
+ 7.29 , -1.58410377773137 ,
+ 7.295 , -1.63852514448294 ,
+ 7.3 , -1.55725203777855 ,
+ 7.305 , -1.33440140393595 ,
+ 7.31 , -0.98961414150744 ,
+ 7.315 , -0.56741260276393 ,
+ 7.32 , -0.13082880911958 ,
+ 7.325 , 0.249583666745638 ,
+ 7.33 , 0.508940072170202 ,
+ 7.335 , 0.600662717049061 ,
+ 7.34 , 0.5059779991769 ,
+ 7.345 , 0.238142376340394 ,
+ 7.35 , -0.15979854274957 ,
+ 7.355 , -0.62330642360817 ,
+ 7.36 , -1.07861985315351 ,
+ 7.365 , -1.45613573961171 ,
+ 7.37 , -1.70221047327019 ,
+ 7.375 , -1.78733777799186 ,
+ 7.38 , -1.70935128300863 ,
+ 7.385 , -1.49139661468471 ,
+ 7.39 , -1.17576612947581 ,
+ 7.395 , -0.81553092872387 ,
+ 7.4 , -0.46579815462372 ,
+ 7.405 , -0.17584397718572 ,
+ 7.41 , 1.695055532407140E-02 ,
+ 7.415 , 9.080438530410280E-02 ,
+ 7.42 , 4.100203845188310E-02 ,
+ 7.425 , -0.12015714114647 ,
+ 7.43 , -0.36451642152235 ,
+ 7.435 , -0.65063615988914 ,
+ 7.44 , -0.92820901616803 ,
+ 7.445 , -1.14411024994249 ,
+ 7.45 , -1.2495457268474 ,
+ 7.455 , -1.20784941543681 ,
+ 7.46 , -1.00217372922289 ,
+ 7.465 , -0.64135799082343 ,
+ 7.47 , -0.16185956349448 ,
+ 7.475 , 0.375443341531982 ,
+ 7.48 , 0.893242359584305 ,
+ 7.485 , 1.30942170236106 ,
+ 7.49 , 1.55069511538195 ,
+ 7.495 , 1.56597687306026 ,
+ 7.5 , 1.33649434622083 ,
+ 7.505 , 0.880087983425295 ,
+ 7.51 , 0.248772549844589 ,
+ 7.515 , -0.36466467822546 ,
+ 7.52 , -0.91944206639744 ,
+ 7.525 , -1.41086648314942 ,
+ 7.53 , -1.78197182048109 ,
+ 7.535 , -1.99448021035504 ,
+ 7.54 , -2.03276742886028 ,
+ 7.545 , -1.9038540437772 ,
+ 7.55 , -1.63408290724591 ,
+ 7.555 , -1.26366851276266 ,
+ 7.56 , -0.84036300953546 ,
+ 7.565 , -0.41319072336647 ,
+ 7.57 , -2.695184824283270E-02 ,
+ 7.575 , 0.376706658165673 ,
+ 7.58 , 0.651108722060469 ,
+ 7.585 , 0.775943751253261 ,
+ 7.59 , 0.755597751751617 ,
+ 7.595 , 0.613374035034045 ,
+ 7.6 , 0.389100193892965 ,
+ 7.605 , 0.134140214335999 ,
+ 7.61 , -9.593512494436110E-02 ,
+ 7.615 , -0.25014262596395 ,
+ 7.62 , -0.29113724407252 ,
+ 7.625 , -0.20287737386171 ,
+ 7.63 , 5.024227092122790E-03 ,
+ 7.635 , 0.297903261089418 ,
+ 7.64 , 0.622107890736794 ,
+ 7.645 , 0.91558081793758 ,
+ 7.65 , 1.12076183929425 ,
+ 7.655 , 1.19700603742361 ,
+ 7.66 , 1.12967888152307 ,
+ 7.665 , 0.933743975370447 ,
+ 7.67 , 0.650793261469538 ,
+ 7.675 , 0.339973230252299 ,
+ 7.68 , 6.485809767286120E-02 ,
+ 7.685 , -0.12047151548951 ,
+ 7.69 , -0.18271341139574 ,
+ 7.695 , -0.11542038316497 ,
+ 7.7 , 6.117124311775080E-02 ,
+ 7.705 , 0.306221765396461 ,
+ 7.71 , 0.568625694223555 ,
+ 7.715 , 0.79886093305278 ,
+ 7.72 , 0.959184513633666 ,
+ 7.725 , 1.02975813458714 ,
+ 7.73 , 1.00975707269538 ,
+ 7.735 , 0.913870269761431 ,
+ 7.74 , 0.765608368548335 ,
+ 7.745 , 0.589594520216864 ,
+ 7.75 , 0.405299730586112 ,
+ 7.755 , 0.223985767660469 ,
+ 7.76 , 4.920974997763450E-02 ,
+ 7.765 , -0.11994024975627 ,
+ 7.77 , -0.28424112296356 ,
+ 7.775 , -0.43999294669787 ,
+ 7.78 , -0.57663798061898 ,
+ 7.785 , -0.67751213622858 ,
+ 7.79 , -0.72360079867587 ,
+ 7.795 , -0.69901457723046 ,
+ 7.8 , -0.59650776204881 ,
+ 7.805 , -0.42155886366402 ,
+ 7.81 , -0.19380300792328 ,
+ 7.815 , 5.489933475191600E-02 ,
+ 7.82 , 0.285466317840837 ,
+ 7.825 , 0.458377987772727 ,
+ 7.83 , 0.540543411689915 ,
+ 7.835 , 0.510857284716815 ,
+ 7.84 , 0.363486292918927 ,
+ 7.845 , 0.108336402431131 ,
+ 7.85 , -0.21209396424761 ,
+ 7.855 , -0.56957977141521 ,
+ 7.86 , -0.94077073678275 ,
+ 7.865 , -1.29262615047061 ,
+ 7.87 , -1.59622106208727 ,
+ 7.875 , -1.82918316989524 ,
+ 7.88 , -1.97699031089989 ,
+ 7.885 , -2.03327946447786 ,
+ 7.89 , -1.99933934346025 ,
+ 7.895 , -1.88300955675939 ,
+ 7.9 , -1.69721418310355 ,
+ 7.905 , -1.45829064978291 ,
+ 7.91 , -1.18410498022345 ,
+ 7.915 , -0.8919394708508 ,
+ 7.92 , -0.59649837620085 ,
+ 7.925 , -0.30856724453543 ,
+ 7.93 , -3.473084459177880E-02 ,
+ 7.935 , 0.243954038684612 ,
+ 7.94 , 0.505067577023267 ,
+ 7.945 , 0.74523171014185 ,
+ 7.95 , 0.961076322702563 ,
+ 7.955 , 1.14544017577101 ,
+ 7.96 , 1.28755260199966 ,
+ 7.965 , 1.37508301728453 ,
+ 7.97 , 1.39752728794968 ,
+ 7.975 , 1.35018389601987 ,
+ 7.98 , 1.23776787698572 ,
+ 7.985 , 1.07653932806098 ,
+ 7.99 , 0.893865005632781 ,
+ 7.995 , 0.724806073674302 ,
+ 8.0 , 0.606180934525952 ,
+ 8.005 , 0.569233587341791 ,
+ 8.01 , 0.632383043958699 ,
+ 8.015 , 0.795725327814524 ,
+ 8.02 , 1.03874194319127 ,
+ 8.025 , 1.32196705023762 ,
+ 8.03 , 1.59246805399968 ,
+ 8.035 , 1.79229440498998 ,
+ 8.04 , 1.86849022149291 ,
+ 8.045 , 1.78281948278322 ,
+ 8.05 , 1.51926230063055 ,
+ 8.055 , 1.08785213984058 ,
+ 8.06 , 0.524349594247236 ,
+ 8.065 , -0.1140897577962 ,
+ 8.07 , -0.75657207669552 ,
+ 8.075 , -1.32834364834345 ,
+ 8.08 , -1.76124306233852 ,
+ 8.085 , -2.00310207974856 ,
+ 8.09 , -2.02480910234302 ,
+ 8.095 , -1.82430118945956 ,
+ 8.1 , -1.42701906953591 ,
+ 8.105 , -0.88275056011672 ,
+ 8.11 , -0.25930710346958 ,
+ 8.115 , 0.36611395388268 ,
+ 8.12 , 0.916779579720004 ,
+ 8.125 , 1.32634332320688 ,
+ 8.13 , 1.54748990874522 ,
+ 8.135 , 1.55804957216978 ,
+ 8.14 , 1.36358979345776 ,
+ 8.145 , 0.996118542284482 ,
+ 8.15 , 0.509028622424576 ,
+ 8.155 , -3.108833671467930E-02 ,
+ 8.16 , -0.55458355458891 ,
+ 8.165 , -0.9992113406596 ,
+ 8.17 , -1.31909921378195 ,
+ 8.175 , -1.4907344205054 ,
+ 8.18 , -1.51500626604052 ,
+ 8.185 , -1.41506172917135 ,
+ 8.19 , -1.23045719608832 ,
+ 8.195 , -1.00875563741852 ,
+ 8.2 , -0.79618535909745 ,
+ 8.205 , -0.62910374181022 ,
+ 8.21 , -0.52781524086439 ,
+ 8.215 , -0.49375763302869 ,
+ 8.22 , -0.51036868088539 ,
+ 8.225 , -0.54721127046085 ,
+ 8.23 , -0.56640455149806 ,
+ 8.235 , -0.5300607346312 ,
+ 8.24 , -0.40739746710395 ,
+ 8.245 , -0.18031656379607 ,
+ 8.25 , 9.909295562647380E-02 ,
+ 8.255 , 0.384178096593259 ,
+ 8.26 , 0.711568797471058 ,
+ 8.265 , 1.05465985685733 ,
+ 8.27 , 1.38307322715161 ,
+ 8.275 , 1.66640133480447 ,
+ 8.28 , 1.87778042356214 ,
+ 8.285 , 1.99690726227749 ,
+ 8.29 , 2.01218574892656 ,
+ 8.295 , 1.9218468256107 ,
+ 8.3 , 1.73397654400921 ,
+ 8.305 , 1.4654715893691 ,
+ 8.31 , 1.14002097734659 ,
+ 8.315 , 0.785289540807961 ,
+ 8.32 , 0.429654714191936 ,
+ 8.325 , 9.887434390542030E-02 ,
+ 8.33 , -0.27373446466779 ,
+ 8.335 , -0.61453278823147 ,
+ 8.34 , -0.86361514651737 ,
+ 8.345 , -1.02764207046752 ,
+ 8.35 , -1.12312770730449 ,
+ 8.355 , -1.17242345160079 ,
+ 8.36 , -1.19890949112902 ,
+ 8.365 , -1.22231476786338 ,
+ 8.37 , -1.25506074091502 ,
+ 8.375 , -1.30037291926648 ,
+ 8.38 , -1.35246560106362 ,
+ 8.385 , -1.39867274893801 ,
+ 8.39 , -1.42300013455657 ,
+ 8.395 , -1.41027137760835 ,
+ 8.4 , -1.34988412628361 ,
+ 8.405 , -1.23833354826905 ,
+ 8.41 , -1.08003474781669 ,
+ 8.415 , -0.8863811686465 ,
+ 8.42 , -0.67334691448991 ,
+ 8.425 , -0.45824149658395 ,
+ 8.43 , -0.25648271091485 ,
+ 8.435 , -7.919497664086800E-02 ,
+ 8.44 , 6.790702566583660E-02 ,
+ 8.445 , 0.184336104551994 ,
+ 8.45 , 0.273607496426052 ,
+ 8.455 , 0.341427765954767 ,
+ 8.46 , 0.393859568348449 ,
+ 8.465 , 0.436054008314734 ,
+ 8.47 , 0.471822329873715 ,
+ 8.475 , 0.503940686983312 ,
+ 8.48 , 0.534766790770446 ,
+ 8.485 , 0.566720547413461 ,
+ 8.49 , 0.602204083610117 ,
+ 8.495 , 0.642759211345947 ,
+ 8.5 , 0.687546596661957 ,
+ 8.505 , 0.73161370540631 ,
+ 8.51 , 0.764633590722345 ,
+ 8.515 , 0.770779801924118 ,
+ 8.52 , 0.730226474533298 ,
+ 8.525 , 0.622364880535585 ,
+ 8.53 , 0.430299195926097 ,
+ 8.535 , 0.145690142921501 ,
+ 8.54 , -0.1875029917819 ,
+ 8.545 , -0.54835468448798 ,
+ 8.55 , -0.93829077724458 ,
+ 8.555 , -1.32093112448324 ,
+ 8.56 , -1.65568314187632 ,
+ 8.565 , -1.90374313930578 ,
+ 8.57 , -2.03414217931564 ,
+ 8.575 , -2.02871594615485 ,
+ 8.58 , -1.88502979034511 ,
+ 8.585 , -1.61666670363564 ,
+ 8.59 , -1.25090542907548 ,
+ 8.595 , -0.82439719072454 ,
+ 8.6 , -0.3777961843308 ,
+ 8.605 , 5.997342456618780E-02 ,
+ 8.61 , 0.498580351025926 ,
+ 8.615 , 0.848666797179574 ,
+ 8.62 , 1.09518857615416 ,
+ 8.625 , 1.23554791479412 ,
+ 8.63 , 1.2781763580922 ,
+ 8.635 , 1.2403900007702 ,
+ 8.64 , 1.14586627728766 ,
+ 8.645 , 1.02207806372073 ,
+ 8.65 , 0.897804023904626 ,
+ 8.655 , 0.800618191332478 ,
+ 8.66 , 0.754133205007585 ,
+ 8.665 , 0.775081318262375 ,
+ 8.67 , 0.87060821275674 ,
+ 8.675 , 1.03627950859147 ,
+ 8.68 , 1.25531150972849 ,
+ 8.685 , 1.49959206680695 ,
+ 8.69 , 1.73283203030496 ,
+ 8.695 , 1.91564235877547 ,
+ 8.7 , 2.01171708813146 ,
+ 8.705 , 1.99404478322172 ,
+ 8.71 , 1.85004122617725 ,
+ 8.715 , 1.5844790314963 ,
+ 8.72 , 1.21937543098226 ,
+ 8.725 , 0.790685383472318 ,
+ 8.73 , 0.34253999395618 ,
+ 8.735 , -8.315108890721259E-02 ,
+ 8.74 , -0.45782997432698 ,
+ 8.745 , -0.73560630397696 ,
+ 8.75 , -0.90358121095544 ,
+ 8.755 , -0.96494822819405 ,
+ 8.76 , -0.93630744097796 ,
+ 8.765 , -0.84299937779174 ,
+ 8.77 , -0.71350666162014 ,
+ 8.775 , -0.57402043454602 ,
+ 8.78 , -0.44427168990607 ,
+ 8.785 , -0.33542713208977 ,
+ 8.79 , -0.2501116833682 ,
+ 8.795 , -0.18401361018569 ,
+ 8.8 , -0.12842784460002 ,
+ 8.805 , -7.314603730146210E-02 ,
+ 8.81 , -9.074234322190291E-03 ,
+ 8.815 , 7.000693452309770E-02 ,
+ 8.82 , 0.166710878734688 ,
+ 8.825 , 0.280110709519932 ,
+ 8.83 , 0.406273894637497 ,
+ 8.835 , 0.539123020255816 ,
+ 8.84 , 0.671480131538164 ,
+ 8.845 , 0.796107038123461 ,
+ 8.85 , 0.906615981394394 ,
+ 8.855 , 0.998324490593576 ,
+ 8.86 , 1.0690620538107 ,
+ 8.865 , 1.11975528767815 ,
+ 8.87 , 1.15453246345251 ,
+ 8.875 , 1.18023682665442 ,
+ 8.88 , 1.20532586633037 ,
+ 8.885 , 1.23820591293966 ,
+ 8.89 , 1.28520280175297 ,
+ 8.895 , 1.3486570631952 ,
+ 8.9 , 1.42571219461991 ,
+ 8.905 , 1.50820033663049 ,
+ 8.91 , 1.58374708347145 ,
+ 8.915 , 1.63800541668437 ,
+ 8.92 , 1.65764589236558 ,
+ 8.925 , 1.63341505537543 ,
+ 8.93 , 1.5624359419512 ,
+ 8.935 , 1.44906883520367 ,
+ 8.94 , 1.30406714173948 ,
+ 8.945 , 1.14214506133789 ,
+ 8.95 , 0.97845385721763 ,
+ 8.955 , 0.824773099970328 ,
+ 8.96 , 0.686415293227468 ,
+ 8.965 , 0.560675032421674 ,
+ 8.97 , 0.437346493634863 ,
+ 8.975 , 0.301223152764708 ,
+ 8.98 , 0.136102516376474 ,
+ 8.985 , -7.065849555314389E-02 ,
+ 8.99 , -0.32407738413447 ,
+ 8.995 , -0.61898581453294 ,
+ 9.0 , -0.93960037368359 ,
+ 9.005 , -1.26143943272218 ,
+ 9.01 , -1.55516650644025 ,
+ 9.015 , -1.79156612412015 ,
+ 9.02 , -1.94652674681638 ,
+ 9.025 , -2.00503791616427 ,
+ 9.03 , -1.96340298656283 ,
+ 9.035 , -1.82929859570769 ,
+ 9.04 , -1.61975611512981 ,
+ 9.045 , -1.35763976380722 ,
+ 9.05 , -1.06749188919142 ,
+ 9.055 , -0.77165747380896 ,
+ 9.06 , -0.48743715471134 ,
+ 9.065 , -0.22573691716227 ,
+ 9.07 , 8.680561556133970E-03 ,
+ 9.075 , 0.215640087376458 ,
+ 9.08 , 0.397259171267499 ,
+ 9.085 , 0.555581085303924 ,
+ 9.09 , 0.690729679309828 ,
+ 9.095 , 0.800029757983254 ,
+ 9.1 , 0.878247351202657 ,
+ 9.105 , 0.91878759810445 ,
+ 9.11 , 0.915444383097841 ,
+ 9.115 , 0.864214490635585 ,
+ 9.12 , 0.76472553582975 ,
+ 9.125 , 0.620899809131162 ,
+ 9.13 , 0.440670714935382 ,
+ 9.135 , 0.234785445409552 ,
+ 9.14 , 1.501866477042620E-02 ,
+ 9.145 , -0.16256660035877 ,
+ 9.15 , -0.33008216119127 ,
+ 9.155 , -0.49037224168296 ,
+ 9.16 , -0.64324845085619 ,
+ 9.165 , -0.79113983805113 ,
+ 9.17 , -0.93796449486453 ,
+ 9.175 , -1.0876496844508 ,
+ 9.18 , -1.24257624122444 ,
+ 9.185 , -1.40228132491324 ,
+ 9.19 , -1.56269378306469 ,
+ 9.195 , -1.71610185022193 ,
+ 9.2 , -1.85187081485719 ,
+ 9.205 , -1.95781829391389 ,
+ 9.21 , -2.02202032577224 ,
+ 9.215 , -2.03476784125131 ,
+ 9.22 , -1.99032018745331 ,
+ 9.225 , -1.88813289198619 ,
+ 9.23 , -1.73333557866961 ,
+ 9.235 , -1.53634649422576 ,
+ 9.24 , -1.31166062827625 ,
+ 9.245 , -1.075970419663 ,
+ 9.25 , -0.84593818781158 ,
+ 9.255 , -0.63597140868637 ,
+ 9.26 , -0.4563931782957 ,
+ 9.265 , -0.31231411198407 ,
+ 9.27 , -0.20343660584305 ,
+ 9.275 , -0.12481923225902 ,
+ 9.28 , -6.848370877973950E-02 ,
+ 9.285 , -2.555427519972480E-02 ,
+ 9.29 , 1.844706127350420E-02 ,
+ 9.295 , 6.430221576072399E-02 ,
+ 9.3 , 0.10743778394149 ,
+ 9.305 , 0.141299341041405 ,
+ 9.31 , 0.154447624403715 ,
+ 9.315 , 0.133048252401135 ,
+ 9.32 , 6.418690106369780E-02 ,
+ 9.325 , -6.064647417949840E-02 ,
+ 9.33 , -0.24265292279827 ,
+ 9.335 , -0.47405842905361 ,
+ 9.34 , -0.73810449789487 ,
+ 9.345 , -1.0108148464089 ,
+ 9.35 , -1.26431984266432 ,
+ 9.355 , -1.47118757622947 ,
+ 9.36 , -1.60894844812626 ,
+ 9.365 , -1.66394726283033 ,
+ 9.37 , -1.63377593114862 ,
+ 9.375 , -1.52779564631775 ,
+ 9.38 , -1.36560192630373 ,
+ 9.385 , -1.17367488772945 ,
+ 9.39 , -0.98085465048613 ,
+ 9.395 , -0.81346133563023 ,
+ 9.4 , -0.6909389063025 ,
+ 9.405 , -0.62276084953816 ,
+ 9.41 , -0.607149409463 ,
+ 9.415 , -0.63177724383888 ,
+ 9.42 , -0.67625991576389 ,
+ 9.425 , -0.71589163373072 ,
+ 9.43 , -0.72595664968346 ,
+ 9.435 , -0.68589387170155 ,
+ 9.44 , -0.58268627289106 ,
+ 9.445 , -0.412930213848 ,
+ 9.45 , -0.18338626940602 ,
+ 9.455 , 8.998844390524470E-02 ,
+ 9.46 , 0.384209486902062 ,
+ 9.465 , 0.672301526951598 ,
+ 9.47 , 0.926752158620487 ,
+ 9.475 , 1.12295373373336 ,
+ 9.48 , 1.24217806572443 ,
+ 9.485 , 1.27378905610875 ,
+ 9.49 , 1.21646747255966 ,
+ 9.495 , 1.07838936456105 ,
+ 9.5 , 0.876298148043991 ,
+ 9.505 , 0.633562127434793 ,
+ 9.51 , 0.377406516734523 ,
+ 9.515 , 0.135641869430563 ,
+ 9.52 , -6.672476216219871E-02 ,
+ 9.525 , -0.21056458019019 ,
+ 9.53 , -0.28496091918619 ,
+ 9.535 , -0.28841969553759 ,
+ 9.54 , -0.2287139810782 ,
+ 9.545 , -0.12132500570029 ,
+ 9.55 , 7.625888610971770E-03 ,
+ 9.555 , 0.116222883261377 ,
+ 9.56 , 0.213774951165706 ,
+ 9.565 , 0.289397517200485 ,
+ 9.57 , 0.338281477903747 ,
+ 9.575 , 0.362345137379695 ,
+ 9.58 , 0.369650428641696 ,
+ 9.585 , 0.372716892921114 ,
+ 9.59 , 0.386055603509022 ,
+ 9.595 , 0.423398634616031 ,
+ 9.6 , 0.495129281552051 ,
+ 9.605 , 0.60639781396735 ,
+ 9.61 , 0.756225797586165 ,
+ 9.615 , 0.937731164545477 ,
+ 9.62 , 1.13931299682061 ,
+ 9.625 , 1.34651259505288 ,
+ 9.63 , 1.54413547032879 ,
+ 9.635 , 1.71824818793864 ,
+ 9.64 , 1.85768676819293 ,
+ 9.645 , 1.95489941817505 ,
+ 9.65 , 2.00610002856624 ,
+ 9.655 , 2.01090936461916 ,
+ 9.66 , 1.97169865125757 ,
+ 9.665 , 1.89287748522473 ,
+ 9.67 , 1.78030387269109 ,
+ 9.675 , 1.64090911938383 ,
+ 9.68 , 1.48250660526215 ,
+ 9.685 , 1.31363233674109 ,
+ 9.69 , 1.14327915207579 ,
+ 9.695 , 0.980390644995991 ,
+ 9.7 , 0.833122502994828 ,
+ 9.705 , 0.707943691566063 ,
+ 9.71 , 0.608782533951479 ,
+ 9.715 , 0.536448337875884 ,
+ 9.72 , 0.488573445463521 ,
+ 9.725 , 0.46016643878741 ,
+ 9.73 , 0.444740766028055 ,
+ 9.735 , 0.435798656192539 ,
+ 9.74 , 0.428373605655483 ,
+ 9.745 , 0.420256963476142 ,
+ 9.75 , 0.412594868385096 ,
+ 9.755 , 0.409674164332935 ,
+ 9.76 , 0.417930829751558 ,
+ 9.765 , 0.444371250852317 ,
+ 9.77 , 0.494775704856077 ,
+ 9.775 , 0.572057120950962 ,
+ 9.78 , 0.675155981128035 ,
+ 9.785 , 0.798679222993941 ,
+ 9.79 , 0.933324321352313 ,
+ 9.795 , 1.06694698775423 ,
+ 9.8 , 1.18603236012388 ,
+ 9.805 , 1.27724967196587 ,
+ 9.81 , 1.32882747232424 ,
+ 9.815 , 1.33155990686688 ,
+ 9.82 , 1.27942417786924 ,
+ 9.825 , 1.16984949079063 ,
+ 9.83 , 1.00375336219652 ,
+ 9.835 , 0.78541101181126 ,
+ 9.84 , 0.522229879372249 ,
+ 9.845 , 0.224363288427596 ,
+ 9.85 , -7.544298823405959E-02 ,
+ 9.855 , -0.32414911077947 ,
+ 9.86 , -0.56925067043303 ,
+ 9.865 , -0.80153173249929 ,
+ 9.87 , -1.01385881998571 ,
+ 9.875 , -1.20197758458175 ,
+ 9.88 , -1.36481009682394 ,
+ 9.885 , -1.50413197543959 ,
+ 9.89 , -1.62360229940215 ,
+ 9.895 , -1.72737604935286 ,
+ 9.9 , -1.81858556613035 ,
+ 9.905 , -1.89811306323292 ,
+ 9.91 , -1.96399286416952 ,
+ 9.915 , -2.01169321437822 ,
+ 9.92 , -2.03524420540911 ,
+ 9.925 , -2.02897089319518 ,
+ 9.93 , -1.9893635845244 ,
+ 9.935 , -1.91657784009958 ,
+ 9.94 , -1.81508296294018 ,
+ 9.945 , -1.69320466339342 ,
+ 9.95 , -1.56159803137893 ,
+ 9.955 , -1.4309899156992 ,
+ 9.96 , -1.309755744458 ,
+ 9.965 , -1.20194945689331 ,
+ 9.97 , -1.10635858004562 ,
+ 9.975 , -1.01686709903203 ,
+ 9.98 , -0.92410491644605 ,
+ 9.985 , -0.81798616411117 ,
+ 9.99 , -0.69053338279253 ,
+ 9.995 , -0.53828091954851 ,
+ 10.0 , -0.36368359344091 ,
+ 10.005 , -0.17516204935777 ,
+ 10.01 , 3.283892190983560E-02 ,
+ 10.015 , 0.330694200317556 ,
+ 10.02 , 0.577629318788318 ,
+ 10.025 , 0.752762239562344 ,
+ 10.03 , 0.843359973197779 ,
+ 10.035 , 0.846296788144704 ,
+ 10.04 , 0.767736310318568 ,
+ 10.045 , 0.621457280597053 ,
+ 10.05 , 0.426437216065522 ,
+ 10.055 , 0.204358996732675 ,
+ 10.06 , -2.248438925201870E-02 ,
+ 10.065 , -0.23266656596899 ,
+ 10.07 , -0.40662586629101 ,
+ 10.075 , -0.52750200085185 ,
+ 10.08 , -0.58215648669077 ,
+ 10.085 , -0.56248497246021 ,
+ 10.09 , -0.4669190429802 ,
+ 10.095 , -0.30169803576621 ,
+ 10.1 , -8.141467321068210E-02 ,
+ 10.105 , 0.171736188042055 ,
+ 10.11 , 0.430255910671489 ,
+ 10.115 , 0.665052841920839 ,
+ 10.12 , 0.849933032813423 ,
+ 10.125 , 0.965995866692921 ,
+ 10.13 , 1.00493830188015 ,
+ 10.135 , 0.970469370709915 ,
+ 10.14 , 0.877402798238989 ,
+ 10.145 , 0.748601808713132 ,
+ 10.15 , 0.610481808617733 ,
+ 10.155 , 0.488130421487012 ,
+ 10.16 , 0.401133125757128 ,
+ 10.165 , 0.360990723458034 ,
+ 10.17 , 0.370538085006636 ,
+ 10.175 , 0.425250483406994 ,
+ 10.18 , 0.515772332268937 ,
+ 10.185 , 0.630771503752903 ,
+ 10.19 , 0.759255763887151 ,
+ 10.195 , 0.891778215264391 ,
+ 10.2 , 1.02038573505463 ,
+ 10.205 , 1.13765165967161 ,
+ 10.21 , 1.2354498601353 ,
+ 10.215 , 1.30423925529986 ,
+ 10.22 , 1.3333818353705 ,
+ 10.225 , 1.31262109496076 ,
+ 10.23 , 1.23439607687214 ,
+ 10.235 , 1.09630588839482 ,
+ 10.24 , 0.902881246184685 ,
+ 10.245 , 0.665930257015006 ,
+ 10.25 , 0.403145595569434 ,
+ 10.255 , 0.135167464543167 ,
+ 10.26 , -0.1181889683435 ,
+ 10.265 , -0.34158112353947 ,
+ 10.27 , -0.5266606974231 ,
+ 10.275 , -0.67279436439978 ,
+ 10.28 , -0.78577175818034 ,
+ 10.285 , -0.87491503414711 ,
+ 10.29 , -0.94943871678613 ,
+ 10.295 , -1.01514749755514 ,
+ 10.3 , -1.07240552249575 ,
+ 10.305 , -1.1159454664886 ,
+ 10.31 , -1.13652214942974 ,
+ 10.315 , -1.12387719989209 ,
+ 10.32 , -1.07009467236169 ,
+ 10.325 , -0.9723415710773 ,
+ 10.33 , -0.83421714797159 ,
+ 10.335 , -0.66537603566363 ,
+ 10.34 , -0.47961924019497 ,
+ 10.345 , -0.29207437055768 ,
+ 10.35 , -0.11633661841191 ,
+ 10.355 , 3.762456752764130E-02 ,
+ 10.36 , 0.164274796553055 ,
+ 10.365 , 0.262005149857291 ,
+ 10.37 , 0.331666422264028 ,
+ 10.375 , 0.374819782001995 ,
+ 10.38 , 0.392377294442122 ,
+ 10.385 , 0.384141260826285 ,
+ 10.39 , 0.34936414194296 ,
+ 10.395 , 0.288052561776111 ,
+ 10.4 , 0.20242178785536 ,
+ 10.405 , 9.785306567479871E-02 ,
+ 10.41 , -1.713557520971730E-02 ,
+ 10.415 , -0.13204374310037 ,
+ 10.42 , -0.23639873810073 ,
+ 10.425 , -0.32201635263159 ,
+ 10.43 , -0.38475152712529 ,
+ 10.435 , -0.4251245384254 ,
+ 10.44 , -0.44753546126283 ,
+ 10.445 , -0.45825628870499 ,
+ 10.45 , -0.46279334754373 ,
+ 10.455 , -0.46346276944743 ,
+ 10.46 , -0.45799981189361 ,
+ 10.465 , -0.43972280992741 ,
+ 10.47 , -0.39929302861398 ,
+ 10.475 , -0.32758719542718 ,
+ 10.48 , -0.21885278786041 ,
+ 10.485 , -7.315503161217039E-02 ,
+ 10.49 , 0.102651407152514 ,
+ 10.495 , 0.295816563735959 ,
+ 10.5 , 0.490226934148564 ,
+ 10.505 , 0.669891810457828 ,
+ 10.51 , 0.82237594525252 ,
+ 10.515 , 0.941216017829958 ,
+ 10.52 , 1.02661998674533 ,
+ 10.525 , 1.08430529858058 ,
+ 10.53 , 1.12286636573309 ,
+ 10.535 , 1.15051988582967 ,
+ 10.54 , 1.17222128266484 ,
+ 10.545 , 1.18801420247095 ,
+ 10.55 , 1.19307665922947 ,
+ 10.555 , 1.17938295001738 ,
+ 10.56 , 1.13840303313913 ,
+ 10.565 , 1.06394181580147 ,
+ 10.57 , 0.95422952397942 ,
+ 10.575 , 0.812611611237298 ,
+ 10.58 , 0.646677789199809 ,
+ 10.585 , 0.466152014272008 ,
+ 10.59 , 0.280289725059773 ,
+ 10.595 , 9.565146176778430E-02 ,
+ 10.6 , -8.499446193837400E-02 ,
+ 10.605 , -0.26230216706899 ,
+ 10.61 , -0.4386137767682 ,
+ 10.615 , -0.6154630451662 ,
+ 10.62 , -0.79113786663093 ,
+ 10.625 , -0.9591661750224 ,
+ 10.63 , -1.10826769502301 ,
+ 10.635 , -1.22391556601366 ,
+ 10.64 , -1.29112533315649 ,
+ 10.645 , -1.29775475114347 ,
+ 10.65 , -1.23742365152054 ,
+ 10.655 , -1.11129656465532 ,
+ 10.66 , -0.9282894842173 ,
+ 10.665 , -0.70371663339333 ,
+ 10.67 , -0.45680011277455 ,
+ 10.675 , -0.20771128037236 ,
+ 10.68 , 2.512459612945220E-02 ,
+ 10.685 , 0.226918245807304 ,
+ 10.69 , 0.387350552286146 ,
+ 10.695 , 0.500473670939197 ,
+ 10.7 , 0.564029266358019 ,
+ 10.705 , 0.578637288901258 ,
+ 10.71 , 0.547211894628189 ,
+ 10.715 , 0.474757060973486 ,
+ 10.72 , 0.368436624005821 ,
+ 10.725 , 0.237615830995378 ,
+ 10.73 , 9.352792827951401E-02 ,
+ 10.735 , -5.167273774008210E-02 ,
+ 10.74 , -0.18646809540466 ,
+ 10.745 , -0.30187135567744 ,
+ 10.75 , -0.39316916542135 ,
+ 10.755 , -0.46096802891446 ,
+ 10.76 , -0.51111268636195 ,
+ 10.765 , -0.55334646668629 ,
+ 10.77 , -0.59891300067983 ,
+ 10.775 , -0.65764678122702 ,
+ 10.78 , -0.73525453842381 ,
+ 10.785 , -0.83150017185443 ,
+ 10.79 , -0.93976747420304 ,
+ 10.795 , -1.04812248595262 ,
+ 10.8 , -1.14160318244191 ,
+ 10.805 , -1.2051488991501 ,
+ 10.81 , -1.22646384585139 ,
+ 10.815 , -1.19814339245798 ,
+ 10.82 , -1.11865520710004 ,
+ 10.825 , -0.9920714349609 ,
+ 10.83 , -0.82681485385664 ,
+ 10.835 , -0.63386505629908 ,
+ 10.84 , -0.42496268277971 ,
+ 10.845 , -0.21119376102165 ,
+ 10.85 , -2.191019852703480E-03 ,
+ 10.855 , 0.194127641793734 ,
+ 10.86 , 0.371466018382975 ,
+ 10.865 , 0.525035130835761 ,
+ 10.87 , 0.651602813791636 ,
+ 10.875 , 0.749803994860723 ,
+ 10.88 , 0.820544481310922 ,
+ 10.885 , 0.867273287648818 ,
+ 10.89 , 0.895807866624117 ,
+ 10.895 , 0.913572593095597 ,
+ 10.9 , 0.928236729298366 ,
+ 10.905 , 0.946014350836689 ,
+ 10.91 , 0.970040868532415 ,
+ 10.915 , 0.999311930164329 ,
+ 10.92 , 1.02854682988849 ,
+ 10.925 , 1.04913139979 ,
+ 10.93 , 1.05098941441043 ,
+ 10.935 , 1.02499491482512 ,
+ 10.94 , 0.965351048328359 ,
+ 10.945 , 0.871370473531725 ,
+ 10.95 , 0.748233229517312 ,
+ 10.955 , 0.606563895886194 ,
+ 10.96 , 0.460955473292802 ,
+ 10.965 , 0.327805324612049 ,
+ 10.97 , 0.222950093923078 ,
+ 10.975 , 0.159562148201255 ,
+ 10.98 , 0.146631988185719 ,
+ 10.985 , 0.188170103964573 ,
+ 10.99 , 0.283066815855546 ,
+ 10.995 , 0.425428418732869 ,
+ 11.0 , 0.605185596503197 ,
+ 11.005 , 0.808842841129001 ,
+ 11.01 , 1.0203252588096 ,
+ 11.015 , 1.22200011907392 ,
+ 11.02 , 1.39594474367148 ,
+ 11.025 , 1.52549944650203 ,
+ 11.03 , 1.59700049844879 ,
+ 11.035 , 1.60145576944865 ,
+ 11.04 , 1.53581761942562 ,
+ 11.045 , 1.4034930323483 ,
+ 11.05 , 1.2138831423925 ,
+ 11.055 , 0.980912371026411 ,
+ 11.06 , 0.720812505576093 ,
+ 11.065 , 0.449601892036102 ,
+ 11.07 , 0.180857582628542 ,
+ 11.075 , -7.573381698891210E-02 ,
+ 11.08 , -0.31470812975405 ,
+ 11.085 , -0.53405962087938 ,
+ 11.09 , -0.73364261678681 ,
+ 11.095 , -0.91330540113887 ,
+ 11.1 , -1.07132417643687 ,
+ 11.105 , -1.20365312210336 ,
+ 11.11 , -1.30419832213249 ,
+ 11.115 , -1.36604239161232 ,
+ 11.12 , -1.38321880818252 ,
+ 11.125 , -1.35249870150789 ,
+ 11.13 , -1.27462783831177 ,
+ 11.135 , -1.15465182792767 ,
+ 11.14 , -1.00123343402233 ,
+ 11.145 , -0.82518952456788 ,
+ 11.15 , -0.63769529339716 ,
+ 11.155 , -0.44866816516864 ,
+ 11.16 , -0.26576203055682 ,
+ 11.165 , -9.416463454136630E-02 ,
+ 11.17 , 6.287575092606090E-02 ,
+ 11.175 , 0.203141505865471 ,
+ 11.18 , 0.324579712695666 ,
+ 11.185 , 0.424889751727608 ,
+ 11.19 , 0.501750804315283 ,
+ 11.195 , 0.5536421159011 ,
+ 11.2 , 0.580921794960766 ,
+ 11.205 , 0.586704260853481 ,
+ 11.21 , 0.5770850470881 ,
+ 11.215 , 0.560449668733132 ,
+ 11.22 , 0.545887300846328 ,
+ 11.225 , 0.541047479949923 ,
+ 11.23 , 0.549990662947013 ,
+ 11.235 , 0.571663114185204 ,
+ 11.24 , 0.599500251771258 ,
+ 11.245 , 0.62236878054162 ,
+ 11.25 , 0.626713322562836 ,
+ 11.255 , 0.599434772191117 ,
+ 11.26 , 0.530838614269415 ,
+ 11.265 , 0.416951659398843 ,
+ 11.27 , 0.26068866151549 ,
+ 11.275 , 7.163385796821510E-02 ,
+ 11.28 , -0.13542954911164 ,
+ 11.285 , -0.34285006284799 ,
+ 11.29 , -0.53271798082564 ,
+ 11.295 , -0.68922055953639 ,
+ 11.3 , -0.80031992822441 ,
+ 11.305 , -0.85859556643174 ,
+ 11.31 , -0.86132208764303 ,
+ 11.315 , -0.81002406922002 ,
+ 11.32 , -0.70979684966059 ,
+ 11.325 , -0.56862676261062 ,
+ 11.33 , -0.39681435075012 ,
+ 11.335 , -0.20645292887016 ,
+ 11.34 , -1.082875708200500E-02 ,
+ 11.345 , 0.176412752549899 ,
+ 11.35 , 0.342376371445806 ,
+ 11.355 , 0.476235796330172 ,
+ 11.36 , 0.570527791788077 ,
+ 11.365 , 0.622137109693916 ,
+ 11.37 , 0.632674434445817 ,
+ 11.375 , 0.608089217990313 ,
+ 11.38 , 0.557537864431003 ,
+ 11.385 , 0.491727720373806 ,
+ 11.39 , 0.421100488617183 ,
+ 11.395 , 0.35424883871057 ,
+ 11.4 , 0.296898598214297 ,
+ 11.405 , 0.251615782949777 ,
+ 11.41 , 0.218205567537362 ,
+ 11.415 , 0.194575186033259 ,
+ 11.42 , 0.177750889222743 ,
+ 11.425 , 0.164739545969125 ,
+ 11.43 , 0.153046754059915 ,
+ 11.435 , 0.140795993214209 ,
+ 11.44 , 0.12656443411951 ,
+ 11.445 , 0.109119048772985 ,
+ 11.45 , 8.726746617413900E-02 ,
+ 11.455 , 5.991980120903190E-02 ,
+ 11.46 , 2.635460927914640E-02 ,
+ 11.465 , -1.345275150280380E-02 ,
+ 11.47 , -5.863610709200840E-02 ,
+ 11.475 , -0.10755044102404 ,
+ 11.48 , -0.15824658177879 ,
+ 11.485 , -0.20921212071436 ,
+ 11.49 , -0.26013226175091 ,
+ 11.495 , -0.31237245530863 ,
+ 11.5 , -0.36890715351072 ,
+ 11.505 , -0.43358437734804 ,
+ 11.51 , -0.50981957766845 ,
+ 11.515 , -0.59903776556946 ,
+ 11.52 , -0.69931194037806 ,
+ 11.525 , -0.80465691443919 ,
+ 11.53 , -0.90529166691289 ,
+ 11.535 , -0.98894889157901 ,
+ 11.54 , -1.0430005689334 ,
+ 11.545 , -1.05693388169808 ,
+ 11.55 , -1.0245796623575 ,
+ 11.555 , -0.94554374723514 ,
+ 11.56 , -0.82548253167239 ,
+ 11.565 , -0.67515951222416 ,
+ 11.57 , -0.50853411181021 ,
+ 11.575 , -0.34035152824456 ,
+ 11.58 , -0.18380744340702 ,
+ 11.585 , -4.877605466847740E-02 ,
+ 11.59 , 5.909608053637810E-02 ,
+ 11.595 , 0.138405652647701 ,
+ 11.6 , 0.191311518017365 ,
+ 11.605 , 0.222508949979136 ,
+ 11.61 , 0.238194003082017 ,
+ 11.615 , 0.245269919971124 ,
+ 11.62 , 0.250838712250952 ,
+ 11.625 , 0.261870016704265 ,
+ 11.63 , 0.284836510438269 ,
+ 11.635 , 0.325131372886616 ,
+ 11.64 , 0.386198740355232 ,
+ 11.645 , 0.468513501462264 ,
+ 11.65 , 0.568696341674455 ,
+ 11.655 , 0.679148315040223 ,
+ 11.66 , 0.788508513966795 ,
+ 11.665 , 0.883056182933764 ,
+ 11.67 , 0.948906416298242 ,
+ 11.675 , 0.974570797520427 ,
+ 11.68 , 0.953277599477234 ,
+ 11.685 , 0.884438058167201 ,
+ 11.69 , 0.77382364723826 ,
+ 11.695 , 0.632334566850428 ,
+ 11.7 , 0.473622939615698 ,
+ 11.705 , 0.311143111887763 ,
+ 11.71 , 0.15539149490874 ,
+ 11.715 , 1.204008787083370E-02 ,
+ 11.72 , -0.1185541756946 ,
+ 11.725 , -0.24038836981401 ,
+ 11.73 , -0.35969118541412 ,
+ 11.735 , -0.48228327823872 ,
+ 11.74 , -0.61114632720659 ,
+ 11.745 , -0.74488165421895 ,
+ 11.75 , -0.87742903375438 ,
+ 11.755 , -0.9990735442117 ,
+ 11.76 , -1.09838127444184 ,
+ 11.765 , -1.16449496867241 ,
+ 11.77 , -1.18914405096313 ,
+ 11.775 , -1.1678940579368 ,
+ 11.78 , -1.10040933370095 ,
+ 11.785 , -0.98984205208497 ,
+ 11.79 , -0.8417105178341 ,
+ 11.795 , -0.66273801588279 ,
+ 11.8 , -0.46007426875265 ,
+ 11.805 , -0.24109784101173 ,
+ 11.81 , -1.376424841735200E-02 ,
+ 11.815 , 0.212820798236347 ,
+ 11.82 , 0.428004774853851 ,
+ 11.825 , 0.61976809620263 ,
+ 11.83 , 0.775664732827253 ,
+ 11.835 , 0.884459785072971 ,
+ 11.84 , 0.938105319486098 ,
+ 11.845 , 0.933533376809836 ,
+ 11.85 , 0.873720830366818 ,
+ 11.855 , 0.767639484838718 ,
+ 11.86 , 0.628977669852066 ,
+ 11.865 , 0.4738539721813 ,
+ 11.87 , 0.31801589351757 ,
+ 11.875 , 0.174157204161953 ,
+ 11.88 , 4.995725310342680E-02 ,
+ 11.885 , -5.275216941488590E-02 ,
+ 11.89 , -0.13756423084181 ,
+ 11.895 , -0.2120196831066 ,
+ 11.9 , -0.28548456301669 ,
+ 11.905 , -0.36691840941378 ,
+ 11.91 , -0.46300320666114 ,
+ 11.915 , -0.57696070561373 ,
+ 11.92 , -0.70814553643099 ,
+ 11.925 , -0.85232717509853 ,
+ 11.93 , -1.00241060096662 ,
+ 11.935 , -1.14936568830572 ,
+ 11.94 , -1.28315120023664 ,
+ 11.945 , -1.39356260774938 ,
+ 11.95 , -1.47101607033074 ,
+ 11.955 , -1.5073448490242 ,
+ 11.96 , -1.4966490584904 ,
+ 11.965 , -1.43616086274327 ,
+ 11.97 , -1.32698077186283 ,
+ 11.975 , -1.17446433758603 ,
+ 11.98 , -0.98804059864846 ,
+ 11.985 , -0.78032474331784 ,
+ 11.99 , -0.56556840849598 ,
+ 11.995 , -0.35765933543277 ,
+ 12.0 , -0.16807550799874 ,
+ 12.005 , -4.227255766186140E-03 ,
+ 12.01 , 0.131383604645629 ,
+ 12.015 , 0.240987503608671 ,
+ 12.02 , 0.330348730788584 ,
+ 12.025 , 0.406826008170448 ,
+ 12.03 , 0.477144240124697 ,
+ 12.035 , 0.545422501700242 ,
+ 12.04 , 0.611915404843405 ,
+ 12.045 , 0.672755857445556 ,
+ 12.05 , 0.720723072194553 ,
+ 12.055 , 0.746832365003761 ,
+ 12.06 , 0.742346946489963 ,
+ 12.065 , 0.700760339032901 ,
+ 12.07 , 0.619339003519911 ,
+ 12.075 , 0.499959785870592 ,
+ 12.08 , 0.349159304278182 ,
+ 12.085 , 0.177470223182518 ,
+ 12.09 , -1.753350545225190E-03 ,
+ 12.095 , -0.17379950342875 ,
+ 12.1 , -0.32413511149758 ,
+ 12.105 , -0.43987021437218 ,
+ 12.11 , -0.51104917071923 ,
+ 12.115 , -0.53171143244092 ,
+ 12.12 , -0.50064639271511 ,
+ 12.125 , -0.42174741533336 ,
+ 12.13 , -0.30385287601246 ,
+ 12.135 , -0.1599770009419 ,
+ 12.14 , -5.916472086063350E-03 ,
+ 12.145 , 0.141672124157728 ,
+ 12.15 , 0.267467136745314 ,
+ 12.155 , 0.359599717485464 ,
+ 12.16 , 0.411271872916484 ,
+ 12.165 , 0.421529890421321 ,
+ 12.17 , 0.394986365391134 ,
+ 12.175 , 0.340522937951077 ,
+ 12.18 , 0.269238562662315 ,
+ 12.185 , 0.19209641315972 ,
+ 12.19 , 0.11779958413244 ,
+ 12.195 , 5.136625423508250E-02 ,
+ 12.2 , -6.300947873046220E-03 ,
+ 12.205 , -5.782223054975370E-02 ,
+ 12.21 , -0.10793985148095 ,
+ 12.215 , -0.16174127408618 ,
+ 12.22 , -0.22298866763169 ,
+ 12.225 , -0.2929886222154 ,
+ 12.23 , -0.37024238871399 ,
+ 12.235 , -0.45090142997871 ,
+ 12.24 , -0.52980992267136 ,
+ 12.245 , -0.60178949630599 ,
+ 12.25 , -0.66276746147737 ,
+ 12.255 , -0.71046604589472 ,
+ 12.26 , -0.74450641227213 ,
+ 12.265 , -0.76599806365513 ,
+ 12.27 , -0.77681628816103 ,
+ 12.275 , -0.77885826543421 ,
+ 12.28 , -0.77352755022123 ,
+ 12.285 , -0.76159237398235 ,
+ 12.29 , -0.74340951487468 ,
+ 12.295 , -0.7193684533261 ,
+ 12.3 , -0.69033859752466 ,
+ 12.305 , -0.65790529310338 ,
+ 12.31 , -0.62427337609045 ,
+ 12.315 , -0.59183465481714 ,
+ 12.32 , -0.5625391602505 ,
+ 12.325 , -0.53727609431785 ,
+ 12.33 , -0.51549939568466 ,
+ 12.335 , -0.49523027754421 ,
+ 12.34 , -0.47348196058407 ,
+ 12.345 , -0.44699386193397 ,
+ 12.35 , -0.41308162478787 ,
+ 12.355 , -0.37035623858392 ,
+ 12.36 , -0.31912406711736 ,
+ 12.365 , -0.26136188585533 ,
+ 12.37 , -0.20030871435109 ,
+ 12.375 , -0.13979053261561 ,
+ 12.38 , -8.348819445843680E-02 ,
+ 12.385 , -3.432412971860200E-02 ,
+ 12.39 , 5.898257672503130E-03 ,
+ 12.395 , 3.658675251617240E-02 ,
+ 12.4 , 5.823490831704580E-02 ,
+ 12.405 , 7.220973009677149E-02 ,
+ 12.41 , 8.054556791305920E-02 ,
+ 12.415 , 8.583652449551200E-02 ,
+ 12.42 , 9.119751190995400E-02 ,
+ 12.425 , 0.10022495276452 ,
+ 12.43 , 0.116830802684467 ,
+ 12.435 , 0.144865533553475 ,
+ 12.44 , 0.187496464655846 ,
+ 12.445 , 0.246429769927851 ,
+ 12.45 , 0.321134575890146 ,
+ 12.455 , 0.408310004218564 ,
+ 12.46 , 0.501792671730819 ,
+ 12.465 , 0.593049206029892 ,
+ 12.47 , 0.672237912914609 ,
+ 12.475 , 0.729699407315016 ,
+ 12.48 , 0.757595593934302 ,
+ 12.485 , 0.751370987649759 ,
+ 12.49 , 0.710716591717499 ,
+ 12.495 , 0.639832178015772 ,
+ 12.5 , 0.546914264636683 ,
+ 12.505 , 0.442962983193198 ,
+ 12.51 , 0.340141957400465 ,
+ 12.515 , 0.249991895482425 ,
+ 12.52 , 0.181816356681784 ,
+ 12.525 , 0.14149413564273 ,
+ 12.53 , 0.130883062190031 ,
+ 12.535 , 0.147852731887966 ,
+ 12.54 , 0.186894240935408 ,
+ 12.545 , 0.240161777063203 ,
+ 12.55 , 0.298772249040031 ,
+ 12.555 , 0.3541646202598 ,
+ 12.56 , 0.399336722395081 ,
+ 12.565 , 0.429803491932159 ,
+ 12.57 , 0.444142296553351 ,
+ 12.575 , 0.444055340271153 ,
+ 12.58 , 0.433919042501565 ,
+ 12.585 , 0.41987739717275 ,
+ 12.59 , 0.408602791719151 ,
+ 12.595 , 0.405932599777175 ,
+ 12.6 , 0.415626645287793 ,
+ 12.605 , 0.438500795189521 ,
+ 12.61 , 0.47213105784221 ,
+ 12.615 , 0.511225323925744 ,
+ 12.62 , 0.548612052766521 ,
+ 12.625 , 0.576660272126196 ,
+ 12.63 , 0.588829953918048 ,
+ 12.635 , 0.581021197761628 ,
+ 12.64 , 0.552418992096461 ,
+ 12.645 , 0.505653719521126 ,
+ 12.65 , 0.446259700593861 ,
+ 12.655 , 0.381569197808235 ,
+ 12.66 , 0.319325454510432 ,
+ 12.665 , 0.266332799357825 ,
+ 12.67 , 0.227442179455834 ,
+ 12.675 , 0.20505248099 ,
+ 12.68 , 0.199165657452942 ,
+ 12.685 , 0.207885677656546 ,
+ 12.69 , 0.228151213713856 ,
+ 12.695 , 0.256464303289308 ,
+ 12.7 , 0.289423464944378 ,
+ 12.705 , 0.323974105633788 ,
+ 12.71 , 0.357399971553342 ,
+ 12.715 , 0.387180213631022 ,
+ 12.72 , 0.410871216078733 ,
+ 12.725 , 0.426149440224674 ,
+ 12.73 , 0.431066724422046 ,
+ 12.735 , 0.424468610875424 ,
+ 12.74 , 0.40643852414304 ,
+ 12.745 , 0.378585136191504 ,
+ 12.75 , 0.344023630341179 ,
+ 12.755 , 0.306976904799534 ,
+ 12.76 , 0.272045167670388 ,
+ 12.765 , 0.243295410789869 ,
+ 12.77 , 0.223399948751481 ,
+ 12.775 , 0.213036444793139 ,
+ 12.78 , 0.210713889469279 ,
+ 12.785 , 0.213057227036913 ,
+ 12.79 , 0.21547276609123 ,
+ 12.795 , 0.213006795751766 ,
+ 12.8 , 0.201182178134479 ,
+ 12.805 , 0.176611102924828 ,
+ 12.81 , 0.137299208402565 ,
+ 12.815 , 8.261651333889580E-02 ,
+ 12.82 , 1.306254997938910E-02 ,
+ 12.825 , -7.003874532972119E-02 ,
+ 12.83 , -0.16475325893821 ,
+ 12.835 , -0.26859374971277 ,
+ 12.84 , -0.37841766630558 ,
+ 12.845 , -0.49027765178853 ,
+ 12.85 , -0.59935591527846 ,
+ 12.855 , -0.70013189417767 ,
+ 12.86 , -0.78683177941038 ,
+ 12.865 , -0.85412623949955 ,
+ 12.87 , -0.89792127381358 ,
+ 12.875 , -0.91603916182254 ,
+ 12.88 , -0.90857357773468 ,
+ 12.885 , -0.87778714750083 ,
+ 12.89 , -0.8275372966502 ,
+ 12.895 , -0.76235786224487 ,
+ 12.9 , -0.68643393291051 ,
+ 12.905 , -0.60274756840487 ,
+ 12.91 , -0.51264247885951 ,
+ 12.915 , -0.41593073711012 ,
+ 12.92 , -0.3115269410358 ,
+ 12.925 , -0.19842747985447 ,
+ 12.93 , -7.676760694603291E-02 ,
+ 12.935 , 5.135539420685220E-02 ,
+ 12.94 , 0.181528383908596 ,
+ 12.945 , 0.307260660414741 ,
+ 12.95 , 0.420769213103223 ,
+ 12.955 , 0.514139979660135 ,
+ 12.96 , 0.580592682156079 ,
+ 12.965 , 0.615578076246798 ,
+ 12.97 , 0.617476907926892 ,
+ 12.975 , 0.587799377315074 ,
+ 12.98 , 0.530889280436902 ,
+ 12.985 , 0.453243660311424 ,
+ 12.99 , 0.362622392194437 ,
+ 12.995 , 0.2671120583141 ,
+ 13.0 , 0.174286119779362 ,
+ 13.005 , 9.052797178882990E-02 ,
+ 13.01 , 2.054498441234870E-02 ,
+ 13.015 , -3.294702871288870E-02 ,
+ 13.02 , -6.937300005549160E-02 ,
+ 13.025 , -9.028206231971420E-02 ,
+ 13.03 , -9.913110412573760E-02 ,
+ 13.035 , -0.10083734030815 ,
+ 13.04 , -0.10108450259662 ,
+ 13.045 , -0.1054266897417 ,
+ 13.05 , -0.1182915683999 ,
+ 13.055 , -0.14205888957835 ,
+ 13.06 , -0.17640190935702 ,
+ 13.065 , -0.21806865581631 ,
+ 13.07 , -0.26120089347156 ,
+ 13.075 , -0.29817769418101 ,
+ 13.08 , -0.32085004389739 ,
+ 13.085 , -0.32193831070962 ,
+ 13.09 , -0.29631759697471 ,
+ 13.095 , -0.24193696858333 ,
+ 13.1 , -0.16019970762232 ,
+ 13.105 , -5.574993867029920E-02 ,
+ 13.11 , 6.425618048517991E-02 ,
+ 13.115 , 0.19122987419663 ,
+ 13.12 , 0.316346629224766 ,
+ 13.125 , 0.431653751489729 ,
+ 13.13 , 0.530914954469608 ,
+ 13.135 , 0.610121196882937 ,
+ 13.14 , 0.667657470309265 ,
+ 13.145 , 0.704186599565721 ,
+ 13.15 , 0.722325191446681 ,
+ 13.155 , 0.726186367330791 ,
+ 13.16 , 0.720836106520834 ,
+ 13.165 , 0.711688820321258 ,
+ 13.17 , 0.703862564199362 ,
+ 13.175 , 0.701524520420123 ,
+ 13.18 , 0.707294612263167 ,
+ 13.185 , 0.721797723723084 ,
+ 13.19 , 0.743474213000332 ,
+ 13.195 , 0.768726481461021 ,
+ 13.2 , 0.792431876186836 ,
+ 13.205 , 0.808764824723334 ,
+ 13.21 , 0.812196723822406 ,
+ 13.215 , 0.798471820125594 ,
+ 13.22 , 0.765360902698407 ,
+ 13.225 , 0.713020417223642 ,
+ 13.23 , 0.643892155196421 ,
+ 13.235 , 0.562167990243985 ,
+ 13.24 , 0.472970245560551 ,
+ 13.245 , 0.381438619514679 ,
+ 13.25 , 0.291951206368075 ,
+ 13.255 , 0.20762340636979 ,
+ 13.26 , 0.130166940321081 ,
+ 13.265 , 6.006289386634430E-02 ,
+ 13.27 , -3.060365982684810E-03 ,
+ 13.275 , -6.001488208941340E-02 ,
+ 13.28 , -0.11173380533579 ,
+ 13.285 , -0.15914104631288 ,
+ 13.29 , -0.20317809418618 ,
+ 13.295 , -0.24493336090531 ,
+ 13.3 , -0.28573011925772 ,
+ 13.305 , -0.32707569024184 ,
+ 13.31 , -0.37040876594875 ,
+ 13.315 , -0.41668833903021 ,
+ 13.32 , -0.46592656198441 ,
+ 13.325 , -0.51683388329442 ,
+ 13.33 , -0.56671530350641 ,
+ 13.335 , -0.61172427575717 ,
+ 13.34 , -0.64745289857378 ,
+ 13.345 , -0.66975635467017 ,
+ 13.35 , -0.67561421984368 ,
+ 13.355 , -0.66382212752523 ,
+ 13.36 , -0.63533221269618 ,
+ 13.365 , -0.59315990071751 ,
+ 13.37 , -0.54187928568118 ,
+ 13.375 , -0.48684683870894 ,
+ 13.38 , -0.43334458417513 ,
+ 13.385 , -0.38584852580448 ,
+ 13.39 , -0.34757223717143 ,
+ 13.395 , -0.32034609191295 ,
+ 13.4 , -0.30479305822331 ,
+ 13.405 , -0.30068667519817 ,
+ 13.41 , -0.30734431404504 ,
+ 13.415 , -0.32393187524719 ,
+ 13.42 , -0.3496124571983 ,
+ 13.425 , -0.38355062958007 ,
+ 13.43 , -0.42483772740574 ,
+ 13.435 , -0.47243959941852 ,
+ 13.44 , -0.52523698989138 ,
+ 13.445 , -0.58218855059142 ,
+ 13.45 , -0.64255715702482 ,
+ 13.455 , -0.70611547192509 ,
+ 13.46 , -0.77319959733532 ,
+ 13.465 , -0.84453581144061 ,
+ 13.47 , -0.9208154277502 ,
+ 13.475 , -1.00210330165744 ,
+ 13.48 , -1.08722318257344 ,
+ 13.485 , -1.17331384017982 ,
+ 13.49 , -1.25571905330723 ,
+ 13.495 , -1.32830569669314 ,
+ 13.5 , -1.38419198321401 ,
+ 13.505 , -1.41674939954092 ,
+ 13.51 , -1.42066916256513 ,
+ 13.515 , -1.39284912504276 ,
+ 13.52 , -1.33290856588875 ,
+ 13.525 , -1.24321481899912 ,
+ 13.53 , -1.12845482092199 ,
+ 13.535 , -0.994859301148 ,
+ 13.54 , -0.84929200472393 ,
+ 13.545 , -0.69840229944309 ,
+ 13.55 , -0.5480171915834 ,
+ 13.555 , -0.40283245150506 ,
+ 13.56 , -0.26639859300057 ,
+ 13.565 , -0.1412841699847 ,
+ 13.57 , -2.930752910284020E-02 ,
+ 13.575 , 6.831031669366761E-02 ,
+ 13.58 , 0.150909902638648 ,
+ 13.585 , 0.218485436556094 ,
+ 13.59 , 0.271817772885176 ,
+ 13.595 , 0.312563547048263 ,
+ 13.6 , 0.343197563758831 ,
+ 13.605 , 0.366784232668975 ,
+ 13.61 , 0.386577813348275 ,
+ 13.615 , 0.405567940703392 ,
+ 13.62 , 0.426060284638387 ,
+ 13.625 , 0.449416325446865 ,
+ 13.63 , 0.476003373865086 ,
+ 13.635 , 0.505362938780156 ,
+ 13.64 , 0.536518767578895 ,
+ 13.645 , 0.568328300506654 ,
+ 13.65 , 0.599754845087405 ,
+ 13.655 , 0.630000025300325 ,
+ 13.66 , 0.6584695973929 ,
+ 13.665 , 0.68462841460832 ,
+ 13.67 , 0.70782686172262 ,
+ 13.675 , 0.727203534668359 ,
+ 13.68 , 0.741722744375036 ,
+ 13.685 , 0.750362416108883 ,
+ 13.69 , 0.752392406085506 ,
+ 13.695 , 0.747650040601305 ,
+ 13.7 , 0.736696231685042 ,
+ 13.705 , 0.720777621636586 ,
+ 13.71 , 0.701571294344929 ,
+ 13.715 , 0.680769236869278 ,
+ 13.72 , 0.659613778989939 ,
+ 13.725 , 0.638519591968826 ,
+ 13.73 , 0.616905016742059 ,
+ 13.735 , 0.593283746255628 ,
+ 13.74 , 0.565603855337414 ,
+ 13.745 , 0.531733554716355 ,
+ 13.75 , 0.489962659748419 ,
+ 13.755 , 0.439375608243233 ,
+ 13.76 , 0.380009446404367 ,
+ 13.765 , 0.312773129830936 ,
+ 13.77 , 0.239195423372873 ,
+ 13.775 , 0.16110638214858 ,
+ 13.78 , 8.038995906805420E-02 ,
+ 13.785 , -1.102897232504770E-03 ,
+ 13.79 , -8.144778281704360E-02 ,
+ 13.795 , -0.15840843583426 ,
+ 13.8 , -0.22917659635052 ,
+ 13.805 , -0.29024518206889 ,
+ 13.81 , -0.33752175024298 ,
+ 13.815 , -0.36674198188098 ,
+ 13.82 , -0.37413071891857 ,
+ 13.825 , -0.35717935529397 ,
+ 13.83 , -0.31535074520267 ,
+ 13.835 , -0.25052105857336 ,
+ 13.84 , -0.16702284226815 ,
+ 13.845 , -7.124636094412699E-02 ,
+ 13.85 , 2.913353087510890E-02 ,
+ 13.855 , 0.126149325078345 ,
+ 13.86 , 0.212544685340441 ,
+ 13.865 , 0.282593826653342 ,
+ 13.87 , 0.33259342353236 ,
+ 13.875 , 0.360977014896564 ,
+ 13.88 , 0.368090497895831 ,
+ 13.885 , 0.355740094833499 ,
+ 13.89 , 0.326653538417733 ,
+ 13.895 , 0.283980395609887 ,
+ 13.9 , 0.230911938687721 ,
+ 13.905 , 0.170438689852821 ,
+ 13.91 , 0.105217955743757 ,
+ 13.915 , 3.748846121428490E-02 ,
+ 13.92 , -3.100811006762060E-02 ,
+ 13.925 , -9.912461677678459E-02 ,
+ 13.93 , -0.16638732593593 ,
+ 13.935 , -0.23301599989748 ,
+ 13.94 , -0.29981098203477 ,
+ 13.945 , -0.36788336374228 ,
+ 13.95 , -0.43823790831234 ,
+ 13.955 , -0.51128976367887 ,
+ 13.96 , -0.58642827752511 ,
+ 13.965 , -0.66176331535379 ,
+ 13.97 , -0.7341480161194 ,
+ 13.975 , -0.79952454249667 ,
+ 13.98 , -0.85353878258576 ,
+ 13.985 , -0.89230509468498 ,
+ 13.99 , -0.9131476514604 ,
+ 13.995 , -0.91514375354423 ,
+ 14.0 , -0.8993367487938 ,
+ 14.005 , -0.86856422332842 ,
+ 14.01 , -0.82694415950239 ,
+ 14.015 , -0.77913771351111 ,
+ 14.02 , -0.72955729658514 ,
+ 14.025 , -0.68168905647206 ,
+ 14.03 , -0.63766151216947 ,
+ 14.035 , -0.59811504505913 ,
+ 14.04 , -0.56235853309889 ,
+ 14.045 , -0.52872726325526 ,
+ 14.05 , -0.49503897771436 ,
+ 14.055 , -0.45902725746187 ,
+ 14.06 , -0.41868594009816 ,
+ 14.065 , -0.37248337306763 ,
+ 14.07 , -0.31947100513302 ,
+ 14.075 , -0.25931189817463 ,
+ 14.08 , -0.19228261646431 ,
+ 14.085 , -0.11925792681763 ,
+ 14.09 , -4.169532968283350E-02 ,
+ 14.095 , 3.843303316390890E-02 ,
+ 14.1 , 0.118775003838835 ,
+ 14.105 , 0.196837583343436 ,
+ 14.11 , 0.270307193173439 ,
+ 14.115 , 0.337420184008135 ,
+ 14.12 , 0.397291393971841 ,
+ 14.125 , 0.450126440210993 ,
+ 14.13 , 0.497226657276013 ,
+ 14.135 , 0.540774142842358 ,
+ 14.14 , 0.58340264798186 ,
+ 14.145 , 0.627643304621108 ,
+ 14.15 , 0.675349975738562 ,
+ 14.155 , 0.727241025622671 ,
+ 14.16 , 0.782651129746367 ,
+ 14.165 , 0.839560451090441 ,
+ 14.17 , 0.894881294455553 ,
+ 14.175 , 0.944955884798899 ,
+ 14.18 , 0.986144014351956 ,
+ 14.185 , 1.015390719979 ,
+ 14.19 , 1.0306572943892 ,
+ 14.195 , 1.03115234481902 ,
+ 14.2 , 1.01733343986871 ,
+ 14.205 , 0.990709541557108 ,
+ 14.21 , 0.953502790822332 ,
+ 14.215 , 0.908254264710393 ,
+ 14.22 , 0.857454756635746 ,
+ 14.225 , 0.803265224100822 ,
+ 14.23 , 0.74737385316121 ,
+ 14.235 , 0.690995601525318 ,
+ 14.24 , 0.635005073529152 ,
+ 14.245 , 0.580160133049894 ,
+ 14.25 , 0.527369694111442 ,
+ 14.255 , 0.477938039158216 ,
+ 14.26 , 0.433728338232803 ,
+ 14.265 , 0.397194149800069 ,
+ 14.27 , 0.371248511478309 ,
+ 14.275 , 0.358963505823744 ,
+ 14.28 , 0.363137797938165 ,
+ 14.285 , 0.385787231840523 ,
+ 14.29 , 0.427657749130475 ,
+ 14.295 , 0.487849697242734 ,
+ 14.3 , 0.563646552494242 ,
+ 14.305 , 0.650598748291401 ,
+ 14.31 , 0.742869615401765 ,
+ 14.315 , 0.833794067276776 ,
+ 14.32 , 0.916556460872168 ,
+ 14.325 , 0.984863842045941 ,
+ 14.33 , 1.0335040976667 ,
+ 14.335 , 1.05869041827564 ,
+ 14.34 , 1.05816644274048 ,
+ 14.345 , 1.03108361491544 ,
+ 14.35 , 0.977735351761127 ,
+ 14.355 , 0.899232930675646 ,
+ 14.36 , 0.797237214065439 ,
+ 14.365 , 0.673796884116058 ,
+ 14.37 , 0.531337867932015 ,
+ 14.375 , 0.372747573641774 ,
+ 14.38 , 0.20150981243218 ,
+ 14.385 , 2.178427411223690E-02 ,
+ 14.39 , -0.16161383529816 ,
+ 14.395 , -0.34339606863716 ,
+ 14.4 , -0.5181084642692 ,
+ 14.405 , -0.68053644448525 ,
+ 14.41 , -0.826088703855 ,
+ 14.415 , -0.95112570187104 ,
+ 14.42 , -1.05313423965707 ,
+ 14.425 , -1.13075625342751 ,
+ 14.43 , -1.18366851217429 ,
+ 14.435 , -1.21238579974723 ,
+ 14.44 , -1.21803310838506 ,
+ 14.445 , -1.20215241564511 ,
+ 14.45 , -1.16656016251128 ,
+ 14.455 , -1.113269900772 ,
+ 14.46 , -1.04444581397611 ,
+ 14.465 , -0.96236345544593 ,
+ 14.47 , -0.86935386142724 ,
+ 14.475 , -0.76773118679175 ,
+ 14.48 , -0.65972693552001 ,
+ 14.485 , -0.54746173019692 ,
+ 14.49 , -0.43299292085595 ,
+ 14.495 , -0.3184397215422 ,
+ 14.5 , -0.20616849862018 ,
+ 14.505 , -9.897318159698620E-02 ,
+ 14.51 , -1.803143023172810E-04 ,
+ 14.515 , 8.640194233650360E-02 ,
+ 14.52 , 0.156727372406871 ,
+ 14.525 , 0.206940131693837 ,
+ 14.53 , 0.233914703352716 ,
+ 14.535 , 0.235793875210402 ,
+ 14.54 , 0.212387260096523 ,
+ 14.545 , 0.165314426336394 ,
+ 14.55 , 9.783758697368690E-02 ,
+ 14.555 , 1.439534230634960E-02 ,
+ 14.56 , -8.005859022341789E-02 ,
+ 14.565 , -0.18076618261283 ,
+ 14.57 , -0.28374454180973 ,
+ 14.575 , -0.38610798365218 ,
+ 14.58 , -0.48605081190961 ,
+ 14.585 , -0.58252398542127 ,
+ 14.59 , -0.67470367132805 ,
+ 14.595 , -0.76142935693159 ,
+ 14.6 , -0.8407780560685 ,
+ 14.605 , -0.90992374040628 ,
+ 14.61 , -0.96532870247995 ,
+ 14.615 , -1.00324396367882 ,
+ 14.62 , -1.02038773635927 ,
+ 14.625 , -1.01463341589249 ,
+ 14.63 , -0.98552757460307 ,
+ 14.635 , -0.93450835223946 ,
+ 14.64 , -0.86477120783303 ,
+ 14.645 , -0.78081893710178 ,
+ 14.65 , -0.68781873202676 ,
+ 14.655 , -0.59091719649253 ,
+ 14.66 , -0.49467793607145 ,
+ 14.665 , -0.40274402274473 ,
+ 14.67 , -0.31777533615604 ,
+ 14.675 , -0.24161241000393 ,
+ 14.68 , -0.17557875216008 ,
+ 14.685 , -0.12078750746673 ,
+ 14.69 , -7.835224295217311E-02 ,
+ 14.695 , -4.942101977486440E-02 ,
+ 14.7 , -3.503749471905150E-02 ,
+ 14.705 , -3.587495731215070E-02 ,
+ 14.71 , -5.194398103175540E-02 ,
+ 14.715 , -8.236828155631780E-02 ,
+ 14.72 , -0.12531697112263 ,
+ 14.725 , -0.17812203875209 ,
+ 14.73 , -0.23756805254037 ,
+ 14.735 , -0.30028601265584 ,
+ 14.74 , -0.36316012018238 ,
+ 14.745 , -0.42365909583363 ,
+ 14.75 , -0.48002335079991 ,
+ 14.755 , -0.53128602795839 ,
+ 14.76 , -0.57714447879069 ,
+ 14.765 , -0.61773654874064 ,
+ 14.77 , -0.65338922947777 ,
+ 14.775 , -0.68440719071073 ,
+ 14.78 , -0.71094150841826 ,
+ 14.785 , -0.73295383213119 ,
+ 14.79 , -0.75025831938642 ,
+ 14.795 , -0.76260438890415 ,
+ 14.8 , -0.76975912976851 ,
+ 14.805 , -0.77155180131721 ,
+ 14.81 , -0.76787415141689 ,
+ 14.815 , -0.75863134459094 ,
+ 14.82 , -0.74368104295612 ,
+ 14.825 , -0.72278322433993 ,
+ 14.83 , -0.69560054902327 ,
+ 14.835 , -0.66175375591306 ,
+ 14.84 , -0.62093898535516 ,
+ 14.845 , -0.57306913773937 ,
+ 14.85 , -0.51841917741191 ,
+ 14.855 , -0.45771315164191 ,
+ 14.86 , -0.392137917305 ,
+ 14.865 , -0.3232532945768 ,
+ 14.87 , -0.25282156152333 ,
+ 14.875 , -0.18257072630809 ,
+ 14.88 , -0.11395570313114 ,
+ 14.885 , -4.795078990473090E-02 ,
+ 14.89 , 1.505030752196730E-02 ,
+ 14.895 , 7.523505899511330E-02 ,
+ 14.9 , 0.133241663209769 ,
+ 14.905 , 0.189946958395501 ,
+ 14.91 , 0.246204884243539 ,
+ 14.915 , 0.302617865301028 ,
+ 14.92 , 0.359383341937356 ,
+ 14.925 , 0.416272256914715 ,
+ 14.93 , 0.472730379837134 ,
+ 14.935 , 0.528097455638089 ,
+ 14.94 , 0.581866656852053 ,
+ 14.945 , 0.633923511292493 ,
+ 14.95 , 0.684671503159956 ,
+ 14.955 , 0.735006617044871 ,
+ 14.96 , 0.78610900707482 ,
+ 14.965 , 0.839096114213373 ,
+ 14.97 , 0.894592925855566 ,
+ 14.975 , 0.952340646800937 ,
+ 14.98 , 1.0109322862822 ,
+ 14.985 , 1.06776815099708 ,
+ 14.99 , 1.11925763952313 ,
+ 14.995 , 1.16125733848899 ,
+ 15.0 , 1.18965840938029 ,
+ 15.005 , 1.20101711803106 ,
+ 15.01 , 1.19309156203439 ,
+ 15.015 , 1.16518353563898 ,
+ 15.02 , 1.11821232455035 ,
+ 15.025 , 1.0545184865003 ,
+ 15.03 , 0.977448615628865 ,
+ 15.035 , 0.890815252481333 ,
+ 15.04 , 0.798354444510221 ,
+ 15.045 , 0.703279494461959 ,
+ 15.05 , 0.60801847543151 ,
+ 15.055 , 0.514150357593879 ,
+ 15.06 , 0.422530486995826 ,
+ 15.065 , 0.333543044544543 ,
+ 15.07 , 0.247413880227417 ,
+ 15.075 , 0.164505011560775 ,
+ 15.08 , 8.554502116652860E-02 ,
+ 15.085 , 1.176008397877900E-02 ,
+ 15.09 , -5.508991016794810E-02 ,
+ 15.095 , -0.11277329041032 ,
+ 15.1 , -0.15872202731611 ,
+ 15.105 , -0.19023769676271 ,
+ 15.11 , -0.20475543680883 ,
+ 15.115 , -0.20016459209247 ,
+ 15.12 , -0.17515953672649 ,
+ 15.125 , -0.1295909322101 ,
+ 15.13 , -6.475341455153370E-02 ,
+ 15.135 , 1.645644779243700E-02 ,
+ 15.14 , 0.109582085491203 ,
+ 15.145 , 0.208891920094615 ,
+ 15.15 , 0.307902347961824 ,
+ 15.155 , 0.400086953541137 ,
+ 15.16 , 0.479656312478387 ,
+ 15.165 , 0.54227026093024 ,
+ 15.17 , 0.585531391323096 ,
+ 15.175 , 0.60915577781107 ,
+ 15.18 , 0.614771789148716 ,
+ 15.185 , 0.605386403919845 ,
+ 15.19 , 0.584635659710548 ,
+ 15.195 , 0.555987240463961 ,
+ 15.2 , 0.522078576056577 ,
+ 15.205 , 0.484332615313383 ,
+ 15.21 , 0.44293940454718 ,
+ 15.215 , 0.397175120559912 ,
+ 15.22 , 0.345968006972672 ,
+ 15.225 , 0.288543030116857 ,
+ 15.23 , 0.224972791486283 ,
+ 15.235 , 0.156481408793171 ,
+ 15.24 , 8.542958350357370E-02 ,
+ 15.245 , 1.498370477529230E-02 ,
+ 15.25 , -5.142934425176120E-02 ,
+ 15.255 , -0.1107437937938 ,
+ 15.26 , -0.16078441017566 ,
+ 15.265 , -0.20057844669055 ,
+ 15.27 , -0.23037829970624 ,
+ 15.275 , -0.2514154045316 ,
+ 15.28 , -0.26546110414046 ,
+ 15.285 , -0.27433386226401 ,
+ 15.29 , -0.27947343680654 ,
+ 15.295 , -0.28170382574971 ,
+ 15.3 , -0.28121922535055 ,
+ 15.305 , -0.27778333156123 ,
+ 15.31 , -0.27106104276765 ,
+ 15.315 , -0.26098347288903 ,
+ 15.32 , -0.2480337104626 ,
+ 15.325 , -0.23338239832851 ,
+ 15.33 , -0.21883669131141 ,
+ 15.335 , -0.20662723365469 ,
+ 15.34 , -0.19908795725974 ,
+ 15.345 , -0.1983095632208 ,
+ 15.35 , -0.20583511356768 ,
+ 15.355 , -0.22245388077999 ,
+ 15.36 , -0.24810721805446 ,
+ 15.365 , -0.28190022979588 ,
+ 15.37 , -0.32218399867655 ,
+ 15.375 , -0.36668187000496 ,
+ 15.38 , -0.41262893144551 ,
+ 15.385 , -0.4569195252945 ,
+ 15.39 , -0.49626700745835 ,
+ 15.395 , -0.52739011070132 ,
+ 15.4 , -0.54723474350703 ,
+ 15.405 , -0.55322582044501 ,
+ 15.41 , -0.54352567312437 ,
+ 15.415 , -0.51725918301048 ,
+ 15.42 , -0.47466073347181 ,
+ 15.425 , -0.41710230560527 ,
+ 15.43 , -0.34698928139492 ,
+ 15.435 , -0.26752756403572 ,
+ 15.44 , -0.18240759770015 ,
+ 15.445 , -9.545429827632960E-02 ,
+ 15.45 , -1.031774321012660E-02 ,
+ 15.455 , 6.975569716684001E-02 ,
+ 15.46 , 0.142031815271298 ,
+ 15.465 , 0.204287600135245 ,
+ 15.47 , 0.254724524020873 ,
+ 15.475 , 0.291852234959508 ,
+ 15.48 , 0.314393966922164 ,
+ 15.485 , 0.321257693596354 ,
+ 15.49 , 0.311592647764159 ,
+ 15.495 , 0.284924209311069 ,
+ 15.5 , 0.241333574629117 ,
+ 15.505 , 0.181630984411648 ,
+ 15.51 , 0.107473789318163 ,
+ 15.515 , 2.138659993284420E-02 ,
+ 15.52 , -7.333294612818740E-02 ,
+ 15.525 , -0.17281819572361 ,
+ 15.53 , -0.2729111163528 ,
+ 15.535 , -0.36947452952708 ,
+ 15.54 , -0.45868092644508 ,
+ 15.545 , -0.53724054983261 ,
+ 15.55 , -0.60253835404275 ,
+ 15.555 , -0.65267651763316 ,
+ 15.56 , -0.6864354117723 ,
+ 15.565 , -0.70318229683703 ,
+ 15.57 , -0.70276183568102 ,
+ 15.575 , -0.68540176686393 ,
+ 15.58 , -0.6516520838685 ,
+ 15.585 , -0.60236502510189 ,
+ 15.59 , -0.538706492591 ,
+ 15.595 , -0.46217410897888 ,
+ 15.6 , -0.37460077533887 ,
+ 15.605 , -0.27810973417383 ,
+ 15.61 , -0.17502716813551 ,
+ 15.615 , -6.773228527287170E-02 ,
+ 15.62 , 4.151501433409210E-02 ,
+ 15.625 , 0.150751860185515 ,
+ 15.63 , 0.258442092002889 ,
+ 15.635 , 0.363538574930614 ,
+ 15.64 , 0.465442765332169 ,
+ 15.645 , 0.563876126508653 ,
+ 15.65 , 0.658665592231715 ,
+ 15.655 , 0.749509291460253 ,
+ 15.66 , 0.835755718589599 ,
+ 15.665 , 0.916264699152492 ,
+ 15.67 , 0.989375816925145 ,
+ 15.675 , 1.05301420158238 ,
+ 15.68 , 1.10490739292059 ,
+ 15.685 , 1.14288462647541 ,
+ 15.69 , 1.16518849553063 ,
+ 15.695 , 1.1707464912492 ,
+ 15.7 , 1.15934157640063 ,
+ 15.705 , 1.13165264409975 ,
+ 15.71 , 1.08916287801769 ,
+ 15.715 , 1.03396048449819 ,
+ 15.72 , 0.968480895649285 ,
+ 15.725 , 0.895239610317516 ,
+ 15.73 , 0.816614791244956 ,
+ 15.735 , 0.734699276030846 ,
+ 15.74 , 0.651241095374945 ,
+ 15.745 , 0.567649521370319 ,
+ 15.75 , 0.485049163207599 ,
+ 15.755 , 0.404335549986381 ,
+ 15.76 , 0.326219056425138 ,
+ 15.765 , 0.251231356865374 ,
+ 15.77 , 0.179720965294244 ,
+ 15.775 , 0.111831041730238 ,
+ 15.78 , 4.750476279777080E-02 ,
+ 15.785 , -1.347798247405040E-02 ,
+ 15.79 , -7.141356069694010E-02 ,
+ 15.795 , -0.12656450883031 ,
+ 15.8 , -0.1790372399842 ,
+ 15.805 , -0.2286955113047 ,
+ 15.81 , -0.27512243015728 ,
+ 15.815 , -0.31766447732324 ,
+ 15.82 , -0.3555388110919 ,
+ 15.825 , -0.38798921520158 ,
+ 15.83 , -0.41444221410296 ,
+ 15.835 , -0.43463094635962 ,
+ 15.84 , -0.44864369112348 ,
+ 15.845 , -0.4568931292131 ,
+ 15.85 , -0.46000160926806 ,
+ 15.855 , -0.45865250041628 ,
+ 15.86 , -0.45343877892519 ,
+ 15.865 , -0.44476504067162 ,
+ 15.87 , -0.43283082098116 ,
+ 15.875 , -0.41771237775514 ,
+ 15.88 , -0.3995214147592 ,
+ 15.885 , -0.37860415544342 ,
+ 15.89 , -0.35572212713179 ,
+ 15.895 , -0.33216132888134 ,
+ 15.9 , -0.30972572285948 ,
+ 15.905 , -0.29059799700979 ,
+ 15.91 , -0.27708096353175 ,
+ 15.915 , -0.27126155854412 ,
+ 15.92 , -0.2746590319597 ,
+ 15.925 , -0.28792675974919 ,
+ 15.93 , -0.31066689274262 ,
+ 15.935 , -0.34140077106906 ,
+ 15.94 , -0.3777039602476 ,
+ 15.945 , -0.41648665097944 ,
+ 15.95 , -0.45437291128764 ,
+ 15.955 , -0.48811381404708 ,
+ 15.96 , -0.51496612193939 ,
+ 15.965 , -0.5329765854495 ,
+ 15.97 , -0.54113053164364 ,
+ 15.975 , -0.53935053269995 ,
+ 15.98 , -0.52835825596445 ,
+ 15.985 , -0.50943591924887 ,
+ 15.99 , -0.48413923071434 ,
+ 15.995 , -0.45401661733085 ,
+ 16.0 , -0.42038541841803 ,
+ 16.005 , -0.38419449756936 ,
+ 16.01 , -0.34598883075877 ,
+ 16.015 , -0.30596135684737 ,
+ 16.02 , -0.26406862723475 ,
+ 16.025 , -0.22017134269813 ,
+ 16.03 , -0.17416871222392 ,
+ 16.035 , -0.12609398639317 ,
+ 16.04 , -7.616580091339020E-02 ,
+ 16.045 , -2.479105816937940E-02 ,
+ 16.05 , 2.745737110728120E-02 ,
+ 16.055 , 7.987861751112391E-02 ,
+ 16.06 , 0.131672708259285 ,
+ 16.065 , 0.181958505928516 ,
+ 16.07 , 0.229779175022502 ,
+ 16.075 , 0.274114727562895 ,
+ 16.08 , 0.313912537790184 ,
+ 16.085 , 0.348155259464482 ,
+ 16.09 , 0.375959714090624 ,
+ 16.095 , 0.396703409827832 ,
+ 16.1 , 0.410143539243666 ,
+ 16.105 , 0.416499539855543 ,
+ 16.11 , 0.416464899336383 ,
+ 16.115 , 0.411132431725026 ,
+ 16.12 , 0.401834694221056 ,
+ 16.125 , 0.389926331168038 ,
+ 16.13 , 0.376552509432684 ,
+ 16.135 , 0.362455371415181 ,
+ 16.14 , 0.347864663265341 ,
+ 16.145 , 0.332498409591647 ,
+ 16.15 , 0.315673926599289 ,
+ 16.155 , 0.296498803516978 ,
+ 16.16 , 0.274095775096738 ,
+ 16.165 , 0.247800859489553 ,
+ 16.17 , 0.217295286911219 ,
+ 16.175 , 0.182636701553898 ,
+ 16.18 , 0.144199700257594 ,
+ 16.185 , 0.102548913123023 ,
+ 16.19 , 5.829530297192130E-02 ,
+ 16.195 , 1.197592728082750E-02 ,
+ 16.2 , -3.600290534227300E-02 ,
+ 16.205 , -8.535615468618291E-02 ,
+ 16.21 , -0.13584918811621 ,
+ 16.215 , -0.18721153582539 ,
+ 16.22 , -0.23906457716721 ,
+ 16.225 , -0.29090350734869 ,
+ 16.23 , -0.34213587188623 ,
+ 16.235 , -0.392170780993 ,
+ 16.24 , -0.44051591221236 ,
+ 16.245 , -0.48684480865516 ,
+ 16.25 , -0.53098857668878 ,
+ 16.255 , -0.57284978382707 ,
+ 16.26 , -0.61224319073572 ,
+ 16.265 , -0.64871598685836 ,
+ 16.27 , -0.68140334352395 ,
+ 16.275 , -0.70898222576025 ,
+ 16.28 , -0.7297595947791 ,
+ 16.285 , -0.7418948815967 ,
+ 16.29 , -0.74371891027858 ,
+ 16.295 , -0.73407611710958 ,
+ 16.3 , -0.71260329024102 ,
+ 16.305 , -0.67986749030603 ,
+ 16.31 , -0.63732240300856 ,
+ 16.315 , -0.58707824160675 ,
+ 16.32 , -0.53154405116823 ,
+ 16.325 , -0.47301455154914 ,
+ 16.33 , -0.41331652122001 ,
+ 16.335 , -0.35357961212191 ,
+ 16.34 , -0.29419497300413 ,
+ 16.345 , -0.23495140181355 ,
+ 16.35 , -0.17531083484956 ,
+ 16.355 , -0.11473456907756 ,
+ 16.36 , -5.298091218194400E-02 ,
+ 16.365 , 9.709062607778981E-03 ,
+ 16.37 , 7.256409889259650E-02 ,
+ 16.375 , 0.134384503385863 ,
+ 16.38 , 0.193739454595389 ,
+ 16.385 , 0.24920525086789 ,
+ 16.39 , 0.299568602241651 ,
+ 16.395 , 0.343956956389216 ,
+ 16.4 , 0.381866908791684 ,
+ 16.405 , 0.413114650618461 ,
+ 16.41 , 0.437733369467239 ,
+ 16.415 , 0.455877974867213 ,
+ 16.42 , 0.46776384132681 ,
+ 16.425 , 0.473663922748246 ,
+ 16.43 , 0.47395074709205 ,
+ 16.435 , 0.469159269294089 ,
+ 16.44 , 0.460028874160481 ,
+ 16.445 , 0.447496145434672 ,
+ 16.45 , 0.43262324571891 ,
+ 16.455 , 0.416476298710912 ,
+ 16.46 , 0.39998487143001 ,
+ 16.465 , 0.383825594174033 ,
+ 16.47 , 0.368369873101624 ,
+ 16.475 , 0.353714574674185 ,
+ 16.48 , 0.339789306901935 ,
+ 16.485 , 0.326509782519242 ,
+ 16.49 , 0.313927074313828 ,
+ 16.495 , 0.302325131506492 ,
+ 16.5 , 0.292230126681682 ,
+ 16.505 , 0.284323481848275 ,
+ 16.51 , 0.279278430837744 ,
+ 16.515 , 0.277565991023392 ,
+ 16.52 , 0.27928378094795 ,
+ 16.525 , 0.284059216918989 ,
+ 16.53 , 0.291055442661278 ,
+ 16.535 , 0.299081158427955 ,
+ 16.54 , 0.306775986803293 ,
+ 16.545 , 0.312824550426672 ,
+ 16.55 , 0.316148133716397 ,
+ 16.555 , 0.316029035226392 ,
+ 16.56 , 0.31215069004257 ,
+ 16.565 , 0.304553318859 ,
+ 16.57 , 0.293538129439739 ,
+ 16.575 , 0.279551088336509 ,
+ 16.58 , 0.263087654869009 ,
+ 16.585 , 0.244637877428558 ,
+ 16.59 , 0.224678132698894 ,
+ 16.595 , 0.203690933512921 ,
+ 16.6 , 0.182189070638557 ,
+ 16.605 , 0.160712533967535 ,
+ 16.61 , 0.139788985048289 ,
+ 16.615 , 0.119849630257617 ,
+ 16.62 , 0.101127004531768 ,
+ 16.625 , 8.356184746823360E-02 ,
+ 16.63 , 6.675788773408831E-02 ,
+ 16.635 , 5.000422430522750E-02 ,
+ 16.64 , 3.237781788478290E-02 ,
+ 16.645 , 1.290492007865870E-02 ,
+ 16.65 , -9.242841522190411E-03 ,
+ 16.655 , -3.457307113926180E-02 ,
+ 16.66 , -6.315044794397080E-02 ,
+ 16.665 , -9.456431033805510E-02 ,
+ 16.67 , -0.12798945588883 ,
+ 16.675 , -0.16233338586658 ,
+ 16.68 , -0.19643231791386 ,
+ 16.685 , -0.22926030484873 ,
+ 16.69 , -0.26010137973961 ,
+ 16.695 , -0.28866176894499 ,
+ 16.7 , -0.31509595200913 ,
+ 16.705 , -0.33995273832631 ,
+ 16.71 , -0.36405095016433 ,
+ 16.715 , -0.38831357635509 ,
+ 16.72 , -0.41358504112542 ,
+ 16.725 , -0.44046253469103 ,
+ 16.73 , -0.46915752304 ,
+ 16.735 , -0.49941060932339 ,
+ 16.74 , -0.53046223395319 ,
+ 16.745 , -0.56108536534834 ,
+ 16.75 , -0.58967419378453 ,
+ 16.755 , -0.61438209498106 ,
+ 16.76 , -0.63329121107995 ,
+ 16.765 , -0.64459684400811 ,
+ 16.77 , -0.64678096256853 ,
+ 16.775 , -0.63875489537808 ,
+ 16.78 , -0.61995220147847 ,
+ 16.785 , -0.59036060295097 ,
+ 16.79 , -0.55049669392639 ,
+ 16.795 , -0.50133039140924 ,
+ 16.8 , -0.44418245956687 ,
+ 16.805 , -0.38061075875138 ,
+ 16.81 , -0.31231562731901 ,
+ 16.815 , -0.24106197922092 ,
+ 16.82 , -0.1686326543263 ,
+ 16.825 , -9.679598568714549E-02 ,
+ 16.83 , -2.728380092511400E-02 ,
+ 16.835 , 3.824293020108400E-02 ,
+ 16.84 , 9.824002683071940E-02 ,
+ 16.845 , 0.151346034414838 ,
+ 16.85 , 0.196448639221428 ,
+ 16.855 , 0.232748834021365 ,
+ 16.86 , 0.259798117288868 ,
+ 16.865 , 0.277506221603702 ,
+ 16.87 , 0.286111918797314 ,
+ 16.875 , 0.286131733842289 ,
+ 16.88 , 0.278296735618878 ,
+ 16.885 , 0.263498277115562 ,
+ 16.89 , 0.24274886174333 ,
+ 16.895 , 0.217166404345327 ,
+ 16.9 , 0.187968246853482 ,
+ 16.905 , 0.156461968787081 ,
+ 16.91 , 0.124015045694316 ,
+ 16.915 , 9.199139026589789E-02 ,
+ 16.92 , 6.165693925050090E-02 ,
+ 16.925 , 3.406870712543500E-02 ,
+ 16.93 , 9.974305988061479E-03 ,
+ 16.935 , -1.024803512308630E-02 ,
+ 16.94 , -2.658403019625520E-02 ,
+ 16.945 , -3.930334521456180E-02 ,
+ 16.95 , -4.881605741987730E-02 ,
+ 16.955 , -5.549717708582600E-02 ,
+ 16.96 , -5.952392534556360E-02 ,
+ 16.965 , -6.076975805147920E-02 ,
+ 16.97 , -5.879314030308780E-02 ,
+ 16.975 , -5.292859848425780E-02 ,
+ 16.98 , -4.246799585244240E-02 ,
+ 16.985 , -2.689000147691090E-02 ,
+ 16.99 , -6.084643377645750E-03 ,
+ 16.995 , 1.948494890135070E-02 ,
+ 17.0 , 4.872381188647930E-02 ,
+ 17.005 , 7.996838345792370E-02 ,
+ 17.01 , 0.111158477862087 ,
+ 17.015 , 0.140083752196672 ,
+ 17.02 , 0.164651035916986 ,
+ 17.025 , 0.18312224741681 ,
+ 17.03 , 0.194279612887888 ,
+ 17.035 , 0.197502657429334 ,
+ 17.04 , 0.192756670137177 ,
+ 17.045 , 0.180518699701142 ,
+ 17.05 , 0.161669903280425 ,
+ 17.055 , 0.137385815960322 ,
+ 17.06 , 0.109043393552795 ,
+ 17.065 , 7.814867623624100E-02 ,
+ 17.07 , 4.627753286711330E-02 ,
+ 17.075 , 1.501227171733180E-02 ,
+ 17.08 , -1.413775130832270E-02 ,
+ 17.085 , -3.983793711438840E-02 ,
+ 17.09 , -6.104036519750250E-02 ,
+ 17.095 , -7.708842285673501E-02 ,
+ 17.1 , -8.778382263463140E-02 ,
+ 17.105 , -9.339483606844121E-02 ,
+ 17.11 , -9.459269265106150E-02 ,
+ 17.115 , -9.232223501388739E-02 ,
+ 17.12 , -8.763025422153840E-02 ,
+ 17.125 , -8.148499770125020E-02 ,
+ 17.13 , -7.462775457220110E-02 ,
+ 17.135 , -6.748324353623050E-02 ,
+ 17.14 , -6.014609852966310E-02 ,
+ 17.145 , -5.243702915474610E-02 ,
+ 17.15 , -4.400785444844100E-02 ,
+ 17.155 , -3.446180958692290E-02 ,
+ 17.16 , -2.345792198001310E-02 ,
+ 17.165 , -1.077394978512690E-02 ,
+ 17.17 , 3.679128728274960E-03 ,
+ 17.175 , 1.988574043577430E-02 ,
+ 17.18 , 3.777667605297300E-02 ,
+ 17.185 , 5.727939847072780E-02 ,
+ 17.19 , 7.834501552629659E-02 ,
+ 17.195 , 0.100944016898245 ,
+ 17.2 , 0.125030824710985 ,
+ 17.205 , 0.150493723897266 ,
+ 17.21 , 0.177105725250697 ,
+ 17.215 , 0.204499198588219 ,
+ 17.22 , 0.232171627050269 ,
+ 17.225 , 0.259522952289019 ,
+ 17.23 , 0.28591162656688 ,
+ 17.235 , 0.310713017545991 ,
+ 17.24 , 0.333360202463241 ,
+ 17.245 , 0.353356491062333 ,
+ 17.25 , 0.370257070307643 ,
+ 17.255 , 0.383631410780558 ,
+ 17.26 , 0.393022771718625 ,
+ 17.265 , 0.397924531915073 ,
+ 17.27 , 0.397789484581034 ,
+ 17.275 , 0.392075448648513 ,
+ 17.28 , 0.380321842357972 ,
+ 17.285 , 0.362236624526743 ,
+ 17.29 , 0.337775799625786 ,
+ 17.295 , 0.307187618217491 ,
+ 17.3 , 0.271012952518342 ,
+ 17.305 , 0.230034748672592 ,
+ 17.31 , 0.185192192119736 ,
+ 17.315 , 0.1374724900416 ,
+ 17.32 , 8.781061932229070E-02 ,
+ 17.325 , 3.701123827098990E-02 ,
+ 17.33 , -1.428322820528750E-02 ,
+ 17.335 , -6.558572925239700E-02 ,
+ 17.34 , -0.11651660768663 ,
+ 17.345 , -0.16673628393002 ,
+ 17.35 , -0.21587015869355 ,
+ 17.355 , -0.26345095520442 ,
+ 17.36 , -0.30888431890374 ,
+ 17.365 , -0.35145163113226 ,
+ 17.37 , -0.39033885127352 ,
+ 17.375 , -0.42469770664605 ,
+ 17.38 , -0.45371821850159 ,
+ 17.385 , -0.4767087589838 ,
+ 17.39 , -0.49316630884791 ,
+ 17.395 , -0.50283205552792 ,
+ 17.4 , -0.50572081737774 ,
+ 17.405 , -0.50212196719028 ,
+ 17.41 , -0.49256808518885 ,
+ 17.415 , -0.47777707225688 ,
+ 17.42 , -0.45857357564831 ,
+ 17.425 , -0.43580164741667 ,
+ 17.43 , -0.41024501009179 ,
+ 17.435 , -0.3825675139441 ,
+ 17.44 , -0.35328788816102 ,
+ 17.445 , -0.32279085797443 ,
+ 17.45 , -0.29137731320226 ,
+ 17.455 , -0.25933449326509 ,
+ 17.46 , -0.2270143702293 ,
+ 17.465 , -0.19489381305459 ,
+ 17.47 , -0.16360264699467 ,
+ 17.475 , -0.1339028594142 ,
+ 17.48 , -0.1066224111889 ,
+ 17.485 , -8.254834652459410E-02 ,
+ 17.49 , -6.230534889079800E-02 ,
+ 17.495 , -4.623541755964700E-02 ,
+ 17.5 , -3.430878641434340E-02 ,
+ 17.505 , -2.607920373761460E-02 ,
+ 17.51 , -2.069570607448080E-02 ,
+ 17.515 , -1.696571448514850E-02 ,
+ 17.52 , -1.346258488402600E-02 ,
+ 17.525 , -8.657687814216761E-03 ,
+ 17.53 , -1.066706267368470E-03 ,
+ 17.535 , 1.061426833550790E-02 ,
+ 17.54 , 2.738663947692650E-02 ,
+ 17.545 , 4.985546977711610E-02 ,
+ 17.55 , 7.816411304470480E-02 ,
+ 17.555 , 0.111966131087412 ,
+ 17.56 , 0.150434055062022 ,
+ 17.565 , 0.19231308509617 ,
+ 17.57 , 0.236013378779133 ,
+ 17.575 , 0.279746002917216 ,
+ 17.58 , 0.321684272405146 ,
+ 17.585 , 0.360138883852544 ,
+ 17.59 , 0.393718048669997 ,
+ 17.595 , 0.421452589177563 ,
+ 17.6 , 0.442859042866297 ,
+ 17.605 , 0.457932285135102 ,
+ 17.61 , 0.467063199142238 ,
+ 17.615 , 0.470901203329776 ,
+ 17.62 , 0.470183933061112 ,
+ 17.625 , 0.465570499510758 ,
+ 17.63 , 0.457509881267887 ,
+ 17.635 , 0.446170505322342 ,
+ 17.64 , 0.431441044905879 ,
+ 17.645 , 0.412997059132728 ,
+ 17.65 , 0.390417907394592 ,
+ 17.655 , 0.363320032948617 ,
+ 17.66 , 0.331482683771369 ,
+ 17.665 , 0.294935652090983 ,
+ 17.67 , 0.254001046090184 ,
+ 17.675 , 0.209280977845859 ,
+ 17.68 , 0.161607754445718 ,
+ 17.685 , 0.111965960430188 ,
+ 17.69 , 6.141586922651330E-02 ,
+ 17.695 , 1.102093548815530E-02 ,
+ 17.7 , -3.820203658969610E-02 ,
+ 17.705 , -8.531704155098779E-02 ,
+ 17.71 , -0.1294862669167 ,
+ 17.715 , -0.16998594459785 ,
+ 17.72 , -0.20622064042651 ,
+ 17.725 , -0.23774591935919 ,
+ 17.73 , -0.26428840511531 ,
+ 17.735 , -0.28576606331927 ,
+ 17.74 , -0.30229286763517 ,
+ 17.745 , -0.31416772926296 ,
+ 17.75 , -0.3218406535065 ,
+ 17.755 , -0.3258645654062 ,
+ 17.76 , -0.32683843068621 ,
+ 17.765 , -0.32535588224289 ,
+ 17.77 , -0.32196457829868 ,
+ 17.775 , -0.31715006731732 ,
+ 17.78 , -0.31133941077337 ,
+ 17.785 , -0.30492235408688 ,
+ 17.79 , -0.29827929738639 ,
+ 17.795 , -0.29180571311681 ,
+ 17.8 , -0.2859227673159 ,
+ 17.805 , -0.2810686116836 ,
+ 17.81 , -0.27767024271612 ,
+ 17.815 , -0.27609995179852 ,
+ 17.82 , -0.27662600365925 ,
+ 17.825 , -0.27936632736658 ,
+ 17.83 , -0.28425416349301 ,
+ 17.835 , -0.29102164261339 ,
+ 17.84 , -0.29920350847177 ,
+ 17.845 , -0.30815897987418 ,
+ 17.85 , -0.31710995942421 ,
+ 17.855 , -0.32518836729579 ,
+ 17.86 , -0.33149006868417 ,
+ 17.865 , -0.33512980995752 ,
+ 17.87 , -0.33529555909469 ,
+ 17.875 , -0.3312973400369 ,
+ 17.88 , -0.32261024125577 ,
+ 17.885 , -0.30890529900639 ,
+ 17.89 , -0.290070720818 ,
+ 17.895 , -0.26621431048452 ,
+ 17.9 , -0.23765242692415 ,
+ 17.905 , -0.20488114286083 ,
+ 17.91 , -0.16853769940936 ,
+ 17.915 , -0.12935252659241 ,
+ 17.92 , -8.810348127193721E-02 ,
+ 17.925 , -4.557141302171240E-02 ,
+ 17.93 , -2.513356389291560E-03 ,
+ 17.935 , 4.035724323904150E-02 ,
+ 17.94 , 8.237249752346711E-02 ,
+ 17.945 , 0.122904827481364 ,
+ 17.95 , 0.16135335850423 ,
+ 17.955 , 0.197135089796928 ,
+ 17.96 , 0.229680590055412 ,
+ 17.965 , 0.258445542327015 ,
+ 17.97 , 0.282931564681535 ,
+ 17.975 , 0.3027256078172 ,
+ 17.98 , 0.317544225316334 ,
+ 17.985 , 0.327282981257925 ,
+ 17.99 , 0.332055566875123 ,
+ 17.995 , 0.332219078215985 ,
+ 18.0 , 0.328372664764279 ,
+ 18.005 , 0.321327968541342 ,
+ 18.01 , 0.312046315167661 ,
+ 18.015 , 0.301552393558308 ,
+ 18.02 , 0.29083015000257 ,
+ 18.025 , 0.280717140577436 ,
+ 18.03 , 0.271812862742294 ,
+ 18.035 , 0.264416834319869 ,
+ 18.04 , 0.258507921567912 ,
+ 18.045 , 0.25377043717894 ,
+ 18.05 , 0.249664740892512 ,
+ 18.055 , 0.245531784942376 ,
+ 18.06 , 0.240715666971269 ,
+ 18.065 , 0.234683989615924 ,
+ 18.07 , 0.227126896191005 ,
+ 18.075 , 0.218018915200585 ,
+ 18.08 , 0.207635259720329 ,
+ 18.085 , 0.196519817484055 ,
+ 18.09 , 0.185413864456323 ,
+ 18.095 , 0.175156074068905 ,
+ 18.1 , 0.166570903921847 ,
+ 18.105 , 0.160362276331594 ,
+ 18.11 , 0.157026715204937 ,
+ 18.115 , 0.156797444080986 ,
+ 18.12 , 0.159624455669982 ,
+ 18.125 , 0.16519187224497 ,
+ 18.13 , 0.172968089200864 ,
+ 18.135 , 0.1822813476427 ,
+ 18.14 , 0.192409206882619 ,
+ 18.145 , 0.202670276399768 ,
+ 18.15 , 0.212504752944377 ,
+ 18.155 , 0.221533110089593 ,
+ 18.16 , 0.229583054017435 ,
+ 18.165 , 0.236681693233947 ,
+ 18.17 , 0.24301317231324 ,
+ 18.175 , 0.248850323481097 ,
+ 18.18 , 0.254471744041749 ,
+ 18.185 , 0.260080804366178 ,
+ 18.19 , 0.265741889443548 ,
+ 18.195 , 0.27134643214208 ,
+ 18.2 , 0.276614811069614 ,
+ 18.205 , 0.281132591864889 ,
+ 18.21 , 0.284412543870369 ,
+ 18.215 , 0.285966261493111 ,
+ 18.22 , 0.28537109719781 ,
+ 18.225 , 0.282316011041418 ,
+ 18.23 , 0.276621372715182 ,
+ 18.235 , 0.268228573189369 ,
+ 18.24 , 0.257171332184819 ,
+ 18.245 , 0.243536231265936 ,
+ 18.25 , 0.227433656521336 ,
+ 18.255 , 0.208982058948683 ,
+ 18.26 , 0.188316971988387 ,
+ 18.265 , 0.165617801602736 ,
+ 18.27 , 0.141146408794358 ,
+ 18.275 , 0.115280086715596 ,
+ 18.28 , 8.852986599304000E-02 ,
+ 18.285 , 6.153122175946150E-02 ,
+ 18.29 , 3.501087677361560E-02 ,
+ 18.295 , 9.728375745511450E-03 ,
+ 18.3 , -1.358945599970610E-02 ,
+ 18.305 , -3.431372431462720E-02 ,
+ 18.31 , -5.195992570184670E-02 ,
+ 18.315 , -6.621459033346280E-02 ,
+ 18.32 , -7.693590669330690E-02 ,
+ 18.325 , -8.413813135115721E-02 ,
+ 18.33 , -8.796246104481401E-02 ,
+ 18.335 , -8.865026558137970E-02 ,
+ 18.34 , -8.651948855745679E-02 ,
+ 18.345 , -8.194991749053140E-02 ,
+ 18.35 , -7.537263942731640E-02 ,
+ 18.355 , -6.726122085666700E-02 ,
+ 18.36 , -5.811712688388060E-02 ,
+ 18.365 , -4.844978592925620E-02 ,
+ 18.37 , -3.874961154322750E-02 ,
+ 18.375 , -2.946321539637920E-02 ,
+ 18.38 , -2.097389378477130E-02 ,
+ 18.385 , -1.359774681728760E-02 ,
+ 18.39 , -7.592927023032140E-03 ,
+ 18.395 , -3.182771456432360E-03 ,
+ 18.4 , -5.797783397815400E-04 ,
+ 18.405 , -3.403899532317900E-06 ,
+ 18.41 , -1.673453644507240E-03 ,
+ 18.415 , -5.782448384807060E-03 ,
+ 18.42 , -1.244176672900140E-02 ,
+ 18.425 , -2.161800758848600E-02 ,
+ 18.43 , -3.307323100644420E-02 ,
+ 18.435 , -4.633260284878780E-02 ,
+ 18.44 , -6.069252068692880E-02 ,
+ 18.445 , -7.527964829315580E-02 ,
+ 18.45 , -8.915230216299309E-02 ,
+ 18.455 , -0.10143296879817 ,
+ 18.46 , -0.11144311748952 ,
+ 18.465 , -0.11881688272356 ,
+ 18.47 , -0.12356683521081 ,
+ 18.475 , -0.12609239258508 ,
+ 18.48 , -0.12712667509216 ,
+ 18.485 , -0.12763705192334 ,
+ 18.49 , -0.12869455777906 ,
+ 18.495 , -0.13134291006952 ,
+ 18.5 , -0.13648385782305 ,
+ 18.505 , -0.14479654925278 ,
+ 18.51 , -0.15669435068272 ,
+ 18.515 , -0.17231899455012 ,
+ 18.52 , -0.19156053351027 ,
+ 18.525 , -0.2140948418449 ,
+ 18.53 , -0.23942532421762 ,
+ 18.535 , -0.26692808116807 ,
+ 18.54 , -0.29589366741626 ,
+ 18.545 , -0.32556987300455 ,
+ 18.55 , -0.35520167089443 ,
+ 18.555 , -0.38407157568151 ,
+ 18.56 , -0.41153207462536 ,
+ 18.565 , -0.43702839771631 ,
+ 18.57 , -0.46010162556848 ,
+ 18.575 , -0.4803753536196 ,
+ 18.58 , -0.49752469104796 ,
+ 18.585 , -0.51123932275576 ,
+ 18.59 , -0.52119100580172 ,
+ 18.595 , -0.52702031860061 ,
+ 18.6 , -0.52835074084744 ,
+ 18.605 , -0.52483178107225 ,
+ 18.61 , -0.51620504117931 ,
+ 18.615 , -0.50237569943468 ,
+ 18.62 , -0.4834730346886 ,
+ 18.625 , -0.45987873870396 ,
+ 18.63 , -0.43221396453591 ,
+ 18.635 , -0.40128199130244 ,
+ 18.64 , -0.36797809251035 ,
+ 18.645 , -0.33318247540211 ,
+ 18.65 , -0.2976655847206 ,
+ 18.655 , -0.26201863587465 ,
+ 18.66 , -0.22662902367112 ,
+ 18.665 , -0.19169728326541 ,
+ 18.67 , -0.15729264669158 ,
+ 18.675 , -0.1234229501959 ,
+ 18.68 , -9.010582719609091E-02 ,
+ 18.685 , -5.741817970014060E-02 ,
+ 18.69 , -2.552248385036910E-02 ,
+ 18.695 , 5.339196527069970E-03 ,
+ 18.7 , 3.486712311982680E-02 ,
+ 18.705 , 6.273660435450590E-02 ,
+ 18.71 , 8.862290998998250E-02 ,
+ 18.715 , 0.112218745947816 ,
+ 18.72 , 0.133237764611335 ,
+ 18.725 , 0.151417354399901 ,
+ 18.73 , 0.166520793732197 ,
+ 18.735 , 0.178358092928635 ,
+ 18.74 , 0.186819039757722 ,
+ 18.745 , 0.191918879888126 ,
+ 18.75 , 0.193841382081441 ,
+ 18.755 , 0.192966026117615 ,
+ 18.76 , 0.189861849245228 ,
+ 18.765 , 0.185243424802453 ,
+ 18.77 , 0.179886808055877 ,
+ 18.775 , 0.174523130427245 ,
+ 18.78 , 0.169727209876345 ,
+ 18.785 , 0.165828266795135 ,
+ 18.79 , 0.162860717438664 ,
+ 18.795 , 0.160568509105303 ,
+ 18.8 , 0.158460262202499 ,
+ 18.805 , 0.155903588032585 ,
+ 18.81 , 0.152236721793017 ,
+ 18.815 , 0.146874335438137 ,
+ 18.82 , 0.139388100075902 ,
+ 18.825 , 0.129551248829624 ,
+ 18.83 , 0.117346184292776 ,
+ 18.835 , 0.102944396398025 ,
+ 18.84 , 8.667203203856250E-02 ,
+ 18.845 , 6.897292950992250E-02 ,
+ 18.85 , 5.037981195577830E-02 ,
+ 18.855 , 3.149222301298260E-02 ,
+ 18.86 , 1.295788909713510E-02 ,
+ 18.865 , -4.552694712540460E-03 ,
+ 18.87 , -2.038471143298640E-02 ,
+ 18.875 , -3.395374370024890E-02 ,
+ 18.88 , -4.480974308295430E-02 ,
+ 18.885 , -5.269874412847760E-02 ,
+ 18.89 , -5.760475116618620E-02 ,
+ 18.895 , -5.975782869643340E-02 ,
+ 18.9 , -5.959990728708000E-02 ,
+ 18.905 , -5.771202182665640E-02 ,
+ 18.91 , -5.471620957553570E-02 ,
+ 18.915 , -5.117481281717030E-02 ,
+ 18.92 , -4.751155121434680E-02 ,
+ 18.925 , -4.397377050356170E-02 ,
+ 18.93 , -4.064613036051550E-02 ,
+ 18.935 , -3.750986634275660E-02 ,
+ 18.94 , -3.453164301123860E-02 ,
+ 18.945 , -3.175456679161500E-02 ,
+ 18.95 , -2.936540580184520E-02 ,
+ 18.955 , -2.771540773125420E-02 ,
+ 18.96 , -2.728673446781490E-02 ,
+ 18.965 , -2.860928038065850E-02 ,
+ 18.97 , -3.214733887015950E-02 ,
+ 18.975 , -3.818284412564310E-02 ,
+ 18.98 , -4.672302188795090E-02 ,
+ 18.985 , -5.745461744704080E-02 ,
+ 18.99 , -6.975424591801779E-02 ,
+ 18.995 , -8.275205425474760E-02 ,
+ 19.0 , -9.543348500501039E-02 ,
+ 19.005 , -0.10675671144965 ,
+ 19.01 , -0.11576388175306 ,
+ 19.015 , -0.12166743333762 ,
+ 19.02 , -0.12390264431233 ,
+ 19.025 , -0.12214656117846 ,
+ 19.03 , -0.11631154879176 ,
+ 19.035 , -0.10652423304446 ,
+ 19.04 , -9.310118520163460E-02 ,
+ 19.045 , -7.652590539072700E-02 ,
+ 19.05 , -5.743089586506230E-02 ,
+ 19.055 , -3.657596705689010E-02 ,
+ 19.06 , -1.481925977005460E-02 ,
+ 19.065 , 6.926924474783110E-03 ,
+ 19.07 , 2.775463368340260E-02 ,
+ 19.075 , 4.683156424739500E-02 ,
+ 19.08 , 6.347270763070770E-02 ,
+ 19.085 , 7.720227146370970E-02 ,
+ 19.09 , 8.779042470764520E-02 ,
+ 19.095 , 9.526029188212271E-02 ,
+ 19.1 , 9.986040447199600E-02 ,
+ 19.105 , 0.102009856725406 ,
+ 19.11 , 0.102225525300876 ,
+ 19.115 , 0.101047428528718 ,
+ 19.12 , 9.897427931868839E-02 ,
+ 19.125 , 9.642072648080460E-02 ,
+ 19.13 , 9.369918170530429E-02 ,
+ 19.135 , 9.102713402201090E-02 ,
+ 19.14 , 8.855073690832560E-02 ,
+ 19.145 , 8.637784747202421E-02 ,
+ 19.15 , 8.460889194052530E-02 ,
+ 19.155 , 8.335969452805890E-02 ,
+ 19.16 , 8.277035792073900E-02 ,
+ 19.165 , 8.300094888178290E-02 ,
+ 19.17 , 8.421449446395760E-02 ,
+ 19.175 , 8.655290215462839E-02 ,
+ 19.18 , 9.010941198122500E-02 ,
+ 19.185 , 9.490288969345520E-02 ,
+ 19.19 , 0.100856185025776 ,
+ 19.195 , 0.107783589409055 ,
+ 19.2 , 0.115386291208123 ,
+ 19.205 , 0.123260349877366 ,
+ 19.21 , 0.130913935378 ,
+ 19.215 , 0.137796521245135 ,
+ 19.22 , 0.143335849367096 ,
+ 19.225 , 0.14698030532155 ,
+ 19.23 , 0.148242029288944 ,
+ 19.235 , 0.146735661784648 ,
+ 19.24 , 0.142208324703231 ,
+ 19.245 , 0.134556865273917 ,
+ 19.25 , 0.123832305128576 ,
+ 19.255 , 0.110231039547548 ,
+ 19.26 , 9.407703422254150E-02 ,
+ 19.265 , 7.579763962651660E-02 ,
+ 19.27 , 5.589930332000480E-02 ,
+ 19.275 , 3.494345559651580E-02 ,
+ 19.28 , 1.352655612925890E-02 ,
+ 19.285 , -7.738281430620860E-03 ,
+ 19.29 , -2.823640126172170E-02 ,
+ 19.295 , -4.736851280459840E-02 ,
+ 19.3 , -6.456726778946650E-02 ,
+ 19.305 , -7.931522042729799E-02 ,
+ 19.31 , -9.116146754991310E-02 ,
+ 19.315 , -9.973543395603350E-02 ,
+ 19.32 , -0.10475595669325 ,
+ 19.325 , -0.10603430822357 ,
+ 19.33 , -0.10347284701214 ,
+ 19.335 , -9.706124752024230E-02 ,
+ 19.34 , -8.687430152469530E-02 ,
+ 19.345 , -7.307405512475940E-02 ,
+ 19.35 , -5.591887411984520E-02 ,
+ 19.355 , -3.577706479529710E-02 ,
+ 19.36 , -1.314335388833300E-02 ,
+ 19.365 , 1.134983613684490E-02 ,
+ 19.37 , 3.693079681400050E-02 ,
+ 19.375 , 6.270474265740390E-02 ,
+ 19.38 , 8.768905345507640E-02 ,
+ 19.385 , 0.1108686368144 ,
+ 19.39 , 0.1312644416171 ,
+ 19.395 , 0.148009041167522 ,
+ 19.4 , 0.160416739422417 ,
+ 19.405 , 0.168040427167663 ,
+ 19.41 , 0.170704607506662 ,
+ 19.415 , 0.168512624998284 ,
+ 19.42 , 0.161826470167071 ,
+ 19.425 , 0.151223327305197 ,
+ 19.43 , 0.137436526462059 ,
+ 19.435 , 0.12128787067038 ,
+ 19.44 , 0.103621500126964 ,
+ 19.445 , 8.524411667406280E-02 ,
+ 19.45 , 6.687930552254420E-02 ,
+ 19.455 , 4.913589731864990E-02 ,
+ 19.46 , 3.249281642772610E-02 ,
+ 19.465 , 1.729796363375550E-02 ,
+ 19.47 , 3.779772699936010E-03 ,
+ 19.475 , -7.933453913126739E-03 ,
+ 19.48 , -1.778837362450150E-02 ,
+ 19.485 , -2.578180319663970E-02 ,
+ 19.49 , -3.193743546434960E-02 ,
+ 19.495 , -3.628975661666560E-02 ,
+ 19.5 , -3.887558954382360E-02 ,
+ 19.505 , -3.973470241057670E-02 ,
+ 19.51 , -3.891788867951480E-02 ,
+ 19.515 , -3.649986139114820E-02 ,
+ 19.52 , -3.259249709820460E-02 ,
+ 19.525 , -2.735427053548850E-02 ,
+ 19.53 , -2.099133842643200E-02 ,
+ 19.535 , -1.374830536741160E-02 ,
+ 19.54 , -5.887877188928280E-03 ,
+ 19.545 , 2.336959611728440E-03 ,
+ 19.55 , 1.071436148192050E-02 ,
+ 19.555 , 1.910203440373310E-02 ,
+ 19.56 , 2.744608047788240E-02 ,
+ 19.565 , 3.578603089731680E-02 ,
+ 19.57 , 4.424249115467690E-02 ,
+ 19.575 , 5.298918396292150E-02 ,
+ 19.58 , 6.221237826554930E-02 ,
+ 19.585 , 7.206505940082400E-02 ,
+ 19.59 , 8.262287004060030E-02 ,
+ 19.595 , 9.385089818082880E-02 ,
+ 19.6 , 0.105586535210159 ,
+ 19.605 , 0.117542979202558 ,
+ 19.61 , 0.129332330456747 ,
+ 19.615 , 0.140505656304056 ,
+ 19.62 , 0.150602470682144 ,
+ 19.625 , 0.159201510072528 ,
+ 19.63 , 0.165963272203869 ,
+ 19.635 , 0.170657754779367 ,
+ 19.64 , 0.173171986392552 ,
+ 19.645 , 0.173497060176099 ,
+ 19.65 , 0.171698563869022 ,
+ 19.655 , 0.167877117650055 ,
+ 19.66 , 0.162128958008132 ,
+ 19.665 , 0.154515020640188 ,
+ 19.67 , 0.145047978425579 ,
+ 19.675 , 0.133699089240968 ,
+ 19.68 , 0.120425826006013 ,
+ 19.685 , 0.105211954035009 ,
+ 19.69 , 8.811482794436119E-02 ,
+ 19.695 , 6.930362885349300E-02 ,
+ 19.7 , 4.908317786948910E-02 ,
+ 19.705 , 2.789284466062680E-02 ,
+ 19.71 , 6.282684187232620E-03 ,
+ 19.715 , -1.513293891731910E-02 ,
+ 19.72 , -3.573219349475490E-02 ,
+ 19.725 , -5.494565996060560E-02 ,
+ 19.73 , -7.230331792209500E-02 ,
+ 19.735 , -8.746611435403620E-02 ,
+ 19.74 , -0.10023408196077 ,
+ 19.745 , -0.11053680897542 ,
+ 19.75 , -0.11840927699064 ,
+ 19.755 , -0.12396609115553 ,
+ 19.76 , -0.12737940482213 ,
+ 19.765 , -0.12886942680431 ,
+ 19.77 , -0.12870508549978 ,
+ 19.775 , -0.12721486235372 ,
+ 19.78 , -0.12479696224801 ,
+ 19.785 , -0.12192134851853 ,
+ 19.79 , -0.11911512331687 ,
+ 19.795 , -0.11692852296234 ,
+ 19.8 , -0.1158828122011 ,
+ 19.805 , -0.11640862718208 ,
+ 19.81 , -0.11878469144379 ,
+ 19.815 , -0.12309145404105 ,
+ 19.82 , -0.12918833366224 ,
+ 19.825 , -0.13672125838288 ,
+ 19.83 , -0.14515938284391 ,
+ 19.835 , -0.15385497532022 ,
+ 19.84 , -0.16211467849934 ,
+ 19.845 , -0.16927092799142 ,
+ 19.85 , -0.1747405815055 ,
+ 19.855 , -0.17806542050622 ,
+ 19.86 , -0.17893075004105 ,
+ 19.865 , -0.17716517197334 ,
+ 19.87 , -0.1727273398208 ,
+ 19.875 , -0.16568659834495 ,
+ 19.88 , -0.15620370102824 ,
+ 19.885 , -0.14451379659869 ,
+ 19.89 , -0.13091402606184 ,
+ 19.895 , -0.11575112780621 ,
+ 19.9 , -9.940839096806510E-02 ,
+ 19.905 , -8.228798219382000E-02 ,
+ 19.91 , -6.479104079602420E-02 ,
+ 19.915 , -4.729626907194930E-02 ,
+ 19.92 , -3.014389625728430E-02 ,
+ 19.925 , -1.362770379699480E-02 ,
+ 19.93 , 1.998432435284760E-03 ,
+ 19.935 , 1.650283145918720E-02 ,
+ 19.94 , 2.964895620060110E-02 ,
+ 19.945 , 4.116860136833410E-02 ,
+ 19.95 , 5.074351304162170E-02 ,
+ 19.955 , 5.800645031803000E-02 ,
+ 19.96 , 6.256532313956960E-02 ,
+ 19.965 , 6.405233292472851E-02 ,
+ 19.97 , 6.218959865152200E-02 ,
+ 19.975 , 5.686184515599930E-02 ,
+ 19.98 , 4.817972906533240E-02 ,
+ 19.985 , 3.651967859402010E-02 ,
+ 19.99 , 2.252985493696160E-02 ,
+ 19.995 , 7.097071756102240E-03 ,
+ 20.0 , -8.721812839652310E-03 ,
+ 20.005 , -2.379447424676810E-02 ,
+ 20.01 , -3.701839037090120E-02 ,
+ 20.015 , -4.742092878891140E-02 ,
+ 20.02 , -5.423951270215350E-02 ,
+ 20.025 , -5.697258922350620E-02 ,
+ 20.03 , -5.539776158916270E-02 ,
+ 20.035 , -4.956057087520670E-02 ,
+ 20.04 , -3.974179526714170E-02 ,
+ 20.045 , -2.641288342533750E-02 ,
+ 20.05 , -1.019081782994870E-02 ,
+ 20.055 , 8.202447545571230E-03 ,
+ 20.06 , 2.797116679219240E-02 ,
+ 20.065 , 4.827036868959560E-02 ,
+ 20.07 , 6.822566739672180E-02 ,
+ 20.075 , 8.695562572496580E-02 ,
+ 20.08 , 0.103598292547575 ,
+ 20.085 , 0.117345557097572 ,
+ 20.09 , 0.127481089438341 ,
+ 20.095 , 0.133420394415517 ,
+ 20.1 , 0.134744188882336 ,
+ 20.105 , 0.131221676654994 ,
+ 20.11 , 0.122818973076751 ,
+ 20.115 , 0.109691680974573 ,
+ 20.12 , 9.216522604322611E-02 ,
+ 20.125 , 7.070600814518090E-02 ,
+ 20.13 , 4.589147778332150E-02 ,
+ 20.135 , 1.838180387523030E-02 ,
+ 20.14 , -1.110108370552780E-02 ,
+ 20.145 , -4.178877084026370E-02 ,
+ 20.15 , -7.287571484484311E-02 ,
+ 20.155 , -0.10352963470195 ,
+ 20.16 , -0.13290387884342 ,
+ 20.165 , -0.16015839093613 ,
+ 20.17 , -0.18448715088686 ,
+ 20.175 , -0.20515328670567 ,
+ 20.18 , -0.22152568111903 ,
+ 20.185 , -0.23311328473587 ,
+ 20.19 , -0.23959100455607 ,
+ 20.195 , -0.24081433909493 ,
+ 20.2 , -0.23682050088862 ,
+ 20.205 , -0.22781739014645 ,
+ 20.21 , -0.21416412518464 ,
+ 20.215 , -0.19634582016096 ,
+ 20.22 , -0.17494767238438 ,
+ 20.225 , -0.15062916150452 ,
+ 20.23 , -0.12410162176008 ,
+ 20.235 , -9.610482601536199E-02 ,
+ 20.24 , -6.738446390246500E-02 ,
+ 20.245 , -3.866506506796110E-02 ,
+ 20.25 , -1.062408132283030E-02 ,
+ 20.255 , 1.613821656425260E-02 ,
+ 20.26 , 4.112363448240460E-02 ,
+ 20.265 , 6.395563455415000E-02 ,
+ 20.27 , 8.438638743734070E-02 ,
+ 20.275 , 0.10229225024046 ,
+ 20.28 , 0.11765525248804 ,
+ 20.285 , 0.13053719119583 ,
+ 20.29 , 0.141047644803831 ,
+ 20.295 , 0.14931741898274 ,
+ 20.3 , 0.155478926240496 ,
+ 20.305 , 0.159660339201315 ,
+ 20.31 , 0.161990227205732 ,
+ 20.315 , 0.162612590283051 ,
+ 20.32 , 0.161703234926074 ,
+ 20.325 , 0.159483350064339 ,
+ 20.33 , 0.156221155279841 ,
+ 20.335 , 0.152221918187124 ,
+ 20.34 , 0.147804677752111 ,
+ 20.345 , 0.143271172359312 ,
+ 20.35 , 0.138873332096741 ,
+ 20.355 , 0.134787926819641 ,
+ 20.36 , 0.131103697853831 ,
+ 20.365 , 0.127825557460833 ,
+ 20.37 , 0.12489405648423 ,
+ 20.375 , 0.122216684366155 ,
+ 20.38 , 0.119703338338164 ,
+ 20.385 , 0.117298332826065 ,
+ 20.39 , 0.115002111347558 ,
+ 20.395 , 0.1128792665639 ,
+ 20.4 , 0.111051600017025 ,
+ 20.405 , 0.109680624221402 ,
+ 20.41 , 0.108942958893076 ,
+ 20.415 , 0.109006468464252 ,
+ 20.42 , 0.110010955231372 ,
+ 20.425 , 0.112056904842183 ,
+ 20.43 , 0.115202427994996 ,
+ 20.435 , 0.119466647868312 ,
+ 20.44 , 0.124835559019734 ,
+ 20.445 , 0.131267773242386 ,
+ 20.45 , 0.138696105432056 ,
+ 20.455 , 0.14702533406325 ,
+ 20.46 , 0.156125727838975 ,
+ 20.465 , 0.165825042690333 ,
+ 20.47 , 0.0 ,
+ ),
+ INTERPOL='LIN',
+ PROL_DROITE='CONSTANT',
+ PROL_GAUCHE='EXCLU',);
+
+
+ACCELV1=DEFI_FONCTION(NOM_PARA='INST',
+ VALE=
+(
+ 0.0 , 0.0 ,
+ 1.000000000000000E-02 , 1.310000000000000E-03 ,
+ 2.000000000000000E-02 , 7.200000000000000E-04 ,
+ 3.000000000000000E-02 , -1.160000000000000E-03 ,
+ 4.000000000000000E-02 , -4.010000000000000E-03 ,
+ 5.000000000000000E-02 , -8.580000000000001E-03 ,
+ 6.000000000000000E-02 , -1.459000000000000E-02 ,
+ 7.000000000000001E-02 , -1.920000000000000E-02 ,
+ 8.000000000000000E-02 , -1.947000000000000E-02 ,
+ 9.000000000000000E-02 , -1.781000000000000E-02 ,
+ 0.1 , -1.970000000000000E-02 ,
+ 0.11 , -2.520000000000000E-02 ,
+ 0.12 , -3.281000000000000E-02 ,
+ 0.13 , -4.377000000000000E-02 ,
+ 0.14 , -5.504000000000000E-02 ,
+ 0.15 , -5.797000000000000E-02 ,
+ 0.16 , -4.627000000000000E-02 ,
+ 0.17 , -2.536000000000000E-02 ,
+ 0.18 , -6.700000000000000E-03 ,
+ 0.19 , 7.849999999999999E-03 ,
+ 0.2 , 2.168000000000000E-02 ,
+ 0.21 , 3.643000000000000E-02 ,
+ 0.22 , 5.686000000000000E-02 ,
+ 0.23 , 8.019999999999999E-02 ,
+ 0.24 , 8.942000000000000E-02 ,
+ 0.25 , 7.790000000000000E-02 ,
+ 0.26 , 6.301000000000000E-02 ,
+ 0.27 , 5.860000000000000E-02 ,
+ 0.28 , 5.444000000000000E-02 ,
+ 0.29 , 3.314000000000000E-02 ,
+ 0.3 , -4.730000000000000E-03 ,
+ 0.31 , -3.492000000000000E-02 ,
+ 0.32 , -3.413000000000000E-02 ,
+ 0.33 , -7.530000000000000E-03 ,
+ 0.34 , 1.991000000000000E-02 ,
+ 0.35 , 2.983000000000000E-02 ,
+ 0.36 , 2.482000000000000E-02 ,
+ 0.37 , 1.676000000000000E-02 ,
+ 0.38 , 4.890000000000000E-03 ,
+ 0.39 , -1.521000000000000E-02 ,
+ 0.4 , -3.575000000000000E-02 ,
+ 0.41 , -5.053000000000000E-02 ,
+ 0.42 , -6.325000000000000E-02 ,
+ 0.43 , -7.273000000000000E-02 ,
+ 0.44 , -7.520000000000000E-02 ,
+ 0.45 , -8.463000000000000E-02 ,
+ 0.46 , -0.11597 ,
+ 0.47 , -0.1564 ,
+ 0.48 , -0.18027 ,
+ 0.49 , -0.17201 ,
+ 0.5 , -0.13845 ,
+ 0.51 , -0.1016 ,
+ 0.52 , -6.390999999999999E-02 ,
+ 0.53 , -1.035000000000000E-02 ,
+ 0.54 , 5.961000000000000E-02 ,
+ 0.55 , 0.12972 ,
+ 0.56 , 0.18788 ,
+ 0.57 , 0.23015 ,
+ 0.58 , 0.23082 ,
+ 0.59 , 0.1643 ,
+ 0.6 , 6.750000000000000E-02 ,
+ 0.61 , 7.450000000000000E-03 ,
+ 0.62 , 1.664000000000000E-02 ,
+ 0.63 , 8.058000000000000E-02 ,
+ 0.64 , 0.15546 ,
+ 0.65 , 0.2133 ,
+ 0.66 , 0.24265 ,
+ 0.67 , 0.21922 ,
+ 0.68 , 0.1295 ,
+ 0.69 , 1.220000000000000E-03 ,
+ 0.7 , -0.12397 ,
+ 0.71 , -0.1882 ,
+ 0.72 , -0.17059 ,
+ 0.73 , -0.11119 ,
+ 0.74 , -9.375000000000000E-02 ,
+ 0.75 , -0.15419 ,
+ 0.76 , -0.21371 ,
+ 0.77 , -0.19269 ,
+ 0.78 , -0.12556 ,
+ 0.79 , -8.054000000000000E-02 ,
+ 0.8 , -5.658000000000000E-02 ,
+ 0.81 , -2.563000000000000E-02 ,
+ 0.82 , -1.082000000000000E-02 ,
+ 0.83 , -6.067000000000000E-02 ,
+ 0.84 , -0.16876 ,
+ 0.85 , -0.26933 ,
+ 0.86 , -0.31693 ,
+ 0.87 , -0.3189 ,
+ 0.88 , -0.31999 ,
+ 0.89 , -0.32387 ,
+ 0.9 , -0.35623 ,
+ 0.91 , -0.38483 ,
+ 0.92 , -0.36307 ,
+ 0.93 , -0.29278 ,
+ 0.94 , -0.18821 ,
+ 0.95 , -6.119000000000000E-02 ,
+ 0.96 , 3.932000000000000E-02 ,
+ 0.97 , 7.092000000000000E-02 ,
+ 0.98 , 3.394000000000000E-02 ,
+ 0.99 , 1.056000000000000E-02 ,
+ 1.0 , 3.006000000000000E-02 ,
+ 1.01 , 4.384000000000000E-02 ,
+ 1.02 , 1.582000000000000E-02 ,
+ 1.03 , -2.452000000000000E-02 ,
+ 1.04 , -3.991000000000000E-02 ,
+ 1.05 , -4.053000000000000E-02 ,
+ 1.06 , -4.416000000000000E-02 ,
+ 1.07 , -6.185000000000000E-02 ,
+ 1.08 , -0.10165 ,
+ 1.09 , -0.13542 ,
+ 1.1 , -0.142 ,
+ 1.11 , -0.13819 ,
+ 1.12 , -0.13187 ,
+ 1.13 , -0.11765 ,
+ 1.14 , -8.853000000000000E-02 ,
+ 1.15 , -4.957000000000000E-02 ,
+ 1.16 , -2.751000000000000E-02 ,
+ 1.17 , -4.837000000000000E-02 ,
+ 1.18 , -0.11303 ,
+ 1.19 , -0.16115 ,
+ 1.2 , -0.1365 ,
+ 1.21 , -9.369000000000000E-02 ,
+ 1.22 , -0.10681 ,
+ 1.23 , -0.16911 ,
+ 1.24 , -0.23593 ,
+ 1.25 , -0.27067 ,
+ 1.26 , -0.27471 ,
+ 1.27 , -0.25731 ,
+ 1.28 , -0.19103 ,
+ 1.29 , -7.716000000000001E-02 ,
+ 1.3 , 1.100000000000000E-03 ,
+ 1.31 , -4.582000000000000E-02 ,
+ 1.32 , -0.19352 ,
+ 1.33 , -0.32144 ,
+ 1.34 , -0.37399 ,
+ 1.35 , -0.40308 ,
+ 1.36 , -0.45452 ,
+ 1.37 , -0.51071 ,
+ 1.38 , -0.52231 ,
+ 1.39 , -0.45018 ,
+ 1.4 , -0.30537 ,
+ 1.41 , -0.15517 ,
+ 1.42 , -7.362000000000000E-02 ,
+ 1.43 , -9.615000000000000E-02 ,
+ 1.44 , -0.17148 ,
+ 1.45 , -0.17476 ,
+ 1.46 , -8.399000000000000E-02 ,
+ 1.47 , -2.696000000000000E-02 ,
+ 1.48 , -6.808000000000000E-02 ,
+ 1.49 , -0.12817 ,
+ 1.5 , -0.12265 ,
+ 1.51 , -6.149000000000000E-02 ,
+ 1.52 , -8.380000000000000E-03 ,
+ 1.53 , 1.139000000000000E-02 ,
+ 1.54 , 5.830000000000000E-03 ,
+ 1.55 , -2.002000000000000E-02 ,
+ 1.56 , -3.584000000000000E-02 ,
+ 1.57 , -1.060000000000000E-03 ,
+ 1.58 , 6.028000000000000E-02 ,
+ 1.59 , 8.509000000000000E-02 ,
+ 1.6 , 9.515000000000000E-02 ,
+ 1.61 , 0.14372 ,
+ 1.62 , 0.17863 ,
+ 1.63 , 0.16098 ,
+ 1.64 , 0.15227 ,
+ 1.65 , 0.16265 ,
+ 1.66 , 0.1009 ,
+ 1.67 , -8.347000000000000E-02 ,
+ 1.68 , -0.28571 ,
+ 1.69 , -0.3845 ,
+ 1.7 , -0.42649 ,
+ 1.71 , -0.48045 ,
+ 1.72 , -0.48546 ,
+ 1.73 , -0.34744 ,
+ 1.74 , -4.460000000000000E-02 ,
+ 1.75 , 0.31704 ,
+ 1.76 , 0.56244 ,
+ 1.77 , 0.61288 ,
+ 1.78 , 0.56235 ,
+ 1.79 , 0.56046 ,
+ 1.8 , 0.58601 ,
+ 1.81 , 0.50428 ,
+ 1.82 , 0.34783 ,
+ 1.83 , 0.2707 ,
+ 1.84 , 0.32579 ,
+ 1.85 , 0.43838 ,
+ 1.86 , 0.49734 ,
+ 1.87 , 0.46993 ,
+ 1.88 , 0.42104 ,
+ 1.89 , 0.39656 ,
+ 1.9 , 0.37011 ,
+ 1.91 , 0.3211 ,
+ 1.92 , 0.27122 ,
+ 1.93 , 0.2175 ,
+ 1.94 , 0.1251 ,
+ 1.95 , 3.090000000000000E-03 ,
+ 1.96 , -9.401000000000000E-02 ,
+ 1.97 , -0.13751 ,
+ 1.98 , -0.12623 ,
+ 1.99 , -3.147000000000000E-02 ,
+ 2.0 , 0.15999 ,
+ 2.01 , 0.39077 ,
+ 2.02 , 0.57348 ,
+ 2.03 , 0.61086 ,
+ 2.04 , 0.4807 ,
+ 2.05 , 0.29864 ,
+ 2.06 , 0.18108 ,
+ 2.07 , 0.167 ,
+ 2.08 , 0.23579 ,
+ 2.09 , 0.28543 ,
+ 2.1 , 0.21887 ,
+ 2.11 , 6.136000000000000E-02 ,
+ 2.12 , -8.754000000000001E-02 ,
+ 2.13 , -0.18795 ,
+ 2.14 , -0.28217 ,
+ 2.15 , -0.39328 ,
+ 2.16 , -0.47351 ,
+ 2.17 , -0.45659 ,
+ 2.18 , -0.38611 ,
+ 2.19 , -0.40359 ,
+ 2.2 , -0.49671 ,
+ 2.21 , -0.47831 ,
+ 2.22 , -0.24834 ,
+ 2.23 , 9.692000000000001E-02 ,
+ 2.24 , 0.36832 ,
+ 2.25 , 0.49779 ,
+ 2.26 , 0.55588 ,
+ 2.27 , 0.55074 ,
+ 2.28 , 0.47652 ,
+ 2.29 , 0.42596 ,
+ 2.3 , 0.45439 ,
+ 2.31 , 0.4758 ,
+ 2.32 , 0.36011 ,
+ 2.33 , 9.916999999999999E-02 ,
+ 2.34 , -0.22081 ,
+ 2.35 , -0.53559 ,
+ 2.36 , -0.73055 ,
+ 2.37 , -0.68219 ,
+ 2.38 , -0.46512 ,
+ 2.39 , -0.29795 ,
+ 2.4 , -0.29155 ,
+ 2.41 , -0.37205 ,
+ 2.42 , -0.45321 ,
+ 2.43 , -0.52678 ,
+ 2.44 , -0.53549 ,
+ 2.45 , -0.39903 ,
+ 2.46 , -0.17073 ,
+ 2.47 , 4.007000000000000E-02 ,
+ 2.48 , 0.19098 ,
+ 2.49 , 0.23016 ,
+ 2.5 , 0.11487 ,
+ 2.51 , -3.277000000000000E-02 ,
+ 2.52 , -2.678000000000000E-02 ,
+ 2.53 , 0.14456 ,
+ 2.54 , 0.33564 ,
+ 2.55 , 0.43459 ,
+ 2.56 , 0.47636 ,
+ 2.57 , 0.56106 ,
+ 2.58 , 0.69871 ,
+ 2.59 , 0.78021 ,
+ 2.6 , 0.69033 ,
+ 2.61 , 0.48738 ,
+ 2.62 , 0.37542 ,
+ 2.63 , 0.44792 ,
+ 2.64 , 0.63115 ,
+ 2.65 , 0.80303 ,
+ 2.66 , 0.86913 ,
+ 2.67 , 0.81861 ,
+ 2.68 , 0.67639 ,
+ 2.69 , 0.44981 ,
+ 2.7 , 0.19577 ,
+ 2.71 , 1.762000000000000E-02 ,
+ 2.72 , -7.475000000000000E-02 ,
+ 2.73 , -0.18543 ,
+ 2.74 , -0.31712 ,
+ 2.75 , -0.30763 ,
+ 2.76 , -5.022000000000000E-02 ,
+ 2.77 , 0.36264 ,
+ 2.78 , 0.71418 ,
+ 2.79 , 0.86474 ,
+ 2.8 , 0.91391 ,
+ 2.81 , 0.97578 ,
+ 2.82 , 0.99997 ,
+ 2.83 , 0.90663 ,
+ 2.84 , 0.71448 ,
+ 2.85 , 0.55982 ,
+ 2.86 , 0.55183 ,
+ 2.87 , 0.63744 ,
+ 2.88 , 0.70292 ,
+ 2.89 , 0.68299 ,
+ 2.9 , 0.58616 ,
+ 2.91 , 0.47484 ,
+ 2.92 , 0.38822 ,
+ 2.93 , 0.3229 ,
+ 2.94 , 0.25296 ,
+ 2.95 , 0.16705 ,
+ 2.96 , 0.10044 ,
+ 2.97 , 7.353000000000000E-02 ,
+ 2.98 , 4.790000000000000E-02 ,
+ 2.99 , -3.974000000000000E-02 ,
+ 3.0 , -0.21989 ,
+ 3.01 , -0.43388 ,
+ 3.02 , -0.59094 ,
+ 3.03 , -0.68752 ,
+ 3.04 , -0.77344 ,
+ 3.05 , -0.84165 ,
+ 3.06 , -0.87592 ,
+ 3.07 , -0.92165 ,
+ 3.08 , -0.98681 ,
+ 3.09 , -0.9813 ,
+ 3.1 , -0.85134 ,
+ 3.11 , -0.71226 ,
+ 3.12 , -0.70318 ,
+ 3.13 , -0.73062 ,
+ 3.14 , -0.63434 ,
+ 3.15 , -0.49621 ,
+ 3.16 , -0.46434 ,
+ 3.17 , -0.4895 ,
+ 3.18 , -0.43989 ,
+ 3.19 , -0.297 ,
+ 3.2 , -0.12264 ,
+ 3.21 , 5.685000000000000E-02 ,
+ 3.22 , 0.20721 ,
+ 3.23 , 0.29127 ,
+ 3.24 , 0.37167 ,
+ 3.25 , 0.47314 ,
+ 3.26 , 0.48428 ,
+ 3.27 , 0.34199 ,
+ 3.28 , 0.14378 ,
+ 3.29 , 2.014000000000000E-02 ,
+ 3.3 , -3.310000000000000E-03 ,
+ 3.31 , 3.046000000000000E-02 ,
+ 3.32 , 7.851000000000000E-02 ,
+ 3.33 , 0.1222 ,
+ 3.34 , 0.19291 ,
+ 3.35 , 0.2916 ,
+ 3.36 , 0.38011 ,
+ 3.37 , 0.46514 ,
+ 3.38 , 0.52328 ,
+ 3.39 , 0.51669 ,
+ 3.4 , 0.4727 ,
+ 3.41 , 0.38682 ,
+ 3.42 , 0.22939 ,
+ 3.43 , 1.800000000000000E-02 ,
+ 3.44 , -0.199 ,
+ 3.45 , -0.40018 ,
+ 3.46 , -0.5733 ,
+ 3.47 , -0.72332 ,
+ 3.48 , -0.82419 ,
+ 3.49 , -0.83348 ,
+ 3.5 , -0.74258 ,
+ 3.51 , -0.61694 ,
+ 3.52 , -0.56099 ,
+ 3.53 , -0.61112 ,
+ 3.54 , -0.71023 ,
+ 3.55 , -0.78959 ,
+ 3.56 , -0.85129 ,
+ 3.57 , -0.93566 ,
+ 3.58 , -0.99997 ,
+ 3.59 , -0.92052 ,
+ 3.6 , -0.6664 ,
+ 3.61 , -0.3873 ,
+ 3.62 , -0.25033 ,
+ 3.63 , -0.24161 ,
+ 3.64 , -0.18701 ,
+ 3.65 , 9.379999999999999E-03 ,
+ 3.66 , 0.11381 ,
+ 3.67 , 0.16743 ,
+ 3.68 , 0.16297 ,
+ 3.69 , 0.1216 ,
+ 3.7 , 5.279000000000000E-02 ,
+ 3.71 , -9.607000000000000E-02 ,
+ 3.72 , -0.30972 ,
+ 3.73 , -0.35938 ,
+ 3.74 , -0.19296 ,
+ 3.75 , 6.919000000000000E-02 ,
+ 3.76 , 0.27173 ,
+ 3.77 , 0.34172 ,
+ 3.78 , 0.31251 ,
+ 3.79 , 0.24099 ,
+ 3.8 , 0.15009 ,
+ 3.81 , 0.10136 ,
+ 3.82 , 0.18046 ,
+ 3.83 , 0.36244 ,
+ 3.84 , 0.47034 ,
+ 3.85 , 0.36939 ,
+ 3.86 , 0.15689 ,
+ 3.87 , 1.108000000000000E-02 ,
+ 3.88 , 3.990000000000000E-03 ,
+ 3.89 , 0.11976 ,
+ 3.9 , 0.24956 ,
+ 3.91 , 0.21477 ,
+ 3.92 , -3.172000000000000E-02 ,
+ 3.93 , -0.24232 ,
+ 3.94 , -0.1514 ,
+ 3.95 , 0.12645 ,
+ 3.96 , 0.3411 ,
+ 3.97 , 0.48457 ,
+ 3.98 , 0.61705 ,
+ 3.99 , 0.70283 ,
+ 4.0 , 0.70328 ,
+ 4.01 , 0.62998 ,
+ 4.02 , 0.53518 ,
+ 4.03 , 0.44668 ,
+ 4.04 , 0.36172 ,
+ 4.05 , 0.31406 ,
+ 4.06 , 0.32888 ,
+ 4.07 , 0.35459 ,
+ 4.08 , 0.32512 ,
+ 4.09 , 0.25195 ,
+ 4.1 , 0.20405 ,
+ 4.11 , 0.22648 ,
+ 4.12 , 0.30571 ,
+ 4.13 , 0.37309 ,
+ 4.14 , 0.35283 ,
+ 4.15 , 0.24118 ,
+ 4.16 , 0.11162 ,
+ 4.17 , 1.458000000000000E-02 ,
+ 4.18 , -7.364000000000000E-02 ,
+ 4.19 , -0.1521 ,
+ 4.2 , -0.14128 ,
+ 4.21 , 2.440000000000000E-02 ,
+ 4.22 , 0.2852 ,
+ 4.23 , 0.45129 ,
+ 4.24 , 0.38982 ,
+ 4.25 , 0.15588 ,
+ 4.26 , -0.11495 ,
+ 4.27 , -0.31375 ,
+ 4.28 , -0.42086 ,
+ 4.29 , -0.48904 ,
+ 4.3 , -0.52097 ,
+ 4.31 , -0.49168 ,
+ 4.32 , -0.4234 ,
+ 4.33 , -0.36559 ,
+ 4.34 , -0.36994 ,
+ 4.35 , -0.42675 ,
+ 4.36 , -0.45696 ,
+ 4.37 , -0.39583 ,
+ 4.38 , -0.24523 ,
+ 4.39 , -7.371999999999999E-02 ,
+ 4.4 , 5.577000000000000E-02 ,
+ 4.41 , 0.13029 ,
+ 4.42 , 0.17 ,
+ 4.43 , 0.21223 ,
+ 4.44 , 0.25214 ,
+ 4.45 , 0.25221 ,
+ 4.46 , 0.20971 ,
+ 4.47 , 0.15915 ,
+ 4.48 , 0.13965 ,
+ 4.49 , 0.1015 ,
+ 4.5 , -5.693000000000000E-02 ,
+ 4.51 , -0.30165 ,
+ 4.52 , -0.49413 ,
+ 4.53 , -0.5601 ,
+ 4.54 , -0.5473 ,
+ 4.55 , -0.52318 ,
+ 4.56 , -0.43186 ,
+ 4.57 , -0.21177 ,
+ 4.58 , 5.701000000000000E-02 ,
+ 4.59 , 0.26717 ,
+ 4.6 , 0.3673 ,
+ 4.61 , 0.3813 ,
+ 4.62 , 0.40079 ,
+ 4.63 , 0.39365 ,
+ 4.64 , 0.18973 ,
+ 4.65 , -0.17373 ,
+ 4.66 , -0.40285 ,
+ 4.67 , -0.36957 ,
+ 4.68 , -0.23873 ,
+ 4.69 , -0.13623 ,
+ 4.7 , -1.420000000000000E-02 ,
+ 4.71 , 0.15954 ,
+ 4.72 , 0.31583 ,
+ 4.73 , 0.4076 ,
+ 4.74 , 0.44925 ,
+ 4.75 , 0.43323 ,
+ 4.76 , 0.36783 ,
+ 4.77 , 0.32597 ,
+ 4.78 , 0.34835 ,
+ 4.79 , 0.36693 ,
+ 4.8 , 0.28138 ,
+ 4.81 , 0.11386 ,
+ 4.82 , -4.390000000000000E-02 ,
+ 4.83 , -0.20925 ,
+ 4.84 , -0.42702 ,
+ 4.85 , -0.62277 ,
+ 4.86 , -0.72429 ,
+ 4.87 , -0.7462 ,
+ 4.88 , -0.75887 ,
+ 4.89 , -0.77194 ,
+ 4.9 , -0.72951 ,
+ 4.91 , -0.66245 ,
+ 4.92 , -0.67709 ,
+ 4.93 , -0.80669 ,
+ 4.94 , -0.95972 ,
+ 4.95 , -0.99997 ,
+ 4.96 , -0.88454 ,
+ 4.97 , -0.69049 ,
+ 4.98 , -0.52094 ,
+ 4.99 , -0.3957 ,
+ 5.0 , -0.24286 ,
+ 5.01 , -3.739000000000000E-02 ,
+ 5.02 , 0.10577 ,
+ 5.03 , 0.17347 ,
+ 5.04 , 0.16886 ,
+ 5.05 , 0.14491 ,
+ 5.06 , 0.14907 ,
+ 5.07 , 0.17361 ,
+ 5.08 , 0.20083 ,
+ 5.09 , 0.21954 ,
+ 5.1 , 0.2328 ,
+ 5.11 , 0.2575 ,
+ 5.12 , 0.28932 ,
+ 5.13 , 0.31126 ,
+ 5.14 , 0.29244 ,
+ 5.15 , 0.19772 ,
+ 5.16 , 5.796000000000000E-02 ,
+ 5.17 , -6.429000000000000E-02 ,
+ 5.18 , -5.218000000000000E-02 ,
+ 5.19 , 9.539000000000000E-02 ,
+ 5.2 , 0.20966 ,
+ 5.21 , 0.15862 ,
+ 5.22 , 1.473000000000000E-02 ,
+ 5.23 , -3.926000000000000E-02 ,
+ 5.24 , 8.541000000000000E-02 ,
+ 5.25 , 0.31423 ,
+ 5.26 , 0.44181 ,
+ 5.27 , 0.30949 ,
+ 5.28 , -4.230000000000000E-03 ,
+ 5.29 , -0.32893 ,
+ 5.3 , -0.59096 ,
+ 5.31 , -0.72514 ,
+ 5.32 , -0.65562 ,
+ 5.33 , -0.42079 ,
+ 5.34 , -0.1588 ,
+ 5.35 , 2.904000000000000E-02 ,
+ 5.36 , 0.10308 ,
+ 5.37 , 4.177000000000000E-02 ,
+ 5.38 , -6.319000000000000E-02 ,
+ 5.39 , -4.705000000000000E-02 ,
+ 5.4 , 9.604000000000000E-02 ,
+ 5.41 , 0.24518 ,
+ 5.42 , 0.30632 ,
+ 5.43 , 0.23914 ,
+ 5.44 , 9.232000000000000E-02 ,
+ 5.45 , -1.776000000000000E-02 ,
+ 5.46 , -7.690000000000000E-03 ,
+ 5.47 , 7.241000000000000E-02 ,
+ 5.48 , 9.512000000000000E-02 ,
+ 5.49 , 8.989000000000000E-02 ,
+ 5.5 , 0.19384 ,
+ 5.51 , 0.35667 ,
+ 5.52 , 0.38627 ,
+ 5.53 , 0.27202 ,
+ 5.54 , 0.22809 ,
+ 5.55 , 0.35372 ,
+ 5.56 , 0.49889 ,
+ 5.57 , 0.54618 ,
+ 5.58 , 0.55561 ,
+ 5.59 , 0.6075 ,
+ 5.6 , 0.65833 ,
+ 5.61 , 0.62315 ,
+ 5.62 , 0.54314 ,
+ 5.63 , 0.5024 ,
+ 5.64 , 0.49951 ,
+ 5.65 , 0.50238 ,
+ 5.66 , 0.459 ,
+ 5.67 , 0.32065 ,
+ 5.68 , 0.12297 ,
+ 5.69 , -4.304000000000000E-02 ,
+ 5.7 , -0.12348 ,
+ 5.71 , -0.16939 ,
+ 5.72 , -0.26337 ,
+ 5.73 , -0.37116 ,
+ 5.74 , -0.40828 ,
+ 5.75 , -0.39748 ,
+ 5.76 , -0.42458 ,
+ 5.77 , -0.49729 ,
+ 5.78 , -0.51741 ,
+ 5.79 , -0.39554 ,
+ 5.8 , -0.19178 ,
+ 5.81 , -6.471000000000000E-02 ,
+ 5.82 , -6.743000000000000E-02 ,
+ 5.83 , -0.1271 ,
+ 5.84 , -0.1634 ,
+ 5.85 , -0.13345 ,
+ 5.86 , -6.090000000000000E-02 ,
+ 5.87 , 2.519000000000000E-02 ,
+ 5.88 , 0.14903 ,
+ 5.89 , 0.28064 ,
+ 5.9 , 0.34038 ,
+ 5.91 , 0.3104 ,
+ 5.92 , 0.22998 ,
+ 5.93 , 0.15353 ,
+ 5.94 , 0.1055 ,
+ 5.95 , 7.457000000000000E-02 ,
+ 5.96 , 5.763000000000000E-02 ,
+ 5.97 , 8.033999999999999E-02 ,
+ 5.98 , 0.14644 ,
+ 5.99 , 0.1332 ,
+ 6.0 , -7.482000000000000E-02 ,
+ 6.01 , -0.36556 ,
+ 6.02 , -0.55895 ,
+ 6.03 , -0.59056 ,
+ 6.04 , -0.46664 ,
+ 6.05 , -0.26194 ,
+ 6.06 , -7.546000000000000E-02 ,
+ 6.07 , 7.784000000000001E-02 ,
+ 6.08 , 0.23755 ,
+ 6.09 , 0.36836 ,
+ 6.1 , 0.37298 ,
+ 6.11 , 0.26509 ,
+ 6.12 , 0.15102 ,
+ 6.13 , 6.525000000000000E-02 ,
+ 6.14 , -1.695000000000000E-02 ,
+ 6.15 , -0.10207 ,
+ 6.16 , -0.1821 ,
+ 6.17 , -0.26644 ,
+ 6.18 , -0.32842 ,
+ 6.19 , -0.24869 ,
+ 6.2 , 2.279000000000000E-02 ,
+ 6.21 , 0.37255 ,
+ 6.22 , 0.6758 ,
+ 6.23 , 0.86221 ,
+ 6.24 , 0.91467 ,
+ 6.25 , 0.89167 ,
+ 6.26 , 0.84631 ,
+ 6.27 , 0.74074 ,
+ 6.28 , 0.49841 ,
+ 6.29 , 0.16761 ,
+ 6.3 , -4.544000000000000E-02 ,
+ 6.31 , -2.644000000000000E-02 ,
+ 6.32 , 9.400000000000000E-02 ,
+ 6.33 , 0.16063 ,
+ 6.34 , 0.18176 ,
+ 6.35 , 0.20612 ,
+ 6.36 , 0.22068 ,
+ 6.37 , 0.22211 ,
+ 6.38 , 0.23664 ,
+ 6.39 , 0.24671 ,
+ 6.4 , 0.1861 ,
+ 6.41 , 0.10676 ,
+ 6.42 , 0.2039 ,
+ 6.43 , 0.4894 ,
+ 6.44 , 0.7178 ,
+ 6.45 , 0.73624 ,
+ 6.46 , 0.64197 ,
+ 6.47 , 0.61236 ,
+ 6.48 , 0.66281 ,
+ 6.49 , 0.6407 ,
+ 6.5 , 0.48402 ,
+ 6.51 , 0.28743 ,
+ 6.52 , 0.1436 ,
+ 6.53 , 6.140000000000000E-02 ,
+ 6.54 , -1.770000000000000E-03 ,
+ 6.55 , -6.498000000000000E-02 ,
+ 6.56 , -0.12251 ,
+ 6.57 , -0.16577 ,
+ 6.58 , -0.20217 ,
+ 6.59 , -0.28219 ,
+ 6.6 , -0.37605 ,
+ 6.61 , -0.34257 ,
+ 6.62 , -0.12814 ,
+ 6.63 , 0.1706 ,
+ 6.64 , 0.38468 ,
+ 6.65 , 0.39384 ,
+ 6.66 , 0.26746 ,
+ 6.67 , 0.18207 ,
+ 6.68 , 0.19512 ,
+ 6.69 , 0.22133 ,
+ 6.7 , 0.209 ,
+ 6.71 , 0.17146 ,
+ 6.72 , 6.763000000000000E-02 ,
+ 6.73 , -0.13527 ,
+ 6.74 , -0.37496 ,
+ 6.75 , -0.55764 ,
+ 6.76 , -0.58824 ,
+ 6.77 , -0.44844 ,
+ 6.78 , -0.27116 ,
+ 6.79 , -0.19551 ,
+ 6.8 , -0.18978 ,
+ 6.81 , -9.911000000000000E-02 ,
+ 6.82 , 0.11626 ,
+ 6.83 , 0.30541 ,
+ 6.84 , 0.3521 ,
+ 6.85 , 0.27698 ,
+ 6.86 , 0.10781 ,
+ 6.87 , -0.13553 ,
+ 6.88 , -0.3724 ,
+ 6.89 , -0.51163 ,
+ 6.9 , -0.49535 ,
+ 6.91 , -0.29991 ,
+ 6.92 , -1.034000000000000E-02 ,
+ 6.93 , 0.19111 ,
+ 6.94 , 0.1843 ,
+ 6.95 , 6.730000000000000E-03 ,
+ 6.96 , -0.21507 ,
+ 6.97 , -0.41983 ,
+ 6.98 , -0.58894 ,
+ 6.99 , -0.63614 ,
+ 7.0 , -0.54698 ,
+ 7.01 , -0.44682 ,
+ 7.02 , -0.42416 ,
+ 7.03 , -0.46132 ,
+ 7.04 , -0.48084 ,
+ 7.05 , -0.43504 ,
+ 7.06 , -0.34615 ,
+ 7.07 , -0.23496 ,
+ 7.08 , -0.13072 ,
+ 7.09 , -5.857000000000000E-02 ,
+ 7.1 , 1.753000000000000E-02 ,
+ 7.11 , 0.10141 ,
+ 7.12 , 0.12684 ,
+ 7.13 , 9.014000000000000E-02 ,
+ 7.14 , 0.11682 ,
+ 7.15 , 0.28896 ,
+ 7.16 , 0.48134 ,
+ 7.17 , 0.54721 ,
+ 7.18 , 0.49147 ,
+ 7.19 , 0.35746 ,
+ 7.2 , 0.17093 ,
+ 7.21 , -6.870000000000000E-03 ,
+ 7.22 , -7.575999999999999E-02 ,
+ 7.23 , -4.320000000000000E-03 ,
+ 7.24 , 6.714000000000001E-02 ,
+ 7.25 , 2.620000000000000E-03 ,
+ 7.26 , -0.12071 ,
+ 7.27 , -0.16453 ,
+ 7.28 , -0.1671 ,
+ 7.29 , -0.24591 ,
+ 7.3 , -0.36246 ,
+ 7.31 , -0.39855 ,
+ 7.32 , -0.33851 ,
+ 7.33 , -0.22608 ,
+ 7.34 , -0.1129 ,
+ 7.35 , -3.976000000000000E-02 ,
+ 7.36 , 5.950000000000000E-03 ,
+ 7.37 , 4.231000000000000E-02 ,
+ 7.38 , 9.320000000000001E-02 ,
+ 7.39 , 0.21161 ,
+ 7.4 , 0.37502 ,
+ 7.41 , 0.46085 ,
+ 7.42 , 0.42852 ,
+ 7.43 , 0.39911 ,
+ 7.44 , 0.48134 ,
+ 7.45 , 0.61862 ,
+ 7.46 , 0.65845 ,
+ 7.47 , 0.52488 ,
+ 7.48 , 0.27775 ,
+ 7.49 , 2.611000000000000E-02 ,
+ 7.5 , -0.16858 ,
+ 7.51 , -0.35917 ,
+ 7.52 , -0.64888 ,
+ 7.53 , -0.93894 ,
+ 7.54 , -0.99997 ,
+ 7.55 , -0.79545 ,
+ 7.56 , -0.50022 ,
+ 7.57 , -0.31055 ,
+ 7.58 , -0.28451 ,
+ 7.59 , -0.32788 ,
+ 7.6 , -0.34293 ,
+ 7.61 , -0.30914 ,
+ 7.62 , -0.29364 ,
+ 7.63 , -0.36128 ,
+ 7.64 , -0.43128 ,
+ 7.65 , -0.41928 ,
+ 7.66 , -0.39651 ,
+ 7.67 , -0.43324 ,
+ 7.68 , -0.4592 ,
+ 7.69 , -0.3661 ,
+ 7.7 , -0.17726 ,
+ 7.71 , -7.930000000000000E-03 ,
+ 7.72 , 9.228000000000000E-02 ,
+ 7.73 , 0.12711 ,
+ 7.74 , 0.10315 ,
+ 7.75 , 9.070000000000000E-03 ,
+ 7.76 , -0.1676 ,
+ 7.77 , -0.37078 ,
+ 7.78 , -0.48702 ,
+ 7.79 , -0.42176 ,
+ 7.8 , -0.20091 ,
+ 7.81 , -7.270000000000000E-03 ,
+ 7.82 , 3.404000000000000E-02 ,
+ 7.83 , 2.700000000000000E-03 ,
+ 7.84 , -4.730000000000000E-03 ,
+ 7.85 , -2.107000000000000E-02 ,
+ 7.86 , -7.763000000000000E-02 ,
+ 7.87 , -0.11332 ,
+ 7.88 , -9.217000000000000E-02 ,
+ 7.89 , -7.226000000000000E-02 ,
+ 7.9 , -0.10282 ,
+ 7.91 , -0.18072 ,
+ 7.92 , -0.27112 ,
+ 7.93 , -0.33308 ,
+ 7.94 , -0.37009 ,
+ 7.95 , -0.41046 ,
+ 7.96 , -0.46542 ,
+ 7.97 , -0.51679 ,
+ 7.98 , -0.48695 ,
+ 7.99 , -0.31766 ,
+ 8.0 , -0.11193 ,
+ 8.01 , -1.808000000000000E-02 ,
+ 8.02 , -9.790000000000000E-03 ,
+ 8.03 , 7.910000000000000E-03 ,
+ 8.04 , 2.892000000000000E-02 ,
+ 8.05 , 5.256000000000000E-02 ,
+ 8.06 , 0.15118 ,
+ 8.07 , 0.33598 ,
+ 8.08 , 0.47411 ,
+ 8.09 , 0.4184 ,
+ 8.1 , 0.22182 ,
+ 8.11 , 6.008000000000000E-02 ,
+ 8.12 , 7.820000000000001E-03 ,
+ 8.13 , 3.031000000000000E-02 ,
+ 8.14 , 6.139000000000000E-02 ,
+ 8.15 , 9.475000000000000E-02 ,
+ 8.16 , 0.1711 ,
+ 8.17 , 0.25375 ,
+ 8.18 , 0.32694 ,
+ 8.19 , 0.47654 ,
+ 8.2 , 0.71476 ,
+ 8.21 , 0.92354 ,
+ 8.22 , 0.99997 ,
+ 8.23 , 0.96174 ,
+ 8.24 , 0.85956 ,
+ 8.25 , 0.67462 ,
+ 8.26 , 0.42666 ,
+ 8.27 , 0.21402 ,
+ 8.28 , 8.068000000000000E-02 ,
+ 8.29 , -2.572000000000000E-02 ,
+ 8.3 , -0.18823 ,
+ 8.31 , -0.43016 ,
+ 8.32 , -0.69265 ,
+ 8.33 , -0.84523 ,
+ 8.34 , -0.78451 ,
+ 8.35 , -0.5823 ,
+ 8.36 , -0.39951 ,
+ 8.37 , -0.3009 ,
+ 8.38 , -0.28826 ,
+ 8.39 , -0.34762 ,
+ 8.4 , -0.40794 ,
+ 8.41 , -0.37827 ,
+ 8.42 , -0.24945 ,
+ 8.43 , -0.10703 ,
+ 8.44 , -1.106000000000000E-02 ,
+ 8.45 , 6.251000000000000E-02 ,
+ 8.46 , 0.1419 ,
+ 8.47 , 0.19928 ,
+ 8.48 , 0.18798 ,
+ 8.49 , 0.11645 ,
+ 8.5 , 4.575000000000000E-02 ,
+ 8.51 , 4.959000000000000E-02 ,
+ 8.52 , 0.17716 ,
+ 8.53 , 0.34359 ,
+ 8.54 , 0.36584 ,
+ 8.55 , 0.23915 ,
+ 8.56 , 0.18171 ,
+ 8.57 , 0.30089 ,
+ 8.58 , 0.43922 ,
+ 8.59 , 0.40395 ,
+ 8.6 , 0.15759 ,
+ 8.61 , -0.16407 ,
+ 8.62 , -0.36165 ,
+ 8.63 , -0.39041 ,
+ 8.64 , -0.35247 ,
+ 8.65 , -0.31056 ,
+ 8.66 , -0.24355 ,
+ 8.67 , -9.318000000000000E-02 ,
+ 8.68 , 7.779999999999999E-02 ,
+ 8.69 , 5.175000000000000E-02 ,
+ 8.7 , -0.23925 ,
+ 8.71 , -0.59171 ,
+ 8.72 , -0.77473 ,
+ 8.73 , -0.75474 ,
+ 8.74 , -0.64528 ,
+ 8.75 , -0.48987 ,
+ 8.76 , -0.29956 ,
+ 8.77 , -0.1701 ,
+ 8.78 , -0.13175 ,
+ 8.79 , -0.10789 ,
+ 8.8 , -4.978000000000000E-02 ,
+ 8.81 , 4.376000000000000E-02 ,
+ 8.82 , 0.15205 ,
+ 8.83 , 0.2202 ,
+ 8.84 , 0.17479 ,
+ 8.85 , 2.103000000000000E-02 ,
+ 8.86 , -0.14172 ,
+ 8.87 , -0.26548 ,
+ 8.88 , -0.38534 ,
+ 8.89 , -0.50451 ,
+ 8.9 , -0.53404 ,
+ 8.91 , -0.38116 ,
+ 8.92 , -0.11525 ,
+ 8.93 , 7.395000000000000E-02 ,
+ 8.94 , 0.10361 ,
+ 8.95 , 6.577000000000000E-02 ,
+ 8.96 , 6.259000000000001E-02 ,
+ 8.97 , 5.649000000000000E-02 ,
+ 8.98 , -3.880000000000000E-03 ,
+ 8.99 , -2.390000000000000E-02 ,
+ 9.0 , 7.305000000000000E-02 ,
+ 9.01 , 0.19452 ,
+ 9.02 , 0.2608 ,
+ 9.03 , 0.35267 ,
+ 9.04 , 0.5391 ,
+ 9.05 , 0.73389 ,
+ 9.06 , 0.83545 ,
+ 9.07 , 0.82904 ,
+ 9.08 , 0.72024 ,
+ 9.09 , 0.51294 ,
+ 9.1 , 0.23736 ,
+ 9.11 , -4.577000000000000E-02 ,
+ 9.12 , -0.26395 ,
+ 9.13 , -0.38853 ,
+ 9.14 , -0.43089 ,
+ 9.15 , -0.4349 ,
+ 9.16 , -0.41682 ,
+ 9.17 , -0.37537 ,
+ 9.18 , -0.32465 ,
+ 9.19 , -0.29702 ,
+ 9.2 , -0.32491 ,
+ 9.21 , -0.3466 ,
+ 9.22 , -0.28185 ,
+ 9.23 , -0.19619 ,
+ 9.24 , -0.14637 ,
+ 9.25 , -9.772000000000000E-02 ,
+ 9.26 , -7.858999999999999E-02 ,
+ 9.27 , -0.13191 ,
+ 9.28 , -0.21558 ,
+ 9.29 , -0.24568 ,
+ 9.3 , -0.18549 ,
+ 9.31 , -9.976000000000000E-02 ,
+ 9.32 , -6.297000000000000E-02 ,
+ 9.33 , -8.577000000000000E-02 ,
+ 9.34 , -0.11997 ,
+ 9.35 , -5.070000000000000E-02 ,
+ 9.36 , 0.19743 ,
+ 9.37 , 0.55636 ,
+ 9.38 , 0.86649 ,
+ 9.39 , 0.99997 ,
+ 9.4 , 0.95787 ,
+ 9.41 , 0.80859 ,
+ 9.42 , 0.58733 ,
+ 9.43 , 0.34042 ,
+ 9.44 , 0.15629 ,
+ 9.45 , 7.298000000000000E-02 ,
+ 9.46 , 3.103000000000000E-02 ,
+ 9.47 , -1.360000000000000E-03 ,
+ 9.48 , 2.567000000000000E-02 ,
+ 9.49 , 9.848000000000000E-02 ,
+ 9.5 , 0.13363 ,
+ 9.51 , 0.10499 ,
+ 9.52 , 1.947000000000000E-02 ,
+ 9.53 , -0.11686 ,
+ 9.54 , -0.25475 ,
+ 9.55 , -0.33284 ,
+ 9.56 , -0.37717 ,
+ 9.57 , -0.45927 ,
+ 9.58 , -0.53679 ,
+ 9.59 , -0.50988 ,
+ 9.6 , -0.4323 ,
+ 9.61 , -0.46891 ,
+ 9.62 , -0.62414 ,
+ 9.63 , -0.67897 ,
+ 9.64 , -0.46893 ,
+ 9.65 , -0.10561 ,
+ 9.66 , 0.12896 ,
+ 9.67 , 7.442000000000000E-02 ,
+ 9.68 , -0.13619 ,
+ 9.69 , -0.25497 ,
+ 9.7 , -0.19615 ,
+ 9.71 , -5.295000000000000E-02 ,
+ 9.72 , 5.399000000000000E-02 ,
+ 9.73 , 8.438000000000000E-02 ,
+ 9.74 , 7.897000000000000E-02 ,
+ 9.75 , 0.11239 ,
+ 9.76 , 0.18699 ,
+ 9.77 , 0.19038 ,
+ 9.78 , 0.13535 ,
+ 9.79 , 0.20938 ,
+ 9.8 , 0.43787 ,
+ 9.81 , 0.63937 ,
+ 9.82 , 0.67742 ,
+ 9.83 , 0.58799 ,
+ 9.84 , 0.49876 ,
+ 9.85 , 0.4183 ,
+ 9.86 , 0.29948 ,
+ 9.87 , 0.22905 ,
+ 9.88 , 0.2606 ,
+ 9.89 , 0.28847 ,
+ 9.9 , 0.22616 ,
+ 9.91 , 0.12545 ,
+ 9.92 , 8.956000000000000E-02 ,
+ 9.93 , 0.12928 ,
+ 9.94 , 0.15076 ,
+ 9.95 , 4.544000000000000E-02 ,
+ 9.96 , -0.20722 ,
+ 9.97 , -0.49063 ,
+ 9.98 , -0.6894 ,
+ 9.99 , -0.80485 ,
+ 10.0 , -0.84771 ,
+ 10.01 , -0.76807 ,
+ 10.02 , -0.56037 ,
+ 10.03 , -0.32503 ,
+ 10.04 , -0.15016 ,
+ 10.05 , -3.882000000000000E-02 ,
+ 10.06 , 6.110000000000000E-03 ,
+ 10.07 , -2.178000000000000E-02 ,
+ 10.08 , -6.615000000000000E-02 ,
+ 10.09 , -3.796000000000000E-02 ,
+ 10.1 , 8.788000000000000E-02 ,
+ 10.11 , 0.2149 ,
+ 10.12 , 0.23018 ,
+ 10.13 , 0.14302 ,
+ 10.14 , 3.300000000000000E-02 ,
+ 10.15 , -5.442000000000000E-02 ,
+ 10.16 , -9.190000000000000E-02 ,
+ 10.17 , -5.636000000000000E-02 ,
+ 10.18 , 1.760000000000000E-03 ,
+ 10.19 , -4.910000000000000E-03 ,
+ 10.2 , -7.645000000000000E-02 ,
+ 10.21 , -0.16067 ,
+ 10.22 , -0.22708 ,
+ 10.23 , -0.23139 ,
+ 10.24 , -0.12101 ,
+ 10.25 , 7.537000000000001E-02 ,
+ 10.26 , 0.24004 ,
+ 10.27 , 0.32546 ,
+ 10.28 , 0.38826 ,
+ 10.29 , 0.41863 ,
+ 10.3 , 0.35794 ,
+ 10.31 , 0.23222 ,
+ 10.32 , 0.11401 ,
+ 10.33 , 1.697000000000000E-02 ,
+ 10.34 , -0.10766 ,
+ 10.35 , -0.25136 ,
+ 10.36 , -0.35757 ,
+ 10.37 , -0.41565 ,
+ 10.38 , -0.3843 ,
+ 10.39 , -0.22915 ,
+ 10.4 , -7.590000000000000E-03 ,
+ 10.41 , 0.24235 ,
+ 10.42 , 0.48677 ,
+ 10.43 , 0.65383 ,
+ 10.44 , 0.70515 ,
+ 10.45 , 0.61222 ,
+ 10.46 , 0.40693 ,
+ 10.47 , 0.24331 ,
+ 10.48 , 0.2277 ,
+ 10.49 , 0.27807 ,
+ 10.5 , 0.24063 ,
+ 10.51 , 9.018000000000000E-02 ,
+ 10.52 , -8.182000000000000E-02 ,
+ 10.53 , -0.23302 ,
+ 10.54 , -0.37812 ,
+ 10.55 , -0.4703 ,
+ 10.56 , -0.41592 ,
+ 10.57 , -0.24651 ,
+ 10.58 , -0.12814 ,
+ 10.59 , -0.13 ,
+ 10.6 , -0.17581 ,
+ 10.61 , -0.22261 ,
+ 10.62 , -0.29974 ,
+ 10.63 , -0.40731 ,
+ 10.64 , -0.49694 ,
+ 10.65 , -0.51567 ,
+ 10.66 , -0.38399 ,
+ 10.67 , -6.413000000000001E-02 ,
+ 10.68 , 0.26417 ,
+ 10.69 , 0.33331 ,
+ 10.7 , 0.13429 ,
+ 10.71 , -8.293000000000000E-02 ,
+ 10.72 , -0.1463 ,
+ 10.73 , -0.13542 ,
+ 10.74 , -0.20542 ,
+ 10.75 , -0.35982 ,
+ 10.76 , -0.44591 ,
+ 10.77 , -0.37107 ,
+ 10.78 , -0.25668 ,
+ 10.79 , -0.25179 ,
+ 10.8 , -0.31124 ,
+ 10.81 , -0.28374 ,
+ 10.82 , -0.12758 ,
+ 10.83 , 1.490000000000000E-02 ,
+ 10.84 , 1.229000000000000E-02 ,
+ 10.85 , -6.356000000000001E-02 ,
+ 10.86 , -5.771000000000000E-02 ,
+ 10.87 , 8.679000000000001E-02 ,
+ 10.88 , 0.31097 ,
+ 10.89 , 0.53347 ,
+ 10.9 , 0.68419 ,
+ 10.91 , 0.65081 ,
+ 10.92 , 0.4251 ,
+ 10.93 , 0.19891 ,
+ 10.94 , 0.11666 ,
+ 10.95 , 0.13796 ,
+ 10.96 , 0.14749 ,
+ 10.97 , 9.375000000000000E-02 ,
+ 10.98 , 2.569000000000000E-02 ,
+ 10.99 , -1.828000000000000E-02 ,
+ 11.0 , -6.660000000000000E-03 ,
+ 11.01 , 9.803000000000001E-02 ,
+ 11.02 , 0.2156 ,
+ 11.03 , 0.2608 ,
+ 11.04 , 0.28376 ,
+ 11.05 , 0.31446 ,
+ 11.06 , 0.30511 ,
+ 11.07 , 0.25332 ,
+ 11.08 , 0.19284 ,
+ 11.09 , 0.1152 ,
+ 11.1 , 1.948000000000000E-02 ,
+ 11.11 , -8.540000000000001E-03 ,
+ 11.12 , -8.070000000000001E-03 ,
+ 11.13 , 5.720000000000000E-03 ,
+ 11.14 , 5.899000000000000E-02 ,
+ 11.15 , 0.13421 ,
+ 11.16 , 0.26053 ,
+ 11.17 , 0.41353 ,
+ 11.18 , 0.51092 ,
+ 11.19 , 0.52002 ,
+ 11.2 , 0.50124 ,
+ 11.21 , 0.5386 ,
+ 11.22 , 0.65388 ,
+ 11.23 , 0.8058 ,
+ 11.24 , 0.93844 ,
+ 11.25 , 0.99997 ,
+ 11.26 , 0.96789 ,
+ 11.27 , 0.87593 ,
+ 11.28 , 0.80065 ,
+ 11.29 , 0.79192 ,
+ 11.3 , 0.8141 ,
+ 11.31 , 0.8052 ,
+ 11.32 , 0.74262 ,
+ 11.33 , 0.61546 ,
+ 11.34 , 0.41975 ,
+ 11.35 , 0.22346 ,
+ 11.36 , 0.14585 ,
+ 11.37 , 0.18339 ,
+ 11.38 , 0.21495 ,
+ 11.39 , 0.22018 ,
+ 11.4 , 0.23766 ,
+ 11.41 , 0.19769 ,
+ 11.42 , 1.272000000000000E-02 ,
+ 11.43 , -0.33277 ,
+ 11.44 , -0.5999 ,
+ 11.45 , -0.66307 ,
+ 11.46 , -0.54941 ,
+ 11.47 , -0.30754 ,
+ 11.48 , 9.150000000000000E-03 ,
+ 11.49 , 0.33567 ,
+ 11.5 , 0.62395 ,
+ 11.51 , 0.82292 ,
+ 11.52 , 0.92488 ,
+ 11.53 , 0.94922 ,
+ 11.54 , 0.90162 ,
+ 11.55 , 0.81535 ,
+ 11.56 , 0.68529 ,
+ 11.57 , 0.48301 ,
+ 11.58 , 0.28744 ,
+ 11.59 , 0.21968 ,
+ 11.6 , 0.31463 ,
+ 11.61 , 0.4858 ,
+ 11.62 , 0.58845 ,
+ 11.63 , 0.57005 ,
+ 11.64 , 0.49055 ,
+ 11.65 , 0.39877 ,
+ 11.66 , 0.2819 ,
+ 11.67 , 0.11731 ,
+ 11.68 , -6.177000000000000E-02 ,
+ 11.69 , -0.1701 ,
+ 11.7 , -0.21434 ,
+ 11.71 , -0.36528 ,
+ 11.72 , -0.67236 ,
+ 11.73 , -0.88398 ,
+ 11.74 , -0.82736 ,
+ 11.75 , -0.67582 ,
+ 11.76 , -0.64387 ,
+ 11.77 , -0.69937 ,
+ 11.78 , -0.68858 ,
+ 11.79 , -0.5758 ,
+ 11.8 , -0.46315 ,
+ 11.81 , -0.45051 ,
+ 11.82 , -0.51549 ,
+ 11.83 , -0.51468 ,
+ 11.84 , -0.35292 ,
+ 11.85 , -0.11964 ,
+ 11.86 , -1.117000000000000E-02 ,
+ 11.87 , -0.1357 ,
+ 11.88 , -0.40276 ,
+ 11.89 , -0.63738 ,
+ 11.9 , -0.73699 ,
+ 11.91 , -0.69661 ,
+ 11.92 , -0.58112 ,
+ 11.93 , -0.46357 ,
+ 11.94 , -0.38497 ,
+ 11.95 , -0.33617 ,
+ 11.96 , -0.26831 ,
+ 11.97 , -0.19582 ,
+ 11.98 , -0.16518 ,
+ 11.99 , -0.14401 ,
+ 12.0 , -7.318000000000000E-02 ,
+ 12.01 , 7.769000000000000E-02 ,
+ 12.02 , 0.26041 ,
+ 12.03 , 0.37046 ,
+ 12.04 , 0.40569 ,
+ 12.05 , 0.44476 ,
+ 12.06 , 0.50231 ,
+ 12.07 , 0.52622 ,
+ 12.08 , 0.47631 ,
+ 12.09 , 0.35672 ,
+ 12.1 , 0.14838 ,
+ 12.11 , -0.13846 ,
+ 12.12 , -0.36979 ,
+ 12.13 , -0.47711 ,
+ 12.14 , -0.54786 ,
+ 12.15 , -0.62333 ,
+ 12.16 , -0.64749 ,
+ 12.17 , -0.58515 ,
+ 12.18 , -0.46856 ,
+ 12.19 , -0.35151 ,
+ 12.2 , -0.26225 ,
+ 12.21 , -0.22214 ,
+ 12.22 , -0.22853 ,
+ 12.23 , -0.19257 ,
+ 12.24 , -2.725000000000000E-02 ,
+ 12.25 , 0.18283 ,
+ 12.26 , 0.25344 ,
+ 12.27 , 0.12964 ,
+ 12.28 , -9.258000000000000E-02 ,
+ 12.29 , -0.29733 ,
+ 12.3 , -0.42242 ,
+ 12.31 , -0.45343 ,
+ 12.32 , -0.38158 ,
+ 12.33 , -0.24116 ,
+ 12.34 , -0.13557 ,
+ 12.35 , -0.11938 ,
+ 12.36 , -0.14999 ,
+ 12.37 , -0.17426 ,
+ 12.38 , -0.16707 ,
+ 12.39 , -0.12211 ,
+ 12.4 , -6.938000000000000E-02 ,
+ 12.41 , -5.365000000000000E-02 ,
+ 12.42 , -6.988999999999999E-02 ,
+ 12.43 , -0.10537 ,
+ 12.44 , -0.18301 ,
+ 12.45 , -0.26683 ,
+ 12.46 , -0.27079 ,
+ 12.47 , -0.18067 ,
+ 12.48 , -5.357000000000000E-02 ,
+ 12.49 , 5.621000000000000E-02 ,
+ 12.5 , 0.12411 ,
+ 12.51 , 0.1349 ,
+ 12.52 , 0.10552 ,
+ 12.53 , 8.767000000000000E-02 ,
+ 12.54 , 5.312000000000000E-02 ,
+ 12.55 , -7.994000000000000E-02 ,
+ 12.56 , -0.28316 ,
+ 12.57 , -0.43439 ,
+ 12.58 , -0.45819 ,
+ 12.59 , -0.39875 ,
+ 12.6 , -0.3257 ,
+ 12.61 , -0.21617 ,
+ 12.62 , -5.834000000000000E-02 ,
+ 12.63 , 6.234000000000000E-02 ,
+ 12.64 , 7.834000000000001E-02 ,
+ 12.65 , 2.524000000000000E-02 ,
+ 12.66 , -4.370000000000000E-03 ,
+ 12.67 , 2.088000000000000E-02 ,
+ 12.68 , 3.738000000000000E-02 ,
+ 12.69 , -5.780000000000000E-03 ,
+ 12.7 , -7.783000000000000E-02 ,
+ 12.71 , -0.10293 ,
+ 12.72 , -5.917000000000000E-02 ,
+ 12.73 , -2.088000000000000E-02 ,
+ 12.74 , -4.084000000000000E-02 ,
+ 12.75 , -7.596000000000000E-02 ,
+ 12.76 , -7.527000000000000E-02 ,
+ 12.77 , -4.418000000000000E-02 ,
+ 12.78 , -2.046000000000000E-02 ,
+ 12.79 , -2.682000000000000E-02 ,
+ 12.8 , -2.654000000000000E-02 ,
+ 12.81 , 3.635000000000000E-02 ,
+ 12.82 , 0.12352 ,
+ 12.83 , 0.13159 ,
+ 12.84 , 4.372000000000000E-02 ,
+ 12.85 , -6.480000000000000E-02 ,
+ 12.86 , -0.1361 ,
+ 12.87 , -0.17058 ,
+ 12.88 , -0.1883 ,
+ 12.89 , -0.19167 ,
+ 12.9 , -0.19116 ,
+ 12.91 , -0.20869 ,
+ 12.92 , -0.23797 ,
+ 12.93 , -0.28017 ,
+ 12.94 , -0.36467 ,
+ 12.95 , -0.46778 ,
+ 12.96 , -0.49324 ,
+ 12.97 , -0.38894 ,
+ 12.98 , -0.2225 ,
+ 12.99 , -9.676000000000000E-02 ,
+ 13.0 , -5.153000000000000E-02 ,
+ 13.01 , -5.856000000000000E-02 ,
+ 13.02 , -6.265000000000000E-02 ,
+ 13.03 , -3.700000000000000E-02 ,
+ 13.04 , 8.800000000000001E-03 ,
+ 13.05 , 4.189000000000000E-02 ,
+ 13.06 , 1.048000000000000E-02 ,
+ 13.07 , -8.393000000000000E-02 ,
+ 13.08 , -0.17214 ,
+ 13.09 , -0.21986 ,
+ 13.1 , -0.25265 ,
+ 13.11 , -0.28696 ,
+ 13.12 , -0.29845 ,
+ 13.13 , -0.27534 ,
+ 13.14 , -0.25187 ,
+ 13.15 , -0.25011 ,
+ 13.16 , -0.27425 ,
+ 13.17 , -0.33551 ,
+ 13.18 , -0.41051 ,
+ 13.19 , -0.45406 ,
+ 13.2 , -0.44533 ,
+ 13.21 , -0.38727 ,
+ 13.22 , -0.30756 ,
+ 13.23 , -0.24203 ,
+ 13.24 , -0.20129 ,
+ 13.25 , -0.16106 ,
+ 13.26 , -9.457000000000000E-02 ,
+ 13.27 , -2.440000000000000E-02 ,
+ 13.28 , 7.040000000000000E-03 ,
+ 13.29 , 8.600000000000000E-03 ,
+ 13.3 , 1.981000000000000E-02 ,
+ 13.31 , 4.834000000000000E-02 ,
+ 13.32 , 7.178000000000000E-02 ,
+ 13.33 , 8.525000000000001E-02 ,
+ 13.34 , 0.1107 ,
+ 13.35 , 0.15822 ,
+ 13.36 , 0.21564 ,
+ 13.37 , 0.27468 ,
+ 13.38 , 0.32506 ,
+ 13.39 , 0.34096 ,
+ 13.4 , 0.32619 ,
+ 13.41 , 0.32491 ,
+ 13.42 , 0.34842 ,
+ 13.43 , 0.36279 ,
+ 13.44 , 0.34026 ,
+ 13.45 , 0.2756 ,
+ 13.46 , 0.18648 ,
+ 13.47 , 9.881000000000000E-02 ,
+ 13.48 , 3.222000000000000E-02 ,
+ 13.49 , 1.061000000000000E-02 ,
+ 13.5 , 4.343000000000000E-02 ,
+ 13.51 , 9.372000000000000E-02 ,
+ 13.52 , 0.10628 ,
+ 13.53 , 7.198000000000000E-02 ,
+ 13.54 , 3.458000000000000E-02 ,
+ 13.55 , 2.182000000000000E-02 ,
+ 13.56 , 1.377000000000000E-02 ,
+ 13.57 , -1.295000000000000E-02 ,
+ 13.58 , -4.297000000000000E-02 ,
+ 13.59 , -4.232000000000000E-02 ,
+ 13.6 , -1.224000000000000E-02 ,
+ 13.61 , 1.559000000000000E-02 ,
+ 13.62 , 1.639000000000000E-02 ,
+ 13.63 , -1.544000000000000E-02 ,
+ 13.64 , -5.384000000000000E-02 ,
+ 13.65 , -7.287000000000000E-02 ,
+ 13.66 , -8.747000000000001E-02 ,
+ 13.67 , -0.10976 ,
+ 13.68 , -0.11529 ,
+ 13.69 , -8.388000000000000E-02 ,
+ 13.7 , -3.945000000000000E-02 ,
+ 13.71 , -2.420000000000000E-02 ,
+ 13.72 , -3.630000000000000E-02 ,
+ 13.73 , -3.928000000000000E-02 ,
+ 13.74 , -2.207000000000000E-02 ,
+ 13.75 , -5.590000000000000E-03 ,
+ 13.76 , -9.450000000000000E-03 ,
+ 13.77 , -2.752000000000000E-02 ,
+ 13.78 , -4.478000000000000E-02 ,
+ 13.79 , -6.457000000000000E-02 ,
+ 13.8 , -8.530000000000000E-02 ,
+ 13.81 , -8.704000000000001E-02 ,
+ 13.82 , -5.918000000000000E-02 ,
+ 13.83 , -3.830000000000000E-03 ,
+ 13.84 , 7.192000000000000E-02 ,
+ 13.85 , 0.14312 ,
+ 13.86 , 0.17488 ,
+ 13.87 , 0.16315 ,
+ 13.88 , 0.14274 ,
+ 13.89 , 0.14017 ,
+ 13.9 , 0.14556 ,
+ 13.91 , 0.13989 ,
+ 13.92 , 0.12104 ,
+ 13.93 , 9.578000000000000E-02 ,
+ 13.94 , 7.056999999999999E-02 ,
+ 13.95 , 5.257000000000000E-02 ,
+ 13.96 , 4.283000000000000E-02 ,
+ 13.97 , 3.754000000000000E-02 ,
+ 13.98 , 3.580000000000000E-02 ,
+ 13.99 , 3.422000000000000E-02 ,
+ 14.0 , 2.593000000000000E-02 ,
+ 14.01 , 4.220000000000000E-03 ,
+ 14.02 , -1.590000000000000E-02 ,
+ 14.03 , -2.929000000000000E-02 ,
+ 14.04 , 4.251000000000000E-02 ,
+ 14.05 , 5.369000000000000E-02 ,
+ 14.06 , 6.154000000000000E-02 ,
+ 14.07 , 6.560000000000001E-02 ,
+ 14.08 , 6.591000000000000E-02 ,
+ 14.09 , 6.272000000000000E-02 ,
+ 14.1 , 5.704000000000000E-02 ,
+ 14.11 , 5.054000000000000E-02 ,
+ 14.12 , 4.304000000000000E-02 ,
+ 14.13 , 3.569000000000000E-02 ,
+ 14.14 , 2.953000000000000E-02 ,
+ 14.15 , 2.591000000000000E-02 ,
+ 14.16 , 2.479000000000000E-02 ,
+ 14.17 , 2.511000000000000E-02 ,
+ 14.18 , 2.581000000000000E-02 ,
+ 14.19 , 2.493000000000000E-02 ,
+ 14.2 , 2.314000000000000E-02 ,
+ 14.21 , 2.027000000000000E-02 ,
+ 14.22 , 1.935000000000000E-02 ,
+ 14.23 , 2.023000000000000E-02 ,
+ 14.24 , 2.506000000000000E-02 ,
+ 14.25 , 3.099000000000000E-02 ,
+ 14.26 , 3.760000000000000E-02 ,
+ 14.27 , 4.262000000000000E-02 ,
+ 14.28 , 4.532000000000000E-02 ,
+ 14.29 , 4.802000000000000E-02 ,
+ 14.3 , 5.005000000000000E-02 ,
+ 14.31 , 5.302000000000000E-02 ,
+ 14.32 , 5.416000000000000E-02 ,
+ 14.33 , 5.517000000000000E-02 ,
+ 14.34 , 5.543000000000000E-02 ,
+ 14.35 , 5.403000000000000E-02 ,
+ 14.36 , 5.095000000000000E-02 ,
+ 14.37 , 4.660000000000000E-02 ,
+ 14.38 , 4.407000000000000E-02 ,
+ 14.39 , 4.359000000000000E-02 ,
+ 14.4 , 4.649000000000000E-02 ,
+ 14.41 , 4.927000000000000E-02 ,
+ 14.42 , 5.116000000000000E-02 ,
+ 14.43 , 5.246000000000000E-02 ,
+ 14.44 , 5.290000000000000E-02 ,
+ 14.45 , 5.342000000000000E-02 ,
+ 14.46 , 5.301000000000000E-02 ,
+ 14.47 , 5.389000000000000E-02 ,
+ 14.48 , 5.518000000000000E-02 ,
+ 14.49 , 5.594000000000000E-02 ,
+ 14.5 , 5.543000000000000E-02 ,
+ 14.51 , 5.542000000000000E-02 ,
+ 14.52 , 5.677000000000000E-02 ,
+ 14.53 , 5.746000000000000E-02 ,
+ 14.54 , 5.802000000000000E-02 ,
+ 14.55 , 5.847000000000000E-02 ,
+ 14.56 , 5.842000000000000E-02 ,
+ 14.57 , 5.750000000000000E-02 ,
+ 14.58 , 5.606000000000000E-02 ,
+ 14.59 , 5.592000000000000E-02 ,
+ 14.6 , 5.517000000000000E-02 ,
+ 14.61 , 5.439000000000000E-02 ,
+ 14.62 , 5.392000000000000E-02 ,
+ 14.63 , 5.395000000000000E-02 ,
+ 14.64 , 5.260000000000000E-02 ,
+ 14.65 , 5.031000000000000E-02 ,
+ 14.66 , 4.883000000000000E-02 ,
+ 14.67 , 4.944000000000000E-02 ,
+ 14.68 , 5.215000000000000E-02 ,
+ 14.69 , 5.627000000000000E-02 ,
+ 14.7 , 6.244000000000000E-02 ,
+ 14.71 , 6.783000000000000E-02 ,
+ 14.72 , 7.159000000000000E-02 ,
+ 14.73 , 7.149999999999999E-02 ,
+ 14.74 , 6.673000000000000E-02 ,
+ 14.75 , 5.755000000000000E-02 ,
+ 14.76 , 4.539000000000000E-02 ,
+ 14.77 , 3.504000000000000E-02 ,
+ 14.78 , 2.721000000000000E-02 ,
+ 14.79 , 2.308000000000000E-02 ,
+ 14.8 , 2.125000000000000E-02 ,
+ 14.81 , 2.022000000000000E-02 ,
+ 14.82 , 1.831000000000000E-02 ,
+ 14.83 , 1.547000000000000E-02 ,
+ 14.84 , 1.321000000000000E-02 ,
+ 14.85 , 1.112000000000000E-02 ,
+ 14.86 , 1.025000000000000E-02 ,
+ 14.87 , 9.549999999999999E-03 ,
+ 14.88 , 1.040000000000000E-02 ,
+ 14.89 , 1.059000000000000E-02 ,
+ 14.9 , 1.108000000000000E-02 ,
+ 14.91 , 1.195000000000000E-02 ,
+ 14.92 , 1.452000000000000E-02 ,
+ 14.93 , 1.809000000000000E-02 ,
+ 14.94 , 2.029000000000000E-02 ,
+ 14.95 , 2.323000000000000E-02 ,
+ 14.96 , 2.515000000000000E-02 ,
+ 14.97 , 2.836000000000000E-02 ,
+ 14.98 , 3.278000000000000E-02 ,
+ 14.99 , 3.934000000000000E-02 ,
+ 15.00 , 0.0 ,
+ ),
+ INTERPOL='LIN',
+ PROL_DROITE='CONSTANT',
+ PROL_GAUCHE='EXCLU',);
+
+
+
+
--- /dev/null
+# MODIF DATE 12/05/2005 AUTEUR DURAND C.DURAND
+# TITRE TP ANALYSE SISMIQUE
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2004 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# ======================================================================
+# RESPONSABLE BOYERE E.BOYERE
+#-----------------------------------------------------------------------
+#
+# ANALYSE RIS12 TR4 REGLEMENTAIRE
+# SCENARIO 1
+# GL1(X,Y) + GL2(Z)
+#
+#-----------------------------------------------------------------------
+
+DEBUT(CODE=_F(NOM ='FORMA12C',NIV_PUB_WEB='INTERNET'))
+
+MAILLAGE=LIRE_MAILLAGE(INFO=2)
+
+MODELE=AFFE_MODELE(
+ MAILLAGE=MAILLAGE,
+ AFFE=(
+ _F(GROUP_MA='GPOU_D_T',
+ PHENOMENE='MECANIQUE',
+ MODELISATION='POU_D_T',),
+ _F(GROUP_MA='GPOU_C_T',
+ PHENOMENE='MECANIQUE',
+ MODELISATION='POU_C_T',),
+ _F(GROUP_MA='GDIS_TR',
+ PHENOMENE='MECANIQUE',
+ MODELISATION='DIS_TR',),
+ ),
+ )
+
+IMPR_RESU(FORMAT='CASTEM',UNITE=37,
+ MODELE=MODELE,
+ RESU=_F(
+ MAILLAGE=MAILLAGE))
+
+
+
+#-----------------------------------------------------------------------
+# CARACTERISTIQUES DES ELEMENTS
+#-----------------------------------------------------------------------
+
+
+CARA=AFFE_CARA_ELEM(
+ MODELE=MODELE,
+ POUTRE=(
+ _F(GROUP_MA='GMEL0301',
+ SECTION='CERCLE',
+ CARA=('R','EP'),
+ VALE=(0.08415,0.00711),),
+ _F(GROUP_MA='GMEL0501',
+ SECTION='CERCLE',
+ CARA=('R','EP'),
+ VALE=(0.08415,0.0034),),
+ _F(GROUP_MA='GMEL0601',
+ SECTION='CERCLE',
+ CARA=('R','EP'),
+ VALE=(0.08415,0.0034),),
+ _F(GROUP_MA='GMEL0701',
+ SECTION='CERCLE',
+ CARA=('R','EP'),
+ VALE=(0.08415,0.0034),),
+ _F(GROUP_MA='GMEL1001',
+ SECTION='CERCLE',
+ CARA=('R','EP'),
+ VALE=(0.08415,0.0034),),
+ _F(GROUP_MA='GMEL1101',
+ SECTION='CERCLE',
+ CARA=('R','EP'),
+ VALE=(0.08415,0.0034),),
+ _F(GROUP_MA='GMEL1201',
+ SECTION='CERCLE',
+ CARA=('R','EP'),
+ VALE=(0.08415,0.0034),),
+ _F(GROUP_MA='GMEL1501',
+ SECTION='CERCLE',
+ CARA=('R','EP'),
+ VALE=(0.08415,0.0034),),
+ _F(GROUP_MA='GMEL1701',
+ SECTION='CERCLE',
+ CARA=('R','EP'),
+ VALE=(0.08415,0.0034),),
+ _F(GROUP_MA='GMEL1801',
+ SECTION='CERCLE',
+ CARA=('R','EP'),
+ VALE=(0.08415,0.0034),),
+ _F(GROUP_MA='GMEL1901',
+ SECTION='CERCLE',
+ CARA=('R','EP'),
+ VALE=(0.08415,0.0034),),
+ _F(GROUP_MA='GMEL2001',
+ SECTION='CERCLE',
+ CARA=('R','EP'),
+ VALE=(0.08415,0.0034),),
+ _F(GROUP_MA='GMEL2101',
+ SECTION='CERCLE',
+ CARA=('R','EP'),
+ VALE=(0.08415,0.0034),),
+ _F(GROUP_MA='GMEL2201',
+ SECTION='CERCLE',
+ CARA=('R','EP'),
+ VALE=(0.08415,0.0034),),
+ _F(GROUP_MA='GMEL2401',
+ SECTION='CERCLE',
+ CARA=('R','EP'),
+ VALE=(0.08415,0.00711),),),
+ DISCRET=(_F(MAILLE='M0801I02',
+ CARA='M_TR_D_N',
+ VALE=(36.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0),),
+ _F(MAILLE='M1301I02',
+ CARA='M_TR_D_N',
+ VALE=(36.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0),),),
+ DEFI_ARC=(_F(GROUP_MA='GMEL0601',
+ CENTRE=(466.39260860000002,107.5500031,0.27747499939999998),
+ RAYON=0.22859999540000001,
+ COEF_FLEX_XY=14.43145561,
+ COEF_FLEX_XZ=14.43145561,),
+ _F(GROUP_MA='GMEL1101',
+ CENTRE=(466.16400149999998,107.3214035,3.7724525930000001),
+ RAYON=0.22859999540000001,
+ COEF_FLEX_XY=14.43145561,
+ COEF_FLEX_XZ=14.43145561,),
+ _F(GROUP_MA='GMEL1701',
+ CENTRE=(466.16400149999998,106.4785995,4.2335472110000003),
+ RAYON=0.22859999540000001,
+ COEF_FLEX_XY=14.43145561,
+ COEF_FLEX_XZ=14.43145561,),
+ _F(GROUP_MA='GMEL1901',
+ CENTRE=(466.16400149999998,106.4785995,8.7655010220000005),
+ RAYON=0.22859999540000001,
+ COEF_FLEX_XY=14.43145561,
+ COEF_FLEX_XZ=14.43145561,),
+ _F(GROUP_MA='GMEL2101',
+ CENTRE=(466.16400149999998,107.4713974,9.2274990080000006),
+ RAYON=0.22859999540000001,
+ COEF_FLEX_XY=14.43145561,
+ COEF_FLEX_XZ=14.43145561,),),)
+
+#-----------------------------------------------------------------------
+# DEFINITION DES MATERIAUX
+#-----------------------------------------------------------------------
+
+MATP01=DEFI_MATERIAU(ELAS=_F(E=1.97E11,
+ NU=0.3,
+ RHO=1.3108749019999999E4,
+ ALPHA=1.639999937E-05,),)
+MATP03=DEFI_MATERIAU(ELAS=_F(E=1.97E11,
+ NU=0.3,
+ RHO=1.956015625E4,
+ ALPHA=1.639999937E-05,),)
+
+#-----------------------------------------------------------------------
+# DEFINITION DES SUPPORTS
+#-----------------------------------------------------------------------
+
+SUPPORT=AFFE_CHAR_MECA(
+ MODELE=MODELE,
+ DDL_IMPO=(
+# PF1 ET PF2
+ _F( NOEUD = ('N02__I00', 'N01__I00',),
+ DX = 0., DY = 0., DZ = 0., DRX = 0., DRY = 0., DRZ = 0.),
+# GL1
+ _F( NOEUD = 'N0701I00',
+ DX = 0., DY = 0.),
+# GL2
+ _F( NOEUD = 'N1201I00',
+ DZ = 0.),
+ ),
+ )
+
+#-----------------------------------------------------------------------
+# DEFINITION DES CHAMPS DE MATERIAUX
+#-----------------------------------------------------------------------
+
+CHMATP=AFFE_MATERIAU(MAILLAGE=MAILLAGE,
+ AFFE=(_F(GROUP_MA='GMAT01',
+ MATER=MATP01,
+ TEMP_REF=20.0,),
+ _F(GROUP_MA='GMAT03',
+ MATER=MATP03,
+ TEMP_REF=20.0,),),)
+
+#-----------------------------------------------------------------------
+# ASSEMBLAGE MATRICE MASSE ET RIGIDITE
+#-----------------------------------------------------------------------
+
+MACRO_MATR_ASSE(MODELE=MODELE,
+ CHAM_MATER=CHMATP,
+ CARA_ELEM=CARA,
+ CHARGE=SUPPORT,
+ NUME_DDL=CO('NUMDDL'),
+ MATR_ASSE=(_F(MATRICE=CO("MATRRIGI"),
+ OPTION='RIGI_MECA',),
+ _F(MATRICE=CO("MATRMASS"),
+ OPTION='MASS_MECA',),),);
+
+
+#-----------------------------------------------------------------------
+# ASSEMBLAGE DU SECOND MEMBRE
+#-----------------------------------------------------------------------
+
+INCLUDE(UNITE=22)
+
+CHSEIX=CALC_CHAR_SEISME( MATR_MASS=MATRMASS,
+ DIRECTION=(1., 0., 0.,), MONO_APPUI='OUI'
+ )
+CHSEIY=CALC_CHAR_SEISME( MATR_MASS=MATRMASS,
+ DIRECTION=(0., 1., 0.,), MONO_APPUI='OUI'
+ )
+CHSEIZ=CALC_CHAR_SEISME( MATR_MASS=MATRMASS,
+ DIRECTION=(0., 0., 1.,), MONO_APPUI='OUI'
+ )
+
+#-----------------------------------------------------------------------
+# CALCUL DES MODES
+#-----------------------------------------------------------------------
+MASSINER=POST_ELEM(
+ MODELE=MODELE,
+ CHARGE=SUPPORT,
+ CARA_ELEM=CARA,
+ CHAM_MATER=CHMATP,
+ MASS_INER=_F( TOUT = 'OUI',)
+ )
+MODES=MACRO_MODE_MECA(
+ MATR_A=MATRRIGI,
+ MATR_B=MATRMASS,
+ CALC_FREQ=_F(
+ FREQ_MIN = 0.0,
+ FREQ_MAX = 33.0,
+ NB_BLOC_FREQ = 1),
+ VERI_MODE=_F( STOP_ERREUR = 'NON'),
+ NORM_MODE=_F(
+ NORME = 'MASS_GENE',
+ MASS_INER =MASSINER),
+ IMPRESSION=_F( TOUT_PARA = 'OUI')
+ )
+
+# TEST_RESU UNIQUEMENT POUR FAIRE CAS TEST
+TEST_RESU(RESU=(_F(RESULTAT=MODES,
+ NUME_ORDRE=1,
+ PARA='FREQ',
+ VALE= 4.5135794612152,
+ PRECISION=1e-05,
+ REFERENCE='NON_REGRESSION',
+ VERSION='7.3.19',)))
+
+MODES=CALC_ELEM(
+ reuse=MODES,
+ MODELE=MODELE,
+ CHAM_MATER=CHMATP,
+ CARA_ELEM=CARA,
+ OPTION=(
+ 'EFGE_ELNO_DEPL',
+ ),
+ RESULTAT=MODES,)
+
+###########################################################
+#---- REPONSE TRANSITOIRE PAR SUPERPOSITION MODALE ------
+#---- MONO APPUI GRANDEURS RELATIVES ------
+###########################################################
+
+# DEFINITION DES INSTANTS DE RECUPERATION
+
+L_RECU=DEFI_LIST_REEL( DEBUT=0.,
+ INTERVALLE=_F(
+ JUSQU_A = 20.47,
+ PAS = 0.01)
+ )
+
+#----------------------------------------------------
+#------------- PROJECTION SUR LA BASE MODALE --------
+#----------------------------------------------------
+MACRO_PROJ_BASE(
+ BASE=MODES,
+ MATR_ASSE_GENE=(
+ _F(
+ MATRICE=CO("MASSEGEN"),
+ MATR_ASSE=MATRMASS,
+ ),
+ _F(
+ MATRICE=CO("RIGIDGEN"),
+ MATR_ASSE=MATRRIGI,
+ ),
+ ),
+ VECT_ASSE_GENE=(
+ _F(
+ VECTEUR=CO("EFGENX"),
+ VECT_ASSE=CHSEIX,
+ ),
+ _F(
+ VECTEUR=CO("EFGENY"),
+ VECT_ASSE=CHSEIY,
+ ),
+ _F(
+ VECTEUR=CO("EFGENZ"),
+ VECT_ASSE=CHSEIZ,
+ ),
+ ),
+ )
+
+#------------------------------------------------------------------
+#-------------- RESOLUTION DU PB GENERALISE -----------------------
+#-------------- SANS CORRECTION STATIQUE --------------------------
+#------------------------------------------------------------------
+GSCR=DYNA_TRAN_MODAL(
+ MASS_GENE=MASSEGEN,
+ RIGI_GENE=RIGIDGEN,
+ AMOR_REDUIT=0.02,
+ EXCIT=(
+ _F(
+ VECT_GENE=EFGENX,
+ FONC_MULT=ACCELH1,
+ ),
+ _F(
+ VECT_GENE=EFGENY,
+ FONC_MULT=ACCELH1,
+ ),
+ _F(
+ VECT_GENE=EFGENZ,
+ FONC_MULT=ACCELV1,
+ ),
+ ),
+ INCREMENT=_F(
+ INST_INIT = 0.,
+ INST_FIN =20.47,
+ PAS = 0.001
+ ),
+ )
+
+#--------------------------------------------------------------
+#---- RESTITUTION GRANDEUR PHYSIQUE DANS LE REPERE RELATIF
+#--- SANS CORRECTION STATIQUE
+#--------------------------------------------------------------
+# RESTITUTION GLOBALE DU CHAMP DE DEPLACEMENT RELATIF A CHAQUE INSTANT
+# DE LA LISTE L_RECU
+RGSCR=REST_BASE_PHYS(
+ RESU_GENE=GSCR,
+ INTERPOL='LIN',
+ LIST_INST=L_RECU,
+ #TOUT_INST='OUI',
+ TOUT_CHAM='OUI',
+ )
+DPSCR=CREA_CHAMP(
+ TYPE_CHAM='NOEU_DEPL_R',
+ OPERATION='EXTR',
+ RESULTAT=RGSCR,
+ NOM_CHAM='DEPL',
+ TYPE_MAXI='MAXI',
+ TYPE_RESU='VALE',
+ TOUT_ORDRE='OUI'
+ )
+TDPSCR=POST_RELEVE_T(
+ ACTION=
+ _F(
+ INTITULE = 'DEPL_MAX_R',
+ GROUP_NO='GNSTR01',
+ CHAM_GD=DPSCR,
+ TOUT_CMP='OUI',
+ OPERATION ='EXTRACTION',
+ ),
+ )
+
+
+# RESTITUTION GLOBALE DU CHAMP EFGE_ELNO_DEPL A CHAQUE INSTANT
+# DE LA LISTE L_RECU
+RGSCR=CALC_ELEM(
+ reuse=RGSCR,
+ MODELE=MODELE,
+ CHAM_MATER=CHMATP,
+ CARA_ELEM=CARA,
+ OPTION=(
+ 'EFGE_ELNO_DEPL',
+ ),
+ RESULTAT=RGSCR,)
+EFSCR=CREA_CHAMP(
+ TYPE_CHAM='ELNO_SIEF_R',
+ OPERATION='EXTR',
+ RESULTAT=RGSCR,
+ NOM_CHAM='EFGE_ELNO_DEPL',
+ TYPE_MAXI='MAXI',
+ TYPE_RESU='VALE',
+ TOUT_ORDRE='OUI'
+ )
+TEFSCR=POST_RELEVE_T(
+ ACTION=
+ _F(
+ INTITULE = 'EFGE_MAX_R',
+ GROUP_NO='GNSTR01',
+ CHAM_GD=EFSCR,
+ TOUT_CMP='OUI',
+ OPERATION ='EXTRACTION',
+ ),
+ )
+IMPR_TABLE(
+ TABLE=TEFSCR,
+ FORMAT='TABLEAU',
+ )
+
+###########################################################
+#---- REPONSE TRANSITOIRE PAR SUPERPOSITION MODALE ------
+#---- MULTI APPUIS GRANDEURS ABSOLUES ------
+###########################################################
+
+# DEFINITION EXCITATION MULTIPLE
+
+MSTA=MODE_STATIQUE(
+ MATR_RIGI=MATRRIGI,
+ MATR_MASS=MATRMASS,
+ MODE_STAT=_F(TOUT='OUI',AVEC_CMP=('DX','DY','DZ'),),)
+
+
+CHSEIXM=CALC_CHAR_SEISME(
+ MATR_MASS=MATRMASS,
+ DIRECTION=(1., 0., 0.,),
+ MODE_STAT=MSTA,
+ NOEUD=('N02__I00','N01__I00','N0701I00',),
+ )
+
+CHSEIYM=CALC_CHAR_SEISME(
+ MATR_MASS=MATRMASS,
+ DIRECTION=(0., 1., 0.,),
+ MODE_STAT=MSTA,
+ NOEUD=('N02__I00','N01__I00','N0701I00',),
+ )
+
+CHSEIZM=CALC_CHAR_SEISME(
+ MATR_MASS=MATRMASS,
+ DIRECTION=(0., 0., 1.,),
+ MODE_STAT=MSTA,
+ NOEUD=('N02__I00','N01__I00','N1201I00',),
+ )
+
+MACRO_PROJ_BASE(
+ BASE=MODES,
+ MATR_ASSE_GENE=(
+ _F(
+ MATRICE=CO("MASGEN2"),
+ MATR_ASSE=MATRMASS,
+ ),
+ _F(
+ MATRICE=CO("RIGGEN2"),
+ MATR_ASSE=MATRRIGI,
+ ),
+ ),
+ VECT_ASSE_GENE=(
+ _F(
+ VECTEUR=CO("EFX2"),
+ VECT_ASSE=CHSEIXM,
+ ),
+ _F(
+ VECTEUR=CO("EFY2"),
+ VECT_ASSE=CHSEIYM,
+ ),
+ _F(
+ VECTEUR=CO("EFZ2"),
+ VECT_ASSE=CHSEIZM,
+ ),
+ ),
+ )
+
+
+VITESH1=CALC_FONCTION(
+ INTEGRE=_F(FONCTION=ACCELH1,METHODE='TRAPEZE',),
+ PROL_DROITE='CONSTANT' )
+DEPLAH1=CALC_FONCTION(
+ INTEGRE=_F(FONCTION=VITESH1,METHODE='TRAPEZE',),
+ PROL_DROITE='CONSTANT' )
+VITESV1=CALC_FONCTION(
+ INTEGRE=_F(FONCTION=ACCELV1,METHODE='TRAPEZE',),
+ PROL_DROITE='CONSTANT' )
+DEPLAV1=CALC_FONCTION(
+ INTEGRE=_F(FONCTION=VITESV1,METHODE='TRAPEZE',),
+ PROL_DROITE='CONSTANT' )
+
+GSCA=DYNA_TRAN_MODAL(
+ MASS_GENE=MASGEN2,
+ RIGI_GENE=RIGGEN2,
+ AMOR_REDUIT=0.02,
+ MODE_STAT=MSTA,
+ EXCIT=(
+ _F(
+ VECT_GENE=EFX2,
+ ACCE=ACCELH1,
+ VITE=VITESH1,
+ DEPL=DEPLAH1,
+ MULT_APPUI='OUI',
+ DIRECTION=(1.,0.,0.,),
+ NOEUD=('N02__I00','N01__I00','N0701I00',),
+ ),
+ _F(
+ VECT_GENE=EFY2,
+ ACCE=ACCELH1,
+ VITE=VITESH1,
+ DEPL=DEPLAH1,
+ MULT_APPUI='OUI',
+ DIRECTION=(0.,1.,0.,),
+ NOEUD=('N02__I00','N01__I00','N0701I00',),
+ ),
+ _F(
+ VECT_GENE=EFZ2,
+ ACCE=ACCELV1,
+ VITE=VITESV1,
+ DEPL=DEPLAV1,
+ MULT_APPUI='OUI',
+ DIRECTION=(0.,0.,1.,),
+ NOEUD=('N02__I00','N01__I00','N1201I00',),
+ ),
+ ),
+ INCREMENT=_F(
+ INST_INIT = 0.,
+ INST_FIN =20.47,
+ PAS = 0.001
+ ),
+ )
+
+
+# RESTITUTION GRANDEURS ABSOLUES
+#-------------------------------
+
+RGSCA=REST_BASE_PHYS(
+ RESU_GENE=GSCA,
+ INTERPOL='LIN',
+ LIST_INST=L_RECU,
+ TOUT_CHAM='OUI',
+ MULT_APPUI='OUI',
+ )
+
+# DEPLACEMENTS
+
+DPSCA=CREA_CHAMP(
+ TYPE_CHAM='NOEU_DEPL_R',
+ OPERATION='EXTR',
+ RESULTAT=RGSCA,
+ NOM_CHAM='DEPL',
+ TYPE_MAXI='MAXI',
+ TYPE_RESU='VALE',
+ TOUT_ORDRE='OUI'
+ )
+
+TDPSCA=POST_RELEVE_T(
+ ACTION=
+ _F(
+ INTITULE = 'DEPL_MAX_A',
+ GROUP_NO='GNSTR01',
+ CHAM_GD=DPSCA,
+ TOUT_CMP='OUI',
+ OPERATION ='EXTRACTION',
+ ),
+ )
+
+IMPR_TABLE(
+ TABLE=TDPSCA,
+ FORMAT='TABLEAU',
+ )
+
+# EFFORTS
+
+RGSCA=CALC_ELEM(
+ reuse=RGSCA,
+ MODELE=MODELE,
+ CHAM_MATER=CHMATP,
+ CARA_ELEM=CARA,
+ OPTION=(
+ 'EFGE_ELNO_DEPL',
+ ),
+ RESULTAT=RGSCA,)
+
+EFSCA=CREA_CHAMP(
+ TYPE_CHAM='ELNO_SIEF_R',
+ OPERATION='EXTR',
+ RESULTAT=RGSCA,
+ NOM_CHAM='EFGE_ELNO_DEPL',
+ TYPE_MAXI='MAXI',
+ TYPE_RESU='VALE',
+ TOUT_ORDRE='OUI'
+ )
+
+TEFSCA=POST_RELEVE_T(
+ ACTION=
+ _F(
+ INTITULE = 'EFGE_MAX_A',
+ GROUP_NO='GNSTR01',
+ CHAM_GD=EFSCA,
+ TOUT_CMP='OUI',
+ OPERATION ='EXTRACTION',
+ ),
+ )
+IMPR_TABLE(
+ TABLE=TEFSCA,
+ FORMAT='TABLEAU',
+ )
+
+
+# RESTITUTION GRANDEURS RELATIVES
+#-------------------------------
+
+# DEPLACEMENTS
+
+RGSCR2=REST_BASE_PHYS(
+ RESU_GENE=GSCA,
+ INTERPOL='LIN',
+ LIST_INST=L_RECU,
+ TOUT_CHAM='OUI',
+ )
+
+DPSCR2=CREA_CHAMP(
+ TYPE_CHAM='NOEU_DEPL_R',
+ OPERATION='EXTR',
+ RESULTAT=RGSCR2,
+ NOM_CHAM='DEPL',
+ TYPE_MAXI='MAXI',
+ TYPE_RESU='VALE',
+ TOUT_ORDRE='OUI'
+ )
+
+TDPSCR2=POST_RELEVE_T(
+ ACTION=
+ _F(
+ INTITULE = 'DEPL_MAX_R2',
+ GROUP_NO='GNSTR01',
+ CHAM_GD=DPSCR2,
+ TOUT_CMP='OUI',
+ OPERATION ='EXTRACTION',
+ ),
+ )
+
+IMPR_TABLE(
+ TABLE=TDPSCR2,
+ FORMAT='TABLEAU',
+ )
+
+# EFFORTS
+
+RGSCR2=CALC_ELEM(
+ reuse=RGSCR2,
+ MODELE=MODELE,
+ CHAM_MATER=CHMATP,
+ CARA_ELEM=CARA,
+ OPTION=(
+ 'EFGE_ELNO_DEPL',
+ ),
+ RESULTAT=RGSCR2,)
+
+EFSCR2=CREA_CHAMP(
+ TYPE_CHAM='ELNO_SIEF_R',
+ OPERATION='EXTR',
+ RESULTAT=RGSCR2,
+ NOM_CHAM='EFGE_ELNO_DEPL',
+ TYPE_MAXI='MAXI',
+ TYPE_RESU='VALE',
+ TOUT_ORDRE='OUI'
+ )
+
+TEFSCR2=POST_RELEVE_T(
+ ACTION=
+ _F(
+ INTITULE = 'EFGE_MAX_R2',
+ GROUP_NO='GNSTR01',
+ CHAM_GD=EFSCR2,
+ TOUT_CMP='OUI',
+ OPERATION ='EXTRACTION',
+ ),
+ )
+
+IMPR_TABLE(
+ TABLE=TEFSCR2,
+ FORMAT='TABLEAU',
+ )
+
+###########################################################
+#------REPONSE SPECTRALE PAR SUPERPOSITION MODALE---------
+###########################################################
+
+# CALCUL DU SPECTRE DE REPONSE OSCILLATEUR EN PSEUDO ACCELERATION ABSOLUE
+# NAPPE SRO FONCTION DE AMORTISSEMENT
+#------------------------------------------------------------------------
+SROXY=CALC_FONCTION(
+ SPEC_OSCI=_F(
+ FONCTION=ACCELH1,
+ AMOR_REDUIT=(0.02,0.05,0.10),
+ NORME=9.81,
+ ),
+ )
+SROZ=CALC_FONCTION(
+ SPEC_OSCI=_F(
+ FONCTION=ACCELV1,
+ AMOR_REDUIT=(0.02,0.05,0.10),
+ NORME=9.81,
+ ),
+ )
+
+
+#-----------------------------------------------
+# REPONSE SPECTRALE SANS CORRECTION STATIQUE
+#-----------------------------------------------
+SPEC=COMB_SISM_MODAL(
+ MODE_MECA=MODES,
+ AMOR_REDUIT=0.02,
+ MASS_INER=MASSINER,
+ EXCIT=_F(
+ MONO_APPUI='OUI',
+ TRI_SPEC='OUI',
+ SPEC_OSCI=(SROXY,SROXY,SROZ),
+ ECHELLE=(9.81,9.81,9.81),),
+ COMB_MODE=_F(TYPE='CQC',),
+ COMB_DIRECTION=_F( TYPE = 'QUAD',),
+ OPTION=(
+ 'DEPL',
+ 'EFGE_ELNO_DEPL',
+ ),
+ )
+
+EFSPEC=POST_RELEVE_T(
+ ACTION=
+ _F(
+ INTITULE = 'EFGE_SPEC',
+ GROUP_NO='GNSTR01',
+ RESULTAT=SPEC,
+ NOM_CHAM='EFGE_ELNO_DEPL',
+ NUME_ORDRE=4,
+ TOUT_CMP='OUI',
+ OPERATION ='EXTRACTION',
+ ),
+ )
+
+IMPR_TABLE(
+ TABLE=EFSPEC,
+ FORMAT='TABLEAU',
+ )
+
+DPSPEC=POST_RELEVE_T(
+ ACTION=
+ _F(
+ INTITULE = 'DEPL_SPEC',
+ GROUP_NO='GNSTR01',
+ RESULTAT=SPEC,
+ NOM_CHAM='DEPL',
+ NUME_ORDRE=4,
+ TOUT_CMP='OUI',
+ OPERATION ='EXTRACTION',
+ ),
+ )
+
+IMPR_TABLE(
+ TABLE=DPSPEC,
+ FORMAT='TABLEAU',
+ )
+
+
+
+FIN()
+
+
+
+
+
+
--- /dev/null
+DEBUT()
+sensible=[2.1E11, 0.3, 1.E-6, 1.E-6, ]
+
+# parse: -affectation
+n=len(sensible)
+PS=[None]*n
+
+#for i in range(n):
+# PS[i]=DEFI_PARA_SENSI(VALE=sensible[i])
+
+FIN()
--- /dev/null
+DEBUT()
+MA=LIRE_MAILLAGE()
+INCLUDE_MATERIAU( NOM_AFNOR='18MND5', TYPE_MODELE='REF',
+ VARIANTE='A', TYPE_VALE='NOMI',
+ NOM_MATER='MAT3', INFO=1 )
+
+FIN()
--- /dev/null
+
+DEBUT()
+TEMP_MOY=50.
+coef0 = 1.E-3
+
+A0=DEFI_FONCTION( NOM_PARA='TEMP',
+ PROL_DROITE='EXCLU',
+ PROL_GAUCHE='EXCLU',
+ VALE=(
+ 20. ,14.7 *coef0,
+ 50. ,15.2 *coef0,
+ 100. ,15.8 *coef0,
+ 150. ,16.7 *coef0,
+ 200. ,17.2 *coef0,
+ 250. ,18. *coef0,
+ 300. ,18.6 *coef0,
+ 350. ,19.3 *coef0,
+ 400. ,20. *coef0,
+ 450. ,20.5 *coef0,
+ 500. ,21.1 *coef0,
+ 550. ,21.7 *coef0,
+ 600. ,22.2 *coef0,
+ 650. ,22.7 *coef0,
+ 700. ,23.2 *coef0,
+ 750. ,23.7 *coef0,
+ 800. ,24.1 *coef0,
+ 950. ,26.67 *coef0,
+ 1150. ,29.24 *coef0,
+ 1370. ,32.06 *coef0,
+ ))
+
+DEFI_MATERIAU( ELAS=_F( RHO = 1.E08,
+ NU = 0.3,
+ E = A0(TEMP_MOY)))
+
+FIN()
--- /dev/null
+erreur sur defi_materiau
--- /dev/null
+DEBUT()
+a=1 # comment
+c=32.3 # comment
+
+aa='string # bizarre'
+a="string # bizarre"
+
+b="string ( bizarre"
+
+d="""string multi
+line
+"""
+e="""string multi # ssssssssssss
+line
+"""
+P='''string # bizarre' #profondeur ' # autre
+bbb'''
+
+#comment
+#comment
+#comment
+
+#commenta
+##XXXX=CHARGE(RAYON=0.1E-2,VALE=(0.12E-1,0.54E-5,0.1),MCF=_F(VALE=0.3E-5),
+## V="toto",
+ ## )
+#commentb
+
+##CH=CHARGE(RAYON=0.1E-2,VALE=(0.12E-1,0.54E-5,0.1),MCF=_F(VALE=0.3E-5),
+## MCF2=(_F(VALE=0.3E-4,GROUP_MA='GMA0601'),_F(VALE=0.3E-2)),
+## VALE_C=[0.12E-3,0.54E-1,0.1],
+ ## )
+MA=LIRE_MAILLAGE()
+a=(10,
+#commentc
+12,13)
+
+#commentd
+P=1 #profondeur
+#commente
+aaa=(10,
+11, #commentc
+12,13)
+xx=EVAL("13.26")
+
+fmt_raison='-'*80+'''
+
+ Exception erreur_Fatale interceptee
+ Raison : %s
+
+'''+'-'*80+'xxxxxxxxxxxxxxxx\n'
+
+# commen """
+# commen '''
+# commen '
+# commen "
+BETA=3.41557E-08
+
+a=8.3 ; #position
+
+FIN()
--- /dev/null
+DEBUT()
+P1 = 9.8;
+
+P2 = 8.8;
+
+P3 = 7;
+
+P5 = P3*P1;
+
+P6 = P1-3;
+
+P4 = [2,3,4];
+
+a = 1.
+b=3
+c= 3 * 5
+cc="b+3"
+d= 4 + \
+ 5 \
+ -4
+e=LIRE_MAILLAGE()
+##MA=LIRE_MAILLAGE()
+x=(1,2)
+y=[3,
+#comme
+4]
+z="a"
+zz='v'
+u='''aaaa
+bbbb'''
+#ne marche pas avec le parseur actuel
+#if 1:
+# a=45
+#else:
+# a=5.6
+d={"a":0}
+e={"a":0,
+#comme
+"d":4}
+#ne marche pas avec le parseur actuel
+#a==1
+s="-"*80
+fmt_raison='-'*80+'''
+
+ Exception erreur_Fatale interceptee
+ Raison : %s
+
+'''+'-'*80+'xxxxxxxxxxxxxxxx\n'
+
+# commen """
+# commen '''
+# commen '
+# commen "
+BETA=3.41557E-08
+
+C_0=105.7
+
+C_EQ_I05=69.1
+
+C_EQ_E05=69.1
+
+C_EQ_I10=51.6
+
+C_EQ_E10=69.1
+
+FL_INT05 = FORMULE(NOM_PARA='TEMP',VALE='''
+(0.5*BETA / ((C_0 - C_EQ_I05 )**2)
+ * (TEMP - (2.*C_0 - C_EQ_I05 ))*(TEMP - C_EQ_I05 ))''')
+
+zz=8.9;
+#ne marche pas avec le parseur actuel
+zz=8.9;aa=10 #position
+
+FIN()
--- /dev/null
+import os,glob,sys
+import unittest
+
+from Editeur import appli
+
+from config import ASTERDIR
+
+class TestCase(unittest.TestCase):
+ app=None
+ def setUp(self):
+ if self.app == None:
+ self.app=appli.STANDALONE(version='v8.3')
+ pass
+
+ def tearDown(self):
+ CONTEXT.unset_current_step()
+
+ i=0
+ for f in glob.glob(os.path.join(ASTERDIR,"[a-l]*.comm")):
+ ff=open(f)
+ text=ff.read()
+ ff.close()
+ if text.find("VISU_EFICAS='NON'") != -1:continue
+ for o in ('3','2','1','0','m'):
+ f=f[:-1]+o
+ if os.path.isfile(f):break
+ i=i+1
+
+ exec """def test%s(self,file="%s"):
+ "fichier:%s"
+ self.commtest(file)
+""" % (i,f,f)
+ del i,f,ff,text,o
+
+ def commtest(self,file):
+ """ Test generique"""
+ j=self.app.openJDC(file=file)
+ assert j.isvalid(),j.report()
+ j.supprime()
+ assert sys.getrefcount(j) == 2,sys.getrefcount(j)
--- /dev/null
+import os,glob,sys
+import unittest
+
+from Editeur import appli
+
+from config import ASTERDIR
+
+class TestCase(unittest.TestCase):
+ app=None
+ def setUp(self):
+ if self.app == None:
+ self.app=appli.STANDALONE(version='v8.2')
+ pass
+
+ def tearDown(self):
+ CONTEXT.unset_current_step()
+
+ i=0
+ for f in glob.glob(os.path.join(ASTERDIR,"z*.comm")):
+ ff=open(f)
+ text=ff.read()
+ ff.close()
+ if text.find("VISU_EFICAS='NON'") != -1:continue
+ for o in ('3','2','1','0','m'):
+ f=f[:-1]+o
+ if os.path.isfile(f):break
+ i=i+1
+ exec """def test%s(self,file="%s"):
+ self.commtest(file)
+""" % (i,f)
+ del i,f,o,ff,text
+
+ def commtest(self,file):
+ """ Test generique"""
+ print file
+ j=self.app.openJDC(file=file)
+ assert j.isvalid(),j.report()
+ j.supprime()
+ assert sys.getrefcount(j) == 2,sys.getrefcount(j)
+
--- /dev/null
+import os,glob,sys
+import unittest
+
+from Editeur import appli
+
+from config import ASTERDIR
+
+class TestCase(unittest.TestCase):
+ app=None
+ def setUp(self):
+ if self.app == None:
+ self.app=appli.STANDALONE(version='v8.3')
+ pass
+
+ def tearDown(self):
+ CONTEXT.unset_current_step()
+
+ i=0
+ for f in glob.glob(os.path.join(ASTERDIR,"[m-r]*.comm")):
+ ff=open(f)
+ text=ff.read()
+ ff.close()
+ if text.find("VISU_EFICAS='NON'") != -1:continue
+ for o in ('3','2','1','0','m'):
+ f=f[:-1]+o
+ if os.path.isfile(f):break
+ i=i+1
+ exec """def test%s(self,file="%s"):
+ "fichier:%s"
+ self.commtest(file)
+""" % (i,f,f)
+ del i,f,o,ff,text
+
+ def commtest(self,file):
+ """ Test generique"""
+ j=self.app.openJDC(file=file)
+ assert j.isvalid(),j.report()
+ j.supprime()
+ assert sys.getrefcount(j) == 2,sys.getrefcount(j)
+
--- /dev/null
+import os,glob,sys
+import unittest
+
+from Editeur import appli
+
+from config import ASTERDIR
+
+class TestCase(unittest.TestCase):
+ app=None
+ def setUp(self):
+ if self.app == None:
+ self.app=appli.STANDALONE(version='v8.3')
+ pass
+
+ def tearDown(self):
+ CONTEXT.unset_current_step()
+
+ i=0
+ for f in glob.glob(os.path.join(ASTERDIR,"s[a-d]*.comm")):
+ ff=open(f)
+ text=ff.read()
+ ff.close()
+ if text.find("VISU_EFICAS='NON'") != -1:continue
+ for o in ('3','2','1','0','m'):
+ f=f[:-1]+o
+ if os.path.isfile(f):break
+ i=i+1
+ exec """def test%s(self,file="%s"):
+ "fichier:%s"
+ self.commtest(file)
+""" % (i,f,f)
+ del i,f,o,ff,text
+
+ def commtest(self,file):
+ """ Test generique"""
+ j=self.app.openJDC(file=file)
+ assert j.isvalid(),j.report()
+ j.supprime()
+ assert sys.getrefcount(j) == 2,sys.getrefcount(j)
+
--- /dev/null
+import os,glob,sys
+import unittest
+
+from Editeur import appli
+
+from config import ASTERDIR
+
+class TestCase(unittest.TestCase):
+ app=None
+ def setUp(self):
+ if self.app == None:
+ self.app=appli.STANDALONE(version='v8.3')
+ pass
+
+ def tearDown(self):
+ CONTEXT.unset_current_step()
+
+ i=0
+ for f in glob.glob(os.path.join(ASTERDIR,"s[e-r]*.comm")):
+ ff=open(f)
+ text=ff.read()
+ ff.close()
+ if text.find("VISU_EFICAS='NON'") != -1:continue
+ for o in ('3','2','1','0','m'):
+ f=f[:-1]+o
+ if os.path.isfile(f):break
+ i=i+1
+ exec """def test%s(self,file="%s"):
+ "fichier:%s"
+ self.commtest(file)
+""" % (i,f,f)
+ del i,f,o,ff,text
+
+ def commtest(self,file):
+ """ Test generique"""
+ j=self.app.openJDC(file=file)
+ assert j.isvalid(),j.report()
+ j.supprime()
+ assert sys.getrefcount(j) == 2,sys.getrefcount(j)
+
--- /dev/null
+import os,glob,sys
+import unittest
+
+from Editeur import appli
+
+from config import ASTERDIR
+
+class TestCase(unittest.TestCase):
+ app=None
+ def setUp(self):
+ if self.app == None:
+ self.app=appli.STANDALONE(version='v8.3')
+ pass
+
+ def tearDown(self):
+ CONTEXT.unset_current_step()
+
+ i=0
+ for f in glob.glob(os.path.join(ASTERDIR,"ssl[a-l]*.comm")):
+ ff=open(f)
+ text=ff.read()
+ ff.close()
+ if text.find("VISU_EFICAS='NON'") != -1:continue
+ for o in ('3','2','1','0','m'):
+ f=f[:-1]+o
+ if os.path.isfile(f):
+ ff=open(f)
+ text=ff.read()
+ ff.close()
+ if text.find("VISU_EFICAS='NON'") == -1: break
+ i=i+1
+ exec """def test%s(self,file="%s"):
+ "fichier:%s"
+ self.commtest(file)
+""" % (i,f,f)
+ del i,f,o,ff,text
+
+ def commtest(self,file):
+ """ Test generique"""
+ j=self.app.openJDC(file=file)
+ assert j.isvalid(),j.report()
+ j.supprime()
+ assert sys.getrefcount(j) == 2,sys.getrefcount(j)
+
--- /dev/null
+import os,glob,sys
+import unittest
+
+from Editeur import appli
+
+from config import ASTERDIR
+
+class TestCase(unittest.TestCase):
+ app=None
+ def setUp(self):
+ if self.app == None:
+ self.app=appli.STANDALONE(version='v8.3')
+ pass
+
+ def tearDown(self):
+ CONTEXT.unset_current_step()
+
+ i=0
+ for f in glob.glob(os.path.join(ASTERDIR,"ssl[m-z]*.comm")):
+ ff=open(f)
+ text=ff.read()
+ ff.close()
+ if text.find("VISU_EFICAS='NON'") != -1:continue
+ for o in ('3','2','1','0','m'):
+ f=f[:-1]+o
+ if os.path.isfile(f):break
+ i=i+1
+ exec """def test%s(self,file="%s"):
+ "fichier:%s"
+ self.commtest(file)
+""" % (i,f,f)
+ del i,f,o,ff,text
+
+ def commtest(self,file):
+ """ Test generique"""
+ j=self.app.openJDC(file=file)
+ assert j.isvalid(),j.report()
+ j.supprime()
+ assert sys.getrefcount(j) == 2,sys.getrefcount(j)
+
--- /dev/null
+import os,glob,sys
+import unittest
+
+from Editeur import appli
+
+from config import ASTERDIR
+
+class TestCase(unittest.TestCase):
+ app=None
+ def setUp(self):
+ if self.app == None:
+ self.app=appli.STANDALONE(version='v8.2')
+ pass
+
+ def tearDown(self):
+ CONTEXT.unset_current_step()
+
+ i=0
+ for f in glob.glob(os.path.join(ASTERDIR,"ss[m-z]*.comm")):
+ ff=open(f)
+ text=ff.read()
+ ff.close()
+ if text.find("VISU_EFICAS='NON'") != -1:continue
+ for o in ('3','2','1','0','m'):
+ f=f[:-1]+o
+ if os.path.isfile(f):
+ ff=open(f)
+ text=ff.read()
+ ff.close()
+ if text.find("VISU_EFICAS='NON'") == -1: break
+ i=i+1
+ exec """def test%s(self,file="%s"):
+ self.commtest(file)
+""" % (i,f)
+ del i,f,o,ff,text
+
+ def commtest(self,file):
+ """ Test generique"""
+ print file
+ j=self.app.openJDC(file=file)
+ assert j.isvalid(),j.report()
+ j.supprime()
+ assert sys.getrefcount(j) == 2,sys.getrefcount(j)
+
--- /dev/null
+import os,glob,sys
+import unittest
+
+from Editeur import appli
+
+from config import ASTERDIR
+
+class TestCase(unittest.TestCase):
+ app=None
+ def setUp(self):
+ if self.app == None:
+ self.app=appli.STANDALONE(version='v8.2')
+ pass
+
+ def tearDown(self):
+ CONTEXT.unset_current_step()
+
+ i=0
+ for f in glob.glob(os.path.join(ASTERDIR,"s[t-z]*.comm")):
+ ff=open(f)
+ text=ff.read()
+ ff.close()
+ if text.find("VISU_EFICAS='NON'") != -1:continue
+ for o in ('3','2','1','0','m'):
+ f=f[:-1]+o
+ if os.path.isfile(f):break
+ i=i+1
+ exec """def test%s(self,file="%s"):
+ self.commtest(file)
+""" % (i,f)
+ del i,f,o,ff,text
+
+ def commtest(self,file):
+ """ Test generique"""
+ print file
+ j=self.app.openJDC(file=file)
+ assert j.isvalid(),j.report()
+ j.supprime()
+ assert sys.getrefcount(j) == 2,sys.getrefcount(j)
+
--- /dev/null
+import os,glob,sys
+import unittest
+
+from Editeur import appli
+
+from config import ASTERDIR
+
+class TestCase(unittest.TestCase):
+ app=None
+ def setUp(self):
+ if self.app == None:
+ self.app=appli.STANDALONE(version='v8.2')
+ pass
+
+ def tearDown(self):
+ CONTEXT.unset_current_step()
+
+ i=0
+ for f in glob.glob(os.path.join(ASTERDIR,"[t-y]*.comm")):
+ ff=open(f)
+ text=ff.read()
+ ff.close()
+ if text.find("VISU_EFICAS='NON'") != -1:continue
+ for o in ('3','2','1','0','m'):
+ f=f[:-1]+o
+ if os.path.isfile(f):break
+ i=i+1
+ exec """def test%s(self,file="%s"):
+ self.commtest(file)
+""" % (i,f)
+ del i,f,o,ff,text
+
+ def commtest(self,file):
+ """ Test generique"""
+ print file
+ j=self.app.openJDC(file=file)
+ assert j.isvalid(),j.report()
+ j.supprime()
+ assert sys.getrefcount(j) == 2,sys.getrefcount(j)
+
--- /dev/null
+import os,glob,sys
+import unittest
+import difflib
+
+import prefs
+from Editeur import appli
+
+def add_param(j,pos,nom,valeur):
+ co=j.addentite("PARAMETRE",pos)
+ co.set_nom(nom)
+ co.set_valeur(valeur)
+ return co
+
+def add_mcsimp(obj,nom,valeur):
+ mcs=obj.get_child(nom,restreint='oui')
+ if mcs is None:
+ pos=obj.get_index_child(nom)
+ mcs=obj.addentite(nom,pos)
+ mcs.set_valeur(mcs.eval_val(valeur))
+ return mcs
+
+def cdiff(text1,text2):
+ return " ".join(difflib.context_diff(text1.splitlines(1),text2.splitlines(1)))
+
+class TestCase(unittest.TestCase):
+ app=None
+ def setUp(self):
+ if self.app == None:
+ self.app=appli.STANDALONE(version='v8.3')
+ pass
+
+ def tearDown(self):
+ CONTEXT.unset_current_step()
+
+ i=0
+ for f in glob.glob(os.path.join(prefs.INSTALLDIR,"Tests/testcomm/*.comm")):
+ for o in ('3','2','1','0','m'):
+ f=f[:-1]+o
+ if os.path.isfile(f):break
+
+ i=i+1
+ exec """def test%s(self,file="%s"):
+ "fichier:%s"
+ self.commtest(file)
+""" % (i,f,f)
+ del i
+
+ def commtest(self,file):
+ """ Test generique"""
+ #print file
+ name=os.path.splitext(os.path.basename(file))[0]
+ errfile=os.path.join(os.path.dirname(__file__),name+".err")
+ err=""
+ if os.path.isfile(errfile):
+ f=open(errfile)
+ err=f.read()
+ f.close()
+ j=self.app.openJDC(file=file)
+ assert j.cr.get_mess_exception() == ""
+
+ if err == "":
+ assert j.isvalid(),j.report()
+ else:
+ txt=str(j.report())
+ assert txt == err,cdiff(err,txt)
+
+ CONTEXT.unset_current_step()
+ j.supprime()
+ assert sys.getrefcount(j) == 2,sys.getrefcount(j)
--- /dev/null
+DEBUT()
+YOUNG = DEFI_PARA_SENSI(VALE=1.)
+FORC = DEFI_PARA_SENSI(VALE=1.)
+MA=LIRE_MAILLAGE()
+MA=DEFI_GROUP( reuse=MA, MAILLAGE=MA,
+ CREA_GROUP_NO=_F(
+ GROUP_MA = ( 'LP9P10', 'LP9P10B',
+ 'LP8P9', 'LP8P9B',
+ ))
+ )
+
+MO=AFFE_MODELE( MAILLAGE=MA,
+ AFFE=_F( TOUT = 'OUI',
+ PHENOMENE = 'MECANIQUE',
+ MODELISATION = 'C_PLAN')
+ )
+ZERO = DEFI_CONSTANTE(VALE=0.)
+NU = DEFI_CONSTANTE(VALE=0.3)
+ALPHA = DEFI_CONSTANTE(VALE=0.)
+
+MAT=DEFI_MATERIAU(ELAS_FO=_F( E = YOUNG, NU = NU,
+ TEMP_DEF_ALPHA =20.,
+ ALPHA = ALPHA, RHO=7800.,))
+
+CHMAT=AFFE_MATERIAU( MAILLAGE=MA,
+ AFFE=_F( TOUT = 'OUI',
+ MATER = MAT)
+ )
+
+CH=AFFE_CHAR_MECA_F( MODELE=MO,
+ FORCE_INTERNE=_F(TOUT='OUI',FY=FORC,),
+ DDL_IMPO=(
+ _F( GROUP_NO = 'LP8P9',
+ DX = ZERO),
+ _F( GROUP_NO = 'LP8P9B',
+ DX = ZERO),
+ _F( GROUP_NO = 'P11',
+ DY = ZERO))
+ )
+
+DEP=MECA_STATIQUE( MODELE=MO, CHAM_MATER=CHMAT,
+ SENSIBILITE = (FORC),
+ EXCIT=_F( CHARGE = CH),
+ )
+
+DEP=CALC_ELEM(reuse=DEP,RESULTAT=DEP,
+ SENSIBILITE = (FORC),
+ OPTION=('EPSI_ELGA_DEPL','SIEF_ELGA_DEPL',),)
+
+FOND=DEFI_FOND_FISS( MAILLAGE=MA,
+ FOND_FISS=_F( GROUP_NO = ('P0',)),
+ NORMALE=(0., 1., 0.,)
+ )
+
+THETA0=CALC_THETA( MODELE=MO,
+ THETA_2D=_F( GROUP_NO = ('P0',),
+ MODULE = 1.,
+ R_INF = 3.75E-5,
+ R_SUP = 7.50E-5),
+ DIRECTION=(1., 0., 0.,)
+ )
+
+
+FIN()
+MA1=LIRE_MAILLAGE()
+MO1=AFFE_MODELE( MAILLAGE=MA1, AFFE=_F( TOUT = 'OUI',
+ PHENOMENE = 'MECANIQUE', MODELISATION = 'C_PLAN'))
+
+FIN()
--- /dev/null
+
+
+DEBUT();
+P1 = 9.8;
+
+P2 = 8.8;
+
+P3 = 7;
+
+P5 = (P3 * P1);
+
+P6 = (P1 - 3);
+
+P4 = [2, 3, 4];
+
+#Pas trouve shellpanel
+
+MAILLA2=LIRE_MAILLAGE(UNITE=P4[1],);
+
+aaa = FORMULE(VALE='a+z',
+ NOM_PARA=('a','z',),);
+
+MAIL=LIRE_MAILLAGE(UNITE=P3,);
+# 'LIRE_MAILLAGE', 'UNITE' --> uniquebasepanel
+
+az = FORMULE(VALE='aaaaa',
+ NOM_PARA=('ae','inst',),);
+
+AFFE1=AFFE_MODELE(MAILLAGE=MAIL,
+ AFFE=(_F(GROUP_MA=('RESSORT','eee',),
+ PHENOMENE='MECANIQUE',
+ MODELISATION='DIS_T',),
+ _F(GROUP_MA='MASSES',
+ PHENOMENE='MECANIQUE',
+ MODELISATION='DIS_T',),
+ _F(GROUP_NO=('GNP3','GNP5','GNP6','GNP7','GNP8','GNP9','GNP10','GNP11','GNP12',),
+ PHENOMENE='ACOUSTIQUE',
+ MODELISATION='PLAN',),),);
+
+MOD=AFFE_MODELE(MAILLAGE=MAIL,
+ AFFE=(_F(GROUP_MA='RESSORT',
+ PHENOMENE='MECANIQUE',
+ MODELISATION='DIS_T',),
+ _F(GROUP_MA='MASSES',
+ PHENOMENE='MECANIQUE',
+ MODELISATION='DIS_T',),
+ _F(TOUT='OUI',
+ PHENOMENE='THERMIQUE',
+ MODELISATION='COQUE',),),);
+
+CARA=AFFE_CARA_ELEM(MODELE=MOD,
+ POUTRE=_F(GROUP_MA='MA',
+ SECTION='CERCLE',
+ CARA='R',
+ VALE=(3.0,P6,),),);
+# 'AFFE_MODELE', 'MAILLAGE' --> uniqueassdpanel
+# AFFE_MODELE', 'AFFE', 'GROUP_MA' --> plusieursbasepanel
+# 'AFFE_MODELE', 'AFFE', 'PHENOMENE' --> uniqueintopanel
+# 'AFFE_MODELE', 'AFFE', 'b_mecanique'--> plusieursintopanel
+
+F1=DEFI_FONCTION(NOM_PARA='DX',
+ VALE=(5.0,3.0,
+ P4[1],P3,
+ ),);
+
+F3=DEFI_FONCTION(NOM_PARA='DRX',
+ VALE_C=(5.0,7.0,9.0,
+ 9.0,8.0,7.0,
+ ),);
+# 'DEFI_FONCTION', 'VALE' --> fonctionpanel
+
+MATER2=DEFI_MATERIAU(ELAS=_F(E=100000000000.0,
+ NU=0.0,),
+ ECRO_ASYM_LINE=_F(DC_SIGM_EPSI=0.0,
+ SY_C=200000000.0,
+ DT_SIGM_EPSI=0.0,
+ SY_T=50000000.0,),);
+
+PS1=DEFI_PARA_SENSI(VALE=1.0,);
+
+PS2=DEFI_PARA_SENSI(VALE=1.0,);
+
+PS3=DEFI_PARA_SENSI(VALE=1.0,);
+
+CHMAT2=AFFE_MATERIAU(MAILLAGE=MAIL,
+ AFFE=_F(TOUT='OUI',
+ MATER=MATER2,),);
+
+AAAZ=AFFE_CHAR_THER(MODELE=AFFE1,
+ TEMP_IMPO=_F(TOUT='OUI',
+ TEMP=0.0,),);
+
+TH1=THER_LINEAIRE(MODELE=AFFE1,
+ CHAM_MATER=CHMAT2,
+ EXCIT=_F(CHARGE=AAAZ,),
+ SENSIBILITE=(PS1,PS2,),);
+# 'THER_LINEAIRE', 'SENSIBILITE' --> plusieursassdpanel
+
+ACA1=AFFE_CHAR_ACOU(MODELE=AFFE1,
+ PRES_IMPO=_F(TOUT='OUI',
+ PRES=('RI',3.0,3.0,),),);
+# 'AFFE_CHAR_ACOU', 'PRES_IMPO', 'PRES' --> uniquecomppanel
+
+MACRO_MATR_ASSE(MODELE=AFFE1,
+ NUME_DDL=CO('DDL1'),
+ MATR_ASSE=_F(MATRICE=CO('MAT1'),
+ OPTION='RIGI_THER',),);
+# 'MACRO_MATR_ASSE', 'MATR_ASSE', 'MATRICE' --> uniquesdcopanel
+
+FIN();
--- /dev/null
+
+
+DEBUT();
+P1 = 9.8;
+
+P2 = 8.8;
+
+P3 = 7;
+
+P5 = (P3 * P1);
+
+P6 = (P1 - 3);
+
+P4 = [2, 3, 4];
+
+#Pas trouve shellpanel
+
+MAILLA2=LIRE_MAILLAGE(UNITE=P4[1],);
+
+aaa = FORMULE(REEL='(a+z) = (a,z)',);
+
+MAIL=LIRE_MAILLAGE(UNITE=P3,);
+# 'LIRE_MAILLAGE', 'UNITE' --> uniquebasepanel
+
+az = FORMULE(REEL='(aaaaa) = (ae,inst)',);
+
+AFFE1=AFFE_MODELE(MAILLAGE=MAIL,
+ AFFE=(_F(GROUP_MA=('RESSORT','eee',),
+ PHENOMENE='MECANIQUE',
+ MODELISATION='DIS_T',),
+ _F(GROUP_MA='MASSES',
+ PHENOMENE='MECANIQUE',
+ MODELISATION='DIS_T',),
+ _F(GROUP_NO=('GNP3','GNP5','GNP6','GNP7','GNP8','GNP9','GNP10','GNP11','GNP12',),
+ PHENOMENE='ACOUSTIQUE',
+ MODELISATION='PLAN',),),);
+
+MOD=AFFE_MODELE(MAILLAGE=MAIL,
+ AFFE=(_F(GROUP_MA='RESSORT',
+ PHENOMENE='MECANIQUE',
+ MODELISATION='DIS_T',),
+ _F(GROUP_MA='MASSES',
+ PHENOMENE='MECANIQUE',
+ MODELISATION='DIS_T',),
+ _F(TOUT='OUI',
+ PHENOMENE='THERMIQUE',
+ MODELISATION='COQUE',),),);
+
+CARA=AFFE_CARA_ELEM(MODELE=MOD,
+ POUTRE=_F(GROUP_MA='MA',
+ SECTION='CERCLE',
+ CARA='R',
+ VALE=(3.0,P6,),),);
+# 'AFFE_MODELE', 'MAILLAGE' --> uniqueassdpanel
+# AFFE_MODELE', 'AFFE', 'GROUP_MA' --> plusieursbasepanel
+# 'AFFE_MODELE', 'AFFE', 'PHENOMENE' --> uniqueintopanel
+# 'AFFE_MODELE', 'AFFE', 'b_mecanique'--> plusieursintopanel
+
+F1=DEFI_FONCTION(NOM_PARA='DX',
+ VALE=(5.0,3.0,
+ P4[1],P3,
+ ),);
+
+F3=DEFI_FONCTION(NOM_PARA='DRX',
+ VALE_C=(5.0,7.0,9.0,
+ 9.0,8.0,7.0,
+ ),);
+# 'DEFI_FONCTION', 'VALE' --> fonctionpanel
+
+MATER2=DEFI_MATERIAU(ELAS=_F(E=100000000000.0,
+ NU=0.0,),
+ ECRO_ASYM_LINE=_F(DC_SIGM_EPSI=0.0,
+ SY_C=200000000.0,
+ DT_SIGM_EPSI=0.0,
+ SY_T=50000000.0,),);
+
+PS1=DEFI_PARA_SENSI(VALE=1.0,);
+
+PS2=DEFI_PARA_SENSI(VALE=1.0,);
+
+PS3=DEFI_PARA_SENSI(VALE=1.0,);
+
+CHMAT2=AFFE_MATERIAU(MAILLAGE=MAIL,
+ AFFE=_F(TOUT='OUI',
+ MATER=MATER2,),);
+
+AAAZ=AFFE_CHAR_THER(MODELE=AFFE1,
+ TEMP_IMPO=_F(TOUT='OUI',
+ TEMP=0.0,),);
+
+TH1=THER_LINEAIRE(MODELE=AFFE1,
+ CHAM_MATER=CHMAT2,
+ EXCIT=_F(CHARGE=AAAZ,),
+ SENSIBILITE=(PS1,PS2,),);
+# 'THER_LINEAIRE', 'SENSIBILITE' --> plusieursassdpanel
+
+ACA1=AFFE_CHAR_ACOU(MODELE=AFFE1,
+ PRES_IMPO=_F(TOUT='OUI',
+ PRES=('RI',3.0,3.0,),),);
+# 'AFFE_CHAR_ACOU', 'PRES_IMPO', 'PRES' --> uniquecomppanel
+
+MACRO_MATR_ASSE(MODELE=AFFE1,
+ NUME_DDL=CO('DDL1'),
+ MATR_ASSE=_F(MATRICE=CO('MAT1'),
+ OPTION='RIGI_THER',),);
+# 'MACRO_MATR_ASSE', 'MATR_ASSE', 'MATRICE' --> uniquesdcopanel
+
+FIN();
)
)
+OP7=OPER(nom='OP7',op=7,sd_prod=concept,
+ FILTRE =FACT(statut='o',min=01,max='**',
+ MODE =SIMP(statut='o',typ=(concept,concept2) ),
+ )
+ )
DEBUT=MACRO(nom='DEBUT',op=debut,sd_prod=debut_sdprod,PAR_LOT=SIMP(typ='TXM',defaut='OUI'))
+class entier (ASSD):
+ def __init__(self,valeur=None,**args):
+ ASSD.__init__(self,**args)
+ self.valeur=valeur
+
+ def __adapt__(self,validator):
+ if validator.name == "list":
+ #validateur liste,cardinalité
+ return (self,)
+ elif validator.name == "type":
+ #validateur type
+ return validator.adapt(self.valeur or 0)
+ else:
+ #validateur into et valid
+ return self
+
+ def __repr__(self):
+ return "<concept entier>"
+
--- /dev/null
+
+
+DEBUT();
+a = 1.0;
+
+b = 3;
+
+c = 15;
+
+d = 5;
+
+x = (1, 2);
+
+y = [3, 4];
+
+y2 = (y * 2);
+
+z = 'a';
+
+zz = 'v';
+
+t = a;
+
+v = """aaaa
+bbbb""";
+
+xx = ceil(sqrt(d));
+
+yy = cos(3.1);
+
+ax = sin(2);
+
+bx = cos(xx);
+
+cx = sin(xx);
+
+zy = y[1];
+
+
+MA=LIRE_MAILLAGE();
+
+MB=LIRE_MAILLAGE();
+
+FIN();
--- /dev/null
+# coding=utf-8
+
+import os
+import unittest
+import difflib
+import compare
+
+import prefs
+from Editeur import appli
+
+def add_param(j,pos,nom,valeur):
+ co=j.addentite("PARAMETRE",pos)
+ co.set_nom(nom)
+ co.set_valeur(valeur)
+ return co
+
+def add_mcsimp(obj,nom,valeur):
+ mcs=obj.get_child(nom,restreint='oui')
+ if mcs is None:
+ pos=obj.get_index_child(nom)
+ mcs=obj.addentite(nom,pos)
+ mcs.set_valeur(mcs.eval_val(valeur))
+ return mcs
+
+def cdiff(text1,text2):
+ return " ".join(difflib.context_diff(text1.splitlines(1),text2.splitlines(1)))
+
+class TestCase(unittest.TestCase):
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ CONTEXT.unset_current_step()
+
+ def test000(self):
+ """ Test de construction du fichier de commandes az.comm de zero"""
+
+ app=appli.STANDALONE(version='v7.6')
+ j=app.newJDC()
+# commande DEBUT
+ co=j.addentite("DEBUT",0)
+# commande FIN
+ co=j.addentite("FIN",1)
+# parametres
+ pos=0
+ pos=pos+1
+ co=add_param(j,pos,"P1","9.8")
+ pos=pos+1
+ co=add_param(j,pos,"P2","8.8")
+ pos=pos+1
+ co=add_param(j,pos,"P3","7")
+ pos=pos+1
+ co=add_param(j,pos,"P5","P3*P1")
+ pos=pos+1
+ co=add_param(j,pos,"P6","P1-3")
+ pos=pos+1
+ co=add_param(j,pos,"P4","[2,3,4]")
+# commentaire
+ pos=pos+1
+ co=j.addentite("COMMENTAIRE",pos)
+ co.set_valeur("Pas trouve shellpanel")
+# commande LIRE_MAILLAGE
+ pos=pos+1
+ co=j.addentite("LIRE_MAILLAGE",pos)
+ test,mess=co.nomme_sd("MAILLA2")
+ mcs=co.addentite("UNITE")
+ valeur=mcs.eval_val("P4[1]")
+ test=mcs.set_valeur(valeur)
+# formule
+ pos=pos+1
+ co=j.addentite("FORMULE",pos)
+ co.update_formule_python(("aaa","REEL","a+z","(a,z)"))
+# commande LIRE_MAILLAGE
+ pos=pos+1
+ ma=co=j.addentite("LIRE_MAILLAGE",pos)
+ test,mess=co.nomme_sd("MAIL")
+ mcs=co.addentite("UNITE")
+ valeur,validite=mcs.eval_valeur("P3")
+ test=mcs.set_valeur(valeur)
+#
+ pos=pos+1
+ co=j.addentite("COMMENTAIRE",pos)
+ co.set_valeur(" 'LIRE_MAILLAGE', 'UNITE' --> uniquebasepanel")
+# formule
+ pos=pos+1
+ co=j.addentite("FORMULE",pos)
+ co.update_formule_python(("az","REEL","aaaaa","(ae,inst)"))
+# commande AFFE_MODELE
+ pos=pos+1
+ co=j.addentite("AFFE_MODELE",pos)
+ mcs=co.get_child("MAILLAGE")
+ valeur,validite=mcs.eval_valeur("MAIL")
+ assert valeur == ma.sd
+ test=mcs.set_valeur(valeur)
+ assert valeur == co["MAILLAGE"]
+ mcf=co.addentite("AFFE")
+ mcs=mcf[0].get_child("PHENOMENE")
+ valeur=mcs.eval_val_item('MECANIQUE')
+ assert valeur=='MECANIQUE',str(valeur)
+ test=mcs.set_valeur(valeur)
+ assert mcf["PHENOMENE"] == 'MECANIQUE'
+ mcs=mcf[0].get_child("b_mecanique").get_child("MODELISATION")
+ mcs.set_valeur(mcs.eval_val_item('DIS_T'))
+ assert mcf["MODELISATION"] == 'DIS_T'
+ mcs=add_mcsimp(mcf[0],"GROUP_MA",('RESSORT','eee',))
+
+ mcf=co.addentite("AFFE")
+ mcs=mcf[1].get_child("PHENOMENE")
+ mcs.set_valeur(mcs.eval_val_item('MECANIQUE'))
+ mcs=mcf[1].get_child("b_mecanique").get_child("MODELISATION")
+ mcs.set_valeur(mcs.eval_val_item('DIS_T'))
+ mcs=add_mcsimp(mcf[1],"GROUP_MA",'MASSES')
+
+ mcf=co.addentite("AFFE")
+ mcs=mcf[2].get_child("PHENOMENE")
+ mcs.set_valeur(mcs.eval_val_item('ACOUSTIQUE'))
+ mcs=mcf[2].get_child("b_acoustique").get_child("MODELISATION")
+ mcs.set_valeur(mcs.eval_val_item('PLAN'))
+ #mcs=add_mcsimp(mcf[2],"GROUP_NO",'GNP3,GNP5,GNP6,GNP7,GNP8,GNP9,GNP10,GNP11,GNP12')
+ mcs=add_mcsimp(mcf[2],"GROUP_NO","'GNP3','GNP5','GNP6','GNP7','GNP8','GNP9','GNP10','GNP11','GNP12'")
+
+ co.nomme_sd("AFFE1")
+# commande AFFE_MODELE
+ pos=pos+1
+ co=j.addentite("AFFE_MODELE",pos)
+ mcs=co.get_child("MAILLAGE")
+ mcs.set_valeur(mcs.eval_val("MAIL"))
+
+ mcf=co.addentite("AFFE")
+ mcs=mcf[0].get_child("PHENOMENE")
+ valeur=mcs.eval_val_item('MECANIQUE')
+ test=mcs.set_valeur(valeur)
+ mcs=mcf[0].get_child("b_mecanique").get_child("MODELISATION")
+ mcs.set_valeur(mcs.eval_val_item('DIS_T'))
+ mcs=add_mcsimp(mcf[0],"GROUP_MA",'RESSORT')
+
+ mcf=co.addentite("AFFE")
+ mcs=mcf[1].get_child("PHENOMENE")
+ mcs.set_valeur(mcs.eval_val_item('MECANIQUE'))
+ mcs=mcf[1].get_child("b_mecanique").get_child("MODELISATION")
+ mcs.set_valeur(mcs.eval_val_item('DIS_T'))
+ mcs=add_mcsimp(mcf[1],"GROUP_MA",'MASSES')
+
+ mcf=co.addentite("AFFE")
+ mcs=mcf[2].get_child("PHENOMENE")
+ mcs.set_valeur(mcs.eval_val_item('THERMIQUE'))
+ mcs=mcf[2].get_child("b_thermique").get_child("MODELISATION")
+ mcs.set_valeur(mcs.eval_val_item('COQUE'))
+ mcs=add_mcsimp(mcf[2],"TOUT",'OUI')
+
+ co.nomme_sd("MOD")
+#CARA=AFFE_CARA_ELEM(MODELE=MOD,
+# POUTRE=_F(GROUP_MA='MA',
+# SECTION='CERCLE',
+# CARA='R',
+# VALE=(3.0,P6,),),);
+ pos=pos+1
+ co=j.addentite("AFFE_CARA_ELEM",pos)
+ mcs=co.get_child("MODELE")
+ mcs.set_valeur(mcs.eval_val("MOD"))
+ mcf=co.addentite("POUTRE")
+ mcs=mcf[0].get_child("SECTION")
+ mcs.set_valeur(mcs.eval_val('CERCLE'))
+ assert mcf[0]["SECTION"] == 'CERCLE'
+ mcs=add_mcsimp(mcf[0],"GROUP_MA",'MA')
+ mcs=mcf[0].get_child("b_cercle").get_child("b_constant").get_child("CARA")
+ mcs.set_valeur(mcs.eval_val('R'))
+ mcs=mcf[0].get_child("b_cercle").get_child("b_constant").get_child("VALE")
+ mcs.set_valeur(mcs.eval_val('3.0,P6'))
+ co.nomme_sd("CARA")
+# commentaire
+ pos=pos+1
+ co=j.addentite("COMMENTAIRE",pos)
+ text=""" 'AFFE_MODELE', 'MAILLAGE' --> uniqueassdpanel
+ AFFE_MODELE', 'AFFE', 'GROUP_MA' --> plusieursbasepanel
+ 'AFFE_MODELE', 'AFFE', 'PHENOMENE' --> uniqueintopanel
+ 'AFFE_MODELE', 'AFFE', 'b_mecanique'--> plusieursintopanel"""
+ co.set_valeur(text)
+#F1=DEFI_FONCTION(NOM_PARA='DX',
+# VALE=(5.0,3.0,P4[1],P3,),);
+ pos=pos+1
+ co=j.addentite("DEFI_FONCTION",pos)
+ mcs=co.get_child("NOM_PARA")
+ mcs.set_valeur(mcs.eval_val("DX"))
+ mcs=co.addentite("VALE")
+ mcs.set_valeur(mcs.eval_val("5.0,3.0,P4[1],P3"))
+ co.nomme_sd("F1")
+#F3=DEFI_FONCTION(NOM_PARA='DRX',
+# VALE_C=(5.0,7.0,9.0,9.0,8.0,7.0,),);
+ pos=pos+1
+ co=j.addentite("DEFI_FONCTION",pos)
+ mcs=co.get_child("NOM_PARA")
+ mcs.set_valeur(mcs.eval_val("DRX"))
+ mcs=co.addentite("VALE_C")
+ mcs.set_valeur(mcs.eval_val("5.0,7.0,9.0,9.0,8.0,7.0"))
+ co.nomme_sd("F3")
+# commentaire
+ pos=pos+1
+ co=j.addentite("COMMENTAIRE",pos)
+ co.set_valeur(" 'DEFI_FONCTION', 'VALE' --> fonctionpanel ")
+#MATER2=DEFI_MATERIAU(ELAS=_F(E=100000000000.0,
+# NU=0.0,),
+# ECRO_ASYM_LINE=_F(DC_SIGM_EPSI=0.0,
+# SY_C=200000000.0,
+# DT_SIGM_EPSI=0.0,
+# SY_T=50000000.0,),);
+ pos=pos+1
+ co=j.addentite("DEFI_MATERIAU",pos)
+ mcf=co.addentite("ELAS")
+ mcs=mcf[0].get_child("E")
+ mcs.set_valeur(mcs.eval_val("100000000000.0"))
+ mcs=mcf[0].get_child("NU")
+ mcs.set_valeur(mcs.eval_val("0.0"))
+ mcf=co.addentite("ECRO_ASYM_LINE")
+ mcs=mcf[0].get_child("DC_SIGM_EPSI")
+ mcs.set_valeur(mcs.eval_val("0.0"))
+ mcs=mcf[0].get_child("DT_SIGM_EPSI")
+ mcs.set_valeur(mcs.eval_val("0.0"))
+ mcs=mcf[0].get_child("SY_C")
+ mcs.set_valeur(mcs.eval_val("200000000.0"))
+ mcs=mcf[0].get_child("SY_T")
+ mcs.set_valeur(mcs.eval_val("50000000.0"))
+ co.nomme_sd("MATER2")
+#PS1=DEFI_PARA_SENSI(VALE=1.0,);
+#PS2=DEFI_PARA_SENSI(VALE=1.0,);
+#PS3=DEFI_PARA_SENSI(VALE=1.0,);
+ pos=pos+1
+ co=j.addentite("DEFI_PARA_SENSI",pos)
+ mcs=co.get_child("VALE")
+ mcs.set_valeur(mcs.eval_val("1.0"))
+ co.nomme_sd("PS1")
+ pos=pos+1
+ co=j.addentite("DEFI_PARA_SENSI",pos)
+ mcs=co.get_child("VALE")
+ mcs.set_valeur(mcs.eval_val("1.0"))
+ co.nomme_sd("PS2")
+ pos=pos+1
+ co=j.addentite("DEFI_PARA_SENSI",pos)
+ mcs=co.get_child("VALE")
+ mcs.set_valeur(mcs.eval_val("1.0"))
+ co.nomme_sd("PS3")
+#CHMAT2=AFFE_MATERIAU(MAILLAGE=MAIL,
+# AFFE=_F(TOUT='OUI',
+# MATER=MATER2,),);
+ pos=pos+1
+ co=j.addentite("AFFE_MATERIAU",pos)
+ add_mcsimp(co,"MAILLAGE","MAIL")
+ mcf=co.get_child("AFFE")
+ add_mcsimp(mcf[0],"TOUT","OUI")
+ add_mcsimp(mcf[0],"MATER","MATER2")
+ co.nomme_sd("CHMAT2")
+#AAAZ=AFFE_CHAR_THER(MODELE=AFFE1,
+# TEMP_IMPO=_F(TOUT='OUI',
+# TEMP=0.0,),);
+ pos=pos+1
+ co=j.addentite("AFFE_CHAR_THER",pos)
+ add_mcsimp(co,"MODELE","AFFE1")
+ mcf=co.addentite("TEMP_IMPO")
+ add_mcsimp(mcf[0],"TOUT","OUI")
+ add_mcsimp(mcf[0],"TEMP","0.0")
+ co.nomme_sd("AAAZ")
+#TH1=THER_LINEAIRE(MODELE=AFFE1,
+# CHAM_MATER=CHMAT2,
+# EXCIT=_F(CHARGE=AAAZ,),
+# SENSIBILITE=(PS1,PS2,),);
+ pos=pos+1
+ co=j.addentite("THER_LINEAIRE",pos)
+ add_mcsimp(co,"MODELE","AFFE1")
+ add_mcsimp(co,"CHAM_MATER","CHMAT2")
+ mcf=co.get_child("EXCIT")
+ add_mcsimp(mcf[0],"CHARGE","AAAZ")
+ add_mcsimp(co,"SENSIBILITE","PS1,PS2")
+ co.nomme_sd("TH1")
+# commentaire
+ pos=pos+1
+ co=j.addentite("COMMENTAIRE",pos)
+ co.set_valeur(" 'THER_LINEAIRE', 'SENSIBILITE' --> plusieursassdpanel")
+#ACA1=AFFE_CHAR_ACOU(MODELE=AFFE1,
+# PRES_IMPO=_F(TOUT='OUI',
+# PRES=('RI',3.0,3.0,),),);
+ pos=pos+1
+ co=j.addentite("AFFE_CHAR_ACOU",pos)
+ add_mcsimp(co,"MODELE","AFFE1")
+ mcf=co.addentite("PRES_IMPO")
+ add_mcsimp(mcf[0],"TOUT","OUI")
+ add_mcsimp(mcf[0],"PRES","'RI',3.0,3.0")
+ co.nomme_sd("ACA1")
+# commentaire
+ pos=pos+1
+ co=j.addentite("COMMENTAIRE",pos)
+ co.set_valeur(" 'AFFE_CHAR_ACOU', 'PRES_IMPO', 'PRES' --> uniquecomppanel")
+
+# 'AFFE_CHAR_ACOU', 'PRES_IMPO', 'PRES' --> uniquecomppanel
+
+#MACRO_MATR_ASSE(MODELE=AFFE1,
+# NUME_DDL=CO('DDL1'),
+# MATR_ASSE=_F(MATRICE=CO('MAT1'),
+# OPTION='RIGI_THER',),);
+ pos=pos+1
+ co=j.addentite("MACRO_MATR_ASSE",pos)
+ add_mcsimp(co,"MODELE","AFFE1")
+ mcs=co.get_child("NUME_DDL")
+ mcs.set_valeur_co('DDL1')
+ mcf=co.get_child("MATR_ASSE")
+ add_mcsimp(mcf[0],"OPTION","RIGI_THER")
+ mcs=mcf[0].get_child("MATRICE")
+ mcs.set_valeur_co('MAT1')
+# commentaire
+ pos=pos+1
+ co=j.addentite("COMMENTAIRE",pos)
+ co.set_valeur(" 'MACRO_MATR_ASSE', 'MATR_ASSE', 'MATRICE' --> uniquesdcopanel")
+
+ assert j.isvalid(),j.report()
+
+ text1=app.get_text_JDC(j,'python')
+ file=os.path.join(prefs.INSTALLDIR,"Tests/testelem/az.comm")
+ f=open(file)
+ text2=f.read()
+ f.close()
+ assert text1 == text2 , cdiff(text1,text2)
+
+ def test001(self):
+ """ Test de construction d'un fichier de commandes avec DEFI_LIST_REEL, fonction et parametre de zero"""
+
+ app=appli.STANDALONE(version='v7.6')
+ j=app.newJDC()
+# commande DEBUT
+ co=j.addentite("DEBUT",0)
+# commande FIN
+ co=j.addentite("FIN",1)
+#parametre
+ pos=0
+ pos=pos+1
+ co=add_param(j,pos,"P1","9.8")
+ pos=pos+1
+ co=add_param(j,pos,"P2","sin(P1)")
+# formule
+ pos=pos+1
+ co=j.addentite("FORMULE",pos)
+ co.update_formule_python(("aaa","REEL","a+z","(a,z)"))
+#parametre de formule
+ pos=pos+1
+ co=add_param(j,pos,"P3","aaa(P1,2.)")
+#commande defi_list_reel
+ pos=pos+1
+ co=j.addentite("DEFI_LIST_REEL",pos)
+ add_mcsimp(co,"VALE","1.,2.,3.")
+ co.nomme_sd("LI1")
+#commande defi_list_reel
+ pos=pos+1
+ co=j.addentite("DEFI_LIST_REEL",pos)
+ add_mcsimp(co,"VALE","sin(1.)")
+ co.nomme_sd("LI2")
+#commande defi_list_reel
+ pos=pos+1
+ co=j.addentite("DEFI_LIST_REEL",pos)
+ add_mcsimp(co,"VALE","aaa(1.,2.)")
+ co.nomme_sd("LI3")
+#commande defi_list_reel
+ pos=pos+1
+ co=j.addentite("DEFI_LIST_REEL",pos)
+ add_mcsimp(co,"VALE","sin(1.,2)")
+ co.nomme_sd("LI4")
+#commande defi_list_reel
+ pos=pos+1
+ co=j.addentite("DEFI_LIST_REEL",pos)
+ add_mcsimp(co,"VALE","aaa(1.)")
+ co.nomme_sd("LI5")
+#commande defi_list_reel
+ pos=pos+1
+ co=j.addentite("DEFI_LIST_REEL",pos)
+ add_mcsimp(co,"VALE","1,sin(1.),2")
+ co.nomme_sd("LI6")
+
+ expected="""DEBUT CR validation : SansNom
+ Etape : DEFI_LIST_REEL ligne : ...
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ ! Concept retourné non défini !
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ Mot-clé simple : VALE
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ ! 'sin(1.,2)' n'est pas d'un type autorisé: ('R',) !
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ Fin Mot-clé simple : VALE
+ Fin Etape : DEFI_LIST_REEL
+ Etape : DEFI_LIST_REEL ligne : ...
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ ! Concept retourné non défini !
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ Mot-clé simple : VALE
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ ! 'aaa(1.)' n'est pas d'un type autorisé: ('R',) !
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ Fin Mot-clé simple : VALE
+ Fin Etape : DEFI_LIST_REEL
+FIN CR validation :SansNom
+"""
+ msg=str( j.report())
+ assert compare.check(expected,msg),cdiff(expected,msg)
def testType1(self):
"""Verification de type"""
- self.assertRaises(AttributeError,self.cata,1,'mcs1',None)
+ #Ne leve plus d'exception
+ #self.assertRaises(AttributeError,self.cata,1,'mcs1',None)
o=self.cata({'a':1.},'mcs1',None)
cr=o.report()
expected_cr="""Mot cle Facteur :mcs1
Mot-clé simple : a
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- ! 1.0 n'est pas d'un type autorisé !
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ ! 1.0 n'est pas d'un type autorisé: ('I',) !
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Fin Mot-clé simple : a
Fin Mot cle Facteur :mcs1
"""
- self.assertEqual(str(cr) , expected_cr)
+ msg="le rapport d'erreur est incorrect.\n expected =\n%s\n got =\n%s " % (expected_cr,str(cr))
+ self.assertEqual(str(cr) , expected_cr,msg=msg)
def test031(self):
cata=FACT(min=2,max=3,a=SIMP(typ='I',statut='o'),)
({},1),
({'xx':{}},1),
({'xx':{'a':1}},1),
+ ({'xx':"error"},0),
+ ({'xx':("error","err2","err3")},0),
+ ({'xx':({'a':1},"err2","err3")},0),
+ ({'xx':("err1",{'a':1},"err3")},0),
+ ({'xx':("err1",{'a':1},"err3","err4")},0),
)
for valeur,valid in liste:
o=cata(valeur,'mcf',None)
--- /dev/null
+import os
+import unittest
+import difflib
+
+import prefs
+from Editeur import appli
+from Editeur import comploader
+from Editeur import Objecttreeitem
+
+def add_param(j,pos,nom,valeur):
+ co=j.addentite("PARAMETRE",pos)
+ co.set_nom(nom)
+ co.set_valeur(valeur)
+ return co
+
+def add_mcsimp(obj,nom,valeur):
+ mcs=obj.get_child(nom,restreint='oui')
+ if mcs is None:
+ pos=obj.get_index_child(nom)
+ mcs=obj.addentite(nom,pos)
+ mcs.set_valeur(mcs.eval_val(valeur))
+ return mcs
+
+def cdiff(text1,text2):
+ return " ".join(difflib.context_diff(text1.splitlines(1),text2.splitlines(1)))
+
+version= 'v8.3'
+
+class TestCase(unittest.TestCase):
+ """ Tests sur des items """
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ CONTEXT.unset_current_step()
+
+ def test001(self):
+ """Test comploader"""
+ composants=comploader.charger_composants()
+ itemtype=comploader.gettreeitem({'a':1})
+ assert itemtype is Objecttreeitem.ObjectTreeItem
+
+ def test002(self):
+ """ Test de commentarisation/decommentarisation a partir d'un item jdc """
+ app=appli.STANDALONE(version=version)
+ file=os.path.join(prefs.INSTALLDIR,"Tests/testelem/az.comm")
+ j=app.openJDC(file=file)
+ item=app.create_item(j)
+ assert item.isvalid(),item.report()
+ # on commente la commande LIRE_MAILLAGE
+ commands=item.GetSubList()
+ for it in commands:
+ if it.nom == "LIRE_MAILLAGE" and it.sd.nom == "MAIL":break
+ pos=commands.index(it)
+ cco=it.get_objet_commentarise()
+ commands=item.GetSubList()
+ commands[pos].uncomment()
+ commands=item.GetSubList()
+ # on reaffecte l'objet MAIL
+ for it in commands:
+ if it.nom in ("AFFE_MODELE","AFFE_MATERIAU") :
+ for mc in it.GetSubList():
+ if mc.nom == "MAILLAGE":
+ valeur,validite=mc.eval_valeur("MAIL")
+ test = mc.set_valeur(valeur)
+ text1=app.get_text_JDC(j,'python')
+ f=open(file)
+ text2=f.read()
+ f.close()
+ assert text1 == text2 , cdiff(text1,text2)
+
--- /dev/null
+# coding=utf-8
+
+import os
+import unittest
+import difflib
+import compare
+
+import prefs
+from Editeur import appli
+
+def add_param(j,pos,nom,valeur):
+ co=j.addentite("PARAMETRE",pos)
+ co.set_nom(nom)
+ co.set_valeur(valeur)
+ return co
+
+def add_mcsimp(obj,nom,valeur):
+ mcs=obj.get_child(nom,restreint='oui')
+ if mcs is None:
+ pos=obj.get_index_child(nom)
+ mcs=obj.addentite(nom,pos)
+ mcs.set_valeur(mcs.eval_val(valeur))
+ return mcs
+
+def cdiff(text1,text2):
+ return " ".join(difflib.context_diff(text1.splitlines(1),text2.splitlines(1)))
+
+version='v8.3'
+
+class TestCase(unittest.TestCase):
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ CONTEXT.unset_current_step()
+
+ def test000(self):
+ app=appli.STANDALONE(version=version)
+ j=app.newJDC()
+
+# commande DEBUT
+ co=j.addentite("DEBUT",0)
+ co=add_param(j,1,"P1",None)
+ x=co.valeur or "coucou"
+ assert x == "coucou"
+ assert len(co) == 0
+ co.set_valeur(1)
+ assert len(co) == 1
+ co.set_valeur([1,2])
+ assert len(co) == 2
+
+ def test001(self):
+ """ Test d'insertion de commandes dans fichier toto.comm"""
+ app=appli.STANDALONE(version=version)
+ file=os.path.join(prefs.INSTALLDIR,"Tests/testelem/toto.comm")
+ j=app.openJDC(file=file)
+ expected="""DEBUT CR validation : toto.comm
+FIN CR validation :toto.comm
+"""
+ cr=str(j.report())
+ assert cr == expected, cr + "!=" + expected
+ co=j.etapes[1]
+ mcs=co.addentite("INFO")
+
+ cr=app.get_text_JDC(j,'python')
+ expected="""
+
+DEBUT();
+
+MA=LIRE_MAILLAGE(INFO=1,);
+
+FIN();
+"""
+ assert cr == expected, cr + "!=" + expected
+ co=j.addentite("LIRE_MAILLAGE",2)
+ test,mess=co.nomme_sd("MA2")
+ assert test == 1
+
+ cr=app.get_text_JDC(j,'python')
+ expected="""
+
+DEBUT();
+
+MA=LIRE_MAILLAGE(INFO=1,);
+
+MA2=LIRE_MAILLAGE();
+
+FIN();
+"""
+ assert cr == expected, cr + "!=" + expected
+
+ def test002(self):
+ """ Test de construction du fichier de commandes az.comm de zero"""
+
+ app=appli.STANDALONE(version=version)
+ j=app.newJDC()
+# commande DEBUT
+ co=j.addentite("DEBUT",0)
+# commande FIN
+ co=j.addentite("FIN",1)
+# parametres
+ pos=0
+ pos=pos+1
+ co=add_param(j,pos,"P1","9.8")
+ pos=pos+1
+ co=add_param(j,pos,"P2","8.8")
+ pos=pos+1
+ co=add_param(j,pos,"P3","7")
+ pos=pos+1
+ co=add_param(j,pos,"P5","P3*P1")
+ pos=pos+1
+ co=add_param(j,pos,"P6","P1-3")
+ pos=pos+1
+ co=add_param(j,pos,"P4","[2,3,4]")
+# commentaire
+ pos=pos+1
+ co=j.addentite("COMMENTAIRE",pos)
+ co.set_valeur("Pas trouve shellpanel")
+# commande LIRE_MAILLAGE
+ pos=pos+1
+ co=j.addentite("LIRE_MAILLAGE",pos)
+ test,mess=co.nomme_sd("MAILLA2")
+ mcs=co.addentite("UNITE")
+ valeur=mcs.eval_val("P4[1]")
+ test=mcs.set_valeur(valeur)
+# formule
+ pos=pos+1
+ co=j.addentite("FORMULE",pos)
+ co.update_formule_python(("aaa","REEL","a+z","(a,z)"))
+# commande LIRE_MAILLAGE
+ pos=pos+1
+ ma=co=j.addentite("LIRE_MAILLAGE",pos)
+ test,mess=co.nomme_sd("MAIL")
+ mcs=co.addentite("UNITE")
+ valeur,validite=mcs.eval_valeur("P3")
+ test=mcs.set_valeur(valeur)
+#
+ pos=pos+1
+ co=j.addentite("COMMENTAIRE",pos)
+ co.set_valeur(" 'LIRE_MAILLAGE', 'UNITE' --> uniquebasepanel")
+# formule
+ pos=pos+1
+ co=j.addentite("FORMULE",pos)
+ co.update_formule_python(("az","REEL","aaaaa","(ae,inst)"))
+# commande AFFE_MODELE
+ pos=pos+1
+ co=j.addentite("AFFE_MODELE",pos)
+ mcs=co.get_child("MAILLAGE")
+ valeur,validite=mcs.eval_valeur("MAIL")
+ assert valeur == ma.sd
+ test=mcs.set_valeur(valeur)
+ assert valeur == co["MAILLAGE"]
+ mcf=co.addentite("AFFE")
+ mcs=mcf[0].get_child("PHENOMENE")
+ valeur=mcs.eval_val_item('MECANIQUE')
+ assert valeur=='MECANIQUE',str(valeur)
+ test=mcs.set_valeur(valeur)
+ assert mcf["PHENOMENE"] == 'MECANIQUE'
+ mcs=mcf[0].get_child("b_mecanique").get_child("MODELISATION")
+ mcs.set_valeur(mcs.eval_val_item('DIS_T'))
+ assert mcf["MODELISATION"] == 'DIS_T'
+ mcs=add_mcsimp(mcf[0],"GROUP_MA",('RESSORT','eee',))
+
+ mcf=co.addentite("AFFE")
+ mcs=mcf[1].get_child("PHENOMENE")
+ mcs.set_valeur(mcs.eval_val_item('MECANIQUE'))
+ mcs=mcf[1].get_child("b_mecanique").get_child("MODELISATION")
+ mcs.set_valeur(mcs.eval_val_item('DIS_T'))
+ mcs=add_mcsimp(mcf[1],"GROUP_MA",'MASSES')
+
+ mcf=co.addentite("AFFE")
+ mcs=mcf[2].get_child("PHENOMENE")
+ mcs.set_valeur(mcs.eval_val_item('ACOUSTIQUE'))
+ mcs=mcf[2].get_child("b_acoustique").get_child("MODELISATION")
+ mcs.set_valeur(mcs.eval_val_item('PLAN'))
+ #mcs=add_mcsimp(mcf[2],"GROUP_NO",'GNP3,GNP5,GNP6,GNP7,GNP8,GNP9,GNP10,GNP11,GNP12')
+ mcs=add_mcsimp(mcf[2],"GROUP_NO","'GNP3','GNP5','GNP6','GNP7','GNP8','GNP9','GNP10','GNP11','GNP12'")
+
+ co.nomme_sd("AFFE1")
+# commande AFFE_MODELE
+ pos=pos+1
+ co=j.addentite("AFFE_MODELE",pos)
+ mcs=co.get_child("MAILLAGE")
+ mcs.set_valeur(mcs.eval_val("MAIL"))
+
+ mcf=co.addentite("AFFE")
+ mcs=mcf[0].get_child("PHENOMENE")
+ valeur=mcs.eval_val_item('MECANIQUE')
+ test=mcs.set_valeur(valeur)
+ mcs=mcf[0].get_child("b_mecanique").get_child("MODELISATION")
+ mcs.set_valeur(mcs.eval_val_item('DIS_T'))
+ mcs=add_mcsimp(mcf[0],"GROUP_MA",'RESSORT')
+
+ mcf=co.addentite("AFFE")
+ mcs=mcf[1].get_child("PHENOMENE")
+ mcs.set_valeur(mcs.eval_val_item('MECANIQUE'))
+ mcs=mcf[1].get_child("b_mecanique").get_child("MODELISATION")
+ mcs.set_valeur(mcs.eval_val_item('DIS_T'))
+ mcs=add_mcsimp(mcf[1],"GROUP_MA",'MASSES')
+
+ mcf=co.addentite("AFFE")
+ mcs=mcf[2].get_child("PHENOMENE")
+ mcs.set_valeur(mcs.eval_val_item('THERMIQUE'))
+ mcs=mcf[2].get_child("b_thermique").get_child("MODELISATION")
+ mcs.set_valeur(mcs.eval_val_item('COQUE'))
+ mcs=add_mcsimp(mcf[2],"TOUT",'OUI')
+
+ co.nomme_sd("MOD")
+#CARA=AFFE_CARA_ELEM(MODELE=MOD,
+# POUTRE=_F(GROUP_MA='MA',
+# SECTION='CERCLE',
+# CARA='R',
+# VALE=(3.0,P6,),),);
+ pos=pos+1
+ co=j.addentite("AFFE_CARA_ELEM",pos)
+ mcs=co.get_child("MODELE")
+ mcs.set_valeur(mcs.eval_val("MOD"))
+ mcf=co.addentite("POUTRE")
+ mcs=mcf[0].get_child("SECTION")
+ mcs.set_valeur(mcs.eval_val('CERCLE'))
+ assert mcf[0]["SECTION"] == 'CERCLE'
+ mcs=add_mcsimp(mcf[0],"GROUP_MA",'MA')
+ mcs=mcf[0].get_child("b_cercle").get_child("b_constant").get_child("CARA")
+ mcs.set_valeur(mcs.eval_val('R'))
+ mcs=mcf[0].get_child("b_cercle").get_child("b_constant").get_child("VALE")
+ mcs.set_valeur(mcs.eval_val('3.0,P6'))
+ co.nomme_sd("CARA")
+# commentaire
+ pos=pos+1
+ co=j.addentite("COMMENTAIRE",pos)
+ text=""" 'AFFE_MODELE', 'MAILLAGE' --> uniqueassdpanel
+ AFFE_MODELE', 'AFFE', 'GROUP_MA' --> plusieursbasepanel
+ 'AFFE_MODELE', 'AFFE', 'PHENOMENE' --> uniqueintopanel
+ 'AFFE_MODELE', 'AFFE', 'b_mecanique'--> plusieursintopanel"""
+ co.set_valeur(text)
+#F1=DEFI_FONCTION(NOM_PARA='DX',
+# VALE=(5.0,3.0,P4[1],P3,),);
+ pos=pos+1
+ co=j.addentite("DEFI_FONCTION",pos)
+ mcs=co.get_child("NOM_PARA")
+ mcs.set_valeur(mcs.eval_val("DX"))
+ mcs=co.addentite("VALE")
+ mcs.set_valeur(mcs.eval_val("5.0,3.0,P4[1],P3"))
+ co.nomme_sd("F1")
+#F3=DEFI_FONCTION(NOM_PARA='DRX',
+# VALE_C=(5.0,7.0,9.0,9.0,8.0,7.0,),);
+ pos=pos+1
+ co=j.addentite("DEFI_FONCTION",pos)
+ mcs=co.get_child("NOM_PARA")
+ mcs.set_valeur(mcs.eval_val("DRX"))
+ mcs=co.addentite("VALE_C")
+ mcs.set_valeur(mcs.eval_val("5.0,7.0,9.0,9.0,8.0,7.0"))
+ co.nomme_sd("F3")
+# commentaire
+ pos=pos+1
+ co=j.addentite("COMMENTAIRE",pos)
+ co.set_valeur(" 'DEFI_FONCTION', 'VALE' --> fonctionpanel ")
+#MATER2=DEFI_MATERIAU(ELAS=_F(E=100000000000.0,
+# NU=0.0,),
+# ECRO_ASYM_LINE=_F(DC_SIGM_EPSI=0.0,
+# SY_C=200000000.0,
+# DT_SIGM_EPSI=0.0,
+# SY_T=50000000.0,),);
+ pos=pos+1
+ co=j.addentite("DEFI_MATERIAU",pos)
+ mcf=co.addentite("ELAS")
+ mcs=mcf[0].get_child("E")
+ mcs.set_valeur(mcs.eval_val("100000000000.0"))
+ mcs=mcf[0].get_child("NU")
+ mcs.set_valeur(mcs.eval_val("0.0"))
+ mcf=co.addentite("ECRO_ASYM_LINE")
+ mcs=mcf[0].get_child("DC_SIGM_EPSI")
+ mcs.set_valeur(mcs.eval_val("0.0"))
+ mcs=mcf[0].get_child("DT_SIGM_EPSI")
+ mcs.set_valeur(mcs.eval_val("0.0"))
+ mcs=mcf[0].get_child("SY_C")
+ mcs.set_valeur(mcs.eval_val("200000000.0"))
+ mcs=mcf[0].get_child("SY_T")
+ mcs.set_valeur(mcs.eval_val("50000000.0"))
+ co.nomme_sd("MATER2")
+#PS1=DEFI_PARA_SENSI(VALE=1.0,);
+#PS2=DEFI_PARA_SENSI(VALE=1.0,);
+#PS3=DEFI_PARA_SENSI(VALE=1.0,);
+ pos=pos+1
+ co=j.addentite("DEFI_PARA_SENSI",pos)
+ mcs=co.get_child("VALE")
+ mcs.set_valeur(mcs.eval_val("1.0"))
+ co.nomme_sd("PS1")
+ pos=pos+1
+ co=j.addentite("DEFI_PARA_SENSI",pos)
+ mcs=co.get_child("VALE")
+ mcs.set_valeur(mcs.eval_val("1.0"))
+ co.nomme_sd("PS2")
+ pos=pos+1
+ co=j.addentite("DEFI_PARA_SENSI",pos)
+ mcs=co.get_child("VALE")
+ mcs.set_valeur(mcs.eval_val("1.0"))
+ co.nomme_sd("PS3")
+#CHMAT2=AFFE_MATERIAU(MAILLAGE=MAIL,
+# AFFE=_F(TOUT='OUI',
+# MATER=MATER2,),);
+ pos=pos+1
+ co=j.addentite("AFFE_MATERIAU",pos)
+ add_mcsimp(co,"MAILLAGE","MAIL")
+ mcf=co.get_child("AFFE")
+ add_mcsimp(mcf[0],"TOUT","OUI")
+ add_mcsimp(mcf[0],"MATER","MATER2")
+ co.nomme_sd("CHMAT2")
+#AAAZ=AFFE_CHAR_THER(MODELE=AFFE1,
+# TEMP_IMPO=_F(TOUT='OUI',
+# TEMP=0.0,),);
+ pos=pos+1
+ co=j.addentite("AFFE_CHAR_THER",pos)
+ add_mcsimp(co,"MODELE","AFFE1")
+ mcf=co.addentite("TEMP_IMPO")
+ add_mcsimp(mcf[0],"TOUT","OUI")
+ add_mcsimp(mcf[0],"TEMP","0.0")
+ co.nomme_sd("AAAZ")
+#TH1=THER_LINEAIRE(MODELE=AFFE1,
+# CHAM_MATER=CHMAT2,
+# EXCIT=_F(CHARGE=AAAZ,),
+# SENSIBILITE=(PS1,PS2,),);
+ pos=pos+1
+ co=j.addentite("THER_LINEAIRE",pos)
+ add_mcsimp(co,"MODELE","AFFE1")
+ add_mcsimp(co,"CHAM_MATER","CHMAT2")
+ mcf=co.get_child("EXCIT")
+ add_mcsimp(mcf[0],"CHARGE","AAAZ")
+ add_mcsimp(co,"SENSIBILITE","PS1,PS2")
+ co.nomme_sd("TH1")
+# commentaire
+ pos=pos+1
+ co=j.addentite("COMMENTAIRE",pos)
+ co.set_valeur(" 'THER_LINEAIRE', 'SENSIBILITE' --> plusieursassdpanel")
+#ACA1=AFFE_CHAR_ACOU(MODELE=AFFE1,
+# PRES_IMPO=_F(TOUT='OUI',
+# PRES=('RI',3.0,3.0,),),);
+ pos=pos+1
+ co=j.addentite("AFFE_CHAR_ACOU",pos)
+ add_mcsimp(co,"MODELE","AFFE1")
+ mcf=co.addentite("PRES_IMPO")
+ add_mcsimp(mcf[0],"TOUT","OUI")
+ add_mcsimp(mcf[0],"PRES","'RI',3.0,3.0")
+ co.nomme_sd("ACA1")
+# commentaire
+ pos=pos+1
+ co=j.addentite("COMMENTAIRE",pos)
+ co.set_valeur(" 'AFFE_CHAR_ACOU', 'PRES_IMPO', 'PRES' --> uniquecomppanel")
+
+# 'AFFE_CHAR_ACOU', 'PRES_IMPO', 'PRES' --> uniquecomppanel
+
+#MACRO_MATR_ASSE(MODELE=AFFE1,
+# NUME_DDL=CO('DDL1'),
+# MATR_ASSE=_F(MATRICE=CO('MAT1'),
+# OPTION='RIGI_THER',),);
+ pos=pos+1
+ co=j.addentite("MACRO_MATR_ASSE",pos)
+ add_mcsimp(co,"MODELE","AFFE1")
+ mcs=co.get_child("NUME_DDL")
+ mcs.set_valeur_co('DDL1')
+ mcf=co.get_child("MATR_ASSE")
+ add_mcsimp(mcf[0],"OPTION","RIGI_THER")
+ mcs=mcf[0].get_child("MATRICE")
+ mcs.set_valeur_co('MAT1')
+# commentaire
+ pos=pos+1
+ co=j.addentite("COMMENTAIRE",pos)
+ co.set_valeur(" 'MACRO_MATR_ASSE', 'MATR_ASSE', 'MATRICE' --> uniquesdcopanel")
+
+ assert j.isvalid(),j.report()
+
+ text1=app.get_text_JDC(j,'python')
+ file=os.path.join(prefs.INSTALLDIR,"Tests/testelem/az.comm")
+ f=open(file)
+ text2=f.read()
+ f.close()
+ assert text1 == text2 , cdiff(text1,text2)
+
+ def test003(self):
+ """ Test de construction du fichier de commandes az.comm de zero"""
+
+ app=appli.STANDALONE(version=version)
+ j=app.newJDC()
+# commande DEBUT
+ co=j.addentite("DEBUT",0)
+# commande FIN
+ co=j.addentite("FIN",1)
+#parametre
+ pos=0
+ pos=pos+1
+ co=add_param(j,pos,"P1","9.8")
+ pos=pos+1
+ co=add_param(j,pos,"P2","sin(P1)")
+# formule
+ pos=pos+1
+ co=j.addentite("FORMULE",pos)
+ co.update_formule_python(("aaa","REEL","a+z","(a,z)"))
+#parametre de formule
+ pos=pos+1
+ co=add_param(j,pos,"P3","aaa(P1,2.)")
+#commande defi_list_reel
+ pos=pos+1
+ co=j.addentite("DEFI_LIST_REEL",pos)
+ add_mcsimp(co,"VALE","1.,2.,3.")
+ co.nomme_sd("LI1")
+#commande defi_list_reel
+ pos=pos+1
+ co=j.addentite("DEFI_LIST_REEL",pos)
+ add_mcsimp(co,"VALE","sin(1.)")
+ co.nomme_sd("LI2")
+#commande defi_list_reel
+ pos=pos+1
+ co=j.addentite("DEFI_LIST_REEL",pos)
+ add_mcsimp(co,"VALE","aaa(1.,2.)")
+ co.nomme_sd("LI3")
+#commande defi_list_reel
+ pos=pos+1
+ co=j.addentite("DEFI_LIST_REEL",pos)
+ add_mcsimp(co,"VALE","sin(1.,2)")
+ co.nomme_sd("LI4")
+#commande defi_list_reel
+ pos=pos+1
+ co=j.addentite("DEFI_LIST_REEL",pos)
+ add_mcsimp(co,"VALE","aaa(1.)")
+ co.nomme_sd("LI5")
+#commande defi_list_reel
+ pos=pos+1
+ co=j.addentite("DEFI_LIST_REEL",pos)
+ add_mcsimp(co,"VALE","1,sin(1.),2")
+ co.nomme_sd("LI6")
+
+ expected="""DEBUT CR validation : SansNom
+ Etape : DEFI_LIST_REEL ligne : ...
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ ! Concept retourné non défini !
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ Mot-clé simple : VALE
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ ! 'sin(1.,2)' n'est pas d'un type autorisé: ('R',) !
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ Fin Mot-clé simple : VALE
+ Fin Etape : DEFI_LIST_REEL
+ Etape : DEFI_LIST_REEL ligne : ...
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ ! Concept retourné non défini !
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ Mot-clé simple : VALE
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ ! 'aaa(1.)' n'est pas d'un type autorisé: ('R',) !
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ Fin Mot-clé simple : VALE
+ Fin Etape : DEFI_LIST_REEL
+FIN CR validation :SansNom
+"""
+ msg=str( j.report())
+ assert compare.check(expected,msg),cdiff(expected,msg)
Etape : OP5 ligne : 5 fichier : 'bidon'
Mot-clé simple : MATR
!!!!!!...
- ! ... n'est pas d'un type autorisé !
+ ! ... n'est pas d'un type autorisé... !
!!!!!!...
Fin Mot-clé simple : MATR
Fin Etape : OP5
Etape : OP2 ligne : 5 fichier : 'bidon'
Mot-clé simple : MATR
!!!!...
- ! ... n'est pas d'un type autorisé !
+ ! ... n'est pas d'un type autorisé... !
!!!!...
Fin Mot-clé simple : MATR
Fin Etape : OP2
Etape : OP10 ligne : 2 fichier : 'bidon'
Mot-clé simple : MATR
!!!!...
- ! ... n'est pas d'un type autorisé !
+ ! ... n'est pas d'un type autorisé... !
!!!!...
Fin Mot-clé simple : MATR
Fin Etape : OP10
Etape : OP22 ligne : 3 fichier : 'bidon'
Mot-clé simple : MATR
!!!!!!!!...
- ! ... n'est pas d'un type autorisé !
+ ! ... n'est pas d'un type autorisé... !
!!!!!!!...
Fin Mot-clé simple : MATR
Fin Etape : OP22
--- /dev/null
+# coding=utf-8
+import os
+import unittest
+import difflib
+import compare
+
+import prefs
+from Editeur import appli
+from Accas import AsException
+
+def add_param(j,pos,nom,valeur):
+ co=j.addentite("PARAMETRE",pos)
+ co.set_nom(nom)
+ co.set_valeur(valeur)
+ return co
+
+def add_mcsimp(obj,nom,valeur):
+ mcs=obj.get_child(nom,restreint='oui')
+ if mcs is None:
+ pos=obj.get_index_child(nom)
+ mcs=obj.addentite(nom,pos)
+ mcs.set_valeur(mcs.eval_val(valeur))
+ return mcs
+
+def cdiff(text1,text2):
+ return " ".join(difflib.context_diff(text1.splitlines(1),text2.splitlines(1)))
+
+version='v8.3'
+
+class TestCase(unittest.TestCase):
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ CONTEXT.unset_current_step()
+
+ def test001(self):
+ """ Test de commentarisation/decommentarisation de commandes dans fichier az.comm"""
+ app=appli.STANDALONE(version=version)
+ file=os.path.join(prefs.INSTALLDIR,"Tests/testelem/az.comm")
+ j=app.openJDC(file=file)
+ assert j.isvalid(),j.report()
+ # on commente la commande LIRE_MAILLAGE
+ for co in j.etapes:
+ if co.nom == "LIRE_MAILLAGE" and co.sd.nom == "MAIL":break
+ cco=co.get_objet_commentarise(format=app.format_fichier.get())
+ # on decommente la commande LIRE_MAILLAGE
+ commande,nom = cco.uncomment()
+ # on reaffecte l'objet MAIL
+ for co in j.etapes:
+ if co.nom in ("AFFE_MODELE","AFFE_MATERIAU") :
+ add_mcsimp(co,"MAILLAGE",'MAIL')
+
+ text1=app.get_text_JDC(j,'python')
+ f=open(file)
+ text2=f.read()
+ f.close()
+ assert text1 == text2 , cdiff(text1,text2)
+
+ def test002(self):
+ """ Test de commentarisation/decommentarisation de macro commande dans fichier az.comm"""
+ app=appli.STANDALONE(version=version)
+ file=os.path.join(prefs.INSTALLDIR,"Tests/testelem/az.comm")
+ j=app.openJDC(file=file)
+ assert j.isvalid(),j.report()
+ # on commente la commande MACRO_MATR_ASSE
+ for co in j.etapes:
+ if co.nom == "MACRO_MATR_ASSE" :break
+ cco=co.get_objet_commentarise(format=app.format_fichier.get())
+ # on decommente la commande MACRO_MATR_ASSE
+ commande,nom = cco.uncomment()
+ assert j.isvalid(),j.report()
+
+ def test003(self):
+ """ Test de commentarisation/decommentarisation de commandes dans fichier az.comm"""
+ app=appli.STANDALONE(version=version)
+ text="""
+DEBUT()
+MA=LIRE_MAILLAGE()
+FIN()
+"""
+ j=app.openTXT(text)
+ assert j.isvalid(),j.report()
+ # on commente la commande LIRE_MAILLAGE
+ co=j.etapes[1]
+ cco=co.get_objet_commentarise(format=app.format_fichier.get())
+ co=j.addentite("LIRE_MAILLAGE",2)
+ test,mess=co.nomme_sd("MA")
+ # on decommente la commande LIRE_MAILLAGE
+ commande,nom = cco.uncomment()
+ expected="""DEBUT CR validation : TEXT
+ Etape : LIRE_MAILLAGE ligne : ...
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ ! Concept retourné non défini !
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ Fin Etape : LIRE_MAILLAGE
+FIN CR validation :TEXT
+"""
+ msg=str( j.report())
+ assert compare.check(expected,msg),cdiff(expected,msg)
+
+ def test004(self):
+ """ Test de commentarisation/decommentarisation de commandes dans fichier az.comm"""
+ app=appli.STANDALONE(version=version)
+ text="""
+DEBUT()
+MA=LIRE_MAILLAGE()
+AFFE_MODELE(MAILLAGE=MA)
+FIN()
+"""
+ j=app.openTXT(text)
+ # on commente la commande LIRE_MAILLAGE
+ co=j.etapes[1]
+ cco=co.get_objet_commentarise(format=app.format_fichier.get())
+ # on commente la commande AFFE_MODELE
+ co=j.etapes[2]
+ cco2=co.get_objet_commentarise(format=app.format_fichier.get())
+ # on decommente la commande AFFE_MODELE
+ commande,nom = cco2.uncomment()
+ assert commande["MAILLAGE"] == None
+
+ def test005(self):
+ """ Test de commentarisation/decommentarisation de commandes dans fichier az.comm"""
+ app=appli.STANDALONE(version=version)
+ text="""
+DEBUT()
+MA=LIRE_MAILLAGE()
+AFFE_MODELE(MAILLAGE=MA)
+FIN()
+"""
+ j=app.openTXT(text)
+ # on commente la commande AFFE_MODELE
+ co=j.etapes[2]
+ cco2=co.get_objet_commentarise(format=app.format_fichier.get())
+ # on commente la commande LIRE_MAILLAGE
+ co=j.etapes[1]
+ cco=co.get_objet_commentarise(format=app.format_fichier.get())
+ # on decommente la commande AFFE_MODELE
+ self.assertRaises(AsException, cco2.uncomment, )
+
--- /dev/null
+# coding=utf-8
+import os
+import unittest
+import difflib
+import compare
+
+import prefs
+from Editeur import appli
+from Accas import AsException
+
+def add_param(j,pos,nom,valeur):
+ co=j.addentite("PARAMETRE",pos)
+ co.set_nom(nom)
+ co.set_valeur(valeur)
+ return co
+
+def add_mcsimp(obj,nom,valeur):
+ mcs=obj.get_child(nom,restreint='oui')
+ if mcs is None:
+ pos=obj.get_index_child(nom)
+ mcs=obj.addentite(nom,pos)
+ mcs.set_valeur(mcs.eval_val(valeur))
+ return mcs
+
+def cdiff(text1,text2):
+ return " ".join(difflib.context_diff(text1.splitlines(1),text2.splitlines(1)))
+
+version='v8.3'
+
+class TestCase(unittest.TestCase):
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ CONTEXT.unset_current_step()
+
+ i=0
+ for f in ("params.comm",):
+ file=os.path.join(prefs.INSTALLDIR,"Tests/testelem",f)
+ i=i+1
+ exec """def test%s(self,file="%s"):
+ "fichier : %s"
+ self.commtest(file)
+""" % (i,file,f)
+ del i
+
+ def commtest(self,file):
+ """ Test de lecture/ecriture de fichier .comm"""
+ #print file
+ app=appli.STANDALONE(version=version)
+ j=app.openJDC(file=file)
+ assert j.isvalid(),j.report()
+
+ text1=app.get_text_JDC(j,'python')
+ f=open(file)
+ text2=f.read()
+ f.close()
+ assert text1 == text2 , cdiff(text2,text1)
+
# coding=utf-8
import cata1
-from cata1 import OP1,OP2,OP3,OP4,OP5,OP6
+from cata1 import OP1,OP2,OP3,OP4,OP5,OP6,OP7
from Accas import AsException,ASSD,OPER,SIMP,FACT,BLOC,_F
class concept(ASSD):pass
OP10 = OPER(nom='OP10',op=10,sd_prod=concept,
a=SIMP(typ='I'),
c=SIMP(statut='o',typ='TXM',position='global',
- into=("TABLEAU","AGRAF"),
- ),
- b=FACT(statut='o',max='**',
- b_forme=BLOC(condition="c == 'TABLEAU'",
- d=SIMP(statut='f',typ='TXM'),
- ),
- ),
+ into=("TABLEAU","AGRAF"),
+ ),
+ b=FACT(statut='o',max='**',
+ b_forme=BLOC(condition="c == 'TABLEAU'",
+ d=SIMP(statut='f',typ='TXM'),
+ ),
+ ),
)
co1=OP10(a=1,c="TABLEAU",b=_F(d='rr'))
co1.etape.supprime()
def test15(self):
+ """ Test mot cle facteur incorrect
+ """
+ co1=OP7(FILTRE="coucou")
+ cr=co1.etape.report()
+ msg="erreur sur le test " +'\n'+str(cr)
+ self.assertEqual(co1.etape.isvalid(),0,msg=msg)
+ co1.etape.supprime()
+
+ def test16(self):
OP10 = OPER(nom='OP10',op=10,sd_prod=concept,
a=SIMP(statut='o',typ='R',val_min=0,val_max=1,max=5),
)
--- /dev/null
+import unittest
+import difflib
+
+from convert import parseur_python
+
+def cdiff(text1,text2):
+ #return " ".join(difflib.unified_diff(text1.splitlines(1),text2.splitlines(1)))
+ return " ".join(difflib.context_diff(text1.splitlines(1),text2.splitlines(1)))
+ #return " ".join(difflib.ndiff(text1.splitlines(1),text2.splitlines(1)))
+
+class appli:
+ dict_reels={}
+ liste_simp_reel=[]
+
+class TestCase(unittest.TestCase):
+ def test01(self):
+ text="""
+MA=LIRE_MAILLAGE()
+"""
+ expected="""MA=LIRE_MAILLAGE()
+
+"""
+ txt = parseur_python.PARSEUR_PYTHON(text).get_texte(appli())
+ assert txt == expected, cdiff(expected,txt)
+
+ def test02(self):
+ text="""
+MA=LIRE_MAILLAGE()
+MB=LIRE_MAILLAGE()
+"""
+ expected="""MA=LIRE_MAILLAGE()
+
+MB=LIRE_MAILLAGE()
+
+"""
+ txt = parseur_python.PARSEUR_PYTHON(text).get_texte(appli())
+ assert txt == expected, cdiff(expected,txt)
+
+ def test03(self):
+ text="""
+a=1.2
+b=4
+c="aa"
+d=5 # parametre d
+MA=LIRE_MAILLAGE()
+MB=LIRE_MAILLAGE()
+"""
+ expected=r'''a = PARAMETRE(nom='a',valeur=1.2)
+b = PARAMETRE(nom='b',valeur=4)
+c = PARAMETRE(nom='c',valeur="aa")
+COMMENTAIRE(' parametre d\n')
+d = PARAMETRE(nom='d',valeur=5 )
+MA=LIRE_MAILLAGE()
+
+MB=LIRE_MAILLAGE()
+
+'''
+ txt = parseur_python.PARSEUR_PYTHON(text).get_texte(appli())
+ assert txt == expected, cdiff(expected,txt)
+
+ def test04(self):
+ text='''
+DEBUT();
+a = 1.0;
+b = 3;
+c = 15;
+d = 5;
+x = (1, 2);
+y = [3, 4];
+y2 = (y * 2);
+z = 'a';
+zz = 'v';
+t = a;
+v = """aaaa
+bbbb""";
+xx = ceil(sqrt(d));
+yy = cos(3.1);
+ax = sin(2);
+bx = cos(xx);
+cx = sin(xx);
+zy = y[1];
+FIN();
+'''
+ expected='''DEBUT();
+
+a = PARAMETRE(nom='a',valeur= 1.0)
+b = PARAMETRE(nom='b',valeur= 3)
+c = PARAMETRE(nom='c',valeur= 15)
+d = PARAMETRE(nom='d',valeur= 5)
+x = PARAMETRE(nom='x',valeur= (1, 2))
+y = PARAMETRE(nom='y',valeur= [3, 4])
+y2 = PARAMETRE(nom='y2',valeur= (y * 2))
+z = PARAMETRE(nom='z',valeur= 'a')
+zz = PARAMETRE(nom='zz',valeur= 'v')
+t = PARAMETRE(nom='t',valeur= a)
+v = PARAMETRE(nom='v',valeur= """aaaa
+bbbb""")
+xx = PARAMETRE(nom='xx',valeur= ceil(sqrt(d)))
+yy = PARAMETRE(nom='yy',valeur= cos(3.1))
+ax = PARAMETRE(nom='ax',valeur= sin(2))
+bx = PARAMETRE(nom='bx',valeur= cos(xx))
+cx = PARAMETRE(nom='cx',valeur= sin(xx))
+zy = PARAMETRE(nom='zy',valeur= y[1])
+FIN();
+
+'''
+ txt = parseur_python.PARSEUR_PYTHON(text).get_texte(appli())
+ assert txt == expected, cdiff(expected,txt)
OP10 = OPER(nom='OP10',op=10,sd_prod=concept,
a=SIMP(typ='I'),
c=SIMP(statut='o',typ='TXM',position='global',
- into=("TABLEAU","AGRAF"),
- ),
- b=FACT(statut='o',max='**',
- b_forme=BLOC(condition="c == 'TABLEAU'",
- d=SIMP(statut='f',typ='TXM'),
- ),
- ),
+ into=("TABLEAU","AGRAF"),
+ ),
+ b=FACT(statut='o',max='**',
+ b_forme=BLOC(condition="c == 'TABLEAU'",
+ d=SIMP(statut='f',typ='TXM'),
+ ),
+ ),
)
co1=OP10(a=1,c="TABLEAU",b=_F(d='rr'))
msg=co1.etape.report()
OP10 = OPER(nom='OP10',op=10,sd_prod=concept,
a=SIMP(typ='I'),
c=SIMP(statut='o',typ='TXM',position='global_jdc',
- into=("TABLEAU","AGRAF"),
- ),
+ into=("TABLEAU","AGRAF"),
+ ),
)
OP11 = OPER(nom='OP11',op=10,sd_prod=concept,
- b=FACT(statut='o',max='**',
- b_forme=BLOC(condition="c == 'TABLEAU'",
- d=SIMP(statut='f',typ='TXM'),
- ),
- ),
+ b=FACT(statut='o',max='**',
+ b_forme=BLOC(condition="c == 'TABLEAU'",
+ d=SIMP(statut='f',typ='TXM'),
+ ),
+ ),
)
co1=OP10(a=1,c="TABLEAU",)
co2=OP11(b=_F(d='rr'))
# coding=utf-8
-from Accas import SIMP,ASSD
+import types
+from Accas import SIMP,ASSD,geom,assd
class maillage(ASSD):pass
class maillage_sdaster(ASSD):pass
for valeur,valid in liste:
o=cata(valeur,'mcs',None)
self.assertEqual(o.isvalid(),valid,
- "erreur sur le test %s %s" % (valeur,valid)+'\n'+str(o.report()))
+ "erreur sur le test %s %s" % (valeur,valid)+'\n'+str(o.report()))
if valid: self.assertEqual(o.get_valeur(),valeur)
+
+ def test014(self):
+ cata=SIMP(typ=geom,statut='o')
+ liste=((1,1),
+ ("aaaa",1),
+ )
+ for valeur,valid in liste:
+ o=cata(valeur,'mcs',None)
+ self.assertEqual(o.isvalid(),valid,
+ "erreur sur le test %s %s" % (valeur,valid)+'\n'+str(o.report()))
+ if valid: self.assertEqual(o.get_valeur(),valeur)
+
+ def test015(self):
+ cata=SIMP(typ=assd,statut='o')
+ liste=((1,1),
+ ("aaaa",1),
+ )
+ for valeur,valid in liste:
+ o=cata(valeur,'mcs',None)
+ self.assertEqual(o.isvalid(),valid,
+ "erreur sur le test %s %s" % (valeur,valid)+'\n'+str(o.report()))
+ if valid: self.assertEqual(o.get_valeur(),valeur)
+
+ def test016(self):
+ class LongStr:
+ def __init__(self,min,max):
+ self.min=min
+ self.max=max
+ def __convert__(self,valeur):
+ if type(valeur) == types.StringType:
+ if self.min < len(valeur) < self.max:return valeur
+ return None
+
+ cata=SIMP(typ=LongStr(5,8),statut='o')
+ liste=(("aaaaaa",1),
+ ("aaaaaaa",1),
+ ("aaaaaaaaaaaaaaa",0),
+ ("aa",0),
+ )
+ for valeur,valid in liste:
+ o=cata(valeur,'mcs',None)
+ self.assertEqual(o.isvalid(),valid,
+ "erreur sur le test %s %s" % (valeur,valid)+'\n'+str(o.report()))
+ if valid: self.assertEqual(o.get_valeur(),valeur)
+
msg="erreur sur le test %s %s" % (valeur,valid)+'\n'+str(o.report())
self.assertEqual(o.isvalid(),valid,msg=msg)
- def futuretest003(self):
+ def test003(self):
cata=SIMP(statut='o',typ='R',max=3)
class mylist(list):pass
liste=((1,1),(mylist((0.,1.)),1), (1.,1),(mylist((0.,1.)),1), (('RI',1,0),0),
(1+0j,0), ("('RI',1,0)",0), ("toto",0), (None,0),
+ (mylist(("aaaa",1.)),0), (mylist((0.,1.,2.,3.)),0),
)
for valeur,valid in liste:
o=cata(valeur,'mcs',None)
# coding=utf-8
-from Accas import SIMP,ASSD
-from Extensions.param2 import Variable,cos
+from Accas import *
import unittest
+import compare
+OK="""Mot-clé simple : mcs
+Fin Mot-clé simple : mcs
+"""
+class myparam:
+ def __init__(self,valeur):
+ self.valeur=valeur
+ def __adapt__(self,protocol):
+ return protocol.adapt(self.valeur)
-class TestSimpCase(unittest.TestCase):
+from Noyau.N_VALIDATOR import listProto,TypeProtocol,IntoProtocol
+class param:
+ def __init__(self,valeur):
+ self.valeur=valeur
+
+def hasvaleur(obj,protocol,**args):
+ return protocol.adapt(obj.valeur)
+
+listProto.register(param,hasvaleur)
+TypeProtocol.register(param,hasvaleur)
+IntoProtocol.register(param,hasvaleur)
+
+
+class TestValidCase(unittest.TestCase):
def setUp(self):
pass
def tearDown(self):
pass
- def test001(self):
- a=Variable("n",25.6)
- self.assertEqual(repr(a),"Variable('n',25.6)")
- self.assertEqual(str(a),"n")
- self.assertEqual(a.eval(),25.6)
- b=-a
- self.assertEqual(str(b),"-(n)")
- self.assertEqual(b.eval(),-25.6)
- b=-a*100+3/2
- self.assertEqual(str(b),'((-(n) * 100) + 1)')
- self.assertEqual(b.eval(),-2559)
- b=a/10
- self.assertEqual(str(b),'(n / 10)')
- self.assertEqual(b.eval(),2.56)
- c=Variable('q',[1,a,3])
- d=c[1]/3
- self.assertEqual(str(d),'((q[1]) / 3)')
- self.assertEqual(d.eval(),25.6/3)
- f=cos(d)
- self.assertEqual(str(f),'cos(((q[1]) / 3))')
- self.assertEqual(f.eval(),-0.628288791022798)
- g=a**2
- self.assertEqual(str(g),'(n ** 2)')
- self.assertEqual(g.eval(),655.36000000000013)
- h=2*Variable("x",2)
- g=a**h
- self.assertEqual(str(g),'(n ** (2 * x))')
- self.assertEqual(g.eval(),429496.72960000008)
-
- def test003(self):
- cata=SIMP(statut='o',typ='R',max=3)
- liste=((1,1),(Variable('x',(0.,1.)),1), (1.,1),(Variable('x',(0.,1.)),1), (('RI',1,0),0),
- (1+0j,0), ("('RI',1,0)",0), ("toto",0), (None,0),
- )
- for valeur,valid in liste:
+ def _test(self,cata,liste):
+ for valeur,report in liste:
o=cata(valeur,'mcs',None)
- print o.val,o.valeur
- msg="erreur sur le test %s %s" % (valeur,valid)+'\n'+str(o.report())
- self.assertEqual(o.isvalid(),valid,msg=msg)
+ msg=""
+ rep=str(o.report())
+ valid=compare.check(rep,report)
+ if not valid:
+ msg="le rapport d'erreur est incorrect.\n valeur = %s\n expected =\n%s\n got =\n%s " % (valeur,report,rep)
+ print msg
+ self.assert_(valid,msg=msg)
+
+ def test010(self):
+ """Test de listes de string"""
+ cata=SIMP(statut='o',typ='TXM',min=1,max=6)
+ liste=(
+ ("aa",OK),("aaa",OK),
+ (("aaaa","aaaaa","axyzaa","bbbbaaa","zzz"),OK),
+ (("aaaa","aaaa","axyz","bbbb","zzz"),OK),
+ (("aaaa","axyz","bbbb","zzz"),OK),
+ ("aaaa",OK),("aaaaa",OK),
+ ("axyzaa",OK),("bbbbaaa",OK),
+ )
+ self._test(cata,liste)
+
+ def test011(self):
+ """Test de listes de string avec into"""
+ cata=SIMP(statut='o',typ='TXM',min=1,max=6,into =( "TUTU","TATA","CCCC"))
+ liste=(
+ ("TUTU",OK),("TATA",OK),
+ (("TUTU","TATA","CCCC"),OK),
+ (("TUTU","TATA","CCCC","TUTU","TATA","CCCC"),OK),
+ (("TUTU","TATA","CCCC","TUTU","TATA","CCCC","TUTU","TATA","CCCC"),
+"""Mot-clé simple : mcs
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ ! Nombre d'arguments de ('TUTU', 'TATA', 'CCCC', 'TUTU', 'TATA', 'CCCC', 'TUTU', !
+ ! 'TATA', 'CCCC') incorrect (min = 1, max = 6) !
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+Fin Mot-clé simple : mcs
+"""),
+ (("TUTU","TATA","CCCC","TUTU","TATA",1,"TUTU","TATA","CCCC"),
+"""Mot-clé simple : mcs
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ ! 1 n'est pas d'un type autorisé: ('TXM',) !
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ ! La valeur : 1 ne fait pas partie des choix possibles ('TUTU', 'TATA', 'CCCC') !
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ ! Nombre d'arguments de ('TUTU', 'TATA', 'CCCC', 'TUTU', 'TATA', 1, 'TUTU', 'TATA', !
+ ! 'CCCC') incorrect (min = 1, max = 6) !
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+Fin Mot-clé simple : mcs
+"""),
+ )
+ self._test(cata,liste)
+
+ def test016(self):
+ """Test de listes d'entiers """
+ cata=SIMP(statut='o',typ='I',min=1,max=6)
+ liste=( ((2,),OK),(None,
+"""Mot-clé simple : mcs
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ ! Mot-clé : mcs obligatoire non valorisé !
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ ! None n'est pas une valeur autorisée !
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+Fin Mot-clé simple : mcs
+"""),
+ ((1,3,5),OK),
+ ((2,4,6),OK),
+ ((2,4,4),OK),
+ (myparam((2,4,4)),OK),
+ (myparam((2,4.5,4)),
+"""Mot-clé simple : mcs
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ ! 4.5 n'est pas d'un type autorisé: ('I',) !
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+Fin Mot-clé simple : mcs
+"""),
+ (myparam((2,myparam(4.5),4)),
+"""Mot-clé simple : mcs
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ ! 4.5 n'est pas d'un type autorisé: ('I',) !
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+Fin Mot-clé simple : mcs
+"""),
+ (param((2,4,4)),OK),
+ (param((2,4.5,4)),
+"""Mot-clé simple : mcs
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ ! 4.5 n'est pas d'un type autorisé: ('I',) !
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+Fin Mot-clé simple : mcs
+"""),
+ (param((2,param(4.5),4)),
+"""Mot-clé simple : mcs
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ ! 4.5 n'est pas d'un type autorisé: ('I',) !
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+Fin Mot-clé simple : mcs
+"""),
+ )
+ self._test(cata,liste)
o=cata((1,2,'aa','bb',7,'cc'),'mcs1',None)
cr=o.report()
expected_cr="""Mot-clé simple : mcs1
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- ! 'aa' n'est pas d'un type autorisé !
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- ! Nombre d'arguments de (1, 2, 'aa', 'bb', 7, 'cc') incorrect pour mcs1 (min = 1, !
- ! max = 5) !
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ ! 'aa' n'est pas d'un type autorisé: ('I',) !
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ ! Nombre d'arguments de (1, 2, 'aa', 'bb', 7, 'cc') incorrect (min = 1, max = 5) !
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Fin Mot-clé simple : mcs1
"""
self.assertEqual(str(cr) , expected_cr,msg='Erreur :\n%s\n!=\n%s' % (str(cr),expected_cr))
o=cata((1,2,'aa','bb',7,'cc'),'mcs1',None)
cr=o.report()
expected_cr="""Mot-clé simple : mcs1
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- ! 'aa' n'est pas d'un type autorisé !
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ ! 'aa' n'est pas d'un type autorisé: ('I',) !
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Fin Mot-clé simple : mcs1
"""
self.assertEqual(str(cr) , expected_cr,msg='Erreur :\n%s\n!=\n%s' % (str(cr),expected_cr))
o=cata((1,2,7,3,4,5,6),'mcs1',None)
cr=o.report()
expected_cr="""Mot-clé simple : mcs1
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- ! La valeur : 3 n'est pas permise pour le mot-clé : mcs1 !
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ ! La valeur : 3 ne fait pas partie des choix possibles (1, 2, 7) !
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Fin Mot-clé simple : mcs1
"""
self.assertEqual(str(cr) , expected_cr,msg='Erreur :\n%s\n!=\n%s' % (str(cr),expected_cr))
o=cata((1,2,7,3,4,5,6),'mcs1',None)
cr=o.report()
expected_cr="""Mot-clé simple : mcs1
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- ! La valeur : 7 du mot-clé mcs1 est en dehors du domaine de validité [ 6 , 6 ] !
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ ! La valeur : 7 est en dehors du domaine de validité [ ** , 6 ] !
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Fin Mot-clé simple : mcs1
"""
self.assertEqual(str(cr) , expected_cr,msg='Erreur :\n%s\n!=\n%s' % (str(cr),expected_cr))
o=cata((1,2,7,3,4,5,6),'mcs1',None)
cr=o.report()
expected_cr="""Mot-clé simple : mcs1
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- ! La valeur : 7 du mot-clé mcs1 est en dehors du domaine de validité [ 6 , 6 ] !
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- ! Nombre d'arguments de (1, 2, 7, 3, 4, 5, 6) incorrect pour mcs1 (min = 1, max = !
- ! 6) !
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ ! La valeur : 7 est en dehors du domaine de validité [ ** , 6 ] !
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ ! Nombre d'arguments de (1, 2, 7, 3, 4, 5, 6) incorrect (min = 1, max = 6) !
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Fin Mot-clé simple : mcs1
"""
self.assertEqual(str(cr) , expected_cr,msg='Erreur :\n%s\n!=\n%s' % (str(cr),expected_cr))
o=cata((1,2,7,"aa",4,"bb",6),'mcs1',None)
cr=o.report()
expected_cr="""Mot-clé simple : mcs1
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- ! 'aa' n'est pas d'un type autorisé !
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- ! La valeur : 7 du mot-clé mcs1 est en dehors du domaine de validité [ 6 , 6 ] !
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- ! Nombre d'arguments de (1, 2, 7, 'aa', 4, 'bb', 6) incorrect pour mcs1 (min = 1, !
- ! max = 6) !
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ ! 'aa' n'est pas d'un type autorisé: ('R',) !
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ ! La valeur : 7 est en dehors du domaine de validité [ ** , 6 ] !
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ ! Nombre d'arguments de (1, 2, 7, 'aa', 4, 'bb', 6) incorrect (min = 1, max = 6) !
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Fin Mot-clé simple : mcs1
"""
self.assertEqual(str(cr) , expected_cr,msg='Erreur :\n%s\n!=\n%s' % (str(cr),expected_cr))
--- /dev/null
+# coding=utf-8
+from Accas import SIMP,ASSD
+from Extensions.param2 import Variable,cos
+
+import unittest
+
+class TestSimpCase(unittest.TestCase):
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def test001(self):
+ a=Variable("n",25.6)
+ self.assertEqual(repr(a),"Variable('n',25.6)")
+ self.assertEqual(str(a),"n")
+ self.assertEqual(a.eval(),25.6)
+ b=-a
+ self.assertEqual(str(b),"-(n)")
+ self.assertEqual(b.eval(),-25.6)
+ b=-a*100+3/2
+ self.assertEqual(str(b),'((-(n) * 100) + 1)')
+ self.assertEqual(b.eval(),-2559)
+ b=a/10
+ self.assertEqual(str(b),'(n / 10)')
+ self.assertEqual(b.eval(),2.56)
+ c=Variable('q',[1,a,3])
+ d=c[1]/3
+ self.assertEqual(str(d),'(q[1] / 3)')
+ self.assertEqual(d.eval(),25.6/3)
+ f=cos(d)
+ self.assertEqual(str(f),'cos((q[1] / 3))')
+ self.assertEqual(f.eval(),-0.628288791022798)
+ g=a**2
+ self.assertEqual(str(g),'(n ** 2)')
+ self.assertEqual(g.eval(),655.36000000000013)
+ h=2*Variable("x",2)
+ g=a**h
+ self.assertEqual(str(g),'(n ** (2 * x))')
+ self.assertEqual(g.eval(),429496.72960000008)
+
+ def test003(self):
+ """ Validation d'un parametre (instance de la classe Variable)
+ """
+ cata=SIMP(statut='o',typ='R',max=3)
+ liste=((1,1),(Variable('x',(0.,1.)),1), (1.,1),(Variable('x',(0.,1.)),1), (('RI',1,0),0),
+ (1+0j,0), ("('RI',1,0)",0), ("toto",0), (None,0),
+ )
+ for valeur,valid in liste:
+ o=cata(valeur,'mcs',None)
+ #print o.val,o.valeur
+ msg="erreur sur le test %s %s" % (valeur,valid)+'\n'+str(o.report())
+ self.assertEqual(o.isvalid(),valid,msg=msg)
+
+ def test004(self):
+ cata=SIMP(typ='C',statut='o',max=10)
+ liste=((1,1),("a",0), (1.,1),(('RI',1.,0.),1), (('RI',1,0),1), (1+0j,1),
+ (('RI',Variable('x',1.),0.),1),
+ (Variable('x',1.),1),
+ (Variable('x',1.)+0j,1),
+ ((Variable('x',1.)+0j,1.,0.,Variable('x',1.+2j),Variable('x',Variable('y',1.)+2j)),1),
+ ("('RI',1,0)",0), ("toto",0), (None,0),
+ (Variable('x',(1,2,2+5j)),1),
+ (Variable('x',(1,2,2+5j,5,6,7,8,9,10,11,12)),0),
+ (Variable('x',(1,2,2+5j,5,6,Variable('y',1+4j),8,9,10,11,12)),0),
+ (Variable('x',(1,"aaaa",2+5j,5,6,Variable('y',1+4j),8,9,10,11,12)),0),
+ (1+Variable('x',1.)*1j,1),
+ )
+ for valeur,valid in liste:
+ o=cata(valeur,'mcs',None)
+ self.assertEqual(o.isvalid(),valid,"erreur sur le test %s %s" % (valeur,valid)+'\n'+str(o.report()))
+ if valid: self.assertEqual(o.get_valeur(),valeur)
+
+ def test005(self):
+ t=Variable('t',None)
+ assert len(t) == 0
+
+ def test006(self):
+ cata=SIMP(statut='o',typ='R',val_min=0,val_max=3,max=5)
+ liste=((1,1),("a",0), (1.,1),(('RI',1.,0.),0), (('RI',1,0),0), (1+0j,0),
+ (('RI',Variable('x',1.),0.),0),
+ (Variable('x',1.),1),
+ (Variable('x',1.)+0j,0),
+ ((Variable('x',1.)+0j,1.,0.,Variable('x',1.+2j),Variable('x',Variable('y',1.)+2j)),0),
+ ("('RI',1,0)",0), ("toto",0), (None,0),
+ (Variable('x',(1,2,2+5j)),0),
+ (Variable('x',(1,2,2+5j,5,6,7,8,9,10,11,12)),0),
+ (Variable('x',(1,2,2+5j,5,6,Variable('y',1+4j),8,9,10,11,12)),0),
+ (Variable('x',(1,"aaaa",2+5j,5,6,Variable('y',1+4j),8,9,10,11,12)),0),
+ (1+Variable('x',1.)*1j,0),
+ (Variable('x',4.),0),
+ (4.,0),
+ )
+ for valeur,valid in liste:
+ o=cata(valeur,'mcs',None)
+ self.assertEqual(o.isvalid(),valid,"erreur sur le test %s %s" % (valeur,valid)+'\n'+str(o.report()))
+ if valid: self.assertEqual(o.get_valeur(),valeur)
import unittest
+class myparam:
+ def __init__(self,valeur):
+ self.valeur=valeur
+ def __adapt__(self,protocol):
+ return protocol.adapt(self.valeur)
+
+from Noyau.N_VALIDATOR import listProto,TypeProtocol,IntoProtocol
+class param:
+ def __init__(self,valeur):
+ self.valeur=valeur
+
+def hasvaleur(obj,protocol,**args):
+ return protocol.adapt(obj.valeur)
+
+listProto.register(param,hasvaleur)
+TypeProtocol.register(param,hasvaleur)
+IntoProtocol.register(param,hasvaleur)
+OrdList.register(param,hasvaleur)
+
class TestValidCase(unittest.TestCase):
def setUp(self):
pass
(("aaaa","axyz","bbbb","zzz"),1),
("aaaa",1),("aaaaa",1),
("axyzaa",0),("bbbbaaa",0),
+ (("aaaa",param("axyz"),"bbbb","zzz"),1),
)
self._test(cata,liste)
((3,1),0),
((1,3,2),0),
((1.,2.),0),
+ (myparam((1.,2.)),0),
+ (myparam((1,2)),1),
+ (myparam((1,2,3,4,5)),1),
+ (myparam((1,2,myparam(3),4,5)),1),
+ (myparam((1,2,myparam(6),4,5)),0),
+ (param((1.,2.)),0),
+ (param((1,2)),1),
+ (param((1,2,3,4,5)),1),
+ (param((1,2,myparam(3),4,5)),1),
+ (param((1,2,param(3),4,5)),1),
+ (param((1,2,param(6),4,5)),0),
)
self._test(cata,liste)
(("aaaa","axyz","bbbb","zzz"),1),
("aaaa",1),("aaaaa",1),
("axyzaa",1),("bbbbaaa",1),
+ (("aaaa",param("aaaaa"),"axyzaa","bbbbaaa","zzz"),1),
+ (("aaaa",param("aaaa"),"axyzaa","bbbbaaa","zzz"),0),
+ (("aaaa",myparam("aaaaa"),"axyzaa","bbbbaaa","zzz"),1),
+ (("aaaa",myparam("aaaa"),"axyzaa","bbbbaaa","zzz"),0),
)
self._test(cata,liste)
cata=SIMP(statut='o',typ='I',min=1,max=1,into =( 1,2,3),validators=PairVal())
liste=(
(2,1),(1,0),(3,0),(4,0),
+ (param(2),1),(param(3),0),
+ (myparam(2),1),(myparam(3),0),
)
self._test(cata,liste)
# coding=utf-8
from Accas import *
+from Extensions.param2 import Variable
import unittest
import compare
OK="""Mot-clé simple : mcs
Fin Mot-clé simple : mcs
"""
+from cata5 import entier
class TestValidCase(unittest.TestCase):
def setUp(self):
valid=compare.check(rep,report)
if not valid:
msg="le rapport d'erreur est incorrect.\n valeur = %s\n expected =\n%s\n got =\n%s " % (valeur,report,rep)
- print msg
self.assert_(valid,msg=msg)
def test001(self):
cata=SIMP(typ='TXM',validators=LongStr(3,5))
liste=(("aa",
"""Mot-clé simple : mcs
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- ! Mot-clé : mcs devrait avoir longueur de la chaine entre 3 et 5 !
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ ! Mot-clé mcs invalide : 'aa' n'est pas de la bonne longueur !
+ ! Critere de validite: longueur de la chaine entre 3 et 5 !
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Fin Mot-clé simple : mcs
"""),("aaa",OK),
("aaaa",OK),("aaaaa",OK),
("axyzaa",
"""Mot-clé simple : mcs
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- ! Mot-clé : mcs devrait avoir longueur de la chaine entre 3 et 5 !
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ ! Mot-clé mcs invalide : 'axyzaa' n'est pas de la bonne longueur !
+ ! Critere de validite: longueur de la chaine entre 3 et 5 !
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Fin Mot-clé simple : mcs
"""),("bbbbaaa",
"""Mot-clé simple : mcs
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- ! Mot-clé : mcs devrait avoir longueur de la chaine entre 3 et 5 !
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ ! Mot-clé mcs invalide : 'bbbbaaa' n'est pas de la bonne longueur !
+ ! Critere de validite: longueur de la chaine entre 3 et 5 !
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+Fin Mot-clé simple : mcs
+"""),
+ (Variable('x',"aaa"),OK),
+ (Variable('x',"aaaaaaaaaaaa"),
+"""Mot-clé simple : mcs
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ ! Mot-clé mcs invalide : 'aaaaaaaaaaaa' n'est pas de la bonne longueur !
+ ! Critere de validite: longueur de la chaine entre 3 et 5 !
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Fin Mot-clé simple : mcs
"""),
)
(("aaaa","aaaaa","axyzaa","bbbbaaa","zzz"),OK),
(("aaaa","aaaa","axyz","bbbb","zzz"),
"""Mot-clé simple : mcs
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- ! Mot-clé : mcs devrait avoir : pas de présence de doublon dans la liste !
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ ! Mot-clé mcs invalide : aaaa est un doublon !
+ ! Critere de validite: : pas de présence de doublon dans la liste !
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Fin Mot-clé simple : mcs
"""),
(("aaaa","axyz","bbbb","zzz"),OK),
("aaaa",OK),("aaaaa",OK),
("axyzaa",OK),("bbbbaaa",OK),
+ (("aaa",Variable('x',"bbb")),OK),
+ (("aaa",Variable('x',"aaa")),
+"""Mot-clé simple : mcs
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ ! Mot-clé mcs invalide : aaa est un doublon !
+ ! Critere de validite: : pas de présence de doublon dans la liste !
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+Fin Mot-clé simple : mcs
+"""),
+ (Variable('x',("aaa","bbb")),OK),
+ (Variable('x',("aaa","bbb","bbb")),
+"""Mot-clé simple : mcs
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ ! Mot-clé mcs invalide : bbb est un doublon !
+ ! Critere de validite: : pas de présence de doublon dans la liste !
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+Fin Mot-clé simple : mcs
+"""),
)
self._test(cata,liste)
(("TUTU","TATA","CCCC"),OK),
(("TUTU","TATA","CCCC","TUTU","TATA","CCCC"),
"""Mot-clé simple : mcs
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- ! Mot-clé : mcs devrait avoir : pas de présence de doublon dans la liste !
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ ! Mot-clé mcs invalide : TUTU est un doublon !
+ ! Critere de validite: : pas de présence de doublon dans la liste !
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Fin Mot-clé simple : mcs
"""),
(("TUTU","TATA","CCCC","TUTU","TATA","CCCC","TUTU","TATA","CCCC"),
"""Mot-clé simple : mcs
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! Nombre d'arguments de ('TUTU', 'TATA', 'CCCC', 'TUTU', 'TATA', 'CCCC', 'TUTU', !
- ! 'TATA', 'CCCC') incorrect pour mcs (min = 1, max = 6) !
+ ! 'TATA', 'CCCC') incorrect (min = 1, max = 6) !
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Fin Mot-clé simple : mcs
"""),
Fin Mot-clé simple : mcs
"""),((1,3,5),
"""Mot-clé simple : mcs
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- ! Mot-clé : mcs devrait avoir : pas de présence de doublon dans la liste !
- ! et valeur paire !
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ ! Mot-clé mcs invalide : (1, 3, 5) contient des valeurs non paires !
+ ! Critere de validite: : pas de présence de doublon dans la liste !
+ ! et valeur paire !
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Fin Mot-clé simple : mcs
"""),
((2,4,6),OK),
((2,4,4),
"""Mot-clé simple : mcs
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- ! Mot-clé : mcs devrait avoir : pas de présence de doublon dans la liste !
- ! et valeur paire !
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ ! Mot-clé mcs invalide : 4 est un doublon !
+ ! Critere de validite: : pas de présence de doublon dans la liste !
+ ! et valeur paire !
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Fin Mot-clé simple : mcs
"""),
)
self._test(cata,liste)
+
+ def test017(self):
+ """Test du validateur NoRepeat avec objet entier """
+ cata=SIMP(statut='o',typ='I',min=1,max=6,validators=NoRepeat())
+ i=entier()
+ liste=( (i,OK),
+ ((i,i),OK),
+ ((1,i,i),OK),
+ ((i,1,i,i),OK),
+ ((1,1,i,i),
+"""Mot-clé simple : mcs
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ ! Mot-clé mcs invalide : 1 est un doublon !
+ ! Critere de validite: : pas de présence de doublon dans la liste !
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+Fin Mot-clé simple : mcs
+""" ),
+ )
+ self._test(cata,liste)
+
+ def test018(self):
+ """Test du validateur OrdList('croissant') avec objet entier """
+ cata=SIMP(statut='o',typ='I',min=1,max=6,validators=OrdList('croissant'))
+ i=entier()
+ liste=( (i,OK),
+ ((i,i),OK),
+ ((1,i,i),OK),
+ ((i,1,i,i),OK),
+ ((2,1,i,i),
+"""Mot-clé simple : mcs
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ ! Mot-clé mcs invalide : (2, 1, <concept entier>, <concept entier>) n'est pas par !
+ ! valeurs croissantes !
+ ! Critere de validite: liste croissant !
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+Fin Mot-clé simple : mcs
+"""),
+ )
+ self._test(cata,liste)
+
+ def test019(self):
+ """Test du validateur Compulsory avec objet entier """
+ cata=SIMP(statut='o',typ='I',min=1,max=6,validators=Compulsory((5,6,7)))
+ i=entier()
+ liste=( ((5,6,7),OK),
+ ((5,6,7,i),OK),
+ ((i,5,6,7,i),OK),
+ ((i,5,7,i),
+"""Mot-clé simple : mcs
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ ! Mot-clé mcs invalide : (<concept entier>, 5, 7, <concept entier>) ne contient !
+ ! pas les elements obligatoires : [6] !
+ ! Critere de validite: valeur (5, 6, 7) obligatoire !
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+Fin Mot-clé simple : mcs
+""" ),
+ )
+ self._test(cata,liste)
+
+ def test020(self):
+ """Test du validateur NoRepeat OU Compulsory avec objet entier """
+ cata=SIMP(statut='o',typ='I',min=1,max=6,validators=(NoRepeat(),Compulsory((5,6,7))))
+ i=entier()
+ liste=( ((5,6,7),OK),
+ ((5,6,7,i),OK),
+ ((i,5,6,7,i),OK),
+ ((i,5,7,i), OK ),
+ )
+ self._test(cata,liste)
+
+ def test021(self):
+ """Test du validateur NoRepeat ET Compulsory avec objet entier """
+ cata=SIMP(statut='o',typ='I',min=1,max=6,validators=[NoRepeat(),Compulsory((5,6,7))])
+ i=entier()
+ liste=( ((5,6,7),OK),
+ ((5,6,7,i),OK),
+ ((i,5,6,7,i),OK),
+ ((i,5,7,i),
+"""Mot-clé simple : mcs
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ ! Mot-clé mcs invalide : (<concept entier>, 5, 7, <concept entier>) ne contient !
+ ! pas les elements obligatoires : [6] !
+ ! Critere de validite: : pas de présence de doublon dans la liste !
+ ! et valeur (5, 6, 7) obligatoire !
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+Fin Mot-clé simple : mcs
+""" ),
+ )
+ self._test(cata,liste)
+
+ def test022(self):
+ """Test du validateur Compulsory(5,6,7) ET OrdList('croissant') avec objet entier """
+ cata=SIMP(statut='o',typ='I',min=1,max=6,validators=[Compulsory((5,6,7)),OrdList('croissant')])
+ i=entier()
+ liste=( ((5,6,7),OK),
+ ((5,6,7,i),OK),
+ ((i,5,6,7,i),OK),
+ ((i,5,7,i),
+"""Mot-clé simple : mcs
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ ! Mot-clé mcs invalide : (<concept entier>, 5, 7, <concept entier>) ne contient !
+ ! pas les elements obligatoires : [6] !
+ ! Critere de validite: valeur (5, 6, 7) obligatoire !
+ ! et liste croissant !
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+Fin Mot-clé simple : mcs
+""" ),
+ ((i,5,7,i,6),
+"""Mot-clé simple : mcs
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ ! Mot-clé mcs invalide : (<concept entier>, 5, 7, <concept entier>, 6) n'est pas !
+ ! par valeurs croissantes !
+ ! Critere de validite: valeur (5, 6, 7) obligatoire !
+ ! et liste croissant !
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+Fin Mot-clé simple : mcs
+""" ),
+ )
+ self._test(cata,liste)
+
+ def test023(self):
+ """Test du validateur Compulsory(5,6,7) ET OrdList('croissant') ET NoRepeat() avec objet entier """
+ cata=SIMP(statut='o',typ='I',min=1,max=6,validators=[Compulsory((5,6,7)),OrdList('croissant'),NoRepeat()])
+ i=entier()
+ liste=( ((5,6,7),OK),
+ ((5,6,7,i),OK),
+ ((i,5,6,7,i),OK),
+ ((i,5,7,i),
+"""Mot-clé simple : mcs
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ ! Mot-clé mcs invalide : (<concept entier>, 5, 7, <concept entier>) ne contient !
+ ! pas les elements obligatoires : [6] !
+ ! Critere de validite: valeur (5, 6, 7) obligatoire !
+ ! et liste croissant !
+ ! et : pas de présence de doublon dans la liste !
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+Fin Mot-clé simple : mcs
+""" ),
+ ((i,5,7,i,6),
+"""Mot-clé simple : mcs
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ ! Mot-clé mcs invalide : (<concept entier>, 5, 7, <concept entier>, 6) n'est pas !
+ ! par valeurs croissantes !
+ ! Critere de validite: valeur (5, 6, 7) obligatoire !
+ ! et liste croissant !
+ ! et : pas de présence de doublon dans la liste !
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+Fin Mot-clé simple : mcs
+""" ),
+ ((i,5,i,6,7,7),
+"""Mot-clé simple : mcs
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ ! Mot-clé mcs invalide : 7 est un doublon !
+ ! Critere de validite: valeur (5, 6, 7) obligatoire !
+ ! et liste croissant !
+ ! et : pas de présence de doublon dans la liste !
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+Fin Mot-clé simple : mcs
+""" ),
+ ((i,5,6,7,i,8),OK),
+ )
+ self._test(cata,liste)
--- /dev/null
+# coding=utf-8
+
+import os
+import unittest
+import difflib
+import compare
+
+import prefs
+from Editeur import appli
+
+def add_param(j,pos,nom,valeur):
+ co=j.addentite("PARAMETRE",pos)
+ co.set_nom(nom)
+ co.set_valeur(valeur)
+ return co
+
+def add_mcsimp(obj,nom,valeur):
+ mcs=obj.get_child(nom,restreint='oui')
+ if mcs is None:
+ pos=obj.get_index_child(nom)
+ mcs=obj.addentite(nom,pos)
+ mcs.set_valeur(mcs.eval_val(valeur))
+ return mcs
+
+def cdiff(text1,text2):
+ return " ".join(difflib.context_diff(text1.splitlines(1),text2.splitlines(1)))
+
+class TestCase(unittest.TestCase):
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ CONTEXT.unset_current_step()
+
+ def test000(self):
+ """ Test de construction du fichier de commandes az.comm de zero"""
+
+ app=appli.STANDALONE(version='v6')
+ j=app.newJDC()
+# commande DEBUT
+ co=j.addentite("DEBUT",0)
+# commande FIN
+ co=j.addentite("FIN",1)
+# parametres
+ pos=0
+ pos=pos+1
+ co=add_param(j,pos,"P1","9.8")
+ pos=pos+1
+ co=add_param(j,pos,"P2","8.8")
+ pos=pos+1
+ co=add_param(j,pos,"P3","7")
+ pos=pos+1
+ co=add_param(j,pos,"P5","P3*P1")
+ pos=pos+1
+ co=add_param(j,pos,"P6","P1-3")
+ pos=pos+1
+ co=add_param(j,pos,"P4","[2,3,4]")
+# commentaire
+ pos=pos+1
+ co=j.addentite("COMMENTAIRE",pos)
+ co.set_valeur("Pas trouve shellpanel")
+# commande LIRE_MAILLAGE
+ pos=pos+1
+ co=j.addentite("LIRE_MAILLAGE",pos)
+ test,mess=co.nomme_sd("MAILLA2")
+ mcs=co.addentite("UNITE")
+ valeur=mcs.eval_val("P4[1]")
+ test=mcs.set_valeur(valeur)
+# formule
+ pos=pos+1
+ co=j.addentite("FORMULE",pos)
+ co.update(("aaa","REEL","a+z","(a,z)"))
+# commande LIRE_MAILLAGE
+ pos=pos+1
+ ma=co=j.addentite("LIRE_MAILLAGE",pos)
+ test,mess=co.nomme_sd("MAIL")
+ mcs=co.addentite("UNITE")
+ valeur,validite=mcs.eval_valeur("P3")
+ test=mcs.set_valeur(valeur)
+#
+ pos=pos+1
+ co=j.addentite("COMMENTAIRE",pos)
+ co.set_valeur(" 'LIRE_MAILLAGE', 'UNITE' --> uniquebasepanel")
+# formule
+ pos=pos+1
+ co=j.addentite("FORMULE",pos)
+ co.update(("az","REEL","aaaaa","(ae,inst)"))
+# commande AFFE_MODELE
+ pos=pos+1
+ co=j.addentite("AFFE_MODELE",pos)
+ mcs=co.get_child("MAILLAGE")
+ valeur,validite=mcs.eval_valeur("MAIL")
+ assert valeur == ma.sd
+ test=mcs.set_valeur(valeur)
+ assert valeur == co["MAILLAGE"]
+ mcf=co.addentite("AFFE")
+ mcs=mcf[0].get_child("PHENOMENE")
+ valeur=mcs.eval_val_item('MECANIQUE')
+ assert valeur=='MECANIQUE',str(valeur)
+ test=mcs.set_valeur(valeur)
+ assert mcf["PHENOMENE"] == 'MECANIQUE'
+ mcs=mcf[0].get_child("b_mecanique").get_child("MODELISATION")
+ mcs.set_valeur(mcs.eval_val_item('DIS_T'))
+ assert mcf["MODELISATION"] == 'DIS_T'
+ mcs=add_mcsimp(mcf[0],"GROUP_MA",('RESSORT','eee',))
+
+ mcf=co.addentite("AFFE")
+ mcs=mcf[1].get_child("PHENOMENE")
+ mcs.set_valeur(mcs.eval_val_item('MECANIQUE'))
+ mcs=mcf[1].get_child("b_mecanique").get_child("MODELISATION")
+ mcs.set_valeur(mcs.eval_val_item('DIS_T'))
+ mcs=add_mcsimp(mcf[1],"GROUP_MA",'MASSES')
+
+ mcf=co.addentite("AFFE")
+ mcs=mcf[2].get_child("PHENOMENE")
+ mcs.set_valeur(mcs.eval_val_item('ACOUSTIQUE'))
+ mcs=mcf[2].get_child("b_acoustique").get_child("MODELISATION")
+ mcs.set_valeur(mcs.eval_val_item('PLAN'))
+ #mcs=add_mcsimp(mcf[2],"GROUP_NO",'GNP3,GNP5,GNP6,GNP7,GNP8,GNP9,GNP10,GNP11,GNP12')
+ mcs=add_mcsimp(mcf[2],"GROUP_NO","'GNP3','GNP5','GNP6','GNP7','GNP8','GNP9','GNP10','GNP11','GNP12'")
+
+ co.nomme_sd("AFFE1")
+# commande AFFE_MODELE
+ pos=pos+1
+ co=j.addentite("AFFE_MODELE",pos)
+ mcs=co.get_child("MAILLAGE")
+ mcs.set_valeur(mcs.eval_val("MAIL"))
+
+ mcf=co.addentite("AFFE")
+ mcs=mcf[0].get_child("PHENOMENE")
+ valeur=mcs.eval_val_item('MECANIQUE')
+ test=mcs.set_valeur(valeur)
+ mcs=mcf[0].get_child("b_mecanique").get_child("MODELISATION")
+ mcs.set_valeur(mcs.eval_val_item('DIS_T'))
+ mcs=add_mcsimp(mcf[0],"GROUP_MA",'RESSORT')
+
+ mcf=co.addentite("AFFE")
+ mcs=mcf[1].get_child("PHENOMENE")
+ mcs.set_valeur(mcs.eval_val_item('MECANIQUE'))
+ mcs=mcf[1].get_child("b_mecanique").get_child("MODELISATION")
+ mcs.set_valeur(mcs.eval_val_item('DIS_T'))
+ mcs=add_mcsimp(mcf[1],"GROUP_MA",'MASSES')
+
+ mcf=co.addentite("AFFE")
+ mcs=mcf[2].get_child("PHENOMENE")
+ mcs.set_valeur(mcs.eval_val_item('THERMIQUE'))
+ mcs=mcf[2].get_child("b_thermique").get_child("MODELISATION")
+ mcs.set_valeur(mcs.eval_val_item('COQUE'))
+ mcs=add_mcsimp(mcf[2],"TOUT",'OUI')
+
+ co.nomme_sd("MOD")
+#CARA=AFFE_CARA_ELEM(MODELE=MOD,
+# POUTRE=_F(GROUP_MA='MA',
+# SECTION='CERCLE',
+# CARA='R',
+# VALE=(3.0,P6,),),);
+ pos=pos+1
+ co=j.addentite("AFFE_CARA_ELEM",pos)
+ mcs=co.get_child("MODELE")
+ mcs.set_valeur(mcs.eval_val("MOD"))
+ mcf=co.addentite("POUTRE")
+ mcs=mcf[0].get_child("SECTION")
+ mcs.set_valeur(mcs.eval_val('CERCLE'))
+ assert mcf[0]["SECTION"] == 'CERCLE'
+ mcs=add_mcsimp(mcf[0],"GROUP_MA",'MA')
+ mcs=mcf[0].get_child("b_cercle").get_child("CARA")
+ mcs.set_valeur(mcs.eval_val('R'))
+ mcs=mcf[0].get_child("b_cercle").get_child("VALE")
+ mcs.set_valeur(mcs.eval_val('3.0,P6'))
+ co.nomme_sd("CARA")
+# commentaire
+ pos=pos+1
+ co=j.addentite("COMMENTAIRE",pos)
+ text=""" 'AFFE_MODELE', 'MAILLAGE' --> uniqueassdpanel
+ AFFE_MODELE', 'AFFE', 'GROUP_MA' --> plusieursbasepanel
+ 'AFFE_MODELE', 'AFFE', 'PHENOMENE' --> uniqueintopanel
+ 'AFFE_MODELE', 'AFFE', 'b_mecanique'--> plusieursintopanel"""
+ co.set_valeur(text)
+#F1=DEFI_FONCTION(NOM_PARA='DX',
+# VALE=(5.0,3.0,P4[1],P3,),);
+ pos=pos+1
+ co=j.addentite("DEFI_FONCTION",pos)
+ mcs=co.get_child("NOM_PARA")
+ mcs.set_valeur(mcs.eval_val("DX"))
+ mcs=co.addentite("VALE")
+ mcs.set_valeur(mcs.eval_val("5.0,3.0,P4[1],P3"))
+ co.nomme_sd("F1")
+#F3=DEFI_FONCTION(NOM_PARA='DRX',
+# VALE_C=(5.0,7.0,9.0,9.0,8.0,7.0,),);
+ pos=pos+1
+ co=j.addentite("DEFI_FONCTION",pos)
+ mcs=co.get_child("NOM_PARA")
+ mcs.set_valeur(mcs.eval_val("DRX"))
+ mcs=co.addentite("VALE_C")
+ mcs.set_valeur(mcs.eval_val("5.0,7.0,9.0,9.0,8.0,7.0"))
+ co.nomme_sd("F3")
+# commentaire
+ pos=pos+1
+ co=j.addentite("COMMENTAIRE",pos)
+ co.set_valeur(" 'DEFI_FONCTION', 'VALE' --> fonctionpanel ")
+#MATER2=DEFI_MATERIAU(ELAS=_F(E=100000000000.0,
+# NU=0.0,),
+# ECRO_ASYM_LINE=_F(DC_SIGM_EPSI=0.0,
+# SY_C=200000000.0,
+# DT_SIGM_EPSI=0.0,
+# SY_T=50000000.0,),);
+ pos=pos+1
+ co=j.addentite("DEFI_MATERIAU",pos)
+ mcf=co.addentite("ELAS")
+ mcs=mcf[0].get_child("E")
+ mcs.set_valeur(mcs.eval_val("100000000000.0"))
+ mcs=mcf[0].get_child("NU")
+ mcs.set_valeur(mcs.eval_val("0.0"))
+ mcf=co.addentite("ECRO_ASYM_LINE")
+ mcs=mcf[0].get_child("DC_SIGM_EPSI")
+ mcs.set_valeur(mcs.eval_val("0.0"))
+ mcs=mcf[0].get_child("DT_SIGM_EPSI")
+ mcs.set_valeur(mcs.eval_val("0.0"))
+ mcs=mcf[0].get_child("SY_C")
+ mcs.set_valeur(mcs.eval_val("200000000.0"))
+ mcs=mcf[0].get_child("SY_T")
+ mcs.set_valeur(mcs.eval_val("50000000.0"))
+ co.nomme_sd("MATER2")
+#PS1=DEFI_PARA_SENSI(VALE=1.0,);
+#PS2=DEFI_PARA_SENSI(VALE=1.0,);
+#PS3=DEFI_PARA_SENSI(VALE=1.0,);
+ pos=pos+1
+ co=j.addentite("DEFI_PARA_SENSI",pos)
+ mcs=co.get_child("VALE")
+ mcs.set_valeur(mcs.eval_val("1.0"))
+ co.nomme_sd("PS1")
+ pos=pos+1
+ co=j.addentite("DEFI_PARA_SENSI",pos)
+ mcs=co.get_child("VALE")
+ mcs.set_valeur(mcs.eval_val("1.0"))
+ co.nomme_sd("PS2")
+ pos=pos+1
+ co=j.addentite("DEFI_PARA_SENSI",pos)
+ mcs=co.get_child("VALE")
+ mcs.set_valeur(mcs.eval_val("1.0"))
+ co.nomme_sd("PS3")
+#CHMAT2=AFFE_MATERIAU(MAILLAGE=MAIL,
+# AFFE=_F(TOUT='OUI',
+# MATER=MATER2,),);
+ pos=pos+1
+ co=j.addentite("AFFE_MATERIAU",pos)
+ add_mcsimp(co,"MAILLAGE","MAIL")
+ mcf=co.get_child("AFFE")
+ add_mcsimp(mcf[0],"TOUT","OUI")
+ add_mcsimp(mcf[0],"MATER","MATER2")
+ co.nomme_sd("CHMAT2")
+#AAAZ=AFFE_CHAR_THER(MODELE=AFFE1,
+# TEMP_IMPO=_F(TOUT='OUI',
+# TEMP=0.0,),);
+ pos=pos+1
+ co=j.addentite("AFFE_CHAR_THER",pos)
+ add_mcsimp(co,"MODELE","AFFE1")
+ mcf=co.addentite("TEMP_IMPO")
+ add_mcsimp(mcf[0],"TOUT","OUI")
+ add_mcsimp(mcf[0],"TEMP","0.0")
+ co.nomme_sd("AAAZ")
+#TH1=THER_LINEAIRE(MODELE=AFFE1,
+# CHAM_MATER=CHMAT2,
+# EXCIT=_F(CHARGE=AAAZ,),
+# SENSIBILITE=(PS1,PS2,),);
+ pos=pos+1
+ co=j.addentite("THER_LINEAIRE",pos)
+ add_mcsimp(co,"MODELE","AFFE1")
+ add_mcsimp(co,"CHAM_MATER","CHMAT2")
+ mcf=co.get_child("EXCIT")
+ add_mcsimp(mcf[0],"CHARGE","AAAZ")
+ add_mcsimp(co,"SENSIBILITE","PS1,PS2")
+ co.nomme_sd("TH1")
+# commentaire
+ pos=pos+1
+ co=j.addentite("COMMENTAIRE",pos)
+ co.set_valeur(" 'THER_LINEAIRE', 'SENSIBILITE' --> plusieursassdpanel")
+#ACA1=AFFE_CHAR_ACOU(MODELE=AFFE1,
+# PRES_IMPO=_F(TOUT='OUI',
+# PRES=('RI',3.0,3.0,),),);
+ pos=pos+1
+ co=j.addentite("AFFE_CHAR_ACOU",pos)
+ add_mcsimp(co,"MODELE","AFFE1")
+ mcf=co.addentite("PRES_IMPO")
+ add_mcsimp(mcf[0],"TOUT","OUI")
+ add_mcsimp(mcf[0],"PRES","'RI',3.0,3.0")
+ co.nomme_sd("ACA1")
+# commentaire
+ pos=pos+1
+ co=j.addentite("COMMENTAIRE",pos)
+ co.set_valeur(" 'AFFE_CHAR_ACOU', 'PRES_IMPO', 'PRES' --> uniquecomppanel")
+
+# 'AFFE_CHAR_ACOU', 'PRES_IMPO', 'PRES' --> uniquecomppanel
+
+#MACRO_MATR_ASSE(MODELE=AFFE1,
+# NUME_DDL=CO('DDL1'),
+# MATR_ASSE=_F(MATRICE=CO('MAT1'),
+# OPTION='RIGI_THER',),);
+ pos=pos+1
+ co=j.addentite("MACRO_MATR_ASSE",pos)
+ add_mcsimp(co,"MODELE","AFFE1")
+ mcs=co.get_child("NUME_DDL")
+ mcs.set_valeur_co('DDL1')
+ mcf=co.get_child("MATR_ASSE")
+ add_mcsimp(mcf[0],"OPTION","RIGI_THER")
+ mcs=mcf[0].get_child("MATRICE")
+ mcs.set_valeur_co('MAT1')
+# commentaire
+ pos=pos+1
+ co=j.addentite("COMMENTAIRE",pos)
+ co.set_valeur(" 'MACRO_MATR_ASSE', 'MATR_ASSE', 'MATRICE' --> uniquesdcopanel")
+
+ assert j.isvalid(),j.report()
+
+ text1=app.get_text_JDC(j,'python')
+ file=os.path.join(prefs.INSTALLDIR,"Tests/testelem/azv6.comm")
+ f=open(file)
+ text2=f.read()
+ f.close()
+ assert text1 == text2 , cdiff(text1,text2)
+
+ def test001(self):
+ """ Test de construction d'un fichier de commandes avec DEFI_LIST_REEL, fonction et parametre de zero"""
+
+ app=appli.STANDALONE(version='v6')
+ j=app.newJDC()
+# commande DEBUT
+ co=j.addentite("DEBUT",0)
+# commande FIN
+ co=j.addentite("FIN",1)
+#parametre
+ pos=0
+ pos=pos+1
+ co=add_param(j,pos,"P1","9.8")
+ pos=pos+1
+ co=add_param(j,pos,"P2","sin(P1)")
+# formule
+ pos=pos+1
+ co=j.addentite("FORMULE",pos)
+ co.update(("aaa","REEL","a+z","(a,z)"))
+#parametre de formule
+ pos=pos+1
+ co=add_param(j,pos,"P3","aaa(P1,2.)")
+#commande defi_list_reel
+ pos=pos+1
+ co=j.addentite("DEFI_LIST_REEL",pos)
+ add_mcsimp(co,"VALE","1.,2.,3.")
+ co.nomme_sd("LI1")
+#commande defi_list_reel
+ pos=pos+1
+ co=j.addentite("DEFI_LIST_REEL",pos)
+ add_mcsimp(co,"VALE","sin(1.)")
+ co.nomme_sd("LI2")
+#commande defi_list_reel
+ pos=pos+1
+ co=j.addentite("DEFI_LIST_REEL",pos)
+ add_mcsimp(co,"VALE","aaa(1.,2.)")
+ co.nomme_sd("LI3")
+#commande defi_list_reel
+ pos=pos+1
+ co=j.addentite("DEFI_LIST_REEL",pos)
+ add_mcsimp(co,"VALE","sin(1.,2)")
+ co.nomme_sd("LI4")
+#commande defi_list_reel
+ pos=pos+1
+ co=j.addentite("DEFI_LIST_REEL",pos)
+ add_mcsimp(co,"VALE","aaa(1.)")
+ co.nomme_sd("LI5")
+#commande defi_list_reel
+ pos=pos+1
+ co=j.addentite("DEFI_LIST_REEL",pos)
+ add_mcsimp(co,"VALE","1,sin(1.),2")
+ co.nomme_sd("LI6")
+
+ expected="""DEBUT CR validation : SansNom
+ Etape : DEFI_LIST_REEL ligne : ...
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ ! Concept retourné non défini !
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ Mot-clé simple : VALE
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ ! 'sin(1.,2)' n'est pas d'un type autorisé: ('R',) !
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ Fin Mot-clé simple : VALE
+ Fin Etape : DEFI_LIST_REEL
+ Etape : DEFI_LIST_REEL ligne : ...
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ ! Concept retourné non défini !
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ Mot-clé simple : VALE
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ ! 'aaa(1.)' n'est pas d'un type autorisé: ('R',) !
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ Fin Mot-clé simple : VALE
+ Fin Etape : DEFI_LIST_REEL
+FIN CR validation :SansNom
+"""
+ msg=str( j.report())
+ assert compare.check(expected,msg),cdiff(expected,msg)
--- /dev/null
+DEBUT()
+MA=LIRE_MAILLAGE()
+FIN()
--- /dev/null
+# -*- coding: utf-8 -*-
+
+root=None
+jdcdisplay=None
+
+class UnKnownNode(Exception):pass
+
+def init_common(r,j):
+ global root,jdcdisplay
+ root=r
+ jdcdisplay=j
+
+def KP_return():
+ root.event_generate("<Return>")
+ root.update()
+
+def delete_node(panel):
+ panel.node.delete()
+
+def uncomment_command(panel):
+ panel.bouton_unc.invoke()
+ root.update()
+ panel=jdcdisplay.panel_courant
+ return panel
+
+def comment_command(panel):
+ panel.nb.selectpage('Commentaire')
+ panel.comment_commande()
+ root.update()
+ panel=jdcdisplay.panel_courant
+ return panel
+
+def create_mocle(nom,panel):
+ panel.nb.selectpage('Mocles')
+ panel.Liste.afficheMot(nom)
+ root.update()
+ label=panel.Liste.dico_labels[nom]
+ label.event_generate("<Enter>")
+ root.event_generate("<KeyPress-Return>")
+ root.update()
+ return jdcdisplay.panel_courant
+
+def change_commandcomm(text,panel):
+ panel.widget_text.setvalue(text)
+ root.update()
+ panel.bouton_val.invoke()
+ return panel
+
+def create_command(nom,panel):
+ panel.nb.selectpage('Commande')
+ root.update()
+ panel.command_entry.setentry(nom)
+ panel.command_entry.component('entry').focus_set()
+ root.event_generate("<Return>")
+ root.update()
+ label=panel.liste_command.dico_labels[nom]
+ label.event_generate("<Enter>")
+ label.event_generate("<Return>")
+ #root.event_generate("<Return>")
+ root.update()
+ panel=jdcdisplay.panel_courant
+ return panel
+
+def create_comment(text,panel):
+ panel.nb.selectpage('Commentaire')
+ panel.ajout_commentaire()
+ root.update()
+ panel=jdcdisplay.panel_courant
+ panel.widget_text.setvalue(text)
+ root.update()
+ panel.bouton_val.invoke()
+ #panel.change_valeur()
+ return panel
+
+def create_param(nom,valeur,panel):
+ panel.nb.selectpage('Commentaire')
+ panel.ajout_parametre()
+ root.update()
+ panel=jdcdisplay.panel_courant
+ if nom:
+ panel.entry_nom.delete(0,"end")
+ panel.entry_nom.insert(0,nom)
+ panel.entry_nom.event_generate("<Return>")
+ panel.entry_val.delete(0,"end")
+ panel.entry_val.insert(0,valeur)
+ panel.entry_val.event_generate("<Return>")
+ panel.bouton_val.invoke()
+ root.update()
+ return panel
+
+def create_formule(nom,args,expr,panel):
+ panel=create_command("FORMULE",panel)
+ panel.entry_nom.delete(0,"end")
+ panel.entry_nom.insert(0,nom)
+ panel.entry_nom.event_generate("<Return>")
+ panel.entry_arg.delete(0,"end")
+ panel.entry_arg.insert(0,args)
+ panel.entry_arg.event_generate("<Return>")
+ panel.entry_exp.delete(0,"end")
+ panel.entry_exp.insert(0,expr)
+ panel.entry_exp.event_generate("<Return>")
+ panel.bouton_val.invoke()
+ root.update()
+ return panel
+
+def nomme_concept(nom,panel):
+ panel.nb.selectpage('Concept')
+ root.update()
+ panel._any.delete(0,"end")
+ panel._any.insert(0,nom)
+ panel.but_ok.invoke()
+ root.update()
+ return jdcdisplay.panel_courant
+
+def select_mcf(nom,ind,node):
+ panel=select_child(nom,node)
+ parent=panel.node
+ parent.expand()
+ parent.select_next(ind)
+ panel=jdcdisplay.panel_courant
+ panel.node.expand()
+ return panel
+
+def select_child(nom,node):
+ """node est le parent dont on veut le fils nom"""
+ for n in node.children:
+ if n.item.nom == nom:
+ n.select()
+ root.update()
+ panel= jdcdisplay.panel_courant
+ panel.node.expand()
+ return panel
+ raise UnKnownNode(nom)
+
+def select_node(node):
+ node.select()
+ node.expand()
+ root.update()
+ return jdcdisplay.panel_courant
+
+def choose_valeur(valeur,panel):
+ panel.Liste_choix.afficheMot(valeur)
+ root.update()
+ label=panel.Liste_choix.dico_labels[valeur]
+ label.event_generate("<Button-1>")
+ label.event_generate("<Return>")
+ root.update()
+
+def choose_sdco(valeur,panel):
+ i = list(panel.listbox.get(0, 'end')).index(valeur)
+ panel.listbox.component("listbox").selection_set(i)
+ panel.listbox.component("listbox").focus_set()
+ panel.listbox.component("listbox").event_generate("<Return>")
+ root.update()
+
+def choose_assd(valeur,panel):
+ i = list(panel.listbox.get(0, 'end')).index(valeur)
+ panel.listbox.component("listbox").selection_set(i)
+ panel.but_val.invoke()
+ root.update()
+
+def set_valeur(valeur,panel):
+ panel.entry.delete(0,"end")
+ panel.entry.insert(0,valeur)
+ panel.entry.event_generate("<Return>")
+ root.update()
+
+def set_sdco(valeur,panel):
+ panel.entry_co.delete(0,"end")
+ panel.entry_co.insert(0,valeur)
+ panel.entry_co.event_generate("<Return>")
+ root.update()
+
+def set_complexe(valeur,panel):
+ panel.entry3.setentry(valeur)
+ panel.entry3.component('entry').focus_set()
+ panel.entry3.event_generate("<Return>")
+ root.update()
+
+def add_valeur_into(valeur,panel):
+ label=panel.Liste_choix.dico_labels[valeur]
+ label.event_generate("<1>")
+ panel.bouton_add.invoke()
+ root.update()
+
+def add_valeur(valeur,panel):
+ panel.entry.delete(0,"end")
+ panel.entry.insert(0,valeur)
+ panel.entry.event_generate("<Return>")
+ root.update()
+
+def valider_valeur(panel):
+ panel.bouton_accepter.invoke()
+ root.update()
+
+def copier_coller():
+ root.event_generate("<Control-c>")
+ root.event_generate("<Control-v>")
+ root.update()
+ return jdcdisplay.panel_courant
+
--- /dev/null
+# -*- coding: utf-8 -*-
+# Modules Python
+import os
+import unittest
+import difflib
+import compare
+import sys
+import Tkinter
+
+# Modules Eficas
+import prefs
+from Editeur import eficas_go
+from Editeur import splash
+from Editeur import session
+from Editeur import eficas
+from Editeur import images
+from common import *
+
+version='v8.3'
+
+class TestCase(unittest.TestCase):
+ def setUp(self):
+ self.root = Tkinter.Tk()
+ images.update_cache()
+ # Analyse des arguments de la ligne de commande
+ options=session.parse([])
+ options.cata=version
+ pass
+
+ def tearDown(self):
+ self.root.destroy()
+ init_common(None,None)
+ pass
+
+ def test000(self):
+ root=self.root
+ code="ASTER"
+ splash.init_splash(root,code=code,titre="Lancement d'EFICAS pour %s" %code)
+ splash._splash.configure(text="Chargement d'EFICAS en cours.\n Veuillez patienter ...")
+ app=eficas.EFICAS(root,code=code)
+ j=app.bureau.newJDC()
+ jdcdisplay=app.bureau.JDCDisplay_courant
+ init_common(root,jdcdisplay)
+
+ # commande DEBUT
+ co=j.addentite("DEBUT",0)
+ # commande FIN
+ co=j.addentite("FIN",1)
+
+ jdctree=jdcdisplay.tree.tree.children[0]
+ panel=select_child("DEBUT",jdctree)
+
+ panel=create_param("P1",9.8,panel)
+ panel=create_param("P2",8.8,panel)
+ panel=create_param("P3",7,panel)
+ panel=create_param("P4","[2,3,4]",panel)
+ panel=create_param("P5","P3*P1",panel)
+ panel=create_param(None,"P1-3",panel)
+ panel=create_comment("Pas trouve shellpanel",panel)
+
+ #commnde LIRE_MAILLAGE
+ panel=create_command("LIRE_MAILLAGE",panel)
+ command=panel.node
+ panel=nomme_concept("MAILLA2",panel)
+ panel=select_node(command)
+ panel=create_mocle("UNITE",panel)
+ panel=set_valeur("P4[1]",panel)
+ command.collapse()
+ panel=select_node(command)
+ #FORMULE
+ panel=create_formule("az","a,z","a+z",panel)
+ #commande AFFE_MODELE
+ panel=create_command("AFFE_MODELE",panel)
+ command=panel.node
+ select_child("MAILLAGE",command)
+ panel=select_node(command)
+ panel=create_mocle("AFFE",panel)
+ parent=panel.node
+ panel=select_child("PHENOMENE",parent)
+ choose_valeur("MECANIQUE",panel)
+ panel=select_child("b_mecanique",parent)
+ panel=select_child("MODELISATION",panel.node)
+ add_valeur_into("3D",panel)
+ add_valeur_into("3D_FLUIDE",panel)
+ valider_valeur(panel)
+ panel=select_node(parent)
+ panel=create_mocle("TOUT",panel)
+ choose_valeur("OUI",panel)
+ panel=select_node(command)
+ panel=nomme_concept("MO",panel)
+ command.collapse()
+ #fin commande AFFE_MODELE
+ panel=copier_coller()
+ command=panel.node
+ panel=create_mocle("AFFE",panel)
+ panel=select_node(command)
+ panel=create_mocle("AFFE",panel)
+ panel=select_mcf("AFFE",1,command)
+ parent=panel.node
+ panel=create_mocle("GROUP_NO",panel)
+ add_valeur("'GNP3','GNP5','GNP6','GNP7','GNP8','GNP9','GNP10','GNP11','GNP12'",panel)
+ valider_valeur(panel)
+ panel=select_child("PHENOMENE",parent)
+ choose_valeur("ACOUSTIQUE",panel)
+ panel=select_child("b_acoustique",parent)
+ panel=select_child("MODELISATION",panel.node)
+ add_valeur_into("PLAN",panel)
+ valider_valeur(panel)
+
+ panel=select_mcf("AFFE",2,command)
+ parent=panel.node
+ panel=create_mocle("GROUP_MA",panel)
+ add_valeur("MASSES",panel)
+ valider_valeur(panel)
+ panel=select_child("PHENOMENE",parent)
+ choose_valeur("THERMIQUE",panel)
+ panel=select_child("b_thermique",parent)
+ panel=select_child("MODELISATION",panel.node)
+ add_valeur_into("COQUE",panel)
+ valider_valeur(panel)
+
+ panel=select_node(command)
+ panel=nomme_concept("AFFE1",panel)
+ command.collapse()
+ #fin commande AFFE_MODELE
+ #commande AFFE_CARA_ELEM
+ panel=create_command("AFFE_CARA_ELEM",panel)
+ command=panel.node
+ panel=select_node(command)
+ panel=create_mocle("POUTRE",panel)
+ parent=panel.node
+ panel=select_child("SECTION",parent)
+ choose_valeur("CERCLE",panel)
+ panel=select_child("b_cercle",parent)
+ panel=select_child("b_constant",panel.node)
+ p=panel.node
+ panel=select_child("CARA",p)
+ add_valeur_into("R",panel)
+ add_valeur_into("EP",panel)
+ valider_valeur(panel)
+ panel=select_child("VALE",p)
+ add_valeur("1,2",panel)
+ valider_valeur(panel)
+ panel=select_node(parent)
+ panel=create_mocle("GROUP_MA",panel)
+ add_valeur("GR1,GR2",panel)
+ valider_valeur(panel)
+ panel=select_child("MODELE",command)
+ choose_assd("MO",panel)
+ panel=select_node(command)
+ panel=nomme_concept("CARA",panel)
+ command.collapse()
+ #fin commande AFFE_CARA_ELEM
+ panel=create_command("DEFI_FONCTION",panel)
+ command=panel.node
+ panel=create_mocle("VALE",panel)
+ add_valeur("5.0,3.0",panel)
+ add_valeur("P4[1],P3",panel)
+ valider_valeur(panel)
+ panel=select_child("NOM_PARA",command)
+ choose_valeur("DX",panel)
+ panel=select_node(command)
+ panel=nomme_concept("F1",panel)
+ command.collapse()
+ #fin DEFI_FONCTION
+ panel=create_command("DEFI_FONCTION",panel)
+ command=panel.node
+ panel=create_mocle("VALE_C",panel)
+ add_valeur("5.0,7.0,9.0",panel)
+ add_valeur("9.0,8.0,7.0",panel)
+ valider_valeur(panel)
+ panel=select_child("NOM_PARA",command)
+ choose_valeur("DRX",panel)
+ panel=select_node(command)
+ panel=nomme_concept("F3",panel)
+ command.collapse()
+ #fin DEFI_FONCTION
+#MATER2=DEFI_MATERIAU(ELAS=_F(E=100000000000.0,
+# NU=0.0,),
+# ECRO_ASYM_LINE=_F(DC_SIGM_EPSI=0.0,
+# SY_C=200000000.0,
+# DT_SIGM_EPSI=0.0,
+# SY_T=50000000.0,),);
+
+ panel=create_command("DEFI_MATERIAU",panel)
+ command=panel.node
+ panel=create_mocle("ELAS",panel)
+ p=panel.node
+ panel=select_child("E",p)
+ set_valeur("100000000000.0",panel)
+ panel=select_child("NU",p)
+ set_valeur("0.0",panel)
+ panel=select_node(command)
+ panel=create_mocle("ECRO_ASYM_LINE",panel)
+ p=panel.node
+ panel=select_child("DC_SIGM_EPSI",p)
+ set_valeur("0.0",panel)
+ panel=select_child("SY_C",p)
+ set_valeur("200000000.0",panel)
+ panel=select_child("DT_SIGM_EPSI",p)
+ set_valeur("0.0",panel)
+ panel=select_child("SY_T",p)
+ set_valeur("50000000.0",panel)
+ panel=select_node(command)
+ panel=nomme_concept("MATER2",panel)
+ command.collapse()
+ #fin DEFI_MATERIAU
+ #PS1=DEFI_PARA_SENSI(VALE=1.0,);
+ #PS2=DEFI_PARA_SENSI(VALE=1.0,);
+ #PS3=DEFI_PARA_SENSI(VALE=1.0,);
+ panel=create_command("DEFI_PARA_SENSI",panel)
+ command=panel.node
+ panel=select_child("VALE",command)
+ set_valeur("1.0",panel)
+ panel=select_node(command)
+ panel=nomme_concept("PS1",panel)
+ command.collapse()
+ panel=create_command("DEFI_PARA_SENSI",panel)
+ command=panel.node
+ panel=select_child("VALE",command)
+ set_valeur("1.0",panel)
+ panel=select_node(command)
+ panel=nomme_concept("PS2",panel)
+ command.collapse()
+ panel=create_command("DEFI_PARA_SENSI",panel)
+ command=panel.node
+ panel=select_child("VALE",command)
+ set_valeur("1.0",panel)
+ panel=select_node(command)
+ panel=nomme_concept("PS3",panel)
+ command.collapse()
+#CHMAT2=AFFE_MATERIAU(MAILLAGE=MAIL,
+# AFFE=_F(TOUT='OUI',
+# MATER=MATER2,),);
+ panel=create_command("AFFE_MATERIAU",panel)
+ command=panel.node
+ panel=select_child("MAILLAGE",command)
+ panel=select_child("AFFE",command)
+ affe=panel.node
+ panel=create_mocle("TOUT",panel)
+ choose_valeur("OUI",panel)
+ panel=select_child("MATER",affe)
+ add_valeur_into("MATER2",panel)
+ valider_valeur(panel)
+ panel=select_node(command)
+ panel=nomme_concept("CHMAT2",panel)
+ command.collapse()
+#AAAZ=AFFE_CHAR_THER(MODELE=AFFE1,
+# TEMP_IMPO=_F(TOUT='OUI',
+# TEMP=0.0,),);
+ panel=create_command("AFFE_CHAR_THER",panel)
+ command=panel.node
+ panel=create_mocle("TEMP_IMPO",panel)
+ temp=panel.node
+ panel=create_mocle("TOUT",panel)
+ choose_valeur("OUI",panel)
+ panel=select_node(temp)
+ panel=create_mocle("TEMP",panel)
+ panel=set_valeur("0.0",panel)
+ panel=select_child("MODELE",command)
+ choose_assd("AFFE1",panel)
+ panel=select_node(command)
+ panel=nomme_concept("AAAZ",panel)
+ command.collapse()
+#TH1=THER_LINEAIRE(MODELE=AFFE1,
+# CHAM_MATER=CHMAT2,
+# EXCIT=_F(CHARGE=AAAZ,),
+# SENSIBILITE=(PS1,PS2,),);
+ panel=create_command("THER_LINEAIRE",panel)
+ command=panel.node
+ panel=select_child("MODELE",command)
+ choose_assd("AFFE1",panel)
+ panel=select_child("CHAM_MATER",command)
+ panel=select_child("EXCIT",command)
+ panel=select_child("CHARGE",panel.node)
+ panel=select_node(command)
+ panel=create_mocle("SENSIBILITE",panel)
+ add_valeur_into("PS1",panel)
+ add_valeur_into("PS2",panel)
+ valider_valeur(panel)
+ panel=select_node(command)
+ panel=nomme_concept("TH1",panel)
+ command.collapse()
+#ACA1=AFFE_CHAR_ACOU(MODELE=AFFE1,
+# PRES_IMPO=_F(TOUT='OUI',
+# PRES=('RI',3.0,3.0,),),);
+ panel=create_command("AFFE_CHAR_ACOU",panel)
+ command=panel.node
+ panel=create_mocle("PRES_IMPO",panel)
+ pres=panel.node
+ panel=create_mocle("TOUT",panel)
+ choose_valeur("OUI",panel)
+ panel=select_child("MODELE",command)
+ choose_assd("AFFE1",panel)
+ panel=select_child("PRES",pres)
+ set_complexe("'RI',3.0,3.0",panel)
+ panel=select_node(command)
+ panel=nomme_concept("ACA1",panel)
+ command.collapse()
+#MACRO_MATR_ASSE(MODELE=AFFE1,
+# NUME_DDL=CO('DDL1'),
+# MATR_ASSE=_F(MATRICE=CO('MAT1'),
+# OPTION='RIGI_THER',),);
+ panel=create_command("MACRO_MATR_ASSE",panel)
+ command=panel.node
+ panel=select_child("NUME_DDL",command)
+ set_sdco("DDL1",panel)
+ panel=select_child("MODELE",command)
+ choose_assd("AFFE1",panel)
+ panel=select_child("MATR_ASSE",command)
+ matr=panel.node
+ panel=select_child("OPTION",matr)
+ choose_valeur("RIGI_THER",panel)
+ panel=select_child("MATRICE",matr)
+ set_sdco("MAT1",panel)
+ panel=select_node(command)
+ command.collapse()
+#MACRO_MATR_ASSE(MODELE=AFFE1,
+# NUME_DDL=DDL1,
+# MATR_ASSE=_F(MATRICE=MAT1,
+# OPTION='RIGI_THER',),);
+ panel=create_command("MACRO_MATR_ASSE",panel)
+ command=panel.node
+ panel=select_child("NUME_DDL",command)
+ choose_sdco("DDL1",panel)
+ panel=select_child("MODELE",command)
+ choose_assd("AFFE1",panel)
+ panel=select_child("MATR_ASSE",command)
+ matr=panel.node
+ panel=select_child("OPTION",matr)
+ choose_valeur("RIGI_THER",panel)
+ panel=select_child("MATRICE",matr)
+ set_sdco("MAT2",panel)
+ panel=select_node(command)
+ command.collapse()
+
+ assert j.isvalid(),j.report()
--- /dev/null
+# -*- coding: utf-8 -*-
+# Modules Python
+import os
+import unittest
+import difflib
+import compare
+import sys
+import Tkinter
+
+# Modules Eficas
+import prefs
+from Editeur import eficas_go
+from Editeur import splash
+from Editeur import session
+from Editeur import eficas
+from Editeur import images
+from common import *
+
+
+class TestCase(unittest.TestCase):
+ def setUp(self):
+ self.root = Tkinter.Tk()
+ images.update_cache()
+ # Analyse des arguments de la ligne de commande
+ options=session.parse([])
+ options.cata="v8.3"
+ pass
+
+ def tearDown(self):
+ self.root.destroy()
+ init_common(None,None)
+ pass
+
+ def test000(self):
+ root=self.root
+ code="ASTER"
+ splash.init_splash(root,code=code,titre="Lancement d'EFICAS pour %s" %code)
+ splash._splash.configure(text="Chargement d'EFICAS en cours.\n Veuillez patienter ...")
+ app=eficas.EFICAS(root,code=code)
+ j=app.bureau.newJDC()
+ jdcdisplay=app.bureau.JDCDisplay_courant
+ init_common(root,jdcdisplay)
+
+ # commande DEBUT
+ co=j.addentite("DEBUT",0)
+ # commande FIN
+ co=j.addentite("FIN",1)
+
+ jdctree=jdcdisplay.tree.tree.children[0]
+ panel=select_child("DEBUT",jdctree)
+ panel=create_command("LIRE_MAILLAGE",panel)
+ panel=nomme_concept("MA",panel)
+
+ panel=create_command("AFFE_MODELE",panel)
+ command=panel.node
+ select_child("MAILLAGE",command)
+ panel=select_node(command)
+ panel=create_mocle("AFFE",panel)
+ parent=panel.node
+ panel=select_child("PHENOMENE",parent)
+ choose_valeur("MECANIQUE",panel)
+ panel=select_child("b_mecanique",parent)
+ panel=select_child("MODELISATION",panel.node)
+ add_valeur_into("3D",panel)
+ add_valeur_into("3D_FLUIDE",panel)
+ valider_valeur(panel)
+ panel=select_node(parent)
+ panel=create_mocle("TOUT",panel)
+ choose_valeur("OUI",panel)
+ panel=select_node(command)
+ panel=nomme_concept("MO",panel)
+
+ assert j.isvalid(),j.report()
--- /dev/null
+# -*- coding: utf-8 -*-
+# Modules Python
+import os
+import unittest
+import difflib
+import compare
+import sys
+import Tkinter
+
+# Modules Eficas
+import prefs
+from Editeur import eficas_go
+from Editeur import splash
+from Editeur import session
+from Editeur import eficas
+from Editeur import images
+from common import *
+
+
+class TestCase(unittest.TestCase):
+ def setUp(self):
+ self.root = Tkinter.Tk()
+ images.update_cache()
+ # Analyse des arguments de la ligne de commande
+ options=session.parse([])
+ options.cata="petit"
+ pass
+
+ def tearDown(self):
+ self.root.destroy()
+ init_common(None,None)
+ pass
+
+ def test000(self):
+ root=self.root
+ code="ASTER"
+ splash.init_splash(root,code=code,titre="Lancement d'EFICAS pour %s" %code)
+ splash._splash.configure(text="Chargement d'EFICAS en cours.\n Veuillez patienter ...")
+ app=eficas.EFICAS(root,code=code)
+ j=app.bureau.newJDC()
+ jdcdisplay=app.bureau.JDCDisplay_courant
+ init_common(root,jdcdisplay)
+
+ # commande DEBUT
+ co=j.addentite("DEBUT",0)
+ # commande FIN
+ co=j.addentite("FIN",1)
+
+ jdctree=jdcdisplay.tree.tree.children[0]
+ panel=select_child("DEBUT",jdctree)
+ panel=create_command("TESTS_VALID",panel)
+ command=panel.node
+ panel=select_child("LongStr",command)
+ set_valeur("aaa",panel)
+ panel=select_child("ListStr",command)
+ add_valeur("aaa",panel)
+ add_valeur("bbbb,ccc",panel)
+ valider_valeur(panel)
+ panel=select_child("PairVal",command)
+ add_valeur(2,panel)
+ add_valeur("4,6",panel)
+ valider_valeur(panel)
+ panel=select_child("RangeVal",command)
+ set_valeur(4,panel)
+ panel=select_child("CardVal",command)
+ add_valeur("4,6,5,7",panel)
+ valider_valeur(panel)
+ panel=select_child("EnumVal",command)
+ choose_valeur(3,panel)
+ panel=select_child("OrdList",command)
+ add_valeur("4,6,5,7",panel)
+ valider_valeur(panel)
+ panel=select_child("OrdList2",command)
+ add_valeur_into(2,panel)
+ valider_valeur(panel)
+ panel=select_child("TypeVal",command)
+ set_valeur(5,panel)
+ panel=select_child("Compul",command)
+ add_valeur("2",panel)
+ add_valeur("1",panel)
+ valider_valeur(panel)
+ panel=select_child("CompulInto",command)
+ add_valeur_into(2,panel)
+ add_valeur_into(1,panel)
+ valider_valeur(panel)
+ panel=select_child("Norep",command)
+ add_valeur("2",panel)
+ valider_valeur(panel)
+ panel=select_child("NorepInto",command)
+ add_valeur_into(2,panel)
+ valider_valeur(panel)
+
+ panel=select_node(command)
+ panel=nomme_concept("MA",panel)
+
+ assert j.isvalid(),j.report()
--- /dev/null
+# -*- coding: utf-8 -*-
+# Modules Python
+import os
+import unittest
+import difflib
+import compare
+import sys
+import Tkinter
+
+# Modules Eficas
+import prefs
+from Editeur import eficas_go
+from Editeur import splash
+from Editeur import session
+from Editeur import eficas
+from Editeur import images
+from common import *
+
+
+class TestCase(unittest.TestCase):
+ def setUp(self):
+ self.root = Tkinter.Tk()
+ images.update_cache()
+ # Analyse des arguments de la ligne de commande
+ options=session.parse([])
+ options.cata="v8.3"
+ pass
+
+ def tearDown(self):
+ self.root.destroy()
+ init_common(None,None)
+ pass
+
+ def test000(self):
+ root=self.root
+ code="ASTER"
+ splash.init_splash(root,code=code,titre="Lancement d'EFICAS pour %s" %code)
+ splash._splash.configure(text="Chargement d'EFICAS en cours.\n Veuillez patienter ...")
+ app=eficas.EFICAS(root,code=code)
+ file=os.path.join(prefs.INSTALLDIR,"Tests/testelem/az.comm")
+ j=app.bureau.openJDC(file=file)
+ jdcdisplay=app.bureau.JDCDisplay_courant
+ init_common(root,jdcdisplay)
+ jdctree=jdcdisplay.tree.tree.children[0]
+ #commentariser commande MACRO_MATR_ASSE
+ panel=select_child("MACRO_MATR_ASSE",jdctree)
+ panel=comment_command(panel)
+ #decommentariser commande MACRO_MATR_ASSE
+ panel=uncomment_command(panel)
+ #creation commande commentée
+ panel=create_command("LIRE_MAILLAGE",panel)
+ panel=comment_command(panel)
+ panel=change_commandcomm("mm=LIRE_MAILLAGE(INFO=2,UNITE=21)",panel)
+ panel=uncomment_command(panel)
+ panel=select_child("DEFI_FONCTION",jdctree)
+ delete_node(panel)
+
+ assert j.isvalid(),j.report()
# -*- coding: utf-8 -*-
-# $Header: /home/eficas/CVSROOT/EficasV1/Tools/foztools/foztools.py,v 1.1.1.1 2002/03/26 09:08:47 eficas Exp $
+# $Header: /home/eficas/CVSROOT/EficasV1/Tools/foztools/foztools.py,v 1.2.8.1 2006/03/10 15:08:29 eficas Exp $
###########################################################################
# This is a set of Python widgets, built on top of pythonTk. They are
#
###########################################################################
-__version__ = "$Revision: 1.1.1.1 $"
+__version__ = "$Revision: 1.2.8.1 $"
import Tkinter
Tk=Tkinter
class Slider:
def __init__(self, master=None, orientation="horizontal", min=0, max=100,
- width=100, height=25, autoLabel="true", appearance="sunken",
- fillColor="blue", background="black", labelColor="yellow",
- labelText="", labelFormat="%d%%", value=50, bd=2):
- # preserve various values
- self.master=master
- self.orientation=orientation
- self.min=min
- self.max=max
- self.width=width
- self.height=height
- self.autoLabel=autoLabel
- self.fillColor=fillColor
- self.labelColor=labelColor
- self.background=background
- self.labelText=labelText
- self.labelFormat=labelFormat
- self.value=value
- self.frame=Tk.Frame(master, relief=appearance, bd=bd)
- self.canvas=Tk.Canvas(self.frame, height=height, width=width, bd=0,
- highlightthickness=0, background=background)
- self.scale=self.canvas.create_rectangle(0, 0, width, height,
- fill=fillColor)
- self.label=self.canvas.create_text(self.canvas.winfo_reqwidth() / 2,
- height / 2, text=labelText,
- anchor="c", fill=labelColor)
- self.update()
- self.canvas.pack(side='top', fill='x', expand='no')
+ width=100, height=25, autoLabel="true", appearance="sunken",
+ fillColor="blue", background="black", labelColor="yellow",
+ labelText="", labelFormat="%d%%", value=50, bd=2):
+ # preserve various values
+ self.master=master
+ self.orientation=orientation
+ self.min=min
+ self.max=max
+ self.width=width
+ self.height=height
+ self.autoLabel=autoLabel
+ self.fillColor=fillColor
+ self.labelColor=labelColor
+ self.background=background
+ self.labelText=labelText
+ self.labelFormat=labelFormat
+ self.value=value
+ self.frame=Tk.Frame(master, relief=appearance, bd=bd)
+ self.canvas=Tk.Canvas(self.frame, height=height, width=width, bd=0,
+ highlightthickness=0, background=background)
+ self.scale=self.canvas.create_rectangle(0, 0, width, height,
+ fill=fillColor)
+ self.label=self.canvas.create_text(self.canvas.winfo_reqwidth() / 2,
+ height / 2, text=labelText,
+ anchor="c", fill=labelColor)
+ self.update()
+ self.canvas.pack(side='top', fill='x', expand='no')
def update(self):
- # Trim the values to be between min and max
- value=self.value
- if value > self.max:
- value = self.max
- if value < self.min:
- value = self.min
- # Preserve the new value
- c=self.canvas
- # Adjust the rectangle
- if self.orientation == "horizontal":
- c.coords(self.scale,
- 0, 0,
- float(value) / self.max * self.width, self.height)
- else:
- c.coords(self.scale,
- 0, self.height - (float(value) / self.max*self.height),
- self.width, self.height)
- # Now update the colors
- c.itemconfig(self.scale, fill=self.fillColor)
- c.itemconfig(self.label, fill=self.labelColor)
- # And update the label
- if self.autoLabel=="true":
- c.itemconfig(self.label, text=self.labelFormat % value)
- else:
- c.itemconfig(self.label, text=self.labelFormat % self.labelText)
- c.update_idletasks()
+ # Trim the values to be between min and max
+ value=self.value
+ if value > self.max:
+ value = self.max
+ if value < self.min:
+ value = self.min
+ # Preserve the new value
+ c=self.canvas
+ # Adjust the rectangle
+ if self.orientation == "horizontal":
+ c.coords(self.scale,
+ 0, 0,
+ float(value) / self.max * self.width, self.height)
+ else:
+ c.coords(self.scale,
+ 0, self.height - (float(value) / self.max*self.height),
+ self.width, self.height)
+ # Now update the colors
+ c.itemconfig(self.scale, fill=self.fillColor)
+ c.itemconfig(self.label, fill=self.labelColor)
+ # And update the label
+ if self.autoLabel=="true":
+ c.itemconfig(self.label, text=self.labelFormat % value)
+ else:
+ c.itemconfig(self.label, text=self.labelFormat % self.labelText)
+ c.update_idletasks()
class Indicator:
def __init__(self, master=None, width=25, height=25, appearance="sunken",
- onColor="green", offColor="black", onLabelColor="black",
- offLabelColor="green", onLabelText="", offLabelText="",
- on=1, bd=2):
- # preserve various values
- self.master=master
- self.onColor=onColor
- self.offColor=offColor
- self.onLabelColor=onLabelColor
- self.offLabelColor=offLabelColor
- self.onLabelText=onLabelText
- self.offLabelText=offLabelText
- self.on=on
- self.frame=Tk.Frame(master, relief=appearance, bd=bd)
- self.canvas=Tk.Canvas(self.frame, height=height, width=width, bd=0,
- highlightthickness=0)
- self.light=self.canvas.create_rectangle(0, 0, width, height,
- fill=onLabelColor)
- self.label=self.canvas.create_text(self.canvas.winfo_reqwidth() / 2,
- height / 2, text=onLabelText,
- anchor="c", fill=onLabelColor)
- self.update()
- self.canvas.pack(side="top", fill='x', expand='no')
+ onColor="green", offColor="black", onLabelColor="black",
+ offLabelColor="green", onLabelText="", offLabelText="",
+ on=1, bd=2):
+ # preserve various values
+ self.master=master
+ self.onColor=onColor
+ self.offColor=offColor
+ self.onLabelColor=onLabelColor
+ self.offLabelColor=offLabelColor
+ self.onLabelText=onLabelText
+ self.offLabelText=offLabelText
+ self.on=on
+ self.frame=Tk.Frame(master, relief=appearance, bd=bd)
+ self.canvas=Tk.Canvas(self.frame, height=height, width=width, bd=0,
+ highlightthickness=0)
+ self.light=self.canvas.create_rectangle(0, 0, width, height,
+ fill=onLabelColor)
+ self.label=self.canvas.create_text(self.canvas.winfo_reqwidth() / 2,
+ height / 2, text=onLabelText,
+ anchor="c", fill=onLabelColor)
+ self.update()
+ self.canvas.pack(side="top", fill='x', expand='no')
def update(self):
- c=self.canvas
- # now update the status
- if self.on:
- c.itemconfig(self.light, fill=self.onColor)
- c.itemconfig(self.label, fill=self.onLabelColor)
- c.itemconfig(self.label, text=self.onLabelText)
- else:
- c.itemconfig(self.light, fill=self.offColor)
- c.itemconfig(self.label, fill=self.offLabelColor)
+ c=self.canvas
+ # now update the status
+ if self.on:
+ c.itemconfig(self.light, fill=self.onColor)
+ c.itemconfig(self.label, fill=self.onLabelColor)
+ c.itemconfig(self.label, text=self.onLabelText)
+ else:
+ c.itemconfig(self.light, fill=self.offColor)
+ c.itemconfig(self.label, fill=self.offLabelColor)
c.itemconfig(self.label, text=self.offLabelText)
- c.update_idletasks()
+ c.update_idletasks()
def toggle(self):
- self.on=not self.on
- self.update()
+ self.on=not self.on
+ self.update()
def turnon(self):
- self.on=1
- self.update()
+ self.on=1
+ self.update()
def turnoff(self):
- self.on=0
- self.update()
+ self.on=0
+ self.update()
class Blinker(Indicator):
def __init__(self, master=None, blinkrate=1, enabled=1, width=25,
- height=25, appearance="sunken", onColor="green",
- offColor="black", onLabelColor="black", offLabelColor="green",
- onLabelText="", offLabelText="", on=1, bd=2):
- self.blinkrate=blinkrate
- self.enabled=enabled
- Indicator.__init__(self, master, width=width, height=height,
- appearance=appearance, onColor=onColor,
- offColor=offColor, onLabelColor=onLabelColor,
- offLabelColor=offLabelColor,
- onLabelText=onLabelText,
- offLabelText=offLabelText, on=on, bd=bd)
+ height=25, appearance="sunken", onColor="green",
+ offColor="black", onLabelColor="black", offLabelColor="green",
+ onLabelText="", offLabelText="", on=1, bd=2):
+ self.blinkrate=blinkrate
+ self.enabled=enabled
+ Indicator.__init__(self, master, width=width, height=height,
+ appearance=appearance, onColor=onColor,
+ offColor=offColor, onLabelColor=onLabelColor,
+ offLabelColor=offLabelColor,
+ onLabelText=onLabelText,
+ offLabelText=offLabelText, on=on, bd=bd)
def update(self):
- if self.enabled:
- self.on=not self.on
+ if self.enabled:
+ self.on=not self.on
Indicator.update(self)
- self.frame.after(self.blinkrate * 1000, self.update)
+ self.frame.after(self.blinkrate * 1000, self.update)
def main():
class Test:
- def __init__(self):
- win = Tk.Frame()
- win.master.title("Slider Demo")
- self.progress1=Slider(win, fillColor="red", labelColor="yellow",
- value=0, width=200, height=15,
- appearance="sunken", autoLabel="false",
- labelFormat="%s",
- labelText="Gary.Foster@corp.sun.com",
- orientation="horizontal", bd=3)
- self.progress2=Slider(win, fillColor="blue", labelColor="black",
- background="white", value=250, width=50,
- height=200, appearance="raised", max=250,
- labelFormat="%d", orientation="vertical", bd=4)
- self.progress1.frame.pack()
- self.progress2.frame.pack()
- win.pack()
- self.progress1.frame.after(1000, self.update)
- self.increment1=1
- self.increment2=-1
+ def __init__(self):
+ win = Tk.Frame()
+ win.master.title("Slider Demo")
+ self.progress1=Slider(win, fillColor="red", labelColor="yellow",
+ value=0, width=200, height=15,
+ appearance="sunken", autoLabel="false",
+ labelFormat="%s",
+ labelText="Gary.Foster@corp.sun.com",
+ orientation="horizontal", bd=3)
+ self.progress2=Slider(win, fillColor="blue", labelColor="black",
+ background="white", value=250, width=50,
+ height=200, appearance="raised", max=250,
+ labelFormat="%d", orientation="vertical", bd=4)
+ self.progress1.frame.pack()
+ self.progress2.frame.pack()
+ win.pack()
+ self.progress1.frame.after(1000, self.update)
+ self.increment1=1
+ self.increment2=-1
- def update(self, event=None):
- bar1=self.progress1
- bar2=self.progress2
+ def update(self, event=None):
+ bar1=self.progress1
+ bar2=self.progress2
- bar1.value=bar1.value+self.increment1
- if bar1.value > bar1.max:
- self.increment1=-1
- bar1.fillColor="green"
- bar1.labelColor="red"
- if bar1.value < bar1.min:
- self.increment1=1
- bar1.fillColor="red"
- bar1.labelColor="yellow"
- bar1.update()
- bar1.frame.after(100, self.update)
+ bar1.value=bar1.value+self.increment1
+ if bar1.value > bar1.max:
+ self.increment1=-1
+ bar1.fillColor="green"
+ bar1.labelColor="red"
+ if bar1.value < bar1.min:
+ self.increment1=1
+ bar1.fillColor="red"
+ bar1.labelColor="yellow"
+ bar1.update()
+ bar1.frame.after(100, self.update)
- bar2.value=bar2.value+self.increment2
- if bar2.value > bar2.max:
- self.increment2=-1
- if bar2.value < bar2.min:
- self.increment2=1
- bar2.update()
+ bar2.value=bar2.value+self.increment2
+ if bar2.value > bar2.max:
+ self.increment2=-1
+ if bar2.value < bar2.min:
+ self.increment2=1
+ bar2.update()
t = Test()
Tk.mainloop()
--- /dev/null
+# -*- coding: utf-8 -*-
+import logging
+from parseur import FactNode
+import string
+debug=1
+
+
+#-----------------------------------
+def inseremotcle(jdc,recepteur,texte):
+#-----------------------------------
+# appelle la methode selon la classe
+# du recepteur
+
+ if recepteur.__class__.__name__ == "Command" :
+ if debug : print " Ajout de ", texte, "dans la commande : " ,recepteur.name
+ inseremotcleincommand(jdc,recepteur,texte)
+ return
+
+
+#--------------------------------------------
+def inseremotcleincommand(jdc,command,texte):
+#---------------------------------------------
+# insere le texte comme 1er mot cle
+# de la commande
+ if debug : print "inseremotcle ", texte , " dans ", command.name
+ numcol=chercheDebut1mot(jdc,command)
+ if numcol > 0 :
+ jdc.splitLine(command.lineno,numcol)
+ debut=chercheAlignement(jdc,command)
+ texte=debut+texte+"\n"
+ jdc.addLine(texte,command.lineno)
+ if numcol > 0 : # Les mots clefs etaient sur la même ligne
+ jdc.joinLineandNext(command.lineno)
+
+#---------------------------------------------
+def inseremotcleinfacteur(jdc,facteur,texte):
+#-------------------------------------------------
+ if debug : print "inseremotcle ", texte , " dans ", facteur.name
+ ancien=jdc.getLine(facteur.lineno )
+ # On va chercher la dernier ) pour ajouter avant
+ # on va verifier s il il y a un , avant
+ ligne,col,boolvirgule=chercheDerniereParenthese(jdc,facteur)
+ if col > 0 :
+ jdc.splitLine(ligne,col)
+ if boolvirgule == 0 :
+ jdc.addLine(",\n",ligne)
+ jdc.joinLineandNext(ligne)
+ debut=ancien.find("_F") + 3
+ aligne=debut*" "
+ # enleve les blancs en debut de texte
+ i = 0
+ while i < len(texte) :
+ if texte[i] != " " : break
+ i = i +1
+ texte=aligne+texte+"\n"
+ jdc.addLine(texte,ligne)
+ jdc.joinLineandNext(ligne+1)
+
+#---------------------------------------
+def chercheDerniereParenthese(jdc,facteur):
+#---------------------------------------
+ ligne=facteur.endline-1
+ col=-1
+ boolvirgule=0
+ trouveParent=0
+ while ( trouveParent == 0) :
+ texte=jdc.getLine(ligne)
+ col=texte.rfind(")")
+ if col < 0 :
+ ligne=ligne-1
+ else :
+ trouveParent=1
+ indice=col -1
+ while ( indice > -1 and texte[indice] == " " ):
+ indice = indice -1
+ if texte[indice]=="," :
+ boolvirgule = 1
+ return (ligne,col,boolvirgule)
+
+#-----------------------------------
+def chercheDebut1mot(jdc,command):
+#-----------------------------------
+# Retourne le numero de colonne si le 1er mot clef est
+# sur la meme ligne que le mot clef facteur
+# -1 sinon
+ assert (command.childNodes != [])
+ debut=-1
+ node1=command.childNodes[0]
+ if hasattr(node1,"lineno"):
+ if node1.lineno == command.lineno :
+ debut=node1.colno
+ else:
+ debut=chercheDebutfacteur(jdc,command)
+ if debut == -1 and debug : print "attention!!! pb pour trouver le debut dans ", command
+ return debut
+
+#-----------------------------------
+def chercheDebutfacteur(jdc,facteur):
+#-----------------------------------
+ debut=-1
+ ligne=jdc.getLines()[facteur.lineno]
+ debut=ligne.find("_F")
+ if debut > -1 : debut=debut + 3
+ return debut
+
+
+
+#-----------------------------------
+def chercheAlignement(jdc,command):
+#-----------------------------------
+# Retourne le nb de blanc
+# pour aligner sur le 1er mot clef fils
+ assert (command.childNodes != [])
+ node1=command.childNodes[0]
+ nbBlanc=node1.colno
+ return " "*nbBlanc
+
+
--- /dev/null
+# -*- coding: utf-8 -*-
+
+import log
+
+from load import getJDC
+from mocles import parseKeywords
+import removemocle
+import renamemocle
+import movemocle
+
+#atraiter=("DEBUT","LIRE_MAILLAGE","AFFE_MODELE","DEFI_GROUP",
+# "AFFE_MATERIAU","DEFI_MATERIAU","STAT_NONLINE",
+# )
+
+atraiter=("CALC_FONCTION","IMPR_GENE","STAT_NON_LINE","DEFI_MATERIAU")
+filename="toto.comm"
+jdc=getJDC(filename,atraiter)
+root=jdc.root
+
+#Parse les mocles des commandes
+parseKeywords(root)
+
+#removemocle.removemocleinfact(jdc,"AFFE_MATERIAU","AFFE","TOUT")
+#removemocle.removemocle(jdc,"STAT_NONLINE","SOLVEUR")
+#renamemocle.renamemocleinfact(jdc,"AFFE_MODELE","AFFE","PHENOMENE","TOTO")
+#renamemocle.renamemocleinfact(jdc,"AFFE_MODELE","AFFE","MODELISATION","TITI")
+#renamemocle.renamemocleinfact(jdc,"DEFI_GROUP","CREA_GROUP_NO","GROUP_MA","TUTU")
+#removemocle.removemocle(jdc,"LIRE_MAILLAGE","INFO")
+#removemocle.removemocle(jdc,"LIRE_MAILLAGE","UNITE")
+#renamemocle.renamemocle(jdc,"DEFI_MATERIAU","ELAS","ELASTIC")
+#renamemocle.renamemocle(jdc,"AFFE_MATERIAU","MAILLAGE","MAILL")
+#removemocle.removemocleinfact(jdc,"STAT_NONLINE","SOLV","METHOD")
+#removemocle.removemocle(jdc,"STAT_NONLINE","AFFE")
+#renamemocle.renamecommande(jdc,"AFFE_CHAR_MECA","AFFE_CHAR_MECA_PN")
+#renamemocle.renamecommande(jdc,"DEBUT","DEBUT_PN")
+
+# les arguments sont jdc,ancien-nom-de-commande,nouveau-nom-de-commande
+renamemocle.renamecommande(jdc,"CALC_FONCTION","INFO_FONCTION")
+
+# Les arguments sont - jdc,
+# - nom de la procedure (pas teste avec autre chose)
+# - nom du mot clef facteur contenant,
+# - nom du mot cle simple
+# Attention ne fonctionne pas pour l instant avec +sieurs occurences du mot cle à déplacer
+movemocle.movemoclefromfacttofather(jdc,"IMPR_GENE","GENE","UNITE")
+movemocle.movemoclefromfacttofather(jdc,"IMPR_GENE","GENE","FORMAT")
+
+# Les arguments sont - jdc
+# - nom de l operateur (pas teste avec autre chose)
+# - nom du mot clef facteur source,
+# - nom du mot cle simple
+# - liste de mots clef facteur arrivée possible
+# Attention ne fonctionne pas pour l instant avec +sieurs occurences du mot cle à déplacer
+movemocle.movemoclefromfacttofactmulti(jdc,"STAT_NON_LINE","CONVERGENCE","RESI_INTE_RELA",("COMP_INCR","COMP_ELAS"))
+
+
+renamemocle.renamemocle(jdc,"DEFI_MATERIAU","LEMAITRE","LEMAITRE_IRRA")
+movemocle.movemoclefromfacttofactmulti(jdc,"DEFI_MATERIAU","FLU_IRRA","QSR_K",("LEMAITRE_IRRA",))
+movemocle.movemoclefromfacttofactmulti(jdc,"DEFI_MATERIAU","FLU_IRRA","BETA",("LEMAITRE_IRRA",))
+movemocle.movemoclefromfacttofactmulti(jdc,"DEFI_MATERIAU","FLU_IRRA","PHI_ZERO",("LEMAITRE_IRRA",))
+movemocle.movemoclefromfacttofactmulti(jdc,"DEFI_MATERIAU","FLU_IRRA","L",("LEMAITRE_IRRA",))
+removemocle.removemocle(jdc,"DEFI_MATERIAU","FLU_IRRA")
+
+renamemocle.renamemocleinfact(jdc,"DEFI_MATERIAU","GRAN_IRRA","A","GRAN_A")
+renamemocle.renamemocleinfact(jdc,"DEFI_MATERIAU","GRAN_IRRA","B","GRAN_B")
+renamemocle.renamemocleinfact(jdc,"DEFI_MATERIAU","GRAN_IRRA","S","GRAN_S")
+movemocle.movemoclefromfacttofactmulti(jdc,"DEFI_MATERIAU","GRAN_IRRA","GRAN_A",("LEMAITRE_IRRA",))
+movemocle.movemoclefromfacttofactmulti(jdc,"DEFI_MATERIAU","GRAN_IRRA","GRAN_B",("LEMAITRE_IRRA",))
+movemocle.movemoclefromfacttofactmulti(jdc,"DEFI_MATERIAU","GRAN_IRRA","GRAN_S",("LEMAITRE_IRRA",))
+removemocle.removemocle(jdc,"DEFI_MATERIAU","GRAN_IRRA")
+
+
+f=open("tutu.comm",'w')
+f.write(jdc.getSource())
+f.close()
--- /dev/null
+# -*- coding: utf-8 -*-
+
+import os
+import parseur
+from mocles import parseKeywords
+
+
+JDCdict={}
+
+class JDC:
+ """Cet objet conserve toutes les informations relatives à un fichier de commandes .comm"""
+
+ def __init__(self,filename,src,atraiter):
+ #----------------------------------------
+ self.filename = os.path.abspath(filename)
+ self.atraiter=atraiter
+ self.init(src,atraiter)
+
+ def init(self,src,atraiter):
+ #---------------------------
+ # construction de self.lines
+ self.root=parseur.parser(src,atraiter)
+ self.lines=src.splitlines(1)
+
+ def parseKeywords(self):
+ #-----------------------
+ # construction de fils (cf mocles.py)
+ parseKeywords(self.root)
+
+ def reset(self,src):
+ #-----------------------
+ # reconstruction
+ self.init(src,self.atraiter)
+ self.parseKeywords()
+
+ def getSource(self):
+ #-----------------------
+ # retourne la concatenation de
+ # toutes les lignes
+ return "".join(self.getLines())
+
+ def getLine(self,linenum):
+ #-----------------------
+ # retourne la linenumieme ligne
+ return self.getLines()[linenum-1]
+
+ def getLines(self):
+ #----------------------------
+ # retourne toutes les lignes
+ return self.lines
+
+ def addLine(self,ligne,numero) :
+ #----------------------------
+ # insere le texte contenu dans ligne
+ # dans la liste self.lines au rang numero
+ Ldebut=self.lines[0:numero]
+ Lmilieu=[ligne,]
+ Lfin=self.lines[numero:]
+ self.lines=Ldebut+Lmilieu+Lfin
+ src=self.getSource()
+ self.reset(src)
+
+ def splitLine(self,numeroLigne,numeroColonne) :
+ #----------------------------------------------
+ # coupe la ligne numeroLigne en 2 a numeroColonne
+ # ajoute des blancs en debut de 2nde Ligne pour
+ # aligner
+ numeroLigne = numeroLigne -1
+ Ldebut=self.lines[0:numeroLigne]
+ if len(self.lines) > numeroLigne :
+ Lfin=self.lines[numeroLigne+1:]
+ else :
+ Lfin=[]
+ Lsplit=self.lines[numeroLigne]
+ LigneSplitDebut=Lsplit[0:numeroColonne]+"\n"
+ LigneSplitFin=" "*numeroColonne+Lsplit[numeroColonne:]
+ Lmilieu=[LigneSplitDebut,LigneSplitFin]
+
+ self.lines=Ldebut+Lmilieu+Lfin
+ src=self.getSource()
+ self.reset(src)
+
+ def joinLineandNext(self,numeroLigne) :
+ #--------------------------------------
+ # concatene les lignes numeroLigne et numeroLigne +1
+ # enleve les blancs de debut de la ligne (numeroLigne +1)
+ Ldebut=self.lines[0:numeroLigne-1]
+ if len(self.lines) > numeroLigne :
+ Lfin=self.lines[numeroLigne+1:]
+ else :
+ Lfin=[]
+
+ ligneMilieuDeb=self.lines[numeroLigne - 1 ]
+ ligneMilieuDeb=ligneMilieuDeb[0:-1]
+ ligneMilieuFin=self.lines[numeroLigne]
+ for i in range(len(ligneMilieuFin)):
+ if ligneMilieuFin[i] != " " :
+ ligneMilieuFin=ligneMilieuFin[i:]
+ break
+ Lmilieu=[ligneMilieuDeb+ligneMilieuFin,]
+
+ self.lines=Ldebut+Lmilieu+Lfin
+ src=self.getSource()
+ self.reset(src)
+
+def getJDC(filename,atraiter):
+#---------------------------_
+# lit le JDC
+ jdc=JDCdict.get(filename)
+ if not jdc:
+ f=open(filename)
+ src=f.read()
+ f.close()
+ jdc=JDC(filename,src,atraiter)
+ JDCdict[filename]=jdc
+ return jdc
+
--- /dev/null
+# -*- coding: utf-8 -*-
+
+import logging
+logger=logging.getLogger()
+hdlr=logging.FileHandler('convert.log','w')
+#formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
+formatter = logging.Formatter('%(levelname)s: %(message)s')
+hdlr.setFormatter(formatter)
+logger.addHandler(hdlr)
+logger.setLevel(logging.INFO)
--- /dev/null
+# -*- coding: utf-8 -*-
+
+import compiler
+import types
+from parseur import Keyword,FactNode,lastparen,lastparen2
+from visiteur import KeywordFinder,visitor
+from utils import indexToCoordinates
+
+debug=0
+
+def parseFact(match,c,kw):
+ submatch=match[2]
+ lastpar=match[0]+lastparen(c.src[match[0]:])
+ if type(submatch[0][0]) ==types.IntType:
+ #mot cle facteur isolé
+ no=FactNode()
+ kw.addChild(no)
+ for ii in range(len(submatch)-1):
+ e=submatch[ii]
+ x,y=indexToCoordinates(c.src,e[0])
+ lineno=y+c.lineno
+ colno=x
+ x,y=indexToCoordinates(c.src,submatch[ii+1][0])
+ endline=y+c.lineno
+ endcol=x
+ no.addChild(Keyword(e[1],lineno,colno,endline,endcol))
+ #last one
+ e=submatch[-1]
+ x,y=indexToCoordinates(c.src,e[0])
+ lineno=y+c.lineno
+ colno=x
+ x,y=indexToCoordinates(c.src,lastpar-1)
+ endline=y+c.lineno
+ endcol=x
+ no.addChild(Keyword(e[1],lineno,colno,endline,endcol))
+ else:
+ #mot cle facteur multiple
+ ii=0
+ for l in submatch:
+ lastpar=l[0][0]+lastparen2(c.src[l[0][0]:])
+ ii=ii+1
+ no=FactNode()
+ kw.addChild(no)
+ for j in range(len(l)-1):
+ e=l[j]
+ x,y=indexToCoordinates(c.src,e[0])
+ lineno=y+c.lineno
+ colno=x
+ x,y=indexToCoordinates(c.src,l[j+1][0])
+ endline=y+c.lineno
+ endcol=x
+ no.addChild(Keyword(e[1],lineno,colno,endline,endcol))
+ #last one
+ e=l[-1]
+ x,y=indexToCoordinates(c.src,e[0])
+ lineno=y+c.lineno
+ colno=x
+ x,y=indexToCoordinates(c.src,lastpar-1)
+ endline=y+c.lineno
+ endcol=x
+ no.addChild(Keyword(e[1],lineno,colno,endline,endcol))
+
+
+def parseKeywords(root):
+ """A partir d'un arbre contenant des commandes, ajoute les noeuds fils correspondant aux mocles
+ de la commande
+ """
+ matchFinder=KeywordFinder()
+
+ for c in root.childNodes:
+ ast=compiler.parse(c.src)
+ #print ast
+ matchFinder.reset(c.src)
+ visitor.walk(ast, matchFinder)
+ #print matchFinder.matches
+ if len(matchFinder.matches) > 1:
+ #plusieurs mocles trouvés : un mocle commence au début du keyword (matchFinder.matches[i][0])
+ # et finit juste avant le keyword suivant (matchFinder.matches[i+1][0]])
+ for i in range(len(matchFinder.matches)-1):
+ if debug:print "texte:",c.src[matchFinder.matches[i][0]:matchFinder.matches[i+1][0]]
+ x,y=indexToCoordinates(c.src,matchFinder.matches[i][0])
+ lineno=y+c.lineno
+ colno=x
+ x,y=indexToCoordinates(c.src,matchFinder.matches[i+1][0])
+ endline=y+c.lineno
+ endcol=x
+ if debug:print matchFinder.matches[i][0],matchFinder.matches[i][1],lineno,colno,endline,endcol
+ kw=Keyword(matchFinder.matches[i][1],lineno,colno,endline,endcol)
+ c.addChild(kw)
+ submatch= matchFinder.matches[i][2]
+ if submatch:
+ parseFact(matchFinder.matches[i],c,kw)
+ #dernier mocle : il commence au debut du dernier keyword (matchFinder.matches[i+1][0]) et
+ #finit avant la parenthese fermante de la commande (c.lastparen)
+ if debug:print "texte:",c.src[matchFinder.matches[i+1][0]:c.lastparen]
+ x,y=indexToCoordinates(c.src,matchFinder.matches[i+1][0])
+ lineno=y+c.lineno
+ colno=x
+ x,y=indexToCoordinates(c.src,c.lastparen)
+ endline=y+c.lineno
+ endcol=x
+ if debug:print matchFinder.matches[i+1][0],matchFinder.matches[i+1][1],lineno,colno,endline,endcol
+ kw=Keyword(matchFinder.matches[i+1][1],lineno,colno,endline,endcol)
+ c.addChild(kw)
+ submatch= matchFinder.matches[i+1][2]
+ if submatch:
+ parseFact(matchFinder.matches[i+1],c,kw)
+
+ elif len(matchFinder.matches) == 1:
+ #un seul mocle trouve : il commence au début du keyword (matchFinder.matches[0][0]) et
+ #finit juste avant la parenthese fermante de la commande (c.lastparen)
+ if debug:print "texte:",c.src[matchFinder.matches[0][0]:c.lastparen]
+ x,y=indexToCoordinates(c.src,matchFinder.matches[0][0])
+ lineno=y+c.lineno
+ colno=x
+ x,y=indexToCoordinates(c.src,c.lastparen)
+ endline=y+c.lineno
+ endcol=x
+ if debug:print matchFinder.matches[0][0],matchFinder.matches[0][1],lineno,colno,endline,endcol
+ kw=Keyword(matchFinder.matches[0][1],lineno,colno,endline,endcol)
+ c.addChild(kw)
+ submatch= matchFinder.matches[0][2]
+ if submatch:
+ parseFact(matchFinder.matches[0],c,kw)
+ else:
+ pass
+
--- /dev/null
+# -*- coding: utf-8 -*-
+
+import logging
+import removemocle
+import inseremocle
+from parseur import FactNode
+debug=1
+
+def movemoclefromfacttofather(jdc,command,fact,mocle):
+# exemple type : IMPR_GENE
+ for c in jdc.root.childNodes:
+ if c.name != command:continue
+ for mc in c.childNodes:
+ if mc.name != fact:continue
+ l=mc.childNodes[:]
+ for ll in l:
+ for n in ll.childNodes:
+ if n.name != mocle:continue
+ if debug : print "Changement de place :", n.name, n.lineno, n.colno
+ MonTexte=n.getText(jdc);
+ inseremocle.inseremotcle(jdc,c,MonTexte)
+ logging.info("Changement de place : %s,%s, %s ",n.name, n.lineno, n.colno)
+
+ removemocle.removemocleinfact(jdc,command,fact,mocle)
+
+def movemoclefromfacttofactmulti(jdc,oper,factsource,mocle,liste_factcible):
+# exemple type STAT_NON_LINE et RESI_INTER_RELA
+ for factcible in liste_factcible :
+ movemoclefromfacttofact(jdc,oper,factsource,mocle,factcible)
+ removemocle.removemocleinfact(jdc,oper,factsource,mocle)
+
+
+def movemoclefromfacttofact(jdc,oper,factsource,mocle,factcible):
+ if debug : print "movemoclefromfacttofact pour " ,oper,factsource,mocle,factcible
+ for c in jdc.root.childNodes:
+ if c.name != oper : continue
+ cible=None
+ for mc in c.childNodes:
+ if mc.name != factcible :
+ continue
+ else :
+ cible=mc
+ break
+ if cible==None :
+ logging.info("Pas de changement pour %s,%s,%s", oper, factsource,mocle)
+ logging.info("Le mot clef cible %s n est pas présent", factcible)
+ if debug : print "Pas de changement pour ", oper, " ", factsource, " ",mocle, "cible non trouvée"
+ continue
+
+ for mc in c.childNodes:
+ source=None
+ if mc.name != factsource:
+ continue
+ else :
+ source=mc
+ break
+ if source==None :
+ logging.info("Pas de changement pour %s,%s,%s", oper, factsource,mocle)
+ logging.info("Le mot clef source %s n est pas présent", factsource)
+ if debug : print "Pas de changement pour ", oper, " ", factsource, " ",mocle, "source non trouvée"
+ continue
+
+ if debug : print "Changement pour ", oper, " ", factsource, " ",mocle, "cible et source trouvées"
+ l=source.childNodes[:]
+ for ll in l:
+ for n in ll.childNodes:
+ if n.name != mocle:continue
+ MonTexte=n.getText(jdc);
+ inseremocle.inseremotcleinfacteur(jdc,cible,MonTexte)
+ logging.info("Changement de place : %s,%s, %s ",n.name, n.lineno, n.colno)
+ logging.info("vers : %s", cible.name)
+
--- /dev/null
+# -*- coding: utf-8 -*-
+import re,string
+import compiler
+
+debug=0
+
+escapedQuotesRE = re.compile(r"(\\\\|\\\"|\\\')")
+stringsAndCommentsRE = \
+ re.compile("(\"\"\".*?\"\"\"|'''.*?'''|\"[^\"]*\"|\'[^\']*\'|#.*?\n)", re.DOTALL)
+allchars = string.maketrans("", "")
+allcharsExceptNewline = allchars[: allchars.index('\n')]+allchars[allchars.index('\n')+1:]
+allcharsExceptNewlineTranstable = string.maketrans(allcharsExceptNewline, '*'*len(allcharsExceptNewline))
+
+def maskStringsAndComments(src):
+ """Remplace tous les caracteres dans commentaires et strings par des * """
+ src = escapedQuotesRE.sub("**", src)
+ allstrings = stringsAndCommentsRE.split(src)
+ # every odd element is a string or comment
+ for i in xrange(1, len(allstrings), 2):
+ if allstrings[i].startswith("'''")or allstrings[i].startswith('"""'):
+ allstrings[i] = allstrings[i][:3]+ \
+ allstrings[i][3:-3].translate(allcharsExceptNewlineTranstable)+ \
+ allstrings[i][-3:]
+ else:
+ allstrings[i] = allstrings[i][0]+ \
+ allstrings[i][1:-1].translate(allcharsExceptNewlineTranstable)+ \
+ allstrings[i][-1]
+
+ return "".join(allstrings)
+
+#un nombre queconque de blancs,un nom,des blancs
+pattern_oper = re.compile(r"^\s*(.*?=\s*)?([a-zA-Z_]\w*)(\s*)(\()(.*)",re.DOTALL)
+pattern_proc = re.compile(r"^\s*([a-zA-Z_]\w*)(\s*)(\()(.*)",re.DOTALL)
+
+implicitContinuationChars = (('(', ')'), ('[', ']'), ('{', '}'))
+linecontinueRE = re.compile(r"\\\s*(#.*)?$")
+emptyHangingBraces = [0,0,0,0,0]
+
+class UnbalancedBracesException: pass
+
+class Node:
+ def __init__(self):
+ self.childNodes=[]
+
+ def addChild(self,node):
+ self.childNodes.append(node)
+
+
+class FactNode(Node):pass
+class JDCNode(Node):
+ def __init__(self,src):
+ Node.__init__(self)
+ self.src=src
+
+class Command(Node):
+ def __init__(self,name,lineno,colno,firstparen):
+ Node.__init__(self)
+ self.name=name
+ self.lineno=lineno
+ self.colno=colno
+ self.firstparen=firstparen
+
+class Keyword(Node):
+ def __init__(self,name,lineno,colno,endline,endcol):
+ Node.__init__(self)
+ self.name=name
+ self.lineno=lineno
+ self.colno=colno
+ self.endline=endline
+ self.endcol=endcol
+
+ def getText(self,jdc):
+ if self.endline > self.lineno:
+ lignecourante=self.lineno + 1
+ debut=jdc.getLines()[self.lineno-1][self.colno:]
+ fin = jdc.getLines()[self.endline-1][:self.endcol]
+ texte=debut
+ lignecourante=self.lineno + 1
+ while lignecourante > self.endline :
+ texte = texte + jdc.getLines()[lignecourante]
+ lignecourante = lignecourante + 1
+ if chaineBlanche(fin) == 0 :
+ texte=texte + fin
+ if texte[-1] == "\n" :
+ texte=texte[0:-1]
+ else:
+ texte = jdc.getLines()[self.lineno-1][self.colno:self.endcol]
+ return texte
+
+def chaineBlanche(texte) :
+# retourne 1 si la chaine est composee de " "
+# retourne 0 sinon
+ bool = 1 ;
+ for i in range(len(texte)) :
+ if texte[i] != " " : bool = 0
+ return bool
+
+def printNode(node):
+ if hasattr(node,'name'):
+ print node.name
+ else:
+ print "pas de nom pour:",node
+ for c in node.childNodes:
+ printNode(c)
+
+def parser(src,atraiter):
+ """Parse le texte src et retourne un arbre syntaxique (root).
+
+ Cet arbre syntaxique a comme noeuds (childNodes) les commandes à traiter (liste atraiter)
+ """
+ lines=src.splitlines(1)
+ maskedSrc=maskStringsAndComments(src)
+ maskedLines=maskedSrc.splitlines(1)
+
+ root=JDCNode(src)
+
+ # (a) dans un premier temps on extrait les commandes et on les insère dans un arbre (root)
+ # les noeuds fils sont stockés dans root.childNodes (liste)
+ lineno=0
+ for line in maskedLines:
+ lineno=lineno+1
+ if debug:print "line",lineno,":",line
+ m=pattern_proc.match(line)
+ if m and (m.group(1) in atraiter):
+ if debug:print m.start(3),m.end(3),m.start(4)
+ root.addChild(Command(m.group(1),lineno,m.start(1),m.end(3)))
+ else:
+ m=pattern_oper.match(line)
+ if m and (m.group(2) in atraiter):
+ root.addChild(Command(m.group(2),lineno,m.start(2),m.end(4)))
+
+ #(b) dans un deuxième temps , on récupère le texte complet de la commande jusqu'à la
+ # dernière parenthèse fermante
+
+ #iterateur sur les lignes physiques masquées
+ iterlines=iter(maskedLines)
+
+ linenum=0
+ for c in root.childNodes:
+ lineno=c.lineno
+ colno=c.colno # début de la commande
+ while linenum < lineno:
+ line=iterlines.next()
+ linenum=linenum+1
+ if linenum != lineno:
+ if debug:print "line %s:"%linenum, line
+ tmp = []
+ hangingBraces = list(emptyHangingBraces)
+ hangingComments = 0
+ while 1:
+ # update hanging braces
+ for i in range(len(implicitContinuationChars)):
+ contchar = implicitContinuationChars[i]
+ numHanging = hangingBraces[i]
+
+ hangingBraces[i] = numHanging+line.count(contchar[0]) - \
+ line.count(contchar[1])
+
+ hangingComments ^= line.count('"""') % 2
+ hangingComments ^= line.count("'''") % 2
+
+ if hangingBraces[0] < 0 or hangingBraces[1] < 0 or hangingBraces[2] < 0:
+ raise UnbalancedBracesException()
+
+ if linecontinueRE.search(line):
+ tmp.append(lines[linenum-1])
+ elif hangingBraces != emptyHangingBraces:
+ tmp.append(lines[linenum-1])
+ elif hangingComments:
+ tmp.append(lines[linenum-1])
+ else:
+ tmp.append(lines[linenum-1])
+ src="".join(tmp)
+ c.src=src
+ c.endline=linenum
+ decal=len(line)-line.rindex(')')
+ c.lastparen=len(src)-decal
+ if debug:print "logical line %s %s:" % (c.lineno,c.endline),src
+ break
+ line=iterlines.next()
+ linenum=linenum+1
+
+ return root
+
+
+def lastparen(src):
+ """Retourne la position de la derniere parenthese fermante dans src a partir du debut de la string
+
+ La string doit contenir la premiere parenthese ouvrante
+ """
+ src=maskStringsAndComments(src)
+ level=0
+ i,n=0,len(src)
+ while i < n:
+ ch=src[i]
+ i=i+1
+ if ch in ('(','['):
+ level=level+1
+ if ch in (')',']'):
+ if level == 0:
+ raise UnbalancedBracesException()
+ level=level-1
+ if level == 0:
+ #derniere parenthese fermante
+ return i
+
+def lastparen2(src):
+ """Retourne la position de la derniere parenthese fermante dans src a partir du debut de la string
+
+ La string ne contient pas la premiere parenthese ouvrante
+ """
+ src=maskStringsAndComments(src)
+ level=1
+ i,n=0,len(src)
+ while i < n:
+ ch=src[i]
+ i=i+1
+ if ch in ('(','['):
+ level=level+1
+ if ch in (')',']'):
+ if level == 0:
+ raise UnbalancedBracesException()
+ level=level-1
+ if level == 0:
+ #derniere parenthese fermante
+ return i
+
--- /dev/null
+# -*- coding: utf-8 -*-
+import logging
+from parseur import FactNode
+
+#debug=1
+debug=0
+#on n'a qu'un mocle par commande. On peut donc supprimer le mocle sans trop de précautions (a part iterer a l'envers sur les commandes)
+#avant de supprimer un autre mocle, on remet à jour l'arbre syntaxique (lineno,colno,etc.)
+def removemocle(jdc,command,mocle):
+ #on itere sur les commandes a l'envers pour ne pas polluer les numeros de ligne avec les modifications
+ commands= jdc.root.childNodes[:]
+ commands.reverse()
+ for c in commands:
+ if c.name != command:continue
+ for mc in c.childNodes:
+ if mc.name != mocle:continue
+ removemc(jdc,c,mc)
+
+ jdc.reset(jdc.getSource())
+
+def removemc(jdc,c,mc):
+ if debug:print "Suppression de:",c.name,mc.name,mc.lineno,mc.colno,mc.endline,mc.endcol
+ logging.info("Suppression de: %s, %s, %s, %s, %d, %d",c.name,mc.name,mc.lineno,mc.colno,mc.endline,mc.endcol)
+ if mc.endline > mc.lineno:
+ if debug:print "mocle sur plusieurs lignes--%s--" % jdc.getLines()[mc.lineno-1][mc.colno:]
+ jdc.getLines()[mc.lineno-1]=jdc.getLines()[mc.lineno-1][:mc.colno]
+ jdc.getLines()[mc.endline-1]=jdc.getLines()[mc.endline-1][mc.endcol:]
+ #attention : supprimer les lignes à la fin
+ jdc.getLines()[mc.lineno:mc.endline-1]=[]
+ else:
+ if debug:print "mocle sur une ligne--%s--" % jdc.getLines()[mc.lineno-1][mc.colno:mc.endcol]
+ s=jdc.getLines()[mc.lineno-1]
+ jdc.getLines()[mc.lineno-1]=s[:mc.colno]+s[mc.endcol:]
+ fusionne(jdc,mc.lineno-1)
+ jdc.reset(jdc.getSource())
+
+def removemocleinfact(jdc,command,fact,mocle):
+ #on itere sur les commandes a l'envers pour ne pas polluer les numeros de ligne avec les modifications
+ commands= jdc.root.childNodes[:]
+ commands.reverse()
+ for c in commands:
+ if c.name != command:continue
+ for mc in c.childNodes:
+ if mc.name != fact:continue
+ l=mc.childNodes[:]
+ l.reverse()
+ for ll in l:
+ for n in ll.childNodes:
+ if n.name != mocle:continue
+ removemc(jdc,c,n)
+
+ jdc.reset(jdc.getSource())
+
+def fusionne(jdc,numLigne):
+ index=0
+ texte=jdc.getLines()[numLigne]
+ fusion=1
+ while (index < len(texte)) :
+ if texte[index] not in (" ",",",")",";","\n") :
+ fusion=0
+ break
+ index=index+1
+ if fusion :
+ import load
+ jdc.joinLineandNext(numLigne)
--- /dev/null
+# -*- coding: utf-8 -*-
+import logging
+from parseur import FactNode
+debug=1
+
+#on n'a qu'un mocle par commande.
+#en fin de traitement, on remet à jour l'arbre syntaxique (lineno,colno,etc.)
+
+def renamemocle(jdc,command,mocle,new_name):
+ for c in jdc.root.childNodes:
+ if c.name != command:continue
+ for mc in c.childNodes:
+ if mc.name != mocle:continue
+ if debug:print "Renommage de:",c.name,mc.name,mc.lineno,mc.colno
+ logging.info("Renommage de: %s, %s, %s, %s en %s",c.name,mc.name,mc.lineno,mc.colno,new_name)
+ s=jdc.getLines()[mc.lineno-1]
+ jdc.getLines()[mc.lineno-1]=s[:mc.colno]+new_name+s[mc.colno+len(mocle):]
+
+ jdc.reset(jdc.getSource())
+
+def renamemocleinfact(jdc,command,fact,mocle,new_name):
+ for c in jdc.root.childNodes:
+ if c.name != command:continue
+ for mc in c.childNodes:
+ if mc.name != fact:continue
+ l=mc.childNodes[:]
+ #on itere a l'envers
+ l.reverse()
+ for ll in l:
+ for n in ll.childNodes:
+ if n.name != mocle:continue
+ s=jdc.getLines()[n.lineno-1]
+ jdc.getLines()[n.lineno-1]=s[:n.colno]+new_name+s[n.colno+len(mocle):]
+
+ jdc.reset(jdc.getSource())
+
+def renamecommande(jdc,command,new_name):
+# nom de la commande "ancien format" , nom de la commande " nouveau format "
+ for c in jdc.root.childNodes:
+ if c.name != command:continue
+ if debug:print "Renommage de:",c.name,new_name ,c.lineno,c.colno
+ logging.info("Renommage de: %s, %s, %s, %s en %s",c.name,"",c.lineno,c.colno,new_name)
+ s=jdc.getLines()[c.lineno-1]
+ jdc.getLines()[c.lineno-1]=s[:c.colno]+new_name+s[c.colno+len(command):]
+
+ jdc.reset(jdc.getSource())
+
+
--- /dev/null
+DEBUT()
+
+MAIL=LIRE_MAILLAGE( )
+
+#
+# DEFINITION DES GROUPES DE NOEUDS
+MAIL=DEFI_GROUP( reuse=MAIL, MAILLAGE=MAIL,CREA_GROUP_NO=(
+ _F( GROUP_MA = 'ENCAST'),
+ _F( GROUP_MA = 'CONT_PR'),
+ _F( GROUP_MA = ( 'B', 'SECT_MED', )))
+ )
+
+MAIL=DEFI_GROUP( CREA_GROUP_NO=[
+ _F( GROUP_MA = 'ENCAST',INFO=2),
+ _F( GROUP_MA = 'CONT_PR'),
+ _F( GROUP_MA = ( 'B', 'SECT_MED', ))]
+ )
+#
+# DEFINITION DU MODELE
+MODELE=AFFE_MODELE( MAILLAGE=MAIL,
+ AFFE=_F( TOUT = 'OUI',
+ PHENOMENE = 'MECANIQUE',
+ MODELISATION = 'AXIS_FOURIER') )
+
+#
+# DEFINITION DU MATERIAU
+ACIER=DEFI_MATERIAU( ELAS= _F( E = 2.1E11, NU = 0.3,
+ ALPHA = 1.E-5, RHO = 7800.) #comment
+ #comment
+ )
+
+#
+# ATTRIBUTION DU MATERIAU
+CHMAT=AFFE_MATERIAU( MAILLAGE =MAIL,
+ AFFE=_F( TOUT = 'OUI',
+ MATER = ACIER) )
+CHMAT2=AFFE_MATERIAU( MAILLAGE =MAIL,
+ AFFE=(_F( TOUT = 'OUI', MATER = ACIER),
+ _F( TOUT = 'OUI', MATER = ACIER),
+ _F( TOUT = 'OUI', MATER = ACIER),
+ )
+ )
+STAT_NONLINE(SOLVEUR=_F(METHOD="FRONT",
+ PREC=1.E-3))
+STAT_NONLINE(SOLV=_F(METHOD="FRONT",
+ PREC=1.E-3),
+ AFFE=(_F( TOUT = 'OUI', MATER = ACIER),
+ _F( TOUT = 'OUI', MATER = ACIER),
+ _F( TOUT = 'OUI', MATER = ACIER),
+ )
+ )
+
+MA=LIRE_MAILLAGE(UNITE=20,INFO=2,TEXT="""aaaa(
+bbb""")
+"""
+MOO=AFFE_MODELE()
+"""
+MO=AFFE_MODELE(MAILLAGE=MA,
+ INFO=2,
+ )
+#LIRE_MAILLAGE()
+MA2=LIRE_MAILLAGE(UNITE=21)
+MA3 = LIRE_MAILLAGE ( #comment ( ]
+ UNITE=23,
+ )
+MA4 = LIRE_MAILLAGE ( #commentaire commande
+ UNITE
+ =
+ 24
+ ,INFO=2 #commentaire mocle INFO
+ ) #commentaire fin commande
+M5=LIRE_MAILLAGE ( #comment commande
+)
+a[2*(i+1)]=LIRE_MAILLAGE(UNITE=21)
--- /dev/null
+# -*- coding: utf-8 -*-
+
+import re
+
+def indexToCoordinates(src, index):
+ """return le numero de la colonne (x) et le numero de la ligne (y) dans src"""
+ y = src[: index].count("\n")
+ startOfLineIdx = src.rfind("\n", 0, index)+1
+ x = index-startOfLineIdx
+ return x, y
+
+def linetodict(line):
+ """Transforme une ligne (string) en un dictionnaire de mots repérés par le numéro de la colonne"""
+
+ words = re.split("(\w+)", line)
+ h = {};i = 0
+ for word in words:
+ h[i] = word
+ i+=len(word)
+ return h
+
+def dicttoline(d):
+ """Transformation inverse: à partir d'un dictionnaire retourne une ligne"""
+ cols = d.keys()
+ cols.sort()
+ return "".join([d[colno]for colno in cols])
--- /dev/null
+# -*- coding: utf-8 -*-
+
+import re
+from compiler import visitor
+
+class MatchFinder:
+ """Visiteur de base : gestion des matches """
+ def reset(self,line):
+ self.matches = []
+ self.words = re.split("(\w+)", line) # every other one is a non word
+ self.positions = []
+ i = 0
+ for word in self.words:
+ self.positions.append(i)
+ i+=len(word)
+ self.index = 0
+
+ def popWordsUpTo(self, word):
+ if word == "*":
+ return # won't be able to find this
+ posInWords = self.words.index(word)
+ idx = self.positions[posInWords]
+ self.words = self.words[posInWords+1:]
+ self.positions = self.positions[posInWords+1:]
+
+ def appendMatch(self,name):
+ idx = self.getNextIndexOfWord(name)
+ self.matches.append((idx, name))
+
+ def getNextIndexOfWord(self,name):
+ return self.positions[self.words.index(name)]
+
+
+class KeywordFinder(MatchFinder):
+ """Visiteur pour les keywords d'une commande """
+
+ def visitKeyword(self,node):
+ idx = self.getNextIndexOfWord(node.name)
+ #self.appendMatch(node.name)
+ self.popWordsUpTo(node.name)
+ prevmatches=self.matches
+ self.matches = []
+ for child in node.getChildNodes():
+ self.visit(child)
+ prevmatches.append((idx, node.name,self.matches))
+ self.matches=prevmatches
+
+ def visitTuple(self,node):
+ matchlist=[]
+ for child in node.getChildNodes():
+ self.matches = []
+ self.visit(child)
+ if self.matches:
+ #Pour eviter les tuples et listes ordinaires, on ne garde que les visites fructueuses
+ matchlist.append(self.matches)
+ self.matches=matchlist
+
+ visitList=visitTuple
+
+ def visitName(self,node):
+ self.popWordsUpTo(node.name)
+ def visitAssName(self,node):
+ self.popWordsUpTo(node.name)
# -*- coding: utf-8 -*-
"""
- $Id: __init__.py,v 1.4 2003/03/06 14:36:11 eficas Exp $
+ $Id: __init__.py,v 1.5.8.1 2006/03/10 15:09:52 eficas Exp $
Le package UTILITES contient les fonctions permettant
d'instrumenter un script :
##__all__ = [ "ici" , "message" , "scrute" , "pause" , "appels" ]
try :
- from developpeur import *
+ from developpeur import *
except :
- pass
+ pass
from ici import *
from execute import *
from pause import *
"""
try :
- from developpeur import DEVELOPPEUR
+ from developpeur import DEVELOPPEUR
except :
- DEVELOPPEUR=None
+ DEVELOPPEUR=None
def NULL( *l_args, **d_args ) : pass
if DEVELOPPEUR :
import developpeur
- developpeur.sortie.write( "import de "+__name__+" : $Id: appels.py,v 1.2 2003/03/06 14:36:11 eficas Exp $" )
+ developpeur.sortie.write( "import de "+__name__+" : $Id: appels.py,v 1.3.8.1 2006/03/10 15:09:53 eficas Exp $" )
developpeur.sortie.write( "\n" )
import sys
for e in trace[2:-1] :
fic,numero,fonc,inst = e
position=fic+":"+str(numero)+":"
- if len(position)>lmax : lmax=len(position)
+ if len(position)>lmax : lmax=len(position)
lmax += 1 # Pour eloigner les informations du nom du fichier
for e in trace[1:-1] :
return
else :
- APPELS = NULL
+ APPELS = NULL
import os
def hostname() :
- return os.uname()[1]
+ return os.uname()[1]
group_eficas=108
group_salome=107
DEVELOPPEUR=d_dev[ os.getuid() ]
import sys
sortie=sys.stderr
- sortie.write( "import de "+__name__+" : $Id: developpeur.py,v 1.1 2003/03/06 14:36:11 eficas Exp $" )
+ sortie.write( "import de "+__name__+" : $Id: developpeur.py,v 1.2.8.1 2006/03/10 15:09:53 eficas Exp $" )
sortie.write( "\n" )
"""
try :
- from developpeur import DEVELOPPEUR
+ from developpeur import DEVELOPPEUR
except :
- DEVELOPPEUR=None
+ DEVELOPPEUR=None
if DEVELOPPEUR :
import scrute
import types
import developpeur
- developpeur.sortie.write( "import de "+__name__+" : $Id: execute.py,v 1.1 2003/03/06 14:36:11 eficas Exp $" )
+ developpeur.sortie.write( "import de "+__name__+" : $Id: execute.py,v 1.2.8.1 2006/03/10 15:09:54 eficas Exp $" )
developpeur.sortie.write( "\n" )
developpeur.sortie.flush()
import sys
sortie=sys.stderr
-sortie.write( "import de "+__name__+" : $Id: funcname.py,v 1.1 2003/03/06 14:36:11 eficas Exp $" )
+sortie.write( "import de "+__name__+" : $Id: funcname.py,v 1.2.8.1 2006/03/10 15:09:54 eficas Exp $" )
sortie.write( "\n" )
def get_nombre_de_blancs( str ) :
####print "RECHERCHE de la classe de "+filename+" ligne : ",lineno
if lineno>0 :
try :
- f=open( filename , 'r' )
- except Exception,e :
- print ">>>>",str(e)
- sys.stdout.flush()
- sys.exit(17)
+ f=open( filename , 'r' )
+ except Exception,e :
+ print ">>>>",str(e)
+ sys.stdout.flush()
+ sys.exit(17)
s = f.read()
f.close()
elif re.search( "^class ", line ) != None :
classname = re.sub( "^class *" , "" , line )
classname = re.sub( " *[(:].*$" , "" , classname )
- current_func = ""
+ current_func = ""
elif current_func != "" and re.search( "^[^ \t]", line ) != None :
- current_func = ""
- classname = ""
+ current_func = ""
+ classname = ""
k = k+1
if current_func == "" : current_func="__main__"
return classname ,current_func
def __init__ ( self , *args ) :
- # le premier argument est optionnel (c'est un nom de fonction
+ # le premier argument est optionnel (c'est un nom de fonction
# qu'on peut reconstituer avec le nom du fichier et le numéro de ligne.
k=0
self.name = None
assert(args[k]!=None)
assert(args[k]!="")
- self.filename = args[k] # recuperation du nom du fichier source
+ self.filename = args[k] # recuperation du nom du fichier source
k = k+1
assert(args[k]>0)
- self.lineno = args[k] # recupération du numero de ligne
+ self.lineno = args[k] # recupération du numero de ligne
self.classname,funcname = get_classname( self.filename, self.lineno )
if self.name == None : self.name = funcname
if __name__ == "__main__" :
- print 'FUNCNAME("","funcname.py", 68)='+str(FUNCNAME("","funcname.py", 63) )
- print 'FUNCNAME("funcname.py", 68)='+str(FUNCNAME("funcname.py", 63) )
+ print 'FUNCNAME("","funcname.py", 68)='+str(FUNCNAME("","funcname.py", 63) )
+ print 'FUNCNAME("funcname.py", 68)='+str(FUNCNAME("funcname.py", 63) )
"""
try :
- from developpeur import DEVELOPPEUR
+ from developpeur import DEVELOPPEUR
except :
- DEVELOPPEUR=None
+ DEVELOPPEUR=None
def NULL( *l_args, **d_args ) : pass
if DEVELOPPEUR :
import developpeur
- developpeur.sortie.write( "import de "+__name__+" : $Id: ici.py,v 1.2 2003/03/06 14:36:11 eficas Exp $" )
+ developpeur.sortie.write( "import de "+__name__+" : $Id: ici.py,v 1.3.8.1 2006/03/10 15:09:54 eficas Exp $" )
developpeur.sortie.write( "\n" )
import sys
else :
- ICI = NULL
+ ICI = NULL
"""
try :
- from developpeur import DEVELOPPEUR
+ from developpeur import DEVELOPPEUR
except :
- DEVELOPPEUR=None
+ DEVELOPPEUR=None
def NULL( *l_args, **d_args ) : pass
if DEVELOPPEUR :
import developpeur
- developpeur.sortie.write( "import de "+__name__+" : $Id: message.py,v 1.2 2003/03/06 14:36:11 eficas Exp $" )
+ developpeur.sortie.write( "import de "+__name__+" : $Id: message.py,v 1.3.8.1 2006/03/10 15:09:55 eficas Exp $" )
developpeur.sortie.write( "\n" )
import sys
"""
try :
- from developpeur import DEVELOPPEUR
+ from developpeur import DEVELOPPEUR
except :
- DEVELOPPEUR=None
+ DEVELOPPEUR=None
def NULL( *l_args, **d_args ) : pass
if DEVELOPPEUR :
import developpeur
- developpeur.sortie.write( "import de "+__name__+" : $Id: modification.py,v 1.1 2003/03/06 14:36:11 eficas Exp $" )
+ developpeur.sortie.write( "import de "+__name__+" : $Id: modification.py,v 1.2.8.1 2006/03/10 15:09:55 eficas Exp $" )
developpeur.sortie.write( "\n" )
import ici
une attente.
"""
try :
- from developpeur import DEVELOPPEUR
+ from developpeur import DEVELOPPEUR
except :
- DEVELOPPEUR=None
+ DEVELOPPEUR=None
def NULL( *l_args, **d_args ) : pass
if DEVELOPPEUR :
import developpeur
- developpeur.sortie.write( "import de "+__name__+" : $Id: pause.py,v 1.2 2003/03/06 14:36:12 eficas Exp $" )
+ developpeur.sortie.write( "import de "+__name__+" : $Id: pause.py,v 1.3.8.1 2006/03/10 15:09:56 eficas Exp $" )
developpeur.sortie.write( "\n" )
import sys
"""
try :
- from developpeur import DEVELOPPEUR
+ from developpeur import DEVELOPPEUR
except :
- DEVELOPPEUR=None
+ DEVELOPPEUR=None
def NULL( *l_args, **d_args ) : pass
if DEVELOPPEUR :
import developpeur
- developpeur.sortie.write( "import de "+__name__+" : $Id: scrute.py,v 1.2 2003/03/06 14:36:12 eficas Exp $" )
+ developpeur.sortie.write( "import de "+__name__+" : $Id: scrute.py,v 1.3.8.1 2006/03/10 15:09:56 eficas Exp $" )
developpeur.sortie.write( "\n" )
import re
import linecache
-#@ MODIF V_MCCOMPO Validation DATE 14/09/2004 AUTEUR MCOURTOI M.COURTOIS
+#@ MODIF V_MCCOMPO Validation DATE 22/05/2006 AUTEUR MCOURTOI M.COURTOIS
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
if not v.defaut : continue
if not dico.has_key(k):
dico[k]=v(nom=k,val=None,parent=self)
+ #on ajoute l'objet detenteur de regles pour des validations plus sophistiquees (a manipuler avec precaution)
+ dico["self"]=self
return dico
-#@ MODIF V_MCSIMP Validation DATE 19/09/2005 AUTEUR DURAND C.DURAND
+#@ MODIF V_MCSIMP Validation DATE 16/05/2006 AUTEUR DURAND C.DURAND
# -*- coding: iso-8859-1 -*-
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
# Modules EFICAS
from Noyau import N_CR
from Noyau.N_Exception import AsException
+from Noyau.N_VALIDATOR import ValError,TypeProtocol,CardProtocol,IntoProtocol
+from Noyau.N_VALIDATOR import listProto
class MCSIMP:
"""
def __init__(self):
self.state='undetermined'
+ self.typeProto=TypeProtocol("type",typ=self.definition.type)
+ self.intoProto=IntoProtocol("into",into=self.definition.into,val_min=self.definition.val_min,val_max=self.definition.val_max)
+ self.cardProto=CardProtocol("card",min=self.definition.min,max=self.definition.max)
def get_valid(self):
if hasattr(self,'valid'):
self.cr.fatal(string.join(("Mot-clé : ",self.nom," obligatoire non valorisé")))
valid = 0
- if v is None:
+ lval=listProto.adapt(v)
+ if lval is None:
valid=0
if cr == 'oui' :
self.cr.fatal("None n'est pas une valeur autorisée")
else:
# type,into ...
- valid = self.verif_type(val=v,cr=cr)*self.verif_into(cr=cr)*self.verif_card(cr=cr)
- #
- # On verifie les validateurs s'il y en a et si necessaire (valid == 1)
- #
- if valid and self.definition.validators and not self.definition.validators.verif(self.valeur):
- if cr == 'oui' :
- self.cr.fatal(string.join(("Mot-clé : ",self.nom,"devrait avoir ",self.definition.validators.info())))
- valid=0
- # fin des validateurs
- #
+ #typeProto=TypeProtocol("type",typ=self.definition.type)
+ #intoProto=IntoProtocol("into",into=self.definition.into,val_min=self.definition.val_min,val_max=self.definition.val_max)
+ #cardProto=CardProtocol("card",min=self.definition.min,max=self.definition.max)
+ #typeProto=self.definition.typeProto
+ #intoProto=self.definition.intoProto
+ #cardProto=self.definition.cardProto
+ typeProto=self.typeProto
+ intoProto=self.intoProto
+ cardProto=self.cardProto
+ if cr == 'oui' :
+ #un cr est demandé : on collecte tous les types d'erreur
+ try:
+ for val in lval:
+ typeProto.adapt(val)
+ except ValError,e:
+ valid=0
+ self.cr.fatal(str(e))
+ try:
+ for val in lval:
+ intoProto.adapt(val)
+ except ValError,e:
+ valid=0
+ self.cr.fatal(str(e))
+ try:
+ cardProto.adapt(lval)
+ except ValError,e:
+ valid=0
+ self.cr.fatal(str(e))
+ #
+ # On verifie les validateurs s'il y en a et si necessaire (valid == 1)
+ #
+ if valid and self.definition.validators:
+ try:
+ self.definition.validators.convert(lval)
+ except ValError,e:
+ self.cr.fatal(string.join(("Mot-clé",self.nom,"invalide :",str(e),"\nCritere de validite:",self.definition.validators.info())))
+ valid=0
+ else:
+ #si pas de cr demande, on sort a la toute premiere erreur
+ try:
+ for val in lval:
+ typeProto.adapt(val)
+ intoProto.adapt(val)
+ cardProto.adapt(lval)
+ if self.definition.validators:
+ self.definition.validators.convert(lval)
+ except ValError,e:
+ valid=0
self.set_valid(valid)
return self.valid
"""
return self.definition.statut=='o'
- def verif_card(self,cr='non'):
- """
- un mot-clé simple ne peut etre répété :
- la cardinalité ici s'entend par la vérification que le nombre d'arguments de self.valeur
- est bien compris entre self.min et self.max dans le cas où il s'agit d'une liste
- """
- card = 1
- min=self.definition.min
- max=self.definition.max
-
- if type(self.valeur) == types.TupleType and not self.valeur[0] in ('RI','MP') or type(self.valeur) == types.ListType:
- length=len(self.valeur)
- else:
- if self.valeur == None :
- length=0
- else:
- length=1
-
- if length < min or length >max:
- if cr == 'oui':
- self.cr.fatal("Nombre d'arguments de %s incorrect pour %s (min = %s, max = %s)" %(`self.valeur`,self.nom,min,max))
- card = 0
- return card
-
- def verif_type(self,val=None,cr='non'):
- """
- FONCTION :
- Cette methode verifie que le type de l'argument val est en conformite avec celui
- qui est declare dans la definition du mot cle simple.
- Elle a plusieurs modes de fonctionnement liés à la valeur de cr.
- Si cr vaut 'oui' : elle remplit le compte-rendu self.cr sinon elle ne le remplit pas.
- PARAMETRE DE RETOUR :
- Cette méthode retourne une valeur booléenne qui vaut 1 si le type de val est correct ou 0 sinon
-
- """
- valeur = val
- if valeur == None :
- if cr == 'oui':
- self.cr.fatal("None n'est pas une valeur autorisée")
- return 0
-
- if type(valeur) == types.TupleType and not valeur[0] in ('RI','MP') or type(valeur) == types.ListType:
- # Ici on a identifié une liste de valeurs
- for val in valeur:
- if not self.verif_type(val=val,cr=cr) : return 0
- return 1
-
- # Ici, valeur est un scalaire ...il faut tester sur tous les types ou les valeurs possibles
-
- for type_permis in self.definition.type:
- if self.compare_type(valeur,type_permis) : return 1
-
- # si on sort de la boucle précédente par ici c'est que l'on n'a trouvé aucun type valable --> valeur refusée
- if cr =='oui':
- self.cr.fatal("%s n'est pas d'un type autorisé" %`valeur`)
- return 0
-
- def verif_into(self,cr='non'):
- """
- Vérifie si la valeur de self est bien dans l'ensemble discret de valeurs
- donné dans le catalogue derrière l'attribut into ou vérifie que valeur est bien compris
- entre val_min et val_max
- """
- if self.definition.into == None :
- #on est dans le cas d'un ensemble continu de valeurs possibles (intervalle)
- if self.definition.val_min == '**' and self.definition.val_max == '**':
- # L'intervalle est infini, on ne fait pas de test
- return 1
- if type(self.valeur) == types.TupleType and not self.valeur[0] in ('RI','MP') or type(self.valeur) == types.ListType:
- # Cas d'une liste de valeurs
- test = 1
- for val in self.valeur :
- if type(val) != types.StringType and type(val) != types.InstanceType:
- test = test*self.isinintervalle(val,cr=cr)
- return test
- else :
- # Cas d'un scalaire
- val = self.valeur
- if type(val)!=types.StringType and type(val)!=types.InstanceType:
- return self.isinintervalle(self.valeur,cr=cr)
- else :
- return 1
- else :
- # on est dans le cas d'un ensemble discret de valeurs possibles (into)
- if type(self.valeur) == types.TupleType and not self.valeur[0] in ('RI','MP') or type(self.valeur) == types.ListType:
- # Cas d'une liste de valeur
- for e in self.valeur:
- if e not in self.definition.into:
- if cr=='oui':
- self.cr.fatal(string.join(("La valeur :",`e`," n'est pas permise pour le mot-clé :",self.nom)))
- return 0
- else:
- if self.valeur not in self.definition.into:
- if cr=='oui':
- self.cr.fatal(string.join(("La valeur :",`self.valeur`," n'est pas permise pour le mot-clé :",self.nom)))
- return 0
- return 1
-
- def is_complexe(self,valeur):
- """ Retourne 1 si valeur est un complexe, 0 sinon """
- if type(valeur) == types.InstanceType :
- #XXX je n'y touche pas pour ne pas tout casser mais il serait
- #XXX préférable d'appeler une méthode de valeur : return valeur.is_type('C'), par exemple
- if valeur.__class__.__name__ in ('complexe','PARAMETRE_EVAL'):
- return 1
- elif valeur.__class__.__name__ in ('PARAMETRE',):
- # il faut tester si la valeur du parametre est un complexe
- return self.is_complexe(valeur.valeur)
- else:
- return 0
- elif type(valeur) in (types.ComplexType,types.IntType,types.FloatType,types.LongType):
- # Pour permettre l'utilisation de complexes Python
- return 1
- elif type(valeur) != types.TupleType :
- # On n'autorise pas les listes pour les complexes
- return 0
- elif len(valeur) != 3:return 0
- else:
- # Un complexe doit etre un tuple de longueur 3 avec 'RI' ou 'MP' comme premiere
- # valeur suivie de 2 reels.
- try:
- if string.strip(valeur[0]) in ('RI','MP') and self.is_reel(valeur[1]) and self.is_reel(valeur[2]):
- return 1
- except:
- return 0
-
- def is_reel(self,valeur):
- """
- Retourne 1 si valeur est un reel, 0 sinon
- """
- if type(valeur) == types.InstanceType :
- #XXX je n'y touche pas pour ne pas tout casser mais il serait
- #XXX préférable d'appeler une méthode de valeur : return valeur.is_type('R'), par exemple
- #XXX ou valeur.is_reel()
- #XXX ou encore valeur.compare(self.is_reel)
- if valeur.__class__.__name__ in ('reel','PARAMETRE_EVAL') :
- return 1
- elif valeur.__class__.__name__ in ('PARAMETRE',):
- # il faut tester si la valeur du parametre est un réel
- return self.is_reel(valeur.valeur)
- else:
- return 0
- elif type(valeur) not in (types.IntType,types.FloatType,types.LongType):
- # ce n'est pas un réel
- return 0
- else:
- return 1
-
- def is_entier(self,valeur):
- """ Retourne 1 si valeur est un entier, 0 sinon """
- if type(valeur) == types.InstanceType :
- #XXX je n'y touche pas pour ne pas tout casser mais il serait
- #XXX préférable d'appeler une méthode de valeur : return valeur.is_type('I'), par exemple
- if valeur.__class__.__name__ in ('entier','PARAMETRE_EVAL') :
- return 1
- elif valeur.__class__.__name__ in ('PARAMETRE',):
- # il faut tester si la valeur du parametre est un entier
- return self.is_entier(valeur.valeur)
- else:
- return 0
- elif type(valeur) not in (types.IntType,types.LongType):
- # ce n'est pas un entier
- return 0
- else:
- return 1
-
- def is_shell(self,valeur):
- """
- Retourne 1 si valeur est un shell, 0 sinon
- Pour l'instant aucune vérification n'est faite
- On impose juste que valeur soit une string
- """
- if type(valeur) != types.StringType:
- return 0
- else:
- return 1
-
- def is_object_from(self,objet,classe):
- """
- Retourne 1 si objet est une instance de la classe classe, 0 sinon
- """
- if type(objet) != types.InstanceType :
- return 0
-
- if isinstance(objet,classe) :
- # On accepte les instances de la classe et des classes derivees
- return 1
-
- return 0
-
- def compare_type(self,valeur,type_permis):
- """
- Fonction booléenne qui retourne 1 si valeur est du type type_permis, 0 sinon
- """
- if type(valeur) == types.InstanceType and valeur.__class__.__name__ == 'PARAMETRE':
- if type(valeur.valeur) == types.TupleType :
- # on a à faire à un PARAMETRE qui définit une liste d'items
- # --> on teste sur la première car on n'accepte que les liste homogènes
- valeur = valeur.valeur[0]
- if type_permis == 'R':
- return self.is_reel(valeur)
- elif type_permis == 'I':
- return self.is_entier(valeur)
- elif type_permis == 'C':
- return self.is_complexe(valeur)
- elif type_permis == 'shell':
- return self.is_shell(valeur)
- elif type_permis == 'TXM':
- if type(valeur) != types.InstanceType:
- return type(valeur)==types.StringType
- else:
- #XXX je n'y touche pas pour ne pas tout casser mais il serait
- #XXX préférable d'appeler une méthode de valeur : return valeur.is_type('TXM'), par exemple
- if valeur.__class__.__name__ == 'chaine' :
- return 1
- elif valeur.__class__.__name__ == 'PARAMETRE':
- # il faut tester si la valeur du parametre est une string
- return type(valeur.valeur)==types.StringType
- else:
- return 0
- elif type(type_permis) == types.ClassType:
- # on ne teste pas certains objets de type GEOM , assd, ...
- # On appelle la méthode de classe is_object de type_permis.
- # Comme valeur peut etre de n'importe quel type on utilise la fonction (is_object.im_func)
- # et non pas la methode (is_object) ce qui risquerait de provoquer des erreurs
- if type_permis.is_object.im_func(valeur):
- return 1
- else :
- return self.is_object_from(valeur,type_permis)
- else:
- print "Type non encore géré %s" %`type_permis`
- print self.nom,self.parent.nom,self.jdc.fichier
-
- def isinintervalle(self,valeur,cr='non'):
- """
- Booléenne qui retourne 1 si la valeur passée en argument est comprise dans
- le domaine de définition donné dans le catalogue, 0 sinon.
- """
- if type(valeur) not in (types.IntType,types.FloatType,types.LongType) :
- return 1
- else :
- min = self.definition.val_min
- max = self.definition.val_max
- if min == '**': min = valeur -1
- if max == '**': max = valeur +1
- if valeur < min or valeur > max :
- if cr=='oui':
- self.cr.fatal(string.join(("La valeur :",`valeur`," du mot-clé ",self.nom,\
- " est en dehors du domaine de validité [",`min`,",",`max`,"]")))
- return 0
- else :
- return 1
-
def init_modif_up(self):
"""
Propage l'état modifié au parent s'il existe et n'est l'objet
))
# Sometimes, the user (e.g., me) writes:
- # 'fred' = Table:
+ # 'fred' = Table:
# instead of:
- # 'fred' = Table is:
+ # 'fred' = Table is:
# Unfortunately, without the "is", it would get too confusing whether
# we actually wanted an if block...
t_bad_tableblock = ('tableblock',Table,
))
# Sometimes, the use (e.g., me again) write:
- # 'fred' IsIn jim
+ # 'fred' IsIn jim
# instead of:
- # 'fred' = IsIn jim
+ # 'fred' = IsIn jim
# Whilst I'm not entirely convinced that "=" is the best character
# to use here, I think we do need something!
t_bad_tuple = ('tuple',Table,
left,right = dict["onfalse"]
self.onfalse = self.text[left:right]
else:
- self.onfalse = None # "MatchFail"
+ self.onfalse = None # "MatchFail"
if dict["ontrue"]:
left,right = dict["ontrue"]
self.ontrue = self.text[left:right]
else:
- self.ontrue = None # "next"
+ self.ontrue = None # "next"
def only_in_block(self):
"""Return true if we can only occur inside a block."""
left,right = dict["onfalse"]
self.onfalse = self.text[left:right]
else:
- self.onfalse = None # "MatchFail"
+ self.onfalse = None # "MatchFail"
if dict["ontrue"]:
left,right = dict["ontrue"]
self.ontrue = self.text[left:right]
else:
- self.ontrue = None # "next"
+ self.ontrue = None # "next"
def only_in_block(self):
"""Return true if we can only occur inside a block."""
"SubTable is not allowed outside a block at line %d"%\
(self.lineno)
- self.items = [] # all lines within this block
- self.business = [] # just those that are "our business"
+ self.items = [] # all lines within this block
+ self.business = [] # just those that are "our business"
self.label_dict = {} # remember our labels and their locations
self.next_index = 0 # 'business' line indices
self.inner_indent = None
--- /dev/null
+# -*- coding: utf-8 -*-
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
+import sys,string,re,tokenize
+import cStringIO
+
+class ENTITE_JDC :
+ def __init__(self):
+ self.texte = ''
+
+ def set_text(self,texte):
+ self.texte = texte
+
+ def append_text(self,texte):
+ """
+ """
+ self.texte = self.texte +texte
+
+class COMMENTAIRE(ENTITE_JDC):
+
+ def __str__(self):
+ """
+ Retourne une chaîne de caractères représentant self
+ sous une forme interprétable par EFICAS
+ """
+ t=repr(self.texte)
+ return "COMMENTAIRE("+t+")\n"
+
+ def append_text(self,texte):
+ """
+ Ajoute texte à self.texte en enlevant le # initial
+ """
+ if texte[0] == '#':
+ self.texte = self.texte+texte[1:]
+ else:
+ # le dièse n'est pas sur le premier caractère
+ amont,aval = string.split(texte,'#',1) # on découpe suivant la première occurrence de #
+ self.texte = self.texte +amont + aval
+
+class AFFECTATION(ENTITE_JDC):
+
+ def append_text(self,texte):
+ """
+ Ajoute texte à self.texte en enlevant tout retour chariot et tout point virgule
+ """
+ self.texte = self.texte+texte
+
+ def __str__(self):
+ """
+ Retourne une expression de l'affectation compréhensible par ACCAS
+ et exploitable par EFICAS
+ """
+ #t=repr(self.texte)
+ t=self.texte
+ return "PARAMETRE(nom='"+self.name+"',valeur="+t+")"
+
+class COMMANDE_COMMENTARISEE(ENTITE_JDC):
+
+ def append_text(self,texte):
+ """
+ Ajoute texte à self.texte en enlevant les doubles commentaires
+ """
+ texte = string.strip(texte)
+ texte = string.strip(texte[2:])
+ self.texte = self.texte+(len(self.texte)>0)*'\n'+texte
+
+ def __str__(self):
+ """
+ Retourne une expression de la commande commentarisée compréhensible par ACCAS
+ et exploitable par EFICAS
+ """
+ return "COMMANDE_COMM(texte="+repr(self.texte)+")\n"
+
+
+next = {}
+next['if'] = next['elif'] = 'elif', 'else', 'end'
+next['while'] = next['for'] = 'else', 'end'
+next['try'] = 'except', 'finally'
+next['except'] = 'except', 'else', 'end'
+next['else'] = next['finally'] = next['def'] = next['class'] = 'end'
+next['end'] = ()
+start = 'if', 'while', 'for', 'try', 'def', 'class'
+
+class PARSEUR_PYTHON:
+ """
+ Cette classe sert à créer un objet PARSEUR_PYTHON qui réalise l'analyse d'un texte
+ représentant un JDC Python en distinguant :
+ - les commentaires inter commandes
+ - les affectations
+ - les commandes
+ """
+ # au moins 1 caractère non blanc ou non tabulation
+ #pattern_ligne_non_blanche = re.compile(r'^[\w\t]+')
+ pattern_ligne_non_blanche = re.compile(r'[^ \t]+')
+ kwprog = re.compile(
+ r'^\s*(?P<kw>[a-z]+)'
+ r'(\s+(?P<id>[a-zA-Z_]\w*))?'
+ r'[^\w]')
+ endprog = re.compile(
+ r'^\s*#?\s*end\s+(?P<kw>[a-z]+)'
+ r'(\s+(?P<id>[a-zA-Z_]\w*))?'
+ r'[^\w]')
+ wsprog = re.compile(r'^[ \t]*')
+ optionprog=re.compile(r'#\s*parse:\s*([^\n\'"]*)$')
+
+ def __init__(self,texte):
+ # on verifie que le texte fourni se compile correctement
+ compile(texte,"<string>",'exec')
+ self.texte = cStringIO.StringIO(texte)
+ self.line=''
+ self.out=""
+ self.lastcol = 0
+ self.lastrow = 1
+ self.please_indent = 1
+ self.indent_list = []
+ self.indentation=0
+ self.paren_level=0
+ self.affectation=0
+ self.indent_list=[""]
+ self.objet_courant=None
+ self.affectation_flag=1
+ self.comment_flag=1
+ self.buffer=[]
+ self.buffer_indent=""
+
+ def getoptions(self):
+ m= self.optionprog.match(self.line)
+ if m:
+ option=m.group(1)
+ name=option[1:]
+ flag=(option[0] == '+')
+ if name == "affectation": self.affectation_flag=flag
+ if name == "comment": self.comment_flag=flag
+ if name == "all":
+ self.comment_flag=flag
+ self.affectation_flag=flag
+
+ def readline(self):
+ self.line= self.texte.readline()
+ #print "line:",self.line
+ # option ?
+ self.getoptions()
+ return self.line
+
+ def get_texte(self,appli=None):
+ """
+ Retourne le texte issu de l'analyse
+ """
+ for tk in tokenize.generate_tokens(self.readline):
+ self.process_token(tk)
+ return self.out
+
+ def process_token(self, tk):
+ """
+ """
+ ttype, tstring, spos, epos, line = tk
+ thisrow, thiscol = spos
+ #print spos, epos,tokenize.tok_name[ttype],self.lastrow, self.lastcol
+
+ if thisrow > self.lastrow:
+ # si plusieurs lignes (>1)
+ self.out=self.out+"\n" * (thisrow - self.lastrow - 1)
+ self.lastcol = 0
+
+# if thiscol > self.lastcol :
+# self.out=self.out+ " " * (thiscol - self.lastcol)
+# self.please_indent = None
+
+ self.thiscol=thiscol
+ #self.nextrow, self.nextcol = epos
+
+ try:
+ fn = getattr(self, tokenize.tok_name[ttype])
+ except AttributeError:
+ print >>sys.stderr, "No match!", tokenize.tok_name[ttype], tstring
+ return
+
+ if ttype != tokenize.DEDENT and ttype != tokenize.INDENT and self.please_indent:
+ self.do_indent()
+
+ fn(tstring)
+ self.lastrow, self.lastcol = epos
+
+ def output(self,tstring):
+ #print "output",tstring
+
+ if self.thiscol > self.lastcol :
+ #print self.thiscol,self.lastcol
+ self.out=self.out+ " " * (self.thiscol - self.lastcol)
+ self.lastcol=self.thiscol
+
+ self.out=self.out+tstring
+
+ def output_com(self,tstring):
+ self.out=self.out+tstring
+
+ def update_indent(self):
+ #print "update_indent",len(self.indent_list[-1]),len(self.buffer_indent)
+ if len(self.indent_list[-1]) > len(self.buffer_indent):
+ self.out=self.out+(len(self.indent_list[-1]) - len(self.buffer_indent))*" "
+ self.buffer_indent=self.indent_list[-1]
+
+ def do_indent(self):
+ #print "indentation dans do_indent",len(self.indent_list)
+
+ self.out=self.out+self.indent_list[-1]
+ self.buffer_indent=self.indent_list[-1]
+ if self.lastcol+len(self.indent_list[-1]) > self.thiscol:
+ self.lastcol=self.thiscol
+ else:
+ self.lastcol=self.lastcol+len(self.indent_list[-1])
+ self.please_indent = None
+
+ def flush_buffer(self):
+ #if self.buffer:
+ # print len(self.indent_list),self.please_indent
+ for ob in self.buffer:
+ self.out= self.out+ str(ob)
+ self.do_indent()
+ self.buffer=[]
+ self.objet_courant=None
+
+ def NL(self, tstring):
+ if self.affectation:
+ if self.paren_level == 0:
+ # affectation en cours mais complète
+ self.out= self.out+ str(self.affectation_courante)
+ self.affectation_courante=None
+ self.please_indent=1
+ self.affectation=0
+ else:
+ # affectation en cours, on ajoute
+ if self.thiscol > self.lastcol :self.affectation_courante.append_text((self.thiscol - self.lastcol)*" ")
+ self.affectation_courante.append_text(tstring)
+ return
+
+ if self.objet_courant:
+ self.objet_courant=None
+ self.buffer.append(tstring)
+ # self.please_indent = None
+ return
+ self.output(tstring)
+ self.please_indent = 1
+
+ def COMMENT(self, tstring):
+ liste= string.split(self.line,"##",1)
+ if len(liste) > 1:
+ # On a trouve un double commentaire
+ before,after=liste
+ if self.affectation:
+ # affectation en cours, on ignore
+ pass
+ elif self.paren_level > 0:
+ self.output(tstring)
+ elif self.comment_flag and not self.pattern_ligne_non_blanche.search(before):
+ # il s'agit d'une commande commentarisée
+ if self.objet_courant == None:
+ if not self.buffer:self.buffer_indent=self.indent_list[-1]
+ self.objet_courant=COMMANDE_COMMENTARISEE()
+ self.buffer.append(self.objet_courant)
+ self.objet_courant.append_text(tstring)
+ self.please_indent = None
+ elif isinstance(self.objet_courant,COMMENTAIRE):
+ self.objet_courant=COMMANDE_COMMENTARISEE()
+ self.buffer.append(self.objet_courant)
+ self.objet_courant.append_text(tstring)
+ self.please_indent = None
+ else:
+ self.objet_courant.append_text(tstring)
+ self.please_indent = None
+ else:
+ # commentaire inline
+ self.output(tstring)
+ self.please_indent = 1
+ return
+
+ else:
+ # On a un commentaire simple
+ new_line = string.split(self.line,'#')[0]
+ if self.affectation:
+ # affectation en cours, on ignore
+ pass
+ elif self.paren_level > 0:
+ self.output(tstring)
+ elif self.comment_flag and not self.pattern_ligne_non_blanche.search(new_line):
+ # commentaire précédé de blancs
+ if self.objet_courant == None:
+ if not self.buffer:self.buffer_indent=self.indent_list[-1]
+ self.objet_courant=COMMENTAIRE()
+ self.buffer.append(self.objet_courant)
+ self.objet_courant.append_text(tstring)
+ self.please_indent = None
+ elif isinstance(self.objet_courant,COMMANDE_COMMENTARISEE):
+ self.objet_courant=COMMENTAIRE()
+ self.buffer.append(self.objet_courant)
+ self.objet_courant.append_text(tstring)
+ self.please_indent = None
+ else:
+ self.objet_courant.append_text(tstring)
+ self.please_indent = None
+ else:
+ # commentaire inline
+ self.output(tstring)
+ self.please_indent = 1
+ return
+
+ def ERRORTOKEN(self, tstring):
+ print "ERRORTOKEN",tstring
+
+ def NAME(self, tstring):
+ if self.buffer:
+ self.update_indent()
+ self.flush_buffer()
+
+ if self.affectation ==1:
+ # on a une expression du type NAME=NAME
+ # on ne veut pas des expressions qui commencent par NAME=NAME(NAME=
+ # on en prend le chemin : on met affectation a 3 pour le signaler
+ # on attend d'en savoir plus
+ if self.thiscol > self.lastcol :self.affectation_courante.append_text((self.thiscol - self.lastcol)*" ")
+ self.affectation_courante.append_text(tstring)
+ self.affectation=3
+ return
+ elif self.affectation ==4:
+ # on a une expression qui commence par NAME=NAME(NAME
+ # il s'agit tres probablement d'une commande
+ # on annule l'affectation en cours
+ if self.thiscol > self.lastcol :self.affectation_courante.append_text((self.thiscol - self.lastcol)*" ")
+ self.affectation_courante.append_text(tstring)
+ self.affectation=5
+ return
+ elif self.affectation == 2:
+ # affectation en cours, on ajoute
+ if self.thiscol > self.lastcol :self.affectation_courante.append_text((self.thiscol - self.lastcol)*" ")
+ self.affectation_courante.append_text(tstring)
+ self.affectation=2
+ return
+ self.affectation=0
+ self.name=None
+ if self.paren_level == 0 and self.affectation_flag:
+ # si on est en dehors de parentheses et en mode transformation d'affectation
+ # on initialise l'attribut name qui indique une affectation en cours
+ self.name=tstring
+ self.output(tstring)
+
+ def ident(self, tstring):
+ self.flush_buffer()
+ self.affectation=0
+ self.output(tstring)
+
+ def NUMBER(self, tstring):
+ self.flush_buffer()
+ if self.affectation>=1:
+ # affectation en cours, on ajoute
+ if self.thiscol > self.lastcol :self.affectation_courante.append_text((self.thiscol - self.lastcol)*" ")
+ self.affectation_courante.append_text(tstring)
+ self.affectation=2
+ return
+ self.output(tstring)
+
+ def OP(self,tstring):
+ self.flush_buffer()
+ if tstring in ('(','[','{'): self.paren_level=self.paren_level+1
+ if tstring in (')',']','}'): self.paren_level=self.paren_level-1
+
+ if tstring == '=' and self.affectation ==5:
+ # on a une expression qui commence par NAME=NAME(NAME=)
+ # il peut s'agir d'une commande
+ # on annule l'affectation en cours
+ self.out= self.out+ self.affectation_courante.texte
+ self.affectation_courante=None
+ self.name=None
+ self.affectation=0
+ elif tstring == ')' and self.affectation ==4:
+ # on a une expression qui commence par NAME=NAME()
+ # il peut s'agir d'une commande
+ # on annule l'affectation en cours
+ self.out= self.out+ self.affectation_courante.texte
+ self.affectation_courante=None
+ self.affectation=0
+ elif tstring == '(' and self.affectation == 3:
+ # on a deja trouve NAME=NAME
+ # on passe affectation a 4
+ if self.thiscol > self.lastcol :self.affectation_courante.append_text((self.thiscol - self.lastcol)*" ")
+ self.affectation_courante.append_text(tstring)
+ self.affectation=4
+ return
+ elif tstring == ';' and self.affectation>=1:
+ # l'affectation est terminee
+ self.out= self.out+ str(self.affectation_courante)
+ self.affectation_courante=None
+ self.please_indent=1
+ self.affectation=0
+ elif self.affectation>=1:
+ # on complete l'affectation
+ if self.thiscol > self.lastcol :self.affectation_courante.append_text((self.thiscol - self.lastcol)*" ")
+ self.affectation_courante.append_text(tstring)
+ self.affectation=2
+ return
+
+ self.affectation=0
+ if self.name and tstring=='=':
+ self.affectation=1
+ self.affectation_courante=AFFECTATION()
+ self.affectation_courante.name=self.name
+ self.output(tstring)
+
+ ENDMARKER = ident
+ NEWLINE=NL
+
+ def INDENT(self, tstring):
+ #tstring=str(len(self.indent_list))*len(tstring)
+ self.indent_list.append(tstring)
+ #print "indentation dans INDENT",len(self.indent_list),len(tstring)
+ self.affectation=0
+ if self.buffer:
+ self.update_indent()
+ self.flush_buffer()
+
+ def DEDENT(self, tstring):
+ #print "DEDENT",tstring,len(tstring)
+ if self.buffer:
+ self.out= self.out+ str(self.buffer[0])
+ if len(self.buffer) > 1:
+ for ob in self.buffer[1:]:
+ self.do_indent()
+ self.out= self.out+ str(ob)
+ self.buffer=[]
+ self.objet_courant=None
+ self.please_indent=1
+
+ self.affectation=0
+ self.indent_list = self.indent_list[:-1]
+ #print "indentation dans DEDENT",len(self.indent_list)
+
+ def STRING(self, tstring):
+ self.flush_buffer()
+ if self.affectation>=1:
+ # affectation en cours, on ajoute
+ if self.thiscol > self.lastcol :self.affectation_courante.append_text((self.thiscol - self.lastcol)*" ")
+ self.affectation_courante.append_text(tstring)
+ self.affectation=2
+ return
+ self.output(tstring)
+
+if __name__ == "__main__" :
+ import sys
+ import cStringIO
+ text="""
+#
+# comment
+# comment
+# comment
+#
+
+import sys,os
+
+# commentaire
+# commentaire
+# commentaire
+
+DEBUT();
+##toto = FORMULE(REEL='(REEL:A) = A',);
+
+x=2*cos(90.)/34.
+
+a=1.
+if a != 0:
+ a=+1
+
+b=2.
+c=a+b
+#if 1:
+# d=3
+# e=5
+#try:
+# a=1/2
+#except KeyError:
+# pass
+
+if 1:
+ a=2
+ b=3
+ # commenta
+else:
+ # commen
+ # commen
+ a=3
+ #qqqqqqqqqqqqqqqqqqqqqqqq
+ c=5
+
+b=5
+ # commentaire
+toto = FORMULE(REEL='(REEL:A) = A',);
+titi = FORMULE(REEL='(REEL:A) = A',) # commentaire inline
+tutu = FORMULE(REEL='(REEL:A) = A',) ## commentaire inline
+
+TEST_TABLE( TABLE=RELV[k],
+ FILTRE=(
+ _F( NOM_PARA = 'QUANTITE',
+ VALE_K = 'MAXIMUM'),),
+ # commentaire
+ NOM_PARA='VMIS', # comm
+ VALE=1.9669824189084E9,
+ REFERENCE='NON_REGRESSION',
+ VERSION='8.1.0' )
+
+if 1:
+ a=fff(a=1,
+ b=2)
+if 1:
+ a=2
+ b=3
+ # commenta
+else:
+ # commen
+ # commen
+ a=3
+
+for k in range(1,10):
+
+ # Appel a GMSH pour le maillage
+
+ f=open("coque.geo","w")
+
+
+a = 1.
+b=3
+c= 3 * 5
+d= 4 + \
+ 5 \
+ -4
+e=toto(a=1)
+x=(1,2)
+y=[3,
+#comme
+4]
+z="a"
+zz='v'
+u='''aaaa
+bbbb'''
+if 1:
+ a=45
+else:
+ a=5.6
+d={"a":0}
+e={"a":0,
+#comme
+"d":4}
+a==1
+x=a==1
+s="-"*80
+fmt_raison='-'*80+'''
+
+ Exception erreur_Fatale interceptee
+ Raison : %s
+
+'''+'-'*80+'xxxxxxxxxxxxxxxx'
+q=30*cos(12)
+f=cos(12)
+#commen'''
+#commen'''
+y=a[1]
+y=["x"]*10
+
+##toto = FORMULE(REEL='(REEL:A) = A',
+## X=2
+## );
+#
+# comment
+# comment
+# comment
+#
+zz=8.9;
+zz=8.9;aa=10
+P1 = 9.8;
+
+P2 = 8.8;
+
+P3 = 7;
+
+P5 = P3*P1;
+
+P6 = P1-3;
+
+P4 = [2,3,4];
+
+P7=P4[1]
+MA=LIRE_MAILLAGE()
+MA=LIRE_MAILLAGE(#comment
+)
+xyz=cos(10)
+MA=LIRE_MAILLAGE(INFO=1)
+MA=LIRE_MAILLAGE(
+ NFO=1)
+MA=LIRE_MAILLAGE(#comme
+ NFO=1)
+MA=\
+LIRE_MAILLAGE(INFO=1)
+MA= LIRE_MAILLAGE()
+TFIN = 1.790 # Temps fin pour le calcul
+
+PAS = 0.001 # pas de temps du calcul
+# parse: -affectation
+DS1=[None]*5
+DS2=[None]*5
+DS3=[None]*5
+DS4=[None]*5
+CHS1=[None]*5
+CHS2=[None]*5
+MO=AFFE_MODELE( MAILLAGE=MA,
+ #test de validateur GEOM (typ=grma) avec grma derive de GEOM
+ AFFE=(_F(GROUP_MA = ('LI1'),
+ PHENOMENE = 'MECANIQUE',
+ MODELISATION = 'DIS_TR'),
+ ),
+ INFO=2,);
+
+for k in range(1,5):
+ DS1[k] = CREA_CHAMP( OPERATION='EXTR', TYPE_CHAM='NOEU_DEPL_R',
+ RESULTAT= MODESTA1, NUME_ORDRE=k, NOM_CHAM = 'DEPL');
+
+if x==1:
+ print "coucou"
+elif x==2:
+ print "coucou"
+elif x==2:
+ print "coucou"
+elif x==2:
+ print "coucou"
+else:
+ print "coucou"
+# parse: +affectation
+ff=23 # parametre bidon
+
+# parse: -all
+a=45
+#commment1
+##toto = FORMULE(REEL='(REEL:A) = A',
+## X=2
+## );
+# parse: +all
+b=45
+#commment2
+##toto = FORMULE(REEL='(REEL:A) = A',
+## X=2
+## );
+# parse: -comment
+c=45
+#commment3
+##toto = FORMULE(REEL='(REEL:A) = A',
+## X=2
+## );
+# parse: +comment
+d=45
+#commment5
+##toto = FORMULE(REEL='(REEL:A) = A',
+## X=2
+## );
+p=sin(ff)
+
+e=toto(a=1)
+e=toto(a=1,b=3)
+e=toto(1,b=3)
+e=toto(a,b=3)
+e=toto()
+sensible=[2.1E11, 0.3, 1.E-6, 1.E-6, ]
+
+n=len(sensible)
+# parse: -affectation
+
+PS=[None]*n
+
+for i in range(n):
+ PS[i]=DEFI_PARA_SENSI(VALE=sensible[i])
+# parse: +affectation
+
+TEST_RESU(RESU=(_F(RESULTAT = U3L,
+ INST = 1.0,
+ NOM_CHAM = 'DEPL',
+ GROUP_NO = 'PPA',
+ NOM_CMP = 'DX',
+ VALE = 2.86E-5,
+ PRECISION = 5.E-2,
+ REFERENCE = 'AUTRE_ASTER',
+ VERSION = '7.1.11',
+ ),
+ )
+ )#
+#
+FIN()
+#
+
+TEST_RESU(RESU=(_F(RESULTAT = U3L,
+ INST = 1.0,
+ NOM_CHAM = 'DEPL',
+ GROUP_NO = 'PPA',
+ NOM_CMP = 'DX',
+ VALE = 2.86E-5,
+ PRECISION = 5.E-2,
+ REFERENCE = 'AUTRE_ASTER',
+ VERSION = '7.1.11',
+ ),
+ )
+ ) #a
+
+titi = FORMULE(REEL='(REEL:A) = A',
+) # commentaire inline
+titi = FORMULE(REEL='(REEL:A) = A',
+ ) # commentaire inline
+
+def f(x):return x
+#comment
+def f(x):
+#comment
+ if a==1:print "coucou"
+ for i in range(10): s=0
+
+#com1
+#com2
+
+#com3
+a=1
+##commendcomm
+for k in range(1,10):
+
+ # Appel a GMSH pour le maillage
+
+ f=open("coque.geo","w")
+#comm
+ if a==1:
+
+ #comm
+
+ for i in x:
+#comm
+##commendcomm
+#comm
+##commendcomm
+#comm
+ if x==3:
+#comm
+ r=1
+ if w==4:
+#comm
+
+ if k:
+
+#comm
+ if g:
+
+#comm
+
+ if t:
+ a=5
+#comm
+if 1:
+ a=2
+ b=3
+ # commenta
+else:
+ # commen
+ # commen
+ a=3
+ # qqqqqqqqqqqqqqqq
+ c=5
+
+b=5
+
+if 1:
+ a=2
+ # commenta
+else:
+ a=3
+if 1:
+ if 2:
+ if 3:
+ a=1
+ elif 4:
+ b=1
+ else:
+ c=5
+ elif 3:
+ x=1
+ else:
+ y=4
+elif 4:
+ s=1
+else:
+ t=9
+#com1
+#com2
+
+#com3
+a=1
+##commendcomm
+for k in range(1,10):
+
+ # Appel a GMSH pour le maillage
+
+ f=open("coque.geo","w")
+#comm
+ if 1:
+ if 2:
+ if 3:
+ a=1
+ else:
+ a=6
+a=1
+##commendcomm
+for k in range(1,10):
+
+ # Appel a GMSH pour le maillage
+
+ f=open("coque.geo","w")
+#comm
+
+ if a==1:
+
+ #comm
+
+ for i in x:
+#comm
+##commendcomm
+#comm
+##commendcomm
+#comm
+ if x==3:
+#comm
+ r=1
+
+ if 1:
+ if 2:
+ if 3:
+ a=1
+ else:
+ a=6
+
+if 1:
+ if 2:
+ if 3:
+ r=1
+ # comm
+ else:
+ x=7
+ toto(a=1,
+b=3)
+SUP_=dict([(grand,0.) for grand in grand_obs])
+
+for k in range(1,ns+1):
+ x=toto(a=1,b=2)
+# comm
+ if 1:
+ #com
+
+ #com
+ x=1
+ #com
+
+ #com
+ ##com
+ elif 3:
+ ##com
+ x=1
+ else:
+ y=3
+
+def f():
+ return
+########################################################################
+
+########################################################################
+# macro commande de post-traitement (ex POST_GOUJ2E)
+# calcul des reactions cumulees suivant les filets
+
+def POST_GOUJ_ops(self,TABLE):
+ ier=0
+
+"""
+ if len(sys.argv)== 2:
+ progname, input = sys.argv
+ f=open(input)
+ t=f.read()
+ f.close()
+ else:
+ t=text
+ txt = PARSEUR_PYTHON(t).get_texte()
+ print txt
+ compile(txt,"<string>",'exec')
self.cr.fatal("Impossible ouvrir fichier %s" % filename)
return
- def settext(self,texte) :
- self.text=texte
-
def convert(self,outformat,appli=None):
if outformat == 'exec':
try:
# Erreur lors de la conversion
l=traceback.format_exception(sys.exc_info()[0],sys.exc_info()[1],
sys.exc_info()[2])
- self.cr.exception("Impossible de convertir le fichier python \
- qui doit contenir des erreurs.\n \
- On retourne le fichier non converti \n \
- Prévenir la maintenance. \n" + string.join(l))
+ self.cr.exception("Impossible de convertir le fichier python qui doit contenir des erreurs.\n"
+ "On retourne le fichier non converti. Prévenir la maintenance.\n\n" + string.join(l))
# On retourne néanmoins le source initial non converti (au cas où)
return self.text
elif outformat == 'execnoparseur':
#
# ======================================================================
import sys,string,re
+import traceback
+
+escapedQuotesRE = re.compile(r"(\\\\|\\\"|\\\')")
+stringsAndCommentsRE = \
+ re.compile("(\"\"\".*?\"\"\"|'''.*?'''|\"[^\"]*\"|\'[^\']*\'|#.*?\n)", re.DOTALL)
+allchars = string.maketrans("", "")
+allcharsExceptNewline = allchars[: allchars.index('\n')]+allchars[allchars.index('\n')+1:]
+allcharsExceptNewlineTranstable = string.maketrans(allcharsExceptNewline, '*'*len(allcharsExceptNewline))
+
+def maskStringsAndComments(src):
+ """Masque tous les caracteres de src contenus dans des commentaires ou des strings multilignes (triples
+ quotes et guillemets.
+ Le masquage est realise en remplacant les caracteres par des *
+ Attention : cette fonction doit etre utilisee sur un texte complet et pas ligne par ligne
+ """
+ src = escapedQuotesRE.sub("**", src)
+ allstrings = stringsAndCommentsRE.split(src)
+ # every odd element is a string or comment
+ for i in xrange(1, len(allstrings), 2):
+ if allstrings[i].startswith("'''")or allstrings[i].startswith('"""'):
+ allstrings[i] = allstrings[i][:3]+ \
+ allstrings[i][3:-3].translate(allcharsExceptNewlineTranstable)+ \
+ allstrings[i][-3:]
+ else:
+ allstrings[i] = allstrings[i][0]+ \
+ allstrings[i][1:-1].translate(allcharsExceptNewlineTranstable)+ \
+ allstrings[i][-1]
+
+ return "".join(allstrings)
+
+implicitContinuationChars = (('(', ')'), ('[', ']'), ('{', '}'))
+linecontinueRE = re.compile(r"\\\s*(#.*)?$")
+emptyHangingBraces = [0,0,0,0,0]
+
+class ParserException(Exception): pass
+class FatalError(Exception): pass
+
+#commentaire double precede d'un nombre quelconque de blancs (pas multiligne)
+pattern_2comments = re.compile(r"^\s*##.*")
+#commentaire standard precede d'un nombre quelconque de blancs (pas multiligne)
+pattern_comment = re.compile(r"^\s*#.*")
+#fin de ligne ; suivi d'un nombre quelconque de blancs (pas multiligne)
+pattern_fin = re.compile(r"; *$")
+#pattern pour supprimer les blancs, tabulations et fins de ligne
+pattern_blancs = re.compile(r"[\s\n]")
+number_kw_pattern=re.compile(r"""
+(
+ #groupe nombre decimal
+ (?:
+ #signe : on ignore le signe +
+ [-]?
+ #groupe (avec ?: n'apparait pas en tant que groupe dans le resultat)
+ (?:
+ #mantisse forme entiere.fractionnaire
+ \d+(?:\.\d*)?
+ |
+ #ou forme .fractionnaire
+ \.\d+
+ )
+ (?:[eE][+-]?\d+)?
+ )
+ |
+ #argument keyword
+ [a-zA-Z_]\w*=
+)
+""",re.VERBOSE)
+
+def construit_genea(texte,liste_mc):
+ """Retourne un dictionnaire dont les cles sont des reels et les valeurs sont leurs representations textuelles.
+ Realise un filtrage sur les reels :
+ - Ne garde que les reels pour lesquels str ne donne pas une bonne representation.
+ - Ne garde que les reels derriere un argument keyword dont le nom est dans liste_mc
+ >>> s = 'a=+21.3e-5*85,b=-.1234,c=81.6 , d= -8 , e=_F(x=342.67,y=-1), f=+1.1, g=(1.3,-5,1.54E-3)'
+ >>> construit_genea(s,['a','x'])
+ {0.000213: '21.3e-5'}
+ """
+ d={}
+ mot=""
+ #on masque les strings et commentaires pour ne pas identifier de faux reels
+ for m in number_kw_pattern.findall(maskStringsAndComments(texte)):
+ if m[-1] == '=':
+ #argument keyword
+ mot=m[:-1]
+ else:
+ if mot not in liste_mc:continue
+ #valeur
+ key=eval(m)
+ if str(key) != m: d[key]=m
+ return d
+
class ENTITE_JDC :
+ """Classe de base pour tous les objets créés lors de la conversion
+ Tout objet dérivé est enregistré auprès de son père à sa création
+ """
def __init__(self,pere):
self.texte = ''
pere.l_objets.append(self)
texte = texte+'\n'
self.texte = self.texte +texte
+ def __str__(self):
+ return self.texte
+
class COMMENTAIRE(ENTITE_JDC):
def __str__(self):
Retourne une chaîne de caractères représentants self
sous une forme interprétable par EFICAS
"""
- s='COMMENTAIRE("""'+self.texte+'""")\n\n'
- return s
+ t=repr(self.texte)
+ return "COMMENTAIRE("+t+")\n"
+
+ #s='COMMENTAIRE("""'+self.texte+'""")\n\n'
+ #return s
def append_text(self,texte):
"""
def append_text(self,texte):
"""
Ajoute texte à self.texte en enlevant tout retour chariot et tout point virgule
+ PN et tout commentaire
"""
- if texte[-1] == '\n' : texte = string.strip(texte[0:-1])\r
- if texte[-1] == ';' : texte = string.strip(texte[0:-1])
- self.texte = self.texte+texte
+ if texte[-1] == '\n' : texte = string.rstrip(texte[0:-1])
+ if texte[-1] == ';' : texte = string.rstrip(texte[0:-1])
+ self.texte = self.texte+texte+'\n'
def __str__(self):
"""
et exploitable par EFICAS
"""
nom,valeur = string.split(self.texte,'=',1)
- nom = string.strip(nom)
+ n = string.rstrip(nom)
+ nom = string.lstrip(n)
if valeur[-1] == '\n': valeur = valeur[:-1]
- valeur = string.strip(valeur)
- ## traitement des "
- if valeur[0]=='"':
- valeur=valeur[1:-1]
- if valeur[-1]=='"':
- valeur=valeur[0:-2]
-
- return nom+' = PARAMETRE(nom=\''+nom+'\',valeur="'+valeur+'")\n\n'
+ return n + ' = PARAMETRE(nom=\''+nom+'\',valeur='+valeur+')\n'
class COMMANDE_COMMENTARISEE(ENTITE_JDC):
Retourne une expression de la commande commentarisée compréhensible par ACCAS
et exploitable par EFICAS
"""
- return "COMMANDE_COMM(texte='''"+self.texte+"''')\n"
+ return "COMMANDE_COMM(texte="+repr(self.texte)+")\n"
+ #return "COMMANDE_COMM(texte='''"+self.texte+"''')\n"
class AFFECTATION_EVAL(ENTITE_JDC):
pattern_commande = re.compile(r'^([A-Z][A-Z0-9_]+)([ \t\r\f\v]*)\(([\w\W]*)')
pattern_eval = re.compile(r'^(EVAL)([ \t\r\f\v]*)\(([\w\W]*)')
pattern_ligne_vide = re.compile(r'^[\t\r\f\v\n]+')
+ pattern_name = re.compile(r'[a-zA-Z_]\w*')
def __init__(self,texte):
self.texte = texte
if self.pattern_commande.match(aval):
return 0
else:
+ s= string.strip(amont)
+ m= self.pattern_name.match(s)
+ if m is None : return 0
+ if m.start() != 0 :return 0
+ if m.end() != len(s):return 0
+ #print texte,amont,aval
return 1
def is_eval(self,texte):
Eclate la chaine self.texte en self.l_objets une liste lignes d'instructions
et de commentaires (parmi lesquels des instructions "commentarisées").
"""
- #AY##l_lignes = open(self.fichier,'r').readlines()
l_lignes = string.split(self.texte,'\n')
commentaire_courant = None
commande_courante = None
affectation_courante = None
commande_commentarisee_courante = None
self.l_objets = []
- cpt = 0
+
+ #initialisation du nombre de parentheses non fermees et de commentaires non termines
+ #Attention a reinitialiser en fin de ligne logique
+ #Une ligne logique peut s'etendre sur plusieurs lignes physiques avec des caracteres de continuation
+ #explicites ou implicites
+ hangingBraces = list(emptyHangingBraces)
+ hangingComments = 0
+
+ #Masquage des commentaires et strings multilignes
+ srcMasked=maskStringsAndComments('\n'.join(l_lignes))
+ #print srcMasked
+ masked_lines=srcMasked.split('\n')
+ lineno=0
+
for ligne in l_lignes :
- cpt = cpt+1
+ line=masked_lines[lineno]
+ lineno=lineno+1
+ #print "ligne:",line
+ # mise a jour du nombre total de parentheses ouvertes (non fermees)
+ # et du nombre de commentaires non termines
+ for i in range(len(implicitContinuationChars)):
+ contchar = implicitContinuationChars[i]
+ numHanging = hangingBraces[i]
+ hangingBraces[i] = numHanging+line.count(contchar[0]) - line.count(contchar[1])
+
+ hangingComments ^= line.count('"""') % 2
+ hangingComments ^= line.count("'''") % 2
+ #print hangingComments,hangingBraces
+ if hangingBraces[0] < 0 or hangingBraces[1] < 0 or hangingBraces[2] < 0:
+ raise ParserException()
+
if string.strip(ligne) == '':
# il s'agit d'un saut de ligne
# --> on l'ignore
continue
- else:
- liste = string.split(ligne,'##',1)
- if len(liste) > 1:
- # on a trouvé un double commentaire dans la ligne
- before,after = liste
- if string.strip(before) == '':
- # il s'agit d'une commande commentarisée
- if commentaire_courant :
- commentaire_courant = None
- elif commande_courante :
- # on a un objet commentarisé à l'intérieur d'une commande
- # --> non traité pour l'instant
- commande_courante.append_text(ligne)
- elif commande_commentarisee_courante :
- # commande_commentarisee en cours : on ajoute la ligne
- commande_commentarisee_courante.append_text(ligne)
- else:
- # on crée un objet commande_commentarisee_courante
- commande_commentarisee_courante = COMMANDE_COMMENTARISEE(self)
- commande_commentarisee_courante.append_text(ligne)
- # si la ligne courante se termine par un ';', on décide - par hypothèse et peut-être à tort - que
- # la commande commentarisée courante est terminée !!
- if re.search( '; *$', ligne ) != None :
- commande_commentarisee_courante = None
- continue
- else:
- # on a un double commentaire en fin de ligne
- # --> pour l'instant on ne fait rien
- pass
- new_ligne = string.split(ligne,'#')[0] # on enlève toute la partie commentaire de la ligne
- new_ligne = string.strip(new_ligne)
- if new_ligne == '' :
- # la ligne n'est qu'un commentaire précédé d'éventuels blancs
- if commande_courante :
- # il s'agit d'un commentaire à l'intérieur d'une commande --> on ne fait rien
- commande_courante.append_text(ligne)
- elif commentaire_courant :
- # il s'agit de la nième ligne d'un commentaire entre deux commandes
- # --> on ajoute cette ligne au commentaire courant
- commentaire_courant.append_text(ligne)
- else :
- # il s'agit d'un commentaire entre deux commandes
- # --> on le crée et il devient le commentaire courant
- commentaire_courant = COMMENTAIRE(self)
- commentaire_courant.append_text(ligne)
+
+ if pattern_2comments.match(ligne):
+ #on a trouvé une commande commentarisée : double commentaire sans rien devant à part des blancs
+ if commentaire_courant:
+ #Si un commentaire ordinaire est en cours on le termine
+ commentaire_courant = None
+
+ if commande_courante :
+ # on a un objet commentarisé à l'intérieur d'une commande
+ # --> non traité pour l'instant : on l'ajoute simplement a la commande courante comme
+ # un commentaire ordinaire
+ commande_courante.append_text(ligne)
+ elif commande_commentarisee_courante :
+ # commande_commentarisee en cours : on ajoute la ligne
+ commande_commentarisee_courante.append_text(ligne)
else:
- # la ligne contient des données autre qu'un éventuel commentaire
- if commentaire_courant :
- # on clôt un éventuel commentaire courant
- commentaire_courant = None
- if commande_courante :
- commande_courante.append_text(ligne)
- if commande_courante.get_nb_par() == 0:
- # la commande courante est terminée (autant de parenthèses fermantes qu'ouvrantes)
- try :
- self.analyse_reel(commande_courante.texte)
- except :
- pass
- commande_courante = None
+ # debut de commande commentarisée : on crée un objet commande_commentarisee_courante
+ commande_commentarisee_courante = COMMANDE_COMMENTARISEE(self)
+ commande_commentarisee_courante.append_text(ligne)
+
+ #on passe à la ligne suivante
+ continue
+
+ if pattern_comment.match(ligne):
+ #commentaire ordinaire avec seulement des blancs devant
+ if commande_commentarisee_courante :
+ # commande_commentarisee en cours : on la clot
+ commande_commentarisee_courante = None
+
+ if commande_courante :
+ # il s'agit d'un commentaire à l'intérieur d'une commande --> on ne fait rien de special
+ #on l'ajoute au texte de la commande
+ commande_courante.append_text(ligne)
+ elif commentaire_courant :
+ # il s'agit de la nième ligne d'un commentaire entre deux commandes
+ # --> on ajoute cette ligne au commentaire courant
+ commentaire_courant.append_text(ligne)
+ else :
+ # il s'agit d'un nouveau commentaire entre deux commandes
+ # --> on le crée et il devient le commentaire courant
+ commentaire_courant = COMMENTAIRE(self)
+ commentaire_courant.append_text(ligne)
+
+ #on passe à la ligne suivante
+ continue
+
+ # la ligne contient des données autre qu'un éventuel commentaire
+ if commentaire_courant :
+ # on clôt un éventuel commentaire courant
+ commentaire_courant = None
+
+ if commande_commentarisee_courante :
+ # on clôt une éventuelle commande commentarisee courante
+ commande_commentarisee_courante = None
+
+ if commande_courante :
+ #on a une commande en cours. On l'enrichit ou on la termine
+ commande_courante.append_text(ligne)
+ if not linecontinueRE.search(line) and (hangingBraces == emptyHangingBraces) and not hangingComments:
+ #la commande est terminée
+ #print "fin de commande"
+ self.analyse_reel(commande_courante.texte)
+ commande_courante = None
+
+ #on passe à la ligne suivante
+ continue
+
+ if affectation_courante != None :
+ #poursuite d'une affectation
+ affectation_courante.append_text(ligne)
+ if not linecontinueRE.search(line) and (hangingBraces == emptyHangingBraces) and not hangingComments:
+ #L'affectation est terminée
+ affectation_courante=None
+ #on passe à la ligne suivante
+ continue
+
+ # il peut s'agir d'une commande ou d'une affectation ...
+ # ou d'un EVAL !!!
+ if self.is_eval(ligne):
+ # --> affectation de type EVAL
+ if affectation_courante : affectation_courante = None
+ affectation = AFFECTATION_EVAL(self)
+ affectation.append_text(ligne)
+ #on passe à la ligne suivante
+ continue
+
+ if self.is_affectation(ligne):
+ # --> affectation
+ text=ligne
+ #traitement des commentaires en fin de ligne
+ compos=line.find("#")
+ if compos > 2:
+ #commentaire en fin de ligne
+ #on cree un nouveau commentaire avant le parametre
+ COMMENTAIRE(self).append_text(ligne[compos:])
+ text=ligne[:compos]
+ #si plusieurs instructions separees par des ; sur la meme ligne
+ inspos=line.find(";")
+ if inspos > 2:
+ #on garde seulement la premiere partie de la ligne
+ #si on a que des blancs apres le point virgule
+ if string.strip(text[inspos:]) == ";":
+ text=text[:inspos]
else:
- # il peut s'agir d'une commande ou d'une affectation ...
- # ou de la poursuite d'une affectation !!!!!
- # ou d'un EVAL !!!
- if self.is_eval(new_ligne):
- # --> affectation de type EVAL
- if affectation_courante : affectation_courante = None
- affectation = AFFECTATION_EVAL(self)
- affectation.append_text(ligne)
- elif self.is_affectation(new_ligne):
- # --> affectation
- affectation_courante = AFFECTATION(self)
- affectation_courante.append_text(ligne)
- elif self.is_commande(new_ligne):
- # --> commande
- commande_courante = COMMANDE(self)
- commande_courante.append_text(ligne)
- affectation_courante = None
- if commande_courante.get_nb_par() == 0:
- # la commande courante est terminée (autant de parenthèses fermantes qu'ouvrantes)
- self.analyse_reel(commande_courante.texte)
- commande_courante = None
- else:
- #--> poursuite d'une affectation
- # PN -- pour Empecher une erreur pas propre
- if affectation_courante != None :
- affectation_courante.append_text(ligne)
- #affectation_courante.append_text(ligne)
+ raise FatalError("Eficas ne peut pas traiter plusieurs instructions sur la meme ligne : %s" % ligne)
+
+ affectation_courante = AFFECTATION(self)
+ affectation_courante.append_text(text)
+ if not linecontinueRE.search(line) and (hangingBraces == emptyHangingBraces) and not hangingComments:
+ #L'affectation est terminée
+ affectation_courante=None
+ #on passe à la ligne suivante
+ continue
+ if self.is_commande(ligne):
+ # --> nouvelle commande
+ affectation_courante = None
+ commande_courante = COMMANDE(self)
+ commande_courante.append_text(ligne)
+ #si la commande est complète, on la termine
+ if not linecontinueRE.search(line) and (hangingBraces == emptyHangingBraces) and not hangingComments:
+ #la commande est terminée
+ #print "fin de commande"
+ self.analyse_reel(commande_courante.texte)
+ commande_courante = None
+ #on passe à la ligne suivante
+ continue
def enleve (self,texte) :
+ """Supprime de texte tous les caracteres blancs, fins de ligne, tabulations
+ Le nouveau texte est retourné
+ """
i=0
chaine=""
while (i<len(texte)):
if ( c == "," or c == "(" or c == ")"):
mot=""
elif ( c== "="):
+ #on doit trouver derriere soit une valeur soit une parenthese
valeur=""
nouvelindice=indiceC+1
if texte[nouvelindice] != "(":
+ #pas de parenthese ouvrante derriere un signe =, on a une valeur.
while ( texte[nouvelindice] != "," and texte[nouvelindice] != ")"):
valeur=valeur+texte[nouvelindice]
nouvelindice=nouvelindice+1
if nouvelindice == len(texte) :
- nouvelindice=nouvelindice -1
+ nouvelindice=nouvelindice -1
break
if mot in self.appli.liste_simp_reel:
if valeur[0] != "'":
mot=""
indiceC=nouvelindice
else:
- # s agit -il d un tuple
+ #parenthese ouvrante derriere un signe =, on a un tuple de valeur ou de mots cles facteurs.
+ # s agit -il d un tuple
if texte[nouvelindice+1] != "(":
+ #le suivant n'est pas une parenthese ouvrante : on a un tuple de valeurs ou un mot cle facteur
tuple=False
+ #on avance jusqu'a la fin du tuple de valeurs ou jusqu'a la fin du premier mot cle simple
+ #contenu dans le mot cle facteur
while ( texte[nouvelindice] != "="):
if texte[nouvelindice] == ")" :
tuple=True
else :
nouvelindice=nouvelindice+1
if nouvelindice == len(texte) :
- nouvelindice=nouvelindice -1
+ nouvelindice=nouvelindice -1
break
if tuple :
+ #cas du tuple de valeurs
valeur=texte[indiceC+1:nouvelindice+1]
indiceC=nouvelindice+1
if mot in self.appli.liste_simp_reel:
mot=""
# ou de ( imbriqueés
else :
+ #cas du mocle facteur simple ou
mot=""
else :
mot=mot+texte[indiceC]
if commande.find("=") > commande.find("(") :
return
if commande.find("=") > 0:
- epure1=self.enleve(commande)
- nomConcept=epure1.split("=")[0]
- index=epure1.find("=")
- epure2=epure1[index+1:len(epure1)].replace("_F(","(")
- dict_reel_concept=self.construit_genea(epure2)
+ #epure1=self.enleve(commande)
+ epure1=pattern_blancs.sub("",commande)
+ nomConcept,corps=epure1.split("=",1)
+ epure2=corps.replace("_F(","(")
+ #nomConcept=epure1.split("=")[0]
+ #index=epure1.find("=")
+ #epure2=epure1[index+1:len(epure1)].replace("_F(","(")
+ #dict_reel_concept=self.construit_genea(epure2)
+ dict_reel_concept=construit_genea(epure2,self.appli.liste_simp_reel)
if nomConcept !=None :
if len(dict_reel_concept) != 0:
self.appli.dict_reels[nomConcept]=dict_reel_concept
Retourne le texte issu de l'analyse
"""
self.appli=appli
- if not self.l_objets : self.analyse()
- txt=''
- for obj in self.l_objets:
- txt = txt+str(obj)
+ try:
+ if not self.l_objets : self.analyse()
+ txt=''
+ for obj in self.l_objets:
+ txt = txt+str(obj)
+ except ParserException:
+ #Impossible de convertir le texte, on le retourne tel que
+ txt=self.texte
return txt
if __name__ == "__main__" :
+ import time
#fichier = 'D:/Eficas_dev/Tests/zzzz100a.comm'
fichier = 'U:/Eficas_dev/Tests/test_eval.comm'
+ fichier = '/local/chris/ASTER/Eficas/Eficas1_10/EficasV1/Tests/testcomm/b.comm'
+ fichier = '/local/chris/ASTER/instals/STA8.2/astest/forma12c.comm'
+ fichier = 'titi.comm'
+ fichier = '../Aster/sdls300a.comm'
texte = open(fichier,'r').read()
- txt = PARSEUR_PYTHON(texte).get_texte()
+ class appli:
+ dict_reels={}
+ liste_simp_reel=["VALE","VALE_C","GROUP_MA","RAYON"]
+ a=appli()
+
+ if 1:
+ t0=time.clock()
+ txt = PARSEUR_PYTHON(texte).get_texte(a)
+ print t0,time.clock()-t0
+ else:
+ import hotshot, hotshot.stats
+ prof = hotshot.Profile("stones.prof")
+ txt = prof.runcall(PARSEUR_PYTHON(texte).get_texte,a)
+ prof.close()
+ stats = hotshot.stats.load("stones.prof")
+ stats.strip_dirs()
+ stats.sort_stats('time', 'calls')
+ stats.print_stats(20)
+
print txt
-
+ compile(txt, '<string>', 'exec')
+ print a.dict_reels
def formate_etape(self,liste):
"""
Enrichissement de la chaine de caracteres representant l'etape (attribut
- texte_etape de l'objet Formatage).
+ texte_etape de l'objet Formatage).
Les elements a ajouter sont dans l'argument liste de la methode.
- L'objet "liste" à traiter a été produit par le module generator. En particulier
- les parenthèses et les virgules ont été produites par ce module
+ L'objet "liste" à traiter a été produit par le module generator. En particulier
+ les parenthèses et les virgules ont été produites par ce module
"""
l_patterns_fin_etape = ( ');' , ');\n' )
l_patterns_fin_mcf = ( ')' , '),' )
contenant un mot-clef simple.
L'attribut self.texte_etape est modifié (complété) par le traitement
"""
+ #
+ # Ajout PN pour defi_fonction
+ if self.texte_etape.find("DEFI_FONCTION") > 1 :
+ if s_mcsimp.find("\n") > 1:
+ txt=""; bool = 0; numident=1
+ for l in s_mcsimp.splitlines() :
+ if bool == 0 :
+ bool = 1
+ numident=s_mcsimp.find("=")+2
+ txt=l
+ else :
+ txt=txt+('\n'+self.indent_courant*' '+numident*' ')*ind+l
+ s_mcsimp = txt
longueur = self.longueur(self.texte_etape)
increment = len(('\n'+self.indent_courant*' ')*ind + string.strip(s_mcsimp))
#self.jdc_fini = self.jdc_fini + ('\n'+self.indent_courant*' ')*ind + string.strip(s_mcsimp)
self.lmots_clef_calcules = ('SuivFron','TypeBila','ModeHOMA','CCAssoci', 'CCNoChaI','HOMaiN__','HOMaiNP1','CCNumOrI', 'CCNumPTI')
self.lmot_clef = ('CCMaiN__', 'CCNoMN__', 'CCIndica', 'CCSolN__', 'CCFronti', 'CCNoMFro', 'CCMaiNP1',
'CCNoMNP1', 'CCSolNP1', 'TypeRaff', 'TypeDera', 'NiveauMa', 'SeuilHau', 'SeuilHRe',
- 'SeuilHPE', 'NiveauMi', 'SeuilBas', 'SeuilBRe', 'SeuilBPE', 'ListeStd', 'NumeIter',
- 'Langue ', 'CCGroFro', 'CCNoChaI', 'CCNumOrI', 'CCNumPTI', 'SuivFron', 'TypeBila',
- 'ModeHOMA', 'HOMaiN__', 'HOMaiNP1','CCCoChaI')
+ 'SeuilHPE', 'NiveauMi', 'SeuilBas', 'SeuilBRe', 'SeuilBPE', 'ListeStd', 'NumeIter',
+ 'Langue ', 'CCGroFro', 'CCNoChaI', 'CCNumOrI', 'CCNumPTI', 'SuivFron', 'TypeBila',
+ 'ModeHOMA', 'HOMaiN__', 'HOMaiNP1','CCCoChaI')
# Bizarre demander a Gerald :
-# CVSolNP1
+# CVSolNP1
self.assoc['CCMaiN__']='FICHIER_MED_MAILLAGE_N'
self.assoc['CCNoMN__']='NOM_MED_MAILLAGE_N'
self.assoc['CCIndica']='FICHIER_MED_MAILLAGE_N'
b_eval = 0
a_eval=self.dico_mot_depend[mot]
try :
- b_eval=eval(self.dico_mot_depend[mot])
+ b_eval=eval(self.dico_mot_depend[mot])
except :
- for l in a_eval.split(" or "):
+ for l in a_eval.split(" or "):
try:
- b_eval=eval(l)
- if not (b_eval == 0 ):
- break
+ b_eval=eval(l)
+ if not (b_eval == 0 ):
+ break
except :
- pass
+ pass
return b_eval
self.textehomard=[]
for mot in self.lmot_clef:
-# on verifie d'abord que le mot clef doit bien être calculé
+# on verifie d'abord que le mot clef doit bien être calculé
if self.dico_mot_depend.has_key(mot) :
if self.cherche_dependance(mot) == 0 :
- continue
+ continue
if mot not in self.lmots_clef_calcules :
- clef_eficas=self.assoc[mot]
+ clef_eficas=self.assoc[mot]
if self.dico_mot_clef.has_key(clef_eficas):
- val=self.dico_mot_clef[clef_eficas]
+ val=self.dico_mot_clef[clef_eficas]
if val != None:
- try :
- ligne=mot+' '+val
- except:
- ligne=mot+' '+repr(val)
- ligne.rjust(32)
+ try :
+ ligne=mot+' '+val
+ except:
+ ligne=mot+' '+repr(val)
+ ligne.rjust(32)
self.textehomard.append(ligne)
else:
val=apply(HomardGenerator.__dict__[mot],(self,))
if val != None:
mot.rjust(8)
- ligne=mot+' '+val
- ligne.rjust(32)
+ ligne=mot+' '+val
+ ligne.rjust(32)
self.textehomard.append(ligne)
def get_homard(self):
def SuivFron(self):
val="non"
- if self.dico_mot_clef.has_key('NOM_MED_MAILLAGE_FRONTIERE'):
- if self.dico_mot_clef['NOM_MED_MAILLAGE_FRONTIERE'] != None:
- val="oui"
+ if self.dico_mot_clef.has_key('NOM_MED_MAILLAGE_FRONTIERE'):
+ if self.dico_mot_clef['NOM_MED_MAILLAGE_FRONTIERE'] != None:
+ val="oui"
return val
def TypeBila(self):
retour=None
dict_val={'NOMBRE':7,'INTERPENETRATION':3,'QUALITE':5,'CONNEXITE':11,'TAILLE':13}
for mot in ('NOMBRE','QUALITE','INTERPENETRATION','CONNEXITE','TAILLE'):
- if self.dico_mot_clef.has_key(mot):
- if (self.dico_mot_clef[mot] == "OUI"):
- inttypeBilan=inttypeBilan*dict_val[mot]
+ if self.dico_mot_clef.has_key(mot):
+ if (self.dico_mot_clef[mot] == "OUI"):
+ inttypeBilan=inttypeBilan*dict_val[mot]
retour = repr(inttypeBilan)
- return retour
+ return retour
def ModeHOMA(self):
intModeHOMA=1
- if self.dico_mot_clef.has_key('INFORMATION'):
- if self.dico_mot_clef['INFORMATION'] == "OUI":
- intModeHOMA=2
+ if self.dico_mot_clef.has_key('INFORMATION'):
+ if self.dico_mot_clef['INFORMATION'] == "OUI":
+ intModeHOMA=2
return repr(intModeHOMA)
-
+
def CCAssoci(self):
return 'MED'
def CCNoChaI(self):
- if not (self.dico_mot_clef.has_key('NOM_MED')):
- return None
- if (self.dico_mot_clef['NOM_MED']== None):
- return None
- if not (self.dico_mot_clef.has_key('COMPOSANTE')):
- return None
+ if not (self.dico_mot_clef.has_key('NOM_MED')):
+ return None
+ if (self.dico_mot_clef['NOM_MED']== None):
+ return None
+ if not (self.dico_mot_clef.has_key('COMPOSANTE')):
+ return None
if (self.dico_mot_clef['COMPOSANTE']== None):
return None
chaine=self.dico_mot_clef['COMPOSANTE']+' '+self.dico_mot_clef['NOM_MED']
def HOMaiN__(self):
chaine=None
if self.dico_mot_clef.has_key('NITER'):
- if self.dico_mot_clef['NITER'] != None :
+ if self.dico_mot_clef['NITER'] != None :
num="M"+repr(self.dico_mot_clef['NITER'])
- chaine=num+" "+num+".hom"
+ chaine=num+" "+num+".hom"
return chaine
def HOMaiNP1(self):
chaine=None
if self.dico_mot_clef.has_key('NITER'):
- if self.dico_mot_clef['NITER'] != None :
+ if self.dico_mot_clef['NITER'] != None :
num="M"+repr(self.dico_mot_clef['NITER']+1)
- chaine=num+" "+num+".hom"
+ chaine=num+" "+num+".hom"
return chaine
def CCNumOrI(self):
chaine=repr(1)
if self.dico_mot_clef.has_key('NUME_ORDRE'):
if self.dico_mot_clef['NUME_ORDRE'] != None :
- chaine=repr(self.dico_mot_clef['NUME_ORDRE'])
+ chaine=repr(self.dico_mot_clef['NUME_ORDRE'])
return chaine
def CCNumPTI(self):
chaine=repr(1)
if self.dico_mot_clef.has_key('NUME_PAS_TEMPS'):
if self.dico_mot_clef['NUME_PAS_TEMPS'] != None :
- chaine=repr(self.dico_mot_clef['NUME_PAS_TEMPS'])
+ chaine=repr(self.dico_mot_clef['NUME_PAS_TEMPS'])
return chaine
import Extensions
from Extensions.parametre import ITEM_PARAMETRE
from Formatage import Formatage
+from Extensions.param2 import Formula
def entryPoint():
"""
return self.generMCNUPLET(obj)
elif isinstance(obj,ITEM_PARAMETRE):
return self.generITEM_PARAMETRE(obj)
+ elif isinstance(obj,Formula):
+ return self.generFormula(obj)
else:
raise "Type d'objet non prévu",obj
def generITEM_PARAMETRE(self,obj):
return repr(obj)
+ def generFormula(self,obj):
+ return repr(obj)
+
def generPARAMETRE(self,obj):
"""
Cette méthode convertit un PARAMETRE
en une liste de chaines de caractères à la syntaxe python
"""
- if type(obj.valeur) == types.StringType:
- # PN pour corriger le bug a='3+4' au lieu de a= 3+4
- #return obj.nom + " = '" + obj.valeur + "';\n"
- return obj.nom + " = " + obj.valeur + ";\n"
- else:
- return obj.nom + ' = ' + str(obj.valeur) + ';\n'
+ return repr(obj) + ";\n"
def generETAPE_NIVEAU(self,obj):
"""
if nom == '' : nom = 'sansnom'
l.append(nom + ' = FORMULE(')
for v in obj.mc_liste:
- text=self.generator(v)
- l.append(v.nom+'='+text)
+ text=self.generator(v)
+ l.append(v.nom+'='+text)
l.append(');')
return l
liste=self.generator(v)
for mocle in liste :
l.append(mocle)
+ elif isinstance(v,Accas.MCFACT):
+ liste=self.generator(v)
elif isinstance(v,Accas.MCList):
liste=self.generator(v)
liste[0]=v.nom+'='+liste[0]
- for mocle in liste :
- l.append(mocle)
+ # PN essai de correction bug identation
+ if (hasattr(v,'data')) :
+ if (isinstance(v.data[0],Accas.MCFACT) and (len(v.data) == 1)):
+ l.append(liste)
+ else:
+ for mocle in liste :
+ l.append(mocle)
+ else :
+ for mocle in liste :
+ l.append(mocle)
else:
data=self.generator(v)
if type(data) == types.ListType:
l.append(data)
return l
+ def format_item(self,valeur,etape):
+ if type(valeur) == types.InstanceType :
+ if valeur.__class__.__name__ == 'CO' or hasattr(etape,'sdprods') and valeur in etape.sdprods :
+ s = "CO('"+ self.generator(valeur) +"')"
+ elif isinstance(valeur,Accas.PARAMETRE):
+ # il ne faut pas prendre la string que retourne gener
+ # mais seulement le nom dans le cas d'un paramètre
+ s = valeur.nom
+ else:
+ s = self.generator(valeur)
+ elif type(valeur) == types.FloatType :
+ # Pour un flottant on utilise str
+ # ou la notation scientifique
+ s = str(valeur)
+ try :
+ clefobj=obj.GetNomConcept()
+ if self.appli.dict_reels.has_key(clefobj):
+ if self.appli.dict_reels[clefobj].has_key(valeur):
+ s=self.appli.dict_reels[clefobj][valeur]
+ except:
+ pass
+ elif type(valeur) == types.StringType :
+ if valeur.find('\n') == -1:
+ # pas de retour chariot, on utilise repr
+ s = repr(valeur)
+ elif valeur.find('"""') == -1:
+ # retour chariot mais pas de triple ", on formatte
+ s='"""'+valeur+'"""'
+ else:
+ s = repr(valeur)
+ else :
+ # Pour les autres types on utilise repr
+ s = repr(valeur)
+ return s
+
+
def generMCSIMP(self,obj) :
"""
Convertit un objet MCSIMP en une liste de chaines de caractères à la
if type(obj.valeur) in (types.TupleType,types.ListType) :
s = ''
for val in obj.valeur :
- if type(val) == types.InstanceType :
- if hasattr(obj.etape,'sdprods') and val in obj.etape.sdprods :
- s = s + "CO('"+ self.generator(val) +"')"
- elif val.__class__.__name__ == 'CO':
- s = s + "CO('"+ self.generator(val) +"')"
- elif isinstance(val,Accas.PARAMETRE):
- # il ne faut pas prendre la string que retourne gener
- # mais seulement le nom dans le cas d'un paramètre
- s = s + val.nom
- else:
- s = s + self.generator(val)
- elif type(val) == types.FloatType :
- # Pour un flottant on utilise str qui a une precision de
- # "seulement" 12 chiffres : evite les flottants du genre 0.599999999999998
- s2=str(val)
- try :
- clefobj=obj.GetNomConcept()
- if self.appli.dict_reels.has_key(clefobj):
- if self.appli.dict_reels[clefobj].has_key(val):
- s2=self.appli.dict_reels[clefobj][val]
- except:
- pass
- s = s + s2
- else :
- # Pour les autres types on utilise repr
- s = s + `val`
- s = s + ','
+ s =s +self.format_item(val,obj.etape) + ','
if len(obj.valeur) > 1:
s = '(' + s + '),'
- if obj.nbrColonnes() :
- s=self.formatColonnes(obj.nbrColonnes(),s)
+ if obj.nbrColonnes() :
+ s=self.formatColonnes(obj.nbrColonnes(),s)
else :
- val=obj.valeur
- if type(val) == types.InstanceType :
- if hasattr(obj.etape,'sdprods') and val in obj.etape.sdprods :
- s = "CO('"+ self.generator(val) +"')"
- elif val.__class__.__name__ == 'CO':
- s = "CO('"+ self.generator(val) +"')"
- elif isinstance(val,Accas.PARAMETRE):
- # il ne faut pas prendre la string que retourne gener
- # mais seulement le nom dans le cas d'un paramètre
- s = val.nom
- elif isinstance(val,Extensions.parametre.PARAMETRE):
- s = val.nom
- else:
- s = self.generator(val)
- elif type(val) == types.FloatType :
- # Pour un flottant on utilise str
- # ou la notation scientifique
- s = str(val)
- try :
- clefobj=obj.GetNomConcept()
- if self.appli.dict_reels.has_key(clefobj):
- if self.appli.dict_reels[clefobj].has_key(val):
- s=self.appli.dict_reels[clefobj][val]
- except:
- pass
- else :
- # Pour les autres types on utilise repr
- if isinstance(val,Extensions.parametre.PARAMETRE):
- s = val.nom
- else:
- s = `val`
- s= s + ','
+ s=self.format_item(obj.valeur,obj.etape) + ','
return s
#if 1 == 1 :
liste=text.split(",")
indice=0
- textformat=""
+ textformat=""
while ( indice < len(liste) -2 ) :
for l in range(nbrColonnes) :
- textformat=textformat+liste[indice]+","
- indice=indice+1
- textformat=textformat+"\n"
- textformat=textformat+"),"
+ textformat=textformat+liste[indice]+","
+ indice=indice+1
+ textformat=textformat+"\n"
+ textformat=textformat+"),"
except :
#else :
textformat=text
l.append(nom + ' = FORMULE(')
for v in obj.mc_liste:
text=self.generator(v)
- l.append(v.nom+'='+text)
+ l.append(v.nom+'='+text)
l.append(');')
return l
--- /dev/null
+# -*- coding: utf-8 -*-
+# CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
+"""
+ Ce module contient le plugin generateur de fichier au format
+ python pour EFICAS.
+ PN
+
+"""
+import traceback
+import types,string,re
+
+from Noyau import N_CR
+from Noyau.N_utils import repr_float
+import Accas
+import Extensions
+from Extensions.parametre import ITEM_PARAMETRE
+from Formatage import Formatage
+from generator_python import PythonGenerator
+from Editeur.widgets import showerror
+
+def entryPoint():
+ """
+ Retourne les informations nécessaires pour le chargeur de plugins
+
+ Ces informations sont retournées dans un dictionnaire
+ """
+ return {
+ # Le nom du plugin
+ 'name' : 'vers3DSalome',
+ # La factory pour créer une instance du plugin
+ 'factory' : vers3DSalomeGenerator,
+ }
+
+
+class vers3DSalomeGenerator(PythonGenerator):
+ """
+ Ce generateur parcourt un objet AFFE-CARA_ELEM
+ et produit un fichier au format texte contenant
+ les instructions idl pour PAL
+ """
+
+ def __init__(self,cr=None):
+ self.list_commandes=[];
+ self.jdc=None
+ self.node=None
+ self.clefs=None
+ self.liste_motetat = ("AFFE_CARA_ELEM", "ORIG_AXE", "AXE" ,
+ "BARRE", "CABLE", "CARA", "COQUE", "EPAIS",
+ "EXCENTREMENT", "GROUP_MA", "ORIENTATION",
+ "POUTRE", "SECTION", "VALE", "VARI_SECT",
+ "GRILLE", "ANGL_REP",
+ "b_constant", "b_homothetique",
+ "b_rectangle", "b_affine", "b_cercle" )
+ self.dict_deb_com={"POUTRE":"VisuPoutre", "CABLE" : "VisuCable",
+ "COQUE" : "VisuCoque", "GRILLE" : "VisuGrille",
+ "ORIENTATION" : "Orientation", "BARRE" : "VisuBarre"}
+
+ self.dict_suite_com={"RECTANGLE":"Rectangle","GENERALE":"Generale",
+ "CERCLE":"Cercle"}
+
+ self.dict_traduit={"VARI_SECT":"extrusion","EXCENTREMENT":"Excentre","EPAIS":"Epais"}
+
+ self.init_ligne()
+
+ def init_jdc(self,jdc) :
+ self.jdc=jdc
+
+ def init_ligne (self) :
+ self.boolGpMa = 0
+ self.commande = ""
+ self.dict_attributs = {}
+
+ def gener(self,node):
+ """
+ """
+ self.node=node
+ self.list_commandes=[];
+ self.generator(self.node.object)
+ return self.list_commandes
+
+ def generator(self,obj):
+ if (obj.nom in self.liste_motetat) and (self.calcule_ouinon(obj)):
+ PythonGenerator.generator(self,obj)
+ """
+ f1=PythonGenerator.generator(self,obj)
+ else :
+ return ""
+ """
+
+ def calcule_ouinon(self,obj):
+ ouinon=1
+ for l in obj.get_genealogie() :
+ if not l in self.liste_motetat :
+ ouinon=0
+ break
+ return ouinon
+
+
+ def generETAPE(self,obj):
+ """
+ """
+ if obj.isvalid() == 0 :
+ showerror("Element non valide","Salome ne sait pas traiter les élements non valides")
+ return
+ for v in obj.mc_liste:
+ liste=self.generator(v)
+
+
+ def generMCSIMP(self,obj) :
+ """
+ """
+ #print "MCSIMP : ", obj.nom
+ if obj.nom in dir(self) :
+ suite = self.__class__.__dict__[obj.nom](self,obj)
+ else :
+ clef=self.dict_traduit[obj.nom]
+ self.dict_attributs[clef]=obj.val
+
+ def generMCFACT(self,obj):
+ """
+ Convertit un objet MCFACT en une liste de chaines de caractères à la
+ syntaxe python
+ """
+ self.init_ligne()
+ self.commande=self.dict_deb_com[obj.nom]
+ print self.commande
+ for v in obj.mc_liste:
+ self.generator(v)
+ #print self.commande
+ #print self.dict_attributs
+ if self.boolGpMa == 1:
+ self.list_commandes.append((self.commande,self.dict_attributs))
+ else :
+ showerror("Elements ne portant pas sur un Groupe de Maille","Salome ne sait pas montrer ce type d' element")
+
+ def generMCList(self,obj):
+ """
+ """
+ for mcfact in obj.data:
+ self.generator(mcfact)
+
+ def generMCBLOC(self,obj):
+ """
+ """
+ for v in obj.mc_liste:
+ self.generator(v)
+
+ def GROUP_MA(self,obj):
+ self.boolGpMa = 1
+ self.dict_attributs["Group_Maille"]=obj.val
+
+ def SECTION(self,obj):
+ assert (self.commande != "" )
+ if self.commande == "VisuCable" :
+ self.dict_attributs["R"]=obj.val
+ elif (self.commande !="VisuGrille") :
+ self.commande=self.commande+self.dict_suite_com[obj.valeur]
+
+ def CARA(self,obj) :
+ self.clefs=obj.val
+ if type(self.clefs) == types.StringType :
+ self.clefs=(obj.val,)
+
+ def VALE(self,obj) :
+ atraiter=obj.val
+ if len(self.clefs) > 1 :
+ assert (len(atraiter) == len(self.clefs))
+ else :
+ atraiter=(atraiter,)
+ for k in range(len(atraiter)) :
+ clef=self.clefs[k]
+ val =atraiter[k]
+ if isinstance (val, Extensions.parametre.PARAMETRE):
+ val=val.valeur
+ print val.__class__
+ context={}
+ if type(val) == type("aaa") :
+ for p in self.jdc.params:
+ context[p.nom]=eval(p.val,self.jdc.const_context, context)
+ print context[p.nom]
+ res=eval(val,self.jdc.const_context, context)
+ val=res
+ self.dict_attributs[clef]=val
+
+ def ANGL_REP(self,obj) :
+ assert (len(obj.val) == 2)
+ alpha,beta=obj.val
+ self.dict_attributs["angleAlpha"]=alpha
+ self.dict_attributs["angleBeta"]=beta
+
+ def ORIG_AXE(self,obj) :
+ assert (len(obj.val) == 3)
+ alpha,beta,gamma=obj.val
+ self.dict_attributs["origAxeX"]=alpha
+ self.dict_attributs["origAxeY"]=beta
+ self.dict_attributs["origAxeZ"]=gamma
+
+ def AXE(self,obj) :
+ assert (len(obj.val) == 3)
+ alpha,beta,gamma=obj.val
+ self.dict_attributs["axeX"]=alpha
+ self.dict_attributs["axeY"]=beta
+ self.dict_attributs["axeZ"]=gamma
+