模型上下文(Model Context)是 PTK 最核心的设计理念。它定义了"操作的关注范围"——你想对模型的哪一部分执行读取或修改。理解上下文是高效使用 PTK 的关键。
上下文是什么?
上下文由三个要素组成:文章源自云智设计-https://www.cidrg.com/cid-college/tutorial/pipesim/26867.html
- Context(范围):模型中的关注区域,如某一口井、所有油嘴或特定管线
- Parameter(参数):该范围内的组件属性
- Value(值):参数的具体数值或数据表
四种上下文指定方式
1. 关键字参数(最常用)文章源自云智设计-https://www.cidrg.com/cid-college/tutorial/pipesim/26867.html
# 查找名为 Well01 的井
model.find(Well='Well01')
# 查找所有油嘴
model.find(Choke=ALL)
# 查找 Well01 中的所有油管
model.find(Well='Well01', Tubing=ALL)2. 字典方式文章源自云智设计-https://www.cidrg.com/cid-college/tutorial/pipesim/26867.html
model.find(**{'Well':'Well01', 'Completion':ALL})3. 字符串路径(精确匹配单一组件)文章源自云智设计-https://www.cidrg.com/cid-college/tutorial/pipesim/26867.html
model.find(context="Well01:VertComp") # 井:组件名4. 组件类型过滤文章源自云智设计-https://www.cidrg.com/cid-college/tutorial/pipesim/26867.html
from sixgill.definitions import ModelComponents
model.find(component=ModelComponents.CHOKE)
model.find(component=ModelComponents.PUMP)理解上下文层级
PTK 的上下文是层级化的。当指定 Well='ESP_Well' 时,返回的不仅是井本身,还包括井下所有子组件:文章源自云智设计-https://www.cidrg.com/cid-college/tutorial/pipesim/26867.html
['ESP_Well', 'ESP_Well:Casing', 'ESP_Well:ESP_7',
'ESP_Well:Packer', 'ESP_Well:Tubing', ...]而 Name='ESP_Well' 只返回井本身。这个区别在参数操作时尤为重要——使用 Well 上下文可以跨子组件查询参数,而不需要知道具体哪个组件持有该参数。文章源自云智设计-https://www.cidrg.com/cid-college/tutorial/pipesim/26867.html
创建过滤模型
对大型模型,可以创建只包含特定组件的"子模型":文章源自云智设计-https://www.cidrg.com/cid-college/tutorial/pipesim/26867.html
wellmodel = model.filter(Well="Well_1")
wellmodel.find(component=ModelComponents.COMPLETION)过滤后的模型拥有原始模型的所有方法,但操作范围仅限于过滤后的组件集合。文章源自云智设计-https://www.cidrg.com/cid-college/tutorial/pipesim/26867.html 文章源自云智设计-https://www.cidrg.com/cid-college/tutorial/pipesim/26867.html






