simdesign 1.2.0__tar.gz → 1.2.1__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.1}/PKG-INFO +3 -2
- {simdesign-1.2.0 → simdesign-1.2.1}/pyproject.toml +1 -1
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/__init__.py +2 -2
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/baselib/beam.py +38 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/baselib/column.py +57 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/baselib/constants.py +5 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/cp01/__init__.py +17 -4
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/cp03/__init__.py +5 -4
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp01/__init__.py +17 -8
- simdesign-1.2.1/simdesign/rcmrf/bnsm/dp01/beam.py +162 -0
- simdesign-1.2.1/simdesign/rcmrf/bnsm/dp01/column.py +140 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp02/__init__.py +9 -5
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp02/beam.py +135 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp02/column.py +73 -49
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp03/__init__.py +20 -11
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp03/beam.py +99 -3
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp03/column.py +38 -74
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp04/__init__.py +6 -18
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp05/__init__.py +4 -3
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp05/beam.py +51 -11
- 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.1}/LICENSE +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/docs/README.md +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/__init__.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/__init__.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bcim/__init__.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bcim/data/eu_cdh.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bcim/data/eu_cdl.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bcim/data/eu_cdm.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bcim/data/eu_cdn.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bcim/data/layouts.csv +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bcim/data/tr_0018_dch.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bcim/data/tr_0018_dcm.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bcim/data/tr_7599.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bcim/data/tr_post18_dch.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bcim/data/tr_post18_dcm.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bcim/factory.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bcim/parametrization.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bcim/randomization.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/__init__.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/baselib/__init__.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/baselib/analysis.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/baselib/beam.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/baselib/building.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/baselib/column.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/baselib/infill.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/baselib/joint.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/baselib/loads.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/baselib/materials.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/baselib/quality.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/baselib/rebars.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/baselib/slab.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/baselib/stairs.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdh/__init__.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdh/analysis.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdh/beam.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdh/building.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdh/column.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdh/data/loads.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdh/data/materials.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdh/data/quality.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdh/data/rebars.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdh/infill.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdh/joint.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdh/loads.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdh/materials.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdh/quality.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdh/rebars.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdh/slab.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdh/stairs.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdl/__init__.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdl/analysis.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdl/beam.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdl/building.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdl/column.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdl/data/loads.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdl/data/materials.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdl/data/quality.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdl/data/rebars.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdl/infill.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdl/joint.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdl/loads.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdl/materials.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdl/quality.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdl/rebars.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdl/slab.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdl/stairs.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdm/__init__.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdm/analysis.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdm/beam.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdm/building.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdm/column.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdm/data/loads.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdm/data/materials.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdm/data/quality.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdm/data/rebars.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdm/infill.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdm/joint.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdm/loads.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdm/materials.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdm/quality.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdm/rebars.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdm/slab.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdm/stairs.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdn/__init__.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdn/analysis.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdn/beam.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdn/building.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdn/column.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdn/data/loads.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdn/data/materials.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdn/data/quality.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdn/data/rebars.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdn/infill.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdn/joint.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdn/loads.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdn/materials.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdn/quality.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdn/rebars.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdn/slab.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdn/stairs.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/factory.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_0018_dch/__init__.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_0018_dch/analysis.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_0018_dch/beam.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_0018_dch/building.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_0018_dch/column.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_0018_dch/data/loads.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_0018_dch/data/materials.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_0018_dch/data/quality.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_0018_dch/data/rebars.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_0018_dch/infill.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_0018_dch/joint.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_0018_dch/loads.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_0018_dch/materials.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_0018_dch/quality.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_0018_dch/rebars.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_0018_dch/slab.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_0018_dch/stairs.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_0018_dcm/__init__.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_0018_dcm/analysis.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_0018_dcm/beam.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_0018_dcm/building.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_0018_dcm/column.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_0018_dcm/data/loads.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_0018_dcm/data/materials.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_0018_dcm/data/quality.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_0018_dcm/data/rebars.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_0018_dcm/infill.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_0018_dcm/joint.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_0018_dcm/loads.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_0018_dcm/materials.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_0018_dcm/quality.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_0018_dcm/rebars.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_0018_dcm/slab.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_0018_dcm/stairs.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_7599/__init__.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_7599/analysis.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_7599/beam.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_7599/building.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_7599/column.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_7599/data/design_tables.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_7599/data/loads.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_7599/data/materials.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_7599/data/quality.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_7599/data/rebars.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_7599/infill.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_7599/joint.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_7599/loads.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_7599/materials.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_7599/quality.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_7599/rebars.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_7599/slab.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_7599/stairs.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_post18_dch/__init__.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_post18_dch/analysis.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_post18_dch/beam.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_post18_dch/building.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_post18_dch/column.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_post18_dch/data/loads.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_post18_dch/data/materials.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_post18_dch/data/quality.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_post18_dch/data/rebars.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_post18_dch/infill.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_post18_dch/joint.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_post18_dch/loads.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_post18_dch/materials.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_post18_dch/quality.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_post18_dch/rebars.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_post18_dch/slab.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_post18_dch/stairs.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_post18_dcm/__init__.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_post18_dcm/analysis.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_post18_dcm/beam.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_post18_dcm/building.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_post18_dcm/column.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_post18_dcm/data/loads.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_post18_dcm/data/materials.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_post18_dcm/data/quality.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_post18_dcm/data/rebars.json +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_post18_dcm/infill.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_post18_dcm/joint.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_post18_dcm/loads.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_post18_dcm/materials.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_post18_dcm/quality.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_post18_dcm/rebars.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_post18_dcm/slab.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_post18_dcm/stairs.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/baselib/__init__.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/baselib/building.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/baselib/floor.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/baselib/foundation.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/baselib/infill.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/baselib/joint.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/baselib/node.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/cp01/beam.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/cp01/building.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/cp01/column.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/cp01/floor.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/cp01/foundation.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/cp01/infill.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/cp01/joint.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/cp02/__init__.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/cp02/beam.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/cp02/building.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/cp02/column.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/cp02/floor.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/cp02/foundation.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/cp02/infill.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/cp02/joint.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/cp03/beam.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/cp03/building.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/cp03/column.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/cp03/floor.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/cp03/foundation.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/cp03/infill.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/cp03/joint.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp01/building.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp01/floor.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp01/foundation.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp01/infill.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp01/joint.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp02/building.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp02/floor.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp02/foundation.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp02/infill.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp02/joint.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp03/building.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp03/floor.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp03/foundation.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp03/infill.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp03/joint.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp04/beam.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp04/building.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp04/column.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp04/floor.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp04/foundation.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp04/infill.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp04/joint.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp05/building.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp05/column.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp05/floor.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp05/foundation.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp05/infill.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp05/joint.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/factory.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/geometry/__init__.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/geometry/base.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/geometry/custom.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/geometry/standard.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/utils/__init__.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/utils/mesh.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/utils/misc.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/utils/plotter.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/utils/rcsection.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/utils/stats.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/utils/tags.py +0 -0
- {simdesign-1.2.0 → simdesign-1.2.1}/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.1
|
|
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.1"
|
|
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>",
|
|
@@ -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)
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
"""This module provides the column class implementation for the ``DP01`` model
|
|
2
|
+
in the BNSM layer.
|
|
3
|
+
"""
|
|
4
|
+
# Imports from installed packages
|
|
5
|
+
import openseespy.opensees as ops
|
|
6
|
+
from typing import List, Literal
|
|
7
|
+
|
|
8
|
+
# Imports from bnsm base library
|
|
9
|
+
from ..baselib.column import ColumnBase
|
|
10
|
+
|
|
11
|
+
# Imports from utils library
|
|
12
|
+
from ....utils.misc import round_list
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class Column(ColumnBase):
|
|
16
|
+
"""Column implementation for the ``DP01`` model.
|
|
17
|
+
|
|
18
|
+
This class directly uses the behaviour defined in ``ColumnBase``, except
|
|
19
|
+
for the cracked elastic section (see ``_get_elastic_sec_inputs``) and the
|
|
20
|
+
elastic materials of the hinge sections.
|
|
21
|
+
|
|
22
|
+
The hinge sections have elastic materials in the degrees of freedom
|
|
23
|
+
without a hinge (axial and torsion), with the properties of the elastic
|
|
24
|
+
section, instead of rigid ones. With ``HingeRadau`` integration, the
|
|
25
|
+
hinge sections carry the elastic flexibility over the plastic hinge
|
|
26
|
+
lengths, which rigid materials would leave out.
|
|
27
|
+
|
|
28
|
+
See Also
|
|
29
|
+
--------
|
|
30
|
+
:class:`~simdesign.rcmrf.bnsm.baselib.column.ColumnBase`
|
|
31
|
+
Base class defining the core behaviour and configuration.
|
|
32
|
+
"""
|
|
33
|
+
|
|
34
|
+
def add_to_ops(self) -> None:
|
|
35
|
+
"""Adds column components to the OpenSees domain
|
|
36
|
+
(i.e, column element and nodes).
|
|
37
|
+
"""
|
|
38
|
+
# Create the elastic materials of the hinge sections
|
|
39
|
+
for mat_inputs in self._get_hinge_elastic_mat_inputs():
|
|
40
|
+
ops.uniaxialMaterial(*mat_inputs)
|
|
41
|
+
super().add_to_ops()
|
|
42
|
+
|
|
43
|
+
def to_py(self) -> List[str]:
|
|
44
|
+
"""Gets the Python commands to construct column components in OpenSees
|
|
45
|
+
domain (i.e, column element and nodes).
|
|
46
|
+
|
|
47
|
+
Returns
|
|
48
|
+
-------
|
|
49
|
+
List[str]
|
|
50
|
+
List of Python commands for constructing the components of column
|
|
51
|
+
object in OpenSees.
|
|
52
|
+
"""
|
|
53
|
+
content = super().to_py()
|
|
54
|
+
# Create the elastic materials of the hinge sections
|
|
55
|
+
idx = content.index('# Create element sections')
|
|
56
|
+
for mat_inputs in reversed(self._get_hinge_elastic_mat_inputs()):
|
|
57
|
+
mat_inputs = ', '.join(
|
|
58
|
+
repr(item) if isinstance(item, str) else str(item)
|
|
59
|
+
for item in mat_inputs
|
|
60
|
+
)
|
|
61
|
+
content.insert(idx, f"ops.uniaxialMaterial({mat_inputs})")
|
|
62
|
+
|
|
63
|
+
return content
|
|
64
|
+
|
|
65
|
+
def to_tcl(self) -> List[str]:
|
|
66
|
+
"""Gets the Tcl commands to construct column components in OpenSees
|
|
67
|
+
domain (i.e, column element and nodes).
|
|
68
|
+
|
|
69
|
+
Returns
|
|
70
|
+
-------
|
|
71
|
+
List[str]
|
|
72
|
+
List of Tcl commands for constructing the components of column
|
|
73
|
+
object in OpenSees.
|
|
74
|
+
"""
|
|
75
|
+
content = super().to_tcl()
|
|
76
|
+
# Create the elastic materials of the hinge sections
|
|
77
|
+
idx = content.index('# Create element sections')
|
|
78
|
+
for mat_inputs in reversed(self._get_hinge_elastic_mat_inputs()):
|
|
79
|
+
mat_inputs = ' '.join(f"{item}" for item in mat_inputs)
|
|
80
|
+
content.insert(idx, f"uniaxialMaterial {mat_inputs}")
|
|
81
|
+
|
|
82
|
+
return content
|
|
83
|
+
|
|
84
|
+
def _get_inelastic_sec_inputs(self) -> List[str | int]:
|
|
85
|
+
"""Retrieves inputs for inelastic aggregated column section.
|
|
86
|
+
|
|
87
|
+
Returns
|
|
88
|
+
-------
|
|
89
|
+
List[str | int]
|
|
90
|
+
List of inputs for inelastic aggregated column section, with
|
|
91
|
+
elastic P and T materials.
|
|
92
|
+
"""
|
|
93
|
+
sec_inputs = super()._get_inelastic_sec_inputs()
|
|
94
|
+
sec_inputs[2], sec_inputs[12] = self.p_mat_tag, self.t_mat_tag
|
|
95
|
+
|
|
96
|
+
return sec_inputs
|
|
97
|
+
|
|
98
|
+
def _get_elastic_sec_inputs(self) -> List[str | float | int]:
|
|
99
|
+
"""Retrieves elastic column section inputs.
|
|
100
|
+
|
|
101
|
+
Returns
|
|
102
|
+
-------
|
|
103
|
+
List[str | float | int]
|
|
104
|
+
List of elastic column section inputs.
|
|
105
|
+
|
|
106
|
+
Notes
|
|
107
|
+
-----
|
|
108
|
+
The hinges carry the part of the yield rotation that the elastic
|
|
109
|
+
interior does not (see ``_get_phiy_adjusted``). With ``cracked`` True,
|
|
110
|
+
the moments of inertia are therefore at least
|
|
111
|
+
``_get_min_interior_I``, so that the elastic interior is not more
|
|
112
|
+
flexible than the member at yield.
|
|
113
|
+
"""
|
|
114
|
+
sec_inputs = super()._get_elastic_sec_inputs()
|
|
115
|
+
if self.cracked is True:
|
|
116
|
+
sec_inputs[4] = max(sec_inputs[4], self._get_min_interior_I('x'))
|
|
117
|
+
sec_inputs[5] = max(sec_inputs[5], self._get_min_interior_I('y'))
|
|
118
|
+
|
|
119
|
+
return round_list(sec_inputs)
|
|
120
|
+
|
|
121
|
+
def _get_min_interior_I(self, axis: Literal['x', 'y']) -> float:
|
|
122
|
+
"""Gets the smallest moment of inertia of the elastic interior for
|
|
123
|
+
which the member does not exceed the yield rotation at yielding.
|
|
124
|
+
|
|
125
|
+
Parameters
|
|
126
|
+
----------
|
|
127
|
+
axis : Literal['x', 'y']
|
|
128
|
+
The local axis considered for the calculations.
|
|
129
|
+
|
|
130
|
+
Returns
|
|
131
|
+
-------
|
|
132
|
+
float
|
|
133
|
+
``My·Ls/(3·E·theta_y)`` around `axis`. With a larger moment of
|
|
134
|
+
inertia, the elastic interior gives at most ``theta_y``, and the
|
|
135
|
+
hinges the rest (see ``_get_phiy_adjusted``).
|
|
136
|
+
"""
|
|
137
|
+
props = self._get_rot_hinge_props(axis)
|
|
138
|
+
My, theta_y = abs(props[1]), abs(props[4])
|
|
139
|
+
ls = self.clear_length / 2 # Shear span, as in _get_phiy_adjusted
|
|
140
|
+
return float(My * ls / (3 * theta_y) / self.Ecm_q)
|
|
@@ -16,14 +16,18 @@ the base implementation.
|
|
|
16
16
|
|
|
17
17
|
- Beam:
|
|
18
18
|
Distributed plasticity formulation using forceBeamColumn elements
|
|
19
|
-
with Pinching4-based
|
|
20
|
-
|
|
19
|
+
with Pinching4-based moment-curvature hinges at both ends following
|
|
20
|
+
O’Reilly (2016). The hinge sections have elastic axial, torsional and
|
|
21
|
+
weak-axis flexural materials, and all sections an elastic shear
|
|
22
|
+
material with the gross shear stiffness.
|
|
21
23
|
|
|
22
24
|
- Column:
|
|
23
25
|
Distributed plasticity formulation using forceBeamColumn elements
|
|
24
|
-
with Pinching4-based
|
|
25
|
-
|
|
26
|
-
|
|
26
|
+
with Pinching4-based moment-curvature hinges about both axes following
|
|
27
|
+
O’Reilly (2016), and elastic axial and torsional materials. Shear
|
|
28
|
+
materials act along the whole member: degrading shear springs (Zimos et
|
|
29
|
+
al., 2015) for columns without capacity design for shear, elastic
|
|
30
|
+
materials with the gross shear stiffness otherwise.
|
|
27
31
|
|
|
28
32
|
- Joints:
|
|
29
33
|
Rigid, elastic, or inelastic rotational spring models
|