-#@ MODIF observation_ops Macro DATE 11/05/2010 AUTEUR COURTOIS M.COURTOIS
+#@ MODIF observation_ops Macro DATE 13/01/2011 AUTEUR PELLET J.PELLET
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
-# COPYRIGHT (C) 1991 - 2007 EDF R&D WWW.CODE-ASTER.ORG
+# COPYRIGHT (C) 1991 - 2011 EDF R&D WWW.CODE-ASTER.ORG
# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
# ======================================================================
-
-
+# RESPONSABLE BODEL C.BODEL
def observation_ops(self,
PROJECTION = None,
MODELE_1 = None,
MODELE_2 = None,
RESULTAT = None,
- NUME_DDL = None,
+ MATR_A = None,
+ MATR_B = None,
MODI_REPERE = None,
NOM_CHAM = None,
FILTRE = None,
# importation de commandes
import aster
from Accas import _F
- from Utilitai.UniteAster import UniteAster
from Utilitai.Utmess import UTMESS
- from Utilitai.Table import Table
from Cata.cata import mode_meca, dyna_harmo, evol_elas,dyna_trans
MODI_REPERE = self.get_cmd('MODI_REPERE')
PROJ_CHAMP = self.get_cmd('PROJ_CHAMP')
# ne sert pas par la suite
mcfact = args
- if NOM_CHAM == 'DEPL':
- if isinstance( RESULTAT, dyna_harmo):
- TYPE_CHAM = 'NOEU_DEPL_C'
- else:
- TYPE_CHAM = 'NOEU_DEPL_R'
- elif NOM_CHAM == 'EPSI_NOEU_DEPL':
- if isinstance( RESULTAT, dyna_harmo):
- TYPE_CHAM = 'NOEU_EPSI_C'
- else:
- TYPE_CHAM = 'NOEU_EPSI_R'
- else:
- UTMESS('F','ELEMENTS4_48',valk=[NOM_CHAM])
+ if not isinstance(NOM_CHAM,tuple):
+ NOM_CHAM = [NOM_CHAM]
+
+ TYPE_CHAM = None
+ RESU = None
if isinstance( RESULTAT, evol_elas): TYPE_RESU='EVOL_ELAS'
if isinstance( RESULTAT, dyna_trans): TYPE_RESU='DYNA_TRANS'
if isinstance( RESULTAT, mode_meca): TYPE_RESU='MODE_MECA'
self.DeclareOut( 'RESU', self.sd)
- jdc = CONTEXT.get_current_step().jdc
# recuperation du maillage associe au modele numerique
_maillag = aster.getvectjev( MODELE_1.nom.ljust(8) + '.MODELE .LGRF' )
# afreq pour les frequences propres
if isinstance( RESULTAT, mode_meca):
+ # frequences propres
from Cata.cata import RECU_TABLE
__freq = RECU_TABLE(CO=RESULTAT,
NOM_PARA='FREQ',);
afreq = __freq.EXTR_TABLE().Array('NUME_ORDRE','FREQ')
+ # noms des matrices
+ if MATR_A !=None or MATR_B !=None:
+ # recherche du nume_ddl associe
+ iret,ibid,nom_nume_ddl = aster.dismoi('F','NOM_NUME_DDL',MATR_A.nom,'MATR_ASSE')
+ NUME_DDL = self.get_concept(nom_nume_ddl)
+ # coherence avec le nom associe a MODELE_2 :
+ iret,ibid,nom_modele = aster.dismoi('F','NOM_MODELE',nom_nume_ddl,'NUME_DDL')
+ if nom_modele.strip() != MODELE_2.nom.strip():
+ UTMESS('F','CALCESSAI0_10')
+ else:
+ UTMESS('A','CALCESSAI0_9')
+ NUME_DDL = None
+
else:
afreq = None
+ NUME_DDL = None
- nume_ordr_demande = mcfact['NUME_ORDRE']
- if type(nume_ordr_demande) != tuple :
- nume_ordr_demande = [nume_ordr_demande]
-
- num_max = len(RESULTAT.LIST_VARI_ACCES()['NUME_ORDRE'])
+ indice = range(len(RESULTAT.LIST_VARI_ACCES()['NUME_ORDRE']))
#***********************************************
# PHASE DE CALCUL DE LA DEFORMATION MOYENNE AUX NOEUDS
# CHAMP CALCULE SUR LE MODELE NUMERIQUE
#***********************************************
+ resu_epsi = None
if EPSI_MOYENNE != None :
+ for nomcham in NOM_CHAM:
+ if nomcham == 'EPSI_NOEU':
+ if isinstance( RESULTAT, dyna_harmo):
+ TYPE_CHAM = 'NOEU_EPSI_C'
+ else:
+ TYPE_CHAM = 'NOEU_EPSI_R'
- if NOM_CHAM != 'EPSI_NOEU_DEPL':
- __proj= RESULTAT
- UTMESS('F','UTILITAI8_24',valk=['NOEU_EPSI',NOM_CHAM])
+ if TYPE_CHAM == None:
+ UTMESS('F', 'UTILITAI8_24', valk = ['NOEU_EPSI', nomcham])
else:
- if nume_ordr_demande[0]:
- num_ordr = nume_ordr_demande
- else:
- num_ordr = RESULTAT.LIST_VARI_ACCES()['NUME_ORDRE']
+ num_ordr = RESULTAT.LIST_VARI_ACCES()['NUME_ORDRE']
if isinstance( RESULTAT, evol_elas):
list_inst = RESULTAT.LIST_VARI_ACCES()['INST']
if TYPE_CHAM[-1:] == 'C':
mcfactr = { 'NOM_CMP' : nom_cmps,
- 'OPERATION' : 'EXTRACTION',
- 'INTITULE' : str('R'+str(nb_mcfact)),
- 'FORMAT_C' : 'REEL',
- 'NOEUD' : l_noeud,
- 'NOM_CHAM' : 'EPSI_NOEU_DEPL',
- 'RESULTAT' : RESULTAT,
- 'NUME_ORDRE' : num_ordr,
- }
+ 'OPERATION' : 'EXTRACTION',
+ 'INTITULE' : str('R'+str(nb_mcfact)),
+ 'FORMAT_C' : 'REEL',
+ 'NOEUD' : l_noeud,
+ 'NOM_CHAM' : 'EPSI_NOEU',
+ 'RESULTAT' : RESULTAT,
+ 'NUME_ORDRE' : num_ordr,
+ }
argsi['ACTION'].append(mcfactr)
mcfacti = { 'NOM_CMP' : nom_cmps,
- 'OPERATION' : 'EXTRACTION',
- 'INTITULE' : str('I'+str(nb_mcfact)),
- 'FORMAT_C' : 'IMAG',
- 'NOEUD' : l_noeud,
- 'NOM_CHAM' : 'EPSI_NOEU_DEPL',
- 'RESULTAT' : RESULTAT,
- 'NUME_ORDRE' : num_ordr,
- }
+ 'OPERATION' : 'EXTRACTION',
+ 'INTITULE' : str('I'+str(nb_mcfact)),
+ 'FORMAT_C' : 'IMAG',
+ 'NOEUD' : l_noeud,
+ 'NOM_CHAM' : 'EPSI_NOEU',
+ 'RESULTAT' : RESULTAT,
+ 'NUME_ORDRE' : num_ordr,
+ }
argsi['ACTION'].append(mcfacti)
else:
mcfactr = { 'NOM_CMP' : nom_cmps,
- 'OPERATION' : 'EXTRACTION',
- 'INTITULE' : str(nb_mcfact),
- 'NOEUD' : l_noeud,
- 'NOM_CHAM' : 'EPSI_NOEU_DEPL',
- 'RESULTAT' : RESULTAT,
- 'NUME_ORDRE' : num_ordr,
- }
+ 'OPERATION' : 'EXTRACTION',
+ 'INTITULE' : str(nb_mcfact),
+ 'NOEUD' : l_noeud,
+ 'NOM_CHAM' : 'EPSI_NOEU',
+ 'RESULTAT' : RESULTAT,
+ 'NUME_ORDRE' : num_ordr,
+ }
argsi['ACTION'].append(mcfactr)
_tepsi=POST_RELEVE_T(
DETRUIRE( CONCEPT= _F( NOM = _tepsi ), INFO=1)
mcfact2 = { }
- __chame = [None]*num_max
- for ind in num_ordr:
+ __chame = [None]*len(indice)
+ for ind in indice:
argsa = {'AFFE' : [], }
for mcfacta in range(nb_mcfact):
l_noeud_mcfact = lnoeuds[str(mcfacta+1)]
for row in table.rows:
if TYPE_CHAM[-1:] == 'C':
if row['INTITULE'].strip() == str('R'+str(mcfacta+1)) \
- and row['NUME_ORDRE'] == ind :
+ and row['NUME_ORDRE'] == num_ordr[ind] :
l_valr.append(row[cmp])
lur = 1
elif row['INTITULE'].strip() == str('I'+str(mcfacta+1)) \
- and row['NUME_ORDRE'] == ind :
+ and row['NUME_ORDRE'] == num_ordr[ind] :
l_vali.append(row[cmp])
lui = 1
-
+
else:
if row['INTITULE'].strip() == str(mcfacta+1) \
- and row['NUME_ORDRE'] == ind:
+ and row['NUME_ORDRE'] == num_ordr[ind]:
l_val.append(row[cmp])
if TYPE_CHAM[-1:] == 'C':
vmoyer = sum(l_valr)/len(l_valr)
vmoyei = sum(l_vali)/len(l_vali)
vmoye = sum(l_valc)/len(l_valc)
- vminr = min(l_valr)
- vmini = min(l_vali)
+ vminr = min(l_valr)
+ vmini = min(l_vali)
vmaxr = max(l_valr)
vmaxi = max(l_vali)
if vmoyer > 0:
if cmp_vari not in masque_mc:
if cmp == cmp_vari and not vu:
if EPSI_MOYENNE[mcfacta]['MAILLE'] != None:
- entite = str('MAILLE : '+str(PSI_MOYENNE[mcfacta]['MAILLE']))
+ entite = str('MAILLE : '+str(EPSI_MOYENNE[mcfacta]['MAILLE']))
if EPSI_MOYENNE[mcfacta]['GROUP_MA'] != None:
entite = str('GROUP_MA : '+str(EPSI_MOYENNE[mcfacta]['GROUP_MA']))
- UTMESS('A','OBSERVATION_8',vali=[ind],valr=[seuil_mc],valk=[entite,cmp])
+ UTMESS('A','OBSERVATION_8',vali=[num_ordr[ind]],valr=[seuil_mc],valk=[entite,cmp])
vu = 1
argsa['AFFE'].append(mcfactc)
- __chame[ind-1] = CREA_CHAMP( OPERATION = 'AFFE',
+ __chame[ind] = CREA_CHAMP( OPERATION = 'AFFE',
MODELE = MODELE_1,
PROL_ZERO = 'OUI',
- TYPE_CHAM = TYPE_CHAM,
- OPTION = NOM_CHAM,
+ TYPE_CHAM = TYPE_CHAM,
+ OPTION = 'EPSI_NOEU',
**argsa
);
if isinstance( RESULTAT, mode_meca):
- mcfact2 = {'CHAM_GD' : __chame[ind-1],
+ mcfact2 = {'CHAM_GD' : __chame[ind],
'MODELE' : MODELE_1,
- 'NUME_MODE' : int(afreq[ind-1,0]),
- 'FREQ' : afreq[ind-1,1],
+ 'NUME_MODE' : int(afreq[ind,0]),
+ 'FREQ' : afreq[ind,1],
}
if isinstance( RESULTAT, evol_elas):
- mcfact2 = {'CHAM_GD' : __chame[ind-1],
+ mcfact2 = {'CHAM_GD' : __chame[ind],
'MODELE' : MODELE_1,
- 'INST' : list_inst[ind-1],
+ 'INST' : list_inst[ind],
}
if isinstance( RESULTAT, dyna_trans):
- mcfact2 = {'CHAM_GD' : __chame[ind-1],
+ mcfact2 = {'CHAM_GD' : __chame[ind],
'MODELE' : MODELE_1,
'INST' : list_inst[ind],
}
if isinstance( RESULTAT, dyna_harmo):
- mcfact2 = {'CHAM_GD' : __chame[ind-1],
- 'MODELE' : MODELE_1,
- 'FREQ' : list_freq[ind-1],
- }
+ mcfact2 = {'CHAM_GD' : __chame[ind],
+ 'MODELE' : MODELE_1,
+ 'FREQ' : list_freq[ind],
+ }
if cham_mater is not None:
mcfact2['CHAM_MATER'] = cham_mater
liste.append(mcfact2)
- __proj = CREA_RESU(
+ resu_epsi = 'EPSI_NOEU'
+ RESU = CREA_RESU(
OPERATION = 'AFFE',
TYPE_RESU = TYPE_RESU,
- NOM_CHAM = NOM_CHAM,
+ NOM_CHAM = 'EPSI_NOEU',
AFFE = liste,
);
- else:
- __proj= RESULTAT
+#***********************************************
+# BOUCLE SUR LES NOM_CHAM
+#***********************************************
+
+ for nomcham in NOM_CHAM:
+
+ if nomcham == 'DEPL' or nomcham == 'VITE' or nomcham == 'ACCE':
+ if isinstance( RESULTAT, dyna_harmo):
+ TYPE_CHAM = 'NOEU_DEPL_C'
+ else:
+ TYPE_CHAM = 'NOEU_DEPL_R'
+ elif nomcham == 'EPSI_NOEU':
+ if isinstance( RESULTAT, dyna_harmo):
+ TYPE_CHAM = 'NOEU_EPSI_C'
+ else:
+ TYPE_CHAM = 'NOEU_EPSI_R'
+ else:
+ UTMESS('F', 'ELEMENTS4_48', valk = [nomcham])
+
#***********************************************
# PHASE DE PROJECTION
#***********************************************
- if PROJECTION == 'OUI':
- __proj=PROJ_CHAMP(RESULTAT = __proj,
+ if PROJECTION == 'OUI':
+ if resu_epsi and nomcham == 'EPSI_NOEU':
+ __proj = PROJ_CHAMP(METHODE='COLLOCATION',
+ RESULTAT = RESU,
MODELE_1 = MODELE_1,
MODELE_2 = MODELE_2,
- NUME_DDL = NUME_DDL,
- NOM_CHAM = NOM_CHAM,
+ NOM_CHAM = nomcham,
**mcfact
- );
-
- modele = MODELE_2
- else:
- modele = MODELE_1
+ )
+ else:
+ __proj = PROJ_CHAMP(METHODE = 'COLLOCATION',
+ RESULTAT = RESULTAT,
+ MODELE_1 = MODELE_1,
+ MODELE_2 = MODELE_2,
+ NOM_CHAM = nomcham,
+ **mcfact
+ )
+ modele = MODELE_2
+ else:
+ if resu_epsi and nomcham == 'EPSI_NOEU':
+ __proj = RESU
+ else:
+ __proj = RESULTAT
+ modele = MODELE_1
#***********************************************
# )
- if MODIF_REPERE != None :
- if nume_ordr_demande[0]:
- num_ordr = nume_ordr_demande
- else:
- num_ordr = __proj.LIST_VARI_ACCES()['NUME_ORDRE']
+ if MODIF_REPERE != None :
+ num_ordr = __proj.LIST_VARI_ACCES()['NUME_ORDRE']
for modif_rep in MODIF_REPERE :
- type_cham = modif_rep['TYPE_CHAM']
- if type_cham == 'TENS_2D':
- nom_cmp = ['EPXX','EPYY','EPZZ','EPXY',]
- elif type_cham == 'TENS_3D':
- nom_cmp = ['EPXX','EPYY','EPZZ','EPXY','EPXZ','EPYZ',]
- else:
- nom_cmp = modif_rep['NOM_CMP']
+ modi_rep = modif_rep.val
+ type_cham = modif_rep['TYPE_CHAM']
+ nom_cmp = modif_rep['NOM_CMP']
+
+ if type_cham == 'TENS_2D':
+ nomchamx = 'EPSI_NOEU'
+ elif type_cham == 'TENS_3D':
+ nomchamx = 'EPSI_NOEU'
+ else:
+ nomchamx = 'DEPL'
+
+ if nomcham == nomchamx:
mcfact1 = { 'NOM_CMP' : nom_cmp,
'TYPE_CHAM' : type_cham,
- 'NOM_CHAM' : NOM_CHAM }
+ 'NOM_CHAM' : nomcham }
mcfact2 = { }
- modi_rep = modif_rep.val
if modi_rep['REPERE'] == 'DIR_JAUGE' :
vect_x = None
vect_y = modi_rep['VECT_Y']
# il faut des mailles pour les tenseurs d'ordre 2
- taille = 0
for typ in ['MAILLE','GROUP_MA',]:
if modi_rep.has_key(typ) :
if PROJECTION == 'OUI':
else:
maya = mayanum
list_ma = find_ma(maya, {typ : modi_rep[typ]})
- taille = len(list_ma)
mcfact1.update({ 'MAILLE' : list_ma })
angl_naut = crea_repere_xy(vect_x, vect_y)
mcfact2.update({ 'REPERE' : 'UTILISATEUR',
'ANGL_NAUT' : angl_naut })
- args = {'MODI_CHAM' : mcfact1,
+ argsm = {'MODI_CHAM' : mcfact1,
'DEFI_REPERE' : mcfact2 }
- __proj = MODI_REPERE( RESULTAT = __proj,
- NUME_ORDRE = num_ordr,
- **args)
+ __bidon = MODI_REPERE( RESULTAT = __proj,
+ NUME_ORDRE = num_ordr,
+ **argsm)
+ DETRUIRE( CONCEPT= _F( NOM = __proj ), INFO=1)
+ __proj = __bidon
if modi_rep['REPERE'] == 'NORMALE' :
# Cas ou l'utilisateur choisit de creer les reperes locaux
UTMESS('E','UTILITAI7_9')
chnorm = crea_normale(self, MODELE_1, MODELE_2, NUME_DDL,
- cham_mater, cara_elem)
+ cham_mater, cara_elem)
modele = MODELE_2
chnormx = chnorm.EXTR_COMP('DX',[],1)
ind_noeuds = chnormx.noeud
mcfact1.update({ 'NOEUD' : nomnoe })
mcfact2.update({ 'REPERE' : 'UTILISATEUR',
'ANGL_NAUT' : angl_naut})
- args = {'MODI_CHAM' : mcfact1,
+ argsm = {'MODI_CHAM' : mcfact1,
'DEFI_REPERE' : mcfact2 }
__bid[k+1] = MODI_REPERE( RESULTAT = __bid[k],
TOUT_ORDRE = 'OUI',
CRITERE = 'RELATIF',
- **args)
+ **argsm)
k = k + 1
__proj = __bid[-1:][0]
mcfact2.update({ 'REPERE' : 'UTILISATEUR',
'ANGL_NAUT' : angl_naut })
- args = {'MODI_CHAM' : mcfact1,
- 'DEFI_REPERE' : mcfact2 }
+ argsm = {'MODI_CHAM' : mcfact1,
+ 'DEFI_REPERE' : mcfact2 }
__bidon = MODI_REPERE( RESULTAT = __proj,
CRITERE = 'RELATIF',
- **args)
+ **argsm)
DETRUIRE( CONCEPT= _F( NOM = __proj ), INFO=1)
__proj = __bidon
# Phase de selection des DDL de mesure
#*************************************************
- if FILTRE != None:
- if nume_ordr_demande[0]:
- num_ordr = nume_ordr_demande
- else:
- num_ordr = __proj.LIST_VARI_ACCES()['NUME_ORDRE']
+ resu_filtre = None
+ if FILTRE != None:
+ num_ordr = __proj.LIST_VARI_ACCES()['NUME_ORDRE']
- __chamf = [None]*num_max
- if isinstance( RESULTAT, evol_elas):
- list_inst_ini = RESULTAT.LIST_VARI_ACCES()['INST']
- if isinstance( RESULTAT, dyna_trans):
- list_inst_ini = RESULTAT.LIST_VARI_ACCES()['INST']
- if isinstance( RESULTAT, dyna_harmo):
- list_freq_ini = RESULTAT.LIST_VARI_ACCES()['FREQ']
+ __chamf = [None]*len(indice)
+ if isinstance( RESULTAT, evol_elas):
+ list_inst = __proj.LIST_VARI_ACCES()['INST']
+ if isinstance( RESULTAT, dyna_trans):
+ list_inst = __proj.LIST_VARI_ACCES()['INST']
+ if isinstance( RESULTAT, dyna_harmo):
+ list_freq = __proj.LIST_VARI_ACCES()['FREQ']
- liste = []
- for ind in num_ordr:
- mcfact2 = { }
- filtres = []
- __chamex = CREA_CHAMP(TYPE_CHAM = TYPE_CHAM,
+ liste = []
+
+ for ind in indice:
+ mcfact2 = { }
+ filtres = []
+ __chamex = CREA_CHAMP(TYPE_CHAM = TYPE_CHAM,
OPERATION = 'EXTR',
RESULTAT = __proj,
- NOM_CHAM = NOM_CHAM,
- NUME_ORDRE = ind,);
+ NOM_CHAM = nomcham,
+ NUME_ORDRE = num_ordr[ind],);
+
+ for mcfiltre in FILTRE :
+ filtre = mcfiltre.val
+ try:
+ nomchamx = filtre['NOM_CHAM']
+ except KeyError:
+ nomchamx = None
+
+ if nomchamx == None or nomchamx == nomcham:
- for mcfiltre in FILTRE :
mcfact1 = {}
- filtre = mcfiltre.val
- for typ in ['NOEUD','GROUP_NO','MAILLE','GROUP_MA']:
+
+ atraiter = None
+ if filtre['DDL_ACTIF'][0][0] == 'E' and nomcham == 'EPSI_NOEU':
+ atraiter = nomcham
+ elif filtre['DDL_ACTIF'][0][0] == 'D' and nomcham == 'DEPL':
+ atraiter = nomcham
+ elif filtre['DDL_ACTIF'][0][0] == 'D' and nomcham == 'VITE':
+ atraiter = nomcham
+ elif filtre['DDL_ACTIF'][0][0] == 'D' and nomcham == 'ACCE':
+ atraiter = nomcham
+
+ if atraiter:
+ for typ in ['NOEUD', 'GROUP_NO', 'MAILLE', 'GROUP_MA']:
if filtre.has_key(typ) :
mcfact1.update({typ : filtre[typ]})
- mcfact1.update({'NOM_CMP' : filtre['DDL_ACTIF'],
+ mcfact1.update({'NOM_CMP' : filtre['DDL_ACTIF'],
'CHAM_GD' : __chamex })
- filtres.append(mcfact1)
+ filtres.append(mcfact1)
- if NOM_CHAM == 'DEPL':
- __chamf[ind-1] = CREA_CHAMP(TYPE_CHAM = TYPE_CHAM,
+ if len(filtres) > 0:
+ if nomcham == 'DEPL' or nomcham == 'VITE' or nomcham == 'ACCE':
+ __chamf[ind] = CREA_CHAMP(TYPE_CHAM = TYPE_CHAM,
OPERATION = 'ASSE',
MODELE = modele,
ASSE = filtres
);
- elif NOM_CHAM == 'EPSI_NOEU_DEPL':
- __chamf[ind-1] = CREA_CHAMP(TYPE_CHAM = TYPE_CHAM,
+ elif nomcham == 'EPSI_NOEU':
+ __chamf[ind] = CREA_CHAMP(TYPE_CHAM = TYPE_CHAM,
OPERATION = 'ASSE',
PROL_ZERO = 'OUI',
MODELE = modele,
ASSE = filtres,
);
-
- else:
+ else:
valk = []
- valk.append(NOM_CHAM)
- valk.append('DEPL')
- valk.append('EPSI_NOEU_DEPL')
- UTMESS('F','OBSERVATION_6',valk)
-
- if isinstance( RESULTAT, mode_meca):
- mcfact2 = {'CHAM_GD' : __chamf[ind-1],
- 'MODELE' : modele,
- 'NUME_MODE' : int(afreq[ind-1,0]),
- 'FREQ' : afreq[ind-1,1],
+ valk.append(nomcham)
+ valk.append('DEPL VITE ACCE')
+ valk.append('EPSI_NOEU')
+ UTMESS('F','OBSERVATION_6',valk)
+
+ argsr = {}
+ if isinstance( RESULTAT, mode_meca):
+ mcfact2 = {'CHAM_GD' : __chamf[ind],
+ 'MODELE' : modele,
+ 'NUME_MODE' : int(afreq[ind,0]),
+ 'FREQ' : afreq[ind,1],
}
-
- if isinstance( RESULTAT, evol_elas):
- mcfact2 = {'CHAM_GD' : __chamf[ind-1],
+ ## on recopie les matrices associees au MODELE_2 dans le resultat final
+ ## NB : ce n'est peut-etre pas propre, car ces matrices ne
+ ## veulent plus rien dire si on a filtre des DDL !!!!!
+ argsr = { 'MATR_A' : MATR_A,
+ 'MATR_B' : MATR_B
+ }
+
+ if isinstance( RESULTAT, evol_elas):
+ mcfact2 = {'CHAM_GD' : __chamf[ind],
'MODELE' : modele,
- 'INST' : list_inst_ini[ind-1],
+ 'INST' : list_inst[ind],
}
- if isinstance( RESULTAT, dyna_trans):
- mcfact2 = {'CHAM_GD' : __chamf[ind-1],
+ if isinstance( RESULTAT, dyna_trans):
+ mcfact2 = {'CHAM_GD' : __chamf[ind],
'MODELE' : modele,
- 'INST' : list_inst_ini[ind-1],
+ 'INST' : list_inst[ind],
}
- if isinstance( RESULTAT, dyna_harmo):
- mcfact2 = {'CHAM_GD' : __chamf[ind-1],
+ if isinstance( RESULTAT, dyna_harmo):
+ mcfact2 = {'CHAM_GD' : __chamf[ind],
'MODELE' : MODELE_2,
- 'FREQ' : list_freq_ini[ind-1],
+ 'FREQ' : list_freq[ind],
}
-
- if cham_mater is not None:
+ if cham_mater is not None:
mcfact2['CHAM_MATER'] = cham_mater
- if cara_elem is not None:
+ if cara_elem is not None:
mcfact2['CARA_ELEM'] = cara_elem
- liste.append(mcfact2)
- DETRUIRE( CONCEPT= _F( NOM = __chamex ), INFO=1)
+ liste.append(mcfact2)
+
+ DETRUIRE( CONCEPT= _F( NOM = __chamex ), INFO=1)
- __proj = CREA_RESU(
+ if len(filtres) > 0 and len(liste) > 0:
+ resu_filtre = nomcham
+ if RESU:
+ RESU = CREA_RESU( reuse = RESU,
OPERATION = 'AFFE',
TYPE_RESU = TYPE_RESU,
- NOM_CHAM = NOM_CHAM,
+ NOM_CHAM = nomcham,
AFFE = liste,
+ **argsr
);
+ else:
+ RESU = CREA_RESU(
+ OPERATION = 'AFFE',
+ TYPE_RESU = TYPE_RESU,
+ NOM_CHAM = nomcham,
+ AFFE = liste,
+ **argsr
+ )
+
#*************************************************
-# Recopie des resultats (__proj) dans RESU
+# Recopie de __proj dans RESU si celle-ci
+# n'a pas encore ete faite via FILTRE
#*************************************************
- if nume_ordr_demande[0]:
- num_ordr = nume_ordr_demande
- else:
- num_ordr = __proj.LIST_VARI_ACCES()['NUME_ORDRE']
-
- __chamf = [None]*num_max
- if isinstance( RESULTAT, evol_elas):
- list_inst = __proj.LIST_VARI_ACCES()['INST']
- if isinstance( RESULTAT, dyna_trans):
- list_inst = __proj.LIST_VARI_ACCES()['INST']
- if isinstance( RESULTAT, dyna_harmo):
- list_freq = __proj.LIST_VARI_ACCES()['FREQ']
-
- liste = []
-
- for ind in num_ordr:
- mcfact2 = { }
- filtres = []
- __chamex = CREA_CHAMP(TYPE_CHAM = TYPE_CHAM,
- OPERATION = 'EXTR',
- RESULTAT = __proj,
- NOM_CHAM = NOM_CHAM,
- NUME_ORDRE = ind,);
-
- mcfact1 = {}
- mcfact1.update({'TOUT' : 'OUI',
- 'CHAM_GD' : __chamex })
- filtres.append(mcfact1)
-
- if NOM_CHAM == 'DEPL':
- __chamf[ind-1] = CREA_CHAMP(TYPE_CHAM = TYPE_CHAM,
- OPERATION = 'ASSE',
- MODELE = modele,
- ASSE = filtres
- );
-
- elif NOM_CHAM == 'EPSI_NOEU_DEPL':
- __chamf[ind-1] = CREA_CHAMP(TYPE_CHAM = TYPE_CHAM,
- OPERATION = 'ASSE',
- PROL_ZERO = 'OUI',
- MODELE = modele,
- ASSE = filtres,
- );
-
- else:
- valk = []
- valk.append(NOM_CHAM)
- valk.append('DEPL')
- valk.append('EPSI_NOEU_DEPL')
- UTMESS('F','OBSERVATION_6',valk)
-
- if isinstance( RESULTAT, mode_meca):
- mcfact2 = {'CHAM_GD' : __chamf[ind-1],
- 'MODELE' : modele,
- 'NUME_MODE' : int(afreq[ind-1,0]),
- 'FREQ' : afreq[ind-1,1],
- }
-
- if isinstance( RESULTAT, evol_elas):
- mcfact2 = {'CHAM_GD' : __chamf[ind-1],
- 'MODELE' : modele,
- 'INST' : list_inst[ind-1],
- }
-
- if isinstance( RESULTAT, dyna_trans):
- mcfact2 = {'CHAM_GD' : __chamf[ind-1],
- 'MODELE' : modele,
- 'INST' : list_inst[ind-1],
- }
-
- if isinstance( RESULTAT, dyna_harmo):
- mcfact2 = {'CHAM_GD' : __chamf[ind-1],
- 'MODELE' : MODELE_2,
- 'FREQ' : list_freq[ind-1],
- }
-
-
- if cham_mater is not None:
- mcfact2['CHAM_MATER'] = cham_mater
- if cara_elem is not None:
- mcfact2['CARA_ELEM'] = cara_elem
-
- liste.append(mcfact2)
- DETRUIRE( CONCEPT= _F( NOM = __chamex ), INFO=1)
+ if resu_filtre == None:
+ RESU = PROJ_CHAMP(METHODE = 'COLLOCATION',
+ RESULTAT = __proj,
+ MODELE_1 = modele,
+ MODELE_2 = modele,
+ NUME_DDL = NUME_DDL,
+ NOM_CHAM = nomcham,
+ **mcfact
+ )
- RESU = CREA_RESU(
- OPERATION = 'AFFE',
- TYPE_RESU = TYPE_RESU,
- NOM_CHAM = NOM_CHAM,
- AFFE = liste,
- );
return ier
nom_modele_num = modele_1.nom
_maillag = aster.getvectjev( nom_modele_num.ljust(8) + '.MODELE .LGRF' )
maillage = _maillag[0].strip()
- jdc = CONTEXT.get_current_step().jdc
mayanum = self.get_concept(maillage)
);
- __norm4 = PROJ_CHAMP( RESULTAT = __norm3,
+ __norm4 = PROJ_CHAMP( METHODE='COLLOCATION',
+ RESULTAT = __norm3,
MODELE_1 = modele_1,
MODELE_2 = modele_2,
NOM_CHAM = 'DEPL',
import numpy
nom_para = vect.keys()[0] # nom_para = 'VECT_X' ou 'VECT_Y'
- condition = list(vect[nom_para])
# 1) pour tous les noeuds du maillage experimental, recuperer la normale
# calculee a partir du maillage numerique
chnormy = chnorm.EXTR_COMP('DY',[],1)
chnormz = chnorm.EXTR_COMP('DZ',[],1)
- noeuds = chnormx.noeud
- nbno = len(noeuds)
-
normale = [chnormx.valeurs[ind_no],
chnormy.valeurs[ind_no],
chnormz.valeurs[ind_no]]
return angl_naut
-
#**********************************************************************
# Calcul des angles nautiques pour le repere associe a VECT_X et VECT_Y
#**********************************************************************
vect2 = vy
vect1 = numpy.cross(vect2, vect3)
-
+
norm12=numpy.dot(vect1,vect1)
norm22=numpy.dot(vect2,vect2)
norm32=numpy.dot(vect3,vect3)
tmp = numpy.sqrt(numpy.dot(x,x))
return tmp
-
def anglnaut(P):
import copy
import numpy
# expression des coordonnees globales des 3 vecteurs de base locale
- x = numpy.array([1.,0.,0.])
y = numpy.array([0.,1.,0.])
- z = numpy.array([0.,0.,1.])
xg = P[:,0]
yg = P[:,1]