Source code for concreteproperties.design_codes.design_code
from __future__ import annotations
from typing import TYPE_CHECKING
import concreteproperties.results as res
from concreteproperties.material import Concrete, SteelBar
if TYPE_CHECKING:
    from concreteproperties.concrete_section import ConcreteSection
[docs]class DesignCode:
    """Abstract class for a design code object."""
    def __init__(
        self,
    ):
        """Inits the DesignCode class."""
        pass
[docs]    def assign_concrete_section(
        self,
        concrete_section: ConcreteSection,
    ):
        """Assigns a concrete section to the design code.
        :param concrete_section: Concrete section object to analyse
        """
        self.concrete_section = concrete_section 
[docs]    def create_concrete_material(
        self,
        compressive_strength: float,
        colour: str = "lightgrey",
    ) -> Concrete:
        """Returns a concrete material object.
        List assumptions of material properties here...
        :param compressive_strength: Concrete compressive strength
        :param colour: Colour of the concrete for rendering
        :return: Concrete material object
        """
        raise NotImplementedError 
[docs]    def create_steel_material(
        self,
        yield_strength: float,
        colour: str = "grey",
    ) -> SteelBar:
        """Returns a steel bar material object.
        List assumptions of material properties here...
        :param yield_strength: Steel yield strength
        :param colour: Colour of the steel for rendering
        :return: Steel material object
        """
        raise NotImplementedError 
[docs]    def get_gross_properties(
        self,
        **kwargs,
    ) -> res.GrossProperties:
        """Returns the gross section properties of the reinforced concrete section.
        :param kwargs: Keyword arguments passed to
            :meth:`~concreteproperties.concrete_section.ConcreteSection.get_gross_properties`
        :return: Concrete properties object
        """
        return self.concrete_section.get_gross_properties(**kwargs) 
[docs]    def calculate_cracked_properties(
        self,
        **kwargs,
    ) -> res.CrackedResults:
        """Calculates cracked section properties.
        :param kwargs: Keyword arguments passed to
            :meth:`~concreteproperties.concrete_section.ConcreteSection.calculate_cracked_properties`
        :return: Cracked results object
        """
        return self.concrete_section.calculate_cracked_properties(**kwargs) 
[docs]    def moment_curvature_analysis(
        self,
        **kwargs,
    ) -> res.MomentCurvatureResults:
        """Performs a moment curvature analysis. No reduction factors are applied to the
        moments.
        :param kwargs: Keyword arguments passed to
            :meth:`~concreteproperties.concrete_section.ConcreteSection.moment_curvature_analysis`
        :return: Moment curvature results object
        """
        return self.concrete_section.moment_curvature_analysis(**kwargs) 
[docs]    def ultimate_bending_capacity(
        self,
        **kwargs,
    ) -> res.UltimateBendingResults:
        """Calculates the ultimate bending capacity.
        :param kwargs: Keyword arguments passed to
            :meth:`~concreteproperties.concrete_section.ConcreteSection.ultimate_bending_capacity`
        :return: Ultimate bending results object
        """
        return self.concrete_section.ultimate_bending_capacity(**kwargs) 
[docs]    def moment_interaction_diagram(
        self,
        **kwargs,
    ) -> res.MomentInteractionResults:
        """Generates a moment interaction diagram.
        :param kwargs: Keyword arguments passed to
            :meth:`~concreteproperties.concrete_section.ConcreteSection.moment_interaction_diagram`
        :return: Moment interaction results object
        """
        return self.concrete_section.moment_interaction_diagram(**kwargs) 
[docs]    def biaxial_bending_diagram(
        self,
        **kwargs,
    ) -> res.BiaxialBendingResults:
        """Generates a biaxial bending diagram.
        :param kwargs: Keyword arguments passed to
            :meth:`~concreteproperties.concrete_section.ConcreteSection.biaxial_bending_diagram`
        :return: Biaxial bending results
        """
        return self.concrete_section.biaxial_bending_diagram(**kwargs) 
[docs]    def calculate_uncracked_stress(
        self,
        **kwargs,
    ) -> res.StressResult:
        """Calculates stresses within the reinforced concrete section assuming an
        uncracked section.
        :param kwargs: Keyword arguments passed to
            :meth:`~concreteproperties.concrete_section.ConcreteSection.calculate_uncracked_stress`
        :return: Stress results object
        """
        return self.concrete_section.calculate_uncracked_stress(**kwargs) 
[docs]    def calculate_cracked_stress(
        self,
        **kwargs,
    ) -> res.StressResult:
        """Calculates stresses within the reinforced concrete section assuming a cracked
        section.
        :param kwargs: Keyword arguments passed to
            :meth:`~concreteproperties.concrete_section.ConcreteSection.calculate_cracked_stress`
        :return: Stress results object
        """
        return self.concrete_section.calculate_cracked_stress(**kwargs) 
[docs]    def calculate_service_stress(
        self,
        **kwargs,
    ) -> res.StressResult:
        """Calculates service stresses within the reinforced concrete section.
        :param kwargs: Keyword arguments passed to
            :meth:`~concreteproperties.concrete_section.ConcreteSection.calculate_service_stress`
        :return: Stress results object
        """
        return self.concrete_section.calculate_service_stress(**kwargs) 
[docs]    def calculate_ultimate_stress(
        self,
        **kwargs,
    ) -> res.StressResult:
        """Calculates ultimate stresses within the reinforced concrete section.
        :param kwargs: Keyword arguments passed to
            :meth:`~concreteproperties.concrete_section.ConcreteSection.calculate_ultimate_stress`
        :return: Stress results object
        """
        return self.concrete_section.calculate_ultimate_stress(**kwargs)