Hello,
I am doing an acoustic study using Code_Aster. The purpose of this study is the computation of the input acoustic impedance of a cylindrical tube. I am using Salome-Meca with Code_Aster on Debian and my problems are linked with the use of Code_Aster.
I used the testcase AHLV100 (Waveguide with anechoic output) and I tried to adapt it. I meshed the air in my tube with Salome, I defined the input face ('ENTREE'), the output ('SORTIE'), the lateral faces ('FACES'). I print the values of pressure and intensity of a group of nodes at the input of the tube. (with the intensity I can have the particle velocity and then compute the impedance Z=P/V)
I need to have a pressure=0 at the output, a speed=0 on all other faces. I am not sure of what I am doing at this point with my script.
First I define my mesh (DEFI_MATERIAU, AFFE_MATERIAU, AFFE_MODELE). I choose the boundary conditions (AFFE_CHAR_ACOU), maybe I am not doing something right at this step?
Then I use MACRO_MATR_ASSE, CALC_VECT_ELEM, ASSE_VECTEUR, DYNA_LINE_HARM, CALC_ELEM and CALC_NO in order to build a table.
With this script the results are wrong, the pressure and the intensity are 0 over a certain frequency.
Maybe I am doing something wrong with the boundary conditions.
Can someone help me?
Thank you,
Benoit
The code :
#ETUDE TUBE
DEBUT();
MAIL=LIRE_MAILLAGE(FORMAT='MED',);
AIR=DEFI_MATERIAU(FLUIDE=_F(RHO=1.3,
CELE_C=('RI',343.0,0.0,),),);
CHAMPMAT=AFFE_MATERIAU(MAILLAGE=MAIL,
AFFE=_F(TOUT='OUI',
MATER=AIR,),);
GUIDE=AFFE_MODELE(MAILLAGE=MAIL,
VERIF='MAILLE',
AFFE=_F(TOUT='OUI',
PHENOMENE='ACOUSTIQUE',
MODELISATION='3D',),);
CHARACOU=AFFE_CHAR_ACOU(MODELE=GUIDE,
VITE_FACE=_F(GROUP_MA='ENTREE',
VNOR=('RI',0.014,0.,),),);
IMPEACOU=AFFE_CHAR_ACOU(MODELE=GUIDE,
IMPE_FACE=_F(GROUP_MA='SORTIE',
IMPE=('RI',445.9,0.,),),);
VITACOU=AFFE_CHAR_ACOU(MODELE=GUIDE,
VITE_FACE=_F(GROUP_MA='FACES',
VNOR=('RI',0.014,0.0,),),);
MACRO_MATR_ASSE(MODELE=GUIDE,
CHAM_MATER=CHAMPMAT,
CHARGE=IMPEACOU,
NUME_DDL=CO('NUM'),
MATR_ASSE=(_F(MATRICE=CO('MATASK'),
OPTION='RIGI_ACOU',),
_F(MATRICE=CO('MATASM'),
OPTION='MASS_ACOU',),
_F(MATRICE=CO('MATASI'),
OPTION='AMOR_ACOU',),),);
VECTELEM=CALC_VECT_ELEM(OPTION='CHAR_ACOU',
CHAM_MATER=CHAMPMAT,
CHARGE=CHARACOU,);
VECTASS=ASSE_VECTEUR(VECT_ELEM=VECTELEM,
NUME_DDL=NUM,);
#-----------------------CALCUL HARMONIQUE-------------------------------
LIFREQ=DEFI_LIST_REEL(DEBUT=10,
INTERVALLE=_F(JUSQU_A=10000,
NOMBRE=999,),);
PRESHARM=DYNA_LINE_HARM(MATR_MASS=MATASM,
MATR_RIGI=MATASK,
MATR_AMOR=MATASI,
LIST_FREQ=LIFREQ,
EXCIT=_F(VECT_ASSE=VECTASS,
COEF_MULT=-1.,
PHAS_DEG=90.,
PUIS_PULS=1,),);
PRESHARM=CALC_ELEM(reuse =PRESHARM,
RESULTAT=PRESHARM,
TOUT_ORDRE='OUI',
OPTION='PRAC_ELNO',);
PRESHARM=CALC_NO(reuse =PRESHARM,
RESULTAT=PRESHARM,
TOUT_ORDRE='OUI',
OPTION='PRAC_NOEU',);
PRESSAC=CREA_TABLE(RESU=_F(RESULTAT=PRESHARM,
NOM_CHAM='PRAC_NOEU',
TOUT_ORDRE='OUI',
TOUT_CMP='OUI',
GROUP_NO='ENTRN',),
TYPE_TABLE='TABLE',);
IMPR_TABLE(TABLE=PRESSAC,
FORMAT='TABLEAU',
NOM_PARA=('NOM_CHAM','NUME_ORDRE','PRES_R','PRES_I','DB',),
SEPARATEUR=' ,',);
PRESHARM=CALC_ELEM(reuse =PRESHARM,
RESULTAT=PRESHARM,
TOUT_ORDRE='OUI',
OPTION='INTE_ELNO',);
PRESHARM=CALC_NO(reuse =PRESHARM,
RESULTAT=PRESHARM,
TOUT_ORDRE='OUI',
OPTION='INTE_NOEU',);
INTAC=CREA_TABLE(RESU=_F(RESULTAT=PRESHARM,
NOM_CHAM='INTE_NOEU',
TOUT_ORDRE='OUI',
TOUT_CMP='OUI',
GROUP_NO='ENTRN',),
TYPE_TABLE='TABLE',);
IMPR_TABLE(TABLE=INTAC,
FORMAT='TABLEAU',
NOM_PARA=('NOM_CHAM','NUME_ORDRE','INTX_R','INTY_R','INTZ_R','INTX_I','INTY_I','INTZ_I',),
SEPARATEUR=' ,',);
FIN();