Gestion des conditions aux limites th> tr> | |
---|---|
Élément th> | Description th> tr> |
Incrément de force externe nodale td> | Spécifiez le nombre de nœuds de chargement, le numéro de nœud de chargement et la valeur d'incrément de charge td> tr> |
Contrainte de déplacement de nœud td> | Contrainte de déplacement Spécifiez le nombre de nœuds et le numéro de nœud de contrainte (contrainte complète: seul le déplacement = 0 peut être traité) td> tr> |
Program name | Description |
---|---|
py_fem_gfrmAL.py td> | Géométrie du squelette planaire Programme d'analyse structurelle non linéaire td> tr> |
python3 py_fem_gfrmAL.py inp.txt out.txt nnmax
inp.txt td> | : fichier de données d'entrée (données séparées par des blancs) td> tr> |
out.txt td> | : fichier de données de sortie (données séparées par des blancs) td> tr> |
nnmax td> | : Nombre d'étapes de chargement td> tr> |
npoin nele nsec npfix nlod # Basic values for analysis
E A I # Material properties
..... (1 to nsec) ..... #
node_1 node_2 isec # Element connectivity, material set number
..... (1 to nele) ..... #
x y # Node coordinate of node
..... (1 to npoin) ..... #
lp fix_x fix_y fix_r # Restricted node number
..... (1 to npfix) ..... #
lp df_x df_y df_r # Loaded node and loading conditions (load increment)
..... (1 to nlod) ..... # (omit data input if nlod=0)
npoin, nele, nsec td> | : Nombre de nœuds, nombre d'éléments, nombre de caractéristiques transversales td> tr> |
npfix, nlod td> | : Nombre de nœuds de contrainte, nombre de nœuds de chargement td> tr> |
E, A, I td> | : coefficient d'élasticité, aire de section, moment secondaire de section td> tr> |
node_1, node_2, isec td> | : Node 1, Node 2, numéro de caractéristique de section td> tr> |
x, y td> | : coordonnée x, coordonnée y td> tr> |
lp, fix_x, fix_y, fix_r td> | : Numéro de nœud, contrainte x / y / sens de rotation (0: libre, 1: contrainte complète) td> tr> |
lp, df_x, df_y, df_r td> | : numéro de nœud, x · y · charge de rotation td> tr> |
npoin nele nsec npfix nlod nnmax
(Each value of above)
sec E A I
sec : Material number
E : Elastic modulus
A : Section area
I : Moment of inertia
..... (1 to nsec) .....
node x y fx fy fr kox koy kor
node : Node number
x : x-coordinate
y : y-coordinate
fx : Load in x-direction
fy : Load in y-direction
fr : Moment load
kox : Index of restriction in x-direction (0: free, 1: fixed)
koy : Index of restriction in y-direction (0: free, 1: fixed)
kor : Index of restriction in rotation (0: free, 1: fixed)
..... (1 to npoin) .....
elem i j sec
elem : Element number
i : Node number of start point
j : Node number of end point
sec : Material number
..... (1 to nele) .....
* nnn=0 iii=0 lam=0.0
node fp-x fp-y fp-r dis-x dis-y dis-r dr-x dr-y dr-r
node : Node number
fp-x : Total load in x-direction
fp-y : Total load in y-direction
fp-r : Total load in rotation
dis-x : Displacement in x-direction
dis-y : Displacement in y-direction
dis-r : Displacement in rotation
dr-x : Un-balanced force in x-direction
dr-y : Un-balanced force in y-direction
dr-r : Un-balanced force in rotation
..... (1 to npoin) .....
elem N_i S_i M_i N_j S_j M_j
elem : Element number
N_i : Axial force of node-i
S_i : Shear force of node-i
M_i : Moment of node-i
N_j : Axial force of node-j
S_j : Shear force of node-j
M_j : Moment of node-j
..... (1 to nele) .....
* nnn=1 iii=xx lam=xxx
node fp-x fp-y fp-r dis-x dis-y dis-r dr-x dr-y dr-r
node : Node number
fp-x : Total load in x-direction
fp-y : Total load in y-direction
fp-r : Total load in rotation
dis-x : Displacement in x-direction
dis-y : Displacement in y-direction
dis-r : Displacement in rotation
dr-x : Un-balanced force in x-direction
dr-y : Un-balanced force in y-direction
dr-r : Un-balanced force in rotation
..... (1 to npoin) .....
elem N_i S_i M_i N_j S_j M_j
elem : Element number
N_i : Axial force of node-i
S_i : Shear force of node-i
M_i : Moment of node-i
N_j : Axial force of node-j
S_j : Shear force of node-j
M_j : Moment of node-j
..... (1 to nele) .....
.... .... ....
* nnn=nnmax-1 iii=xx lam=xxx
node fp-x fp-y fp-r dis-x dis-y dis-r dr-x dr-y dr-r
..... (1 to npoin) .....
elem N_i S_i M_i N_j S_j M_j
..... (1 to nele) .....
n=(total degrees of freedom) time=(calculation time)
fp-x, fp-y, fp-r td> | : charge de direction x, charge de direction y, charge de sens de rotation td> tr> |
dis-x, dis-y, dis-r td> | : déplacement dans le sens x, déplacement dans le sens y, déplacement en rotation td> tr> |
dr-x, dr-y, dr-r td> | : force déséquilibrée dans la direction x, force déséquilibrée dans la direction y, force déséquilibrée dans la direction de rotation td> tr> |
N, S, M td> | : Force axiale, force de cisaillement, moment td> tr> |
n td> | : degrés de liberté totaux (source des équations simultanées) td> tr> |
heure td> | : heure de calcul td> tr> |
Program name | Description |
---|---|
inp_gfrm_canti.txt td> | Cantilever FEM Données d'entrée d'analyse td> tr> |
inp_gfrm_cable.txt td> | Cantilever avec câble Données d'entrée d'analyse FEM de poutre td> tr> |
inp_gfrm_arch.txt td> | Entrée d'analyse Arch Données td> tr> |
inp_gfrm_lee.txt td> | Entrée d'analyse du cadre FEM Données td> tr> |
py_fig_gfrm.py td> | Courbe de déplacement de charge Programme de dessin (matplotlib) td> tr> |
py_fig_gfrm_mode.py td> | Programme (matplotlib) td> tr> |
Dans le programme de création de courbes de charge / déplacement py_fig_gfrm.py, après avoir essayé de le rendre polyvalent, l'entrée de la ligne de commande est devenue assez déroutante. p>
Avec le programme de création de diagramme de mode de déplacement py_fig_gfrm_mode.py, il est relativement facile de réaliser quelque chose de polyvalent uniquement avec le mode de déplacement, mais si vous essayez de mettre des conditions aux limites, cela devient assez compliqué. Par conséquent, comme je ne souhaite créer que 4 graphiques, je spécifie le fichier d'entrée dans le programme et je traite chaque fichier individuellement. p>
La flèche indiquant la charge est écrite sous forme de flèche. avec flèche p> ``` ax.arrow(x,y,u,v,head_length=hl, ....) ``` Écrivez une instruction comme
. Par exemple, lorsque vous dessinez une flèche verticale, il convient de noter que la longueur de la queue à la pointe de la flèche est (v + head_length). La correspondance réelle est la suivante. p> ``` uu=0.0 vv=(ymax-ymin)*0.1 x1=xx[lnod-1] y1=yy[lnod-1]+vv hl=vv*0.4 hw=hl*0.5 ax.arrow(x1,y1,uu,-(vv-hl), lw=2.0,head_width=hw, head_length=hl, fc='#555555', ec='#555555') ```
Le symbole indiquant l'extrémité fixe dessinée à la base de la poutre unidirectionnelle verticale est dessiné en utilisant fill (... hatch = '///'). Ici, fill spécifie une zone rectangulaire, mais comme une bordure n'est pas requise, linewidth = 0.0 est spécifié dans fill pour empêcher la bordure d'être dessinée. La correspondance réelle est la suivante. p> ``` lp=1; x1=x[lp-1]; y1=y[lp-1] px=[x1-2*scl,x1+2*scl,x1+2*scl,x1-2*scl] py=[y1,y1,y1-1*scl,y1-1*scl] ax.fill(px,py,fill=False,linewidth=0.0,hatch='///') ax.plot([x1-2*scl,x1+2*scl],[y1,y1],color='#000000',linestyle='-',linewidth=1.5) ```
# FEM calculation by Arc-Length method
python py_fem_gfrmAL.py inp_gfrm_canti.txt out_gfrm_canti.txt 70
python py_fem_gfrmAL.py inp_gfrm_cable.txt out_gfrm_cable.txt 290
python py_fem_gfrmAL.py inp_gfrm_arch.txt out_gfrm_arch.txt 310
python py_fem_gfrmAL.py inp_gfrm_lee.txt out_gfrm_lee.txt 160
# Drawing of Load-displacement curve
python py_fig_gfrm.py out_gfrm_canti.txt 11 11 -411.07 1000 1000 \$u/L\$ $\v/L\$ \$u/L\$\,$\v/L\$ \$P/P_{cr}\$ LL
python py_fig_gfrm.py out_gfrm_cable.txt 12 11 -1644.3 1000 1000 \$u/L\$ \$v/L\$ \$u/L\$\,\$v/L\$ \$P/P_{cr}\$ LL
python py_fig_gfrm.py out_gfrm_arch.txt 21 21 -666.4 -500 -500 \$u/R\$ \$v/R\$ \$u/R\$\,\$v/R\$ \$P\\cdot\(R^2/EI\)\$ UL
python py_fig_gfrm.py out_gfrm_lee.txt 13 13 -166.6 1000 -1000 \$u/L\$ \$v/L\$ \$u/L\$\,\$v/L\$ \$P\\cdot\(L^2/EI\)\$ LL
# Drawing of displacement mode
python py_fig_gfrm_mode.py
python py_fig_gfrm.py out.txt node-L node-D nd-L nd-u nd-v leg-u leg-v x-Label y-Label loc
out.txt td> | : fichier de données de sortie FEM (données séparées par des blancs) td> tr> |
node-L td> | : Numéro de nœud de chargement pour dessiner une courbe de déplacement de charge td> tr> |
node-D td> | : numéro de nœud du dessin de déplacement pour le dessin de la courbe de déplacement de charge td> tr> |
nd-L td> | : valeur numérique (signe compris) pour l'absence de charge td> tr> |
nd-u td> | : valeur numérique (signe compris) pour le déplacement en direction x sans dimension td> tr> |
nd-v td> | : valeur numérique (signe compris) pour le déplacement en direction y sans dimension td> tr> |
leg-u td> | : étiquette de déplacement dans la direction x (pour la légende) td> tr> |
leg-v td> | : étiquette de déplacement dans la direction y (pour la légende) td> tr> |
x-Label td> | : étiquette de l'axe des x (déplacement) td> tr> |
étiquette y td> | : étiquette axe y (charge) td> tr> |
loc td> | : Position du dessin de la légende td> tr> |
Cantilever (inp_gfrm_canti.txt) th> tr> qui reçoit la force de compression axiale |
---|
L=1,000mm, E=200,000MPa, A=100m$^2$, I=833m$^4$
Initial deflection $v_0$=1mm Buckling load $P_{cr}=\pi^2 EI / 4 L^2$=411.07N |
Cantilever (inp_gfrm_cable.txt) th> tr> dont la pointe est tirée par un câble |
---|
Column: L=1,000mm, E=200,000MPa, A=100m$^2$, I=833m$^4$
Cable: L=1,000mm, E=200,000MPa, A=28.3$^2$ Initial deflection $v_0$=5mm Buckling load $P_{cr}=\pi^2 EI / L^2$=1644.3NN |
Arc supporté de manière asymétrique (inp_gfrm_arch.txt) sous charge concentrée verticale th> tr> |
---|
R=500mm, Center angle=215$^\circ$, E=200,000MPa, A=100m$^2$, I=833m$^4$ |
Trame recevant une charge concentrée verticale (inp_gfrm_lee.txt) th> tr> |
---|
L=1000mm, E=200,000MPa, A=100m$^2$, I=833m$^4$ |
c'est tout
Recommended Posts