dsh-engineering-ui 0.0.0-stage → 1.5.0
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.
- package/LICENSE +21 -0
- package/README.md +772 -3
- package/engineering/plugins/dsh-engineering-ui/cordis.patch.yml +5 -0
- package/engineering/plugins/dsh-engineering-ui/icon.svg +14 -0
- package/engineering/plugins/dsh-engineering-ui/lib/client.js +8259 -0
- package/engineering/plugins/dsh-engineering-ui/lib/defense-sign.js +1552 -0
- package/engineering/plugins/dsh-engineering-ui/lib/index.js +5633 -0
- package/engineering/plugins/dsh-engineering-ui/lib/job-wait-guard.js +236 -0
- package/engineering/plugins/dsh-engineering-ui/lib/mem-guard.js +331 -0
- package/engineering/plugins/dsh-engineering-ui/lib/webots.js +114 -0
- package/engineering/plugins/dsh-engineering-ui/locale/en.json +6 -0
- package/engineering/plugins/dsh-engineering-ui/locale/zh.json +6 -0
- package/engineering/plugins/dsh-engineering-ui/preset-engineering.patch.yml +601 -0
- package/engineering/skills/assembly-orchestration/SKILL.md +651 -0
- package/engineering/skills/cad-workflow/SKILL.md +132 -0
- package/engineering/skills/mode-selection/SKILL.md +660 -0
- package/engineering/skills/physics-in-loop/SKILL.md +238 -0
- package/engineering/skills/physics-in-loop/references/feadocs.md +142 -0
- package/engineering/skills/solidworks-bridge/SKILL.md +445 -0
- package/engineering/skills/sw-design/SKILL.md +112 -0
- package/engineering/skills/sw-design/references/autocad-workflow.md +81 -0
- package/engineering/skills/sw-design/references/gbt-drafting.md +71 -0
- package/engineering/skills/sw-to-cad/SKILL.md +121 -0
- package/engineering/skills/webots-simulation/SKILL.md +58 -0
- package/engineering/tools/LICENSE.Auto-SolidWorks +21 -0
- package/engineering/tools/_plugin_paths.py +93 -0
- package/engineering/tools/_root.py +330 -0
- package/engineering/tools/_store.py +446 -0
- package/engineering/tools/ac_bridge.py +459 -0
- package/engineering/tools/ac_rules.json +21 -0
- package/engineering/tools/ac_validate.py +699 -0
- package/engineering/tools/ask_user.py +887 -0
- package/engineering/tools/build_arm1.py +46 -0
- package/engineering/tools/build_assembly.py +94 -0
- package/engineering/tools/build_base.py +57 -0
- package/engineering/tools/build_housing.py +70 -0
- package/engineering/tools/build_structural.py +43 -0
- package/engineering/tools/build_transmission.py +69 -0
- package/engineering/tools/cadx.lsp +128 -0
- package/engineering/tools/choice_contract.py +61 -0
- package/engineering/tools/conn_state.py +1671 -0
- package/engineering/tools/defense_gate.py +3374 -0
- package/engineering/tools/drawing_input.py +314 -0
- package/engineering/tools/env_check.py +467 -0
- package/engineering/tools/examples/build_axis.py +142 -0
- package/engineering/tools/examples/build_cup.py +56 -0
- package/engineering/tools/examples/build_plate.py +58 -0
- package/engineering/tools/examples/build_sphere.py +30 -0
- package/engineering/tools/examples/build_transition_duct.py +381 -0
- package/engineering/tools/gate_integrity.py +401 -0
- package/engineering/tools/mode2_flow.py +3589 -0
- package/engineering/tools/mode_checker.py +77 -0
- package/engineering/tools/mode_gate.py +8013 -0
- package/engineering/tools/part_registry.py +4266 -0
- package/engineering/tools/physics/__init__.py +50 -0
- package/engineering/tools/physics/_compat.py +12 -0
- package/engineering/tools/physics/design_state.py +142 -0
- package/engineering/tools/physics/domain_validator.py +751 -0
- package/engineering/tools/physics/fatigue.py +489 -0
- package/engineering/tools/physics/fea_solver.py +1163 -0
- package/engineering/tools/physics/feapy_solver.py +314 -0
- package/engineering/tools/physics/gb_materials.json +1228 -0
- package/engineering/tools/physics/geometry_gate.py +337 -0
- package/engineering/tools/physics/load_case.py +951 -0
- package/engineering/tools/physics/material_db.py +874 -0
- package/engineering/tools/physics/mesh_adapter.py +321 -0
- package/engineering/tools/physics/refine_rules.py +272 -0
- package/engineering/tools/physics/rules/gb_base_rules.json +377 -0
- package/engineering/tools/physics/rules/gb_drafting_rules.json +57 -0
- package/engineering/tools/physics/rules/gb_electrical_rules.json +25 -0
- package/engineering/tools/physics/rules/gb_fasteners_rules.json +73 -0
- package/engineering/tools/physics/rules/gb_housing_rules.json +41 -0
- package/engineering/tools/physics/rules/gb_manufacturing_rules.json +25 -0
- package/engineering/tools/physics/rules/gb_material_verify_rules.json +72 -0
- package/engineering/tools/physics/rules/gb_materials_rules.json +377 -0
- package/engineering/tools/physics/rules/gb_safety_rules.json +89 -0
- package/engineering/tools/physics/rules/gb_springs_rules.json +41 -0
- package/engineering/tools/physics/rules/gb_standards_registry.json +1646 -0
- package/engineering/tools/physics/rules/gb_structural_rules.json +201 -0
- package/engineering/tools/physics/rules/gb_surface_rules.json +25 -0
- package/engineering/tools/physics/rules/gb_transmission_rules.json +233 -0
- package/engineering/tools/physics/rules/housing_rules.json +48 -0
- package/engineering/tools/physics/rules/manifest.json +54 -0
- package/engineering/tools/physics/rules/mold_rules.json +48 -0
- package/engineering/tools/physics/rules/structural_rules.json +56 -0
- package/engineering/tools/physics/rules/transmission_rules.json +48 -0
- package/engineering/tools/physics/simulation_report.py +829 -0
- package/engineering/tools/physics_bridge.py +2685 -0
- package/engineering/tools/profile-manifest.ps1 +72 -0
- package/engineering/tools/run_regression.py +109 -0
- package/engineering/tools/settings.py +419 -0
- package/engineering/tools/solidworks-modeling.md +519 -0
- package/engineering/tools/sw_bridge.py +8215 -0
- package/engineering/tools/sw_guard.py +1066 -0
- package/engineering/tools/sw_surface.py +87 -0
- package/engineering/tools/swapi.py +14766 -0
- package/engineering/tools/verify_sync.py +218 -0
- package/engineering/tools/visual_check.py +2589 -0
- package/engineering/tools/webots_env.py +121 -0
- package/engineering/tools/webots_mcp/__init__.py +3 -0
- package/engineering/tools/webots_mcp/__main__.py +3 -0
- package/engineering/tools/webots_mcp/assembly.py +391 -0
- package/engineering/tools/webots_mcp/bootstrap.py +55 -0
- package/engineering/tools/webots_mcp/controller_worker.py +124 -0
- package/engineering/tools/webots_mcp/evidence.py +288 -0
- package/engineering/tools/webots_mcp/fake_worker.py +69 -0
- package/engineering/tools/webots_mcp/fault_resources.py +121 -0
- package/engineering/tools/webots_mcp/host.py +45 -0
- package/engineering/tools/webots_mcp/ledger.py +73 -0
- package/engineering/tools/webots_mcp/owned_job.py +70 -0
- package/engineering/tools/webots_mcp/physical_gate.py +187 -0
- package/engineering/tools/webots_mcp/physics.py +152 -0
- package/engineering/tools/webots_mcp/pipeline.py +108 -0
- package/engineering/tools/webots_mcp/recipes.py +129 -0
- package/engineering/tools/webots_mcp/repair.py +132 -0
- package/engineering/tools/webots_mcp/repair_trial.py +375 -0
- package/engineering/tools/webots_mcp/runtime.py +311 -0
- package/engineering/tools/webots_mcp/server.py +217 -0
- package/engineering/tools/webots_mcp/sw_export.py +509 -0
- package/engineering/tools/webots_mcp/transport.py +156 -0
- package/engineering/tools/workflow_gate.py +6134 -0
- package/package.json +64 -4
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: physics-in-loop
|
|
3
|
+
description: >-
|
|
4
|
+
物理仿真驱动的结构设计闭环(Physics-in-the-Loop)。
|
|
5
|
+
从载荷工况 JSON 出发,自动进行参数化建模、有限元验证、迭代优化,
|
|
6
|
+
直到满足安全系数、位移、体积等约束。
|
|
7
|
+
触发关键词:力学验证、强度校核、安全系数、FEA、应力分析、拓扑优化、
|
|
8
|
+
载荷工况、静力分析、迭代设计、结构验证。
|
|
9
|
+
whenToUse: >-
|
|
10
|
+
当用户要求对零件进行力学/结构验证、指定了力/压力/约束条件、
|
|
11
|
+
或询问"这个零件在载荷下会不会坏"时使用。
|
|
12
|
+
如果用户未提供材料、约束或载荷,必须先追问再开始。
|
|
13
|
+
disable-model-invocation: false
|
|
14
|
+
user-invocable: true
|
|
15
|
+
source: engineering
|
|
16
|
+
provider: filesystem
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
# Physics-in-the-Loop 物理验证工作流
|
|
20
|
+
|
|
21
|
+
> 基于 IJCAI 2026 论文 "Physics-in-the-Loop: A Hybrid Agentic Architecture
|
|
22
|
+
> for Validated CAD Engineering Design" 的工程化实现。
|
|
23
|
+
|
|
24
|
+
## 核心思想
|
|
25
|
+
|
|
26
|
+
LLM 擅长生成设计方案,但不擅长计算物理真实性。
|
|
27
|
+
本系统把**确定性物理工具**(解析解/FEA)嵌入设计决策循环:
|
|
28
|
+
`LLM 生成 → 工具验证 → 反馈修正 → 重新生成`,直到满足安全门槛。
|
|
29
|
+
|
|
30
|
+
```
|
|
31
|
+
用户工程需求
|
|
32
|
+
↓
|
|
33
|
+
结构化载荷工况 JSON(load_case)
|
|
34
|
+
↓
|
|
35
|
+
[Generate] LLM 提出设计参数(厚度、圆角、筋板…)
|
|
36
|
+
↓
|
|
37
|
+
[Simulate] 解析解 / Gmsh+CalculiX / SolidWorks Simulation
|
|
38
|
+
↓
|
|
39
|
+
[Refine] 若 SAFETY_FACTOR ∉ [min, max] → 生成修正建议
|
|
40
|
+
↓
|
|
41
|
+
循环直到 PASS 或达到 max_iterations
|
|
42
|
+
↓
|
|
43
|
+
生成 release_manifest(含局限性声明 + 人工复核要求)
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## 支持的求解等级(自动降级)
|
|
47
|
+
|
|
48
|
+
| 等级 | 方法 | 依赖 | 适用场景 |
|
|
49
|
+
|------|------|------|---------|
|
|
50
|
+
| L0 | 解析解(悬臂梁/简支梁/扭转轴) | 无 | 快速初判、回归测试 |
|
|
51
|
+
| L1 | 杆系 truss 求解 | 无(预留接口) | 简单框架结构 |
|
|
52
|
+
| L2 | Gmsh + CalculiX | gmsh + ccx | 一般 3D 零件 |
|
|
53
|
+
| L3 | SolidWorks Simulation API | SW Simulation 授权 | 生产级验证 |
|
|
54
|
+
|
|
55
|
+
第一版默认使用 L0,检测到 Gmsh/CalculiX 后自动升级。
|
|
56
|
+
|
|
57
|
+
## 命令速查
|
|
58
|
+
|
|
59
|
+
```powershell
|
|
60
|
+
# 1. 先运行演示,理解工作流
|
|
61
|
+
python "<工程模式根目录>\tools\sw_bridge.py" physics-demo
|
|
62
|
+
|
|
63
|
+
# 2. 检查可用求解器
|
|
64
|
+
python "<工程模式根目录>\tools\sw_bridge.py" physics-status
|
|
65
|
+
|
|
66
|
+
# 3. 校验你的载荷工况文件
|
|
67
|
+
python "<工程模式根目录>\tools\sw_bridge.py" physics-validate-case my_load_case.json
|
|
68
|
+
|
|
69
|
+
# 4. 自动迭代优化(最多 5 轮)
|
|
70
|
+
python "<工程模式根目录>\tools\sw_bridge.py" physics-optimize my_load_case.json --max-iter 5
|
|
71
|
+
|
|
72
|
+
# 5. 查看某轮结果
|
|
73
|
+
python "<工程模式根目录>\tools\sw_bridge.py" physics-report opt_iter_3
|
|
74
|
+
|
|
75
|
+
# 6. 获取下轮修正建议
|
|
76
|
+
python "<工程模式根目录>\tools\sw_bridge.py" physics-recommend opt_iter_3
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## 载荷工况文件格式(load_case.json)
|
|
80
|
+
|
|
81
|
+
```json
|
|
82
|
+
{
|
|
83
|
+
"schema_version": "1.0",
|
|
84
|
+
"meta": {
|
|
85
|
+
"problem_id": "L_BRACKET_001",
|
|
86
|
+
"title": "L 型安装支架",
|
|
87
|
+
"revision": "A"
|
|
88
|
+
},
|
|
89
|
+
"units": { "length": "mm", "force": "N", "stress": "MPa", "mass": "kg" },
|
|
90
|
+
|
|
91
|
+
"design_domain": {
|
|
92
|
+
"bounds": {
|
|
93
|
+
"x_min": 0, "x_max": 120,
|
|
94
|
+
"y_min": 0, "y_max": 80,
|
|
95
|
+
"z_min": 0, "z_max": 60
|
|
96
|
+
}
|
|
97
|
+
},
|
|
98
|
+
|
|
99
|
+
"material": {
|
|
100
|
+
"id": "AL_6061_T6",
|
|
101
|
+
"youngs_modulus_mpa": 68900,
|
|
102
|
+
"poissons_ratio": 0.33,
|
|
103
|
+
"yield_strength_mpa": 276,
|
|
104
|
+
"density_kg_m3": 2700
|
|
105
|
+
},
|
|
106
|
+
|
|
107
|
+
"spatial_selectors": [
|
|
108
|
+
{
|
|
109
|
+
"id": "fixed_end",
|
|
110
|
+
"type": "box",
|
|
111
|
+
"bounds": { "x_min": 0, "x_max": 10, "y_min": 0, "y_max": 80, "z_min": 0, "z_max": 60 },
|
|
112
|
+
"selection_rule": "faces_intersecting_region"
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
"id": "load_face",
|
|
116
|
+
"type": "box",
|
|
117
|
+
"bounds": { "x_min": 110, "x_max": 120, "y_min": 20, "y_max": 60, "z_min": 10, "z_max": 50 },
|
|
118
|
+
"selection_rule": "faces_intersecting_region"
|
|
119
|
+
}
|
|
120
|
+
],
|
|
121
|
+
|
|
122
|
+
"boundary_conditions": [
|
|
123
|
+
{
|
|
124
|
+
"id": "bc_fixed",
|
|
125
|
+
"spatial_selector_id": "fixed_end",
|
|
126
|
+
"type": "fixed_displacement",
|
|
127
|
+
"dof_lock": { "x": true, "y": true, "z": true, "rx": true, "ry": true, "rz": true }
|
|
128
|
+
}
|
|
129
|
+
],
|
|
130
|
+
|
|
131
|
+
"loads": [
|
|
132
|
+
{
|
|
133
|
+
"id": "payload",
|
|
134
|
+
"spatial_selector_id": "load_face",
|
|
135
|
+
"type": "distributed_force",
|
|
136
|
+
"magnitude_n": 1500,
|
|
137
|
+
"direction": [0, 0, -1]
|
|
138
|
+
}
|
|
139
|
+
],
|
|
140
|
+
|
|
141
|
+
"acceptance": {
|
|
142
|
+
"analysis_type": "linear_static",
|
|
143
|
+
"min_safety_factor": 2.0,
|
|
144
|
+
"target_safety_factor_max": 5.0,
|
|
145
|
+
"max_displacement_mm": 0.5,
|
|
146
|
+
"min_wall_thickness_mm": 3.0
|
|
147
|
+
},
|
|
148
|
+
|
|
149
|
+
"optimization": {
|
|
150
|
+
"primary": "minimize_mass",
|
|
151
|
+
"secondary": ["minimize_max_displacement"]
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
## 设计参数格式(design_parameters.json)
|
|
157
|
+
|
|
158
|
+
```json
|
|
159
|
+
{
|
|
160
|
+
"thickness_mm": {
|
|
161
|
+
"id": "thickness_mm",
|
|
162
|
+
"value": 5.0,
|
|
163
|
+
"min": 2.0,
|
|
164
|
+
"max": 15.0,
|
|
165
|
+
"step": 0.5
|
|
166
|
+
},
|
|
167
|
+
"height_mm": {
|
|
168
|
+
"id": "height_mm",
|
|
169
|
+
"value": 60.0,
|
|
170
|
+
"min": 30.0,
|
|
171
|
+
"max": 150.0,
|
|
172
|
+
"step": 5.0
|
|
173
|
+
},
|
|
174
|
+
"fillet_mm": {
|
|
175
|
+
"id": "fillet_mm",
|
|
176
|
+
"value": 2.0,
|
|
177
|
+
"min": 0.5,
|
|
178
|
+
"max": 10.0,
|
|
179
|
+
"step": 0.5
|
|
180
|
+
},
|
|
181
|
+
"mount_hole_diameter_mm": {
|
|
182
|
+
"id": "mount_hole_diameter_mm",
|
|
183
|
+
"value": 10.0,
|
|
184
|
+
"locked": true,
|
|
185
|
+
"source": "interface_requirement"
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
**注意**:`locked: true` 的参数不会被自动优化修改,用于保护接口尺寸。
|
|
191
|
+
|
|
192
|
+
## Agent 必须遵守的流程规则
|
|
193
|
+
|
|
194
|
+
1. **载荷工况缺失时不得开始仿真**
|
|
195
|
+
- 缺少材料屈服强度 → 必须询问用户或标 TBD
|
|
196
|
+
- 缺少固定约束位置 → 必须询问
|
|
197
|
+
- 缺少载荷大小/方向 → 必须询问
|
|
198
|
+
|
|
199
|
+
2. **仿真通过后必须给出 release_manifest**
|
|
200
|
+
```json
|
|
201
|
+
{
|
|
202
|
+
"status": "CANDIDATE_AFTER_HUMAN_REVIEW",
|
|
203
|
+
"passed_gates": ["CAD_BUILD", "DESIGN_SPACE", "MESH_QUALITY", "STATIC_FEA", "SAFETY_FACTOR"],
|
|
204
|
+
"not_evaluated": ["fatigue", "buckling", "contact_non_linearity"],
|
|
205
|
+
"human_review_required": true
|
|
206
|
+
}
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
3. **禁止的行为**
|
|
210
|
+
- 不得在无载荷数据时声称"结构安全"
|
|
211
|
+
- 不得修改 locked 参数
|
|
212
|
+
- 不得无限迭代(默认上限 5 次,最多 10 次)
|
|
213
|
+
- 不得将"解析解通过"等同于"FEA 通过"——两者结论应一致标注
|
|
214
|
+
|
|
215
|
+
4. **何时停止迭代**
|
|
216
|
+
- `overall_status == "PASS"` → 通过
|
|
217
|
+
- 达到 `max_iterations` → REVIEW_REQUIRED
|
|
218
|
+
- 连续 2 轮无改善 → STALLED
|
|
219
|
+
- 网格化/求解连续失败 → UNSIMULATABLE
|
|
220
|
+
- 工况/材料/约束缺失 → BLOCKED_BY_INPUT
|
|
221
|
+
|
|
222
|
+
## 可用材料速查
|
|
223
|
+
|
|
224
|
+
```
|
|
225
|
+
铝合金:AL_6061_T6 (σy=276MPa), AL_7075 (σy=503MPa), AL_5052 (σy=193MPa)
|
|
226
|
+
结构钢:ST_API_S235 (σy=235MPa), ST_API_A36 (σy=250MPa), ST_API_4140 (σy=655MPa)
|
|
227
|
+
不锈钢:ST_STAINLESS_304 (σy=205MPa), ST_STAINLESS_316 (σy=170MPa)
|
|
228
|
+
钛合金:TI_GRADE5 (σy=880MPa)
|
|
229
|
+
塑料:PC_POLYCARBONATE (σy=65MPa), ABS (σy=45MPa)
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
完整列表:`material_db.list_materials()`
|
|
233
|
+
|
|
234
|
+
## 参考文档
|
|
235
|
+
|
|
236
|
+
- `references/gbt-drafting.md` — GB/T 机械制图国家标准
|
|
237
|
+
- `references/autocad-workflow.md` — AutoCAD 工作流与 CADX 验证
|
|
238
|
+
- `../tools/physics/` — 完整源码(load_case / fea_solver / refine_rules 等)
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
# Physics-in-the-Loop 参考文档
|
|
2
|
+
|
|
3
|
+
## 1. 载荷工况 Schema(load_case_schema.md)
|
|
4
|
+
|
|
5
|
+
### 字段说明
|
|
6
|
+
|
|
7
|
+
| 字段 | 类型 | 必填 | 说明 |
|
|
8
|
+
|------|------|------|------|
|
|
9
|
+
| `schema_version` | string | 是 | 当前版本 `"1.0"` |
|
|
10
|
+
| `meta.problem_id` | string | 是 | 问题唯一标识(大写下划线) |
|
|
11
|
+
| `meta.title` | string | 否 | 人类可读标题 |
|
|
12
|
+
| `units` | object | 否 | 单位约定(默认 mm/N/MPa/kg) |
|
|
13
|
+
| `design_domain.bounds` | object | 是 | 6 个边界坐标(mm) |
|
|
14
|
+
| `material.id` | string | 是 | 材料 ID(见 material_db.py) |
|
|
15
|
+
| `material.youngs_modulus_mpa` | float | 是 | 弹性模量 |
|
|
16
|
+
| `material.yield_strength_mpa` | float | 是 | 屈服强度 |
|
|
17
|
+
| `material.density_kg_m3` | float | 是 | 密度 |
|
|
18
|
+
| `spatial_selectors[]` | array | 是 | 区域选择器(固定面/载荷面) |
|
|
19
|
+
| `spatial_selectors[].id` | string | 是 | 选择器唯一 ID |
|
|
20
|
+
| `spatial_selectors[].type` | string | 是 | `box` / `cylinder` / `sphere` |
|
|
21
|
+
| `spatial_selectors[].bounds` | object | box 时必填 | 6 个边界坐标 |
|
|
22
|
+
| `boundary_conditions[]` | array | 是 | 约束列表 |
|
|
23
|
+
| `loads[]` | array | 是 | 载荷列表 |
|
|
24
|
+
| `acceptance.min_safety_factor` | float | 是 | 最小安全系数(通常 2.0) |
|
|
25
|
+
| `acceptance.target_safety_factor_max` | float | 是 | 最大安全系数(通常 5.0) |
|
|
26
|
+
| `acceptance.max_displacement_mm` | float | 否 | 最大允许位移 |
|
|
27
|
+
|
|
28
|
+
### 单位约定
|
|
29
|
+
|
|
30
|
+
所有坐标、尺寸单位为 **mm**,力为 **N**,应力为 **MPa**(= N/mm²),质量为 **kg**。
|
|
31
|
+
求解器内部自动完成单位换算。
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## 2. 材料策略(material_policy.md)
|
|
36
|
+
|
|
37
|
+
### 材料来源优先级
|
|
38
|
+
|
|
39
|
+
1. **用户指定**:用户提供材料牌号或屈服强度 → 直接使用
|
|
40
|
+
2. **material_db 匹配**:ID 匹配内置材料库 → 使用库值
|
|
41
|
+
3. **TBD 标记**:均不可得 → 标 TBD,禁止给出确定性安全结论
|
|
42
|
+
|
|
43
|
+
### 安全系数与材料的关系
|
|
44
|
+
|
|
45
|
+
| 材料类型 | 推荐 min SF | 推荐 max SF | 备注 |
|
|
46
|
+
|---------|------------|------------|------|
|
|
47
|
+
| 结构钢(静载) | 1.5 | 3.0 | 延性材料,失效前有明显变形 |
|
|
48
|
+
| 铝合金(静载) | 2.0 | 4.0 | 需注意腐蚀和疲劳 |
|
|
49
|
+
| 钛合金 | 2.0 | 4.0 | aerospace 常用 |
|
|
50
|
+
| 工程塑料 | 3.0 | 6.0 | 蠕变敏感,保守设计 |
|
|
51
|
+
| 铸铁 | 3.0 | 5.0 | 脆性材料,SF 需更大 |
|
|
52
|
+
| 疲劳载荷 | 按 S-N 曲线 | — | 本系统暂不支持疲劳分析 |
|
|
53
|
+
|
|
54
|
+
### 不支持的材料行为
|
|
55
|
+
|
|
56
|
+
以下情况必须声明 `NOT_EVALUATED`:
|
|
57
|
+
- 塑性大变形(σ > σy 后行为)
|
|
58
|
+
- 疲劳寿命预测
|
|
59
|
+
- 屈曲(薄壁件失稳)
|
|
60
|
+
- 冲击/动态载荷
|
|
61
|
+
- 热-结构耦合
|
|
62
|
+
- 接触非线性(螺栓预紧、摩擦)
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## 3. 求解有效性(fea_validity.md)
|
|
67
|
+
|
|
68
|
+
### 解析解适用条件
|
|
69
|
+
|
|
70
|
+
解析解(Euler-Bernoulli 梁理论)仅在以下条件下可靠:
|
|
71
|
+
1. 长细比 L/h > 10(梁近似成立)
|
|
72
|
+
2. 材料线弹性(σ < 0.5×σy)
|
|
73
|
+
3. 小变形(δ/L < 0.01)
|
|
74
|
+
4. 均匀截面,无突变
|
|
75
|
+
|
|
76
|
+
**不满足上述条件时,解析解结果仅作参考,必须升级求解器。**
|
|
77
|
+
|
|
78
|
+
### 网格质量门控
|
|
79
|
+
|
|
80
|
+
| 指标 | 合格阈值 | 处理方式 |
|
|
81
|
+
|------|---------|---------|
|
|
82
|
+
| 单元最小 Quality | ≥ 0.1 | 失败则细化网格 |
|
|
83
|
+
| 单元数量 | 1,000 ~ 1,000,000 | 超出范围需人工审查 |
|
|
84
|
+
| 雅可比行列式 | > 0 | 负值表示单元反转,网格无效 |
|
|
85
|
+
| 自由边界数 | = 0(封闭体) | 开放体需确认设计意图 |
|
|
86
|
+
|
|
87
|
+
### 收敛判定
|
|
88
|
+
|
|
89
|
+
连续两轮(n, n+1)同时满足:
|
|
90
|
+
```
|
|
91
|
+
|SF_n - SF_{n+1}| / SF_n < 5% AND |V_n - V_{n+1}| / V_n < 3%
|
|
92
|
+
```
|
|
93
|
+
则视为收敛,即使 SF 仍在目标区间外也建议人工介入。
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
## 4. 修正策略(refinement_policy.md)
|
|
98
|
+
|
|
99
|
+
### 修正动作优先级
|
|
100
|
+
|
|
101
|
+
```
|
|
102
|
+
1. 安全系数过低(SF < min)
|
|
103
|
+
→ 优先增加壁厚(最有效,对 I 影响最大)
|
|
104
|
+
→ 次选增大圆角(降低应力集中)
|
|
105
|
+
→ 最后加筋(增加局部刚度)
|
|
106
|
+
|
|
107
|
+
2. 安全系数过高(SF > max)
|
|
108
|
+
→ 减小壁厚(在 min 之上)
|
|
109
|
+
→ 减小截面高度(若位移允许)
|
|
110
|
+
|
|
111
|
+
3. 位移超限
|
|
112
|
+
→ 增大截面高度(I ∝ h³,效果最显著)
|
|
113
|
+
→ 增加支撑点(改变边界条件)
|
|
114
|
+
→ 增大壁厚(次选)
|
|
115
|
+
|
|
116
|
+
4. 设计空间越界
|
|
117
|
+
→ 拒绝本轮,缩小参数范围重新搜索
|
|
118
|
+
→ 不允许越界设计通过
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### 禁止的修正动作
|
|
122
|
+
|
|
123
|
+
- 修改 locked 参数(接口尺寸、安装孔径)
|
|
124
|
+
- 改变设计空间边界
|
|
125
|
+
- 改变材料(除非用户明确允许)
|
|
126
|
+
- 添加未声明的支撑或约束
|
|
127
|
+
- 减少实体特征(如去掉加强筋)以降低质量但牺牲强度
|
|
128
|
+
|
|
129
|
+
### 修正透明度
|
|
130
|
+
|
|
131
|
+
每次修正必须记录:
|
|
132
|
+
```json
|
|
133
|
+
{
|
|
134
|
+
"change_id": "iter_03_change_01",
|
|
135
|
+
"param_id": "thickness_mm",
|
|
136
|
+
"from": 5.0,
|
|
137
|
+
"to": 7.0,
|
|
138
|
+
"reason": "safety factor 1.2 < 2.0; thickness scales ~sqrt(2.0/1.2)",
|
|
139
|
+
"expected_effect": "SF ≈ 2.1, displacement ≈ -30%",
|
|
140
|
+
"verified": true
|
|
141
|
+
}
|
|
142
|
+
```
|