Welcome to the forums. Please post in English or French.

You are not logged in.

#1 2012-05-09 12:34:34

C.Boudaud
Member
From: Laboratoire 3SR - Grenoble
Registered: 2012-05-09
Posts: 3

Modélisation amortissement en DYNA_NON_LINE

Bonjour,

Je travaille sur des murs en bois modélisés par des éléments poutres et plaques (le bois) et des éléments discrets (les connecteurs métalliques). Une loi de comportement spécifique (hystérétique à endommagement progressif) est affectée aux éléments discrets pour rendre compte du comportement de ces connecteurs sous sollicitations sismiques. D'autres éléments discrets (POI1) permettent de modéliser les charges verticales dues à la toiture. Le modèle reproduit bien les essais expérimentaux en quasi-statique (STAT_NON_LINE).

Pour les calculs en dynamique, la difficulté est dans la modélisation de l'amortissement visqueux. Si j'ai bien compris la documentation, il n'est pas possible d'utiliser un amortissement de Rayleigh général pour une analyse temporelle (seulement en analyse harmonique). Si j'ai compris de travers, merci de m'en faire part parce que je parce que je préférerai cette méthode.

Du coup, je modélise des amortissements locaux en précisant AMOR_ALPHA et AMOR_BETA pour les matériaux en bois (comportement élastique). Pour les éléments discrets, je précise une matrice d'amortissement. Pour les connecteurs métalliques, les coefficients valent alpha*K (K raideur initiale du connecteur) et pour les éléments massiques, ils valent beta*M. Je me retrouve donc avec une matrice d'amortissement qui est identique tout au long du calcul.

Je cherche à reproduire des essais sur table vibrante pour lesquels des accélérogrammes successifs ont été appliqués. Cela entraîne des temps de calcul relativement longs, or je m'aperçois que la matrice d'amortissement est assemblée à chaque pas de temps. C'est en tout cas ce que je déduis du message :

"Etant donné la présence du mot clé AMOR_ALPHA et / ou AMOR_BETA, on va assembler la matrice d'amortissement globale de Rayleigh, même si ces coefficients sont tous les deux nuls. Cette opération engendre un surcoût de calcul."

Est-il possible d'empêcher cela ? Cela vaudrait-il vraiment le coup, ou est-ce que le temps gagné serait négligeable ?

Je me permets une petite question bonus, sans lien direct avec Code_Aster : Pour des éléments discrets massiques, j'ai vu plusieurs fois des matrices d'amortissement dont les coefficients sont 2*ksi*M*omega_0 (ce qui donnerait 2*ksi*K / omega_0 pour un élément ressort sans masse). Cela n'est pas équivalent à alpha*K et beta*M, mais je n'arrive pas à justifier l'un ou l'autre. Je serais curieux d'y voir plus clair.

Merci d'avance de votre lecture et de vos éventuels commentaires, remarques et/ou réponses

C.Boudaud

Last edited by C.Boudaud (2012-05-09 12:35:55)

Offline

#2 2012-05-10 21:52:37

oprap
Member
Registered: 2011-02-07
Posts: 64

Re: Modélisation amortissement en DYNA_NON_LINE

And in Code_Aster the meaning of the Rayleigh coefficients are inverted with respect that of other theory texts  :-)

Last edited by oprap (2012-05-10 21:52:52)

Offline

#3 2012-05-10 23:21:41

Johannes_ACKVA
Member
From: Ingenieurbüro für Mechanik, DE
Registered: 2009-11-04
Posts: 762
Website

Re: Modélisation amortissement en DYNA_NON_LINE

to one of Your questions:
Rayleigh damping should be possible in a transient analysis. What is not possible in transient analysis but only in a frequency response analysis is structural (=hysteretic) damping because this means dealing with a complex stiffness matrix. The transient analysis knows only real arithmetic, only freq resp analysis knows complex arithmetic, that are the reasons.

To Your question reguarding 

dampingcoefficient=2*ksi*M*omega_0

I guess ksi is the modal degree of damping or the damping degree of a single-degree-of-freedom-system, often named D.
Then what people generally do first, is selecting the value of D that they want attribute to the system. The dampingcoefficient d is then choosen such the (before) selected D is realized.

If You use Rayleigh-damping, then

dampingcoefficient= alfa*K + beta*M

Since, as known

D = 2*dampingcoefficient / sqrt(m*k)

if follows
D = 2 * (alfa*K + beta*M)  / sqrt(m*k)

The Rayleigh-damped and the modal damped one-degree-of-freedom-system have qualitativly different magnification curves. But their parameters alfa, beta, d can be adapted such that at ONE value of the exciting frequency the magnification is the same. As such frequency normally the eigenfrequency is choosen, because it makes sense that the resonance is the same for both kind of damping modelisation.  For some longer formula I raccomand You a book like Gasch, Knothe "Strukturdynamik" or any other on this topic. Also our course on Dynamics treat these thematics, see below,

Regards  Johannes Ackva
______________________________________________________________________
Ingenieurbüro für Mechanik
Dr.-Ing. Johannes Ackva
Markgrafenstr. 21
D 91717 Wassertrüdingen

______________________________________________________________________
CODE-ASTER-courses at Ingenieurbüro für Mechanik, Germany

*** SALOME and CODE-ASTER for beginners and nearly-beginners
    4 days, Wed 19 Sep- Sat 22 Sep 2012

*** DYNAMIC ANALYSIS WITH CODE-ASTER
    2 days, Thursday 18 Oct-  Fri 19 Okt 2012
    www.code-aster.de


Ingenieurbüro für Mechanik
D 91717 Wassertrüdingen / Germany

www.code-aster.de                                                Training & Support for NASTRAN and CODE-ASTER

Offline

#4 2012-05-15 15:42:12

C.Boudaud
Member
From: Laboratoire 3SR - Grenoble
Registered: 2012-05-09
Posts: 3

Re: Modélisation amortissement en DYNA_NON_LINE

Thank you very much for your response.

About Rayleigh damping, I'm not sure I understand the point. In my model, I consider that the hysteretic damping is modeled by a non-linear, hysteretic and with progressive damaging behaviour law. Therefore, I need to add a little viscous damping in order to insure the numerical convergence. What I would like to do is to calculate the global damping matrix C as a linear combination of the mass matrix and the initial stiffness matrix (Rayleigh). And C would not be update during the calculation with DYNA_NON_LINE. In this process, I don't understand were the complex numbers arise.

With my notations, ksi is effectively the damping ratio, and the damping coefficient would be denoted c.

After further reflection, I consider that modeling the damping of discrete elements by c=2*ksi*M*omega_0 for mass elements (POI1) is not relevant as this relation is for Single Degree of Freedom only. On the contrary, for such elements, c=beta*M could only be used for multi degrees of freedom systems, as you need at least two modes to calculate alpha and beta. Therefore I use c=beta*M for POI1 elements and c=alpha*K for SEG2 (spring) elements.

Concerning my original question, the calculation times might set some issues regarding my deladline, so I'm very curious to know if the calculation of the damping matrix can be achieved initially, and not be re-done at every time step.

Regards
C.Boudaud

Offline

#5 2012-05-15 19:42:06

keeswouters
Member
From: kuringen
Registered: 2007-12-01
Posts: 144
Website

Re: Modélisation amortissement en DYNA_NON_LINE

Hoi Code-aster-members

for some Code-Aster examples have a look here:
http://www.caelinux.org/wiki/index.php/ … ynamicload

kind regards - kees


kind regards - kees
--
I a parallel univers the laws of mechanics may be different.

Offline

#6 2012-05-15 22:11:08

AsterO'dactyle
Administrator
Registered: 2007-11-29
Posts: 442

Re: Modélisation amortissement en DYNA_NON_LINE

Hello,

I don't understand (sorry, it's not my speciality) but I think constant Rayleigh damping is possible in DYNA_NON_LINE. I think your documents are talking about LINEAR operators (DYNA_LINE_TRAN, DYNA_LINE_HARM, DYNE_TRAN_MODAL or DYNA_VIBRA)
If you choose AMOR_RAYL_RIGI = 'ELASTIQUE' in DYNA_NON_LINE, Rayleigh damping is constant (C = alpha K + beta M ) with K = (initial) elastic matrix.

For the  message: damping matrix is not recomputed for each step (with AMOR_RAYL_RIGI = 'ELASTIQUE' ), but ever you have choose "AMOR_ALPHA=AMOR_BETA=0", Code_Aster don't care and compute the damping matrix (equal to zero in this case).

Ce n'est pas une alarme mais juste une info (dont je ne vois pas très bien l'intérêt d'ailleurs). Visiblement, le texte inquiète inutilement l'utilisateur (surtout que le "surcout" est plus que négligeable par rapport à un calcul transitoire complet !)


Code_Asterの開発者

Offline

#7 2012-05-18 22:36:14

kamil
Member
Registered: 2010-07-05
Posts: 60

Re: Modélisation amortissement en DYNA_NON_LINE

Hi All,

It is kind of jumping into the scene but I wonder, this amortissement visquex is it like a relaxation but under dynamic loading??????

I do not know but could you explain its function please?

Thanks

Kamil

Offline

#8 2012-05-19 10:04:53

Johannes_ACKVA
Member
From: Ingenieurbüro für Mechanik, DE
Registered: 2009-11-04
Posts: 762
Website

Re: Modélisation amortissement en DYNA_NON_LINE

Kamil,

Damping is a more general concept of dynamics (modal, harmonic, transient analysis).
As opposed to viscoelasticity which can be used for both: quasi-static and dynamic analysis.

About damping in the first sense, see doc U2.06.03 chap 1 and 2
About damping using a viscoelastic material, see doc U2.06.03 chap 3

Regards  Johannes Ackva
______________________________________________________________________
Ingenieurbüro für Mechanik
Dr.-Ing. Johannes Ackva
Markgrafenstr. 21
D 91717 Wassertrüdingen

______________________________________________________________________
CODE-ASTER-courses at Ingenieurbüro für Mechanik, Germany

*** SALOME and CODE-ASTER for beginners and nearly-beginners
    4 days, Wed 19 Sep- Sat 22 Sep 2012

*** DYNAMIC ANALYSIS WITH CODE-ASTER
    2 days, Thursday 18 Oct-  Fri 19 Okt 2012
    www.code-aster.de


Ingenieurbüro für Mechanik
D 91717 Wassertrüdingen / Germany

www.code-aster.de                                                Training & Support for NASTRAN and CODE-ASTER

Offline

#9 2012-05-29 13:27:33

C.Boudaud
Member
From: Laboratoire 3SR - Grenoble
Registered: 2012-05-09
Posts: 3

Re: Modélisation amortissement en DYNA_NON_LINE

AsterO'dactyle wrote:

Hello,

I don't understand (sorry, it's not my speciality) but I think constant Rayleigh damping is possible in DYNA_NON_LINE. I think your documents are talking about LINEAR operators (DYNA_LINE_TRAN, DYNA_LINE_HARM, DYNE_TRAN_MODAL or DYNA_VIBRA)
If you choose AMOR_RAYL_RIGI = 'ELASTIQUE' in DYNA_NON_LINE, Rayleigh damping is constant (C = alpha K + beta M ) with K = (initial) elastic matrix.

Thank you, I agree with that. The calculation is now working with constant damping matrix even if it is recomputed at every timestep. I have AMOR_ALPHA and AMOR_BETA values for elastic materials and damping matrices A_TR_D_L are given in AFFE_CAR_ELEM for every DISCRET element (coefficient are alpha * K for SEG2 and beta * M for POI1 meshes).

This works pretty good, but now I would like to update the stiffnesses in the A_TR_D_L matrices. Both AMOR_RAYL_RIGI = 'ELASTIQUE' or 'TANGENTE' provide similar results, as the beams and plates of the model are elastic and only DISCRET elements are non linear, I'm guessing that 'ELASTIQUE' and 'TANGENTE' don't take into account the evolution of the DISCRET element stiffness.

Therefore I coded the following procedure to update the A_TR_D_L matrices :

istep = 1
  while ( not done ):       
       
    U1 = DYNA_NON_LINE(...NUME_INST_INIT = istep,                                                     # Calculation of one timestep only   
                                          NUME_INST_FIN  = istep + 1,),

    K_x = vari.EXTR_COMP('V3', gr_ma_p2f).valeurs                                                           # Extraction of the DISCRET element stiffness from the internal variable of the behaviour law

    i=0
    for mesh in mail:
      discret.append(_F(CARA = 'A_TR_D_L',                                                                       # Update the A_TR_D_L matrices for every DISCRET element
                   MAILLE = noma[mesh-1],
                   VALE = (a_alpha * K_x[i], a_alpha * K_y[i], 0.0, 0.0, 0.0, 0.0),),)
    i = i + 2
       
    DETRUIRE(CONCEPT=(_F(NOM=CAR)))                                                                      # Destruction of the previous AFFE_CAR_ELEM concept
       
    CAR = AFFE_CARA_ELEM(...DISCRET = discret,)                                                        # Creation of the new AFFE_CAR_ELEM with updated A_TR_D_L matrices
       
    istep = istep + 1
      if ( istep > 2 ):
    done = True


This code works pretty good except that the dynamic memory demand is way too big and I can't complete any calculation. 6GB are sufficient when not updating the damping matrices, when updating 12GB are far from enough. Does anybody know of a more simple way to update the damping matrix with the current stiffness of DISCRET elements ? Or is there a way not to DETRUIRE / CREATE the AFFE_CAR_ELEM but just update it ?

Thanks

Last edited by C.Boudaud (2012-05-29 13:30:02)

Offline

#10 2012-05-29 20:26:59

AsterO'dactyle
Administrator
Registered: 2007-11-29
Posts: 442

Re: Modélisation amortissement en DYNA_NON_LINE

That's pretty good !
Problem with dynamic memory has been corrected in NEW11.1.21

(see http://www.code-aster.org/forum2/viewto … ?id=16506)


Code_Asterの開発者

Offline

#11 2012-06-14 10:51:02

humbert
Member
From: Seoul
Registered: 2007-11-26
Posts: 81
Website

Re: Modélisation amortissement en DYNA_NON_LINE

As I understand the Alarm, the problem is that in nonlinear simulation the stiffness matrix will change due to nonlinearities. Therefore the linear combination of Rayleigh alpha*K+beta*M also changes and need to be re-evaluated every step. At the global scale, for whatever reason, this is disabled in DYNA_NON_LINE. At the local scale, this is available via the AMOR_ALPHA and AMOR_BETA keywords in the material definition.
Wild guess:
The global scale path is as follow: compute the local stiffness and mass matrices of the elements, assemble everything to get the global K and M, and then compute C as a linear combination of those two (huge) matrices. Yet this last step is easily and efficiently performed using the blas/lapack math library, which  use the latest available CPU instructions to vectorize the operation, at least if the library if optimized.
The local path, on the other hand, needs to perform the linear combination per element, as the local stiffness matrix can vary. Then and only then does it assemble K, M, and also C (A in Code_Aster notation). However these operations are not easily optimized and consume more CPU. Therefore the alarm.
That does not answer the question though, sorry. But I'm curious to see if my guess is right. In this case indeed the Alarm may be overalarming for the user provided a heavy nonlinear model and therefore some time-consuming behavior law integration. But is it always the case? Remember Code_Aster is a fairly general FE code.

Offline