simdesign 1.2.0__tar.gz → 1.2.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (279) hide show
  1. {simdesign-1.2.0 → simdesign-1.2.2}/PKG-INFO +3 -2
  2. {simdesign-1.2.0 → simdesign-1.2.2}/pyproject.toml +1 -1
  3. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bcim/factory.py +1 -1
  4. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bcim/parametrization.py +17 -9
  5. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bcim/randomization.py +24 -12
  6. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/baselib/building.py +1 -1
  7. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_post18_dch/loads.py +8 -2
  8. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_post18_dcm/loads.py +8 -2
  9. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/__init__.py +2 -2
  10. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/baselib/beam.py +38 -0
  11. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/baselib/column.py +57 -0
  12. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/baselib/constants.py +5 -0
  13. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/cp01/__init__.py +17 -4
  14. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/cp03/__init__.py +5 -4
  15. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp01/__init__.py +17 -8
  16. simdesign-1.2.2/simdesign/rcmrf/bnsm/dp01/beam.py +162 -0
  17. simdesign-1.2.2/simdesign/rcmrf/bnsm/dp01/column.py +140 -0
  18. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp02/__init__.py +9 -5
  19. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp02/beam.py +135 -0
  20. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp02/column.py +73 -49
  21. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp03/__init__.py +20 -11
  22. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp03/beam.py +99 -3
  23. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp03/column.py +38 -74
  24. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp04/__init__.py +6 -18
  25. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp05/__init__.py +4 -3
  26. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp05/beam.py +51 -11
  27. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/utils/stats.py +9 -6
  28. simdesign-1.2.0/simdesign/rcmrf/bnsm/dp01/beam.py +0 -73
  29. simdesign-1.2.0/simdesign/rcmrf/bnsm/dp01/column.py +0 -68
  30. {simdesign-1.2.0 → simdesign-1.2.2}/LICENSE +0 -0
  31. {simdesign-1.2.0 → simdesign-1.2.2}/docs/README.md +0 -0
  32. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/__init__.py +0 -0
  33. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/__init__.py +0 -0
  34. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bcim/__init__.py +0 -0
  35. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bcim/data/eu_cdh.json +0 -0
  36. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bcim/data/eu_cdl.json +0 -0
  37. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bcim/data/eu_cdm.json +0 -0
  38. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bcim/data/eu_cdn.json +0 -0
  39. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bcim/data/layouts.csv +0 -0
  40. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bcim/data/tr_0018_dch.json +0 -0
  41. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bcim/data/tr_0018_dcm.json +0 -0
  42. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bcim/data/tr_7599.json +0 -0
  43. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bcim/data/tr_post18_dch.json +0 -0
  44. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bcim/data/tr_post18_dcm.json +0 -0
  45. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/__init__.py +0 -0
  46. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/baselib/__init__.py +0 -0
  47. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/baselib/analysis.py +0 -0
  48. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/baselib/beam.py +0 -0
  49. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/baselib/column.py +0 -0
  50. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/baselib/infill.py +0 -0
  51. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/baselib/joint.py +0 -0
  52. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/baselib/loads.py +0 -0
  53. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/baselib/materials.py +0 -0
  54. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/baselib/quality.py +0 -0
  55. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/baselib/rebars.py +0 -0
  56. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/baselib/slab.py +0 -0
  57. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/baselib/stairs.py +0 -0
  58. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdh/__init__.py +0 -0
  59. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdh/analysis.py +0 -0
  60. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdh/beam.py +0 -0
  61. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdh/building.py +0 -0
  62. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdh/column.py +0 -0
  63. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdh/data/loads.json +0 -0
  64. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdh/data/materials.json +0 -0
  65. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdh/data/quality.json +0 -0
  66. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdh/data/rebars.json +0 -0
  67. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdh/infill.py +0 -0
  68. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdh/joint.py +0 -0
  69. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdh/loads.py +0 -0
  70. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdh/materials.py +0 -0
  71. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdh/quality.py +0 -0
  72. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdh/rebars.py +0 -0
  73. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdh/slab.py +0 -0
  74. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdh/stairs.py +0 -0
  75. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdl/__init__.py +0 -0
  76. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdl/analysis.py +0 -0
  77. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdl/beam.py +0 -0
  78. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdl/building.py +0 -0
  79. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdl/column.py +0 -0
  80. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdl/data/loads.json +0 -0
  81. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdl/data/materials.json +0 -0
  82. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdl/data/quality.json +0 -0
  83. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdl/data/rebars.json +0 -0
  84. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdl/infill.py +0 -0
  85. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdl/joint.py +0 -0
  86. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdl/loads.py +0 -0
  87. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdl/materials.py +0 -0
  88. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdl/quality.py +0 -0
  89. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdl/rebars.py +0 -0
  90. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdl/slab.py +0 -0
  91. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdl/stairs.py +0 -0
  92. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdm/__init__.py +0 -0
  93. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdm/analysis.py +0 -0
  94. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdm/beam.py +0 -0
  95. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdm/building.py +0 -0
  96. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdm/column.py +0 -0
  97. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdm/data/loads.json +0 -0
  98. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdm/data/materials.json +0 -0
  99. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdm/data/quality.json +0 -0
  100. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdm/data/rebars.json +0 -0
  101. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdm/infill.py +0 -0
  102. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdm/joint.py +0 -0
  103. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdm/loads.py +0 -0
  104. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdm/materials.py +0 -0
  105. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdm/quality.py +0 -0
  106. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdm/rebars.py +0 -0
  107. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdm/slab.py +0 -0
  108. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdm/stairs.py +0 -0
  109. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdn/__init__.py +0 -0
  110. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdn/analysis.py +0 -0
  111. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdn/beam.py +0 -0
  112. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdn/building.py +0 -0
  113. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdn/column.py +0 -0
  114. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdn/data/loads.json +0 -0
  115. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdn/data/materials.json +0 -0
  116. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdn/data/quality.json +0 -0
  117. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdn/data/rebars.json +0 -0
  118. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdn/infill.py +0 -0
  119. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdn/joint.py +0 -0
  120. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdn/loads.py +0 -0
  121. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdn/materials.py +0 -0
  122. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdn/quality.py +0 -0
  123. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdn/rebars.py +0 -0
  124. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdn/slab.py +0 -0
  125. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/eu_cdn/stairs.py +0 -0
  126. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/factory.py +0 -0
  127. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_0018_dch/__init__.py +0 -0
  128. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_0018_dch/analysis.py +0 -0
  129. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_0018_dch/beam.py +0 -0
  130. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_0018_dch/building.py +0 -0
  131. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_0018_dch/column.py +0 -0
  132. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_0018_dch/data/loads.json +0 -0
  133. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_0018_dch/data/materials.json +0 -0
  134. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_0018_dch/data/quality.json +0 -0
  135. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_0018_dch/data/rebars.json +0 -0
  136. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_0018_dch/infill.py +0 -0
  137. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_0018_dch/joint.py +0 -0
  138. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_0018_dch/loads.py +0 -0
  139. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_0018_dch/materials.py +0 -0
  140. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_0018_dch/quality.py +0 -0
  141. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_0018_dch/rebars.py +0 -0
  142. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_0018_dch/slab.py +0 -0
  143. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_0018_dch/stairs.py +0 -0
  144. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_0018_dcm/__init__.py +0 -0
  145. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_0018_dcm/analysis.py +0 -0
  146. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_0018_dcm/beam.py +0 -0
  147. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_0018_dcm/building.py +0 -0
  148. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_0018_dcm/column.py +0 -0
  149. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_0018_dcm/data/loads.json +0 -0
  150. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_0018_dcm/data/materials.json +0 -0
  151. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_0018_dcm/data/quality.json +0 -0
  152. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_0018_dcm/data/rebars.json +0 -0
  153. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_0018_dcm/infill.py +0 -0
  154. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_0018_dcm/joint.py +0 -0
  155. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_0018_dcm/loads.py +0 -0
  156. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_0018_dcm/materials.py +0 -0
  157. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_0018_dcm/quality.py +0 -0
  158. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_0018_dcm/rebars.py +0 -0
  159. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_0018_dcm/slab.py +0 -0
  160. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_0018_dcm/stairs.py +0 -0
  161. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_7599/__init__.py +0 -0
  162. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_7599/analysis.py +0 -0
  163. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_7599/beam.py +0 -0
  164. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_7599/building.py +0 -0
  165. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_7599/column.py +0 -0
  166. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_7599/data/design_tables.json +0 -0
  167. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_7599/data/loads.json +0 -0
  168. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_7599/data/materials.json +0 -0
  169. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_7599/data/quality.json +0 -0
  170. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_7599/data/rebars.json +0 -0
  171. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_7599/infill.py +0 -0
  172. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_7599/joint.py +0 -0
  173. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_7599/loads.py +0 -0
  174. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_7599/materials.py +0 -0
  175. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_7599/quality.py +0 -0
  176. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_7599/rebars.py +0 -0
  177. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_7599/slab.py +0 -0
  178. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_7599/stairs.py +0 -0
  179. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_post18_dch/__init__.py +0 -0
  180. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_post18_dch/analysis.py +0 -0
  181. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_post18_dch/beam.py +0 -0
  182. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_post18_dch/building.py +0 -0
  183. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_post18_dch/column.py +0 -0
  184. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_post18_dch/data/loads.json +0 -0
  185. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_post18_dch/data/materials.json +0 -0
  186. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_post18_dch/data/quality.json +0 -0
  187. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_post18_dch/data/rebars.json +0 -0
  188. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_post18_dch/infill.py +0 -0
  189. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_post18_dch/joint.py +0 -0
  190. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_post18_dch/materials.py +0 -0
  191. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_post18_dch/quality.py +0 -0
  192. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_post18_dch/rebars.py +0 -0
  193. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_post18_dch/slab.py +0 -0
  194. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_post18_dch/stairs.py +0 -0
  195. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_post18_dcm/__init__.py +0 -0
  196. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_post18_dcm/analysis.py +0 -0
  197. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_post18_dcm/beam.py +0 -0
  198. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_post18_dcm/building.py +0 -0
  199. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_post18_dcm/column.py +0 -0
  200. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_post18_dcm/data/loads.json +0 -0
  201. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_post18_dcm/data/materials.json +0 -0
  202. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_post18_dcm/data/quality.json +0 -0
  203. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_post18_dcm/data/rebars.json +0 -0
  204. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_post18_dcm/infill.py +0 -0
  205. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_post18_dcm/joint.py +0 -0
  206. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_post18_dcm/materials.py +0 -0
  207. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_post18_dcm/quality.py +0 -0
  208. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_post18_dcm/rebars.py +0 -0
  209. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_post18_dcm/slab.py +0 -0
  210. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bdim/tr_post18_dcm/stairs.py +0 -0
  211. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/baselib/__init__.py +0 -0
  212. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/baselib/building.py +0 -0
  213. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/baselib/floor.py +0 -0
  214. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/baselib/foundation.py +0 -0
  215. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/baselib/infill.py +0 -0
  216. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/baselib/joint.py +0 -0
  217. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/baselib/node.py +0 -0
  218. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/cp01/beam.py +0 -0
  219. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/cp01/building.py +0 -0
  220. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/cp01/column.py +0 -0
  221. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/cp01/floor.py +0 -0
  222. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/cp01/foundation.py +0 -0
  223. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/cp01/infill.py +0 -0
  224. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/cp01/joint.py +0 -0
  225. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/cp02/__init__.py +0 -0
  226. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/cp02/beam.py +0 -0
  227. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/cp02/building.py +0 -0
  228. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/cp02/column.py +0 -0
  229. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/cp02/floor.py +0 -0
  230. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/cp02/foundation.py +0 -0
  231. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/cp02/infill.py +0 -0
  232. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/cp02/joint.py +0 -0
  233. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/cp03/beam.py +0 -0
  234. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/cp03/building.py +0 -0
  235. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/cp03/column.py +0 -0
  236. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/cp03/floor.py +0 -0
  237. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/cp03/foundation.py +0 -0
  238. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/cp03/infill.py +0 -0
  239. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/cp03/joint.py +0 -0
  240. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp01/building.py +0 -0
  241. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp01/floor.py +0 -0
  242. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp01/foundation.py +0 -0
  243. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp01/infill.py +0 -0
  244. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp01/joint.py +0 -0
  245. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp02/building.py +0 -0
  246. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp02/floor.py +0 -0
  247. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp02/foundation.py +0 -0
  248. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp02/infill.py +0 -0
  249. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp02/joint.py +0 -0
  250. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp03/building.py +0 -0
  251. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp03/floor.py +0 -0
  252. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp03/foundation.py +0 -0
  253. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp03/infill.py +0 -0
  254. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp03/joint.py +0 -0
  255. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp04/beam.py +0 -0
  256. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp04/building.py +0 -0
  257. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp04/column.py +0 -0
  258. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp04/floor.py +0 -0
  259. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp04/foundation.py +0 -0
  260. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp04/infill.py +0 -0
  261. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp04/joint.py +0 -0
  262. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp05/building.py +0 -0
  263. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp05/column.py +0 -0
  264. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp05/floor.py +0 -0
  265. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp05/foundation.py +0 -0
  266. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp05/infill.py +0 -0
  267. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/dp05/joint.py +0 -0
  268. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/bnsm/factory.py +0 -0
  269. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/geometry/__init__.py +0 -0
  270. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/geometry/base.py +0 -0
  271. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/geometry/custom.py +0 -0
  272. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/rcmrf/geometry/standard.py +0 -0
  273. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/utils/__init__.py +0 -0
  274. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/utils/mesh.py +0 -0
  275. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/utils/misc.py +0 -0
  276. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/utils/plotter.py +0 -0
  277. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/utils/rcsection.py +0 -0
  278. {simdesign-1.2.0 → simdesign-1.2.2}/simdesign/utils/tags.py +0 -0
  279. {simdesign-1.2.0 → simdesign-1.2.2}/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.2
4
4
  Summary: The built environment data (BED) framework for enhancing seismic vulnerability modeling through simulated design.
5
5
  License: AGPL-3.0-or-later
6
+ License-File: LICENSE
6
7
  Keywords: earthquake engineering,seismic design,numerical simulation,seismic vulnerability
7
8
  Author: Volkan Ozsarac
8
9
  Author-email: volkan.ozsarac@iusspavia.it
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "simdesign"
3
- version = "1.2.0"
3
+ version = "1.2.2"
4
4
  description = "The built environment data (BED) framework for enhancing seismic vulnerability modeling through simulated design."
5
5
  authors = [
6
6
  "Volkan Ozsarac <volkan.ozsarac@iusspavia.it>",
@@ -314,7 +314,7 @@ class BCIM:
314
314
  beta : List[float]
315
315
  Design lateral load factor.
316
316
  beta_v : List[float | None]
317
- Vertical load factor.
317
+ Design vertical seismic load factor.
318
318
  num_storeys : List[int]
319
319
  Number of storeys.
320
320
  design_class : List[str]
@@ -117,9 +117,12 @@ class TypicalStoreyHeight(BaseModel):
117
117
  Attributes
118
118
  ----------
119
119
  cv : float
120
- Coefficient of variation (sigma/mu).
120
+ Coefficient of variation (standard deviation / mean) of the
121
+ log-normal distribution before truncation.
121
122
  mu : float
122
- Mean value for the typical storey heights.
123
+ Mean (arithmetic) of the log-normal distribution before truncation.
124
+ The mean of the sampled typical storey heights differs from it
125
+ because of the truncation.
123
126
  lower_bound : float
124
127
  Lower bound value.
125
128
  upper_bound : float
@@ -153,24 +156,29 @@ class StandardBayWidth(BaseModel):
153
156
  Attributes
154
157
  ----------
155
158
  corr_coeff_xy : float
156
- Correlation coefficient between bay widths in two principal
157
- horizontal directions (-X and -Y).
159
+ Correlation coefficient between the standard normal variables from
160
+ which the bay widths in the two principal horizontal directions
161
+ (-X and -Y) are obtained (Gaussian copula). Because of the
162
+ truncation, the correlation between the bay widths themselves is
163
+ close to, but not equal to, it.
158
164
  lower_bound_x : float
159
165
  Lower bound of truncated log-normal distribution (-X).
160
166
  upper_bound_x : float
161
167
  Upper bound of truncated log-normal distribution (-X).
162
168
  theta_x : float
163
- Median of log-normal distribution (-X).
169
+ Median of log-normal distribution before truncation (-X).
164
170
  sigma_x : float
165
- Logarithmic standard deviation of the lognormal distribution (-X).
171
+ Logarithmic standard deviation of the lognormal distribution before
172
+ truncation (-X).
166
173
  lower_bound_y : float
167
174
  Lower bound of truncated log-normal distribution (-Y).
168
175
  upper_bound_y : float
169
176
  Upper bound of truncated log-normal distribution (-Y).
170
177
  theta_y : float
171
- Median of log-normal distribution (-Y).
178
+ Median of log-normal distribution before truncation (-Y).
172
179
  sigma_y : float
173
- Logarithmic standard deviation of the lognormal distribution (-Y).
180
+ Logarithmic standard deviation of the lognormal distribution before
181
+ truncation (-Y).
174
182
  """
175
183
  corr_coeff_xy: float
176
184
  lower_bound_x: float
@@ -235,7 +243,7 @@ class InputData(BaseModel):
235
243
  beta : float
236
244
  Design lateral load factor.
237
245
  beta_v : float | None
238
- Vertical load factor.
246
+ Design vertical seismic load factor.
239
247
  num_storeys : int
240
248
  Number of storeys in the building.
241
249
  design_class : str
@@ -125,15 +125,20 @@ class Sampler:
125
125
  """Set staircase span lengths.
126
126
 
127
127
  Staircase span lengths are represented by uniform distribution.
128
+ The samples are rounded to 0.05 m.
128
129
 
129
130
  Parameters
130
131
  ----------
131
132
  lower_bound : float
132
133
  Lower boundary of the output interval.
133
- All values generated will be greater than or equal to lower bound.
134
134
  upper_bound : float
135
135
  Upper boundary of the output interval.
136
- All values generated will be less than or equal to upper bound.
136
+
137
+ Notes
138
+ -----
139
+ The samples are drawn from [lower_bound, upper_bound) and then
140
+ rounded to 0.05 m, so they may fall slightly outside the bounds
141
+ when these are not multiples of 0.05 m.
137
142
 
138
143
  Returns
139
144
  -------
@@ -162,21 +167,24 @@ class Sampler:
162
167
  Typical span lengths are represented with truncated log-normal
163
168
  distribution. It is assumed that span lengths are correlated.
164
169
  The samples are generated from multivariate truncated lognormal
165
- distribution.
170
+ distribution, and rounded to 0.05 m.
166
171
 
167
172
  Parameters
168
173
  ----------
169
174
  corr_coeff : float
170
- Correlation coefficient (between span lengths x and y).
175
+ Correlation coefficient between the standard normal variables
176
+ from which the span lengths in x and y are obtained (Gaussian
177
+ copula). Because of the truncation, the correlation between
178
+ the span lengths themselves is close to, but not equal to, it.
171
179
  lower_bound : Tuple[float]
172
180
  Lower bound for truncated log-normal distribution (x, y).
173
181
  upper_bound : Tuple[float]
174
182
  Upper bound for truncated log-normal distribution (x, y).
175
183
  theta : Tuple[float]
176
- Median of log-normal distribution.
184
+ Median of the log-normal distribution before truncation (x, y).
177
185
  std_ln : Tuple[float]
178
186
  Logarithmic standard deviation of the log-normal
179
- distribution (x, y).
187
+ distribution before truncation (x, y).
180
188
 
181
189
  Notes
182
190
  -----
@@ -248,14 +256,17 @@ class Sampler:
248
256
  """Set typical storey heights.
249
257
 
250
258
  Typical storey heights are represented with truncated log-normal
251
- distribution.
259
+ distribution. The samples are rounded to 0.05 m.
252
260
 
253
261
  Parameters
254
262
  ----------
255
263
  cv : float
256
- Coefficient of variation, s/mu.
264
+ Coefficient of variation (standard deviation / mean) of the
265
+ log-normal distribution before truncation.
257
266
  mu : float
258
- Mean of normal distribution.
267
+ Mean (arithmetic, not logarithmic) of the log-normal
268
+ distribution before truncation. The mean of the samples
269
+ differs from it because of the truncation.
259
270
  lower_bound : float
260
271
  Lower bound of truncated log-normal distribution.
261
272
  upper_bound : float
@@ -310,8 +321,9 @@ class Sampler:
310
321
 
311
322
  Notes
312
323
  -----
313
- 1. `ground_storey_height = min(factor * typical_storey_heights,
314
- max_height)`
324
+ 1. `ground_storey_height = min(round_005(factor *
325
+ typical_storey_heights), max_height)`, where `round_005` rounds to
326
+ 0.05 m.
315
327
  2. Factors have different probabilities.
316
328
 
317
329
  Examples
@@ -370,7 +382,7 @@ class Sampler:
370
382
  Composite slabs with pre-fabricated joists and ceramic blocks (3: HS).
371
383
  2. Slab type is assigned as HS, if minimum span length is greater than
372
384
  the upper limit for minimum solid slab span length
373
- (minimum span length <= `max_ss_short_span`).
385
+ (minimum span length > `max_ss_short_span`).
374
386
  3. Otherwise, if the ratio of maximum to minimum span lengths is
375
387
  greater or equal to `max_ss2_aspect_ratio`, slab type is
376
388
  randomly as SS1 or HS based on `ss1_prob_given_ss1_or_hs`.
@@ -70,7 +70,7 @@ class TaxonomyData:
70
70
  design_class : str
71
71
  Building design class selected.
72
72
  beta_v : float, optional
73
- Vertical load factor. By default None.
73
+ Design vertical seismic load factor. By default None.
74
74
  staircase_slab_depth : float, optional
75
75
  Depth of the staircase slabs. By default None.
76
76
  slab_thickness : float, optional
@@ -115,13 +115,19 @@ class Loads(LoadsBase):
115
115
  beta_v : float | None
116
116
  Vertical seismic coefficient. If None, it is taken as 0.0, i.e.,
117
117
  the vertical load effect is neglected.
118
+
119
+ Notes
120
+ -----
121
+ Seismic loading is added in vertical direction based on Sections
122
+ 4.4.3.2 and 4.4.4.1 of TBEC-2018. Here, ``beta_v`` refers to the
123
+ short-period design spectral acceleration coefficient (SDS).
118
124
  """
119
125
  if beta_v is None:
120
126
  beta_v = 0.0
121
127
  seismic_strs = ["E+X", "E-X", "E+Y", "E-Y"]
122
128
  for combo in self.combinations:
123
129
  if any(item in seismic_strs for item in combo.loads.keys()):
124
- if combo.loads.get("G") == 1.0:
130
+ if combo.loads.get("G") == 1.0: # Eqn. 4.11
125
131
  combo.loads["G"] = round(1.0 + 0.3 * (2/3) * beta_v, 2)
126
- elif combo.loads.get("G") == 0.9:
132
+ elif combo.loads.get("G") == 0.9: # Eqn. 4.12
127
133
  combo.loads["G"] = round(0.9 - 0.3 * (2/3) * beta_v, 2)
@@ -115,13 +115,19 @@ class Loads(LoadsBase):
115
115
  beta_v : float | None
116
116
  Vertical seismic coefficient. If None, it is taken as 0.0, i.e.,
117
117
  the vertical load effect is neglected.
118
+
119
+ Notes
120
+ -----
121
+ Seismic loading is added in vertical direction based on Sections
122
+ 4.4.3.2 and 4.4.4.1 of TBEC-2018. Here, ``beta_v`` refers to the
123
+ short-period design spectral acceleration coefficient (SDS).
118
124
  """
119
125
  if beta_v is None:
120
126
  beta_v = 0.0
121
127
  seismic_strs = ["E+X", "E-X", "E+Y", "E-Y"]
122
128
  for combo in self.combinations:
123
129
  if any(item in seismic_strs for item in combo.loads.keys()):
124
- if combo.loads.get("G") == 1.0:
130
+ if combo.loads.get("G") == 1.0: # Eqn. 4.11
125
131
  combo.loads["G"] = round(1.0 + 0.3 * (2/3) * beta_v, 2)
126
- elif combo.loads.get("G") == 0.9:
132
+ elif combo.loads.get("G") == 0.9: # Eqn. 4.12
127
133
  combo.loads["G"] = round(0.9 - 0.3 * (2/3) * beta_v, 2)
@@ -8,8 +8,8 @@ modelling strategy (e.g., CP01, DP03) based on the selected model type.
8
8
 
9
9
  Example
10
10
  -------
11
- >>> from 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)