
# PATRON
# ANALYSE MODALE
# 3D

DEBUT();
# MISE EN DONNEES

MAIL=LIRE_MAILLAGE();

MODELE=AFFE_MODELE(MAILLAGE=MAIL,
                   AFFE=_F(GROUP_MA='OBJET',
                           PHENOMENE='MECANIQUE',
                           MODELISATION='3D',),);
# MATERIAU

ACIER=DEFI_MATERIAU(ELAS=_F(E=2.1E11,
                            NU=0.3,
                            RHO=7800.0,),);

CHMAT=AFFE_MATERIAU(MAILLAGE=MAIL,
                    AFFE=_F(GROUP_MA='OBJET',
                            MATER=ACIER,),);
# CONDITIONS AUX LIMITES ET CHARGEMENT
# CONDITIONS AUX LIMITES 

BLOQUAGE=AFFE_CHAR_MECA(MODELE=MODELE,
                        DDL_IMPO=_F(GROUP_MA='ENCAST',
                                    LIAISON='ENCASTRE',),);
# CALCUL DES MATRICES ASSEMBLEES K ET M

MACRO_MATR_ASSE(MODELE=MODELE,
                CHAM_MATER=CHMAT,
                CHARGE=BLOQUAGE,
                NUME_DDL=CO('NUMEDDL'),
                MATR_ASSE=(_F(MATRICE=CO('RIGIDITE'),
                              OPTION='RIGI_MECA',),
                           _F(MATRICE=CO('MASSE'),
                              OPTION='MASS_MECA',),),);

P=POST_ELEM(MASS_INER=_F(TOUT='OUI',
                         GROUP_MA='M',),);
# CALCUL DES CINQ PREMIERS MODES

MODES=MODE_ITER_SIMULT(MATR_A=RIGIDITE,
                       MATR_B=MASSE,
                       CALC_FREQ=_F(
                       OPTION='PLUS_PETITE',
                       NMAX_FREQ=5,),);
#CHARGEMENT

EXCIT=AFFE_CHAR_MECA(MODELE=MODELE,
                     PRES_REP=_F(GROUP_MA='PRESSE',
                                 PRES=100.e5,),);

EXCEL=CALC_VECT_ELEM(OPTION='CHAR_MECA',
                     CHARGE=EXCIT,);

EXCASS=ASSE_VECTEUR(VECT_ELEM=EXCEL,
                    NUME_DDL=NUMEDDL,);
OMEGA = 10.0;


SINU = FORMULE(VALE='sin(OMEGA*INST)',
               NOM_PARA='INST',);
#PROJECTION

MACRO_PROJ_BASE(BASE=MODES,
                MATR_ASSE_GENE=(_F(MATRICE=CO('MASSPROJ'),
                                   MATR_ASSE=MASSE,),
                                _F(MATRICE=CO('RIGIPROJ'),
                                   MATR_ASSE=RIGIDITE,),),
                VECT_ASSE_GENE=_F(VECTEUR=CO('EXCPROJ'),
                                  VECT_ASSE=EXCASS,),);
#CALCUL TRANSITOIRE

TRAMOD=DYNA_TRAN_MODAL(MASS_GENE=MASSPROJ,
                       RIGI_GENE=RIGIPROJ,
                       AMOR_REDUIT=(.02,.01,),
                       INCREMENT=_F(INST_INIT=0.0,
                                    INST_FIN=10.0,
                                    PAS=.001,),
                       EXCIT=_F(VECT_GENE=EXCPROJ,
                                FONC_MULT=SINU,),);

FIN();
