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.
Files changed (279) hide show
  1. {simdesign-1.2.0 → simdesign-1.2.1}/PKG-INFO +3 -2
  2. {simdesign-1.2.0 → simdesign-1.2.1}/pyproject.toml +1 -1
  3. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/__init__.py +2 -2
  4. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/baselib/beam.py +38 -0
  5. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/baselib/column.py +57 -0
  6. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/baselib/constants.py +5 -0
  7. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/cp01/__init__.py +17 -4
  8. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/cp03/__init__.py +5 -4
  9. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp01/__init__.py +17 -8
  10. simdesign-1.2.1/simdesign/rcmrf/bnsm/dp01/beam.py +162 -0
  11. simdesign-1.2.1/simdesign/rcmrf/bnsm/dp01/column.py +140 -0
  12. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp02/__init__.py +9 -5
  13. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp02/beam.py +135 -0
  14. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp02/column.py +73 -49
  15. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp03/__init__.py +20 -11
  16. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp03/beam.py +99 -3
  17. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp03/column.py +38 -74
  18. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp04/__init__.py +6 -18
  19. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp05/__init__.py +4 -3
  20. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp05/beam.py +51 -11
  21. simdesign-1.2.0/simdesign/rcmrf/bnsm/dp01/beam.py +0 -73
  22. simdesign-1.2.0/simdesign/rcmrf/bnsm/dp01/column.py +0 -68
  23. {simdesign-1.2.0 → simdesign-1.2.1}/LICENSE +0 -0
  24. {simdesign-1.2.0 → simdesign-1.2.1}/docs/README.md +0 -0
  25. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/__init__.py +0 -0
  26. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/__init__.py +0 -0
  27. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bcim/__init__.py +0 -0
  28. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bcim/data/eu_cdh.json +0 -0
  29. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bcim/data/eu_cdl.json +0 -0
  30. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bcim/data/eu_cdm.json +0 -0
  31. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bcim/data/eu_cdn.json +0 -0
  32. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bcim/data/layouts.csv +0 -0
  33. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bcim/data/tr_0018_dch.json +0 -0
  34. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bcim/data/tr_0018_dcm.json +0 -0
  35. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bcim/data/tr_7599.json +0 -0
  36. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bcim/data/tr_post18_dch.json +0 -0
  37. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bcim/data/tr_post18_dcm.json +0 -0
  38. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bcim/factory.py +0 -0
  39. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bcim/parametrization.py +0 -0
  40. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bcim/randomization.py +0 -0
  41. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/__init__.py +0 -0
  42. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/baselib/__init__.py +0 -0
  43. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/baselib/analysis.py +0 -0
  44. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/baselib/beam.py +0 -0
  45. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/baselib/building.py +0 -0
  46. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/baselib/column.py +0 -0
  47. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/baselib/infill.py +0 -0
  48. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/baselib/joint.py +0 -0
  49. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/baselib/loads.py +0 -0
  50. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/baselib/materials.py +0 -0
  51. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/baselib/quality.py +0 -0
  52. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/baselib/rebars.py +0 -0
  53. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/baselib/slab.py +0 -0
  54. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/baselib/stairs.py +0 -0
  55. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdh/__init__.py +0 -0
  56. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdh/analysis.py +0 -0
  57. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdh/beam.py +0 -0
  58. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdh/building.py +0 -0
  59. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdh/column.py +0 -0
  60. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdh/data/loads.json +0 -0
  61. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdh/data/materials.json +0 -0
  62. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdh/data/quality.json +0 -0
  63. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdh/data/rebars.json +0 -0
  64. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdh/infill.py +0 -0
  65. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdh/joint.py +0 -0
  66. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdh/loads.py +0 -0
  67. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdh/materials.py +0 -0
  68. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdh/quality.py +0 -0
  69. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdh/rebars.py +0 -0
  70. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdh/slab.py +0 -0
  71. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdh/stairs.py +0 -0
  72. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdl/__init__.py +0 -0
  73. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdl/analysis.py +0 -0
  74. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdl/beam.py +0 -0
  75. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdl/building.py +0 -0
  76. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdl/column.py +0 -0
  77. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdl/data/loads.json +0 -0
  78. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdl/data/materials.json +0 -0
  79. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdl/data/quality.json +0 -0
  80. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdl/data/rebars.json +0 -0
  81. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdl/infill.py +0 -0
  82. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdl/joint.py +0 -0
  83. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdl/loads.py +0 -0
  84. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdl/materials.py +0 -0
  85. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdl/quality.py +0 -0
  86. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdl/rebars.py +0 -0
  87. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdl/slab.py +0 -0
  88. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdl/stairs.py +0 -0
  89. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdm/__init__.py +0 -0
  90. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdm/analysis.py +0 -0
  91. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdm/beam.py +0 -0
  92. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdm/building.py +0 -0
  93. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdm/column.py +0 -0
  94. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdm/data/loads.json +0 -0
  95. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdm/data/materials.json +0 -0
  96. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdm/data/quality.json +0 -0
  97. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdm/data/rebars.json +0 -0
  98. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdm/infill.py +0 -0
  99. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdm/joint.py +0 -0
  100. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdm/loads.py +0 -0
  101. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdm/materials.py +0 -0
  102. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdm/quality.py +0 -0
  103. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdm/rebars.py +0 -0
  104. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdm/slab.py +0 -0
  105. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdm/stairs.py +0 -0
  106. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdn/__init__.py +0 -0
  107. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdn/analysis.py +0 -0
  108. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdn/beam.py +0 -0
  109. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdn/building.py +0 -0
  110. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdn/column.py +0 -0
  111. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdn/data/loads.json +0 -0
  112. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdn/data/materials.json +0 -0
  113. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdn/data/quality.json +0 -0
  114. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdn/data/rebars.json +0 -0
  115. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdn/infill.py +0 -0
  116. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdn/joint.py +0 -0
  117. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdn/loads.py +0 -0
  118. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdn/materials.py +0 -0
  119. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdn/quality.py +0 -0
  120. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdn/rebars.py +0 -0
  121. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdn/slab.py +0 -0
  122. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/eu_cdn/stairs.py +0 -0
  123. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/factory.py +0 -0
  124. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_0018_dch/__init__.py +0 -0
  125. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_0018_dch/analysis.py +0 -0
  126. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_0018_dch/beam.py +0 -0
  127. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_0018_dch/building.py +0 -0
  128. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_0018_dch/column.py +0 -0
  129. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_0018_dch/data/loads.json +0 -0
  130. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_0018_dch/data/materials.json +0 -0
  131. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_0018_dch/data/quality.json +0 -0
  132. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_0018_dch/data/rebars.json +0 -0
  133. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_0018_dch/infill.py +0 -0
  134. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_0018_dch/joint.py +0 -0
  135. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_0018_dch/loads.py +0 -0
  136. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_0018_dch/materials.py +0 -0
  137. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_0018_dch/quality.py +0 -0
  138. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_0018_dch/rebars.py +0 -0
  139. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_0018_dch/slab.py +0 -0
  140. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_0018_dch/stairs.py +0 -0
  141. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_0018_dcm/__init__.py +0 -0
  142. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_0018_dcm/analysis.py +0 -0
  143. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_0018_dcm/beam.py +0 -0
  144. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_0018_dcm/building.py +0 -0
  145. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_0018_dcm/column.py +0 -0
  146. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_0018_dcm/data/loads.json +0 -0
  147. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_0018_dcm/data/materials.json +0 -0
  148. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_0018_dcm/data/quality.json +0 -0
  149. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_0018_dcm/data/rebars.json +0 -0
  150. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_0018_dcm/infill.py +0 -0
  151. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_0018_dcm/joint.py +0 -0
  152. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_0018_dcm/loads.py +0 -0
  153. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_0018_dcm/materials.py +0 -0
  154. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_0018_dcm/quality.py +0 -0
  155. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_0018_dcm/rebars.py +0 -0
  156. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_0018_dcm/slab.py +0 -0
  157. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_0018_dcm/stairs.py +0 -0
  158. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_7599/__init__.py +0 -0
  159. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_7599/analysis.py +0 -0
  160. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_7599/beam.py +0 -0
  161. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_7599/building.py +0 -0
  162. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_7599/column.py +0 -0
  163. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_7599/data/design_tables.json +0 -0
  164. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_7599/data/loads.json +0 -0
  165. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_7599/data/materials.json +0 -0
  166. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_7599/data/quality.json +0 -0
  167. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_7599/data/rebars.json +0 -0
  168. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_7599/infill.py +0 -0
  169. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_7599/joint.py +0 -0
  170. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_7599/loads.py +0 -0
  171. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_7599/materials.py +0 -0
  172. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_7599/quality.py +0 -0
  173. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_7599/rebars.py +0 -0
  174. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_7599/slab.py +0 -0
  175. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_7599/stairs.py +0 -0
  176. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_post18_dch/__init__.py +0 -0
  177. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_post18_dch/analysis.py +0 -0
  178. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_post18_dch/beam.py +0 -0
  179. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_post18_dch/building.py +0 -0
  180. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_post18_dch/column.py +0 -0
  181. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_post18_dch/data/loads.json +0 -0
  182. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_post18_dch/data/materials.json +0 -0
  183. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_post18_dch/data/quality.json +0 -0
  184. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_post18_dch/data/rebars.json +0 -0
  185. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_post18_dch/infill.py +0 -0
  186. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_post18_dch/joint.py +0 -0
  187. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_post18_dch/loads.py +0 -0
  188. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_post18_dch/materials.py +0 -0
  189. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_post18_dch/quality.py +0 -0
  190. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_post18_dch/rebars.py +0 -0
  191. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_post18_dch/slab.py +0 -0
  192. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_post18_dch/stairs.py +0 -0
  193. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_post18_dcm/__init__.py +0 -0
  194. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_post18_dcm/analysis.py +0 -0
  195. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_post18_dcm/beam.py +0 -0
  196. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_post18_dcm/building.py +0 -0
  197. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_post18_dcm/column.py +0 -0
  198. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_post18_dcm/data/loads.json +0 -0
  199. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_post18_dcm/data/materials.json +0 -0
  200. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_post18_dcm/data/quality.json +0 -0
  201. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_post18_dcm/data/rebars.json +0 -0
  202. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_post18_dcm/infill.py +0 -0
  203. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_post18_dcm/joint.py +0 -0
  204. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_post18_dcm/loads.py +0 -0
  205. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_post18_dcm/materials.py +0 -0
  206. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_post18_dcm/quality.py +0 -0
  207. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_post18_dcm/rebars.py +0 -0
  208. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_post18_dcm/slab.py +0 -0
  209. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bdim/tr_post18_dcm/stairs.py +0 -0
  210. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/baselib/__init__.py +0 -0
  211. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/baselib/building.py +0 -0
  212. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/baselib/floor.py +0 -0
  213. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/baselib/foundation.py +0 -0
  214. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/baselib/infill.py +0 -0
  215. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/baselib/joint.py +0 -0
  216. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/baselib/node.py +0 -0
  217. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/cp01/beam.py +0 -0
  218. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/cp01/building.py +0 -0
  219. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/cp01/column.py +0 -0
  220. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/cp01/floor.py +0 -0
  221. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/cp01/foundation.py +0 -0
  222. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/cp01/infill.py +0 -0
  223. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/cp01/joint.py +0 -0
  224. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/cp02/__init__.py +0 -0
  225. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/cp02/beam.py +0 -0
  226. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/cp02/building.py +0 -0
  227. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/cp02/column.py +0 -0
  228. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/cp02/floor.py +0 -0
  229. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/cp02/foundation.py +0 -0
  230. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/cp02/infill.py +0 -0
  231. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/cp02/joint.py +0 -0
  232. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/cp03/beam.py +0 -0
  233. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/cp03/building.py +0 -0
  234. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/cp03/column.py +0 -0
  235. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/cp03/floor.py +0 -0
  236. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/cp03/foundation.py +0 -0
  237. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/cp03/infill.py +0 -0
  238. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/cp03/joint.py +0 -0
  239. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp01/building.py +0 -0
  240. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp01/floor.py +0 -0
  241. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp01/foundation.py +0 -0
  242. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp01/infill.py +0 -0
  243. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp01/joint.py +0 -0
  244. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp02/building.py +0 -0
  245. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp02/floor.py +0 -0
  246. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp02/foundation.py +0 -0
  247. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp02/infill.py +0 -0
  248. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp02/joint.py +0 -0
  249. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp03/building.py +0 -0
  250. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp03/floor.py +0 -0
  251. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp03/foundation.py +0 -0
  252. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp03/infill.py +0 -0
  253. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp03/joint.py +0 -0
  254. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp04/beam.py +0 -0
  255. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp04/building.py +0 -0
  256. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp04/column.py +0 -0
  257. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp04/floor.py +0 -0
  258. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp04/foundation.py +0 -0
  259. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp04/infill.py +0 -0
  260. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp04/joint.py +0 -0
  261. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp05/building.py +0 -0
  262. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp05/column.py +0 -0
  263. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp05/floor.py +0 -0
  264. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp05/foundation.py +0 -0
  265. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp05/infill.py +0 -0
  266. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/dp05/joint.py +0 -0
  267. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/bnsm/factory.py +0 -0
  268. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/geometry/__init__.py +0 -0
  269. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/geometry/base.py +0 -0
  270. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/geometry/custom.py +0 -0
  271. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/rcmrf/geometry/standard.py +0 -0
  272. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/utils/__init__.py +0 -0
  273. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/utils/mesh.py +0 -0
  274. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/utils/misc.py +0 -0
  275. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/utils/plotter.py +0 -0
  276. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/utils/rcsection.py +0 -0
  277. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/utils/stats.py +0 -0
  278. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/utils/tags.py +0 -0
  279. {simdesign-1.2.0 → simdesign-1.2.1}/simdesign/utils/units.py +0 -0
@@ -1,8 +1,9 @@
1
- Metadata-Version: 2.3
1
+ Metadata-Version: 2.4
2
2
  Name: simdesign
3
- Version: 1.2.0
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.0"
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 bnsm import BNSM
12
- >>> model = BNSM(model="CP03", ...)
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) with optional degrading
19
- shear behaviour (Elwood & Moehle, 2003) using LimitState material
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 elastic interior beam element.
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 an elastic interior column element.
26
- Flexural hinge behaviour follows CP01, with optional
27
- degrading shear hinges supported through the inherited CP01 Column.
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 directly from the base implementations
10
- in `bnsm.baselib`. Accordingly, for beams and columns, DP01 employs force-based
11
- beam-column elements with distributed plasticity over a finite plastic-hinge
12
- length computed in accordance with Priestley et al. (2007).
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 and aggregated section behaviour
19
- (identical to the base implementation).
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 flexural and optional degrading shear behaviour
24
- (identical to the base implementation).
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 flexural hinge behaviour at both ends
20
- following O’Reilly (2016).
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 flexural hinge behaviour at both ends
25
- following O’Reilly (2016). Optional degrading shear behaviour is
26
- inherited from the base implementation.
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