m_n_kappa.points.MNByStrain#

class m_n_kappa.points.MNByStrain(cross_section, applied_axial_force, maximum_iterations=20, axial_force_tolerance=5.0, solver=<class 'm_n_kappa.solver.Newton'>, is_called_by_user=True)#

Bases: Point

computation of uniform strain leading to given axial-force

New in version 0.2.0.

Parameters:
  • cross_section (Crosssection) – cross-section to compute

  • applied_axial_force (float) – applied axial force (Default: 0.0)

  • maximum_iterations (int) – maximum allowed iterations (Default: 10). In case the given number of iterations before axial force within desired tolerance, the computation is classified as not successful and will be stopped

  • axial_force_tolerance (float) – if axial force within this tolerance the computation is terminated and classified as successful (Default: 5.0)

  • solver (Solver) – used solver (Default: Newton)

  • is_called_by_user (bool) – indicates if the class is initialized by a user (True, Default) or by another class (False)

See also

MKappaByStrainPosition

computation of one Moment-Curvature-Point by fixed stress-strain_value-point and varying the neutral axis

MKappaByConstantCurvature

computation of one Moment-Curvature-Point by fixed curvature and varying the neutral axis

Examples

MNByStrain takes a Crosssection and an applied_axial_force as argument. The Crosssection may be a rectangular steel profile for example.

>>> from m_n_kappa import Steel, Rectangle, Crosssection
>>> steel = Steel(f_y=100, failure_strain=0.15)
>>> rectangle = Rectangle(top_edge=0.0, bottom_edge=10.0, width=10.0)
>>> section = steel + rectangle
>>> cross_section = Crosssection([section])

As indicated MNByStrain is then easily envoked by passing cross_section and an axial force as argument.

>>> from m_n_kappa.points import MNByStrain
>>> m_n = MNByStrain(cross_section=cross_section, applied_axial_force=100)

strain returns then the strain corresponding to the applied_axial_force.

>>> round(m_n.strain, 5)
0.04762

In case the applied axial force exceeds the maximum axial-force of the section a None-value is returned.

>>> m_n_none = MNByStrain(cross_section=cross_section, applied_axial_force=rectangle.area * 100 + 10)
>>> m_n_none.strain
None

Methods

axial_force_equilibrium()

latest computed axial-force-value

Attributes

applied_axial_force

axial-force the strain is to be computed

axial_force

latest computed axial-force-value

axial_force_tolerance

tolerance the axial_force_equilibrium() must be within for a successful computation

computations

conducted computations

computed_cross_section

computed cross_section of the current iteration

cross_section

cross-section to be computed

iteration

number of iteration

maximum_iterations

maximum iterations

moment

computed moment of the cross_section

not_successful_reason

In case computation was not successful gives a reason

solver

used solver to computed equilibrium

strain

currently computed strain-value

successful

indicates if strain has been computed successfully

variable

name variable that is changed to reach equilibrium of axial force

axial_force_equilibrium()#

latest computed axial-force-value

Return type:

float

property applied_axial_force: float#

axial-force the strain is to be computed

property axial_force: float#

latest computed axial-force-value

property axial_force_tolerance: float#

tolerance the axial_force_equilibrium() must be within for a successful computation

property computations: list[m_n_kappa.points.Computation]#

conducted computations

property computed_cross_section: m_n_kappa.crosssection.ComputationCrosssectionStrain | m_n_kappa.crosssection.ComputationCrosssectionCurvature#

computed cross_section of the current iteration

property cross_section: Crosssection#

cross-section to be computed

property iteration: int#

number of iteration

property maximum_iterations: int#

maximum iterations

property moment: float#

computed moment of the cross_section

property not_successful_reason: NotSuccessfulReason#

In case computation was not successful gives a reason

property solver: Solver#

used solver to computed equilibrium

property strain: float#

currently computed strain-value

property successful: bool#

indicates if strain has been computed successfully

property variable: str#

name variable that is changed to reach equilibrium of axial force