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 computeapplied_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)
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 aCrosssection
and anapplied_axial_force
as argument. TheCrosssection
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 passingcross_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 theapplied_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
latest computed axial-force-value
Attributes
axial-force the strain is to be computed
latest computed axial-force-value
tolerance the
axial_force_equilibrium()
must be within for a successful computationconducted computations
computed cross_section of the current iteration
cross-section to be computed
number of iteration
maximum iterations
computed moment of the cross_section
In case computation was not successful gives a reason
used solver to computed equilibrium
currently computed strain-value
indicates if strain has been computed successfully
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 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