section-properties
section-properties copied to clipboard
Feature timber sections
Feature Timber Sections
Discussion: #437
This is a start at adding timber cross-section analysis. Please let me know what you think of the approach to add timber sections. So far I have added geometry creation of layered timber sections. I have added tests for the code that I have written so far.
Moving forward I will be checking and validating the results from the cross-sectional properties calculated for the sections as well as the stress analysis modules.
- [X] Added tests for changed code.
- [x] Updated documentation for changed code.
- [ ] Run the Nox test suite to check for errors and warnings.
Looks promising! I think this would be a worthy addition to sectionproperties.
I've also included @connorferster as a reviewer as I believe he has more timber expertise than myself!
Looking forward to reviewing the complete PR!
FYI - the docs for this PR can be found here.
I think it looks good! @jchkoch Glad you dropped the timber rectangular section in favour of the CLT section. Setting the shear modulus of the cross-lams via the elastic_modulus and poissons_ratio is the way to do it but it sure feels weird to see it (just a general comment, not a reason to change anything).
If we can get the tests passing, then I am good to go on this one.
Edit: Just added a couple of comments.
@connorferster Thanks for the comments. Unfortunately, I became somewhat busy and haven't managed to follow up. However, I should have a bit more time going forward.
Thanks for checking in @jchkoch. If you don't mind I can update your feature branch to the current state of sectionproperties, in which the CI/CD has changed a little bit since this PR was opened (not sure if you can see the "Update branch" button below- happy for you to click this if you can see it!)
Hi @robbievanleeuwen, I have updated the pull request as discussed above to address @connorferster comments as well as merging the commits from the main branch into my feature branch. I have also updated the docs with the new function clt_rectangular_section under section.rst. The docs seem to be able to build properly.
However, when validating the results of a geometric analysis (in the example jupyter notebook section_library.ipynb) of a CLT section the moment of inertia of the minor axis (Iyy) seems to not be correct. The major axis is correct. I have not been able to find the error so far. Will try again in the next few days.
Computed:
eixx, eiyy, _ = sec.get_eic(e_ref=timber0)
print(f"I_eff,x = {eixx:.3e} mm4")
print(f"I_eff,y = {eiyy:.3e} mm4")
I_eff,x = 1.388e+08 mm4 I_eff,y = 6.778e+09 mm4
Validation values: I_eff,x = 1.39e+08 mm4 I_eff,y = 5.33e+06 mm4
Hi @jchkoch, thanks again for your hard work on this. I should have some time at the end of this week to review. Did you manage to get to the bottom of the validation issues? If not I can try figure it out as well :)
I have not been able to figure out the validation issue up to now. I thought I would leave it and come back to it. I may also have a bit more time in the next few days to look at it again.
Hi @jchkoch, regarding the validation issues you were having, here is my working:
x-axis bending
Timber0 Contribution
E.Ix_0 = E_0 * (b * d^3 / 12 + b * d * y^2) where y is the distance between the centroid of timber0 to the centroid of the composite section.
i.e. E.Ix_0 = 9.5e3 * (1000 * 40^3 / 12 + 1000 * 40 * 40^2) = 658.7e9 mm^6
Timber90 Contribution
E.Ix_90 = E_90 * b * d^3 / 12
i.e. E.Ix_90 = 317 * 1000 * 40^3 / 12 = 1.691e9 mm^6
I_eff,x
The effective second moment of area with respect to the modulus for Timber0 can be calculated as follows:
I_eff,x = (1 / E_0) * (2 * E.Ix_0 + E.Ix_90) = (1 / 9.5e3) * (2 * 658.7e9 + 1.691e9) = 138.8e6 mm^4
This matches the output from sectionproperties.
y-axis bending
Timber0 Contribution
E.Iy_0 = E_0 * d * b^3 / 12
i.e. E.Iy_0 = 9.5e3 * 40 * 1000^3 / 12 = 31.67e12 mm^6
Timber90 Contribution
E.Iy_90 = E_90 * d * b^3 / 12
i.e. E.Iy_90 = 317 * 40 * 1000^3 / 12 = 1.057e12 mm^6
I_eff,y
The effective second moment of area with respect to the modulus for Timber0 can be calculated as follows:
I_eff,y = (1 / E_0) * (2 * E.Iy_0 + E.Iy_90) = (1 / 9.5e3) * (2 * 31.67e12 + 1.057e12) = 6.779e9 mm^4
This matches the output from sectionproperties.
Maybe double check your working for the y-axis bending, by inspection it should be stiffer than x-axis bending due to the greater depth in the y-direction. Maybe your validation example is for bending where you have the timber90 at the top and bottom and timber0 in the centre (i.e. bending for the section looking side on)? If this is the case you'd need to make a new geometry object with the materials arranged accordingly.
Hi @robbievanleeuwen, validation seems to work. I think I managed to confuse myself with regard to the coordinate system used by section-properties. I was indeed trying to validate the second case for bending where you have the timber90 at the top and bottom and timber0 in the center. From a practical point of view for 2-way CLT design, the so-called major and minor plate bending directions are particularly interesting. Making a new geometry object works!
Major (x-) axis bending (Timber0 at the top and bottom)
I_eff,x = 138.8e6 mm^4
Matches output from section-properties
Minor (z-) axis bending (Timber90 at the top and bottom)
I_eff,y = 9.960e6 mm^4
Matches output from section-properties
Thanks for your hard work on this @jchkoch, looks great!