Conversation
- add base abstract class of constitutive law objected - add some class implementation for some common constitutive laws (elastic, elastic-plastic, parabola rectangle) TODO in next commits: - add hardening part in elastic-plastic - vectorize the getStress and getTangent functions?
Added some constitutive laws for sectional analysis of RC sections. For now added: - Elastic - Elastic-Perfectly-Plastic - Elastic-Plastic with hardening - Parabola Rectangle - User defined by points (possible to give the positive and/or negative envelope)
1. Changed typing to ArrayLike in functions get_stress 2. Started adding tests
Fix format on first test for passing black
- Included tangents for ParabolaRectangle - Implemented get_secant in base class - NotImplementError when asking tangent to UserDefined. We could implement here a numerical tangent if we need it...
work in progress
The draft is still in progress and not working. - worked on base and generic structure - Still to update to that structure the rectangular section (next commit)
included a first proposal for generic section definition
1. Included a base Geometry with naming useful for filtering later on (name by default incremental with global counter) 2. Included a PointGeometry 3. Added split between two lines to the SurfaceGeometry TODO: a. implement split method for compuund b. implement __add__ for geometry for creating a compound c. implementing add_reinforcement methods to add a single rebar (for now) to the section Created some example usecase on test_generic.ipynb (to be removed later on)
An exception was raised when low values of eps_su was set for reinforcement. This was due to function _prefind_range_curvature_equilibrium that had unexpected behavior when material failure (due to strains higher than eps_su) occured during iterations. Solved this problem.
- included marin coefficients for elastic-plastic law - bug fixes: in normal CRS the values of Mx or Kx that stretches bottom fibers are *negative*. This solves some problems observed during testing. - feature: if no eps_su is specified for elastic plastic material, by default 2*fy/Es is adopted
when using steel cross section moment curvature was not working because equilibrium was found even before the first iteration. Added a proper check. Optimized slightly computation of moment-curvature avoiding to add 100s of points when eps_su was set to eps_sy.
|
@mortenengen with 9a9d2c7 I included several tests on steel structures with I section. I have a problem: with parametrize if I un-comment more than 2-3 lines for possible testing the make test freezes.. I don't know if this a memory limit for my PC. Any suggestion? |
This was a strange one. There were tests that were either failing or freezing, and it was due to polygons that were joined through unions, but were still disconnected. Taking the union of disconnected geometries produces |
|
In 1d64e13 I added constitutive laws to the |
- added functions __marin__ to elastic and user defined materials - added for elastic and user defined materials the possibility for setting ultimate strain, useful for when computing bending strength of cross section.
- updated docstrings for generic section and reinforcement - addd more tests to cover the new marin coefficients for elastic and userdefined constitutive laws
- Included __add__ method for adding a CompoundGeometry with a Geometry - included related tests.
- added __sub__ method for SurfaceGeometry and CompoundGeometry; - included related tests;
- solved problems with signs in moments evaluation. - solved bug evidenced by @mortenengen in failure of moment curvature with values of N.
This PR contains a first draft on sections level.
The structure given considers the section (for now only the generic section has been implemented) object that contains a combination of geometries (e.g. surfaces, points) and materials (constitutive relation). The section calculator is the object implementing the different computation algorithms. The integrator object is the one necessary for doing the integration of stresses in the section: two integrators have been implemented, Marin (default) and Fibre integration. The results are stored as proper dataclasses.
The implementation relys on shapely package.
Some limited usecase examples are reported.
The output is the following:

Specifying a line and a number of reinforcements (spacing is automatically computed):
Specifying a line and the spacing of bars (number is automatically computed):
The function can be also nested
Also, both spacing and number can be given:
5. Translate and other editing are included