simdesign 1.2.0__tar.gz → 1.2.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {simdesign-1.2.0 → simdesign-1.2.2}/PKG-INFO +3 -2
- {simdesign-1.2.0 → simdesign-1.2.2}/pyproject.toml +1 -1
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bcim/factory.py +1 -1
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bcim/parametrization.py +17 -9
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bcim/randomization.py +24 -12
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/baselib/building.py +1 -1
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_post18_dch/loads.py +8 -2
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_post18_dcm/loads.py +8 -2
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/__init__.py +2 -2
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/baselib/beam.py +38 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/baselib/column.py +57 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/baselib/constants.py +5 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/cp01/__init__.py +17 -4
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/cp03/__init__.py +5 -4
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp01/__init__.py +17 -8
- simdesign-1.2.2/simdesign/rcmrf/bnsm/dp01/beam.py +162 -0
- simdesign-1.2.2/simdesign/rcmrf/bnsm/dp01/column.py +140 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp02/__init__.py +9 -5
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp02/beam.py +135 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp02/column.py +73 -49
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp03/__init__.py +20 -11
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp03/beam.py +99 -3
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp03/column.py +38 -74
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp04/__init__.py +6 -18
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp05/__init__.py +4 -3
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp05/beam.py +51 -11
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/utils/stats.py +9 -6
- simdesign-1.2.0/simdesign/rcmrf/bnsm/dp01/beam.py +0 -73
- simdesign-1.2.0/simdesign/rcmrf/bnsm/dp01/column.py +0 -68
- {simdesign-1.2.0 → simdesign-1.2.2}/LICENSE +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/docs/README.md +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/__init__.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/__init__.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bcim/__init__.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bcim/data/eu_cdh.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bcim/data/eu_cdl.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bcim/data/eu_cdm.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bcim/data/eu_cdn.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bcim/data/layouts.csv +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bcim/data/tr_0018_dch.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bcim/data/tr_0018_dcm.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bcim/data/tr_7599.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bcim/data/tr_post18_dch.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bcim/data/tr_post18_dcm.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/__init__.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/baselib/__init__.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/baselib/analysis.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/baselib/beam.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/baselib/column.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/baselib/infill.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/baselib/joint.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/baselib/loads.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/baselib/materials.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/baselib/quality.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/baselib/rebars.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/baselib/slab.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/baselib/stairs.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdh/__init__.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdh/analysis.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdh/beam.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdh/building.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdh/column.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdh/data/loads.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdh/data/materials.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdh/data/quality.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdh/data/rebars.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdh/infill.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdh/joint.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdh/loads.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdh/materials.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdh/quality.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdh/rebars.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdh/slab.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdh/stairs.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdl/__init__.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdl/analysis.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdl/beam.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdl/building.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdl/column.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdl/data/loads.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdl/data/materials.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdl/data/quality.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdl/data/rebars.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdl/infill.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdl/joint.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdl/loads.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdl/materials.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdl/quality.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdl/rebars.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdl/slab.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdl/stairs.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdm/__init__.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdm/analysis.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdm/beam.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdm/building.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdm/column.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdm/data/loads.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdm/data/materials.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdm/data/quality.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdm/data/rebars.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdm/infill.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdm/joint.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdm/loads.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdm/materials.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdm/quality.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdm/rebars.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdm/slab.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdm/stairs.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdn/__init__.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdn/analysis.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdn/beam.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdn/building.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdn/column.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdn/data/loads.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdn/data/materials.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdn/data/quality.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdn/data/rebars.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdn/infill.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdn/joint.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdn/loads.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdn/materials.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdn/quality.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdn/rebars.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdn/slab.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdn/stairs.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/factory.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_0018_dch/__init__.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_0018_dch/analysis.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_0018_dch/beam.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_0018_dch/building.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_0018_dch/column.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_0018_dch/data/loads.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_0018_dch/data/materials.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_0018_dch/data/quality.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_0018_dch/data/rebars.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_0018_dch/infill.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_0018_dch/joint.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_0018_dch/loads.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_0018_dch/materials.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_0018_dch/quality.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_0018_dch/rebars.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_0018_dch/slab.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_0018_dch/stairs.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_0018_dcm/__init__.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_0018_dcm/analysis.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_0018_dcm/beam.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_0018_dcm/building.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_0018_dcm/column.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_0018_dcm/data/loads.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_0018_dcm/data/materials.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_0018_dcm/data/quality.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_0018_dcm/data/rebars.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_0018_dcm/infill.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_0018_dcm/joint.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_0018_dcm/loads.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_0018_dcm/materials.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_0018_dcm/quality.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_0018_dcm/rebars.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_0018_dcm/slab.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_0018_dcm/stairs.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_7599/__init__.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_7599/analysis.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_7599/beam.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_7599/building.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_7599/column.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_7599/data/design_tables.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_7599/data/loads.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_7599/data/materials.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_7599/data/quality.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_7599/data/rebars.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_7599/infill.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_7599/joint.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_7599/loads.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_7599/materials.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_7599/quality.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_7599/rebars.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_7599/slab.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_7599/stairs.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_post18_dch/__init__.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_post18_dch/analysis.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_post18_dch/beam.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_post18_dch/building.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_post18_dch/column.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_post18_dch/data/loads.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_post18_dch/data/materials.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_post18_dch/data/quality.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_post18_dch/data/rebars.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_post18_dch/infill.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_post18_dch/joint.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_post18_dch/materials.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_post18_dch/quality.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_post18_dch/rebars.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_post18_dch/slab.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_post18_dch/stairs.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_post18_dcm/__init__.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_post18_dcm/analysis.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_post18_dcm/beam.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_post18_dcm/building.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_post18_dcm/column.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_post18_dcm/data/loads.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_post18_dcm/data/materials.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_post18_dcm/data/quality.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_post18_dcm/data/rebars.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_post18_dcm/infill.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_post18_dcm/joint.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_post18_dcm/materials.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_post18_dcm/quality.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_post18_dcm/rebars.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_post18_dcm/slab.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_post18_dcm/stairs.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/baselib/__init__.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/baselib/building.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/baselib/floor.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/baselib/foundation.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/baselib/infill.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/baselib/joint.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/baselib/node.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/cp01/beam.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/cp01/building.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/cp01/column.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/cp01/floor.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/cp01/foundation.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/cp01/infill.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/cp01/joint.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/cp02/__init__.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/cp02/beam.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/cp02/building.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/cp02/column.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/cp02/floor.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/cp02/foundation.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/cp02/infill.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/cp02/joint.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/cp03/beam.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/cp03/building.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/cp03/column.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/cp03/floor.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/cp03/foundation.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/cp03/infill.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/cp03/joint.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp01/building.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp01/floor.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp01/foundation.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp01/infill.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp01/joint.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp02/building.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp02/floor.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp02/foundation.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp02/infill.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp02/joint.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp03/building.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp03/floor.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp03/foundation.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp03/infill.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp03/joint.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp04/beam.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp04/building.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp04/column.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp04/floor.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp04/foundation.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp04/infill.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp04/joint.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp05/building.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp05/column.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp05/floor.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp05/foundation.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp05/infill.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp05/joint.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/factory.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/geometry/__init__.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/geometry/base.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/geometry/custom.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/geometry/standard.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/utils/__init__.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/utils/mesh.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/utils/misc.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/utils/plotter.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/utils/rcsection.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/utils/tags.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/utils/units.py +0 -0
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: simdesign
|
|
3
|
-
Version: 1.2.
|
|
3
|
+
Version: 1.2.2
|
|
4
4
|
Summary: The built environment data (BED) framework for enhancing seismic vulnerability modeling through simulated design.
|
|
5
5
|
License: AGPL-3.0-or-later
|
|
6
|
+
License-File: LICENSE
|
|
6
7
|
Keywords: earthquake engineering,seismic design,numerical simulation,seismic vulnerability
|
|
7
8
|
Author: Volkan Ozsarac
|
|
8
9
|
Author-email: volkan.ozsarac@iusspavia.it
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "simdesign"
|
|
3
|
-
version = "1.2.
|
|
3
|
+
version = "1.2.2"
|
|
4
4
|
description = "The built environment data (BED) framework for enhancing seismic vulnerability modeling through simulated design."
|
|
5
5
|
authors = [
|
|
6
6
|
"Volkan Ozsarac <volkan.ozsarac@iusspavia.it>",
|
|
@@ -117,9 +117,12 @@ class TypicalStoreyHeight(BaseModel):
|
|
|
117
117
|
Attributes
|
|
118
118
|
----------
|
|
119
119
|
cv : float
|
|
120
|
-
Coefficient of variation (
|
|
120
|
+
Coefficient of variation (standard deviation / mean) of the
|
|
121
|
+
log-normal distribution before truncation.
|
|
121
122
|
mu : float
|
|
122
|
-
Mean
|
|
123
|
+
Mean (arithmetic) of the log-normal distribution before truncation.
|
|
124
|
+
The mean of the sampled typical storey heights differs from it
|
|
125
|
+
because of the truncation.
|
|
123
126
|
lower_bound : float
|
|
124
127
|
Lower bound value.
|
|
125
128
|
upper_bound : float
|
|
@@ -153,24 +156,29 @@ class StandardBayWidth(BaseModel):
|
|
|
153
156
|
Attributes
|
|
154
157
|
----------
|
|
155
158
|
corr_coeff_xy : float
|
|
156
|
-
Correlation coefficient between
|
|
157
|
-
|
|
159
|
+
Correlation coefficient between the standard normal variables from
|
|
160
|
+
which the bay widths in the two principal horizontal directions
|
|
161
|
+
(-X and -Y) are obtained (Gaussian copula). Because of the
|
|
162
|
+
truncation, the correlation between the bay widths themselves is
|
|
163
|
+
close to, but not equal to, it.
|
|
158
164
|
lower_bound_x : float
|
|
159
165
|
Lower bound of truncated log-normal distribution (-X).
|
|
160
166
|
upper_bound_x : float
|
|
161
167
|
Upper bound of truncated log-normal distribution (-X).
|
|
162
168
|
theta_x : float
|
|
163
|
-
Median of log-normal distribution (-X).
|
|
169
|
+
Median of log-normal distribution before truncation (-X).
|
|
164
170
|
sigma_x : float
|
|
165
|
-
Logarithmic standard deviation of the lognormal distribution
|
|
171
|
+
Logarithmic standard deviation of the lognormal distribution before
|
|
172
|
+
truncation (-X).
|
|
166
173
|
lower_bound_y : float
|
|
167
174
|
Lower bound of truncated log-normal distribution (-Y).
|
|
168
175
|
upper_bound_y : float
|
|
169
176
|
Upper bound of truncated log-normal distribution (-Y).
|
|
170
177
|
theta_y : float
|
|
171
|
-
Median of log-normal distribution (-Y).
|
|
178
|
+
Median of log-normal distribution before truncation (-Y).
|
|
172
179
|
sigma_y : float
|
|
173
|
-
Logarithmic standard deviation of the lognormal distribution
|
|
180
|
+
Logarithmic standard deviation of the lognormal distribution before
|
|
181
|
+
truncation (-Y).
|
|
174
182
|
"""
|
|
175
183
|
corr_coeff_xy: float
|
|
176
184
|
lower_bound_x: float
|
|
@@ -235,7 +243,7 @@ class InputData(BaseModel):
|
|
|
235
243
|
beta : float
|
|
236
244
|
Design lateral load factor.
|
|
237
245
|
beta_v : float | None
|
|
238
|
-
|
|
246
|
+
Design vertical seismic load factor.
|
|
239
247
|
num_storeys : int
|
|
240
248
|
Number of storeys in the building.
|
|
241
249
|
design_class : str
|
|
@@ -125,15 +125,20 @@ class Sampler:
|
|
|
125
125
|
"""Set staircase span lengths.
|
|
126
126
|
|
|
127
127
|
Staircase span lengths are represented by uniform distribution.
|
|
128
|
+
The samples are rounded to 0.05 m.
|
|
128
129
|
|
|
129
130
|
Parameters
|
|
130
131
|
----------
|
|
131
132
|
lower_bound : float
|
|
132
133
|
Lower boundary of the output interval.
|
|
133
|
-
All values generated will be greater than or equal to lower bound.
|
|
134
134
|
upper_bound : float
|
|
135
135
|
Upper boundary of the output interval.
|
|
136
|
-
|
|
136
|
+
|
|
137
|
+
Notes
|
|
138
|
+
-----
|
|
139
|
+
The samples are drawn from [lower_bound, upper_bound) and then
|
|
140
|
+
rounded to 0.05 m, so they may fall slightly outside the bounds
|
|
141
|
+
when these are not multiples of 0.05 m.
|
|
137
142
|
|
|
138
143
|
Returns
|
|
139
144
|
-------
|
|
@@ -162,21 +167,24 @@ class Sampler:
|
|
|
162
167
|
Typical span lengths are represented with truncated log-normal
|
|
163
168
|
distribution. It is assumed that span lengths are correlated.
|
|
164
169
|
The samples are generated from multivariate truncated lognormal
|
|
165
|
-
distribution.
|
|
170
|
+
distribution, and rounded to 0.05 m.
|
|
166
171
|
|
|
167
172
|
Parameters
|
|
168
173
|
----------
|
|
169
174
|
corr_coeff : float
|
|
170
|
-
Correlation coefficient
|
|
175
|
+
Correlation coefficient between the standard normal variables
|
|
176
|
+
from which the span lengths in x and y are obtained (Gaussian
|
|
177
|
+
copula). Because of the truncation, the correlation between
|
|
178
|
+
the span lengths themselves is close to, but not equal to, it.
|
|
171
179
|
lower_bound : Tuple[float]
|
|
172
180
|
Lower bound for truncated log-normal distribution (x, y).
|
|
173
181
|
upper_bound : Tuple[float]
|
|
174
182
|
Upper bound for truncated log-normal distribution (x, y).
|
|
175
183
|
theta : Tuple[float]
|
|
176
|
-
Median of log-normal distribution.
|
|
184
|
+
Median of the log-normal distribution before truncation (x, y).
|
|
177
185
|
std_ln : Tuple[float]
|
|
178
186
|
Logarithmic standard deviation of the log-normal
|
|
179
|
-
distribution (x, y).
|
|
187
|
+
distribution before truncation (x, y).
|
|
180
188
|
|
|
181
189
|
Notes
|
|
182
190
|
-----
|
|
@@ -248,14 +256,17 @@ class Sampler:
|
|
|
248
256
|
"""Set typical storey heights.
|
|
249
257
|
|
|
250
258
|
Typical storey heights are represented with truncated log-normal
|
|
251
|
-
distribution.
|
|
259
|
+
distribution. The samples are rounded to 0.05 m.
|
|
252
260
|
|
|
253
261
|
Parameters
|
|
254
262
|
----------
|
|
255
263
|
cv : float
|
|
256
|
-
Coefficient of variation
|
|
264
|
+
Coefficient of variation (standard deviation / mean) of the
|
|
265
|
+
log-normal distribution before truncation.
|
|
257
266
|
mu : float
|
|
258
|
-
Mean of normal
|
|
267
|
+
Mean (arithmetic, not logarithmic) of the log-normal
|
|
268
|
+
distribution before truncation. The mean of the samples
|
|
269
|
+
differs from it because of the truncation.
|
|
259
270
|
lower_bound : float
|
|
260
271
|
Lower bound of truncated log-normal distribution.
|
|
261
272
|
upper_bound : float
|
|
@@ -310,8 +321,9 @@ class Sampler:
|
|
|
310
321
|
|
|
311
322
|
Notes
|
|
312
323
|
-----
|
|
313
|
-
1. `ground_storey_height = min(factor *
|
|
314
|
-
max_height)`
|
|
324
|
+
1. `ground_storey_height = min(round_005(factor *
|
|
325
|
+
typical_storey_heights), max_height)`, where `round_005` rounds to
|
|
326
|
+
0.05 m.
|
|
315
327
|
2. Factors have different probabilities.
|
|
316
328
|
|
|
317
329
|
Examples
|
|
@@ -370,7 +382,7 @@ class Sampler:
|
|
|
370
382
|
Composite slabs with pre-fabricated joists and ceramic blocks (3: HS).
|
|
371
383
|
2. Slab type is assigned as HS, if minimum span length is greater than
|
|
372
384
|
the upper limit for minimum solid slab span length
|
|
373
|
-
(minimum span length
|
|
385
|
+
(minimum span length > `max_ss_short_span`).
|
|
374
386
|
3. Otherwise, if the ratio of maximum to minimum span lengths is
|
|
375
387
|
greater or equal to `max_ss2_aspect_ratio`, slab type is
|
|
376
388
|
randomly as SS1 or HS based on `ss1_prob_given_ss1_or_hs`.
|
|
@@ -70,7 +70,7 @@ class TaxonomyData:
|
|
|
70
70
|
design_class : str
|
|
71
71
|
Building design class selected.
|
|
72
72
|
beta_v : float, optional
|
|
73
|
-
|
|
73
|
+
Design vertical seismic load factor. By default None.
|
|
74
74
|
staircase_slab_depth : float, optional
|
|
75
75
|
Depth of the staircase slabs. By default None.
|
|
76
76
|
slab_thickness : float, optional
|
|
@@ -115,13 +115,19 @@ class Loads(LoadsBase):
|
|
|
115
115
|
beta_v : float | None
|
|
116
116
|
Vertical seismic coefficient. If None, it is taken as 0.0, i.e.,
|
|
117
117
|
the vertical load effect is neglected.
|
|
118
|
+
|
|
119
|
+
Notes
|
|
120
|
+
-----
|
|
121
|
+
Seismic loading is added in vertical direction based on Sections
|
|
122
|
+
4.4.3.2 and 4.4.4.1 of TBEC-2018. Here, ``beta_v`` refers to the
|
|
123
|
+
short-period design spectral acceleration coefficient (SDS).
|
|
118
124
|
"""
|
|
119
125
|
if beta_v is None:
|
|
120
126
|
beta_v = 0.0
|
|
121
127
|
seismic_strs = ["E+X", "E-X", "E+Y", "E-Y"]
|
|
122
128
|
for combo in self.combinations:
|
|
123
129
|
if any(item in seismic_strs for item in combo.loads.keys()):
|
|
124
|
-
if combo.loads.get("G") == 1.0:
|
|
130
|
+
if combo.loads.get("G") == 1.0: # Eqn. 4.11
|
|
125
131
|
combo.loads["G"] = round(1.0 + 0.3 * (2/3) * beta_v, 2)
|
|
126
|
-
elif combo.loads.get("G") == 0.9:
|
|
132
|
+
elif combo.loads.get("G") == 0.9: # Eqn. 4.12
|
|
127
133
|
combo.loads["G"] = round(0.9 - 0.3 * (2/3) * beta_v, 2)
|
|
@@ -115,13 +115,19 @@ class Loads(LoadsBase):
|
|
|
115
115
|
beta_v : float | None
|
|
116
116
|
Vertical seismic coefficient. If None, it is taken as 0.0, i.e.,
|
|
117
117
|
the vertical load effect is neglected.
|
|
118
|
+
|
|
119
|
+
Notes
|
|
120
|
+
-----
|
|
121
|
+
Seismic loading is added in vertical direction based on Sections
|
|
122
|
+
4.4.3.2 and 4.4.4.1 of TBEC-2018. Here, ``beta_v`` refers to the
|
|
123
|
+
short-period design spectral acceleration coefficient (SDS).
|
|
118
124
|
"""
|
|
119
125
|
if beta_v is None:
|
|
120
126
|
beta_v = 0.0
|
|
121
127
|
seismic_strs = ["E+X", "E-X", "E+Y", "E-Y"]
|
|
122
128
|
for combo in self.combinations:
|
|
123
129
|
if any(item in seismic_strs for item in combo.loads.keys()):
|
|
124
|
-
if combo.loads.get("G") == 1.0:
|
|
130
|
+
if combo.loads.get("G") == 1.0: # Eqn. 4.11
|
|
125
131
|
combo.loads["G"] = round(1.0 + 0.3 * (2/3) * beta_v, 2)
|
|
126
|
-
elif combo.loads.get("G") == 0.9:
|
|
132
|
+
elif combo.loads.get("G") == 0.9: # Eqn. 4.12
|
|
127
133
|
combo.loads["G"] = round(0.9 - 0.3 * (2/3) * beta_v, 2)
|
|
@@ -8,8 +8,8 @@ modelling strategy (e.g., CP01, DP03) based on the selected model type.
|
|
|
8
8
|
|
|
9
9
|
Example
|
|
10
10
|
-------
|
|
11
|
-
>>> from
|
|
12
|
-
>>> model = BNSM(model="
|
|
11
|
+
>>> from simdesign.rcmrf import BNSM
|
|
12
|
+
>>> model = BNSM(design=bdim, model="CP01")
|
|
13
13
|
"""
|
|
14
14
|
|
|
15
15
|
from .factory import BNSM
|
|
@@ -369,6 +369,23 @@ class BeamBase(ABC):
|
|
|
369
369
|
"""Material tag for the *j-end* flexural hinge about local-z (Mz)."""
|
|
370
370
|
return sub_tag(self.design.line.tag, 91)
|
|
371
371
|
|
|
372
|
+
@property
|
|
373
|
+
def p_mat_tag(self) -> int:
|
|
374
|
+
"""Elastic material tag for the axial response (P) of the hinges."""
|
|
375
|
+
return sub_tag(self.design.line.tag, 94)
|
|
376
|
+
|
|
377
|
+
@property
|
|
378
|
+
def my_mat_tag(self) -> int:
|
|
379
|
+
"""Elastic material tag for the flexural response about local-y (My)
|
|
380
|
+
of the hinges."""
|
|
381
|
+
return sub_tag(self.design.line.tag, 95)
|
|
382
|
+
|
|
383
|
+
@property
|
|
384
|
+
def t_mat_tag(self) -> int:
|
|
385
|
+
"""Elastic material tag for the torsional response (T) of the
|
|
386
|
+
hinges."""
|
|
387
|
+
return sub_tag(self.design.line.tag, 96)
|
|
388
|
+
|
|
372
389
|
@property
|
|
373
390
|
def elastic_sec_tag(self) -> int:
|
|
374
391
|
"""Section tag for the elastic (interior) section."""
|
|
@@ -745,6 +762,27 @@ class BeamBase(ABC):
|
|
|
745
762
|
|
|
746
763
|
return sec_inputs
|
|
747
764
|
|
|
765
|
+
def _get_hinge_elastic_mat_inputs(
|
|
766
|
+
self
|
|
767
|
+
) -> List[List[str | float | int]]:
|
|
768
|
+
"""Retrieves the elastic material inputs of the hinge sections.
|
|
769
|
+
|
|
770
|
+
Returns
|
|
771
|
+
-------
|
|
772
|
+
List[List[str | float | int]]
|
|
773
|
+
Inputs of the elastic axial (EA), flexural about local-y (EIy) and
|
|
774
|
+
torsional (GJ) materials, i.e., the properties of the elastic
|
|
775
|
+
section in the degrees of freedom without a hinge.
|
|
776
|
+
"""
|
|
777
|
+
return [
|
|
778
|
+
round_list(['Elastic', self.p_mat_tag,
|
|
779
|
+
self.Ecm_q * self.design.Ag]),
|
|
780
|
+
round_list(['Elastic', self.my_mat_tag,
|
|
781
|
+
self.Ecm_q * self.design.Iy]),
|
|
782
|
+
round_list(['Elastic', self.t_mat_tag,
|
|
783
|
+
self.Gcm_q * self.design.J])
|
|
784
|
+
]
|
|
785
|
+
|
|
748
786
|
def _get_inelastic_sec_i_inputs(self) -> List[str | int]:
|
|
749
787
|
"""Retrieves inputs for inelastic beam section at ith end.
|
|
750
788
|
|
|
@@ -327,6 +327,17 @@ class ColumnBase(ABC):
|
|
|
327
327
|
"""MinMax material tag for the shear hinge in local-z (Vz)."""
|
|
328
328
|
return sub_tag(self.design.line.tag, 97)
|
|
329
329
|
|
|
330
|
+
@property
|
|
331
|
+
def p_mat_tag(self) -> int:
|
|
332
|
+
"""Elastic material tag for the axial response (P) of the hinges."""
|
|
333
|
+
return sub_tag(self.design.line.tag, 98)
|
|
334
|
+
|
|
335
|
+
@property
|
|
336
|
+
def t_mat_tag(self) -> int:
|
|
337
|
+
"""Elastic material tag for the torsional response (T) of the
|
|
338
|
+
hinges."""
|
|
339
|
+
return sub_tag(self.design.line.tag, 99)
|
|
340
|
+
|
|
330
341
|
@property
|
|
331
342
|
def elastic_sec_tag(self) -> int:
|
|
332
343
|
"""Section tag for the elastic (interior) section."""
|
|
@@ -700,6 +711,52 @@ class ColumnBase(ABC):
|
|
|
700
711
|
|
|
701
712
|
return sec_inputs
|
|
702
713
|
|
|
714
|
+
def _get_hinge_elastic_mat_inputs(
|
|
715
|
+
self
|
|
716
|
+
) -> List[List[str | float | int]]:
|
|
717
|
+
"""Retrieves the elastic material inputs of the hinge sections.
|
|
718
|
+
|
|
719
|
+
Returns
|
|
720
|
+
-------
|
|
721
|
+
List[List[str | float | int]]
|
|
722
|
+
Inputs of the elastic axial (EA) and torsional (GJ) materials,
|
|
723
|
+
i.e., the properties of the elastic section in the degrees of
|
|
724
|
+
freedom without a hinge.
|
|
725
|
+
"""
|
|
726
|
+
return [
|
|
727
|
+
round_list(['Elastic', self.p_mat_tag,
|
|
728
|
+
self.Ecm_q * self.design.Ag]),
|
|
729
|
+
round_list(['Elastic', self.t_mat_tag,
|
|
730
|
+
self.Gcm_q * self.design.J])
|
|
731
|
+
]
|
|
732
|
+
|
|
733
|
+
def _get_shear_mat_inputs(self) -> List[List[str | float | int]]:
|
|
734
|
+
"""Retrieves the inputs of the shear materials (Vy and Vz) aggregated
|
|
735
|
+
into the element sections.
|
|
736
|
+
|
|
737
|
+
Returns
|
|
738
|
+
-------
|
|
739
|
+
List[List[str | float | int]]
|
|
740
|
+
Inputs of the Pinching4 and MinMax materials of the shear springs
|
|
741
|
+
(Zimos et al., 2015) for columns without capacity design for
|
|
742
|
+
shear, and of elastic materials with the gross shear stiffness,
|
|
743
|
+
``G (5/6) A``, for columns with capacity design for shear.
|
|
744
|
+
|
|
745
|
+
Notes
|
|
746
|
+
-----
|
|
747
|
+
Used by the models whose hinges do not include the shear deformation
|
|
748
|
+
(fiber sections in DP03-DP05 and the moment-curvature hinges of DP02).
|
|
749
|
+
Without the elastic shear materials, columns with capacity design for
|
|
750
|
+
shear would have no shear flexibility.
|
|
751
|
+
"""
|
|
752
|
+
if self.capacity_design:
|
|
753
|
+
GAv = self.Gcm_q * (5 / 6) * self.design.Ag
|
|
754
|
+
return [round_list(['Elastic', self.vy_mat_tag, GAv]),
|
|
755
|
+
round_list(['Elastic', self.vz_mat_tag, GAv])]
|
|
756
|
+
vy_mat, minmax_vy = self._get_shear_hinge_mat_inputs('y')
|
|
757
|
+
vz_mat, minmax_vz = self._get_shear_hinge_mat_inputs('x')
|
|
758
|
+
return [vy_mat, vz_mat, minmax_vy, minmax_vz]
|
|
759
|
+
|
|
703
760
|
def _get_inelastic_sec_inputs(self) -> List[str | int]:
|
|
704
761
|
"""Retrieves inputs for inelastic aggregated column section.
|
|
705
762
|
|
|
@@ -21,6 +21,11 @@ RIGID_SEC = 99999
|
|
|
21
21
|
"""Tag of the rigid-like section defined in OpenSees."""
|
|
22
22
|
BIG_VALUE = 1e9
|
|
23
23
|
"""A big value used to define stiffness of rigid materials."""
|
|
24
|
+
AXIAL_RELEASE_STIFFNESS_RATIO = 1e-3
|
|
25
|
+
"""Ratio of the stiffness of the axial beam releases (DP05) to the axial
|
|
26
|
+
stiffness of the beam, EA/L. The small stiffness keeps the stiffness matrix
|
|
27
|
+
regular when the axial stiffness of a softening beam vanishes, and the beam
|
|
28
|
+
is still practically free to elongate."""
|
|
24
29
|
GRAV_TS_TAG = 1
|
|
25
30
|
"""Tag for time-series which defines the relationship between time-domain
|
|
26
31
|
and gravity loads."""
|
|
@@ -12,12 +12,18 @@ provided by `bnsm.baselib`.
|
|
|
12
12
|
|
|
13
13
|
- Beam:
|
|
14
14
|
Concentrated plasticity (CP) with end hinges (Haselton et al., 2008)
|
|
15
|
-
defined using Hysteretic moment-rotation behaviour
|
|
15
|
+
defined using Hysteretic moment-rotation behaviour, in forceBeamColumn
|
|
16
|
+
elements with ConcentratedPlasticity integration. The interior is nearly
|
|
17
|
+
rigid in flexure, so the hinges, calibrated to the chord rotation of the
|
|
18
|
+
member, carry the whole flexural flexibility. The hinge sections have
|
|
19
|
+
elastic axial, torsional and weak-axis flexural materials.
|
|
16
20
|
|
|
17
21
|
- Column:
|
|
18
|
-
Concentrated plasticity (Haselton et al., 2008)
|
|
19
|
-
|
|
20
|
-
coupled with ThreePoint limit curves
|
|
22
|
+
Concentrated plasticity (Haselton et al., 2008) about both axes, as for
|
|
23
|
+
the beams. Columns without capacity design for shear have degrading
|
|
24
|
+
shear springs: LimitState materials coupled with ThreePoint limit curves
|
|
25
|
+
(Elwood & Moehle, 2003), with the ASCE 41-17 shear strength and the
|
|
26
|
+
post-failure slope of Shoraka & Elwood (2013).
|
|
21
27
|
|
|
22
28
|
- Joints:
|
|
23
29
|
Rigid, elastic, or inelastic rotational spring models
|
|
@@ -52,6 +58,13 @@ PEER Report 2003/01.
|
|
|
52
58
|
Pacific Earthquake Engineering Research Center,
|
|
53
59
|
University of California, Berkeley.
|
|
54
60
|
|
|
61
|
+
ASCE/SEI 41-17. (2017). Seismic rehabilitation of existing buildings.
|
|
62
|
+
American Society of Civil Engineers.
|
|
63
|
+
|
|
64
|
+
Shoraka, M. B., & Elwood, K. J. (2013). Mechanical model for non ductile
|
|
65
|
+
reinforced concrete columns. Journal of Earthquake Engineering, 17(7),
|
|
66
|
+
937-957.
|
|
67
|
+
|
|
55
68
|
O'Reilly, G. J. (2016).
|
|
56
69
|
Performance-based seismic assessment and retrofit of existing
|
|
57
70
|
RC frame buildings in Italy (Doctoral dissertation, IUSS Pavia).
|
|
@@ -17,14 +17,15 @@ providing instantiable component implementations.
|
|
|
17
17
|
|
|
18
18
|
- Beam:
|
|
19
19
|
Concentrated plasticity (CP) with explicit zeroLength end hinges
|
|
20
|
-
placed in series with an
|
|
20
|
+
placed in series with an interior beam element that is nearly rigid in
|
|
21
|
+
flexure, so the hinges carry the whole flexural flexibility.
|
|
21
22
|
Hinge moment-rotation behaviour follows CP01.
|
|
22
23
|
|
|
23
24
|
- Column:
|
|
24
25
|
Concentrated plasticity with explicit zeroLengthSection end hinges
|
|
25
|
-
and
|
|
26
|
-
Flexural hinge behaviour follows CP01, with
|
|
27
|
-
|
|
26
|
+
and a nearly rigid interior column element, as for the beams.
|
|
27
|
+
Flexural hinge behaviour follows CP01, with degrading shear springs for
|
|
28
|
+
columns without capacity design for shear, as in CP01.
|
|
28
29
|
|
|
29
30
|
- Joints:
|
|
30
31
|
Rigid joint offsets are modelled explicitly using rigid-like
|
|
@@ -6,22 +6,27 @@ modelling strategy within the Building Nonlinear Structural Model (BNSM),
|
|
|
6
6
|
suitable for nonlinear seismic assessment of reinforced concrete (RC)
|
|
7
7
|
moment-resisting frame buildings.
|
|
8
8
|
|
|
9
|
-
The classes defined here inherit
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
The classes defined here inherit from the base implementations in
|
|
10
|
+
`bnsm.baselib`. For beams and columns, DP01 employs force-based beam-column
|
|
11
|
+
elements with distributed plasticity over a finite plastic-hinge length
|
|
12
|
+
computed in accordance with Priestley et al. (2007).
|
|
13
13
|
|
|
14
14
|
**Model Characteristics**
|
|
15
15
|
|
|
16
16
|
- Beam:
|
|
17
17
|
Distributed plasticity formulation using forceBeamColumn elements
|
|
18
|
-
with plastic hinge integration
|
|
19
|
-
(
|
|
18
|
+
with plastic hinge integration. The Hysteretic moment-curvature hinges
|
|
19
|
+
reach the EN 1998-3 yield rotation (including its shear and bond-slip
|
|
20
|
+
terms) together with the elastic interior. The hinge sections have
|
|
21
|
+
elastic axial, torsional and weak-axis flexural materials.
|
|
20
22
|
|
|
21
23
|
- Column:
|
|
22
24
|
Distributed plasticity formulation using forceBeamColumn elements
|
|
23
|
-
with aggregated
|
|
24
|
-
|
|
25
|
+
with aggregated sections: Hysteretic moment-curvature hinges about both
|
|
26
|
+
axes, as for the beams, and elastic axial and torsional materials.
|
|
27
|
+
Columns without capacity design for shear have degrading shear springs
|
|
28
|
+
(Zimos et al., 2015) along the whole member; in capacity-designed
|
|
29
|
+
columns the shear deformation is included through the yield rotation.
|
|
25
30
|
|
|
26
31
|
- Joints:
|
|
27
32
|
Rigid, elastic, or inelastic rotational spring models
|
|
@@ -47,6 +52,10 @@ length computed in accordance with Priestley et al. (2007).
|
|
|
47
52
|
Priestley, M. J. N., Calvi, G. M., & Kowalsky, M. J. (2007).
|
|
48
53
|
*Displacement-based seismic design of structures*.
|
|
49
54
|
IUSS Press.
|
|
55
|
+
|
|
56
|
+
Zimos, D. K., Mergos, P. E., & Kappos, A. J. (2015). Shear hysteresis
|
|
57
|
+
model for reinforced concrete elements including the post-peak range.
|
|
58
|
+
Proceedings of the COMPDYN. https://doi.org/10.7712/120115.3565.1184
|
|
50
59
|
"""
|
|
51
60
|
|
|
52
61
|
from .building import Building as DP01
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
"""This module provides the beam class implementation for the ``DP01`` model in
|
|
2
|
+
the BNSM layer.
|
|
3
|
+
"""
|
|
4
|
+
# Imports from installed packages
|
|
5
|
+
import numpy as np
|
|
6
|
+
import openseespy.opensees as ops
|
|
7
|
+
from typing import List
|
|
8
|
+
|
|
9
|
+
# Imports from bnsm base library
|
|
10
|
+
from ..baselib.beam import BeamBase
|
|
11
|
+
|
|
12
|
+
# Imports from utils library
|
|
13
|
+
from ....utils.misc import round_list
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class Beam(BeamBase):
|
|
17
|
+
"""Beam implementation for the ``DP01`` model.
|
|
18
|
+
|
|
19
|
+
This class directly uses the behaviour defined in ``BeamBase``, except
|
|
20
|
+
for the cracked elastic section (see ``_get_elastic_sec_inputs``) and the
|
|
21
|
+
elastic materials of the hinge sections.
|
|
22
|
+
|
|
23
|
+
The hinge sections have elastic materials in the degrees of freedom
|
|
24
|
+
without a hinge (axial, torsion and flexure about local-y), with the
|
|
25
|
+
properties of the elastic section, instead of rigid ones. With
|
|
26
|
+
``HingeRadau`` integration, the hinge sections carry the elastic
|
|
27
|
+
flexibility over the plastic hinge lengths, which rigid materials would
|
|
28
|
+
leave out.
|
|
29
|
+
|
|
30
|
+
See Also
|
|
31
|
+
--------
|
|
32
|
+
:class:`~simdesign.rcmrf.bnsm.baselib.beam.BeamBase`
|
|
33
|
+
Base class defining the core behaviour and configuration.
|
|
34
|
+
"""
|
|
35
|
+
|
|
36
|
+
def add_to_ops(self) -> None:
|
|
37
|
+
"""Adds beam components to the OpenSees domain
|
|
38
|
+
(i.e, beam element and nodes).
|
|
39
|
+
"""
|
|
40
|
+
# Create the elastic materials of the hinge sections
|
|
41
|
+
for mat_inputs in self._get_hinge_elastic_mat_inputs():
|
|
42
|
+
ops.uniaxialMaterial(*mat_inputs)
|
|
43
|
+
super().add_to_ops()
|
|
44
|
+
|
|
45
|
+
def to_py(self) -> List[str]:
|
|
46
|
+
"""Gets the Python commands to construct beam components in OpenSees
|
|
47
|
+
domain (i.e, beam element and nodes).
|
|
48
|
+
|
|
49
|
+
Returns
|
|
50
|
+
-------
|
|
51
|
+
List[str]
|
|
52
|
+
List of Python commands for constructing the components of beam
|
|
53
|
+
object in OpenSees.
|
|
54
|
+
"""
|
|
55
|
+
content = super().to_py()
|
|
56
|
+
# Create the elastic materials of the hinge sections
|
|
57
|
+
idx = content.index('# Create element sections')
|
|
58
|
+
for mat_inputs in reversed(self._get_hinge_elastic_mat_inputs()):
|
|
59
|
+
mat_inputs = ', '.join(
|
|
60
|
+
repr(item) if isinstance(item, str) else str(item)
|
|
61
|
+
for item in mat_inputs
|
|
62
|
+
)
|
|
63
|
+
content.insert(idx, f"ops.uniaxialMaterial({mat_inputs})")
|
|
64
|
+
|
|
65
|
+
return content
|
|
66
|
+
|
|
67
|
+
def to_tcl(self) -> List[str]:
|
|
68
|
+
"""Gets the Tcl commands to construct beam components in OpenSees
|
|
69
|
+
domain (i.e, beam element and nodes).
|
|
70
|
+
|
|
71
|
+
Returns
|
|
72
|
+
-------
|
|
73
|
+
List[str]
|
|
74
|
+
List of Tcl commands for constructing the components of beam
|
|
75
|
+
object in OpenSees.
|
|
76
|
+
"""
|
|
77
|
+
content = super().to_tcl()
|
|
78
|
+
# Create the elastic materials of the hinge sections
|
|
79
|
+
idx = content.index('# Create element sections')
|
|
80
|
+
for mat_inputs in reversed(self._get_hinge_elastic_mat_inputs()):
|
|
81
|
+
mat_inputs = ' '.join(f"{item}" for item in mat_inputs)
|
|
82
|
+
content.insert(idx, f"uniaxialMaterial {mat_inputs}")
|
|
83
|
+
|
|
84
|
+
return content
|
|
85
|
+
|
|
86
|
+
def _get_inelastic_sec_i_inputs(self) -> List[str | int]:
|
|
87
|
+
"""Retrieves inputs for inelastic beam section at ith end.
|
|
88
|
+
|
|
89
|
+
Returns
|
|
90
|
+
-------
|
|
91
|
+
List[str | int]
|
|
92
|
+
List of inputs for inelastic beam section at ith end, with
|
|
93
|
+
elastic My, P and T materials.
|
|
94
|
+
"""
|
|
95
|
+
sec_inputs = super()._get_inelastic_sec_i_inputs()
|
|
96
|
+
sec_inputs[6], sec_inputs[10], sec_inputs[12] = \
|
|
97
|
+
self.my_mat_tag, self.p_mat_tag, self.t_mat_tag
|
|
98
|
+
|
|
99
|
+
return sec_inputs
|
|
100
|
+
|
|
101
|
+
def _get_inelastic_sec_j_inputs(self) -> List[str | int]:
|
|
102
|
+
"""Retrieves inputs for inelastic beam section at jth end.
|
|
103
|
+
|
|
104
|
+
Returns
|
|
105
|
+
-------
|
|
106
|
+
List[str | int]
|
|
107
|
+
List of inputs for inelastic beam section at jth end, with
|
|
108
|
+
elastic My, P and T materials.
|
|
109
|
+
"""
|
|
110
|
+
sec_inputs = super()._get_inelastic_sec_j_inputs()
|
|
111
|
+
sec_inputs[6], sec_inputs[10], sec_inputs[12] = \
|
|
112
|
+
self.my_mat_tag, self.p_mat_tag, self.t_mat_tag
|
|
113
|
+
|
|
114
|
+
return sec_inputs
|
|
115
|
+
|
|
116
|
+
def _get_elastic_sec_inputs(self) -> List[str | int | float]:
|
|
117
|
+
"""Retrieves elastic beam section inputs.
|
|
118
|
+
|
|
119
|
+
Returns
|
|
120
|
+
-------
|
|
121
|
+
List[str | int | float]
|
|
122
|
+
List of elastic beam section inputs.
|
|
123
|
+
|
|
124
|
+
Notes
|
|
125
|
+
-----
|
|
126
|
+
The hinges carry the part of the yield rotation that the elastic
|
|
127
|
+
interior does not (see ``_get_phiy_adjusted``). With ``cracked`` True,
|
|
128
|
+
the moment of inertia is therefore at least ``_get_min_interior_Iz``,
|
|
129
|
+
so that the elastic interior is not more flexible than the member at
|
|
130
|
+
yield.
|
|
131
|
+
"""
|
|
132
|
+
sec_inputs = super()._get_elastic_sec_inputs()
|
|
133
|
+
if self.cracked is True:
|
|
134
|
+
sec_inputs[4] = max(sec_inputs[4], self._get_min_interior_Iz())
|
|
135
|
+
|
|
136
|
+
return round_list(sec_inputs)
|
|
137
|
+
|
|
138
|
+
def _get_min_interior_Iz(self) -> float:
|
|
139
|
+
"""Gets the smallest moment of inertia of the elastic interior for
|
|
140
|
+
which the member does not exceed the yield rotation at yielding.
|
|
141
|
+
|
|
142
|
+
Returns
|
|
143
|
+
-------
|
|
144
|
+
float
|
|
145
|
+
``max(My·Ls/(3·E·theta_y))`` over both end sections and bending
|
|
146
|
+
directions. With a larger moment of inertia, the elastic interior
|
|
147
|
+
gives at most ``theta_y``, and the hinges the rest (see
|
|
148
|
+
``_get_phiy_adjusted``).
|
|
149
|
+
|
|
150
|
+
Notes
|
|
151
|
+
-----
|
|
152
|
+
``_Iz_eff`` is the mean of ``My / phi_y`` over both end sections and
|
|
153
|
+
bending directions. At the section with the largest ``My / phi_y``,
|
|
154
|
+
the elastic part ``My·Ls/(3·E·_Iz_eff)`` may then exceed
|
|
155
|
+
``theta_y``, and the member would yield beyond ``theta_y``.
|
|
156
|
+
"""
|
|
157
|
+
props = self._get_rot_hinge_props()
|
|
158
|
+
My = np.abs(np.concatenate([props[1][[0, -1]], props[8][[0, -1]]]))
|
|
159
|
+
theta_y = np.abs(
|
|
160
|
+
np.concatenate([props[4][[0, -1]], props[11][[0, -1]]]))
|
|
161
|
+
ls = self.clear_length / 2 # Shear span, as in _get_rot_hinge_props
|
|
162
|
+
return float(np.max(My * ls / (3 * theta_y)) / self.Ecm_q)
|