m_n_kappa.crosssection.CrossSectionBoundaries#

class m_n_kappa.crosssection.CrossSectionBoundaries(sections)#

Bases: Crosssection

Compute the Boundary-Values for the cross_section

New in version 0.1.0.

get_boundaries() gives the curvature boundary values under positive and negative curvature

Parameters:

sections (list[Section]) – sections of the given cross_section

Examples

First the sections for the cross-section are created.

>>> from m_n_kappa import Concrete, Steel, Rectangle
>>> concrete = Concrete(f_cm=35.0)
>>> concrete_geometry_1 = Rectangle(
...     top_edge=0.0, bottom_edge=10.0, width=10.0, left_edge=-10.0)
>>> concrete_section_1 = concrete + concrete_geometry_1
>>> steel = Steel(f_y=355, failure_strain=0.15)
>>> steel_geometry = Rectangle(
...     top_edge=10.0, bottom_edge=20.0, width=10.0)
>>> steel_section = steel + steel_geometry

These sections are passed to CrossSectionBoundaries in form of a list.

>>> from m_n_kappa.crosssection import CrossSectionBoundaries
>>> cross_section_boundaries = CrossSectionBoundaries(sections=[concrete_section_1, steel_section])

get_boundaries gives us then a Boundaries class, where a variety of values are saved regarding the boundaries of our cross-section.

>>> boundaries = cross_section_boundaries.get_boundaries()

The following values are given for positive and negative curvature. In case of values under negative curvature only boundaries.negative plus the desired property is to be called. Hereafter, only examples under positive curvature are given.

The maximum positive curvature is given as follows:

>>> boundaries.positive.maximum_curvature.curvature
0.0076749999999999995

The boundary-condition representing the point of failure is given as follows:

>>> boundaries.positive.maximum_curvature.start
StrainPosition(strain=-0.0035, position=0.0, material='Concrete')

Whereas method compute gives as the maximum curvature assuming another StrainPosition points.

>>> from m_n_kappa import StrainPosition
>>> boundaries.positive.maximum_curvature.compute(StrainPosition(-0.0035, 0, 'Concrete'))
0.0076749999999999995

get_boundaries() implements the above given behaviour and returns the boundary values directly without using CrossSectionBoundaries.

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_boundaries()

curvature boundary values under positive and negative curvature

get_boundary_conditions()

curvature boundary values under positive and negative curvature

get_sub_cross_sections()

get cross-section split into slab- and girder-sections (the sub-cross-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

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

get all StrainPosition-values between strain_1 and strain_2

Attributes

bottom_edge

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

girder_sections

Section belonging to te girder

half_point

vertical middle between and bottom

height

height of the cross-section

maximum_negative_curvature

EdgeStrains reaching the maximum possible negative curvature

maximum_positive_curvature

EdgeStrains reaching the maximum possible positive curvature

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_boundaries()#

curvature boundary values under positive and negative curvature

New in version 0.2.0: neutral_axes to compute the highest and lowest position of the neutral axis under a given curvature

The boundary values are derived from the stress-strain-curves applied to the sections that are associated with the given cross-section

Returns:

curvature boundary values under positive and negative curvature derived from the given material curves

Return type:

Boundaries

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_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

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]

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]

property bottom_edge: float#

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

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 maximum_negative_curvature: EdgeStrains#

EdgeStrains reaching the maximum possible negative curvature

property maximum_positive_curvature: EdgeStrains#

EdgeStrains reaching the maximum possible positive curvature

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}\)