structuraid_core 0.2.0 → 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +4 -3
- data/lib/structuraid_core/elements/footing.rb +32 -1
- data/lib/structuraid_core/version.rb +1 -1
- metadata +44 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 52e1d580435e0d2bf0733e1fad89ee3b9dca50cc06c2b2ab7690506ca07b645c
|
4
|
+
data.tar.gz: aca94e0d33c988f93d3426046ae85b7d5a806334fd5cb96d8d429911cadbb402
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fc35e87f4b023db340e437b4f62a22d5e9fcc892eb0587eda56252775a487bd4e87eb5f4089ef935eee85caf9b02eadfd4d192f1da01c50758331557b77c87c4
|
7
|
+
data.tar.gz: 94d89ced412800fc53fca63ae363dd0475e68b7371979ec6616e7dbbf8b4c98c97abda27882b5b6cba060904feaf425be7d6e9cba862e98a8df990ced372e7b5
|
data/.rubocop.yml
CHANGED
@@ -7,9 +7,6 @@ AllCops:
|
|
7
7
|
Style/FrozenStringLiteralComment:
|
8
8
|
Enabled: false
|
9
9
|
|
10
|
-
convention:Style/Documentation:
|
11
|
-
Enabled: false
|
12
|
-
|
13
10
|
Style/OptionalBooleanParameter:
|
14
11
|
Enabled: false
|
15
12
|
|
@@ -36,3 +33,7 @@ Metrics/ParameterLists:
|
|
36
33
|
|
37
34
|
Style/IfUnlessModifier:
|
38
35
|
Enabled: false
|
36
|
+
|
37
|
+
Layout/LineLength:
|
38
|
+
AllowedPatterns: ['\A\s*#'] # Ignore rule for comments
|
39
|
+
|
@@ -1,5 +1,6 @@
|
|
1
1
|
module StructuraidCore
|
2
2
|
module Elements
|
3
|
+
# A footing is a structural element that transfers load from a column to the soil.
|
3
4
|
class Footing < Base
|
4
5
|
attr_accessor :length_1, :length_2, :height, :material, :cover_lateral, :cover_top, :cover_bottom
|
5
6
|
attr_reader :longitudinal_top_reinforcement_length_1,
|
@@ -10,6 +11,19 @@ module StructuraidCore
|
|
10
11
|
|
11
12
|
VALID_SECTIONS = %i[length_1 length_2].freeze
|
12
13
|
|
14
|
+
# @param length_1 [Float] The length of the footing in the direction of the main section
|
15
|
+
# @param length_2 [Float] The length of the footing in the direction perpendicular to the main section
|
16
|
+
# @param height [Float] The height of the footing
|
17
|
+
# @param material [Materials::Concrete] The material of the footing. It must be concrete
|
18
|
+
# @param cover_lateral [Float] The lateral cover of the footing
|
19
|
+
# @param cover_top [Float] The top cover of the footing
|
20
|
+
# @param cover_bottom [Float] The bottom cover of the footing
|
21
|
+
# @param longitudinal_top_reinforcement_length_1 [Reinforcement::StraightLongitudinal] The longitudinal reinforcement in the direction of the main section
|
22
|
+
# @param longitudinal_bottom_reinforcement_length_1 [Reinforcement::StraightLongitudinal] The longitudinal reinforcement in the direction of the main section
|
23
|
+
# @param longitudinal_top_reinforcement_length_2 [Reinforcement::StraightLongitudinal] The longitudinal reinforcement in the direction perpendicular to the main section
|
24
|
+
# @param longitudinal_bottom_reinforcement_length_2 [Reinforcement::StraightLongitudinal] The longitudinal reinforcement in the direction perpendicular to the main section
|
25
|
+
#
|
26
|
+
# @return [Footing] the footing
|
13
27
|
def initialize(
|
14
28
|
length_1:,
|
15
29
|
length_2:,
|
@@ -37,10 +51,16 @@ module StructuraidCore
|
|
37
51
|
@main_section = :length_1
|
38
52
|
end
|
39
53
|
|
54
|
+
# Computes the horizontal area of the footing
|
55
|
+
# @return [Float] The horizontal area of the footing
|
40
56
|
def horizontal_area
|
41
|
-
|
57
|
+
length_1 * length_2
|
42
58
|
end
|
43
59
|
|
60
|
+
# Computes the effective height of the footing for each direction and for either top or bottom reinforcement
|
61
|
+
# @param section_direction [Symbol] The direction of the section. See VALID_SECTIONS
|
62
|
+
# @param above_middle [Boolean] Whether the reinforcement is above the middle of the footing
|
63
|
+
# @return [Float] The effective height of the footing
|
44
64
|
def effective_height(section_direction:, above_middle:)
|
45
65
|
case section_direction
|
46
66
|
when :length_1
|
@@ -50,22 +70,33 @@ module StructuraidCore
|
|
50
70
|
end
|
51
71
|
end
|
52
72
|
|
73
|
+
# Sets the coordinates system of the footing
|
74
|
+
# @param coordinates_system [Engineering::Locations::CoordinatesSystem] A coordinates system instance
|
75
|
+
# @return [Engineering::Locations::CoordinatesSystem] The coordinates system of the footing
|
53
76
|
def add_coordinates_system(coordinates_system)
|
54
77
|
@coordinates_system = coordinates_system
|
55
78
|
end
|
56
79
|
|
80
|
+
# Adds a column's location to the footing. If the column's location is already in the footing's coordinates system, it returns the existing location.
|
81
|
+
# @param column_location [Engineering::Locations::Absolute] The column's absolute location
|
82
|
+
# @param column_label [String, Symbol] The column's label
|
83
|
+
# @return [Engineering::Locations::Relative] The column's relative location
|
57
84
|
def find_or_add_column_location(column_location, column_label)
|
58
85
|
label = "column_#{column_label}"
|
59
86
|
relative_location_vector = column_location.to_vector - coordinates_system.anchor_location.to_vector
|
60
87
|
coordinates_system.find_or_add_location_from_vector(relative_location_vector, label:)
|
61
88
|
end
|
62
89
|
|
90
|
+
# Computes the vertices location of the footing's perimeter horizontally and adds them to the footing's coordinates system
|
63
91
|
def add_vertices_location
|
64
92
|
vertices_locations_vectors.each do |label, vector|
|
65
93
|
coordinates_system.find_or_add_location_from_vector(vector, label:)
|
66
94
|
end
|
67
95
|
end
|
68
96
|
|
97
|
+
# Evaluates if a relative location is inside the footing's perimeter. It works only for horizontal locations (z = 0)
|
98
|
+
# @param location [Engineering::Locations::Relative] The relative location to evaluate
|
99
|
+
# @return [Boolean] Whether the location is inside the footing's perimeter
|
69
100
|
def inside_me?(location)
|
70
101
|
inside_axis_2 = location.value_2 >= -0.5 * length_2 && location.value_2 <= 0.5 * length_2
|
71
102
|
inside_axis_1 = location.value_1 >= -0.5 * length_1 && location.value_1 <= 0.5 * length_1
|
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.2.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pradaing
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-05-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: byebug
|
@@ -38,6 +38,34 @@ dependencies:
|
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: 4.7.3
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: puma
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rack
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
41
69
|
- !ruby/object:Gem::Dependency
|
42
70
|
name: rspec
|
43
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -94,6 +122,20 @@ dependencies:
|
|
94
122
|
- - "~>"
|
95
123
|
- !ruby/object:Gem::Version
|
96
124
|
version: 0.22.0
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: yard
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
97
139
|
- !ruby/object:Gem::Dependency
|
98
140
|
name: matrix
|
99
141
|
requirement: !ruby/object:Gem::Requirement
|