Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

2.3. Статический расчет: реакции и внутренние усилия

Beam3D.load_vector

property load_vector Возвращает трехэлементный список, представляющий вектор нагрузки.

Beam3D.moment_load_vector

property moment_load_vector Возвращает трехэлементный список, представляющий моментные нагрузки на балку.

Beam3D.boundary_conditions

property boundary_conditions Возвращает словарь граничных условий, примененных к балке. Словарь имеет два ключевых слова: slope (угол наклона) и deflection (прогиб). Значением каждого ключевого слова является список кортежей, где каждый кортеж содержит местоположение и значение граничного условия в формате (местоположение, значение). При этом каждое значение представляет собой список, соответствующий значениям угла наклона или прогиба(ов) вдоль трех осей в данной точке.

Пример

Имеется балка длиной 4 метра. Угол наклона на конце 0 должен составлять 4 вдоль оси x и 0 вдоль остальных. На другом конце балки прогиб по всем трем осям должен быть равен нулю.

Здесь прогиб балки должен быть равен 0 вдоль всех трех осей в точке 4. Аналогично, угол наклона балки должен быть равен 4 вдоль оси x и 0 вдоль осей y и z в точке 0.

from sympy.physics.continuum_mechanics.beam import Beam3D
from sympy import symbols
l, E, G, I, A, x = symbols('l, E, G, I, A, x')
b = Beam3D(30, E, G, I, A, x)
b.bc_slope = [(0, (4, 0, 0))]
b.bc_deflection = [(4, [0, 0, 0])]
b.boundary_conditions
{'deflection': [(4, [0, 0, 0])], 'slope': [(0, (4, 0, 0))], 'bending_moment': [], 'shear_force': []}

Beam3D.solve_for_reaction_loads()

solve_for_reaction_loads(reaction) Вычисляет опорные реакции.

Пример

Имеется балка длиной 30 метров. Она шарнирно оперта на катки с обоих концов. Постоянная распределенная нагрузка величиной 8 Н приложена от начала до конца балки вдоль оси y. Другая линейная нагрузка с угловым коэффициентом, равным 9, приложена вдоль оси z.

Beam3D.solve_for_torsion()

solve_for_torsion() Вычисляет угол закручивания (угловое перемещение) под действием крутящих эффектов от моментов, приложенных в направлении оси x (т.е. из плоскости или в плоскость балки).

Здесь положительный крутящий момент означает, что направление крутящего момента положительно, т.е. направлено из балки вдоль оси балки. Аналогично, отрицательный крутящий момент означает крутящий момент, направленный в поперечное сечение балки.

Пример

from sympy.physics.continuum_mechanics.beam import Beam3D
from sympy import symbols
l, E, G, I, A, x = symbols('l, E, G, I, A, x')
b = Beam3D(20, E, G, I, A, x)
b.apply_moment_load(4, 4, -2, dir='x')
b.apply_moment_load(4, 8, -2, dir='x')
b.apply_moment_load(4, 8, -2, dir='x')
b.solve_for_torsion()
b.angular_deflection().subs(x, 3)
Loading...

Beam3D.axial_force()

axial_force() Возвращает выражение для продольной (осевой) силы, возникающей в объекте балки.

Beam3D.shear_force()

shear_force() Возвращает список из трех выражений, представляющих эпюры поперечных сил объекта балки относительно всех трех осей.

Beam3D.bending_moment()

bending_moment() Возвращает список из трех выражений, представляющих эпюры изгибающих моментов объекта балки относительно всех трех осей.

Beam3D.torsional_moment()

bending_moment() Возвращает выражение для крутящего момента, возникающего в объекте балки.

Beam3D.polar_moment()

polar_moment() Возвращает полярный момент инерции площади сечения балки относительно оси X, проходящей через центр тяжести (центроиду).

Пример

from sympy.physics.continuum_mechanics.beam import Beam3D
from sympy import symbols
l, E, G, I, A = symbols('l, E, G, I, A')
b = Beam3D(l, E, G, I, A)
b.polar_moment()
I1 = [9, 15]
b = Beam3D(l, E, G, I1, A)
b.polar_moment()
Loading...

Beam3D.axial_stress()

axial_stress() Возвращает выражение для продольного (осевого) напряжения, возникающего в объекте балки.

Beam3D.shear_stress()

shear_stress() Возвращает список из трех выражений, представляющих эпюры касательных напряжений объекта балки относительно всех трех осей.

Beam3D.max_shear_force()

max_shear_force() Возвращает точку с максимальной поперечной силой и соответствующее значение поперечной силы по всем направлениям в объекте балки в виде списка. Перед использованием этой функции необходимо вызвать solve_for_reaction_loads().

Пример

Имеется балка длиной 20 метров. Она шарнирно оперта на катки с обоих концов. Линейная нагрузка с угловым коэффициентом, равным 12, приложена вдоль оси y. Постоянная распределенная нагрузка величиной 15 Н приложена от начала до конца балки вдоль оси z.

from sympy.physics.continuum_mechanics.beam import Beam3D
from sympy import symbols
l, E, G, I, A, x = symbols('l, E, G, I, A, x')
b = Beam3D(20, 40, 21, 100, 25, x)
b.apply_load(15, start=0, order=0, dir="z")
b.apply_load(12*x, start=0, order=0, dir="y")
b.bc_deflection = [(0, [0, 0, 0]), (20, [0, 0, 0])]
R1, R2, R3, R4 = symbols('R1, R2, R3, R4')
b.apply_load(R1, start=0, order=-1, dir="z")
b.apply_load(R2, start=20, order=-1, dir="z")
b.apply_load(R3, start=0, order=-1, dir="y")
b.apply_load(R4, start=20, order=-1, dir="y")
b.solve_for_reaction_loads(R1, R2, R3, R4)
b.max_shear_force()
[(0, 0), (20, 2400), (20, 300)]

Beam3D.max_bmoment()

max_bmoment() Возвращает точку с максимальным изгибающим моментом и соответствующее значение изгибающего момента по всем направлениям в объекте балки в виде списка. Перед использованием этой функции необходимо вызвать solve_for_reaction_loads().

Пример

Имеется балка длиной 20 метров. Она шарнирно оперта на катки с обоих концов. Линейная нагрузка с угловым коэффициентом, равным 12, приложена вдоль оси y. Постоянная распределенная нагрузка величиной 15 Н приложена от начала до конца балки вдоль оси z.

from sympy.physics.continuum_mechanics.beam import Beam3D
from sympy import symbols
l, E, G, I, A, x = symbols('l, E, G, I, A, x')
b = Beam3D(20, 40, 21, 100, 25, x)
b.apply_load(15, start=0, order=0, dir="z")
b.apply_load(12*x, start=0, order=0, dir="y")
b.bc_deflection = [(0, [0, 0, 0]), (20, [0, 0, 0])]
R1, R2, R3, R4 = symbols('R1, R2, R3, R4')
b.apply_load(R1, start=0, order=-1, dir="z")
b.apply_load(R2, start=20, order=-1, dir="z")
b.apply_load(R3, start=0, order=-1, dir="y")
b.apply_load(R4, start=20, order=-1, dir="y")
b.solve_for_reaction_loads(R1, R2, R3, R4)
b.max_bending_moment()
[(0, 0), (20, 3000), (20, 16000)]

Beam3D.max_bending_moment()

max_bending_moment() Возвращает точку с максимальным изгибающим моментом и соответствующее значение изгибающего момента по всем направлениям в объекте балки в виде списка. Перед использованием этой функции необходимо вызвать solve_for_reaction_loads().

Пример

Имеется балка длиной 20 метров. Она шарнирно оперта на катки с обоих концов. Линейная нагрузка с угловым коэффициентом (интенсивностью изменения), равным 12, приложена вдоль оси y. Постоянная распределенная нагрузка величиной 15 Н приложена от начала до конца балки вдоль оси z.

from sympy.physics.continuum_mechanics.beam import Beam3D
from sympy import symbols
l, E, G, I, A, x = symbols('l, E, G, I, A, x')
b = Beam3D(20, 40, 21, 100, 25, x)
b.apply_load(15, start=0, order=0, dir="z")
b.apply_load(12*x, start=0, order=0, dir="y")
b.bc_deflection = [(0, [0, 0, 0]), (20, [0, 0, 0])]
R1, R2, R3, R4 = symbols('R1, R2, R3, R4')
b.apply_load(R1, start=0, order=-1, dir="z")
b.apply_load(R2, start=20, order=-1, dir="z")
b.apply_load(R3, start=0, order=-1, dir="y")
b.apply_load(R4, start=20, order=-1, dir="y")
b.solve_for_reaction_loads(R1, R2, R3, R4)
b.max_bending_moment()
[(0, 0), (20, 3000), (20, 16000)]

Beam3D.max_deflection()

max_deflection() Возвращает точку с максимальным прогибом и соответствующее значение прогиба по всем направлениям в объекте балки в виде списка. Перед использованием этой функции необходимо вызвать solve_for_reaction_loads() и solve_slope_deflection().

Пример

Имеется балка длиной 20 метров. Она шарнирно оперта на катки с обоих концов. Линейная нагрузка с угловым коэффициентом, равным 12, приложена вдоль оси y. Постоянная распределенная нагрузка величиной 15 Н приложена от начала до конца балки вдоль оси z.

from sympy.physics.continuum_mechanics.beam import Beam3D
from sympy import symbols
l, E, G, I, A, x = symbols('l, E, G, I, A, x')
b = Beam3D(20, 40, 21, 100, 25, x)
b.apply_load(15, start=0, order=0, dir="z")
b.apply_load(12*x, start=0, order=0, dir="y")
b.bc_deflection = [(0, [0, 0, 0]), (20, [0, 0, 0])]
R1, R2, R3, R4 = symbols('R1, R2, R3, R4')
b.apply_load(R1, start=0, order=-1, dir="z")
b.apply_load(R2, start=20, order=-1, dir="z")
b.apply_load(R3, start=0, order=-1, dir="y")
b.apply_load(R4, start=20, order=-1, dir="y")
b.solve_for_reaction_loads(R1, R2, R3, R4)
b.solve_slope_deflection()
b.max_deflection()
[(0, 0), (10, 495/14), (-10 + 10*sqrt(10793)/43, (10 - 10*sqrt(10793)/43)**3/160 - 20/7 + (10 - 10*sqrt(10793)/43)**4/6400 + 20*sqrt(10793)/301 + 27*(10 - 10*sqrt(10793)/43)**2/560)]