m_n_kappa.MNCurve#

class m_n_kappa.MNCurve(sub_cross_sections)#

Bases: object

compute the moment and axial-force curve of a cross-section in case of no curvature

New in version 0.2.0.

procedure:
  1. determine strains in the sub-cross-sections (girder and slab)

  2. compute strain_value at the corresponding counter-sections

  3. determine moment, axial-force, strain-value-difference, etc.r

Parameters:

sub_cross_sections (list[Crosssection] |) –

:param tuple[Crosssection: sub-cross-sections to compute :param Crosssection]: sub-cross-sections to compute

Examples

To compute a moment-axial-force curve you need two sub-cross- sections. In the following two identical cross-sections are defined as our sub-cross-sections.

>>> from m_n_kappa import Steel, Rectangle, Crosssection
>>> steel = Steel(f_y=355.0, f_u=400, failure_strain=0.15)
>>> rectangle_top = Rectangle(top_edge=0.0, bottom_edge=10.0, width=10.0)
>>> section_top = steel + rectangle_top
>>> cross_section_top = Crosssection([section_top])
>>> rectangle_bottom = Rectangle(top_edge=10.0, bottom_edge=20.0, width=10.0)
>>> section_bottom = steel + rectangle_bottom
>>> cross_section_bottom = Crosssection([section_bottom])
>>> cross_sections = [cross_section_top, cross_section_bottom]

The cross_sections are passed to MNCurve. By initializing the moment-axial-force curve is computed.

>>> from m_n_kappa import MNCurve
>>> m_n = MNCurve(cross_sections)

points gives us the opportunity access the results. Attribute moments gives us the computed moments.

>>> m_n.points.moments
[400000.0, 355026.8934963956, -355026.8934963956, -400000.0, 400000.0, 355026.8934963956, -355026.8934963956, -400000.0]

The computed curvatures are by definition zero.

>>> m_n.points.curvatures
[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]

Attribute axial_forces gives us the computed axial-forces.

>>> m_n.points.axial_forces
[40000.0, 35500.0, -35500.0, -40000.0, 40000.0, 35500.0, -35500.0, -40000.0]

Attributes

not_successful_reason

for those computations that were not successful, here the reasons are given

points

computed points

strain_positions

strain-positions of the sub-cross-sections

sub_cross_sections

two sub-cross-sections

property not_successful_reason: list[m_n_kappa.general.NotSuccessfulReason]#

for those computations that were not successful, here the reasons are given

property points: MNKappaCurvePoints#

computed points

property strain_positions: tuple#

strain-positions of the sub-cross-sections

property sub_cross_sections: tuple[m_n_kappa.crosssection.Crosssection, m_n_kappa.crosssection.Crosssection]#

two sub-cross-sections