!pip install concreteproperties
import numpy as np
from concreteproperties.material import Concrete, SteelBar
from concreteproperties.stress_strain_profile import (
ConcreteLinear,
RectangularStressBlock,
SteelElasticPlastic,
)
from sectionproperties.pre.library.concrete_sections import concrete_rectangular_section
from concreteproperties.concrete_section import ConcreteSection
from concreteproperties.results import MomentInteractionResults
import matplotlib.pyplot as plt
concrete = Concrete(
name="25 MPa Concrete",
density=2.4e-6,
stress_strain_profile=ConcreteLinear(elastic_modulus=30.1e3),
ultimate_stress_strain_profile=RectangularStressBlock(
compressive_strength=25,
alpha=0.85, #0.85
gamma=0.80, #beta
ultimate_strain=0.0033,
),
flexural_tensile_strength=3.4,
colour="lightgrey",
)
steel = SteelBar(
name="400 MPa Steel",
density=7.85e-6,
stress_strain_profile=SteelElasticPlastic(
yield_strength=400,
elastic_modulus=200e3,
fracture_strain=0.05,
),
colour="grey",
)
geom = concrete_rectangular_section(
b=400,
d=600,
dia_top=20,
n_top=3,
dia_bot=24,
n_bot=3,
n_circle=4,
c_top=30, #cover
c_bot=30, #cover
area_top=310, #철근1개당 공칭단면적
area_bot=450, #철근1개당 공칭단면적
conc_mat=concrete,
steel_mat=steel,
)
conc_sec = ConcreteSection(geom)
conc_sec.plot_section()
gross_props = conc_sec.get_gross_properties()
gross_props.print_results()
mi_res = conc_sec.moment_interaction_diagram(progress_bar=False)
mi_res.plot_diagram()
# design load cases
n_stars = [3000e3]
m_stars = [300e6]
marker_styles = ["x"]
# plot moment interaction diagram
ax = mi_res.plot_diagram(fmt="k-", render=False)
ax.plot(m_stars[0], n_stars[0], marker_styles[0], markersize=10,)
plt.show()
mi_res = conc_sec.moment_interaction_diagram(theta=np.pi / 2, progress_bar=False)
mi_res.plot_diagram(moment="m_y")
from sectionproperties.pre.library.primitive_sections import rectangular_section
from concreteproperties.pre import add_bar_rectangular_array
from concreteproperties.results import BiaxialBendingResults
col = rectangular_section(d=350, b=600, material=concrete)
# add bars to column
geom = add_bar_rectangular_array(
geometry=col,
area=450,
material=steel,
n_x=6,
x_s=492 / 5,
n_y=3,
y_s=121,
anchor=(54, 54),
exterior_only=True,
)
conc_sec = ConcreteSection(geom)
conc_sec.plot_section()
mi_x = conc_sec.moment_interaction_diagram(progress_bar=False)
mi_y = conc_sec.moment_interaction_diagram(theta=np.pi / 2, progress_bar=False)
mi_x.plot_diagram()
mi_y.plot_diagram(moment="m_y")
bb_res = conc_sec.biaxial_bending_diagram(n=1000e3, progress_bar=False)
bb_res.plot_diagram()
n_list = np.linspace(0, 6000e3, 10)
biaxial_results = []
for n in n_list:
biaxial_results.append(conc_sec.biaxial_bending_diagram(n=n, progress_bar=False))
BiaxialBendingResults.plot_multiple_diagrams_3d(biaxial_results)