m_n_kappa.Crosssection#

class m_n_kappa.Crosssection(sections=None, slab_effective_widths=None)#

Bases: object

Combines a number of sections

New in version 0.1.0.

Parameters:
  • sections (list[Section]) – sections the cross-section consists of

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

Examples

There are several ways you can create a cross-section. Basis are either a number of Section.

>>> 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.0)
>>> steel_geometry = Rectangle(
...     top_edge=10.0, bottom_edge=20.0, width=10.0)
>>> steel_section = steel + steel_geometry

The above create Section may be combined to a cross-section like:

>>> cross_section_top = steel_section + concrete_section_1
>>> cross_section_top
Crosssection(sections=sections)

Or alternatively like:

>>> from m_n_kappa import Crosssection
>>> sections_list = [steel_section, concrete_section_1]
>>> cross_section_bottom = Crosssection(sections=sections_list)
>>> cross_section_bottom
Crosssection(sections=sections)

This is also the only way nn case an EffectiveWidths is to be applied.

>>> from m_n_kappa import EffectiveWidths
>>> widths = EffectiveWidths(membran=2.0, bending=3.0)
>>> cross_section_3 = Crosssection(
...     sections=sections_list, slab_effective_widths=widths)
>>> cross_section_3.slab_effective_width.bending
3.0

By using a predifined ComposedGeometry a Crosssection may also be created easily:

>>> from m_n_kappa import IProfile
>>> i_geometry = IProfile(
...     top_edge=0.0, t_w=9.5, h_w=200-15*2 , t_fo=15.0, b_fo=200)
>>> cross_section_4 = i_geometry + steel
>>> cross_section_4
Crosssection(sections=sections)

Another Section may be added also on different ways:

>>> concrete_geometry_2 = Rectangle(
...     top_edge=0.0, bottom_edge=10.0, width=10.0, left_edge=0.0)
>>> concrete_section_2 = concrete + concrete_geometry_2
>>> cross_section_top = cross_section_top + concrete_section_2
>>> len(cross_section_top.sections)
3
>>> cross_section_bottom.add_section(concrete_section_2)
>>> len(cross_section_bottom.sections)
3

Subsequently, the Crosssection is needed for all computations.

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

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