m_n_kappa.crosssection.ComputationCrosssectionCurvature#

class m_n_kappa.crosssection.ComputationCrosssectionCurvature(cross_section, curvature, neutral_axis_value, slab_effective_width=None)#

Bases: ComputationCrosssection

computes a cross-section given a curvature and a neutral axis

New in version 0.1.0.

Parameters:
  • cross_section (Crosssection | list[Section]) – the cross-section

  • curvature (float) – curvature to compute values

  • neutral_axis_value (float) – position_value where strain_value is zero

  • slab_effective_width (EffectiveWidths) – effective widths’ for the slab (concrete and reinforcement)

See also

ComputationCrosssectionStrain

computes a cross-section under a constant strain_value

Examples

For example a HEB 200 steel girder is computed. First it is created as follows.

>>> from m_n_kappa import IProfile, Steel
>>> steel = Steel(f_y=355, failure_strain=0.15)
>>> i_profile = IProfile(
...     top_edge=0.0, t_w=9.5, h_w=200-2*15, b_fo=200.0, t_fo=15.0)
>>> steel_cross_section = i_profile + steel

To compute the girder a curvature-value as well as a neutral_axis_value needs to be passed to ComputationCrosssectionCurvature.

>>> from m_n_kappa.crosssection import ComputationCrosssectionCurvature
>>> computed_cross_section = ComputationCrosssectionCurvature(
...     cross_section=steel_cross_section, curvature=0.0001, neutral_axis_value=100.0)

As the neutral_axis_value is chosen to be in the mid-height of the cross-section, (almost) zero axial-forces are computed.

>>> round(computed_cross_section.total_axial_force(), 7)
0.0

The moment on the other hand is much higher and assuming Newton and Millimeter as input is here computed to Kilo-Newton-Meter.

>>> computed_cross_section.total_moment() * 0.001 * 0.001
221.07004924606247

Methods

add_section(section)

add a Section to this cross-section

concrete_slab_width()

full width of the concrete slab

decisive_maximum_negative_strain_position()

minimum of all maximum negative strains

decisive_maximum_positive_strain_position()

minimum of all maximum positive strains

get_boundary_conditions()

curvature boundary values under positive and negative curvature

get_material_points_inside_curvature()

gives the points included between the curvature and zero strain_value

get_sub_cross_sections()

get cross-section split into slab- and girder-sections (the sub-cross-sections)

girder_sections_axial_force()

summarized axial force of the girder sections

girder_sections_moment()

summarized moment of the girder sections

left_edge()

outer left-edge of the concrete-slab

maximum_negative_strain()

determine maximum positive strain of all sections associated with this cross-section

maximum_positive_strain()

determine maximum positive strain of all sections associated with this cross-section

right_edge()

outer right-edge of the concrete-slab

sections_not_of_type(section_type)

get a list of sections that are not of the specified typ

sections_of_type(section_type)

get a list of sections that are of the specified type associated with this cross-section

slab_sections_axial_force()

summarized axial forces of the slab sections

slab_sections_moment()

summarized moments of the slab sections

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

get all StrainPosition-values between strain_1 and strain_2

total_axial_force()

summarized axial forces of the cross_section

total_moment()

summarized moments of the cross_section

Attributes

bottom_edge

overall vertical position of the bottom edge of the cross-section \(z_\mathrm{bottom}\)

compute_sections

Section in sections transformed into ComputationSection

compute_split_sections

sections split at material points

computed_girder_sections

sections of the girder (computed)

computed_slab_sections

sections of the slab (computed)

curvature

applied curvature to the cross_section

girder_sections

Section belonging to te girder

half_point

vertical middle between and bottom

height

height of the cross-section

neutral_axis

position_value where strain_value is zero

section_type

section-type this cross-section is associated with, if it is only one

sections

all sections associated with this cross-section

slab_effective_width

effective widths of the (concrete) slab

slab_sections

all slab-sections of this cross-section

top_edge

top-edge of the cross-section \(z_\mathrm{top}\)

add_section(section)#

add a Section to this cross-section

Parameters:

section (Section) – section to add to this cross-section

Return type:

None

Raises:

ValueError – if section is not of type Section

concrete_slab_width()#

full width of the concrete slab

Return type:

float

decisive_maximum_negative_strain_position()#

minimum of all maximum negative strains

New in version 0.2.0.

Return type:

StrainPosition

decisive_maximum_positive_strain_position()#

minimum of all maximum positive strains

New in version 0.2.0.

Return type:

StrainPosition

get_boundary_conditions()#

curvature boundary values under positive and negative curvature

Returns:

curvature boundary values under positive and negative curvature

Return type:

Boundaries

See also

get_boundaries()

get_material_points_inside_curvature()#

gives the points included between the curvature and zero strain_value

Return type:

list[m_n_kappa.general.StrainPosition]

get_sub_cross_sections()#

get cross-section split into slab- and girder-sections (the sub-cross-sections)

New in version 0.2.0.

Return type:

tuple

girder_sections_axial_force()#

summarized axial force of the girder sections

Return type:

float

girder_sections_moment()#

summarized moment of the girder sections

Return type:

float

left_edge()#

outer left-edge of the concrete-slab

Warning

will fail in case concrete is a trapezoid or a circle

Return type:

float

maximum_negative_strain()#

determine maximum positive strain of all sections associated with this cross-section

Return type:

float

maximum_positive_strain()#

determine maximum positive strain of all sections associated with this cross-section

Return type:

float

right_edge()#

outer right-edge of the concrete-slab

Warning

will fail in case concrete is a trapezoid or a circle

Return type:

float

sections_not_of_type(section_type)#

get a list of sections that are not of the specified typ

Parameters:

section_type (str) –

type of section to search for. Possible section-types are:

  • 'slab' -> concrete slab + reinforcement

  • 'girder' -> Steel girder

Returns:

sections of the specified type associated with this cross-section

Return type:

list[Section]

sections_of_type(section_type)#

get a list of sections that are of the specified type associated with this cross-section

Associated sections are listed in property sections. Therefore, these sections must have been added before to this cross-section.

Parameters:

section_type (str) –

type of section to search for. Possible section-types are:

  • 'slab' -> concrete slab + reinforcement

  • 'girder' -> Steel girder

Returns:

sections of the specified type associated with this cross-section

Return type:

list[Section]

slab_sections_axial_force()#

summarized axial forces of the slab sections

Return type:

float

slab_sections_moment()#

summarized moments of the slab sections

Return type:

float

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

get all StrainPosition-values between strain_1 and strain_2

In case strain_1=None and strain_2=None all possible values will be given.

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

  • strain_2 (float) – second strain-value (Default: None)

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

Returns:

m_n_kappa.StrainPosition’s with strains between the given strains

Return type:

list[m_n_kappa.StrainPosition]

total_axial_force()#

summarized axial forces of the cross_section

Return type:

float

total_moment()#

summarized moments of the cross_section

Return type:

float

property bottom_edge: float#

overall vertical position of the bottom edge of the cross-section \(z_\mathrm{bottom}\)

property compute_sections: list[m_n_kappa.section.ComputationSection]#

Section in sections transformed into ComputationSection

property compute_split_sections: list[m_n_kappa.section.ComputationSectionCurvature]#

sections split at material points

property computed_girder_sections: list#

sections of the girder (computed)

property computed_slab_sections: list#

sections of the slab (computed)

property curvature: float#

applied curvature to the cross_section

property girder_sections: list[m_n_kappa.section.Section]#

Section belonging to te girder

property half_point: float#

vertical middle between and bottom

property height: float#

height of the cross-section

property neutral_axis: float#

position_value where strain_value is zero

property section_type: str#

section-type this cross-section is associated with, if it is only one

property sections: list[m_n_kappa.section.Section]#

all sections associated with this cross-section

property slab_effective_width: EffectiveWidths#

effective widths of the (concrete) slab

property slab_sections: list[m_n_kappa.section.Section]#

all slab-sections of this cross-section

property top_edge: float#

top-edge of the cross-section \(z_\mathrm{top}\)