robbievanleeuwen / concrete-properties

Calculate section properties for reinforced concrete sections.
https://concrete-properties.rtfd.io
MIT License
152 stars 46 forks source link

Further refinement of moment interaction n_points, n_spacing when max_comp truncates M/N diagram? #70

Open Agent6-6-6 opened 1 year ago

Agent6-6-6 commented 1 year ago

@robbievanleeuwen, I've noted one peculiarity with the way the improvements to M/N curves have been implemented as merged in #66.

When dealing with a max_comp scenario or a proportionally lower upper limit, then when using n_points or n_spacing it puts in the evenly spaced points not between the limits being lower value of upper limit or max_comp, but over the entire default range and the unused points are truncated at max_comp. i.e. it just culls some of the points, rather than spacing the defined points between the refined limits if they were lower or higher once max_comp truncates the axial loads to consider for example.

This leads to some issues when plotting the results with a loss of fidelity in the curves due to a significantly reduced number of axial and moment points being returned.

So if you're using a relatively low max_comp, say for wall design where limits are much lower (in NZ for example singularly reinforced walls it can be as low as 0.015Agfc), then you only get a fraction of the points specified because of the significantly reduced axial load range, and potentially a very jagged plot as a result.

For example, this plot has low max_comp, but with default n_points = 24, because of the reduced range due to the upper limit only 6 intermediate points are plotted in addition to any defined control points, the others were truncated.

image

Resolution I think it would potentially be as easy as distributing the points between the refined limits that will be returned from the method, rather than spacing them between the larger original range of axial load points. So if max_comp is lower than the axial load corresponding to the upper limit, redefine the upper limit as max_comp. Then generate the evenly spaced points between the revised limits for the full specified number of points being returned to maintain a "nice curve".

Hopefully, that's all clear and made sense!

Agent6-6-6 commented 1 year ago

@robbievanleeuwen, noted as well just now that the docstring in AS3600.moment_interaction_diagram also needs to be updated as it does not reference the updated limits or control point changes that were made. For example, docstring still references lower limit as being zero curvature tension, but you've redefined it as ("N", 0.0), similarly for the control points reference kappa0, but this is not included any more.

robbievanleeuwen commented 1 year ago

Thanks for this, I think this ties in closely with the third task in #68 so hopefully I can fix this as well!