m_n_kappa.section.ComputationSectionCurvature#

class m_n_kappa.section.ComputationSectionCurvature(section, curvature, neutral_axis)#

Bases: ComputationSection

compute section given a curvature and a neutral axis

New in version 0.1.0.

Parameters:
  • section (Section) – section to compute

  • curvature (float) – curvature to apply to the section \(\kappa\)

  • neutral_axis (float) – point where the strain_value is zero \(z_\mathrm{n}\)

See also

ComputationSectionStrain

ComputationSection to compute values under constant strain

Sections

check out for a more detailed explanation.

Notes

For the basic computation refer to ComputationSection.

The overall procedure is:

  1. Determine the strains at the edges from the given strain-distribution. The strain-distribution is computed by the curvature and the neutral axis

  2. Compute the stresses at the edges passing the strains to the material-model

  3. Determine the stress-distribution (slope and interception)

  4. Compute the axial-force by combining the stress-distribution with the crosssectional area of the section

Lever-arm and moment may be computed in succession, if needed.

Examples

A Section is defined as follows.

>>> from m_n_kappa import Rectangle, Steel
>>> steel = Steel(f_y=355)
>>> rectangle = Rectangle(top_edge=0.0, bottom_edge=10, width=10)
>>> section = steel + rectangle

The computation for a given curvature and a given neutral-axis started by invoking ComputationSectionCurvature

>>> from m_n_kappa.section import ComputationSectionCurvature
>>> computed_section = ComputationSectionCurvature(section, curvature=0.0001, neutral_axis=10.0)

The computed axial-force \(N_i\) is given as follows:

>>> computed_section.axial_force
-10500.0

The lever-arm \(r_i\) is computed as follows:

>>> computed_section.lever_arm()
3.3333333333333335

And the moment \(M_i\) is given as follows

>>> computed_section.moment()
-35000.0

Methods

lever_arm()

lever-arm of the section under the given strain-distribution \(r_i\)

material_points_inside_curvature()

compute those material-points that are between the given strains from the given curvature and zero strain.

material_strains()

strains of the associated material-model

maximum_negative_strain()

maximum negative strain from associated material-model

maximum_negative_strain_position()

maximum negative strain from associated material-model

maximum_positive_strain()

maximum positive strain from associated material-model

maximum_positive_strain_position()

maximum positive strain from associated material-model

moment()

moment under the given strain distribution

section_strains()

strains of the associated material-model

split_section([effective_widths])

split sections considering the material points and the maximum effective widths

strain_positions([strain_1, strain_2, ...])

collect all strain-positions between strain_1 and strain_2 (if given)

Attributes

axial_force

axial-force of the section in case of the given strain-distribution \(N_i\)

bottom_edge_maximum_strain

StrainPosition with maximum strain on bottom edge of section

bottom_edge_minimum_strain

StrainPosition with minimum strain on bottom edge of section

curvature

input-curvature \(\kappa\)

edges_strain

strains at the edges (bottom and top) of the section, computed from the strain distribution

edges_stress

stresses at the edges (bottom and top) of the section

edges_stress_difference

difference of stresses between the given edges

geometry

geometry of the section

material

material of the section

neutral_axis

input neutral axis \(z_\mathrm{n}\)

section

basic Section

section_type

stress_interception

interception-value of the linear stress-distribution of the section

stress_slope

linear slope of the stresses over the vertical direction of the section

top_edge_maximum_strain

StrainPosition with maximum strain on top edge of section

top_edge_minimum_strain

StrainPosition with minimum strain on top edge of section

lever_arm()#

lever-arm of the section under the given strain-distribution \(r_i\)

Returns:

lever-arm of the section under a given strain-distribution

Return type:

float

See also

Lever arm

More descriptive explanation of the computation

Notes

In case of a Rectangle or a Trapezoid the lever-arm is computed as follows.

(1)#\[r_i = \frac{1}{N_i} \int_{z_\mathrm{top}}^{z_\mathrm{bottom}} \sigma(z) \cdot b(z) \cdot z~dz\]

In case of a Circle the lever-arm applies as the centroid of the circle. It is assumed that only reinforcement-bars are modelled as circles and therefore small in comparison to the rest of the cross-section.

material_points_inside_curvature()#

compute those material-points that are between the given strains from the given curvature and zero strain.

Return type:

list[StrainPosition]

material_strains()#

strains of the associated material-model

Return type:

list[float]

maximum_negative_strain()#

maximum negative strain from associated material-model

Return type:

float

maximum_negative_strain_position()#

maximum negative strain from associated material-model

New in version 0.2.0.

Return type:

StrainPosition

maximum_positive_strain()#

maximum positive strain from associated material-model

Return type:

float

maximum_positive_strain_position()#

maximum positive strain from associated material-model

New in version 0.2.0.

Return type:

StrainPosition

moment()#

moment under the given strain distribution

See also

Moment

More descriptive explanation of the computation

Returns:

moment under the given strain distribution

Return type:

float

section_strains()#

strains of the associated material-model

Return type:

list[dict]

split_section(effective_widths=None)#

split sections considering the material points and the maximum effective widths

Parameters:

effective_widths (EffectiveWidths) – effective widths applied to the split section

Returns:

the split sections

Return type:

list[ComputationSection]

strain_positions(strain_1=None, strain_2=None, include_strains=False)#

collect all strain-positions between strain_1 and strain_2 (if given)

New in version 0.2.0.

Parameters:
  • strain_1 (float) – first strain border (Default: None)

  • strain_2 (float) – second strain border (Default: None)

  • include_strains (bool) – includes the boundary strain values (Default: False)

Returns:

collected :py:class:`~m_n_kappa.StrainPosition

Return type:

list[StrainPosition]

property axial_force: float#

axial-force of the section in case of the given strain-distribution \(N_i\)

See also

Axial force

More descriptive explanation of the computation

property bottom_edge_maximum_strain: StrainPosition#

StrainPosition with maximum strain on bottom edge of section

property bottom_edge_minimum_strain: StrainPosition#

StrainPosition with minimum strain on bottom edge of section

property curvature: float#

input-curvature \(\kappa\)

property edges_strain: list#

strains at the edges (bottom and top) of the section, computed from the strain distribution

property edges_stress: list#

stresses at the edges (bottom and top) of the section

property edges_stress_difference: float#

difference of stresses between the given edges

property geometry#

geometry of the section

property material#

material of the section

property neutral_axis: float#

input neutral axis \(z_\mathrm{n}\)

property section: Section#

basic Section

property stress_interception: float#

interception-value of the linear stress-distribution of the section

property stress_slope: float#

linear slope of the stresses over the vertical direction of the section

property top_edge_maximum_strain: StrainPosition#

StrainPosition with maximum strain on top edge of section

property top_edge_minimum_strain: StrainPosition#

StrainPosition with minimum strain on top edge of section