m_n_kappa.MNKappaCurve#

class m_n_kappa.MNKappaCurve(sub_cross_sections, include_positive_curvature=True, include_negative_curvature=False)#

Bases: object

computation of Moment-Axial-Force-Curvature curve (M-N-Kappa)

New in version 0.2.0.

Parameters:
  • sub_cross_sections (Crosssection | list[Crosssection] |) –

  • include_positive_curvature (bool) –

  • include_negative_curvature (bool) –

:param tuple[Crosssection: Sub-cross-sections to compute the M-N-Kappa-curve.

In case given as single Crosssection this cross-section must consist of a slab (Concrete and Reinforcement) and a girder (Steel)

:param Crosssection]: Sub-cross-sections to compute the M-N-Kappa-curve.

In case given as single Crosssection this cross-section must consist of a slab (Concrete and Reinforcement) and a girder (Steel)

Parameters:

:raises TypeError : if neither a ~m_n_kappa.Crosssection, list[~m_n_kappa.Crosssection]: or tuple[~m_n_kappa.Crosssection, ~m_n_kappa.Crosssection] are passed

See also

MKappaCurve

computation of Moment-Curvature-Curve assuming full interaction

Examples

This example illustrates the usage of MNKappaCurve. First two individual cross-sections may be created. In the following both cross-sections are Rectangle of material Steel.

>>> from m_n_kappa import Steel, Rectangle, Crosssection
>>> steel = Steel(f_y=355, 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])
>>> sub_cross_sections = [cross_section_top, cross_section_bottom]

To compute moment-axial-force-curvature points these the list of sub_cross_sections shall be passed to MNKappaCurve. In case you want to compute only positive moment-curvature-values you have to include_positive_curvature=True, what is also the default configuration. Negative moment-curvature-values are included by include_negative_curvature=True.

The following code computes only positive values:

>>> from m_n_kappa import MNKappaCurve
>>> m_n_kappa_curve = MNKappaCurve(
...     sub_cross_sections=sub_cross_sections,
...     include_positive_curvature=True)

points`() returns MNKappaCurvePoints() what is a collection of all the successfully computed Moment-Axial force-Curvature points. The attributes moments, curvatures, axial_forces, strain_differences, gives you a list of the corresponding values.

>>> m_n_kappa_points = m_n_kappa_curve.points
>>> m_n_kappa_points.moments
[355026.8934163825, 400000.0, 0.0, 236666.87937886757, 236666.50674824225, 372381.6934067906, 372282.02545773983, 361270.59229865274, 406270.5922986528, 384814.01494666666]

print_points() prints a full table consisting of all successfully computed values.

>>> print(m_n_kappa_points.print_points())
----------------------------------------------------------------------------------------------------------------------------------
     Moment     |  Curvature   | Neutral A.1 | Neutral A.2 |  Axial-force  | strain-diff. |   Strain   | Position | Material
----------------------------------------------------------------------------------------------------------------------------------
            0.0 |   0.00000000 |     0.0000  |     0.0000  |          0.00 |     0.000000 |   0.000000 |      0.0 | -
       236666.5 |   0.00016905 |    10.0000  |    10.0000  |          0.00 |     0.000000 |  -0.001690 |      0.0 | Steel
       236666.9 |   0.00016905 |    10.0000  |    10.0000  |          0.00 |     0.000000 |   0.001690 |     20.0 | Steel
       355026.9 |   0.00000000 |   Infinity  |   Infinity  |     -35500.00 |    -0.003558 |  -0.001690 |      0.0 | Steel
       361270.6 |   0.01483095 |    10.1140  |    10.2916  |     -35500.00 |    -0.002634 |  -0.001690 |     10.0 | Steel
       372282.0 |   0.00923123 |     9.8175  |    10.1831  |      35500.00 |     0.003375 |  -0.001690 |     10.0 | Steel
       372381.7 |   0.00923123 |     9.8169  |    10.1825  |     -35500.00 |    -0.003375 |   0.001690 |     10.0 | Steel
       384814.0 |   0.01500000 |    10.0000  |    10.0000  |          0.00 |     0.000000 |  -0.150000 |      0.0 | Steel
       400000.0 |   0.00000000 |   Infinity  |   Infinity  |     -40000.00 |    -0.300000 |  -0.150000 |      0.0 | Steel
       406270.6 |   0.01483095 |     9.7084  |     9.8860  |      35500.00 |     0.002634 |   0.001690 |     10.0 | Steel
----------------------------------------------------------------------------------------------------------------------------------

Attributes

include_negative_curvature

returns if \(M\)-\(N\)-\(\kappa\) under negative bending/curvature is included

include_positive_curvature

returns if \(M\)-\(N\)-\(\kappa\) under positive bending/curvature is included

m_n_curve

M-N-curve (without curvature)

not_successful_reason

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

points

moment-axial-force-curvature points of the curve

sub_cross_sections

cross-section the \(M\)-\(N\)-\(\kappa\)-curve shall be computed

property include_negative_curvature: bool#

returns if \(M\)-\(N\)-\(\kappa\) under negative bending/curvature is included

property include_positive_curvature: bool#

returns if \(M\)-\(N\)-\(\kappa\) under positive bending/curvature is included

property m_n_curve: MNCurve#

M-N-curve (without curvature)

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#

moment-axial-force-curvature points of the curve

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

cross-section the \(M\)-\(N\)-\(\kappa\)-curve shall be computed