You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This is an attempt to describe the necessary steps for adding functionality for analyzing shell sections. The objective is to implement a ShellSection class with functionality similar to the current GenericSection, but capable of calculating the response of a shell with an arbitrary thickness and material, and with arbitrary reinforcement.
A shell section is subjected to the stress resultants shown in the figure below. As a start we should implement functionality for calculating the response of the moments and membrane forces with respect to the respective strain components relative to the mid-plane, i.e. three in-plane strain components, and three curvature components.
The relations between stresses and stress resultants are given in the equations below, positive stresses are tension, and a positive curvature gives tension on the face of the shell with negative z-coordinate.
$$n_{\textrm{x}} = \int_{-t/2}^{t/2} \sigma_{\textrm{x}} dz$$$$n_{\textrm{y}} = \int_{-t/2}^{t/2} \sigma_{\textrm{y}} dz$$$$n_{\textrm{xy}} = \int_{-t/2}^{t/2} \tau_{\textrm{xy}} dz$$$$m_{\textrm{x}} = -\int_{-t/2}^{t/2} \sigma_{\textrm{x}} z dz$$$$m_{\textrm{y}} = -\int_{-t/2}^{t/2} \sigma_{\textrm{y}} z dz$$$$m_{\textrm{xy}} = -\int_{-t/2}^{t/2} \tau_{\textrm{xy}} z dz$$
The integration of stresses to stress resultants should be performed by dividing the section into n layers, or fibers through the thickness, where each layers is assumed to be in a state of plane stress.
Comparison between GenericSection and ShellSection
The overview below compares the current GenericSection and the proposed ShellSection and outlines tasks that should be completed.
Beam section
Material
Concrete:
Uniaxial stress-strain diagram
Reinforcement:
Uniaxial stress-strain diagram.
Gross geometry
Surface represented as an arbitrary polygon. Wrappers for creating rectangle and circle.
Points to a material. Today, we point to a constitutive law. This will be updated.
Leverages _repr_svg_ for visualizing the geometry.
Reinforcement
Point
Points to a material. Today, we point to a constitutive law. This will be updated.
Reinforcement is added to a geometry to create a CompoundGeometry using the following functions: add_reinforcement add_reinforcement_line add_reinforcement_circle
Section
GenericSection should be considered renamed to GenericBeamSection.
SectionCalculator
GenericSectionCalculator should be considered renamed to GenericBeamSectionCalculator.
With the new ShellSectionCalculator, the abstract methods calculate_bending_strength and calculate_moment_curvature on the base class SectionCalculator are no longer well defined. These should be removed.
Integrator
We should consider renaming the IntegratorFactory and all related to e.g. BeamIntegratorFactory.
Shell section
Material
Concrete
Uniaxial stress-strain diagram. As before. However, we should probably implement a .get_stress_2d method that accepts strains from a state of plane stress, and returns the corresponding stresses.
Reduction of compressive strength due to transverse tension.
Increase of compressive strength due to transverse compression.
Reinforcement
Uniaxial stress-strain diagram. As before.
Gross geometry
A shell represented by it’s thickness, e.g.: ShellGeometry(thickness=450, material=concrete)
It should inherit from Geometry.
Points to a material.
It should have an attribute, e.g. .reinforcement, which could be a list of reinforcement objects.
Could implement a _repr_svg_ which visualizes the reinforcement in the plane.
Reinforcement
A custom ShellReinforcement object with at least the following attributes:
The position over the thickness.
The number of bars in a bundle.
The center distance between bar bundles.
The bar diameter.
The material.
The orientation in the plane.
Could be added to a shell geometry with for example a function add_shell_reinforcement. This function could act as a factory function which takes the required arguments for creating a ShellReinforcement object, create it, and store it in the .reinforcement attribute of the ShellGeometry object.
Section
ShellSection which stores a ShellGeometry and initializes and stores a ShellSectionCalculator. Inherits from Section.
SectionCalculator
ShellSectionCalculator which sets attributes for an integrator and creates a ShellIntegrator. Inherits from SectionCalculator. Should have the following methods as a start:
Description
This is an attempt to describe the necessary steps for adding functionality for analyzing shell sections. The objective is to implement a
ShellSectionclass with functionality similar to the currentGenericSection, but capable of calculating the response of a shell with an arbitrary thickness and material, and with arbitrary reinforcement.A shell section is subjected to the stress resultants shown in the figure below. As a start we should implement functionality for calculating the response of the moments and membrane forces with respect to the respective strain components relative to the mid-plane, i.e. three in-plane strain components, and three curvature components.
The relations between stresses and stress resultants are given in the equations below, positive stresses are tension, and a positive curvature gives tension on the face of the shell with negative z-coordinate.
The integration of stresses to stress resultants should be performed by dividing the section into n layers, or fibers through the thickness, where each layers is assumed to be in a state of plane stress.
Comparison between
GenericSectionandShellSectionThe overview below compares the current
GenericSectionand the proposedShellSectionand outlines tasks that should be completed.Beam section
Material
Concrete:
Reinforcement:
Gross geometry
_repr_svg_for visualizing the geometry.Reinforcement
PointCompoundGeometryusing the following functions:add_reinforcementadd_reinforcement_lineadd_reinforcement_circleSection
GenericSectionshould be considered renamed toGenericBeamSection.SectionCalculator
GenericSectionCalculatorshould be considered renamed toGenericBeamSectionCalculator.ShellSectionCalculator, the abstract methodscalculate_bending_strengthandcalculate_moment_curvatureon the base classSectionCalculatorare no longer well defined. These should be removed.Integrator
BeamIntegratorFactory.Shell section
Material
Concrete
.get_stress_2dmethod that accepts strains from a state of plane stress, and returns the corresponding stresses.Reinforcement
Gross geometry
ShellGeometry(thickness=450, material=concrete)Geometry..reinforcement, which could be a list of reinforcement objects._repr_svg_which visualizes the reinforcement in the plane.Reinforcement
ShellReinforcementobject with at least the following attributes:add_shell_reinforcement. This function could act as a factory function which takes the required arguments for creating aShellReinforcementobject, create it, and store it in the.reinforcementattribute of theShellGeometryobject.Section
ShellSectionwhich stores aShellGeometryand initializes and stores aShellSectionCalculator. Inherits fromSection.SectionCalculator
ShellIntegrator. Inherits fromSectionCalculator. Should have the following methods as a start:.integrate_strain_profile(strain: ArrayLike, integrate: t.Literal[’stress’, ‘modulus’] = ‘stress’) → t.Union[t.Tuple[float, float, float], NDArray].calculate_strain_profile(nx, ny, nxy, mx, my, mxy) → t.List[float]Integrator
ShellFiberIntegratorwith concrete implementations of the three abstract methods defined onSectionIntegrator.