structuraid_core 0.1.1 → 0.1.2
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.
- checksums.yaml +4 -4
- data/lib/structuraid_core/design_codes/aci_318_19/rc/footings/punching_shear_capacity.rb +81 -0
- data/lib/structuraid_core/design_codes/nsr_10/rc/footings/punching_shear_capacity.rb +71 -0
- data/lib/structuraid_core/design_codes/schemas/rc/footings/punching_shear_capacity_schema.rb +25 -0
- data/lib/structuraid_core/design_codes/utils/code_requirement.rb +3 -0
- data/lib/structuraid_core/errors/design_codes/unrecognized_value_error.rb +9 -0
- data/lib/structuraid_core/version.rb +1 -1
- metadata +10 -7
- data/structuraid_core.gemspec +0 -50
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b01de831b96f114f85f1e9b0942bb793140c50425a564bad135ce06cb2b56554
|
4
|
+
data.tar.gz: 8bf897de647fe493060877279819266f495ee72cbaa843d815d588c7b8346932
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c4804e1b46845546e655da89afb6a5f37909226001645ce0117b2a6cc4bb29992a818c900541eb7e9bd49934feeb208eabf1519c344fac24e481b6a65a995d34
|
7
|
+
data.tar.gz: 5498aca686ae447b04c983aca955e3008de5e83f8c63105001ec7ceb59858bf3904c91e71d88ba2d15847efa7a29408204ac75caaf92e9b66c7781153f1feac7
|
@@ -0,0 +1,81 @@
|
|
1
|
+
module StructuraidCore
|
2
|
+
module DesignCodes
|
3
|
+
module ACI31819
|
4
|
+
module RC
|
5
|
+
module Footings
|
6
|
+
class PunchingShearCapacity
|
7
|
+
COLUMN_LOCATION_FACTORS = {
|
8
|
+
interior: 40,
|
9
|
+
border: 30,
|
10
|
+
corner: 20
|
11
|
+
}.freeze
|
12
|
+
|
13
|
+
include DesignCodes::Utils::CodeRequirement
|
14
|
+
use_schema DesignCodes::Schemas::RC::Footings::PunchingShearCapacitySchema
|
15
|
+
|
16
|
+
# ACI 318-19 22.6.5.2
|
17
|
+
def call
|
18
|
+
[
|
19
|
+
basic_shear_capacity,
|
20
|
+
shear_capacity_modified_by_column_size,
|
21
|
+
shear_capacity_modified_by_column_location
|
22
|
+
].min
|
23
|
+
end
|
24
|
+
|
25
|
+
private
|
26
|
+
|
27
|
+
def basic_shear_capacity
|
28
|
+
@basic_shear_capacity ||= 0.33 * Math.sqrt(design_compression_strength) *
|
29
|
+
light_concrete_modification_factor *
|
30
|
+
critical_section_perimeter *
|
31
|
+
effective_height *
|
32
|
+
size_effect_factor
|
33
|
+
end
|
34
|
+
|
35
|
+
def shear_capacity_modified_by_column_size
|
36
|
+
@shear_capacity_modified_by_column_size ||= 0.17 * Math.sqrt(design_compression_strength) *
|
37
|
+
light_concrete_modification_factor *
|
38
|
+
critical_section_perimeter *
|
39
|
+
effective_height *
|
40
|
+
(1 + 2 / column_aspect_ratio) *
|
41
|
+
size_effect_factor
|
42
|
+
end
|
43
|
+
|
44
|
+
def shear_capacity_modified_by_column_location
|
45
|
+
@shear_capacity_modified_by_column_location ||= 0.083 * Math.sqrt(design_compression_strength) *
|
46
|
+
light_concrete_modification_factor *
|
47
|
+
critical_section_perimeter *
|
48
|
+
effective_height *
|
49
|
+
column_location_factor *
|
50
|
+
size_effect_factor
|
51
|
+
end
|
52
|
+
|
53
|
+
def column_aspect_ratio
|
54
|
+
@column_aspect_ratio ||= column_sizes.max / column_sizes.min
|
55
|
+
end
|
56
|
+
|
57
|
+
def column_sizes
|
58
|
+
@column_sizes ||= [column_section_width.to_f, column_section_height.to_f]
|
59
|
+
end
|
60
|
+
|
61
|
+
def column_location_factor
|
62
|
+
unless COLUMN_LOCATION_FACTORS.keys.include?(column_location)
|
63
|
+
raise DesignCodes::UnrecognizedValueError.new('column_location', column_location)
|
64
|
+
end
|
65
|
+
|
66
|
+
@column_location_factor ||= COLUMN_LOCATION_FACTORS[column_location].to_f *
|
67
|
+
effective_height / critical_section_perimeter + 2
|
68
|
+
end
|
69
|
+
|
70
|
+
def size_effect_factor
|
71
|
+
@size_effect_factor ||= [
|
72
|
+
1.0,
|
73
|
+
Math.sqrt(2 / (1 + 0.004 * effective_height))
|
74
|
+
].min
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
module StructuraidCore
|
2
|
+
module DesignCodes
|
3
|
+
module NSR10
|
4
|
+
module RC
|
5
|
+
module Footings
|
6
|
+
class PunchingShearCapacity
|
7
|
+
COLUMN_LOCATION_FACTORS = {
|
8
|
+
interior: 40,
|
9
|
+
border: 30,
|
10
|
+
corner: 20
|
11
|
+
}.freeze
|
12
|
+
|
13
|
+
include DesignCodes::Utils::CodeRequirement
|
14
|
+
use_schema DesignCodes::Schemas::RC::Footings::PunchingShearCapacitySchema
|
15
|
+
|
16
|
+
# NSR-10 C.11.11.2.1
|
17
|
+
def call
|
18
|
+
[
|
19
|
+
basic_shear_capacity,
|
20
|
+
shear_capacity_modified_by_column_size,
|
21
|
+
shear_capacity_modified_by_column_location
|
22
|
+
].min
|
23
|
+
end
|
24
|
+
|
25
|
+
private
|
26
|
+
|
27
|
+
def basic_shear_capacity
|
28
|
+
@basic_shear_capacity ||= 0.33 * Math.sqrt(design_compression_strength) *
|
29
|
+
light_concrete_modification_factor *
|
30
|
+
critical_section_perimeter *
|
31
|
+
effective_height
|
32
|
+
end
|
33
|
+
|
34
|
+
def shear_capacity_modified_by_column_size
|
35
|
+
@shear_capacity_modified_by_column_size ||= 0.17 * Math.sqrt(design_compression_strength) *
|
36
|
+
light_concrete_modification_factor *
|
37
|
+
critical_section_perimeter *
|
38
|
+
effective_height *
|
39
|
+
(1 + 2 / column_aspect_ratio)
|
40
|
+
end
|
41
|
+
|
42
|
+
def shear_capacity_modified_by_column_location
|
43
|
+
@shear_capacity_modified_by_column_location ||= 0.083 * Math.sqrt(design_compression_strength) *
|
44
|
+
light_concrete_modification_factor *
|
45
|
+
critical_section_perimeter *
|
46
|
+
effective_height *
|
47
|
+
column_location_factor
|
48
|
+
end
|
49
|
+
|
50
|
+
def column_aspect_ratio
|
51
|
+
@column_aspect_ratio ||= column_sizes.max / column_sizes.min
|
52
|
+
end
|
53
|
+
|
54
|
+
def column_sizes
|
55
|
+
@column_sizes ||= [column_section_width.to_f, column_section_height.to_f]
|
56
|
+
end
|
57
|
+
|
58
|
+
def column_location_factor
|
59
|
+
unless COLUMN_LOCATION_FACTORS.keys.include?(column_location)
|
60
|
+
raise DesignCodes::UnrecognizedValueError.new('column_location', column_location)
|
61
|
+
end
|
62
|
+
|
63
|
+
@column_location_factor ||= COLUMN_LOCATION_FACTORS[column_location].to_f *
|
64
|
+
effective_height / critical_section_perimeter + 2
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module StructuraidCore
|
2
|
+
module DesignCodes
|
3
|
+
module Schemas
|
4
|
+
module RC
|
5
|
+
module Footings
|
6
|
+
class PunchingShearCapacitySchema
|
7
|
+
include DesignCodes::Utils::SchemaDefinition
|
8
|
+
|
9
|
+
required_params %i[
|
10
|
+
column_section_width
|
11
|
+
column_section_height
|
12
|
+
design_compression_strength
|
13
|
+
critical_section_perimeter
|
14
|
+
effective_height
|
15
|
+
light_concrete_modification_factor
|
16
|
+
column_location
|
17
|
+
]
|
18
|
+
|
19
|
+
optional_params []
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -18,6 +18,9 @@ module StructuraidCore
|
|
18
18
|
def call(params = {})
|
19
19
|
schema_klass.validate!(params)
|
20
20
|
sanitized_params = schema_klass.structurize(params)
|
21
|
+
sanitized_params.members.each do |param_name|
|
22
|
+
define_method(param_name) { sanitized_params[param_name] }
|
23
|
+
end
|
21
24
|
|
22
25
|
obj = new(sanitized_params)
|
23
26
|
obj.call
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: structuraid_core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pradaing
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-03-
|
11
|
+
date: 2023-03-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: byebug
|
@@ -144,11 +144,14 @@ files:
|
|
144
144
|
- lib/structuraid_core/db/base.rb
|
145
145
|
- lib/structuraid_core/db/rebars.yml
|
146
146
|
- lib/structuraid_core/design_codes/aci_318_19/rc/elastic_modulus.rb
|
147
|
+
- lib/structuraid_core/design_codes/aci_318_19/rc/footings/punching_shear_capacity.rb
|
147
148
|
- lib/structuraid_core/design_codes/base.rb
|
148
149
|
- lib/structuraid_core/design_codes/nsr_10/rc/elastic_modulus.rb
|
150
|
+
- lib/structuraid_core/design_codes/nsr_10/rc/footings/punching_shear_capacity.rb
|
149
151
|
- lib/structuraid_core/design_codes/resolver.rb
|
150
152
|
- lib/structuraid_core/design_codes/schemas/empty_schema.rb
|
151
153
|
- lib/structuraid_core/design_codes/schemas/rc/elastic_modulus_schema.rb
|
154
|
+
- lib/structuraid_core/design_codes/schemas/rc/footings/punching_shear_capacity_schema.rb
|
152
155
|
- lib/structuraid_core/design_codes/utils/code_requirement.rb
|
153
156
|
- lib/structuraid_core/design_codes/utils/schema_definition.rb
|
154
157
|
- lib/structuraid_core/elements/base.rb
|
@@ -170,6 +173,7 @@ files:
|
|
170
173
|
- lib/structuraid_core/errors/base.rb
|
171
174
|
- lib/structuraid_core/errors/design_codes/missing_param_error.rb
|
172
175
|
- lib/structuraid_core/errors/design_codes/unknown_design_code_error.rb
|
176
|
+
- lib/structuraid_core/errors/design_codes/unrecognized_value_error.rb
|
173
177
|
- lib/structuraid_core/errors/engineering/analysis/section_direction_error.rb
|
174
178
|
- lib/structuraid_core/errors/reinforcement/empty_layers.rb
|
175
179
|
- lib/structuraid_core/errors/reinforcement/invalid_distribution_direction.rb
|
@@ -182,7 +186,6 @@ files:
|
|
182
186
|
- lib/structuraid_core/materials/steel.rb
|
183
187
|
- lib/structuraid_core/version.rb
|
184
188
|
- sig/structuraid_core.rbs
|
185
|
-
- structuraid_core.gemspec
|
186
189
|
homepage: https://github.com/PradaIng/structuraid-core
|
187
190
|
licenses:
|
188
191
|
- MIT
|
@@ -190,7 +193,7 @@ metadata:
|
|
190
193
|
homepage_uri: https://github.com/PradaIng/structuraid-core
|
191
194
|
source_code_uri: https://github.com/PradaIng/structuraid-core
|
192
195
|
changelog_uri: https://github.com/PradaIng/structuraid-core/blob/main/CHANGELOG.md
|
193
|
-
post_install_message:
|
196
|
+
post_install_message:
|
194
197
|
rdoc_options: []
|
195
198
|
require_paths:
|
196
199
|
- lib
|
@@ -205,8 +208,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
205
208
|
- !ruby/object:Gem::Version
|
206
209
|
version: '0'
|
207
210
|
requirements: []
|
208
|
-
rubygems_version: 3.3.
|
209
|
-
signing_key:
|
211
|
+
rubygems_version: 3.3.26
|
212
|
+
signing_key:
|
210
213
|
specification_version: 4
|
211
214
|
summary: Gem with core utilities and functionality to design building structures
|
212
215
|
test_files: []
|
data/structuraid_core.gemspec
DELETED
@@ -1,50 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require_relative 'lib/structuraid_core/version'
|
4
|
-
|
5
|
-
Gem::Specification.new do |spec|
|
6
|
-
spec.name = 'structuraid_core'
|
7
|
-
spec.version = StructuraidCore::VERSION
|
8
|
-
spec.authors = ['Pradaing']
|
9
|
-
spec.email = ['engineering@pradic.co']
|
10
|
-
|
11
|
-
spec.summary = 'Gem with core utilities and functionality to design building structures'
|
12
|
-
|
13
|
-
description = <<-DESCRIPTION
|
14
|
-
structuraid_core is a gem that offers a set of functionalities to assist in the design building structures.
|
15
|
-
DESCRIPTION
|
16
|
-
spec.description = description.strip
|
17
|
-
|
18
|
-
spec.homepage = 'https://github.com/PradaIng/structuraid-core'
|
19
|
-
spec.license = 'MIT'
|
20
|
-
spec.required_ruby_version = '>= 3.1.2'
|
21
|
-
|
22
|
-
# spec.metadata["allowed_push_host"] = "TODO: Set to your gem server 'https://example.com'"
|
23
|
-
spec.metadata['homepage_uri'] = spec.homepage
|
24
|
-
spec.metadata['source_code_uri'] = spec.homepage
|
25
|
-
spec.metadata['changelog_uri'] = 'https://github.com/PradaIng/structuraid-core/blob/main/CHANGELOG.md'
|
26
|
-
|
27
|
-
# Specify which files should be added to the gem when it is released.
|
28
|
-
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
29
|
-
spec.files = Dir.chdir(__dir__) do
|
30
|
-
`git ls-files -z`.split("\x0").reject do |f|
|
31
|
-
(f == __FILE__) || f.match(%r{\A(?:(?:bin|test|spec|features)/|\.(?:git|travis|circleci)|appveyor)})
|
32
|
-
end
|
33
|
-
end
|
34
|
-
spec.bindir = 'exe'
|
35
|
-
spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
|
36
|
-
spec.require_paths = ['lib']
|
37
|
-
|
38
|
-
spec.add_development_dependency 'byebug', '~> 11.1.3'
|
39
|
-
spec.add_development_dependency 'guard-rspec', '~> 4.7.3'
|
40
|
-
spec.add_development_dependency 'rspec', '~> 3.11.0'
|
41
|
-
spec.add_development_dependency 'rubocop', '~> 1.41.1'
|
42
|
-
spec.add_development_dependency 'rubocop-rspec', '~> 2.16.0'
|
43
|
-
spec.add_development_dependency 'simplecov', '~> 0.22.0'
|
44
|
-
|
45
|
-
spec.add_dependency 'rake', '~> 13.0.6'
|
46
|
-
spec.add_dependency 'require_all', '~> 3.0.0'
|
47
|
-
|
48
|
-
# For more information and examples about making a new gem, check out our
|
49
|
-
# guide at: https://bundler.io/guides/creating_gem.html
|
50
|
-
end
|