CALCUL DE STRUCTURES À BARRES OU POUTRE

Signaler
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
-
Messages postés
8
Date d'inscription
samedi 19 avril 2003
Statut
Membre
Dernière intervention
20 août 2006
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/34218-calcul-de-structures-a-barres-ou-poutre

Messages postés
8
Date d'inscription
samedi 19 avril 2003
Statut
Membre
Dernière intervention
20 août 2006

Bonjour,
J’ai regardé mes matrices masse et effectivement, vous auriez raison si mes matrices correspondaient à une modélisation de la structure par masse répartie. Or, pour simplifier la modélisation, dans cette partie logicielle, je travaille uniquement en matrice de masse diagonale. C'est-à-dire que je répartie la masse sur les nœuds. Et, donc, comme vous l’avez remarqué, les blocs en haut, à droite et en bas, à gauche, ne comportent que des termes nuls. En masse répartie, il y aurait effectivement des termes non nuls.
Le gros avantage de cette modélisation est que les matrices sont plus simples à établir et qu’elles sont indépendantes du repère dans lequel on travaille.
Pour des structures à barre, la modélisation n’engendre que peu d’erreur si l’excitation dynamique est horizontale et que la structure est de type portique étagé.
Par contre, si votre excitation dynamique est de type vertical, la modélisation est fausse et les résultats du calcul seront erronés.
Je vous renvoie au livre de Mr Davidovici « La construction en zone sismique » page 141 et suivantes pour l’édition 1999 qui explique bien le concept de modélisation des masses.
Concernant les matrices masse, vous pouvez retrouver la formulation utilisée dans le logiciel dans le livre de J.F. Auboin « Calcul des structures et informatique » en page 112.
Les éléments que vous indiquez correspondent plutôt à une formulation par matrice cohérente, éléments que l’on retrouve un peu plus loin dans la suite du logiciel.
Bien à vous.
Philippe
Messages postés
8
Date d'inscription
samedi 19 avril 2003
Statut
Membre
Dernière intervention
20 août 2006

Bonsoir,

Et merci tout d'abord de votre commentaire.

Cela fait un moment que je n'ai pas travaillé sur ce module. Il est possible que vous ayez raison.

Je ne vous dit pas que je vais le regarder de suite mais pendant les vacances de la noël, j'aurais un peu de temps et j'y jetterais un œil. Je vous tiendrais au courant.

Philippe
Messages postés
4
Date d'inscription
samedi 22 novembre 2003
Statut
Membre
Dernière intervention
1 février 2014

en complément, j'apporterais la modif suivante (uniquement rotule-rotule est traité):


Sub Matrice_masse_Concentre_2D(ByRef Mg(,) As Double, ByVal L() As Double)
Dim i, i1, i2, j, jD, jF As Integer
Dim mg0(9, Total_element), mg1(9, Total_element), mg01(9, Total_element), mg10(9, Total_element), mg_ele(3, 3) As Double
'composition de toutes les matrices élémentaires, élément par élément
'1- construction de la matrice de masse locale Mg0 et Mg1
For i = 1 To Total_element
' si noe relaxé
If Rel_ele(1, i) True And Rel_ele(2, i) True Then
mg0(1, i) Ro(i) * Sx(i) * L(i) / 3 : mg0(2, i) 0 : mg0(3, i) = 0
mg0(4, i) 0 : mg0(5, i) Ro(i) * Sx(i) * L(i) / 3 : mg0(6, i) = 0
mg0(7, i) 0 : mg0(8, i) 0 : mg0(9, i) = 0
mg1(1, i) Ro(i) * Sx(i) * L(i) / 3 : mg1(2, i) 0 : mg1(3, i) = 0
mg1(4, i) 0 : mg1(5, i) Ro(i) * Sx(i) * L(i) / 3 : mg1(6, i) = 0
mg1(7, i) 0 : mg1(8, i) 0 : mg1(9, i) = 0

mg01(1, i) Ro(i) * Sx(i) * L(i) / 6 : mg01(2, i) 0 : mg01(3, i) = 0
mg01(4, i) 0 : mg01(5, i) Ro(i) * Sx(i) * L(i) / 6 : mg01(6, i) = 0
mg01(7, i) 0 : mg01(8, i) 0 : mg01(9, i) = 0
mg10(1, i) Ro(i) * Sx(i) * L(i) / 6 : mg10(2, i) 0 : mg10(3, i) = 0
mg10(4, i) 0 : mg10(5, i) Ro(i) * Sx(i) * L(i) / 6 : mg10(6, i) = 0
mg10(7, i) 0 : mg10(8, i) 0 : mg10(9, i) = 0
End If
Next
'2 - Assemblage de la matrice
'mise à zéro de la matrice de masse globale
For i = 1 To 3 * Total_noeud
For j = 1 To 3 * Total_noeud
Mg(i, j) = 0
Next
Next
'assemblage matrice
For i = 1 To Total_element
jD Ele(1, i) : jF Ele(2, i) 'numéro de noeud de début et fin de barre
j = 0
For i1 = 1 To 3
For i2 = 1 To 3
j = j + 1
mg_ele(i1, i2) = mg0(j, i)
Next
Next
Call MatAdd(Mg, mg_ele, jD, jD)
j = 0
For i1 = 1 To 3
For i2 = 1 To 3
j = j + 1
mg_ele(i1, i2) = mg1(j, i)
Next
Next
Call MatAdd(Mg, mg_ele, jF, jF)


j = 0
For i1 = 1 To 3
For i2 = 1 To 3
j = j + 1
mg_ele(i1, i2) = mg01(j, i)
Next
Next
Call MatAdd(Mg, mg_ele, jD, jF)
j = 0
For i1 = 1 To 3
For i2 = 1 To 3
j = j + 1
mg_ele(i1, i2) = mg10(j, i)
Next
Next
Call MatAdd(Mg, mg_ele, jF, jD)
Next

End Sub
Messages postés
4
Date d'inscription
samedi 22 novembre 2003
Statut
Membre
Dernière intervention
1 février 2014

bonjour,
comme déjà dit sur ce forum, grand merci pour partager cette source.
voila qui permet aux amateurs de progresser.

j'ai essayé de regarder dynamique2d de plus près:
à mon sens, il semble que la construction de la matrice masse n'est pas correcte.
par exemple, élément rotule-rotule, il n'y aurait de termes non nuls que sur la diagonale de la matrice 6x6 (décomposée avec m0 3x3 en haut à gauche, et m1 3x3 en bas à droite)? les blocs en haut à droite et en bas à gauche doivent contenir des termes non nuls pourtant, sauf erreur. (les mêmes que m0 et m1 à un facteur 0.5 près).

cordialement,
Afficher les 16 commentaires