m_n_kappa.MomentAxialForce#

class m_n_kappa.MomentAxialForce(sub_cross_sections, strain=None, axial_force=None)#

Bases: AxialForcePoint

compute moment and axial-force at zero curvature

New in version 0.2.0.

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

  • strain (float) –

  • axial_force (float) –

:param tuple[Crosssection: cross-sections that are computed (must be two) :param Crosssection]: cross-sections that are computed (must be two) :param strain: applied strain to the first cross-section given in cross_sections :type strain: float :param axial_force: axial-force applied to the first cross-section given in sub_cross_sections :type axial_force: float

Raises:
  • ValueError – If not exactly two cross-sections are given in cross_sections:

  • ValueError – If neither strain nor axial_force are given:

Parameters:

See also

MomentAxialForceCurvature

Computes moment and curvature under given axial-force and a StrainPosition point for a cross-section consisting of two sub- cross-sections

Examples

To compute the moment-axial-force you need two (sub)-cross-sections. In the following these are two identical steel rectangles.

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

By initializing MomentAxialForce the moment- axial-force point is computed under the given strain applied uniformly to the first cross-section.

>>> from m_n_kappa import MomentAxialForce
>>> m_n = MomentAxialForce(cross_sections, 0.0001)

The axial-force is easily accessed by axial_force.

>>> m_n.axial_force
2100.0

And the computed moment by is moment.

>>> m_n.moment()
21000.0

The strain-difference between both cross-sections is computed by strain_difference.

>>> round(m_n.strain_difference, 7)
0.0002

Methods

moment()

computed moment, None in case not successful

Attributes

axial_force

axial-force applied to first cross-section

computed_sub_cross_sections

computed sub-cross-sections

curvature

not_successful_reason

if computation was not successful,here the reasons are given

strain

applied strain to the first cross-section

strain_difference

difference between the computed sub-cross-sections

sub_cross_sections

cross-sections that are computed

successful

computed successfully

moment()#

computed moment, None in case not successful

Return type:

float

property axial_force: float#

axial-force applied to first cross-section

property computed_sub_cross_sections: tuple[m_n_kappa.crosssection.ComputationCrosssectionCurvature, m_n_kappa.crosssection.ComputationCrosssectionCurvature] | tuple[m_n_kappa.crosssection.ComputationCrosssectionStrain, m_n_kappa.crosssection.ComputationCrosssectionStrain]#

computed sub-cross-sections

property curvature: float#
property not_successful_reason: NotSuccessfulReason#

if computation was not successful,here the reasons are given

property strain: float#

applied strain to the first cross-section

property strain_difference: float#

difference between the computed sub-cross-sections

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

cross-sections that are computed

property successful: bool#

computed successfully