midas-civil 1.0.5__py3-none-any.whl → 1.0.8__py3-none-any.whl
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.
Potentially problematic release.
This version of midas-civil might be problematic. Click here for more details.
- midas_civil/_BoundaryChangeAssignment.py +278 -0
- midas_civil/__init__.py +5 -5
- midas_civil/_element.py +62 -2
- midas_civil/_group.py +1 -1
- midas_civil/_load.py +1 -1
- midas_civil/_mapi.py +2 -1
- midas_civil/_model.py +40 -41
- midas_civil/_movingload.py +1 -1
- midas_civil/_node.py +1 -1
- midas_civil/_result.py +1 -2
- midas_civil/_result_extract.py +0 -1
- midas_civil/_section/_TapdbSecSS.py +47 -0
- midas_civil/_section/__init__.py +61 -24
- midas_civil/_section/_compositeSS.py +4 -4
- midas_civil/_section/_dbSecSS.py +16 -2
- midas_civil/_section/_pscSS.py +6 -6
- midas_civil/_section/_tapPSC1CellSS.py +186 -0
- midas_civil/_section/_unSupp.py +2 -2
- midas_civil/_settlement.py +0 -1
- midas_civil/_temperature.py +1 -1
- midas_civil/_tendon.py +1 -0
- midas_civil/_thickness.py +0 -1
- midas_civil/_utils.py +3 -3
- {midas_civil-1.0.5.dist-info → midas_civil-1.0.8.dist-info}/METADATA +1 -1
- midas_civil-1.0.8.dist-info/RECORD +36 -0
- midas_civil-1.0.5.dist-info/RECORD +0 -33
- {midas_civil-1.0.5.dist-info → midas_civil-1.0.8.dist-info}/WHEEL +0 -0
- {midas_civil-1.0.5.dist-info → midas_civil-1.0.8.dist-info}/licenses/LICENSE +0 -0
- {midas_civil-1.0.5.dist-info → midas_civil-1.0.8.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
from ._mapi import *
|
|
2
|
+
from ._load import *
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class BoundaryChangeAssignment:
|
|
6
|
+
|
|
7
|
+
data = []
|
|
8
|
+
|
|
9
|
+
def __init__(self,
|
|
10
|
+
# Support options
|
|
11
|
+
bSPT: bool = False,
|
|
12
|
+
bSPR: bool = False,
|
|
13
|
+
bGSPR: bool = False,
|
|
14
|
+
bCGLINK: bool = False,
|
|
15
|
+
bSSSF: bool = False,
|
|
16
|
+
bPSSF: bool = False,
|
|
17
|
+
bRLS: bool = False,
|
|
18
|
+
bWSSF: bool = False,
|
|
19
|
+
bESSF: bool = False,
|
|
20
|
+
bCDOF: bool = False,
|
|
21
|
+
# Boundary settings
|
|
22
|
+
vBOUNDARY: list = None,
|
|
23
|
+
# Load analysis settings for ST type
|
|
24
|
+
ST_load_assignments: list = None,
|
|
25
|
+
# Load analysis settings for other types
|
|
26
|
+
MV: str = None,
|
|
27
|
+
SM: str = None,
|
|
28
|
+
THRSEV: str = None,
|
|
29
|
+
PO: str = None,
|
|
30
|
+
THNS: str = None,
|
|
31
|
+
ULAT: str = None):
|
|
32
|
+
"""
|
|
33
|
+
Boundary Change Assignment constructor.
|
|
34
|
+
|
|
35
|
+
Parameters:
|
|
36
|
+
bSPT: Support (default False)
|
|
37
|
+
bSPR: Point Spring Support (default False)
|
|
38
|
+
bGSPR: General Spring Support (default False)
|
|
39
|
+
bCGLINK: Change General Link Property (default False)
|
|
40
|
+
bSSSF: Section Stiffness Scale Factor (default False)
|
|
41
|
+
bPSSF: Plate Stiffness Scale Factor (default False)
|
|
42
|
+
bRLS: Beam End Release (default False)
|
|
43
|
+
bWSSF: Wall Stiffness Scale Factor (default False)
|
|
44
|
+
bESSF: Element Stiffness Scale Factor (default False)
|
|
45
|
+
bCDOF: Constrain DOF associated with specified displacements/Settlements by boundary group combinations (default False)
|
|
46
|
+
vBOUNDARY: List of boundary assignments in format [["L1", "BG2"], ["L2", "BG1"]]
|
|
47
|
+
ST_load_assignments: List of ST type load cases with BGCNAME assignments in format [["Self-weight", "L1"], ["SIDL", "UNCHANGED"]]
|
|
48
|
+
MV, SM, THRSEV, PO, THNS, ULAT: Boundary group names for respective analysis types
|
|
49
|
+
|
|
50
|
+
Examples:
|
|
51
|
+
# Basic boundary change assignment
|
|
52
|
+
BoundaryChangeAssignment(
|
|
53
|
+
bSPT=True,
|
|
54
|
+
bCDOF=True,
|
|
55
|
+
vBOUNDARY=[["L1", "BG2"], ["L2", "BG1"]],
|
|
56
|
+
ST_load_assignments=[["Self-weight", "L1"]],
|
|
57
|
+
MV="L1"
|
|
58
|
+
)
|
|
59
|
+
|
|
60
|
+
# Complex assignment with multiple load types
|
|
61
|
+
BoundaryChangeAssignment(
|
|
62
|
+
bSPT=True,
|
|
63
|
+
bSPR=False,
|
|
64
|
+
bGSPR=False,
|
|
65
|
+
vBOUNDARY=[["L1", "BG2"], ["L2", "BG1"]],
|
|
66
|
+
ST_load_assignments=[["Self-weight", "L1"], ["SIDL", "L2"]],
|
|
67
|
+
MV="L1",
|
|
68
|
+
SM="L2",
|
|
69
|
+
THRSEV="L1"
|
|
70
|
+
)
|
|
71
|
+
"""
|
|
72
|
+
|
|
73
|
+
# ID is always 1 based on the pattern
|
|
74
|
+
self.ID = 1
|
|
75
|
+
|
|
76
|
+
# Set support parameters
|
|
77
|
+
self.bSPT = bSPT
|
|
78
|
+
self.bSPR = bSPR
|
|
79
|
+
self.bGSPR = bGSPR
|
|
80
|
+
self.bCGLINK = bCGLINK
|
|
81
|
+
self.bSSSF = bSSSF
|
|
82
|
+
self.bPSSF = bPSSF
|
|
83
|
+
self.bRLS = bRLS
|
|
84
|
+
self.bWSSF = bWSSF
|
|
85
|
+
self.bESSF = bESSF
|
|
86
|
+
self.bCDOF = bCDOF
|
|
87
|
+
|
|
88
|
+
# Process boundary data
|
|
89
|
+
self.vBOUNDARY = self._process_boundary_data(vBOUNDARY)
|
|
90
|
+
|
|
91
|
+
# Process load analysis data
|
|
92
|
+
self.vLOADANAL = self._process_load_analysis_data(
|
|
93
|
+
ST_load_assignments, MV, SM, THRSEV, PO, THNS, ULAT
|
|
94
|
+
)
|
|
95
|
+
|
|
96
|
+
# Add to static list
|
|
97
|
+
BoundaryChangeAssignment.data.append(self)
|
|
98
|
+
|
|
99
|
+
# Automatically execute the data when instance is created
|
|
100
|
+
self._execute()
|
|
101
|
+
|
|
102
|
+
def _process_boundary_data(self, vBOUNDARY):
|
|
103
|
+
"""
|
|
104
|
+
Process boundary data from list format to required JSON structure.
|
|
105
|
+
Input: [["L1", "BG2"], ["L2", "BG1"]]
|
|
106
|
+
Output: [{"BGCNAME": "L1", "vBG": ["BG2"]}, {"BGCNAME": "L2", "vBG": ["BG1"]}]
|
|
107
|
+
"""
|
|
108
|
+
if not vBOUNDARY:
|
|
109
|
+
return []
|
|
110
|
+
|
|
111
|
+
boundary_list = []
|
|
112
|
+
for boundary_pair in vBOUNDARY:
|
|
113
|
+
if len(boundary_pair) == 2:
|
|
114
|
+
boundary_list.append({
|
|
115
|
+
"BGCNAME": boundary_pair[0],
|
|
116
|
+
"vBG": [boundary_pair[1]]
|
|
117
|
+
})
|
|
118
|
+
|
|
119
|
+
return boundary_list
|
|
120
|
+
|
|
121
|
+
def _get_load_cases(self):
|
|
122
|
+
"""
|
|
123
|
+
Get load cases from the system using Load_Case.get() command.
|
|
124
|
+
This simulates the API call that would retrieve current load cases.
|
|
125
|
+
"""
|
|
126
|
+
try:
|
|
127
|
+
# This would be replaced with actual API call: Load_Case.get()
|
|
128
|
+
# For now, using the provided example data structure
|
|
129
|
+
load_cases_response = Load_Case.get()
|
|
130
|
+
return load_cases_response.get('STLD', {})
|
|
131
|
+
except:
|
|
132
|
+
# Fallback to empty if API call fails
|
|
133
|
+
return {}
|
|
134
|
+
|
|
135
|
+
def _convert_st_assignments_to_dict(self, ST_load_assignments):
|
|
136
|
+
"""
|
|
137
|
+
Convert ST_load_assignments from list format to dictionary format.
|
|
138
|
+
Input: [["Self-weight", "L1"], ["SIDL", "UNCHANGED"]]
|
|
139
|
+
Output: {"Self-weight": "L1", "SIDL": "UNCHANGED"}
|
|
140
|
+
"""
|
|
141
|
+
if not ST_load_assignments:
|
|
142
|
+
return {}
|
|
143
|
+
|
|
144
|
+
assignments_dict = {}
|
|
145
|
+
for assignment_pair in ST_load_assignments:
|
|
146
|
+
if len(assignment_pair) == 2:
|
|
147
|
+
assignments_dict[assignment_pair[0]] = assignment_pair[1]
|
|
148
|
+
|
|
149
|
+
return assignments_dict
|
|
150
|
+
|
|
151
|
+
def _process_load_analysis_data(self, ST_load_assignments, MV, SM, THRSEV, PO, THNS, ULAT):
|
|
152
|
+
"""
|
|
153
|
+
Process load analysis data combining user input with system load cases.
|
|
154
|
+
"""
|
|
155
|
+
load_anal_list = []
|
|
156
|
+
|
|
157
|
+
# Get current load cases from system
|
|
158
|
+
load_cases = self._get_load_cases()
|
|
159
|
+
|
|
160
|
+
# Process ST type load cases
|
|
161
|
+
st_cases = {case_data['NAME']: case_data for case_data in load_cases.values() } # Assuming ST cases are USER type
|
|
162
|
+
|
|
163
|
+
# Convert ST_load_assignments from list format to dictionary format for internal processing
|
|
164
|
+
st_assignments_dict = self._convert_st_assignments_to_dict(ST_load_assignments)
|
|
165
|
+
|
|
166
|
+
if st_cases:
|
|
167
|
+
for case_name in st_cases.keys():
|
|
168
|
+
bgcname = "UNCHANGED" # Default value
|
|
169
|
+
|
|
170
|
+
# If user provided specific assignment for this load case
|
|
171
|
+
if st_assignments_dict and case_name in st_assignments_dict:
|
|
172
|
+
bgcname = st_assignments_dict[case_name]
|
|
173
|
+
|
|
174
|
+
load_anal_list.append({
|
|
175
|
+
"TYPE": "ST",
|
|
176
|
+
"BGCNAME": bgcname,
|
|
177
|
+
"LCNAME": case_name
|
|
178
|
+
})
|
|
179
|
+
|
|
180
|
+
# Process other load analysis types
|
|
181
|
+
analysis_types = {
|
|
182
|
+
"MV": MV,
|
|
183
|
+
"SM": SM,
|
|
184
|
+
"THRSEV": THRSEV,
|
|
185
|
+
"PO": PO,
|
|
186
|
+
"THNS": THNS,
|
|
187
|
+
"ULAT": ULAT
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
for analysis_type, bgcname in analysis_types.items():
|
|
191
|
+
load_anal_entry = {
|
|
192
|
+
"TYPE": analysis_type,
|
|
193
|
+
"BGCNAME": bgcname if bgcname is not None else "UNCHANGED"
|
|
194
|
+
}
|
|
195
|
+
load_anal_list.append(load_anal_entry)
|
|
196
|
+
|
|
197
|
+
return load_anal_list
|
|
198
|
+
|
|
199
|
+
def _execute(self):
|
|
200
|
+
"""
|
|
201
|
+
Automatically sends the BoundaryChangeAssignment to the system when created.
|
|
202
|
+
"""
|
|
203
|
+
json_data = {"Assign": {}}
|
|
204
|
+
|
|
205
|
+
boundary_data = {
|
|
206
|
+
"bSPT": self.bSPT,
|
|
207
|
+
"bSPR": self.bSPR,
|
|
208
|
+
"bGSPR": self.bGSPR,
|
|
209
|
+
"bCGLINK": self.bCGLINK,
|
|
210
|
+
"bSSSF": self.bSSSF,
|
|
211
|
+
"bPSSF": self.bPSSF,
|
|
212
|
+
"bRLS": self.bRLS,
|
|
213
|
+
"bWSSF": self.bWSSF,
|
|
214
|
+
"bESSF": self.bESSF,
|
|
215
|
+
"bCDOF": self.bCDOF,
|
|
216
|
+
"vBOUNDARY": self.vBOUNDARY,
|
|
217
|
+
"vLOADANAL": self.vLOADANAL
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
json_data["Assign"][str(self.ID)] = boundary_data
|
|
221
|
+
|
|
222
|
+
# Execute the API call
|
|
223
|
+
MidasAPI("PUT", "/db/bcct", json_data)
|
|
224
|
+
|
|
225
|
+
def __str__(self):
|
|
226
|
+
"""
|
|
227
|
+
String representation of the BoundaryChangeAssignment.
|
|
228
|
+
"""
|
|
229
|
+
return f"BoundaryChangeAssignment(ID={self.ID}, Boundaries={len(self.vBOUNDARY)}, LoadAnalyses={len(self.vLOADANAL)})"
|
|
230
|
+
|
|
231
|
+
def __repr__(self):
|
|
232
|
+
"""
|
|
233
|
+
Detailed representation of the BoundaryChangeAssignment.
|
|
234
|
+
"""
|
|
235
|
+
return (f"BoundaryChangeAssignment(ID={self.ID}, "
|
|
236
|
+
f"bSPT={self.bSPT}, bCDOF={self.bCDOF}, "
|
|
237
|
+
f"Boundaries={self.vBOUNDARY}, "
|
|
238
|
+
f"LoadAnalyses={self.vLOADANAL})")
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
|
|
242
|
+
# Example usage:
|
|
243
|
+
"""
|
|
244
|
+
# Example 1: Basic boundary change assignment
|
|
245
|
+
boundary_assignment = BoundaryChangeAssignment(
|
|
246
|
+
bSPT=True,
|
|
247
|
+
bCDOF=True,
|
|
248
|
+
vBOUNDARY=[["L1", "BG2"], ["L2", "BG1"]],
|
|
249
|
+
ST_load_assignments=[["Self-weight", "L1"]],
|
|
250
|
+
MV="L1"
|
|
251
|
+
)
|
|
252
|
+
|
|
253
|
+
# Example 2: Complex assignment with multiple settings
|
|
254
|
+
complex_assignment = BoundaryChangeAssignment(
|
|
255
|
+
bSPT=True,
|
|
256
|
+
bSPR=False,
|
|
257
|
+
bGSPR=False,
|
|
258
|
+
bCGLINK=False,
|
|
259
|
+
bSSSF=False,
|
|
260
|
+
bPSSF=False,
|
|
261
|
+
bRLS=False,
|
|
262
|
+
bCDOF=True,
|
|
263
|
+
vBOUNDARY=[["L1", "BG2"], ["L2", "BG1"]],
|
|
264
|
+
ST_load_assignments=[["Self-weight", "L1"], ["SIDL", "UNCHANGED"]],
|
|
265
|
+
MV="UNCHANGED",
|
|
266
|
+
SM="L2",
|
|
267
|
+
THRSEV="L1",
|
|
268
|
+
PO="UNCHANGED",
|
|
269
|
+
THNS="UNCHANGED",
|
|
270
|
+
ULAT="UNCHANGED"
|
|
271
|
+
)
|
|
272
|
+
|
|
273
|
+
# Example 3: Minimal assignment with defaults
|
|
274
|
+
minimal_assignment = BoundaryChangeAssignment(
|
|
275
|
+
bSPT=True,
|
|
276
|
+
vBOUNDARY=[["L1", "BG2"]]
|
|
277
|
+
)
|
|
278
|
+
"""
|
midas_civil/__init__.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import requests
|
|
2
2
|
from ._mapi import *
|
|
3
|
-
_version_ = "1.0.
|
|
3
|
+
_version_ = "1.0.8"
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
print('')
|
|
@@ -42,8 +42,8 @@ from ._temperature import *
|
|
|
42
42
|
from ._tendon import *
|
|
43
43
|
from ._view import *
|
|
44
44
|
|
|
45
|
-
from ._movingload import*
|
|
46
|
-
from ._settlement import*
|
|
47
|
-
from ._analysiscontrol import*
|
|
48
|
-
|
|
45
|
+
from ._movingload import *
|
|
46
|
+
from ._settlement import *
|
|
47
|
+
from ._analysiscontrol import *
|
|
48
|
+
from ._BoundaryChangeAssignment import*
|
|
49
49
|
|
midas_civil/_element.py
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
from ._mapi import *
|
|
2
2
|
from ._node import *
|
|
3
3
|
from ._group import _add_elem_2_stGroup
|
|
4
|
-
from ._group import _add_node_2_stGroup
|
|
4
|
+
from ._group import _add_node_2_stGroup,Group
|
|
5
5
|
import numpy as np
|
|
6
6
|
from scipy.interpolate import splev, splprep
|
|
7
7
|
from math import hypot
|
|
8
8
|
import math
|
|
9
9
|
|
|
10
10
|
|
|
11
|
-
def _interpolateAlignment(pointsArray,n_seg=10,deg=1,mSize=0,includePoint:bool=True) -> list:
|
|
11
|
+
def _interpolateAlignment(pointsArray,n_seg=10,deg=1,mSize=0,includePoint:bool=True,yEcc=0,zEcc=0) -> list:
|
|
12
12
|
''' Returns point list and beta angle list'''
|
|
13
13
|
pointsArray = np.array(pointsArray)
|
|
14
14
|
x_p, y_p , z_p = pointsArray[:,0] , pointsArray[:,1] , pointsArray[:,2]
|
|
@@ -84,6 +84,7 @@ def _interpolateAlignment(pointsArray,n_seg=10,deg=1,mSize=0,includePoint:bool=T
|
|
|
84
84
|
return align_fine_points
|
|
85
85
|
|
|
86
86
|
|
|
87
|
+
|
|
87
88
|
def _nodeDIST(a:Node,b:Node):
|
|
88
89
|
return round(hypot((a.X-b.X),(a.Y-b.Y),(a.Z-b.Z)),6)
|
|
89
90
|
|
|
@@ -109,6 +110,43 @@ def _triangleAREA(a:Node,b:Node,c:Node):
|
|
|
109
110
|
mag = np.linalg.norm(np.cross(v1, v2))
|
|
110
111
|
return float(0.5 * mag) , np.cross(v1, v2)/mag
|
|
111
112
|
|
|
113
|
+
def _calcVector(deltaLocation):
|
|
114
|
+
Z_new = np.array([0.000001,0,1])
|
|
115
|
+
X_new = np.array(deltaLocation)
|
|
116
|
+
Y_new = np.cross(Z_new, X_new)
|
|
117
|
+
|
|
118
|
+
Z_new = np.cross(X_new, Y_new) # Recomputing
|
|
119
|
+
|
|
120
|
+
X_new = X_new / (np.linalg.norm(X_new)+0.000001)
|
|
121
|
+
Y_new = Y_new / (np.linalg.norm(Y_new)+0.000001)
|
|
122
|
+
Z_new = Z_new / (np.linalg.norm(Z_new)+0.000001)
|
|
123
|
+
|
|
124
|
+
return [X_new,Y_new,Z_new]
|
|
125
|
+
|
|
126
|
+
def _pointOffset(pts,yEcc,zEcc):
|
|
127
|
+
norm = []
|
|
128
|
+
norm.append(_calcVector(np.subtract(pts[1],pts[0])))
|
|
129
|
+
|
|
130
|
+
for i in range(len(pts)-2):
|
|
131
|
+
X_new1 = np.array(np.subtract(pts[i+1],pts[i]))
|
|
132
|
+
X_new2 = np.array(np.subtract(pts[i+2],pts[i+1]))
|
|
133
|
+
|
|
134
|
+
X_new1 = X_new1 / (np.linalg.norm(X_new1)+0.000001)
|
|
135
|
+
X_new2 = X_new2 / (np.linalg.norm(X_new2)+0.000001)
|
|
136
|
+
|
|
137
|
+
norm.append(_calcVector(np.add(X_new1,X_new2)))
|
|
138
|
+
|
|
139
|
+
norm.append(_calcVector(np.subtract(pts[-1],pts[-2])))
|
|
140
|
+
|
|
141
|
+
# print(norm)
|
|
142
|
+
|
|
143
|
+
pt_new = []
|
|
144
|
+
for i in range(len(pts)):
|
|
145
|
+
pt_new.append(pts[i]+yEcc*norm[i][1]+zEcc*norm[i][2])
|
|
146
|
+
|
|
147
|
+
return pt_new
|
|
148
|
+
|
|
149
|
+
|
|
112
150
|
def _ADD(self):
|
|
113
151
|
"""
|
|
114
152
|
Adds an element to the main list. If the ID is 0, it auto-increments.
|
|
@@ -412,6 +450,28 @@ class Element:
|
|
|
412
450
|
beam_obj.append(Element.Beam(beam_nodes[i],beam_nodes[i+1],mat,sect,angle,group,id_new,bLocalAxis))
|
|
413
451
|
|
|
414
452
|
return beam_obj
|
|
453
|
+
|
|
454
|
+
@staticmethod
|
|
455
|
+
def PLine2(points_loc:list,n_div:int=0,deg:int=1,includePoint:bool=True,mat:int=1,sect:int=1,angle:float=0, group = "" , id: int = 0,bLocalAxis=False,yEcc=0,zEcc=0):
|
|
456
|
+
|
|
457
|
+
beam_nodes =[]
|
|
458
|
+
beam_obj = []
|
|
459
|
+
if n_div == 0 :
|
|
460
|
+
i_loc = points_loc
|
|
461
|
+
else:
|
|
462
|
+
i_loc = _interpolateAlignment(points_loc,n_div,deg,0,includePoint,yEcc,zEcc)
|
|
463
|
+
|
|
464
|
+
i_loc2 = _pointOffset(i_loc,yEcc,zEcc)
|
|
465
|
+
for i in i_loc2:
|
|
466
|
+
Enode=Node(i[0],i[1],i[2])
|
|
467
|
+
beam_nodes.append(Enode.ID)
|
|
468
|
+
|
|
469
|
+
for i in range(len(i_loc2)-1):
|
|
470
|
+
if id == 0 : id_new = 0
|
|
471
|
+
else: id_new = id+i
|
|
472
|
+
beam_obj.append(Element.Beam(beam_nodes[i],beam_nodes[i+1],mat,sect,angle,group,id_new,bLocalAxis))
|
|
473
|
+
|
|
474
|
+
return beam_obj
|
|
415
475
|
|
|
416
476
|
class Truss(_common):
|
|
417
477
|
def __init__(self, i: int, j: int, mat: int = 1, sect: int = 1, angle: float = 0, group = "" , id: int = 0):
|
midas_civil/_group.py
CHANGED
midas_civil/_load.py
CHANGED
midas_civil/_mapi.py
CHANGED
midas_civil/_model.py
CHANGED
|
@@ -195,46 +195,46 @@ class Model:
|
|
|
195
195
|
|
|
196
196
|
|
|
197
197
|
|
|
198
|
-
@staticmethod
|
|
199
|
-
def _create2(request = "update", set = 1, force = "KN", length = "M", heat = "BTU", temp = "C"):
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
198
|
+
# @staticmethod
|
|
199
|
+
# def _create2(request = "update", set = 1, force = "KN", length = "M", heat = "BTU", temp = "C"):
|
|
200
|
+
# """request["update" to update a model, "call" to get details of existing model], \nforce[Optional], length[Optional], heat[Optional], temp[Optional].
|
|
201
|
+
# \nSample: model() to update/create model. model("call") to get details of existing model and update classes.\n
|
|
202
|
+
# set = 1 => Functions that don't need to call data from connected model file.\n
|
|
203
|
+
# set = 2 => Functions that may need to call data from connected model file."""
|
|
204
|
+
# Model.units(force, length, heat, temp)
|
|
205
|
+
# if MAPI_KEY.data == []: print(f"Enter the MAPI key using the MAPI_KEY command.")
|
|
206
|
+
# if MAPI_KEY.data != []:
|
|
207
|
+
# if set == 1:
|
|
208
|
+
# if request == "update" or request == "create" or request == "PUT":
|
|
209
|
+
# if Node.json() != {"Assign":{}}: Node.create()
|
|
210
|
+
# if Element.json() != {"Assign":{}}: Element.create()
|
|
211
|
+
# if Section.json() != {"Assign":{}}: Section.create()
|
|
212
|
+
# if Group.json_BG() != {"Assign":{}}: Group.create_BG()
|
|
213
|
+
# if Group.json_LG() != {"Assign":{}}: Group.create_LG()
|
|
214
|
+
# if Group.json_TG() != {"Assign":{}}: Group.create_TG()
|
|
215
|
+
# if Material.json() != {"Assign":{}}: Material.create()
|
|
216
|
+
# if request == "call" or request == "GET":
|
|
217
|
+
# Node.sync()
|
|
218
|
+
# Element.sync()
|
|
219
|
+
# Section.sync()
|
|
220
|
+
# Group.sync()
|
|
221
|
+
# Material.sync()
|
|
222
|
+
# if set == 2:
|
|
223
|
+
# if request == "update" or request == "create" or request == "PUT":
|
|
224
|
+
# if Node.json() != {"Assign":{}}: Node.create()
|
|
225
|
+
# if Element.json() != {"Assign":{}}: Element.create()
|
|
226
|
+
# if Section.json() != {"Assign":{}}: Section.create()
|
|
227
|
+
# if Group.json_BG() != {"Assign":{}}: Group.create_BG()
|
|
228
|
+
# if Group.json_LG() != {"Assign":{}}: Group.create_LG()
|
|
229
|
+
# if Group.json_TG() != {"Assign":{}}: Group.create_TG()
|
|
230
|
+
# if Material.json() != {"Assign":{}}: Material.create()
|
|
231
|
+
# if Group.json_SG() != {"Assign":{}}: Group.create_SG()
|
|
232
|
+
# if request == "call" or request == "GET":
|
|
233
|
+
# Node.update_class()
|
|
234
|
+
# Element.update_class()
|
|
235
|
+
# Section.update_class()
|
|
236
|
+
# Group.update_class()
|
|
237
|
+
# Material.update_class()
|
|
238
238
|
|
|
239
239
|
|
|
240
240
|
|
|
@@ -403,4 +403,3 @@ class Model:
|
|
|
403
403
|
|
|
404
404
|
|
|
405
405
|
|
|
406
|
-
|
midas_civil/_movingload.py
CHANGED
midas_civil/_node.py
CHANGED
|
@@ -289,4 +289,4 @@ class NodeLocalAxis:
|
|
|
289
289
|
|
|
290
290
|
# for j in a['NODE'].keys():
|
|
291
291
|
|
|
292
|
-
# Node(round(a['NODE'][j]['X'],6), round(a['NODE'][j]['Y'],6), round(a['NODE'][j]['Z'],6), id=int(j), group='', merge=0)
|
|
292
|
+
# Node(round(a['NODE'][j]['X'],6), round(a['NODE'][j]['Y'],6), round(a['NODE'][j]['Z'],6), id=int(j), group='', merge=0)
|
midas_civil/_result.py
CHANGED
|
@@ -151,5 +151,4 @@ class LoadCombination:
|
|
|
151
151
|
print("No load combinations are defined to delete.")
|
|
152
152
|
for i in list(json.keys()):
|
|
153
153
|
MidasAPI("DELETE",LoadCombination.com_map.get(i) + a)
|
|
154
|
-
#---------------------------------------------------------------------------------------------------------------
|
|
155
|
-
|
|
154
|
+
#---------------------------------------------------------------------------------------------------------------
|
midas_civil/_result_extract.py
CHANGED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
from ._offsetSS import Offset
|
|
2
|
+
from ._offsetSS import _common
|
|
3
|
+
|
|
4
|
+
class _SS_TAPERED_DBUSER(_common):
|
|
5
|
+
|
|
6
|
+
""" Create Standard USER DEFINED sections"""
|
|
7
|
+
|
|
8
|
+
def __init__(self,Name='',Shape='',params_I:list=[],params_J:list=[],Offset=Offset(),useShear=True,use7Dof=False,id:int=0):
|
|
9
|
+
""" Shape = 'SB' 'SR' for rectangle \n For cylinder"""
|
|
10
|
+
self.ID = id
|
|
11
|
+
self.NAME = Name
|
|
12
|
+
self.TYPE = 'TAPERED'
|
|
13
|
+
self.SHAPE = Shape
|
|
14
|
+
self.PARAMS_I = params_I
|
|
15
|
+
self.PARAMS_J = params_J
|
|
16
|
+
self.OFFSET = Offset
|
|
17
|
+
self.USESHEAR = useShear
|
|
18
|
+
self.USE7DOF = use7Dof
|
|
19
|
+
self.DATATYPE = 2
|
|
20
|
+
|
|
21
|
+
def __str__(self):
|
|
22
|
+
return f' > ID = {self.ID} | USER DEFINED STANDARD SECTION \nJSON = {self.toJSON()}\n'
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
def toJSON(sect):
|
|
26
|
+
js = {
|
|
27
|
+
"SECTTYPE": sect.TYPE,
|
|
28
|
+
"SECT_NAME": sect.NAME,
|
|
29
|
+
"SECT_BEFORE": {
|
|
30
|
+
"SHAPE": sect.SHAPE,
|
|
31
|
+
"TYPE": sect.DATATYPE,
|
|
32
|
+
"SECT_I": {
|
|
33
|
+
"vSIZE": sect.PARAMS_I
|
|
34
|
+
},
|
|
35
|
+
"SECT_J": {
|
|
36
|
+
"vSIZE": sect.PARAMS_J
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
js['SECT_BEFORE'].update(sect.OFFSET.JS)
|
|
41
|
+
js['SECT_BEFORE']['USE_SHEAR_DEFORM'] = sect.USESHEAR
|
|
42
|
+
js['SECT_BEFORE']['USE_WARPING_EFFECT'] = sect.USE7DOF
|
|
43
|
+
return js
|
|
44
|
+
|
|
45
|
+
@staticmethod
|
|
46
|
+
def _objectify(id,name,type,shape,offset,uShear,u7DOF,js):
|
|
47
|
+
return _SS_TAPERED_DBUSER(name,shape,js['SECT_BEFORE']['SECT_I']['vSIZE'],js['SECT_BEFORE']['SECT_J']['vSIZE'],offset,uShear,u7DOF,id)
|
midas_civil/_section/__init__.py
CHANGED
|
@@ -1,16 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
from ._pscSS import SS_PSC_12CELL,SS_PSC_I,SS_PSC_Value
|
|
4
|
-
from ._dbSecSS import SS_DBUSER
|
|
1
|
+
from ._pscSS import _SS_PSC_12CELL,_SS_PSC_I,_SS_PSC_Value
|
|
2
|
+
from ._dbSecSS import _SS_DBUSER
|
|
5
3
|
from ._offsetSS import Offset
|
|
6
|
-
from ._unSupp import
|
|
7
|
-
from ._compositeSS import
|
|
4
|
+
from ._unSupp import _SS_UNSUPP,_SS_STD_DB
|
|
5
|
+
from ._compositeSS import _SS_COMP_PSC_I,_SS_COMP_STEEL_I_TYPE1
|
|
6
|
+
from ._TapdbSecSS import _SS_TAPERED_DBUSER
|
|
7
|
+
|
|
8
|
+
from ._tapPSC1CellSS import _SS_TAP_PSC_1CELL
|
|
8
9
|
|
|
9
10
|
from midas_civil import MidasAPI
|
|
10
11
|
|
|
11
12
|
|
|
12
13
|
class _helperSECTION:
|
|
13
|
-
NAME, SHAPE, TYPE, OFFSET, USESHEAR, USE7DOF = 0,0,0,0,0,0
|
|
14
|
+
ID, NAME, SHAPE, TYPE, OFFSET, USESHEAR, USE7DOF = 0,0,0,0,0,0,0
|
|
14
15
|
def update():
|
|
15
16
|
pass
|
|
16
17
|
def toJSON():
|
|
@@ -74,21 +75,27 @@ def _JS2OBJ(id,js):
|
|
|
74
75
|
|
|
75
76
|
|
|
76
77
|
if type == 'DBUSER':
|
|
77
|
-
if js['SECT_BEFORE']['DATATYPE'] ==2: obj =
|
|
78
|
-
else: obj =
|
|
78
|
+
if js['SECT_BEFORE']['DATATYPE'] ==2: obj = _SS_DBUSER._objectify(id,name,type,shape,offset,uShear,u7DOF,js)
|
|
79
|
+
else: obj = _SS_STD_DB(id,name,type,shape,offset,uShear,u7DOF,js)
|
|
79
80
|
|
|
80
81
|
elif type == 'PSC' :
|
|
81
|
-
if shape in ['1CEL','2CEL']: obj =
|
|
82
|
-
elif shape in ['PSCI']: obj =
|
|
83
|
-
elif shape in ['VALU']: obj =
|
|
84
|
-
else: obj =
|
|
82
|
+
if shape in ['1CEL','2CEL']: obj = _SS_PSC_12CELL._objectify(id,name,type,shape,offset,uShear,u7DOF,js)
|
|
83
|
+
elif shape in ['PSCI']: obj = _SS_PSC_I._objectify(id,name,type,shape,offset,uShear,u7DOF,js)
|
|
84
|
+
elif shape in ['VALU']: obj = _SS_PSC_Value._objectify(id,name,type,shape,offset,uShear,u7DOF,js)
|
|
85
|
+
else: obj = _SS_UNSUPP(id,name,type,shape,offset,uShear,u7DOF,js)
|
|
85
86
|
|
|
86
87
|
elif type == 'COMPOSITE':
|
|
87
|
-
if shape in ['CI']: obj =
|
|
88
|
-
elif shape in ['I']: obj =
|
|
89
|
-
else: obj =
|
|
88
|
+
if shape in ['CI']: obj = _SS_COMP_PSC_I._objectify(id,name,type,shape,offset,uShear,u7DOF,js)
|
|
89
|
+
elif shape in ['I']: obj = _SS_COMP_STEEL_I_TYPE1._objectify(id,name,type,shape,offset,uShear,u7DOF,js)
|
|
90
|
+
else: obj = _SS_UNSUPP(id,name,type,shape,offset,uShear,u7DOF,js)
|
|
91
|
+
|
|
92
|
+
elif type == 'TAPERED' :
|
|
93
|
+
if js['SECT_BEFORE']['TYPE'] ==2: obj = _SS_TAPERED_DBUSER._objectify(id,name,type,shape,offset,uShear,u7DOF,js)
|
|
94
|
+
elif shape in ['1CEL']: obj = _SS_TAP_PSC_1CELL._objectify(id,name,type,shape,offset,uShear,u7DOF,js)
|
|
95
|
+
else: obj = _SS_UNSUPP(id,name,type,shape,offset,uShear,u7DOF,js)
|
|
96
|
+
|
|
90
97
|
else :
|
|
91
|
-
obj =
|
|
98
|
+
obj = _SS_UNSUPP(id,name,type,shape,offset,uShear,u7DOF,js)
|
|
92
99
|
|
|
93
100
|
|
|
94
101
|
_SectionADD(obj)
|
|
@@ -108,7 +115,7 @@ class Section:
|
|
|
108
115
|
json = {"Assign":{}}
|
|
109
116
|
for sect in cls.sect:
|
|
110
117
|
js = sect.toJSON()
|
|
111
|
-
json["Assign"][sect.ID] = js
|
|
118
|
+
json["Assign"][str(sect.ID)] = js
|
|
112
119
|
return json
|
|
113
120
|
|
|
114
121
|
@staticmethod
|
|
@@ -144,7 +151,7 @@ class Section:
|
|
|
144
151
|
@staticmethod
|
|
145
152
|
def DBUSER(Name='',Shape='',parameters:list=[],Offset=Offset(),useShear=True,use7Dof=False,id:int=0):
|
|
146
153
|
args = locals()
|
|
147
|
-
sect_Obj =
|
|
154
|
+
sect_Obj = _SS_DBUSER(**args)
|
|
148
155
|
_SectionADD(sect_Obj)
|
|
149
156
|
return sect_Obj
|
|
150
157
|
|
|
@@ -158,7 +165,7 @@ class Section:
|
|
|
158
165
|
BI1=0,BI11=0,BI12=0,BI21=0,BI3=0,BI31=0,BI32=0,BI4=0,
|
|
159
166
|
Offset:Offset=Offset.CC(),useShear=True,use7Dof=False,id:int=0):
|
|
160
167
|
args = locals()
|
|
161
|
-
sect_Obj =
|
|
168
|
+
sect_Obj = _SS_PSC_12CELL(**args)
|
|
162
169
|
_SectionADD(sect_Obj)
|
|
163
170
|
return sect_Obj
|
|
164
171
|
|
|
@@ -172,7 +179,7 @@ class Section:
|
|
|
172
179
|
Offset:Offset=Offset.CC(),useShear=True,use7Dof=False,id:int=0):
|
|
173
180
|
|
|
174
181
|
args = locals()
|
|
175
|
-
sect_Obj =
|
|
182
|
+
sect_Obj = _SS_COMP_PSC_I(**args)
|
|
176
183
|
|
|
177
184
|
_SectionADD(sect_Obj)
|
|
178
185
|
return sect_Obj
|
|
@@ -183,7 +190,7 @@ class Section:
|
|
|
183
190
|
Offset:Offset=Offset.CC(),useShear=True,use7Dof=False,id:int=0):
|
|
184
191
|
|
|
185
192
|
args = locals()
|
|
186
|
-
sect_Obj =
|
|
193
|
+
sect_Obj = _SS_PSC_Value(**args)
|
|
187
194
|
|
|
188
195
|
_SectionADD(sect_Obj)
|
|
189
196
|
return sect_Obj
|
|
@@ -203,7 +210,7 @@ class Section:
|
|
|
203
210
|
Offset:Offset=Offset.CC(),useShear=True,use7Dof=False,id:int=0):
|
|
204
211
|
|
|
205
212
|
args = locals()
|
|
206
|
-
sect_Obj =
|
|
213
|
+
sect_Obj = _SS_COMP_PSC_I(**args)
|
|
207
214
|
|
|
208
215
|
_SectionADD(sect_Obj)
|
|
209
216
|
return sect_Obj
|
|
@@ -214,11 +221,41 @@ class Section:
|
|
|
214
221
|
Offset:Offset=Offset.CC(),useShear=True,use7Dof=False,id:int=0):
|
|
215
222
|
|
|
216
223
|
args = locals()
|
|
217
|
-
sect_Obj =
|
|
224
|
+
sect_Obj = _SS_COMP_STEEL_I_TYPE1(**args)
|
|
225
|
+
|
|
226
|
+
_SectionADD(sect_Obj)
|
|
227
|
+
return sect_Obj
|
|
228
|
+
|
|
229
|
+
class Tapered:
|
|
230
|
+
|
|
231
|
+
@staticmethod
|
|
232
|
+
def DBUSER(Name='',Shape='',params_I:list=[],params_J:list=[],Offset=Offset(),useShear=True,use7Dof=False,id:int=0):
|
|
233
|
+
args = locals()
|
|
234
|
+
sect_Obj = _SS_TAPERED_DBUSER(**args)
|
|
218
235
|
|
|
219
236
|
_SectionADD(sect_Obj)
|
|
220
237
|
return sect_Obj
|
|
221
238
|
|
|
239
|
+
@staticmethod
|
|
240
|
+
def PSC1CEL(Name='',Joint=[0,0,0,0,0,0,0,0],
|
|
241
|
+
HO1_I=0,HO2_I=0,HO21_I=0,HO22_I=0,HO3_I=0,HO31_I=0,
|
|
242
|
+
BO1_I=0,BO11_I=0,BO12_I=0,BO2_I=0,BO21_I=0,BO3_I=0,
|
|
243
|
+
HI1_I=0,HI2_I=0,HI21_I=0,HI22_I=0,HI3_I=0,HI31_I=0,HI4_I=0,HI41_I=0,HI42_I=0,HI5_I=0,
|
|
244
|
+
BI1_I=0,BI11_I=0,BI12_I=0,BI21_I=0,BI3_I=0,BI31_I=0,BI32_I=0,BI4_I=0,
|
|
245
|
+
|
|
246
|
+
HO1_J=0,HO2_J=0,HO21_J=0,HO22_J=0,HO3_J=0,HO31_J=0,
|
|
247
|
+
BO1_J=0,BO11_J=0,BO12_J=0,BO2_J=0,BO21_J=0,BO3_J=0,
|
|
248
|
+
HI1_J=0,HI2_J=0,HI21_J=0,HI22_J=0,HI3_J=0,HI31_J=0,HI4_J=0,HI41_J=0,HI42_J=0,HI5_J=0,
|
|
249
|
+
BI1_J=0,BI11_J=0,BI12_J=0,BI21_J=0,BI3_J=0,BI31_J=0,BI32_J=0,BI4_J=0,
|
|
250
|
+
|
|
251
|
+
Offset:Offset=Offset.CC(),useShear=True,use7Dof=False,id:int=0):
|
|
252
|
+
args = locals()
|
|
253
|
+
sect_Obj = _SS_TAP_PSC_1CELL(**args)
|
|
254
|
+
|
|
255
|
+
_SectionADD(sect_Obj)
|
|
256
|
+
return sect_Obj
|
|
257
|
+
|
|
258
|
+
|
|
222
259
|
|
|
223
260
|
|
|
224
261
|
#--------------------------------- T A P E R E D G R O U P ---------------------------------------------
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from ._offsetSS import Offset
|
|
2
2
|
from ._offsetSS import _common
|
|
3
3
|
|
|
4
|
-
class
|
|
4
|
+
class _SS_COMP_PSC_I(_common):
|
|
5
5
|
|
|
6
6
|
""" Create Standard USER DEFINED sections"""
|
|
7
7
|
|
|
@@ -178,7 +178,7 @@ class SS_COMP_PSC_I(_common):
|
|
|
178
178
|
except: e2 = 0
|
|
179
179
|
|
|
180
180
|
|
|
181
|
-
return
|
|
181
|
+
return _SS_COMP_PSC_I(name,False,joint,
|
|
182
182
|
slab[0],slab[1],slab[2],
|
|
183
183
|
vA[0],
|
|
184
184
|
vA[1],vA[2],vA[3],vA[4],vA[5],vA[6],vA[7],vA[8],vA[9],
|
|
@@ -190,7 +190,7 @@ class SS_COMP_PSC_I(_common):
|
|
|
190
190
|
offset,uShear,u7DOF,id)
|
|
191
191
|
|
|
192
192
|
|
|
193
|
-
class
|
|
193
|
+
class _SS_COMP_STEEL_I_TYPE1(_common):
|
|
194
194
|
|
|
195
195
|
""" Create Standard USER DEFINED sections"""
|
|
196
196
|
|
|
@@ -275,7 +275,7 @@ class SS_COMP_STEEL_I_TYPE1(_common):
|
|
|
275
275
|
except: e2 = 0
|
|
276
276
|
|
|
277
277
|
|
|
278
|
-
return
|
|
278
|
+
return _SS_COMP_STEEL_I_TYPE1(name,
|
|
279
279
|
slab[0],slab[1],slab[2],
|
|
280
280
|
vS[0],vS[2],vS[3],vS[1],vS[4],vS[5],
|
|
281
281
|
secti['MATL_ELAST'],secti['MATL_DENS'],secti['MATL_POIS_S'],secti['MATL_POIS_C'],secti['MATL_THERMAL'],
|
midas_civil/_section/_dbSecSS.py
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from ._offsetSS import Offset
|
|
2
2
|
from ._offsetSS import _common
|
|
3
3
|
|
|
4
|
-
class
|
|
4
|
+
class _SS_DBUSER(_common):
|
|
5
5
|
|
|
6
6
|
""" Create Standard USER DEFINED sections"""
|
|
7
7
|
|
|
@@ -40,4 +40,18 @@ class SS_DBUSER(_common):
|
|
|
40
40
|
|
|
41
41
|
@staticmethod
|
|
42
42
|
def _objectify(id,name,type,shape,offset,uShear,u7DOF,js):
|
|
43
|
-
return
|
|
43
|
+
return _SS_DBUSER(name,shape,js['SECT_BEFORE']['SECT_I']['vSIZE'],offset,uShear,u7DOF,id)
|
|
44
|
+
|
|
45
|
+
def _centerLine(shape):
|
|
46
|
+
H = shape.PARAMS[0]
|
|
47
|
+
B = shape.PARAMS[1]
|
|
48
|
+
tw = shape.PARAMS[2]
|
|
49
|
+
tf = shape.PARAMS[3]
|
|
50
|
+
|
|
51
|
+
sect_lin_con = [[1,2],[3,1]]
|
|
52
|
+
|
|
53
|
+
sect_cg = [0,0]
|
|
54
|
+
|
|
55
|
+
sect_shape = [[0,0],[B,0],[0,-H]]
|
|
56
|
+
sect_thk = [tf,tw]
|
|
57
|
+
sect_thk_off = [-tf/2,-tw/2]
|
midas_civil/_section/_pscSS.py
CHANGED
|
@@ -3,7 +3,7 @@ from ._offsetSS import _common
|
|
|
3
3
|
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
class
|
|
6
|
+
class _SS_PSC_12CELL(_common):
|
|
7
7
|
def __init__(self,Name='',Shape='1CEL',Joint=[0,0,0,0,0,0,0,0],
|
|
8
8
|
HO1=0,HO2=0,HO21=0,HO22=0,HO3=0,HO31=0,
|
|
9
9
|
BO1=0,BO11=0,BO12=0,BO2=0,BO21=0,BO3=0,
|
|
@@ -107,7 +107,7 @@ class SS_PSC_12CELL(_common):
|
|
|
107
107
|
vC = js['SECT_BEFORE']['SECT_I']['vSIZE_PSC_C']
|
|
108
108
|
vD = js['SECT_BEFORE']['SECT_I']['vSIZE_PSC_D']
|
|
109
109
|
joint = js['SECT_BEFORE']['JOINT']
|
|
110
|
-
return
|
|
110
|
+
return _SS_PSC_12CELL(name,shape,joint,
|
|
111
111
|
vA[0],vA[1],vA[2],vA[3],vA[4],vA[5],
|
|
112
112
|
vB[0],vB[1],vB[2],vB[3],vB[4],vB[5],
|
|
113
113
|
vC[0],vC[1],vC[2],vC[3],vC[4],vC[5],vC[6],vC[7],vC[8],vC[9],
|
|
@@ -122,7 +122,7 @@ class SS_PSC_12CELL(_common):
|
|
|
122
122
|
|
|
123
123
|
|
|
124
124
|
|
|
125
|
-
class
|
|
125
|
+
class _SS_PSC_I(_common):
|
|
126
126
|
def __init__(self,Name='',Symm = True,Joint=[0,0,0,0,0,0,0,0,0],
|
|
127
127
|
H1=0,
|
|
128
128
|
HL1=0,HL2=0,HL21=0,HL22=0,HL3=0,HL4=0,HL41=0,HL42=0,HL5=0,
|
|
@@ -261,7 +261,7 @@ class SS_PSC_I(_common):
|
|
|
261
261
|
vC = js['SECT_BEFORE']['SECT_I']['vSIZE_PSC_C']
|
|
262
262
|
vD = js['SECT_BEFORE']['SECT_I']['vSIZE_PSC_D']
|
|
263
263
|
joint = js['SECT_BEFORE']['JOINT']
|
|
264
|
-
return
|
|
264
|
+
return _SS_PSC_I(name,symm,joint,
|
|
265
265
|
vA[0],
|
|
266
266
|
vA[1],vA[2],vA[3],vA[4],vA[5],vA[6],vA[7],vA[8],vA[9],
|
|
267
267
|
vB[0],vB[1],vB[2],vB[3],vB[4],vB[5],vB[6],
|
|
@@ -300,7 +300,7 @@ def _poly_dir(poly,rot='CCW'):
|
|
|
300
300
|
|
|
301
301
|
|
|
302
302
|
|
|
303
|
-
class
|
|
303
|
+
class _SS_PSC_Value(_common):
|
|
304
304
|
def __init__(self,Name:str,
|
|
305
305
|
OuterPolygon:list,InnerPolygon:list=[],
|
|
306
306
|
Offset:Offset=Offset.CC(),useShear=True,use7Dof=False,id:int=0):
|
|
@@ -422,4 +422,4 @@ class SS_PSC_Value(_common):
|
|
|
422
422
|
h_pt.append([pt['X'],pt['Y']])
|
|
423
423
|
inner_pt.append(h_pt)
|
|
424
424
|
|
|
425
|
-
return
|
|
425
|
+
return _SS_PSC_Value(name,outer_pt,inner_pt,offset,uShear,u7DOF,id)
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
from ._offsetSS import Offset
|
|
2
|
+
from ._offsetSS import _common
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class _SS_TAP_PSC_1CELL(_common):
|
|
7
|
+
def __init__(self,Name='',Joint=[0,0,0,0,0,0,0,0],
|
|
8
|
+
HO1_I=0,HO2_I=0,HO21_I=0,HO22_I=0,HO3_I=0,HO31_I=0,
|
|
9
|
+
BO1_I=0,BO11_I=0,BO12_I=0,BO2_I=0,BO21_I=0,BO3_I=0,
|
|
10
|
+
HI1_I=0,HI2_I=0,HI21_I=0,HI22_I=0,HI3_I=0,HI31_I=0,HI4_I=0,HI41_I=0,HI42_I=0,HI5_I=0,
|
|
11
|
+
BI1_I=0,BI11_I=0,BI12_I=0,BI21_I=0,BI3_I=0,BI31_I=0,BI32_I=0,BI4_I=0,
|
|
12
|
+
|
|
13
|
+
HO1_J=0,HO2_J=0,HO21_J=0,HO22_J=0,HO3_J=0,HO31_J=0,
|
|
14
|
+
BO1_J=0,BO11_J=0,BO12_J=0,BO2_J=0,BO21_J=0,BO3_J=0,
|
|
15
|
+
HI1_J=0,HI2_J=0,HI21_J=0,HI22_J=0,HI3_J=0,HI31_J=0,HI4_J=0,HI41_J=0,HI42_J=0,HI5_J=0,
|
|
16
|
+
BI1_J=0,BI11_J=0,BI12_J=0,BI21_J=0,BI3_J=0,BI31_J=0,BI32_J=0,BI4_J=0,
|
|
17
|
+
|
|
18
|
+
Offset:Offset=Offset.CC(),useShear=True,use7Dof=False,id:int=0):
|
|
19
|
+
|
|
20
|
+
self.ID = id
|
|
21
|
+
self.NAME = Name
|
|
22
|
+
self.SHAPE = '1CEL'
|
|
23
|
+
self.TYPE = 'TAPERED'
|
|
24
|
+
|
|
25
|
+
self.JO1=bool(Joint[0])
|
|
26
|
+
self.JO2=bool(Joint[1])
|
|
27
|
+
self.JO3=bool(Joint[2])
|
|
28
|
+
self.JI1=bool(Joint[3])
|
|
29
|
+
self.JI2=bool(Joint[4])
|
|
30
|
+
self.JI3=bool(Joint[5])
|
|
31
|
+
self.JI4=bool(Joint[6])
|
|
32
|
+
self.JI5=bool(Joint[7])
|
|
33
|
+
|
|
34
|
+
self.OFFSET = Offset
|
|
35
|
+
self.USESHEAR = bool(useShear)
|
|
36
|
+
self.USE7DOF = bool(use7Dof)
|
|
37
|
+
|
|
38
|
+
self.HO1_I = HO1_I
|
|
39
|
+
self.HO2_I = HO2_I
|
|
40
|
+
self.HO21_I = HO21_I
|
|
41
|
+
self.HO22_I= HO22_I
|
|
42
|
+
self.HO3_I = HO3_I
|
|
43
|
+
self.HO31_I = HO31_I
|
|
44
|
+
|
|
45
|
+
self.BO1_I = BO1_I
|
|
46
|
+
self.BO11_I = BO11_I
|
|
47
|
+
self.BO12_I = BO12_I
|
|
48
|
+
self.BO2_I = BO2_I
|
|
49
|
+
self.BO21_I = BO21_I
|
|
50
|
+
self.BO3_I = BO3_I
|
|
51
|
+
|
|
52
|
+
self.HI1_I = HI1_I
|
|
53
|
+
self.HI2_I = HI2_I
|
|
54
|
+
self.HI21_I = HI21_I
|
|
55
|
+
self.HI22_I = HI22_I
|
|
56
|
+
self.HI3_I = HI3_I
|
|
57
|
+
self.HI31_I = HI31_I
|
|
58
|
+
self.HI4_I = HI4_I
|
|
59
|
+
self.HI41_I = HI41_I
|
|
60
|
+
self.HI42_I = HI42_I
|
|
61
|
+
self.HI5_I = HI5_I
|
|
62
|
+
|
|
63
|
+
self.BI1_I = BI1_I
|
|
64
|
+
self.BI11_I = BI11_I
|
|
65
|
+
self.BI12_I = BI12_I
|
|
66
|
+
self.BI21_I = BI21_I
|
|
67
|
+
self.BI3_I = BI3_I
|
|
68
|
+
self.BI31_I = BI31_I
|
|
69
|
+
self.BI32_I = BI32_I
|
|
70
|
+
self.BI4_I = BI4_I
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
self.HO1_J = HO1_J
|
|
76
|
+
self.HO2_J = HO2_J
|
|
77
|
+
self.HO21_J = HO21_J
|
|
78
|
+
self.HO22_J= HO22_J
|
|
79
|
+
self.HO3_J = HO3_J
|
|
80
|
+
self.HO31_J = HO31_J
|
|
81
|
+
|
|
82
|
+
self.BO1_J = BO1_J
|
|
83
|
+
self.BO11_J = BO11_J
|
|
84
|
+
self.BO12_J = BO12_J
|
|
85
|
+
self.BO2_J = BO2_J
|
|
86
|
+
self.BO21_J = BO21_J
|
|
87
|
+
self.BO3_J = BO3_J
|
|
88
|
+
|
|
89
|
+
self.HI1_J = HI1_J
|
|
90
|
+
self.HI2_J = HI2_J
|
|
91
|
+
self.HI21_J = HI21_J
|
|
92
|
+
self.HI22_J = HI22_J
|
|
93
|
+
self.HI3_J = HI3_J
|
|
94
|
+
self.HI31_J = HI31_J
|
|
95
|
+
self.HI4_J = HI4_J
|
|
96
|
+
self.HI41_J = HI41_J
|
|
97
|
+
self.HI42_J = HI42_J
|
|
98
|
+
self.HI5_J = HI5_J
|
|
99
|
+
|
|
100
|
+
self.BI1_J = BI1_J
|
|
101
|
+
self.BI11_J = BI11_J
|
|
102
|
+
self.BI12_J = BI12_J
|
|
103
|
+
self.BI21_J = BI21_J
|
|
104
|
+
self.BI3_J = BI3_J
|
|
105
|
+
self.BI31_J = BI31_J
|
|
106
|
+
self.BI32_J = BI32_J
|
|
107
|
+
self.BI4_J = BI4_J
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
def __str__(self):
|
|
111
|
+
return f' > ID = {self.ID} | PSC 1-2 CELL SECTION \nJSON = {self.toJSON()}\n'
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
def toJSON(sect):
|
|
115
|
+
js = {
|
|
116
|
+
"SECTTYPE": "TAPERED",
|
|
117
|
+
"SECT_NAME": sect.NAME,
|
|
118
|
+
"SECT_BEFORE": {
|
|
119
|
+
"SHAPE": sect.SHAPE,
|
|
120
|
+
"TYPE" : 11,
|
|
121
|
+
"SECT_I": {
|
|
122
|
+
"vSIZE_PSC_A": [sect.HO1_I,sect.HO2_I,sect.HO21_I,sect.HO22_I,sect.HO3_I,sect.HO31_I],
|
|
123
|
+
"vSIZE_PSC_B": [sect.BO1_I,sect.BO11_I,sect.BO12_I,sect.BO2_I,sect.BO21_I,sect.BO3_I,],
|
|
124
|
+
"vSIZE_PSC_C": [sect.HI1_I,sect.HI2_I,sect.HI21_I,sect.HI22_I,sect.HI3_I,sect.HI31_I,sect.HI4_I,sect.HI41_I,sect.HI42_I,sect.HI5_I],
|
|
125
|
+
"vSIZE_PSC_D": [sect.BI1_I,sect.BI11_I,sect.BI12_I,sect.BI21_I,sect.BI3_I,sect.BI31_I,sect.BI32_I,sect.BI4_I],
|
|
126
|
+
"S_WIDTH" : sect.HO1_I
|
|
127
|
+
},
|
|
128
|
+
"SECT_J": {
|
|
129
|
+
"vSIZE_PSC_A": [sect.HO1_J,sect.HO2_J,sect.HO21_J,sect.HO22_J,sect.HO3_J,sect.HO31_J],
|
|
130
|
+
"vSIZE_PSC_B": [sect.BO1_J,sect.BO11_J,sect.BO12_J,sect.BO2_J,sect.BO21_J,sect.BO3_J,],
|
|
131
|
+
"vSIZE_PSC_C": [sect.HI1_J,sect.HI2_J,sect.HI21_J,sect.HI22_J,sect.HI3_J,sect.HI31_J,sect.HI4_J,sect.HI41_J,sect.HI42_J,sect.HI5_J],
|
|
132
|
+
"vSIZE_PSC_D": [sect.BI1_J,sect.BI11_J,sect.BI12_J,sect.BI21_J,sect.BI3_J,sect.BI31_J,sect.BI32_J,sect.BI4_J],
|
|
133
|
+
"S_WIDTH" : sect.HO1_J
|
|
134
|
+
},
|
|
135
|
+
"Y_VAR": 1,
|
|
136
|
+
"Z_VAR": 1,
|
|
137
|
+
"WARPING_CHK_AUTO_I": True,
|
|
138
|
+
"WARPING_CHK_AUTO_J": True,
|
|
139
|
+
"SHEAR_CHK": False,
|
|
140
|
+
"WARPING_CHK_POS_I": [[0,0,0,0,0,0],[0,0,0,0,0,0]],
|
|
141
|
+
"WARPING_CHK_POS_J": [[0,0,0,0,0,0],[0,0,0,0,0,0]],
|
|
142
|
+
"USE_WEB_THICK_SHEAR": [[True, True,True],[True,True,True]],
|
|
143
|
+
"WEB_THICK_SHEAR": [[0,0,0],[0,0,0]],
|
|
144
|
+
"USE_WEB_THICK": [True,True],
|
|
145
|
+
"WEB_THICK": [0,0],
|
|
146
|
+
"USE_SYMMETRIC": False,
|
|
147
|
+
"USE_SMALL_HOLE": False,
|
|
148
|
+
"USE_USER_DEF_MESHSIZE": False,
|
|
149
|
+
"USE_USER_INTPUT_STIFF": False,
|
|
150
|
+
"PSC_OPT1": "",
|
|
151
|
+
"PSC_OPT2": "",
|
|
152
|
+
"JOINT": [sect.JO1,sect.JO2,sect.JO3,sect.JI1,sect.JI2,sect.JI3,sect.JI4,sect.JI5]
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
js['SECT_BEFORE'].update(sect.OFFSET.JS)
|
|
156
|
+
js['SECT_BEFORE']['USE_SHEAR_DEFORM'] = sect.USESHEAR
|
|
157
|
+
js['SECT_BEFORE']['USE_WARPING_EFFECT'] = sect.USE7DOF
|
|
158
|
+
return js
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
@staticmethod
|
|
162
|
+
def _objectify(id,name,type,shape,offset,uShear,u7DOF,js):
|
|
163
|
+
#--- PSC 1,2 CELL -------------------
|
|
164
|
+
vA_I = js['SECT_BEFORE']['SECT_I']['vSIZE_PSC_A']
|
|
165
|
+
vB_I = js['SECT_BEFORE']['SECT_I']['vSIZE_PSC_B']
|
|
166
|
+
vC_I = js['SECT_BEFORE']['SECT_I']['vSIZE_PSC_C']
|
|
167
|
+
vD_I = js['SECT_BEFORE']['SECT_I']['vSIZE_PSC_D']
|
|
168
|
+
|
|
169
|
+
vA_J = js['SECT_BEFORE']['SECT_J']['vSIZE_PSC_A']
|
|
170
|
+
vB_J = js['SECT_BEFORE']['SECT_J']['vSIZE_PSC_B']
|
|
171
|
+
vC_J = js['SECT_BEFORE']['SECT_J']['vSIZE_PSC_C']
|
|
172
|
+
vD_J = js['SECT_BEFORE']['SECT_J']['vSIZE_PSC_D']
|
|
173
|
+
|
|
174
|
+
joint = js['SECT_BEFORE']['JOINT']
|
|
175
|
+
return _SS_TAP_PSC_1CELL(name,joint,
|
|
176
|
+
*vA_I,*vB_I,*vC_I,*vD_I,
|
|
177
|
+
*vA_J,*vB_J,*vC_J,*vD_J,
|
|
178
|
+
offset,uShear,u7DOF,id)
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
|
midas_civil/_section/_unSupp.py
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from ._offsetSS import _common
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
class
|
|
4
|
+
class _SS_UNSUPP(_common):
|
|
5
5
|
|
|
6
6
|
""" Store Unsupported section"""
|
|
7
7
|
|
|
@@ -29,7 +29,7 @@ class SS_UNSUPP(_common):
|
|
|
29
29
|
js['SECT_BEFORE']['USE_WARPING_EFFECT'] = sect.USE7DOF
|
|
30
30
|
return js
|
|
31
31
|
|
|
32
|
-
class
|
|
32
|
+
class _SS_STD_DB(_common):
|
|
33
33
|
|
|
34
34
|
""" Store Unsupported section"""
|
|
35
35
|
|
midas_civil/_settlement.py
CHANGED
midas_civil/_temperature.py
CHANGED
midas_civil/_tendon.py
CHANGED
midas_civil/_thickness.py
CHANGED
midas_civil/_utils.py
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
from ._model import *
|
|
2
|
-
from ._mapi import *
|
|
1
|
+
# from ._model import *
|
|
2
|
+
# from ._mapi import *
|
|
3
3
|
|
|
4
4
|
#Function to remove duplicate set of values from 2 lists
|
|
5
5
|
# def unique_lists(li1, li2):
|
|
@@ -86,4 +86,4 @@ def zz_add_to_dict(dictionary, key, value):
|
|
|
86
86
|
def _convItem2List(item):
|
|
87
87
|
if isinstance(item,list):
|
|
88
88
|
return item
|
|
89
|
-
return [item]
|
|
89
|
+
return [item]
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
midas_civil/_BoundaryChangeAssignment.py,sha256=8lQC0DZ8zAXuPfchBdhqUaLZhZMog51EffQcKeayrlc,9511
|
|
2
|
+
midas_civil/__init__.py,sha256=T0NwsEmr2c1166UlxbogGhDfBzvRGbTIU9XX9c6h-_E,1156
|
|
3
|
+
midas_civil/_analysiscontrol.py,sha256=r2zp7fdC_m-WfO7KSXU4SzVjOgLWg4Wm0djl7X1ioZo,24456
|
|
4
|
+
midas_civil/_boundary.py,sha256=s5mgZIc1b0-P7AdWuaPAQ5cIbHL5CR1YRKJA7KE4W_U,32958
|
|
5
|
+
midas_civil/_construction.py,sha256=q9C3gGdvky5t7jCDzd6lBRv6pm8cMycI91xfkgDV37Y,40673
|
|
6
|
+
midas_civil/_construction_backup.py,sha256=Pj7V-NYCkkT-aMjKXfs1jKa9klsGh48UXDLwn3BLYTY,18225
|
|
7
|
+
midas_civil/_element.py,sha256=1GcI-9PcRdfvHvtXs2tdMNRvvxyQ7A78Lk8rAp5gGOw,34795
|
|
8
|
+
midas_civil/_group.py,sha256=ul0gPtAhfuc9HPQkVw2dfV0jqCLvnTbxAlx6hEBUmyI,9882
|
|
9
|
+
midas_civil/_load.py,sha256=twsfqofTzbnMHXShfMRSP61ll7CTBA5qos33od7nQ9E,30170
|
|
10
|
+
midas_civil/_mapi.py,sha256=UMGuzuNE7uTjR6YwPsbfI5xHSoFESVY2U0NM5mfgcW8,5486
|
|
11
|
+
midas_civil/_material.py,sha256=uJEIHJM9OhwTRWUI2mtd_0BQSxdlYhATYJu9P7tNNBA,69511
|
|
12
|
+
midas_civil/_model.py,sha256=huUlmIZVsBbThszrEIhvb9owOSmdggylXaJeK4g7lxY,16735
|
|
13
|
+
midas_civil/_movingload.py,sha256=a1i5fNc7oCmWTjVXbyBEYzDr5BO7NTXPVCKgvjzxuX4,80000
|
|
14
|
+
midas_civil/_node.py,sha256=3iVj5Hs7DJPbfgM_hIazP-Y1szu3j3ofuh_ftUxoLcY,8827
|
|
15
|
+
midas_civil/_result copy.py,sha256=siTMENLIwF_6rvydSjP9aQAWaIlt0pReiqNyDhDevGk,24290
|
|
16
|
+
midas_civil/_result.py,sha256=nzXY2lh_342M45TMq2hBYwSp41_wAHyGFSfvt9h2vXc,7638
|
|
17
|
+
midas_civil/_result_extract.py,sha256=QVo1DJmlkTJ20-FwqgguH70bVrwHbx7TfPFENYfCUbE,5706
|
|
18
|
+
midas_civil/_settlement.py,sha256=0ZkKutTjQ7Wg47ohfrc6SgoZY1xyP9_ylGQlCVBH-2U,5124
|
|
19
|
+
midas_civil/_temperature.py,sha256=Sr5fRgUHzMx6tfr1E0Nw7ZLYKUmzoH1h6Sl-APqFkHo,24208
|
|
20
|
+
midas_civil/_tendon.py,sha256=pUtR-74c1GcJyJt6Te38TAlBBOZJtlkERb9Ijf5CkH0,33417
|
|
21
|
+
midas_civil/_thickness.py,sha256=yyFkMCaxcwRsqYJcRAxWqnt59fdqzX4Mqkjz23waw-A,3247
|
|
22
|
+
midas_civil/_utils.py,sha256=c_NgCmqtoWP7jv4RoK7oGyF9edDo_UlJYR-p54h572U,2711
|
|
23
|
+
midas_civil/_view.py,sha256=o7rkfoQzmgAb3dT0ujPIQLVwVlveo3rMRIbZU1UosZo,849
|
|
24
|
+
midas_civil/_section/_TapdbSecSS.py,sha256=ANHBwzegppGmUlm7spEBNDHfdJfTbWX7Q-pvn-Th1tA,1649
|
|
25
|
+
midas_civil/_section/__init__.py,sha256=subwWGtIRFfz19i2mtLPuQbViFAR8-xZY7eHLBGUWO4,15250
|
|
26
|
+
midas_civil/_section/_compositeSS.py,sha256=mrHOkjHkbuVOLAd1dGEiLruyqmye_mv9H99UJIdWdiQ,9942
|
|
27
|
+
midas_civil/_section/_dbSecSS.py,sha256=Dupfs4un0mwJbreqrUPw7iEstbdFiMiQYXVQtam-5k0,1763
|
|
28
|
+
midas_civil/_section/_offsetSS.py,sha256=kHjwp_PCeBKWqYKoQCy0s4d8O5Gb0Vk6e1MWMOGxql4,1377
|
|
29
|
+
midas_civil/_section/_pscSS.py,sha256=PnXR5lJNKYtp8MyFddJlW45CYCRSG6SpA-zojDl4DnE,14254
|
|
30
|
+
midas_civil/_section/_tapPSC1CellSS.py,sha256=bjpuOgIot2yQd2zirE6vVmVlgfco1f83RlI7DwIicdU,6700
|
|
31
|
+
midas_civil/_section/_unSupp.py,sha256=46A_a5CzDpQM7bqglkFzIvq6VG7Lj9J6qflY3nwZlqI,1674
|
|
32
|
+
midas_civil-1.0.8.dist-info/licenses/LICENSE,sha256=zrL4RwZC4rb-by_ZHKXwKdIwcs6ATy59TPZ9HxPHCrs,1071
|
|
33
|
+
midas_civil-1.0.8.dist-info/METADATA,sha256=BW2J0aNKOVhFN8yglhcnfnMj8smztMrx4xbSwEzN6Po,2085
|
|
34
|
+
midas_civil-1.0.8.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
35
|
+
midas_civil-1.0.8.dist-info/top_level.txt,sha256=_NFmrlN5V9OxJ-PAO4s_om8OA8uupXho3QqZcSsnbuI,12
|
|
36
|
+
midas_civil-1.0.8.dist-info/RECORD,,
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
midas_civil/__init__.py,sha256=1ujB-IU1sqSOkCJATTSTFqdAwn0msRqvCU0X1l_2c9A,1114
|
|
2
|
-
midas_civil/_analysiscontrol.py,sha256=r2zp7fdC_m-WfO7KSXU4SzVjOgLWg4Wm0djl7X1ioZo,24456
|
|
3
|
-
midas_civil/_boundary.py,sha256=s5mgZIc1b0-P7AdWuaPAQ5cIbHL5CR1YRKJA7KE4W_U,32958
|
|
4
|
-
midas_civil/_construction.py,sha256=q9C3gGdvky5t7jCDzd6lBRv6pm8cMycI91xfkgDV37Y,40673
|
|
5
|
-
midas_civil/_construction_backup.py,sha256=Pj7V-NYCkkT-aMjKXfs1jKa9klsGh48UXDLwn3BLYTY,18225
|
|
6
|
-
midas_civil/_element.py,sha256=i0svU0oRndZHJweOddDTpyEc4tD3LMclBxlp7nmO1a4,32795
|
|
7
|
-
midas_civil/_group.py,sha256=KRTPPUiHfUQJ_APFJ0dhkiNeDysAQaihVC7nCnLlamo,9881
|
|
8
|
-
midas_civil/_load.py,sha256=TltWAjDaeC5MNW8IIPKgpLahDQgJR3J6SzinkCrJS7A,30171
|
|
9
|
-
midas_civil/_mapi.py,sha256=rQWGN2Wy38h64HAtNpXGCB-EVeNypGaFBoqFno1s3-Q,5469
|
|
10
|
-
midas_civil/_material.py,sha256=uJEIHJM9OhwTRWUI2mtd_0BQSxdlYhATYJu9P7tNNBA,69511
|
|
11
|
-
midas_civil/_model.py,sha256=hVwcSdkKf_DEf2IO_jzGle2T_0s7tG3ivG0feHKXQ7k,16656
|
|
12
|
-
midas_civil/_movingload.py,sha256=kzTbi4vFjOnUYOyhDDTmSHFU-sDGb_MgMBNXUmFmUZc,80001
|
|
13
|
-
midas_civil/_node.py,sha256=xkUdHdZgGq1kBBXNiumOKebZa9l-fKOEOsJLsDDHXtg,8828
|
|
14
|
-
midas_civil/_result copy.py,sha256=siTMENLIwF_6rvydSjP9aQAWaIlt0pReiqNyDhDevGk,24290
|
|
15
|
-
midas_civil/_result.py,sha256=ZJf2CQG2ZjlTKuWo3zBnG7W8EwI1UkhWhWJVWRzlXUU,7640
|
|
16
|
-
midas_civil/_result_extract.py,sha256=cZgWMxvZV9Pc-Ec0KzGrerDRv1Sj3AJKqlZwj_uVi9w,5707
|
|
17
|
-
midas_civil/_settlement.py,sha256=U7lJYBqGbuCv7qziEEznDyA4M_SCjJeIjc0lDeGfE4Y,5125
|
|
18
|
-
midas_civil/_temperature.py,sha256=EfvivFWfxyM8yFCvWJgXLhaCofGwLKEBGFUuW8yHnfQ,24209
|
|
19
|
-
midas_civil/_tendon.py,sha256=mXNJeLikFsBpgn8u9fED2qx9oqnKh3XtIpYwp3moEfk,33395
|
|
20
|
-
midas_civil/_thickness.py,sha256=4xQsLA3Q_gIGCwLc_glFmiErdWdQUSwhlEhJ_IPJseA,3248
|
|
21
|
-
midas_civil/_utils.py,sha256=GR9cj-mgRPmtwmgqEj4JeEjMlRS6zmvhcxFV5IHbpRk,2708
|
|
22
|
-
midas_civil/_view.py,sha256=o7rkfoQzmgAb3dT0ujPIQLVwVlveo3rMRIbZU1UosZo,849
|
|
23
|
-
midas_civil/_section/__init__.py,sha256=Ly3a1-eNjp7myjvhNvc4qcaEsb2Aa_sTcfHF86ck48I,13494
|
|
24
|
-
midas_civil/_section/_compositeSS.py,sha256=cCmPDUy0z7vZTjBwJShvMFv4GyAcJje-xWATSNqyZLY,9938
|
|
25
|
-
midas_civil/_section/_dbSecSS.py,sha256=f05G-xLquAP_q1juMqHxd55xn9RJ6EH8dOvdEgn5-E4,1444
|
|
26
|
-
midas_civil/_section/_offsetSS.py,sha256=kHjwp_PCeBKWqYKoQCy0s4d8O5Gb0Vk6e1MWMOGxql4,1377
|
|
27
|
-
midas_civil/_section/_pscSS.py,sha256=PTqw0KZm03wBqKNQkF424HveB12KQCEVDNhK83qqJ-A,14248
|
|
28
|
-
midas_civil/_section/_unSupp.py,sha256=7_Dtid35yrvYTzp0R_rsSyvzG6_XnQzbF2UhMvCdaQc,1672
|
|
29
|
-
midas_civil-1.0.5.dist-info/licenses/LICENSE,sha256=zrL4RwZC4rb-by_ZHKXwKdIwcs6ATy59TPZ9HxPHCrs,1071
|
|
30
|
-
midas_civil-1.0.5.dist-info/METADATA,sha256=l1Dk2A2soHUMx_UEz14E2IGes-2S8H2y6y6OQO94P00,2085
|
|
31
|
-
midas_civil-1.0.5.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
32
|
-
midas_civil-1.0.5.dist-info/top_level.txt,sha256=_NFmrlN5V9OxJ-PAO4s_om8OA8uupXho3QqZcSsnbuI,12
|
|
33
|
-
midas_civil-1.0.5.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|