Loading#
Units: Millimeter [mm], Newton [N]
Introduction#
For computing deformations the loading of a beam is crucial.
Therefore, m_n_kappa
provides currently two functions to compute the stress resultants
of single-span girders.
Single Loads#
For computation of the stress-resultants of a single-span beam first at leas one
SingleLoad
must be defined.
This SingleLoad
defines the position of the load along the beam as
well as its value.
Here, SingleLoad
is defined at 4000 mm, what applies to the middle of the beam.
But every other position within the beam-span (0 mm < \(L\) < 8000 mm) is possible.
This SingleLoad
(i.e. load_1
) is passed to SingleSpanSingleLoads
in a list, together with the length
of the beam.
maximum_moment()
computes then the maximum Moment.
>>> from m_n_kappa import SingleSpanSingleLoads, SingleLoad
>>> load_1 = SingleLoad(position_in_beam=4000, value=10)
>>> single = SingleSpanSingleLoads(length=8000, loads=[load_1])
>>> single.maximum_moment
20000.0
The transversal shear at the supports is given by
transversal_shear_support_left()
for the left support and
transversal_shear_support_right()
for the right support.
>>> single.transversal_shear_support_left, single.transversal_shear_support_right
(5.0, -5.0)
The summarized loading is given by loading()
.
>>> single.loading
10.0
Of course, the moment may be computed at every position along the beam.
>>> single.moment(at_position=2000)
10000.0
As well as the transversal shear.
>>> single.transversal_shear(at_position=2000)
5.0
This allows to compute the course of the moment over the length of the beam.
import pandas as pd
import altair as alt
positions = [index*100 for index in range(0, 81, 1)]
moments = [single.moment(at_position=position) for position in positions]
df_moments = pd.DataFrame({'moments': moments, 'positions': positions})
alt.Chart(df_moments, height=100.0, background='#00000000').mark_line().encode(
x=alt.X('positions', title='Position [mm]'),
y=alt.Y('moments', title='Moment [Nmm]', scale=alt.Scale(reverse=True)))
As well as the transversal shear over the length of the beam.
shear = [single.transversal_shear(at_position=position) for position in positions]
df_shear = pd.DataFrame({'shear': shear, 'positions': positions})
alt.Chart(df_shear, height=100.0, background='#00000000').mark_line().encode(
x=alt.X('positions', title='Position [mm]'),
y=alt.Y('shear', title='Transversal shear [N]'))
SingleSpanSingleLoads
accepts more than one SingleLoad
as
load
-argument.
Therefore, more complicated load-scenarios are possible as only a single load.
Uniform loading#
The SingleSpanUniformLoad
class follows a similar procedure as
SingleSpanSingleLoads
, but no definition of SingleLoad
is needed.
The load
is passed directly as argument to the class also with the length
of the beam.
The maximum moment is then given by maximum_moment
>>> from m_n_kappa import SingleSpanUniformLoad
>>> uniform = SingleSpanUniformLoad(length=8000, load=10.0)
>>> uniform.maximum_moment
80000000.0
Transversal shear at the support is given by transversal_shear_support_left
and transversal_shear_support_right
.
>>> uniform.transversal_shear_support_left, uniform.transversal_shear_support_right
(40000.0, -40000.0)
The summarized loading is given as follows.
>>> uniform.loading
80000.0
Whereas, the moment is computed by moment
passing the position
where the moment needs to be obtained.
>>> uniform.moment(at_position=2000)
60000000.0
Similarly for transversal shear using transversal_shear
, what applies
to 0.0
in case of uniformly loaded beam.
>>> uniform.transversal_shear(at_position=4000)
0.0
moment
allows to plot the moment along the beam.
import pandas as pd
import altair as alt
positions = [index*100 for index in range(0, 81, 1)]
moments = [uniform.moment(at_position=position)*0.001*0.001 for position in positions]
df_moments = pd.DataFrame({'moments': moments, 'positions': positions})
alt.Chart(df_moments, height=100.0, background='#00000000').mark_line().encode(
x=alt.X('positions', title='Position [mm]'),
y=alt.Y('moments', title='Moment [kNm]', scale=alt.Scale(reverse=True)))
And the transversal shear is given as follows.
shear = [uniform.transversal_shear(at_position=position) for position in positions]
df_shear = pd.DataFrame({'shear': shear, 'positions': positions})
alt.Chart(df_shear, height=100.0, background='#00000000').mark_line().encode(
x=alt.X('positions', title='Position [mm]'),
y=alt.Y('shear', title='Transversal shear [N]'))
See also
Loading : Theory to the given functions
The SingleSpan
class has SingleSpanSingleLoads
and SingleSpanUniformLoad
implemented.
The invoked class depends on the argument that is passed.
In case loads
is passed, then SingleSpanSingleLoads
is initialized.
SingleSpanUniformLoad
is initialized in case uniform_load
is passed.
In each case the length
of the beam must be passed.
>>> from m_n_kappa import SingleSpan
>>> single = SingleSpan(length=8000, loads=[load_1])
>>> uniform = SingleSpan(length=8000, uniform_load=10)
>>> single.maximum_moment, uniform.maximum_moment
(20000.0, 80000000.0)