跳到主要内容

仿真交接

CadFlow 描述装配 Face 之间的分布式接触,但不绑定 Abaqus、CalculiX、Code_Aster、ANSYS 或特定网格器。C++/OCCT 测量精确 BREP 几何;Python 负责命名 Region、单位、材料、本构声明、验证和包结构。

CadFlow 是预处理与交接边界,不是有限元求解器。

定义稳定 Surface Region

从接触 Component 均为直接 Part 的 Assembly 开始,在 Component 局部坐标中选择目标 Face:

top_face = max(block_a.get_faces(), key=lambda face: face.get_center().z)
bottom_face = min(block_b.get_faces(), key=lambda face: face.get_center().z)

surface_a = cad.make_surface_region_rsurfaceregion(
surface_id="base.top",
component_id="base",
faces=(top_face,),
)
surface_b = cad.make_surface_region_rsurfaceregion(
surface_id="slider.bottom",
component_id="slider",
faces=(bottom_face,),
)

每个 Face 都会变成可重放 GeometryRef。验证阶段会在当前几何上解析选择器,并拒绝缺失或歧义匹配。

声明物理与单位

law = cad.SurfaceContactLaw(
"dry_contact",
normal_model="penalty",
normal_penalty_stiffness=2.0e5, # N/mm^3
friction_model="coulomb",
friction_coefficient=0.2,
tangential_penalty_stiffness=8.0e4, # N/mm^3
)
pair = cad.SurfaceContactPair(
"slider_pair",
"base.top",
"slider.bottom",
"dry_contact",
search_tolerance=0.2,
sliding="finite",
)
steel = cad.MechanicalMaterial(
"steel",
youngs_modulus=210000.0, # N/mm^2
poisson_ratio=0.3,
density=7.85e-9, # N*s^2/mm^4
yield_stress=355.0,
)

支持 hard、penalty、tabular 和 cohesive 法向定律,以及 frictionless 或 Coulomb 切向响应。CadFlow 会验证必需参数和量纲,但不会从名称或几何中臆测工程值。

分析与导出

report = cad.validate_contact_simulation_model_rcontactsimulationvalidationreport(
simulation, assembly
)
report.raise_for_errors()

analysis = cad.analyze_contact_simulation_model_rcontactsimulationanalysis(
simulation, assembly
)
print(analysis.pair_metrics)

manifest = cad.export_contact_simulation_package_rpath(
simulation, assembly, "outputs/contact-package"
)

交接包包含 simulation.json、Component 局部 BREP Solid、选定 BREP Face、哈希、稳定 Face 索引、材料分配和行主序刚体变换。求解器适配器可以对 Solid 划分网格、恢复接触 Face、应用装配 Placement,并把中性定律翻译为求解器输入。

明确边界

  • 精确指标和包导出要求 OCCT 后端。
  • Candidate Detection 是几何预处理证据,不是碰撞检测或非线性求解。
  • 网格密度、单元形式、载荷工况、边界条件、步进、稳定化和收敛均属于求解器职责。
  • 当前 Surface Resolver 要求目标 Part 直接可见,嵌套装配需要先扁平化或直接暴露目标 Part。