-
Notifications
You must be signed in to change notification settings - Fork 34
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
docs: Add theory for sections and materials #197
base: dev
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,11 @@ | ||
(theory-ref)= | ||
# Theory reference | ||
|
||
We are working on a description of the theoretical basis for the implementations in the library. Check back regularly for updates. | ||
We are working on a description of the theoretical basis for the implementations in the library. Check back regularly for updates. | ||
|
||
:::{toctree} | ||
|
||
Section <section> | ||
Material <material> | ||
|
||
::: |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
# Material |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,109 @@ | ||
# Section | ||
|
||
## General | ||
|
||
## Coordinate system and sign convention | ||
|
||
Structuralcodes adopts a coordinate system **GRS** with the following conventions: | ||
|
||
- **X-axis**: Points out of the screen (toward the observer). | ||
- **Y-axis**: Points to the right on the screen. | ||
- **Z-axis**: Points upward on the screen. | ||
|
||
Note that this coordinate system is consistent with graphical representations, where Shapely operates in screen coordinates (XY), mapped to **GRS** coordinates as **yz**. | ||
|
||
 | ||
|
||
### Sign conventions | ||
1. **Forces** are negative when in compression. | ||
2. **Moments** follow the right-hand rule: | ||
- **My** (bending about the Y-axis) is positive when top fibers are stretched, and bottom fibers are compressed. | ||
- **Mz** (bending about the Z-axis) is positive when left fibers are stretched, and right fibers are compressed. | ||
3. **Stresses** and **strains** are positive in tension and negative in compression. | ||
4. **Loads** are acting in the origin of the GRS. | ||
|
||
 | ||
|
||
:::{Important} | ||
Pay **particular attention to point 4**: when the section is subjected to axial load, this is considered acting on (0, 0), therefore, respect to the center of gravity of the section, there are some offset moments that are generated. If you want the load to act on the center of the section, translate the geometry in order to have the center in (0, 0) | ||
|
||
 | ||
::: | ||
|
||
## Geometry definition | ||
|
||
Structuralcodes adopts Shapely for creating and managing the geometry. Shapely works in screen **XY** coordinates, which are mapped to **yz** in the **GRS** system. Geometries are essential for defining structural sections and are categorized into the following classes: | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Consider adding a sub-heading H3, e.g. "General notes", before describing that we are using shapely. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Although it is true, I find it a bit hard to explain and understand this way. Perhaps we could instead say e.g. that |
||
|
||
### PointGeometry | ||
Defines individual points in the plane. These typically represents reinforcing bars. A point geometry is represented by its coordinates combined with a material. | ||
|
||
### SurfaceGeometry | ||
Represents simple surface-based geometries such as rectangles, circles or generic polygons, also with holes. A surface geometry is represented as a shapely polygon combined with a material. | ||
|
||
### CompoundGeometry | ||
Combines multiple geometries into a single entity. Allows the creation of complex sections by grouping simpler geometries. A typical use is combining one or more surface geometries | ||
|
||
:::{seealso} | ||
For a description of the API for geometry creation and the different classes involved, refer to the [API documentation](https://fib-international.github.io/structuralcodes/api/index.html#). | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. For the link we should instead use the following code: [API reference](api-geometry-creation) |
||
::: | ||
|
||
**Figure Placeholder**: Example of geometries (SurfaceGeometry, PointGeometry, and CompoundGeometry) and their translations to the GRS coordinate system. | ||
|
||
## Section calculators | ||
Section calculators evaluate the structural response based on section properties and applied loads. They integrate results from the geometry and material models to provide insights into section performance by using a specific *section integrator*. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Consider putting this text under the "General concept" heading. |
||
|
||
### General concept | ||
The section calculator contains the methods that permits to handle a structual analysis for a cross section. For instance it is possible to compute the bending strength given the axial force, or to compute the moment curvatura, or to compute the strength domain. The outputs of those methods are represented as *ad-hoc* defined results objects which contains the data and the methods to further process them. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. For the moment, we are not providing any methods on the result objects. |
||
|
||
:::{Important} | ||
Note that in the current implementation both material constitutive laws and section are *unitless*. It means that user should choose a consistent set of units, like N for forces and mm for lengths; in this way the stresses will be in MPa and the moments in Nmm. | ||
Pay attention that default-defined constitutive laws by material classes work with the units defined by the considered code, e.g. MPa for EC2 or MC2010. | ||
::: | ||
|
||
### Compute bending strength | ||
With this algorithm, *structuralcodes* computes the bending strength of the section given the axial load (positive in tension and negative in compression) and an angle of the neutral axes respect to the y axis. | ||
|
||
 | ||
|
||
In the rotated reference system **y\*z\***, the bending strength in terms of positive $M_y^*$ is computed. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Instead of the inline dollar-math, we should use the math-role like this: ... positive {math}`M_{\textrm{y}^*}` is computed. |
||
|
||
:::{Note} | ||
According to such definition, to compute the bending strength for a section with top fibers in compression and bottom fibers in tension, the angle theta should be inpu equal to *pi*. | ||
|
||
 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Could we do a similar figure for the general case described above, or perhaps just indicate the blue and red zones in the "Bending Strength Rotated" figure above? |
||
::: | ||
|
||
According to classic RC theory, the deformations domains could be represented as following (with domains from 1 to 6 moving respectivelly from pure tension to pure compression): | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Here it would be nice to add a reference to e.g. Leonhardt (?) There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I was really going to add Leonhardt but could find the details of an English translation online so I postponed it. |
||
|
||
 | ||
|
||
The algorithm developed can be summarized as follows: | ||
1. **Rotate the section**: the section is rotated by the given angle theta. In this new CRS (**y\*z\***), the problem becomes uniaxial bending about the **y\*** axis | ||
2. **Axial load check**: verify if axial load is within the admissible range of axial loads (in tension and compression). This ensures the section can withstand the applied aixal load without failure. | ||
3. **Ultimate strain profile**: find a strain profile that reaches the utimate strain for at least one of the materials. The found strain profile must guarantee equilibrium with external axial load. This is computed with an iterative algorithm based on bisection method. | ||
1. The internal axial load, defined by the balanced failure condition (i.e., the simultaneous reaching of ultimate strain in both the stretched and compressed materials), is evaluated by integrating the strain profile. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Consider using a., b., ... for the sub-items. |
||
2. If the internal axial load is greater than the external axial load, the neutral axis needs to be lowered, indicating excessive tension in the section. If the internal axial load is lower, the neutral axis should be raised to reduce compression. | ||
3. The strain profile is then adjusted by changing the curvature, pivoting on either the top or bottom chord. The goal is to balance the axial load and reach a solution that satisfies equilibrium. This is done solving the equation $\Delta N(k_{y^*}) = 0$ where $\Delta N(k_{y^*}) = N_ext - N_int(k_{y^*})$. For instance the function could be something like depicted in the following picture: | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It could be hard to interpret what we mean by "... pivoting on either the top or bottom chord." There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. For the inline math, we can use the same math-role as above. |
||
|
||
 | ||
|
||
Bisection algorithm permits to find the zero of the function in some iterations. | ||
|
||
 | ||
|
||
4. **Final Computation of Bending Strength**: once the equilibrium strain profile is found, the bending strength is calculated. The bending moment is computed using the rotated section's stress-strain relationship, incorporating the material properties and geometry of the section. This results in the final bending strength in the rotated coordinate system, which is then transformed back to the original coordinate system. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Here we are saying that we are using the stress-strain relationship for the rotated section as if it was something new to step 4, but we using this also to integrate the strain response to find the internal axial force. Consider describing this related to the internal axial force as well or instead. |
||
|
||
|
||
|
||
|
||
## Section integrators | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. We could consider describing the section integrators before the section calculator since the calculator uses the integrator (?) |
||
### General concept | ||
Section integrators compute properties such as stiffness, stress distribution, or strain compatibility over a section. They operate on the geometry and material definitions to derive these results. | ||
|
||
### Marin integrator | ||
Handles sections with predefined shapes and material properties, ideal for standard geometries. It applies assumptions about material distribution to simplify calculations. | ||
|
||
### Fiber integrator | ||
Uses a discretized approach where the section is divided into fibers, each representing a material point. This method is highly versatile and suited for nonlinear analyses. | ||
|
||
**Figure Placeholder**: Schematic comparison of Marin integrator and Fiber integrator approaches. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We could consider splitting the content into several pages that are put in a logical order, e.g.: