Analisi sismica in code_aster: parte 1 – analisi modale

EN | Seismic Analysis with code_aster: part 1 – modal dynamic analysis

IT | La risposta sismica lineare delle strutture civili può essere valutata attraverso l’approccio RSA (Response Spectrum Analysis): nella pratica è una delle metodologie più utilizzate per il dimensionamento degli elementi strutturali alle azioni del terremoto. Tale approccio consiste principalmente di due fasi:

  • analisi modale, per l’identificazione del comportamento dinamico “vergine” della struttura;
  • risposta spettrale, in funzione dell’input sismico, sotto forma di “spettro” di risposta, che dipende principalmente dal sito in cui la struttura è collocata.

Entrambe le funzionalità sono disponibili all’interno dei comandi di code_aster. In questo articolo illustreremo la prima fase, ossia come generare l’analisi modale con CALC_MODES.

EN | The seismic behaviour of civil structures can be evaluated with the help of the RSA (Response Spectrum Analysis) approach: in application, this is one of the most used techniques to check the structural elements under seismic effects. It consists in two main phases:

  • the modal analysis, to identify the dynamic behaviour of the structure;
  • the response spectrum, to characterize the dynamics with the earthquake input (spectrum).

Both functionalities are present among the code_aster commands. In this article, we will illustrate how to deal with the first phase, with the CALC_MODES command.

Forme modali di una struttura semplice. | Modal shapes of a simple civil structure.


IT | Nell’articolo dedicato all’impostazione di un’analisi statica lineare è stato illustrato come eseguire tale tipologia di analisi su un oggetto semplice, che viene qui riproposto. Il primo passo è quello di modificare le caratteristiche geometriche dei pilastri, in modo da caratterizzare un comportamento dinamico differente nelle due direzioni orizzontali.

EN | In the post where the basic static linear analysis was handled in salome_meca a simple civil structure was proposed and is still used here. The next step is to modify the dimensions of the column section, in order to characterize the dynamic behaviour differently in the two horizontal directions.

Cambio delle dimensioni della sezione del pilastro. | Column section dimension change.

IT | Il secondo passo consiste nell’assemblare le matrici necessarie per l’analisi modale. Tale operazione è possibile tramite il comando ASSEMBLAGE. Si generano la matrice delle masse e quella delle rigidezze (termini minimi per definire il problema) a partire dal modello, dalle caratteristiche degli elementi finiti (pilastri, solaio), dalle condizioni al contorno, da eventuali carichi addizionali (che devono essere convertiti in massa preliminarmente) e dalle caratteristiche dei materiali. Con l’opzione NUME_DDL si specifica il nome per la creazione di una struttura dati interna al codice, necessaria per enumerare i gradi di libertà del problema e le equazioni di risoluzione per ciascuno di essi.

EN | The second step consists in assembling the neccesary matrices for the resolution of the modal analysis. This is possible with the ASSEMBLAGE command. It has to generate at least the mass matrix and the stifness matrix, starting from the model, the elements characteristics (slab, columns), from the boundary conditions, from additional loads (to be preliminarly converted into masses) and the material characteristics. The NUME_DDL option assigns a name for the creation of an internal data structure, necessary to number the degrees of freedom of the problem and solve each associated equation.

Assemblaggio delle matrici di massa e di rigidezza. | Mass and stiffness matrix assembly.

IT | Siamo ora pronti per risolvere il problema agli autovalori e autovettori con il comando CALC_MODES. Oltre ai modi propri di vibrare della struttura, esso è in grado di risolvere anche l’instabilità lineare.

EN | We are now ready to solve the eigenvalues and eigenvectors problem with the CALC_MODES command. Oltre ai modi propri di vibrare della struttura, esso è in grado di risolvere anche l’instabilità lineare.

Problema agli autovettori ed autovalori nel caso non smorzato per l’analisi dinamica modale. | Eigenvector and eigenvalue problem for the undamped modal dynamic analysis.

IT | L’impostazione del comando prevede l’assegnazione delle matrici precedentemente assemblate, la scelta della tipologia di analisi (dinamica), con l’opzione della scelta dei modi da identificare (ad esempio PLUS_PETITE, con i più piccoli autovalori in Hz, oppure BANDE, compresi tra due autovettori in Hz). Il solutore di default è quello di Sorensen. Il numero degli autovalori e autovettori ricercati con l’opzione PLUS_PETITE può essere specificato (il default è 10, in questo caso è adottato il numero di 6).

EN | The usage of the command implies the assignment of the previously assembled mass matrix and stiffness matrix, the analysis type choice (dynamic in this case), with the option of the modal shapes to be identified (PLUS_PETITE identifies the lowest frequencies, in HZ, while BANDE, for instance, determines all those comprised between two values). The default solver is the Sorensen algorithm. The number of the eigenvectors and eigenvalues can be specified for the PLUS_PETITE option (default is 10, here is set to 6).

Impostazione dell’analisi dinamica modale. | Modal dynamic analysis setting.

IT | Il salvataggio dei risultati può avvenire classicamente tramite il file RMED (autovalori e autovettori) e tramite un file testuale dove vengono stampati di default la tabella delle frequenze e della massa partecipante per ciascuna forma modale, abbinati agli spostamenti nodali.

EN | The results of the analysis can be stored in the RMED format (eigenvalues and eigenvectors) and in a text format, where a table containing the frequencies and the participating mass (and other information) is printed, combined with the nodal displacements.

Impostazione di salvataggio dei risultati in forma testuale. | Text type output setting.

IT | La visualizzazione avviene tramite Paraview/Paravis e può produrre anche animazioni che scorrono tra le varie forme modali. Il file testuale può essere aperto per ispezionare la tabella di sintesi dei risultati dell’analisi modale.

EN | The result visualization is performed through the Paraview/Paravis module and can produce animated modal shapes, scolling from the first to the last. The text file can be opened to inspect the modal analysis result synthesis.

Le 6 forme modali deformate della struttura. | The 6 modal shapes of the structure.
L’output in forma di tabella. | The table output.

IT | Qui sotto si può trovare il codice per la generazione dell’analisi. La mesh è scaricabile con questo link.

EN | Here you can finde the code necessary for the generation of the analysis. The mesh can be downloaded with this link.

DEBUT(LANG='EN')

mesh = LIRE_MAILLAGE(UNITE=2)

model = AFFE_MODELE(AFFE=(_F(GROUP_MA=('solaio', ),
                             MODELISATION=('DKT', ),
                             PHENOMENE='MECANIQUE'),
                          _F(GROUP_MA=('pilastri', ),
                             MODELISATION=('POU_D_E', ),
                             PHENOMENE='MECANIQUE')),
                    MAILLAGE=mesh)

elemprop = AFFE_CARA_ELEM(COQUE=_F(EPAIS=0.25,
                                   GROUP_MA=('solaio', ),
                                   VECTEUR=(1.0, 0.0, 0.0)),
                          MODELE=model,
                          POUTRE=_F(CARA=('HY', 'HZ'),
                                    GROUP_MA=('pilastri', ),
                                    SECTION='RECTANGLE',
                                    VALE=(0.25, 0.5)))

mater = DEFI_MATERIAU(ELAS=_F(E=30000000.0,
                              NU=0.3,
                              RHO=2.5))

fieldmat = AFFE_MATERIAU(AFFE=_F(MATER=(mater, ),
                                 TOUT='OUI'),
                         MODELE=model)

load = AFFE_CHAR_MECA(DDL_IMPO=_F(DRX=0.0,
                                  DRY=0.0,
                                  DRZ=0.0,
                                  DX=0.0,
                                  DY=0.0,
                                  DZ=0.0,
                                  GROUP_NO=('vincolo', )),
                      MODELE=model,
                      PESANTEUR=_F(DIRECTION=(0.0, 0.0, 1.0),
                                   GRAVITE=-9.81))

ASSEMBLAGE(CARA_ELEM=elemprop,
           CHAM_MATER=fieldmat,
           CHARGE=(load, ),
           MATR_ASSE=(_F(MATRICE=CO('M_A'),
                         OPTION='MASS_MECA'),
                      _F(MATRICE=CO('K_A'),
                         OPTION='RIGI_MECA')),
           MODELE=model,
           NUME_DDL=CO('nddl'))

reslin = MECA_STATIQUE(CARA_ELEM=elemprop,
                       CHAM_MATER=fieldmat,
                       EXCIT=_F(CHARGE=load),
                       MODELE=model)

modes = CALC_MODES(CALC_FREQ=_F(NMAX_FREQ=6,
                                NMAX_ITER_SHIFT=10),
                   MATR_MASS=M_A,
                   MATR_RIGI=K_A,
                   OPTION='PLUS_PETITE',
                   SOLVEUR=_F(METHODE='MUMPS'),
                   SOLVEUR_MODAL=_F(PREC_SOREN=1e-06))

IMPR_RESU(RESU=(_F(RESULTAT=reslin),
                _F(RESULTAT=modes)),
          UNITE=80)

IMPR_RESU(FORMAT='RESULTAT',
          RESU=_F(FORM_TABL='EXCEL',
                  RESULTAT=modes,
                  TOUT_PARA='OUI'),
          UNITE=8)

FIN() 

3 risposte a “Analisi sismica in code_aster: parte 1 – analisi modale”

  1. grazie mille, speriamo che continui la serie.

    l’autore non può che esser civile, perché tratta l’estrazione degli autovettori di vibrazione come un sottogruppo di una analisi modale-spettrale 😛 Dai che si riesce a far un telaietto sismico alla fine ;P

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.