问题标签 [petrel]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
182 浏览

ocean - 如何以编程方式在 Petrel 函数窗口中显示 BlackOil

如何在 FunctionWindow 上以编程方式显示 BlackOil 域对象的油/水/气成分?我尝试在 BlackOil.OilPhase 上调用 FunctionWindow.ShowObject 但收到一个错误,即在输入树上找不到它。

0 投票
2 回答
256 浏览

ocean - 无法创建目标文件夹构建 PIP 项目

我正在尝试在 VS 2010 中构建 PIP 项目。我正在使用 Ocean SDK 2012。当我创建 PIP 项目时,我使用了向导,但我注意到预构建事件首先具有 DeployList.xml应该在参数列表中排在第二位。现在,当尝试进行构建时,会出现
“无法创建目标文件夹”的错误消息。

我不确定这个目标文件夹应该是什么或在哪里。有没有人做过PIP项目并且可以提供任何提示......

0 投票
1 回答
170 浏览

ocean - PIP 构建不包含其他 dll

当进行 PIP 构建时,它将在解决方案中复制来自 DeployList.xml 的其他项目输出,但对于此解决方案之外的不同项目,我只在 dll 中复制。但是它不喜欢这样并引发错误:

忽略 C:\Test.dll,因为它无法正确加载,原因是:尝试加载格式不正确的程序。(HRESULT 异常:0x8007000B) 来源:Slb.Ocean.Core

我还包含了其他文件,它可以很好地复制它们。似乎只是dll和exe的问题。

0 投票
2 回答
247 浏览

ocean - 使用 Ocean API 访问油藏工程数据的问题

我正在构建一个插件,我需要使用海洋 API 访问 Reservoir 工程域数据。我可以使用 Simulation root 访问开发策略,但无法获取开发策略的类型。无论是历史策略还是预测策略。任何方式都可以知道这些信息。

0 投票
2 回答
98 浏览

ocean - SeismicCube.IndexAtPosition 意外输出

我不确定这里出了什么问题。它适用于某些项目,但不适用于其他项目。我无法弄清楚它们之间有什么区别。为了测试这个问题,我创建了一个点集,其中一个点位于我确定在立方体内部的位置。当我打电话时IndexAtPosition,我有时会得到明显错误的答案。例如,我有时会得到负数或超出最大索引的内联或交叉线索引。z 维索引也给出了一个非常不切实际的答案。

我相当肯定我的数据都是一致的,即相同的域和 CRS。一定有一些我没有检查的设置。

0 投票
1 回答
321 浏览

ocean - 运行单元测试后未处理的 Petrel 异常

我有使用 nunit 成功运行的 Petrel 2012 单元测试。我添加了一些新的单元测试。这些测试使用我注册的一些自定义域对象。我还在使用不同的 Petrel 项目进行测试。

运行 Nunit 时,它会运行我的测试并且它们是成功的,但是,在 nunit 报告结果后,nunit 崩溃:

Petrel 2012.1 64 位(CL 345168,2012 年 7 月 27 日构建)中的未处理异常:可能的原因:可能的单例问题:托管代码在 CLR 关闭后尝试执行。异常类型:
0xC0020001:字符串绑定无效。异常详细信息:异常发生在模块 KERNEL32.dll 中的偏移量 0xDD50 异常处理程序:Petrel 未处理的异常过滤器(本机初始化)异常线程:未命名线程(id 3908)报告编号:0 报告 ID:
{8c53496a-ff6e-46e0-b536-a85868246cef本机堆栈跟踪:
KERNEL32.dll+0xDD50 PulseEvent+0x60 clr.dll+0x45A454
clr.dll+0x5B46D3 clr.dll+0x189C1A Core.Subjects.dll+0xF7138 BaseAllSubjectsItr::init+0x58 Core.Subjects.dll+0xF7351 BaseAllSubjectsItr: :BaseAllSubjectsItr+0x31
Core.Subjects.dll+0x4E919 NotificationManagerImpl::notifyBeforeRemove+0x59
Core.Subjects.dll+0xE034E FolderSubject::removeKidAt+
0x9E Core.Subjects.dll+0xDFED1 FolderSubject::removeAllKids+0x31
Core.Subjects.dll+0xCA307 ParentSubject::cleanup +0x17
Foundation.Primitives.BaseClasses.dll+0xB434 MemorySaver::MemorySaver+0x224
Foundation.Primitives.BaseClasses.dll+0x2777C Shared::unref+0x1C
Foundation.Primitives.BaseClasses.dll+0x18EE Shared::unref+0xE
Sim.Domain .Analysis.dll+0x1F5CCE FunctionPlotCmd::~FunctionPlotCmd+0x3E
Sim.Domain.Analysis.dll+0x783F7
Foundation.Primitives.BaseClasses.dll+0xB463 MemorySaver::MemorySaver+0x253
Foundation.Primitives.BaseClasses.dll+0x2777C Shared::unref+0x1C
Foundation.Primitives.BaseClasses.dll+0x18EE Shared::unref+0xE
Core.Subjects.dll+0xE169 UpdateHint::operator=+0x2C9
Core.Subjects.dll+ 0x12CDC4 Core.Subjects.dll+0x4979F Slb::Petrel::Configuration::ServiceBase::create+0x42F Core.Subjects.dll+0x499E9 Slb::Petrel::Configuration::ServiceBase::create+0x679 ntdll.dll+0x149BF RtlGetCurrentDirectory_U+0x1FF
KERNEL32.dll+0x1A35C ExitProcess+0x2C mscoreei.dll+0x18552
mscoreei.dll+0x183E4 clr.dll+0x238787 clr.dll+0x23980C
clr.dll+0x171966 clr.dll+0x16F5611385clr.dll+0x .dll+0x3309 CoreExeMain+0x49
mscoree.dll+0x5B21 CorExeMain+0x69 KERNEL32.dll+0x196AC BaseProcessStart+0x2C 托管堆栈跟踪:无法收集托管堆栈跟踪。

继续调用 Windows 错误报告...

我还尝试使用在此错误之前使用的 Petrel 项目,但现在我得到了相同的异常。有任何想法吗?

0 投票
1 回答
183 浏览

persistence - 如何在 Ocean for Petrel 中存档我的 arg 包?

我在 Petrel 中有一个自定义的 Ocean 工作步骤,但我无法成功保存我的参数包。我的包包含 PillarGrid 对象(网格、属性、区域),如下所示:

我基于 StructuredArchiveDataSource 创建了一个 DataSourceFactory :

我在模块方法“集成”中注册了这个 DataSourceFactory。

当我尝试在 Petrel 中保存我的项目时,我收到以下错误消息:“System.Exception: MyArgsPackId: Not anarchivable type 'Slb.Ocean.Petrel.DomainObject.PillarGrid.Property'”

请问我该如何管理这种持久性?

0 投票
1 回答
240 浏览

ocean - 如何给 Petrel 项目加水印?

在我们大学,我们正在运行基于 Petrel 插件的水库工程课程。学生应该打开一个“数字油田”插件,使用他的凭据登录并开始用数据填充他的项目,从服务器请求 2D/3D 地震、测井等。如果在数据传输过程中发生某些事情(例如崩溃),他可以再次下载数据。

然而,为了防止作弊,这些数据必须仅供他使用(他为每条数据支付虚拟货币)。所以他的服务器数据副本带有他自己的密钥水印,并且插件应该只允许在项目密钥相同的情况下加载数据。为此,一旦他开始下载数据,就必须将密钥嵌入到他的 Petrel 项目副本中。

实现这一目标的最佳方法是什么?我深入研究了自定义数据类型的创建,可能这种方法不适合这个目的,因为水印不能被学生看到或修改。

0 投票
2 回答
325 浏览

ocean - 开发期间部署找不到 dll 及其引用

我创建了一个基本插件,当我部署它进行开发时它运行良好:

正如海洋开发指南所指出的那样。

当我尝试做一些更复杂的事情时,它告诉我它找不到其中一个 dll 及其引用。dll 存在于我的项目正在构建的位置。我检查了 ProcMon,我可以看到 Ocean 没有检查该文件夹中的 dll。

我不得不强制从特定目录路径加载程序集(使用 C# - 从特定目录路径加载程序集)这样做我的插件正确加载。Petrel 遇到问题的 dll 是 InfragisticsWPF.DockManager.dll

我与正在研究 Petrel 的其他团队进行了交谈,有些人向我提到,自 2012 版本以来,他们必须强制对他们的一些 dll 进行 LoadAssembly,因为 Petrel 找不到它们。在 2011 版本中运行良好的东西。也许是 2012 年引入的一些变化导致了这种情况?我们是否缺少一些配置?

更新

根据要求,这是 Fusion Log Viewer 显示的内容:

对于它试图访问的InfragisticsWPF.DockManager.DLL

从以下位置加载的程序集管理器:C:\Windows\Microsoft.NET\Framework64\v4.0.30319\clr.dll 在可执行文件 C:\Program Files\Petrel 2012.3\petrel.exe 下运行

  • C:/Program Files/Petrel 2012.3/ 和很多像“Extensions” 这样的子目录 看起来它遍历了 C:/Program Files/Petrel 2012.3/ 里面的所有文件夹
  • 它也尝试在相同的文件夹中搜索InfragisticsWPF.DockManager.EXE 。
  • 所有探测 URL 均已尝试但均失败。

它从不搜索我的插件所在的路径。尽管 Petrel 无法加载InfragisticsWPF.DockManager.DLL,但它不会无法加载我的任何其他 dll。对于我的其他 dll,日志看起来完全一样,但最后一次尝试检查我的插件所在的文件夹:

两个 dll 彼此相邻,但由于某种原因,Petrel 与 InfragisticsWPF.DockManager.DLL存在问题,而其他任何 dll 都没有。

0 投票
1 回答
157 浏览

c# - 如何更新 Petrel 窗口的名称?

我正在尝试在 Save 事件之后更新 Petrel 窗口的名称/显示名称。

我实现了自己的 NameInfo 类,它继承自 NameInfo 抽象类。

我的 DisplayName、Name 和 TypeName 必须相同,所以当名称更改时,我的代码是:

我在 DataSourceManager 的“已保存”事件上更改了窗口的名称:

我用来更新名称的代码是:

但是当我更改名称时,它只在Windows窗口的树中显示为更新。

我的窗口的名称显示旧名称。

我不知道我还需要做什么才能实现我想要的。

我的窗口是一个自定义窗口

有没有办法更新窗口名称本身?

我是否必须将我的“MyCustomWindow”订阅到某个事件而我没有这样做?

我将非常感谢您为我提供的任何帮助!