osis-python 0.1.0__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.
Files changed (55) hide show
  1. osis_python-0.1.0.dist-info/METADATA +64 -0
  2. osis_python-0.1.0.dist-info/RECORD +55 -0
  3. osis_python-0.1.0.dist-info/WHEEL +5 -0
  4. osis_python-0.1.0.dist-info/licenses/LICENSE +21 -0
  5. osis_python-0.1.0.dist-info/top_level.txt +1 -0
  6. pyosis/__init__.py +15 -0
  7. pyosis/ai/__init__.py +6 -0
  8. pyosis/ai/agents/BaseAgent.py +79 -0
  9. pyosis/ai/agents/DecisionAgent.py +189 -0
  10. pyosis/ai/agents/MaterialAgent.py +44 -0
  11. pyosis/ai/agents/ModelAgent.py +42 -0
  12. pyosis/ai/agents/QuickBuildingAgent.py +74 -0
  13. pyosis/ai/agents/SectionAgent.py +40 -0
  14. pyosis/ai/agents/__init__.py +0 -0
  15. pyosis/boundary/__init__.py +7 -0
  16. pyosis/boundary/interface.py +90 -0
  17. pyosis/control/__init__.py +1 -0
  18. pyosis/control/interface.py +182 -0
  19. pyosis/core/PyInterface.pyi +153 -0
  20. pyosis/core/__init__.py +12 -0
  21. pyosis/core/command.py +180 -0
  22. pyosis/core/engine.py +13 -0
  23. pyosis/element/__init__.py +1 -0
  24. pyosis/element/interface.py +220 -0
  25. pyosis/general/__init__.py +1 -0
  26. pyosis/general/interface.py +31 -0
  27. pyosis/live/__init__.py +3 -0
  28. pyosis/live/analysis.py +116 -0
  29. pyosis/live/grade.py +125 -0
  30. pyosis/live/lane.py +56 -0
  31. pyosis/load/__init__.py +3 -0
  32. pyosis/load/loadcase.py +59 -0
  33. pyosis/load/static.py +274 -0
  34. pyosis/load/tendon.py +325 -0
  35. pyosis/material/__init__.py +1 -0
  36. pyosis/material/interface.py +207 -0
  37. pyosis/node/__init__.py +1 -0
  38. pyosis/node/interface.py +51 -0
  39. pyosis/post/__init__.py +1 -0
  40. pyosis/post/interface.py +21 -0
  41. pyosis/property/__init__.py +0 -0
  42. pyosis/property/coordinate.py +5 -0
  43. pyosis/property/creep_shrink.py +53 -0
  44. pyosis/property/damping.py +37 -0
  45. pyosis/property/pu_curve.py +59 -0
  46. pyosis/quick_building/__init__.py +1 -0
  47. pyosis/quick_building/interface.py +298 -0
  48. pyosis/section/__init__.py +4 -0
  49. pyosis/section/common.py +325 -0
  50. pyosis/section/numeric.py +0 -0
  51. pyosis/section/param.py +96 -0
  52. pyosis/section/steel.py +0 -0
  53. pyosis/stage/__init__.py +3 -0
  54. pyosis/stage/define.py +123 -0
  55. pyosis/stage/overall.py +85 -0
@@ -0,0 +1,207 @@
1
+ """
2
+ Interfaces of OSIS functions
3
+
4
+ ========
5
+
6
+ """
7
+ from typing import Literal
8
+ from ..core import REGISTRY
9
+
10
+ # 后续会重写这部分接口
11
+
12
+ # @REGISTRY.register('Material')
13
+ # def osis_material(nMat: int, strName: str, eMaterialType: Literal["CONC", "STEEL", "PRESTRESSED", "REBAR", "CUSTOM"], eCode: str, eGrade: str, nCrepShrk: int, dDmp: float, params: dict[str, Any]={}):
14
+ # """创建或修改材料。
15
+
16
+ # Args:
17
+ # nMat (int): 材料编号
18
+ # strName (str): 材料名称
19
+ # eMaterialType (str): 材料类型,不区分大小写。可选值:
20
+ # * CONC: 混凝土
21
+ # * STEEL: 钢材
22
+ # * PRESTRESSED: 预应力材料
23
+ # * REBAR: 普通钢筋
24
+ # * CUSTOM: 自定义材料
25
+ # eCode (str): 材料标准代码,可选值:
26
+ # * 钢材: JTGD64_2015
27
+ # * 其他材料: JTG3362_2018, JTGD62_2004
28
+ # eGrade (str): 材料等级牌号,根据材料类型可选:
29
+ # * 混凝土: C15, C20, C25, C30, C35, C40, C45, C50, C55, C60, C65, C70, C75, C80
30
+ # * 钢材: Q235, Q345, Q390, Q420
31
+ # * 预应力材料:
32
+ # ** JTG3362_2018: Strand1720, Strand1860, Strand1960, Wire1470, Wire1570,
33
+ # Wire1770, Wire1860, Rebar785, Rebar930, Rebar1080
34
+ # ** JTGD62_2004: Strand1860, Wire1670, Wire1770, Rebar785, Rebar930
35
+ # * 普通钢筋:
36
+ # ** JTG3362_2018: HPB300, HRB400, HRBF400, RRB400, HRB500
37
+ # ** JTGD62_2004: R235, HRB335, HRB400, KL400
38
+ # nCrepShrk (int): 收缩徐变特性编号(混凝土材料需要,其他材料设置为-1)
39
+ # dDmp (float): 材料阻尼比
40
+ # params (dict): 自定义材料的参数 (E, G, Mu, ExpCoeff, UnitWeight, Density, Dmp),创建其他材料不填。创建自定义材料 eCode eGrade nCrepShrk dDmp 会被忽略
41
+
42
+ # Returns:
43
+ # tuple (bool, str):
44
+ # - bool: 操作是否成功
45
+ # - str: 失败原因(如果操作失败)
46
+
47
+ # Examples:
48
+ # >>> result = osis_material(1, "C30", "CONC", "JTG3362_2018", "C30", 1, 0.05)
49
+ # >>> print(result)
50
+ # (True, "")
51
+ # """
52
+ # e = OSISEngine.GetInstance()
53
+ # eMaterialType = eMaterialType.upper()
54
+ # return e.OSIS_Material(nMat, strName, eMaterialType, eCode, eGrade, nCrepShrk, dDmp, params)
55
+
56
+ @REGISTRY.register('Material')
57
+ def osis_material_conc(nMat: int, strName: str, eMaterialType: Literal["CONC"],
58
+ eCode: Literal["JTG3362_2018", "JTGD62_2004"],
59
+ eGrade: Literal["C15", "C20", "C25", "C30", "C35", "C40", "C45", "C50", "C55", "C60", "C65", "C70", "C75", "C80"],
60
+ nCrepShrk: int, dDmp: float):
61
+ """创建或修改混凝土材料
62
+
63
+ Args:
64
+ nMat (int): 材料编号
65
+ strName (str): 材料名称
66
+ eMaterialType (str): 材料类型,不区分大小写。固定为 CONC
67
+ eCode (str): 材料标准代码,不区分大小写。可选值:
68
+ * JTG3362_2018
69
+ * JTGD62_2004
70
+ eGrade (str): 材料等级牌号,不区分大小写。根据材料类型可选:
71
+ * C15, C20, C25, C30, C35, C40, C45, C50, C55, C60, C65, C70, C75, C80
72
+ nCrepShrk (int): 收缩徐变特性编号
73
+ dDmp (float): 材料阻尼比
74
+
75
+ Returns:
76
+ tuple (bool, str):
77
+ - bool: 操作是否成功
78
+ - str: 失败原因(如果操作失败)
79
+ """
80
+ pass
81
+
82
+ @REGISTRY.register('Material')
83
+ def osis_material_steel(nMat: int, strName: str, eMaterialType: Literal["STEEL"], eCode: Literal["JTGD64_2015"], eGrade: Literal["Q235", "Q345", "Q390", "Q420"], dDmp: float):
84
+ """创建或修改钢材
85
+
86
+ Args:
87
+ nMat (int): 材料编号
88
+ strName (str): 材料名称
89
+ eMaterialType (str): 材料类型,不区分大小写。固定为 STEEL
90
+ eCode (str): 材料标准代码,可选值:
91
+ * JTGD64_2015
92
+ eGrade (str): 材料等级牌号,根据材料类型可选:
93
+ * Q235
94
+ * Q345
95
+ * Q390
96
+ * Q420
97
+ dDmp (float): 材料阻尼比
98
+
99
+ Returns:
100
+ tuple (bool, str):
101
+ - bool: 操作是否成功
102
+ - str: 失败原因(如果操作失败)
103
+ """
104
+ pass
105
+
106
+ @REGISTRY.register('Material')
107
+ def osis_material_prestressed(nMat: int, strName: str, eMaterialType: Literal["PRESTRESSED"], eCode: Literal["JTG3362_2018", "JTGD62_2004"], eGrade: str, dDmp: float):
108
+ """创建或修改材料。
109
+
110
+ Args:
111
+ nMat (int): 材料编号
112
+ strName (str): 材料名称
113
+ eMaterialType (str): 材料类型,不区分大小写。固定为 PRESTRESSED
114
+ eCode (str): 材料标准代码,可选值:
115
+ * JTG3362_2018
116
+ * JTGD62_2004
117
+ eGrade (str): 材料等级牌号,根据材料类型可选:
118
+ * JTG3362_2018: Strand1720, Strand1860, Strand1960, Wire1470, Wire1570,
119
+ Wire1770, Wire1860, Rebar785, Rebar930, Rebar1080
120
+ * JTGD62_2004: Strand1860, Wire1670, Wire1770, Rebar785, Rebar930
121
+ nCrepShrk (int): 收缩徐变特性编号(混凝土材料需要,其他材料设置为-1)
122
+ dDmp (float): 材料阻尼比
123
+ params (dict): 自定义材料的参数 (E, G, Mu, ExpCoeff, UnitWeight, Density, Dmp)
124
+
125
+ Returns:
126
+ tuple (bool, str):
127
+ - bool: 操作是否成功
128
+ - str: 失败原因(如果操作失败)
129
+ """
130
+ pass
131
+
132
+ @REGISTRY.register('Material')
133
+ def osis_material_reber(nMat: int, strName: str, eMaterialType: Literal["REBAR"], eCode: Literal["JTG3362_2018", "JTGD62_2004"],
134
+ eGrade: Literal["HPB300", "HRB400", "HRBF400", "RRB400", "HRB500"] | Literal["R235", "HRB335", "HRB400", "KL400"], dDmp: float):
135
+ """创建或修改钢材
136
+
137
+ Args:
138
+ nMat (int): 材料编号
139
+ strName (str): 材料名称
140
+ eMaterialType (str): 材料类型,不区分大小写。固定为 REBAR
141
+ eCode (str): 材料标准代码,可选值:
142
+ * JTG3362_2018
143
+ * JTGD62_2004
144
+ eGrade (str): 材料等级牌号,根据材料类型可选(不按照规定填写可能会有错误):
145
+ * JTG3362_2018: HPB300, HRB400, HRBF400, RRB400, HRB500
146
+ * JTGD62_2004: R235, HRB335, HRB400, KL400
147
+ dDmp (float): 材料阻尼比
148
+
149
+ Returns:
150
+ tuple (bool, str):
151
+ - bool: 操作是否成功
152
+ - str: 失败原因(如果操作失败)
153
+ """
154
+ pass
155
+
156
+ @REGISTRY.register('Material')
157
+ def osis_material_custom(nMat: int, strName: str, eMaterialType: Literal["CUSTOM"], dE: float=0, dG: float=0, dMu: float=0, dExpCoeff: float=0, dUnitWeight: float=0, dDensity: float=0, dDmp: float=0):
158
+ """创建或修改材料。
159
+
160
+ Args:
161
+ nMat (int): 材料编号
162
+ strName (str): 材料名称
163
+ eMaterialType (str): 材料类型,不区分大小写。固定为 CUSTOM
164
+ dE (float): 弹性模量(Pa)
165
+ dG (float): 剪切模量(Pa)
166
+ dMu (float): 泊松比
167
+ dExpCoeff (float): 线膨胀系数(1/摄氏度)
168
+ dUnitWeight (float): 容重(N/m^3)
169
+ dDensity (float): 质量密度(kg/m^3)
170
+ dDmp (float): 材料阻尼比
171
+
172
+ Returns:
173
+ tuple (bool, str):
174
+ - bool: 操作是否成功
175
+ - str: 失败原因(如果操作失败)
176
+ """
177
+ pass
178
+
179
+ @REGISTRY.register('MaterialDel')
180
+ def osis_material_del(nMat: int):
181
+ """删除一个材料
182
+
183
+ Args:
184
+ nMat (int): 单元编号,从 1 开始计数
185
+
186
+ Returns:
187
+ tuple (bool, str):
188
+ - bool: 操作是否成功
189
+ - str: 失败原因(如果操作失败)
190
+ """
191
+ pass
192
+
193
+ @REGISTRY.register('MaterialMod')
194
+ def osis_material_mod(nOld: int, nNew: int):
195
+ """修改一个材料的编号。材料编号存在时,交换
196
+
197
+ Args:
198
+ nOld (int): 旧编号
199
+ nNew (int): 新编号
200
+
201
+ Returns:
202
+ tuple (bool, str):
203
+ - bool: 操作是否成功
204
+ - str: 失败原因(如果操作失败)
205
+ """
206
+ pass
207
+
@@ -0,0 +1 @@
1
+ from .interface import *
@@ -0,0 +1,51 @@
1
+ from ..core import REGISTRY
2
+
3
+ @REGISTRY.register('Node')
4
+ def osis_node(nNO: int=1, x: float=0.0, y: float=0.0, z: float=0.0):
5
+ """创建一个节点
6
+
7
+ Args:
8
+ nNO (int): 节点编号,从 1 开始编号。
9
+ x (float): 节点X坐标
10
+ y (float): 节点Y坐标
11
+ z (float): 节点Z坐标
12
+
13
+ Returns:
14
+ tuple (bool, str):
15
+ - bool: 操作是否成功
16
+ - str: 失败原因(如果操作失败)
17
+ """
18
+ pass
19
+
20
+ @REGISTRY.register('NodeDel')
21
+ def osis_node_del(nNO: int=1):
22
+ """删除一个节点
23
+
24
+ Args:
25
+ nNO (int): 节点编号
26
+
27
+ Returns:
28
+ tuple (bool, str):
29
+ - bool: 操作是否成功
30
+ - str: 失败原因(如果操作失败)
31
+ """
32
+ pass
33
+
34
+ @REGISTRY.register('NodeMod')
35
+ def osis_node_mod(nOld: int=1, nNew: int=2):
36
+ """修改一个节点的编号。节点编号存在时,交换
37
+
38
+ Args:
39
+ nOld (int): 旧编号
40
+ nNew (int): 新编号
41
+
42
+ Returns:
43
+ tuple (bool, str):
44
+ - bool: 操作是否成功
45
+ - str: 失败原因(如果操作失败)
46
+ """
47
+ pass
48
+
49
+ # @REGISTRY.register('test')
50
+ # def test(a: int=1, b: bool=1, c:str=None):
51
+ # pass
@@ -0,0 +1 @@
1
+ from .interface import *
@@ -0,0 +1,21 @@
1
+ from typing import Literal
2
+ from ..core import OSISEngine
3
+
4
+ def osis_elem_force(strLCName: str, eDataItem: Literal['EF'], eElementType: Literal["BEAM3D", "TRUSS", "SPRING", "CABLE", "SHELL"]):
5
+ '''
6
+ 提取内力结果
7
+
8
+ Args:
9
+ strLCName (str): 工况名称
10
+ eDataItem (str): 数据类型,不区分大小写。EF = 内力
11
+ eElementType (str): 单元类型,不区分大小写。BEAM3D = 梁柱单元,TRUSS = 桁架单元,SPRING = 弹簧单元,CABLE = 拉索单元,SHELL = 壳单元
12
+
13
+ Returns:
14
+ tuple (bool, str):
15
+ - bool: 操作是否成功
16
+ - str: 失败原因(如果操作失败)
17
+ '''
18
+ e = OSISEngine.GetInstance()
19
+ eDataItem = eDataItem.upper()
20
+ eElementType = eElementType.upper()
21
+ return e.OSIS_ElemForce(strLCName, eDataItem, eElementType)
File without changes
@@ -0,0 +1,5 @@
1
+ '''
2
+ pyosis.property.coordinate 的 Docstring
3
+
4
+ 空间坐标系
5
+ '''
@@ -0,0 +1,53 @@
1
+ '''
2
+ pyosis.property.creep_shrink 的 Docstring
3
+
4
+ 时间依存性材料属性
5
+ '''
6
+ from ..core import REGISTRY
7
+
8
+ @REGISTRY.register("CrpShrk")
9
+ def osis_creep_shrink(nNO: int=1, strName: str="收缩徐变1", dAvgHumidity: float=70.0, nBirthTime: int=7, dTypeCoeff: float=5.0, nBirthByShrinking: int=3):
10
+ """
11
+ 设置收缩徐变
12
+
13
+ Args:
14
+ nNO (int): 收缩徐变特性编号
15
+ strName (str): 特性名称
16
+ dAvgHumidity (float): 年平均湿度(百分比)
17
+ nBirthTime (int): 混凝土龄期(天)
18
+ dTypeCoeff (float): 水泥种类系数
19
+ nBirthByShrinking (int): 收缩开始时的混凝土龄期(天数)
20
+
21
+ Returns:
22
+ tuple (bool, str): 是否成功,失败原因
23
+ """
24
+ pass
25
+
26
+ @REGISTRY.register('CrpShrkDel')
27
+ def osis_creep_shrink_del(nNO: int=1):
28
+ """删除收缩徐变特性
29
+
30
+ Args:
31
+ nNO (int): 收缩徐变特性编号
32
+
33
+ Returns:
34
+ tuple (bool, str):
35
+ - bool: 操作是否成功
36
+ - str: 失败原因(如果操作失败)
37
+ """
38
+ pass
39
+
40
+ @REGISTRY.register('CrpShrkMod')
41
+ def osis_creep_shrink_mod(nOld: int=1, nNew: int=2):
42
+ """修改一个收缩徐变特性的编号。收缩徐变特性编号存在时,交换
43
+
44
+ Args:
45
+ nOld (int): 旧编号
46
+ nNew (int): 新编号
47
+
48
+ Returns:
49
+ tuple (bool, str):
50
+ - bool: 操作是否成功
51
+ - str: 失败原因(如果操作失败)
52
+ """
53
+ pass
@@ -0,0 +1,37 @@
1
+ '''
2
+ pyosis.property.damping 的 Docstring
3
+
4
+ 阻尼模型
5
+ '''
6
+
7
+ from ..core import REGISTRY
8
+
9
+ @REGISTRY.register('DampingDel')
10
+ def osis_damping_del(strName: str):
11
+ """删除阻尼模型
12
+
13
+ Args:
14
+ strName (str): 阻尼模型的名称
15
+
16
+ Returns:
17
+ tuple (bool, str):
18
+ - bool: 操作是否成功
19
+ - str: 失败原因(如果操作失败)
20
+ """
21
+ pass
22
+
23
+ @REGISTRY.register('DampingMod')
24
+ def osis_damping_mod(strOld: str, strNew: str):
25
+ """修改一个阻尼模型的名称。阻尼模型名称存在时,交换
26
+
27
+ Args:
28
+ strOld (str): 旧编号
29
+ strNew (str): 新编号
30
+
31
+ Returns:
32
+ tuple (bool, str):
33
+ - bool: 操作是否成功
34
+ - str: 失败原因(如果操作失败)
35
+ """
36
+ pass
37
+
@@ -0,0 +1,59 @@
1
+ '''
2
+ pyosis.property.pu_curve 的 Docstring
3
+
4
+ 荷载-位移曲线
5
+ '''
6
+
7
+ from ..core import REGISTRY
8
+
9
+ @REGISTRY.register("PUCurve")
10
+ def osis_pu_curve(nIndex: int, strName: str, eType: int, nNum: int, displacement: list[float], force: list[float]):
11
+ '''
12
+ 创建或修改荷载-位移曲线,荷载与位移需要唯一对应
13
+
14
+ Args:
15
+ nIndex (int): 位移-力(矩)曲线编号
16
+ strName (str): 曲线名称
17
+ eType (str):
18
+ * 0 = 力
19
+ * 1 = 力矩
20
+ nNum (int): 曲线点数
21
+ displacement (list): i个点的位移值
22
+ force (list): i个点的力(矩)值
23
+
24
+ Returns:
25
+ tuple (bool, str): 返回一个元组,包含:
26
+ - bool: 操作是否成功
27
+ - str: 失败原因(如果操作失败)
28
+ '''
29
+ pass
30
+
31
+ @REGISTRY.register('PUCurveDel')
32
+ def osis_pu_curve_del(nNO: int=1):
33
+ """删除荷载-位移曲线
34
+
35
+ Args:
36
+ nNO (int): 荷载-位移曲线编号
37
+
38
+ Returns:
39
+ tuple (bool, str):
40
+ - bool: 操作是否成功
41
+ - str: 失败原因(如果操作失败)
42
+ """
43
+ pass
44
+
45
+ @REGISTRY.register('PUCurveMod')
46
+ def osis_pu_curve_mod(nOld: int=1, nNew: int=2):
47
+ """修改一个荷载-位移曲线的编号。荷载-位移曲线编号存在时,交换
48
+
49
+ Args:
50
+ nOld (int): 旧编号
51
+ nNew (int): 新编号
52
+
53
+ Returns:
54
+ tuple (bool, str):
55
+ - bool: 操作是否成功
56
+ - str: 失败原因(如果操作失败)
57
+ """
58
+ pass
59
+
@@ -0,0 +1 @@
1
+ from .interface import *