Replies: 2 comments 6 replies
-
@afugur - FYI - Note I'm actually working at the moment on a specific implementation of this which relates to the New Zealand code implementation of the mander confined and unconfined concrete models. I get the same warning when doing a moment curvature analysis (right at the start). Not looked into why yet, but I suspect it is possibly due to the brentq algorithm picking a value for the neutral axis that is beyond the failure strain of the concrete or steel possibly? My curve for comparison, not 100% if the curve needs to return to zero or horizontal (was going to ask this question @robbievanleeuwen ?) as noted in the Eurocode curve a small horizontal return at both ends of the min/max strain regions had been added. (NZ implementation caps the max compressive strain at 0.004 which is why it does not return to spalling strain like your curve. Note I tried your code @afugur and something must have changed in later versions of |
Beta Was this translation helpful? Give feedback.
-
@Agent6-6-6 firstly thanks for your answer. I use the v0.21 of concrete properties because of that I haven't removed the alpha squash. I agreed with this "Not looked into why yet, but I suspect it is possibly due to the brentq algorithm picking a value for the neutral axis that is beyond the failure strain of the concrete or steel possibly?" Maybe this depends on split_section_at_strains function. def split_section_at_strains(
concrete_geometries: List[Geometry],
theta: float,
point_na: Tuple[float],
ultimate: bool,
ultimate_strain: float = None,
d_n: float = None,
kappa: float = None,
) -> List[Geometry]:
r"""Splits concrete geometries at discontinuities in its stress-strain profile.
:param concrete_geometries: List of concrete geometries
:type concrete_geometries: List[Geometry]
:param float theta: Angle (in radians) the neutral axis makes with the horizontal
axis (:math:`-\pi \leq \theta \leq \pi`)
:param point_na: Point on the neutral axis
:type point_na: Tuple[float]
:param bool ultimate: If set to True, uses ultimate stress-strain profile
:param float ultimate_strain: Concrete strain at failure
:param float d_n: Depth of the neutral axis from the extreme compression fibre
:param float kappa: Curvature
:return: List of split geometries
:rtype: List[:class:`sectionproperties.pre.geometry.Geometry`]
"""
# create splits in concrete geometries at points in stress-strain profiles
concrete_split_geoms = []
for conc_geom in concrete_geometries:
if ultimate:
strains = (
conc_geom.material.ultimate_stress_strain_profile.get_unique_strains()
)
else:
strains = conc_geom.material.stress_strain_profile.get_unique_strains()
# loop through intermediate points on stress-strain profile
for idx, strain in enumerate(strains[1:-1]):
# depth to point with `strain` from NA
if ultimate:
d = strain / ultimate_strain * d_n
else:
d = strain / kappa
# convert depth to global coordinates
dx, dy = global_coordinate(phi=theta * 180 / np.pi, x11=0, y22=d)
# calculate location of point with `strain`
pt = point_na[0] + dx, point_na[1] + dy
# split concrete geometry (from bottom up)
top_geoms, bot_geoms = split_section(
geometry=conc_geom,
point=pt,
theta=theta,
)
# save bottom geoms
concrete_split_geoms.extend(bot_geoms)
# continue to split top geoms
conc_geom = CompoundGeometry(geoms=top_geoms)
# save final top geoms
concrete_split_geoms.extend(top_geoms)
return concrete_split_geoms |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Hello mr.@robbievanleeuwen,
I want to add Unconfined-Mander concrete model reference from Turkey Building Earthquake Code-2018. I tried to make this like EurocodeNonLinear class which it is in Concreteproperties library. Also I want this concrete model tension strength is zero. If I make this I take this error --> "brentq algorithm failed."
Is it possible to add this model in Concrete Properties ?
My Stress-Strain Profile Code:
Stress-strain profile graph is like this.

scipy version ==> 1.6.2
Beta Was this translation helpful? Give feedback.
All reactions