midas-civil 0.0.1__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.

@@ -0,0 +1,739 @@
1
+ from ._mapi import *
2
+
3
+
4
+
5
+ def _SectionADD(self):
6
+ # Commom HERE ---------------------------------------------
7
+ id = int(self.ID)
8
+ if Section.ids == []:
9
+ count = 1
10
+ else:
11
+ count = max(Section.ids)+1
12
+
13
+ if id==0 :
14
+ self.ID = count
15
+ Section.sect.append(self)
16
+ Section.ids.append(int(self.ID))
17
+ elif id in Section.ids:
18
+ self.ID=int(id)
19
+ print(f'⚠️ Section with ID {id} already exist! It will be replaced.')
20
+ index=Section.ids.index(id)
21
+ Section.sect[index]=self
22
+ else:
23
+ self.ID=id
24
+ Section.sect.append(self)
25
+ Section.ids.append(int(self.ID))
26
+ # Common END -------------------------------------------------------
27
+
28
+
29
+ def _updateSect(self):
30
+ js2s = {'Assign':{self.ID : _Obj2JS(self)}}
31
+ MidasAPI('PUT','/db/sect',js2s)
32
+ return js2s
33
+
34
+
35
+ def _Obj2JS(sect):
36
+
37
+ js={}
38
+
39
+ if sect.TYPE == 'DBUSER':
40
+ if sect.DATATYPE == 2:
41
+ #--- DB SECTION ---------------------------------------
42
+ js = {
43
+ "SECTTYPE": "DBUSER",
44
+ "SECT_NAME": sect.NAME,
45
+ "SECT_BEFORE": {
46
+ "SHAPE": sect.SHAPE,
47
+ "DATATYPE": sect.DATATYPE,
48
+ "SECT_I": {
49
+ "vSIZE": sect.PARAMS
50
+ }
51
+ }
52
+ }
53
+ #--- PSC 1-2 Cell ---------------------------------------
54
+ elif sect.TYPE == 'PSC':
55
+ if sect.SHAPE in ['1CEL','2CEL']:
56
+ js = {
57
+ "SECTTYPE": "PSC",
58
+ "SECT_NAME": sect.NAME,
59
+ "SECT_BEFORE": {
60
+ "SHAPE": sect.SHAPE,
61
+ "SECT_I": {
62
+ "vSIZE_PSC_A": [sect.HO1,sect.HO2,sect.HO21,sect.HO22,sect.HO3,sect.HO31],
63
+ "vSIZE_PSC_B": [sect.BO1,sect.BO11,sect.BO12,sect.BO2,sect.BO21,sect.BO3,],
64
+ "vSIZE_PSC_C": [sect.HI1,sect.HI2,sect.HI21,sect.HI22,sect.HI3,sect.HI31,sect.HI4,sect.HI41,sect.HI42,sect.HI5],
65
+ "vSIZE_PSC_D": [sect.BI1,sect.BI11,sect.BI12,sect.BI21,sect.BI3,sect.BI31,sect.BI32,sect.BI4]
66
+ },
67
+ "WARPING_CHK_AUTO_I": True,
68
+ "WARPING_CHK_AUTO_J": True,
69
+ "SHEAR_CHK": True,
70
+ "WARPING_CHK_POS_I": [[0,0,0,0,0,0],[0,0,0,0,0,0]],
71
+ "WARPING_CHK_POS_J": [[0,0,0,0,0,0],[0,0,0,0,0,0]],
72
+ "USE_AUTO_SHEAR_CHK_POS": [[True,False,True],[False,False,False]],
73
+ "USE_WEB_THICK_SHEAR": [[True, True,True],[False,False,False]],
74
+ "SHEAR_CHK_POS": [[0,0,0],[0,0,0]],
75
+ "USE_WEB_THICK": [True,False],
76
+ "WEB_THICK": [0,0],
77
+ "JOINT": [sect.JO1,sect.JO2,sect.JO3,sect.JI1,sect.JI2,sect.JI3,sect.JI4,sect.JI5]
78
+ }
79
+ }
80
+
81
+ elif sect.SHAPE in ['PSCI']:
82
+ js = {
83
+ "SECTTYPE": "PSC",
84
+ "SECT_NAME": sect.NAME,
85
+ "SECT_BEFORE": {
86
+ "SHAPE": sect.SHAPE,
87
+ "SECT_I": {
88
+ "vSIZE_PSC_A": [sect.H1,sect.HL1,sect.HL2,sect.HL21,sect.HL22,sect.HL3,sect.HL4,sect.HL41,sect.HL42,sect.HL5],
89
+ "vSIZE_PSC_B": [sect.BL1,sect.BL2,sect.BL21,sect.BL22,sect.BL4,sect.BL41,sect.BL42],
90
+ "vSIZE_PSC_C": [sect.HR1,sect.HR2,sect.HR21,sect.HR22,sect.HR3,sect.HR4,sect.HR41,sect.HR42,sect.HR5],
91
+ "vSIZE_PSC_D": [sect.BR1,sect.BR2,sect.BR21,sect.BR22,sect.BR4,sect.BR41,sect.BR42]
92
+ },
93
+ "WARPING_CHK_AUTO_I": True,
94
+ "WARPING_CHK_AUTO_J": True,
95
+ "SHEAR_CHK": True,
96
+ "WARPING_CHK_POS_I": [[0,0,0,0,0,0],[0,0,0,0,0,0]],
97
+ "WARPING_CHK_POS_J": [[0,0,0,0,0,0],[0,0,0,0,0,0]],
98
+ "USE_AUTO_SHEAR_CHK_POS": [[True,False,True],[False,False,False]],
99
+ "USE_WEB_THICK_SHEAR": [[True, True,True],[False,False,False]],
100
+ "SHEAR_CHK_POS": [[0,0,0],[0,0,0]],
101
+ "USE_WEB_THICK": [True,False],
102
+ "WEB_THICK": [0,0],
103
+ "USE_SYMMETRIC" : sect.SYMM,
104
+ "JOINT": [sect.J1,sect.JL1,sect.JL2,sect.JL3,sect.JL4,sect.JR1,sect.JR2,sect.JR3,sect.JR4]
105
+ }
106
+ }
107
+
108
+ elif sect.TYPE == 'COMPOSITE':
109
+ if sect.SHAPE in ['CI']:
110
+ js = {
111
+ "SECTTYPE": sect.TYPE,
112
+ "SECT_NAME": sect.NAME,
113
+ "SECT_BEFORE": {
114
+ "SHAPE": sect.SHAPE,
115
+ "SECT_I": {
116
+ "vSIZE_PSC_A": [sect.H1,sect.HL1,sect.HL2,sect.HL21,sect.HL22,sect.HL3,sect.HL4,sect.HL41,sect.HL42,sect.HL5],
117
+ "vSIZE_PSC_B": [sect.BL1,sect.BL2,sect.BL21,sect.BL22,sect.BL4,sect.BL41,sect.BL42],
118
+ "vSIZE_PSC_C": [sect.HR1,sect.HR2,sect.HR21,sect.HR22,sect.HR3,sect.HR4,sect.HR41,sect.HR42,sect.HR5],
119
+ "vSIZE_PSC_D": [sect.BR1,sect.BR2,sect.BR21,sect.BR22,sect.BR4,sect.BR41,sect.BR42]
120
+ },
121
+ "WARPING_CHK_AUTO_I": True,
122
+ "WARPING_CHK_AUTO_J": True,
123
+ "SHEAR_CHK": True,
124
+ "WARPING_CHK_POS_I": [[0,0,0,0,0,0],[0,0,0,0,0,0]],
125
+ "WARPING_CHK_POS_J": [[0,0,0,0,0,0],[0,0,0,0,0,0]],
126
+ "USE_AUTO_SHEAR_CHK_POS": [[True,False,True],[False,False,False]],
127
+ "USE_WEB_THICK_SHEAR": [[True, True,True],[False,False,False]],
128
+ "SHEAR_CHK_POS": [[0,0,0],[0,0,0]],
129
+ "USE_WEB_THICK": [True,False],
130
+ "WEB_THICK": [0,0],
131
+ "JOINT": [sect.J1,sect.JL1,sect.JL2,sect.JL3,sect.JL4,sect.JR1,sect.JR2,sect.JR3,sect.JR4],
132
+ "MATL_ELAST": sect.MATL_ELAST,
133
+ "MATL_DENS": sect.MATL_DENS,
134
+ "MATL_POIS_S": sect.MATL_POIS_S,
135
+ "MATL_POIS_C": sect.MATL_POIS_C,
136
+ "MATL_THERMAL": sect.MATL_THERMAL,
137
+ "USE_MULTI_ELAST": sect.USE_MULTI_ELAST,
138
+ "LONGTERM_ESEC": sect.LONGTERM_ESEC,
139
+ "SHRINK_ESEC": sect.SHRINK_ESEC,
140
+ },
141
+ "SECT_AFTER": {
142
+ "SLAB": [sect.BC,sect.TC,sect.HH]
143
+ }
144
+ }
145
+ elif sect.SHAPE in ['I']:
146
+ js = {
147
+ "SECTTYPE": sect.TYPE,
148
+ "SECT_NAME": sect.NAME,
149
+ "SECT_BEFORE": {
150
+ "SHAPE": sect.SHAPE,
151
+ "SECT_I": {
152
+ "vSIZE": [sect.HW,sect.TW,sect.B1,sect.TF1,sect.B2,sect.TF2],
153
+ },
154
+
155
+ "MATL_ELAST": sect.MATL_ELAST,
156
+ "MATL_DENS": sect.MATL_DENS,
157
+ "MATL_POIS_S": sect.MATL_POIS_S,
158
+ "MATL_POIS_C": sect.MATL_POIS_C,
159
+ "MATL_THERMAL": sect.MATL_THERMAL,
160
+ "USE_MULTI_ELAST": sect.USE_MULTI_ELAST,
161
+ "LONGTERM_ESEC": sect.LONGTERM_ESEC,
162
+ "SHRINK_ESEC": sect.SHRINK_ESEC,
163
+ },
164
+ "SECT_AFTER": {
165
+ "SLAB": [sect.BC,sect.TC,sect.HH]
166
+ }
167
+ }
168
+
169
+
170
+
171
+
172
+ #--- COMMON FOR ALL SECTIONS ---------------------------------------
173
+ js['SECT_BEFORE'].update(sect.OFFSET.JS)
174
+ js['SECT_BEFORE']['USE_SHEAR_DEFORM'] = sect.USESHEAR
175
+ js['SECT_BEFORE']['USE_WARPING_EFFECT'] = sect.USE7DOF
176
+ return js
177
+
178
+
179
+
180
+ def _JS2Obj(id,js):
181
+ name = js['SECT_NAME']
182
+ type = js['SECTTYPE']
183
+ shape = js['SECT_BEFORE']['SHAPE']
184
+ offset = off_JS2Obj(js['SECT_BEFORE'])
185
+ uShear = js['SECT_BEFORE']['USE_SHEAR_DEFORM']
186
+ u7DOF = js['SECT_BEFORE']['USE_WARPING_EFFECT']
187
+
188
+ if type == 'DBUSER':
189
+ if js['SECT_BEFORE']['DATATYPE'] ==2:
190
+ #--- USER DEFINED SECTIONS (STANDARD) -------------------
191
+ Section.DBUSER(name,shape,js['SECT_BEFORE']['SECT_I']['vSIZE'],offset,uShear,u7DOF,id)
192
+
193
+ elif type == 'PSC':
194
+ if shape in ['1CEL','2CEL']:
195
+ #--- PSC 1,2 CELL -------------------
196
+ vA = js['SECT_BEFORE']['SECT_I']['vSIZE_PSC_A']
197
+ vB = js['SECT_BEFORE']['SECT_I']['vSIZE_PSC_B']
198
+ vC = js['SECT_BEFORE']['SECT_I']['vSIZE_PSC_C']
199
+ vD = js['SECT_BEFORE']['SECT_I']['vSIZE_PSC_D']
200
+ joint = js['SECT_BEFORE']['JOINT']
201
+ Section.PSC.CEL12(name,shape,joint,
202
+ vA[0],vA[1],vA[2],vA[3],vA[4],vA[5],
203
+ vB[0],vB[1],vB[2],vB[3],vB[4],vB[5],
204
+ vC[0],vC[1],vC[2],vC[3],vC[4],vC[5],vC[6],vC[7],vC[8],vC[9],
205
+ vD[0],vD[1],vD[2],vD[3],vD[4],vD[5],vD[6],vD[7],
206
+ offset,uShear,u7DOF,id)
207
+ elif shape in ['PSCI']:
208
+ #--- PSC I -------------------
209
+ symm = js['SECT_BEFORE']['USE_SYMMETRIC']
210
+ vA = js['SECT_BEFORE']['SECT_I']['vSIZE_PSC_A']
211
+ vB = js['SECT_BEFORE']['SECT_I']['vSIZE_PSC_B']
212
+ vC = js['SECT_BEFORE']['SECT_I']['vSIZE_PSC_C']
213
+ vD = js['SECT_BEFORE']['SECT_I']['vSIZE_PSC_D']
214
+ joint = js['SECT_BEFORE']['JOINT']
215
+ Section.PSC.I(name,symm,joint,
216
+ vA[0],
217
+ vA[1],vA[2],vA[3],vA[4],vA[5],vA[6],vA[7],vA[8],vA[9],
218
+ vB[0],vB[1],vB[2],vB[3],vB[4],vB[5],vB[6],
219
+ vC[0],vC[1],vC[2],vC[3],vC[4],vC[5],vC[6],vC[7],vC[8],
220
+ vD[0],vD[1],vD[2],vD[3],vD[4],vD[5],vD[6],
221
+ offset,uShear,u7DOF,id)
222
+ elif type == 'COMPOSITE':
223
+ if shape in ['CI']:
224
+ vA = js['SECT_BEFORE']['SECT_I']['vSIZE_PSC_A']
225
+ vB = js['SECT_BEFORE']['SECT_I']['vSIZE_PSC_B']
226
+ vC = js['SECT_BEFORE']['SECT_I']['vSIZE_PSC_C']
227
+ vD = js['SECT_BEFORE']['SECT_I']['vSIZE_PSC_D']
228
+ joint = js['SECT_BEFORE']['JOINT']
229
+ slab = js['SECT_AFTER']['SLAB']
230
+ secti = js['SECT_BEFORE']
231
+
232
+ try: e1 = js['SECT_BEFORE']['LONGTERM_ESEC']
233
+ except: e1 = 0
234
+ try: e2 = js['SECT_BEFORE']['SHRINK_ESEC']
235
+ except: e2 = 0
236
+
237
+
238
+ Section.Composite.PSCI(name,False,joint,
239
+ slab[0],slab[1],slab[2],
240
+ vA[0],
241
+ vA[1],vA[2],vA[3],vA[4],vA[5],vA[6],vA[7],vA[8],vA[9],
242
+ vB[0],vB[1],vB[2],vB[3],vB[4],vB[5],vB[6],
243
+ vC[0],vC[1],vC[2],vC[3],vC[4],vC[5],vC[6],vC[7],vC[8],
244
+ vD[0],vD[1],vD[2],vD[3],vD[4],vD[5],vD[6],
245
+ secti['MATL_ELAST'],secti['MATL_DENS'],secti['MATL_POIS_S'],secti['MATL_POIS_C'],secti['MATL_THERMAL'],
246
+ secti['USE_MULTI_ELAST'],e1,e2,
247
+ offset,uShear,u7DOF,id)
248
+ if shape in ['I']:
249
+ vS = js['SECT_BEFORE']['SECT_I']['vSIZE']
250
+ slab = js['SECT_AFTER']['SLAB']
251
+ secti = js['SECT_BEFORE']
252
+
253
+ try: e1 = js['SECT_BEFORE']['LONGTERM_ESEC']
254
+ except: e1 = 0
255
+ try: e2 = js['SECT_BEFORE']['SHRINK_ESEC']
256
+ except: e2 = 0
257
+
258
+
259
+ Section.Composite.SteelI_Type1(name,
260
+ slab[0],slab[1],slab[2],
261
+ vS[0],vS[1],vS[2],vS[3],vS[4],vS[5],
262
+ secti['MATL_ELAST'],secti['MATL_DENS'],secti['MATL_POIS_S'],secti['MATL_POIS_C'],secti['MATL_THERMAL'],
263
+ secti['USE_MULTI_ELAST'],e1,e2,
264
+ offset,uShear,u7DOF,id)
265
+
266
+
267
+
268
+
269
+ class Offset:
270
+ def __init__(self,OffsetPoint='CC',CenterLocation=0,HOffset=0,HOffOpt=0,VOffset=0,VOffOpt=0,UsrOffOpt=0):
271
+
272
+ # self.OFFSET_PT =OffsetPoint
273
+ # self.OFFSET_CENTER =CenterLocation
274
+ # self.HORZ_OFFSET_OPT = HOffOpt
275
+ # self.USERDEF_OFFSET_YI = HOffset
276
+ # self.USERDEF_OFFSET_YJ = HOffset
277
+ # self.VERT_OFFSET_OPT = VOffOpt
278
+ # self.USERDEF_OFFSET_ZI = VOffset
279
+ # self.USERDEF_OFFSET_ZJ = VOffset
280
+ # self.USER_OFFSET_REF = UsrOffOpt
281
+
282
+ self.JS = {
283
+ "OFFSET_PT": OffsetPoint,
284
+ "OFFSET_CENTER": CenterLocation,
285
+
286
+ "USER_OFFSET_REF": UsrOffOpt,
287
+ "HORZ_OFFSET_OPT": HOffOpt,
288
+ "USERDEF_OFFSET_YI": HOffset,
289
+
290
+ "USERDEF_OFFSET_YJ": HOffset, #Tapered only
291
+
292
+ "VERT_OFFSET_OPT": VOffOpt,
293
+ "USERDEF_OFFSET_ZI": VOffset,
294
+
295
+ "USERDEF_OFFSET_ZJ": VOffset, #Tapered only
296
+ }
297
+
298
+
299
+ def __str__(self):
300
+ return str(self.JS)
301
+
302
+
303
+ @staticmethod
304
+ def CC():
305
+ return Offset()
306
+
307
+ @staticmethod
308
+ def CT():
309
+ return Offset('CT')
310
+
311
+
312
+ def off_JS2Obj(js):
313
+
314
+ # self.USERDEF_OFFSET_YJ = HOffset
315
+
316
+ # self.USERDEF_OFFSET_ZJ = VOffset
317
+
318
+ try: OffsetPoint = js['OFFSET_PT']
319
+ except: OffsetPoint='CC'
320
+
321
+ try: CenterLocation = js['OFFSET_CENTER']
322
+ except: CenterLocation=0
323
+
324
+ try: HOffset = js['USERDEF_OFFSET_YI']
325
+ except: HOffset=0
326
+
327
+ try: HOffOpt = js['HORZ_OFFSET_OPT']
328
+ except: HOffOpt=0
329
+
330
+ try: VOffOpt = js['VERT_OFFSET_OPT']
331
+ except: VOffOpt=0
332
+
333
+ try: VOffset = js['USERDEF_OFFSET_ZI']
334
+ except: VOffset=0
335
+
336
+ try: UsrOffOpt = js['USER_OFFSET_REF']
337
+ except: UsrOffOpt=0
338
+
339
+
340
+ return Offset(OffsetPoint,CenterLocation,HOffset,HOffOpt,VOffset,VOffOpt,UsrOffOpt)
341
+
342
+
343
+
344
+
345
+ class _common:
346
+ def __str__(self):
347
+ return str(f'ID = {self.ID} \nJSON : {_Obj2JS(self)}\n')
348
+
349
+ def update(self):
350
+ return _updateSect(self)
351
+
352
+
353
+ class Section:
354
+ """Create Sections \n Use Section.USER , Section.PSC to create sections"""
355
+ sect = []
356
+ ids = []
357
+
358
+
359
+ @classmethod
360
+ def json(cls):
361
+ json = {"Assign":{}}
362
+ for sect in cls.sect:
363
+ js = _Obj2JS(sect)
364
+ json["Assign"][sect.ID] = js
365
+ return json
366
+
367
+ @staticmethod
368
+ def create():
369
+ MidasAPI("PUT","/db/SECT",Section.json())
370
+
371
+ @staticmethod
372
+ def get():
373
+ return MidasAPI("GET","/db/SECT")
374
+
375
+
376
+ @staticmethod
377
+ def delete():
378
+ MidasAPI("DELETE","/db/SECT")
379
+ Section.sect=[]
380
+ Section.ids=[]
381
+
382
+
383
+ @staticmethod
384
+ def sync():
385
+ a = Section.get()
386
+ if a != {'message': ''}:
387
+ if list(a['SECT'].keys()) != []:
388
+ Section.sect = []
389
+ Section.ids=[]
390
+ for sect_id in a['SECT'].keys():
391
+ _JS2Obj(sect_id,a['SECT'][sect_id])
392
+
393
+
394
+ # --------------------------------- USER DEFINED SECTIONS --------------------------------------------------------------
395
+
396
+ class DBUSER(_common):
397
+
398
+ """ Create Standard USER DEFINED sections"""
399
+
400
+ def __init__(self,Name='',Shape='',parameters:list=[],Offset:Offset=Offset.CC(),useShear=True,use7Dof=False,id:int=0):
401
+ """ Shape = 'SB' 'SR' for rectangle \n For cylinder"""
402
+ self.ID = id
403
+ self.NAME = Name
404
+ self.TYPE = 'DBUSER'
405
+ self.SHAPE = Shape
406
+ self.PARAMS = parameters
407
+ self.OFFSET = Offset
408
+ self.USESHEAR = useShear
409
+ self.USE7DOF = use7Dof
410
+ self.DATATYPE = 2
411
+
412
+ _SectionADD(self)
413
+
414
+ class PSC:
415
+
416
+ class CEL12(_common):
417
+
418
+ def __init__(self,Name='',Shape='1CEL',Joint=[0,0,0,0,0,0,0,0],
419
+ HO1=0,HO2=0,HO21=0,HO22=0,HO3=0,HO31=0,
420
+ BO1=0,BO11=0,BO12=0,BO2=0,BO21=0,BO3=0,
421
+ HI1=0,HI2=0,HI21=0,HI22=0,HI3=0,HI31=0,HI4=0,HI41=0,HI42=0,HI5=0,
422
+ BI1=0,BI11=0,BI12=0,BI21=0,BI3=0,BI31=0,BI32=0,BI4=0,
423
+ Offset:Offset=Offset.CC(),useShear=True,use7Dof=False,id:int=0):
424
+
425
+ self.ID = id
426
+ self.NAME = Name
427
+ self.SHAPE = Shape
428
+ self.TYPE = 'PSC'
429
+
430
+ self.JO1=bool(Joint[0])
431
+ self.JO2=bool(Joint[1])
432
+ self.JO3=bool(Joint[2])
433
+ self.JI1=bool(Joint[3])
434
+ self.JI2=bool(Joint[4])
435
+ self.JI3=bool(Joint[5])
436
+ self.JI4=bool(Joint[6])
437
+ self.JI5=bool(Joint[7])
438
+
439
+ self.OFFSET = Offset
440
+ self.USESHEAR = bool(useShear)
441
+ self.USE7DOF = bool(use7Dof)
442
+
443
+ self.HO1 = HO1
444
+ self.HO2 = HO2
445
+ self.HO21 = HO21
446
+ self.HO22= HO22
447
+ self.HO3 = HO3
448
+ self.HO31 = HO31
449
+
450
+ self.BO1 = BO1
451
+ self.BO11 = BO11
452
+ self.BO12 = BO12
453
+ self.BO2 = BO2
454
+ self.BO21 = BO21
455
+ self.BO3 = BO3
456
+
457
+ self.HI1 = HI1
458
+ self.HI2 = HI2
459
+ self.HI21 = HI21
460
+ self.HI22 = HI22
461
+ self.HI3 = HI3
462
+ self.HI31 = HI31
463
+ self.HI4 = HI4
464
+ self.HI41 = HI41
465
+ self.HI42 = HI42
466
+ self.HI5 = HI5
467
+
468
+ self.BI1 = BI1
469
+ self.BI11 = BI11
470
+ self.BI12 = BI12
471
+ self.BI21 = BI21
472
+ self.BI3 = BI3
473
+ self.BI31 = BI31
474
+ self.BI32 = BI32
475
+ self.BI4 = BI4
476
+
477
+ _SectionADD(self)
478
+
479
+ class I(_common):
480
+
481
+ def __init__(self,Name='',Symm = True,Joint=[0,0,0,0,0,0,0,0,0],
482
+ H1=0,
483
+ HL1=0,HL2=0,HL21=0,HL22=0,HL3=0,HL4=0,HL41=0,HL42=0,HL5=0,
484
+ BL1=0,BL2=0,BL21=0,BL22=0,BL4=0,BL41=0,BL42=0,
485
+
486
+ HR1=0,HR2=0,HR21=0,HR22=0,HR3=0,HR4=0,HR41=0,HR42=0,HR5=0,
487
+ BR1=0,BR2=0,BR21=0,BR22=0,BR4=0,BR41=0,BR42=0,
488
+
489
+ Offset:Offset=Offset.CC(),useShear=True,use7Dof=False,id:int=0):
490
+
491
+ self.ID = id
492
+ self.NAME = Name
493
+ self.SHAPE = 'PSCI'
494
+ self.TYPE = 'PSC'
495
+
496
+ self.SYMM = bool(Symm)
497
+
498
+ self.J1=bool(Joint[0])
499
+ self.JL1=bool(Joint[1])
500
+ self.JL2=bool(Joint[2])
501
+ self.JL3=bool(Joint[3])
502
+ self.JL4=bool(Joint[4])
503
+
504
+ if self.SYMM:
505
+ self.JR1=bool(Joint[1])
506
+ self.JR2=bool(Joint[2])
507
+ self.JR3=bool(Joint[3])
508
+ self.JR4=bool(Joint[4])
509
+
510
+ self.HR1 = HL1
511
+ self.HR2 = HL2
512
+ self.HR21 = HL21
513
+ self.HR22 = HL22
514
+ self.HR3 = HL3
515
+ self.HR4 = HL4
516
+ self.HR41 = HL41
517
+ self.HR42 = HL42
518
+ self.HR5 = HL5
519
+
520
+ self.BR1 = BL1
521
+ self.BR2 = BL2
522
+ self.BR21 = BL21
523
+ self.BR22 = BL22
524
+ self.BR4 = BL4
525
+ self.BR41 = BL41
526
+ self.BR42 = BL42
527
+ else:
528
+ self.JR1=bool(Joint[5])
529
+ self.JR2=bool(Joint[6])
530
+ self.JR3=bool(Joint[7])
531
+ self.JR4=bool(Joint[8])
532
+
533
+ self.HR1 = HR1
534
+ self.HR2 = HR2
535
+ self.HR21 = HR21
536
+ self.HR22 = HR22
537
+ self.HR3 = HR3
538
+ self.HR4 = HR4
539
+ self.HR41 = HR41
540
+ self.HR42 = HR42
541
+ self.HR5 = HR5
542
+
543
+ self.BR1 = BR1
544
+ self.BR2 = BR2
545
+ self.BR21 = BR21
546
+ self.BR22 = BR22
547
+ self.BR4 = BR4
548
+ self.BR41 = BR41
549
+ self.BR42 = BR42
550
+
551
+ self.OFFSET = Offset
552
+ self.USESHEAR = bool(useShear)
553
+ self.USE7DOF = bool(use7Dof)
554
+
555
+ self.H1 = H1
556
+ self.HL1 = HL1
557
+ self.HL2 = HL2
558
+ self.HL21 = HL21
559
+ self.HL22 = HL22
560
+ self.HL3 = HL3
561
+ self.HL4 = HL4
562
+ self.HL41 = HL41
563
+ self.HL42 = HL42
564
+ self.HL5 = HL5
565
+
566
+ self.BL1 = BL1
567
+ self.BL2 = BL2
568
+ self.BL21 = BL21
569
+ self.BL22 = BL22
570
+ self.BL4 = BL4
571
+ self.BL41 = BL41
572
+ self.BL42 = BL42
573
+
574
+ _SectionADD(self)
575
+
576
+ class Composite:
577
+ class PSCI(_common):
578
+
579
+ def __init__(self,Name='',Symm = True,Joint=[0,0,0,0,0,0,0,0,0],
580
+ Bc=0,tc=0,Hh=0,
581
+ H1=0,
582
+ HL1=0,HL2=0,HL21=0,HL22=0,HL3=0,HL4=0,HL41=0,HL42=0,HL5=0,
583
+ BL1=0,BL2=0,BL21=0,BL22=0,BL4=0,BL41=0,BL42=0,
584
+
585
+ HR1=0,HR2=0,HR21=0,HR22=0,HR3=0,HR4=0,HR41=0,HR42=0,HR5=0,
586
+ BR1=0,BR2=0,BR21=0,BR22=0,BR4=0,BR41=0,BR42=0,
587
+
588
+ EgdEsb =0, DgdDsb=0,Pgd=0,Psb=0,TgdTsb=0,
589
+
590
+ MultiModulus = False,CreepEratio=0,ShrinkEratio=0,
591
+
592
+ Offset:Offset=Offset.CC(),useShear=True,use7Dof=False,id:int=0):
593
+
594
+ self.ID = id
595
+ self.NAME = Name
596
+ self.SHAPE = 'CI'
597
+ self.TYPE = 'COMPOSITE'
598
+
599
+ self.SYMM = bool(Symm)
600
+
601
+ self.BC =Bc
602
+ self.TC =tc
603
+ self.HH =Hh
604
+
605
+ self.MATL_ELAST = EgdEsb
606
+ self.MATL_DENS = DgdDsb
607
+ self.MATL_POIS_S = Pgd
608
+ self.MATL_POIS_C = Psb
609
+ self.MATL_THERMAL = TgdTsb
610
+ self.USE_MULTI_ELAST = MultiModulus
611
+ self.LONGTERM_ESEC = CreepEratio
612
+ self.SHRINK_ESEC = ShrinkEratio
613
+
614
+
615
+ self.J1=bool(Joint[0])
616
+ self.JL1=bool(Joint[1])
617
+ self.JL2=bool(Joint[2])
618
+ self.JL3=bool(Joint[3])
619
+ self.JL4=bool(Joint[4])
620
+
621
+ if self.SYMM:
622
+ self.JR1=bool(Joint[1])
623
+ self.JR2=bool(Joint[2])
624
+ self.JR3=bool(Joint[3])
625
+ self.JR4=bool(Joint[4])
626
+
627
+ self.HR1 = HL1
628
+ self.HR2 = HL2
629
+ self.HR21 = HL21
630
+ self.HR22 = HL22
631
+ self.HR3 = HL3
632
+ self.HR4 = HL4
633
+ self.HR41 = HL41
634
+ self.HR42 = HL42
635
+ self.HR5 = HL5
636
+
637
+ self.BR1 = BL1
638
+ self.BR2 = BL2
639
+ self.BR21 = BL21
640
+ self.BR22 = BL22
641
+ self.BR4 = BL4
642
+ self.BR41 = BL41
643
+ self.BR42 = BL42
644
+ else:
645
+ self.JR1=bool(Joint[5])
646
+ self.JR2=bool(Joint[6])
647
+ self.JR3=bool(Joint[7])
648
+ self.JR4=bool(Joint[8])
649
+
650
+ self.HR1 = HR1
651
+ self.HR2 = HR2
652
+ self.HR21 = HR21
653
+ self.HR22 = HR22
654
+ self.HR3 = HR3
655
+ self.HR4 = HR4
656
+ self.HR41 = HR41
657
+ self.HR42 = HR42
658
+ self.HR5 = HR5
659
+
660
+ self.BR1 = BR1
661
+ self.BR2 = BR2
662
+ self.BR21 = BR21
663
+ self.BR22 = BR22
664
+ self.BR4 = BR4
665
+ self.BR41 = BR41
666
+ self.BR42 = BR42
667
+
668
+ self.OFFSET = Offset
669
+ self.USESHEAR = bool(useShear)
670
+ self.USE7DOF = bool(use7Dof)
671
+
672
+ self.H1 = H1
673
+ self.HL1 = HL1
674
+ self.HL2 = HL2
675
+ self.HL21 = HL21
676
+ self.HL22 = HL22
677
+ self.HL3 = HL3
678
+ self.HL4 = HL4
679
+ self.HL41 = HL41
680
+ self.HL42 = HL42
681
+ self.HL5 = HL5
682
+
683
+ self.BL1 = BL1
684
+ self.BL2 = BL2
685
+ self.BL21 = BL21
686
+ self.BL22 = BL22
687
+ self.BL4 = BL4
688
+ self.BL41 = BL41
689
+ self.BL42 = BL42
690
+
691
+ _SectionADD(self)
692
+
693
+ class SteelI_Type1(_common):
694
+
695
+ def __init__(self,Name='',
696
+ Bc=0,tc=0,Hh=0,
697
+ Hw=0,B1=0,tf1=0,tw=0,B2=0,tf2=0,
698
+
699
+ EsEc =0, DsDc=0,Ps=0,Pc=0,TsTc=0,
700
+ MultiModulus = False,CreepEratio=0,ShrinkEratio=0,
701
+ Offset:Offset=Offset.CC(),useShear=True,use7Dof=False,id:int=0):
702
+
703
+ self.ID = id
704
+ self.NAME = Name
705
+ self.SHAPE = 'I'
706
+ self.TYPE = 'COMPOSITE'
707
+
708
+ self.BC =Bc
709
+ self.TC =tc
710
+ self.HH =Hh
711
+
712
+ self.HW = Hw
713
+ self.B1 = B1
714
+ self.TF1 = tf1
715
+ self.TW = tw
716
+ self.B2 = B2
717
+ self.TF2 = tf2
718
+
719
+ self.MATL_ELAST = EsEc
720
+ self.MATL_DENS = DsDc
721
+ self.MATL_POIS_S = Ps
722
+ self.MATL_POIS_C = Pc
723
+ self.MATL_THERMAL = TsTc
724
+ self.USE_MULTI_ELAST = MultiModulus
725
+ self.LONGTERM_ESEC = CreepEratio
726
+ self.SHRINK_ESEC = ShrinkEratio
727
+
728
+ self.OFFSET = Offset
729
+ self.USESHEAR = bool(useShear)
730
+ self.USE7DOF = bool(use7Dof)
731
+
732
+ _SectionADD(self)
733
+
734
+
735
+
736
+
737
+
738
+
739
+