jeanpierreaubry jeanpierreaubry
i write a example
but i dont think the result is right.
DEBUT(CODE=_F(NIV_PUB_WEB='INTERNET'),
DEBUG=_F(SDVERI='OUI'))
nb_modes = 20
liste_modes = tuple(range(1, nb_modes + 1))
liste_amort = tuple([0.02] * nb_modes)
MAIL = LIRE_MAILLAGE(FORMAT='MED',
UNITE=2)
MODEL = AFFE_MODELE(AFFE=_F(MODELISATION='3D',
PHENOMENE='MECANIQUE',
TOUT='OUI'),
MAILLAGE=MAIL)
ACIER = DEFI_MATERIAU(ELAS=_F(E=210000000000.0,
NU=0.3,
RHO=7800.0))
CHMAT = AFFE_MATERIAU(AFFE=_F(MATER=ACIER,
TOUT='OUI'),
MAILLAGE=MAIL)
ACCE_PSD = DEFI_FONCTION(NOM_PARA='FREQ',
NOM_RESU='DSP',
PROL_DROITE='CONSTANT',
PROL_GAUCHE='CONSTANT',
VALE=(1.0, 0.0, 20.0, 0.0, 20.01, 96.24, 80.0, 96.24, 350.0, 96.24, 2000.0, 96.24, 2000.01, 0.0))
BLOCAGE = AFFE_CHAR_MECA(DDL_IMPO=_F(DX=0.0,
DY=0.0,
DZ=0.0,
GROUP_NO='BASE'),
MODELE=MODEL)
RIGIELEM = CALC_MATR_ELEM(CHAM_MATER=CHMAT,
CHARGE=BLOCAGE,
MODELE=MODEL,
OPTION='RIGI_MECA')
MASSELEM = CALC_MATR_ELEM(CHAM_MATER=CHMAT,
CHARGE=BLOCAGE,
MODELE=MODEL,
OPTION='MASS_MECA')
NUMEDDL = NUME_DDL(MATR_RIGI=RIGIELEM)
RIGIDITE = ASSE_MATRICE(MATR_ELEM=RIGIELEM,
NUME_DDL=NUMEDDL)
MASSE = ASSE_MATRICE(MATR_ELEM=MASSELEM,
NUME_DDL=NUMEDDL)
CHAR_SEIS = CALC_CHAR_SEISME(DIRECTION=(1.0, 0.0, 0.0),
MATR_MASS=MASSE,
MONO_APPUI='OUI')
MODES = CALC_MODES(CALC_FREQ=_F(NMAX_FREQ=nb_modes),
MATR_MASS=MASSE,
MATR_RIGI=RIGIDITE,
OPTION='PLUS_PETITE',
VERI_MODE=_F(STOP_ERREUR='NON'))
MODES = CALC_CHAMP(reuse=MODES,
CHAM_MATER=CHMAT,
CONTRAINTE='SIGM_ELNO',
MODELE=MODEL,
RESULTAT=MODES)
SPECTRE = DEFI_INTE_SPEC(DIMENSION=1,
PAR_FONCTION=_F(FONCTION=ACCE_PSD,
NUME_ORDRE_I=1,
NUME_ORDRE_J=1))
DYNA_DEPL = DYNA_ALEA_MODAL(BASE_MODALE=_F(AMOR_REDUIT=liste_amort,
MODE_MECA=MODES,
NUME_ORDRE=liste_modes),
EXCIT=_F(CHAM_NO=CHAR_SEIS,
GRANDEUR='EFFO',
INTE_SPEC=SPECTRE,
NUME_ORDRE_I=1),
REPONSE=_F(DERIVATION=0,
FREQ_MAX=2000.0,
FREQ_MIN=1.0,
PAS=1.0))
REP_DEPL = REST_SPEC_PHYS(GROUP_NO='SPECIMEN',
INTE_SPEC_GENE=DYNA_DEPL,
MODE_MECA=MODES,
NOM_CHAM='DEPL',
NOM_CMP='DX',
OPTION='DIAG_DIAG',
TOUT_ORDRE='OUI')
REP_SIGM = REST_SPEC_PHYS(BANDE=(1.0, 2000.0),
GROUP_MA=('V214', 'V239'),
GROUP_NO=('N100', 'N47'),
INTE_SPEC_GENE=DYNA_DEPL,
MODE_MECA=MODES,
NOM_CHAM=('SIGM_ELNO', ),
NOM_CMP=('SIXX', ),
OPTION='DIAG_DIAG',
TOUT_ORDRE='OUI')
DEPL_N100 = RECU_FONCTION(INTE_SPEC=REP_DEPL,
NOEUD_I='N100',
NOM_CMP_I='DX')
RMS_DEPL = INFO_FONCTION(RMS=_F(FONCTION=DEPL_N100,
METHODE='TRAPEZE'))
SIGM_FUNC = RECU_FONCTION(INTE_SPEC=REP_SIGM,
NOEUD_I='N100',
NOM_CMP_I='SIXX')
RMS_SIGM = INFO_FONCTION(RMS=_F(FONCTION=SIGM_FUNC,
METHODE='TRAPEZE'))
#comment: IMPR_TABLE(TABLE=RMS_DEPL,
#comment: UNITE=8)
#comment: IMPR_TABLE(TABLE=RMS_SIGM,
#comment: UNITE=8)
IMPR_FONCTION(COURBE=_F(FONCTION=SIGM_FUNC,
LEGENDE='Stress PSD'),
FORMAT='TABLEAU',
TITRE='Stress Response PSD',
UNITE=4)
DYNA_VITE = DYNA_ALEA_MODAL(BASE_MODALE=_F(AMOR_REDUIT=liste_amort,
MODE_MECA=MODES,
NUME_ORDRE=liste_modes),
EXCIT=_F(CHAM_NO=CHAR_SEIS,
GRANDEUR='EFFO',
INTE_SPEC=SPECTRE,
NUME_ORDRE_I=1),
REPONSE=_F(DERIVATION=1,
FREQ_MAX=2000.0,
FREQ_MIN=1.0,
PAS=1.0))
REP_VITE = REST_SPEC_PHYS(GROUP_NO='SPECIMEN',
INTE_SPEC_GENE=DYNA_VITE,
MODE_MECA=MODES,
NOM_CHAM='VITE',
NOM_CMP='DX',
OPTION='DIAG_DIAG',
TOUT_ORDRE='OUI')
VITE_N100 = RECU_FONCTION(INTE_SPEC=REP_VITE,
NOEUD_I='N100',
NOM_CMP_I='DX')
RMS_VITE = INFO_FONCTION(RMS=_F(FONCTION=VITE_N100,
METHODE='TRAPEZE'))
#comment: IMPR_TABLE(TABLE=RMS_VITE,
#comment: UNITE=8)
DYNA_ACCE = DYNA_ALEA_MODAL(BASE_MODALE=_F(AMOR_REDUIT=liste_amort,
MODE_MECA=MODES,
NUME_ORDRE=liste_modes),
EXCIT=_F(CHAM_NO=CHAR_SEIS,
GRANDEUR='EFFO',
INTE_SPEC=SPECTRE,
NUME_ORDRE_I=1),
REPONSE=_F(DERIVATION=2,
FREQ_MAX=2000.0,
FREQ_MIN=1.0,
PAS=1.0))
REP_ACCE = REST_SPEC_PHYS(GROUP_NO='SPECIMEN',
INTE_SPEC_GENE=DYNA_ACCE,
MODE_MECA=MODES,
NOM_CHAM='ACCE',
NOM_CMP='DX',
OPTION='DIAG_DIAG',
TOUT_ORDRE='OUI')
ACCE_N100 = RECU_FONCTION(INTE_SPEC=REP_ACCE,
NOEUD_I='N100',
NOM_CMP_I='DX')
RMS_ACCE = INFO_FONCTION(RMS=_F(FONCTION=ACCE_N100,
METHODE='TRAPEZE'))
#comment: IMPR_TABLE(TABLE=RMS_ACCE,
#comment: UNITE=8)
#comment: IMPR_FONCTION(COURBE=(_F(FONCTION=DEPL_N100,
#comment: LEGENDE='Displacement PSD'),
#comment: _F(FONCTION=VITE_N100,
#comment: LEGENDE='Velocity PSD'),
#comment: _F(FONCTION=ACCE_N100,
#comment: LEGENDE='Acceleration PSD')),
#comment: FORMAT='TABLEAU',
#comment: TITRE='Response PSD at Node N100',
#comment: UNITE=8)
table = POST_DYNA_ALEA(INTERSPECTRE=_F(INTE_SPEC=DYNA_DEPL,
MOMENT=(2, ),
OPTION='DIAG'))
IMPR_TABLE(TABLE=table,
UNITE=3)
FIN()